Commit 448359c1 authored by Ben Skeggs's avatar Ben Skeggs Committed by Danilo Krummrich
Browse files

drm/nouveau: replace drm_device* with nouveau_drm* as dev drvdata



We almost always want to cast the pointer from dev_get_drvdata() to
'struct nouveau_drm *', so just directly store that pointer instead,
simplifying callers, and fixing some clumsy naming of dev/drm_dev
variables at the same time.

Signed-off-by: default avatarBen Skeggs <bskeggs@nvidia.com>
Signed-off-by: default avatarDanilo Krummrich <dakr@kernel.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20240726043828.58966-4-bskeggs@nvidia.com
parent 961ae5f9
Loading
Loading
Loading
Loading
+7 −10
Original line number Diff line number Diff line
@@ -593,8 +593,7 @@ static int
nv50_audio_component_get_eld(struct device *kdev, int port, int dev_id,
			     bool *enabled, unsigned char *buf, int max_bytes)
{
	struct drm_device *drm_dev = dev_get_drvdata(kdev);
	struct nouveau_drm *drm = nouveau_drm(drm_dev);
	struct nouveau_drm *drm = dev_get_drvdata(kdev);
	struct drm_encoder *encoder;
	struct nouveau_encoder *nv_encoder;
	struct nouveau_crtc *nv_crtc;
@@ -639,18 +638,17 @@ static int
nv50_audio_component_bind(struct device *kdev, struct device *hda_kdev,
			  void *data)
{
	struct drm_device *drm_dev = dev_get_drvdata(kdev);
	struct nouveau_drm *drm = nouveau_drm(drm_dev);
	struct nouveau_drm *drm = dev_get_drvdata(kdev);
	struct drm_audio_component *acomp = data;

	if (WARN_ON(!device_link_add(hda_kdev, kdev, DL_FLAG_STATELESS)))
		return -ENOMEM;

	drm_modeset_lock_all(drm_dev);
	drm_modeset_lock_all(drm->dev);
	acomp->ops = &nv50_audio_component_ops;
	acomp->dev = kdev;
	drm->audio.component = acomp;
	drm_modeset_unlock_all(drm_dev);
	drm_modeset_unlock_all(drm->dev);
	return 0;
}

@@ -658,15 +656,14 @@ static void
nv50_audio_component_unbind(struct device *kdev, struct device *hda_kdev,
			    void *data)
{
	struct drm_device *drm_dev = dev_get_drvdata(kdev);
	struct nouveau_drm *drm = nouveau_drm(drm_dev);
	struct nouveau_drm *drm = dev_get_drvdata(kdev);
	struct drm_audio_component *acomp = data;

	drm_modeset_lock_all(drm_dev);
	drm_modeset_lock_all(drm->dev);
	drm->audio.component = NULL;
	acomp->ops = NULL;
	acomp->dev = NULL;
	drm_modeset_unlock_all(drm_dev);
	drm_modeset_unlock_all(drm->dev);
}

static const struct component_ops nv50_audio_component_bind_ops = {
+1 −3
Original line number Diff line number Diff line
@@ -446,10 +446,8 @@ static struct nouveau_drm_prop_enum_list dither_depth[] = {
} while(0)

void
nouveau_display_hpd_resume(struct drm_device *dev)
nouveau_display_hpd_resume(struct nouveau_drm *drm)
{
	struct nouveau_drm *drm = nouveau_drm(dev);

	spin_lock_irq(&drm->hpd_lock);
	drm->hpd_pending = ~0;
	spin_unlock_irq(&drm->hpd_lock);
+1 −1
Original line number Diff line number Diff line
@@ -45,7 +45,7 @@ nouveau_display(struct drm_device *dev)
int  nouveau_display_create(struct drm_device *dev);
void nouveau_display_destroy(struct drm_device *dev);
int  nouveau_display_init(struct drm_device *dev, bool resume, bool runtime);
void nouveau_display_hpd_resume(struct drm_device *dev);
void nouveau_display_hpd_resume(struct nouveau_drm *);
void nouveau_display_fini(struct drm_device *dev, bool suspend, bool runtime);
int  nouveau_display_suspend(struct drm_device *dev, bool runtime);
void nouveau_display_resume(struct drm_device *dev, bool runtime);
+37 −41
Original line number Diff line number Diff line
@@ -579,10 +579,10 @@ nouveau_parent = {
};

static void
nouveau_drm_device_fini(struct drm_device *dev)
nouveau_drm_device_fini(struct nouveau_drm *drm)
{
	struct drm_device *dev = drm->dev;
	struct nouveau_cli *cli, *temp_cli;
	struct nouveau_drm *drm = nouveau_drm(dev);

	if (nouveau_pmops_runtime()) {
		pm_runtime_get_sync(dev->dev);
@@ -707,7 +707,7 @@ nouveau_drm_device_init(struct nouveau_drm *drm)

	ret = drm_dev_register(drm->dev, 0);
	if (ret) {
		nouveau_drm_device_fini(drm->dev);
		nouveau_drm_device_fini(drm);
		return ret;
	}

@@ -758,7 +758,7 @@ nouveau_drm_device_new(const struct drm_driver *drm_driver, struct device *paren
	}

	drm->dev->dev_private = drm;
	dev_set_drvdata(parent, drm->dev);
	dev_set_drvdata(parent, drm);

done:
	if (ret) {
@@ -811,8 +811,7 @@ nouveau_drm_device_new(const struct drm_driver *drm_driver, struct device *paren

static void quirk_broken_nv_runpm(struct pci_dev *pdev)
{
	struct drm_device *dev = pci_get_drvdata(pdev);
	struct nouveau_drm *drm = nouveau_drm(dev);
	struct nouveau_drm *drm = pci_get_drvdata(pdev);
	struct pci_dev *bridge = pci_upstream_bridge(pdev);

	if (!bridge || bridge->vendor != PCI_VENDOR_ID_INTEL)
@@ -894,18 +893,17 @@ static int nouveau_drm_probe(struct pci_dev *pdev,
}

void
nouveau_drm_device_remove(struct drm_device *dev)
nouveau_drm_device_remove(struct nouveau_drm *drm)
{
	struct nouveau_drm *drm = nouveau_drm(dev);
	struct nvkm_client *client;
	struct nvkm_device *device;

	drm_dev_unplug(dev);
	drm_dev_unplug(drm->dev);

	client = nvxx_client(&drm->client.base);
	device = nvkm_device_find(client->device);

	nouveau_drm_device_fini(dev);
	nouveau_drm_device_fini(drm);
	nouveau_drm_device_del(drm);
	nvkm_device_del(&device);
}
@@ -913,20 +911,19 @@ nouveau_drm_device_remove(struct drm_device *dev)
static void
nouveau_drm_remove(struct pci_dev *pdev)
{
	struct drm_device *dev = pci_get_drvdata(pdev);
	struct nouveau_drm *drm = nouveau_drm(dev);
	struct nouveau_drm *drm = pci_get_drvdata(pdev);

	/* revert our workaround */
	if (drm->old_pm_cap)
		pdev->pm_cap = drm->old_pm_cap;
	nouveau_drm_device_remove(dev);
	nouveau_drm_device_remove(drm);
	pci_disable_device(pdev);
}

static int
nouveau_do_suspend(struct drm_device *dev, bool runtime)
nouveau_do_suspend(struct nouveau_drm *drm, bool runtime)
{
	struct nouveau_drm *drm = nouveau_drm(dev);
	struct drm_device *dev = drm->dev;
	struct ttm_resource_manager *man;
	int ret;

@@ -987,10 +984,10 @@ nouveau_do_suspend(struct drm_device *dev, bool runtime)
}

static int
nouveau_do_resume(struct drm_device *dev, bool runtime)
nouveau_do_resume(struct nouveau_drm *drm, bool runtime)
{
	struct drm_device *dev = drm->dev;
	int ret = 0;
	struct nouveau_drm *drm = nouveau_drm(dev);

	NV_DEBUG(drm, "resuming object tree...\n");
	ret = nvif_client_resume(&drm->master.base);
@@ -1020,14 +1017,14 @@ int
nouveau_pmops_suspend(struct device *dev)
{
	struct pci_dev *pdev = to_pci_dev(dev);
	struct drm_device *drm_dev = pci_get_drvdata(pdev);
	struct nouveau_drm *drm = pci_get_drvdata(pdev);
	int ret;

	if (drm_dev->switch_power_state == DRM_SWITCH_POWER_OFF ||
	    drm_dev->switch_power_state == DRM_SWITCH_POWER_DYNAMIC_OFF)
	if (drm->dev->switch_power_state == DRM_SWITCH_POWER_OFF ||
	    drm->dev->switch_power_state == DRM_SWITCH_POWER_DYNAMIC_OFF)
		return 0;

	ret = nouveau_do_suspend(drm_dev, false);
	ret = nouveau_do_suspend(drm, false);
	if (ret)
		return ret;

@@ -1042,11 +1039,11 @@ int
nouveau_pmops_resume(struct device *dev)
{
	struct pci_dev *pdev = to_pci_dev(dev);
	struct drm_device *drm_dev = pci_get_drvdata(pdev);
	struct nouveau_drm *drm = pci_get_drvdata(pdev);
	int ret;

	if (drm_dev->switch_power_state == DRM_SWITCH_POWER_OFF ||
	    drm_dev->switch_power_state == DRM_SWITCH_POWER_DYNAMIC_OFF)
	if (drm->dev->switch_power_state == DRM_SWITCH_POWER_OFF ||
	    drm->dev->switch_power_state == DRM_SWITCH_POWER_DYNAMIC_OFF)
		return 0;

	pci_set_power_state(pdev, PCI_D0);
@@ -1056,10 +1053,10 @@ nouveau_pmops_resume(struct device *dev)
		return ret;
	pci_set_master(pdev);

	ret = nouveau_do_resume(drm_dev, false);
	ret = nouveau_do_resume(drm, false);

	/* Monitors may have been connected / disconnected during suspend */
	nouveau_display_hpd_resume(drm_dev);
	nouveau_display_hpd_resume(drm);

	return ret;
}
@@ -1067,17 +1064,17 @@ nouveau_pmops_resume(struct device *dev)
static int
nouveau_pmops_freeze(struct device *dev)
{
	struct pci_dev *pdev = to_pci_dev(dev);
	struct drm_device *drm_dev = pci_get_drvdata(pdev);
	return nouveau_do_suspend(drm_dev, false);
	struct nouveau_drm *drm = dev_get_drvdata(dev);

	return nouveau_do_suspend(drm, false);
}

static int
nouveau_pmops_thaw(struct device *dev)
{
	struct pci_dev *pdev = to_pci_dev(dev);
	struct drm_device *drm_dev = pci_get_drvdata(pdev);
	return nouveau_do_resume(drm_dev, false);
	struct nouveau_drm *drm = dev_get_drvdata(dev);

	return nouveau_do_resume(drm, false);
}

bool
@@ -1092,7 +1089,7 @@ static int
nouveau_pmops_runtime_suspend(struct device *dev)
{
	struct pci_dev *pdev = to_pci_dev(dev);
	struct drm_device *drm_dev = pci_get_drvdata(pdev);
	struct nouveau_drm *drm = pci_get_drvdata(pdev);
	int ret;

	if (!nouveau_pmops_runtime()) {
@@ -1101,12 +1098,12 @@ nouveau_pmops_runtime_suspend(struct device *dev)
	}

	nouveau_switcheroo_optimus_dsm();
	ret = nouveau_do_suspend(drm_dev, true);
	ret = nouveau_do_suspend(drm, true);
	pci_save_state(pdev);
	pci_disable_device(pdev);
	pci_ignore_hotplug(pdev);
	pci_set_power_state(pdev, PCI_D3cold);
	drm_dev->switch_power_state = DRM_SWITCH_POWER_DYNAMIC_OFF;
	drm->dev->switch_power_state = DRM_SWITCH_POWER_DYNAMIC_OFF;
	return ret;
}

@@ -1114,9 +1111,8 @@ static int
nouveau_pmops_runtime_resume(struct device *dev)
{
	struct pci_dev *pdev = to_pci_dev(dev);
	struct drm_device *drm_dev = pci_get_drvdata(pdev);
	struct nouveau_drm *drm = nouveau_drm(drm_dev);
	struct nvif_device *device = &nouveau_drm(drm_dev)->client.device;
	struct nouveau_drm *drm = pci_get_drvdata(pdev);
	struct nvif_device *device = &drm->client.device;
	int ret;

	if (!nouveau_pmops_runtime()) {
@@ -1131,7 +1127,7 @@ nouveau_pmops_runtime_resume(struct device *dev)
		return ret;
	pci_set_master(pdev);

	ret = nouveau_do_resume(drm_dev, true);
	ret = nouveau_do_resume(drm, true);
	if (ret) {
		NV_ERROR(drm, "resume failed with: %d\n", ret);
		return ret;
@@ -1139,10 +1135,10 @@ nouveau_pmops_runtime_resume(struct device *dev)

	/* do magic */
	nvif_mask(&device->object, 0x088488, (1 << 25), (1 << 25));
	drm_dev->switch_power_state = DRM_SWITCH_POWER_ON;
	drm->dev->switch_power_state = DRM_SWITCH_POWER_ON;

	/* Monitors may have been connected / disconnected during suspend */
	nouveau_display_hpd_resume(drm_dev);
	nouveau_display_hpd_resume(drm);

	return ret;
}
+1 −1
Original line number Diff line number Diff line
@@ -325,7 +325,7 @@ bool nouveau_pmops_runtime(void);
struct drm_device *
nouveau_platform_device_create(const struct nvkm_device_tegra_func *,
			       struct platform_device *, struct nvkm_device **);
void nouveau_drm_device_remove(struct drm_device *dev);
void nouveau_drm_device_remove(struct nouveau_drm *);

#define NV_PRINTK(l,c,f,a...) do {                                             \
	struct nouveau_cli *_cli = (c);                                        \
Loading