diff mbox series

[v2,13/20] drm/nouveau: Remove references to struct drm_device.pdev

Message ID 20201201103542.2182-14-tzimmermann@suse.de (mailing list archive)
State New, archived
Headers show
Series drm: Move struct drm_device.pdev to legacy | expand

Commit Message

Thomas Zimmermann Dec. 1, 2020, 10:35 a.m. UTC
Using struct drm_device.pdev is deprecated. Convert nouveau to struct
drm_device.dev. No functional changes.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Ben Skeggs <bskeggs@redhat.com>
---
 drivers/gpu/drm/nouveau/dispnv04/arb.c      | 12 +++++++-----
 drivers/gpu/drm/nouveau/dispnv04/disp.h     | 14 ++++++++------
 drivers/gpu/drm/nouveau/dispnv04/hw.c       | 10 ++++++----
 drivers/gpu/drm/nouveau/nouveau_abi16.c     |  7 ++++---
 drivers/gpu/drm/nouveau/nouveau_acpi.c      |  2 +-
 drivers/gpu/drm/nouveau/nouveau_bios.c      | 11 ++++++++---
 drivers/gpu/drm/nouveau/nouveau_connector.c | 10 ++++++----
 drivers/gpu/drm/nouveau/nouveau_drm.c       |  5 ++---
 drivers/gpu/drm/nouveau/nouveau_fbcon.c     |  6 ++++--
 drivers/gpu/drm/nouveau/nouveau_vga.c       | 20 ++++++++++++--------
 10 files changed, 58 insertions(+), 39 deletions(-)

Comments

Thomas Zimmermann Dec. 8, 2020, 8 a.m. UTC | #1
ping for a review of the nouveau patch

Am 01.12.20 um 11:35 schrieb Thomas Zimmermann:
> Using struct drm_device.pdev is deprecated. Convert nouveau to struct
> drm_device.dev. No functional changes.
> 
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> Cc: Ben Skeggs <bskeggs@redhat.com>
> ---
>   drivers/gpu/drm/nouveau/dispnv04/arb.c      | 12 +++++++-----
>   drivers/gpu/drm/nouveau/dispnv04/disp.h     | 14 ++++++++------
>   drivers/gpu/drm/nouveau/dispnv04/hw.c       | 10 ++++++----
>   drivers/gpu/drm/nouveau/nouveau_abi16.c     |  7 ++++---
>   drivers/gpu/drm/nouveau/nouveau_acpi.c      |  2 +-
>   drivers/gpu/drm/nouveau/nouveau_bios.c      | 11 ++++++++---
>   drivers/gpu/drm/nouveau/nouveau_connector.c | 10 ++++++----
>   drivers/gpu/drm/nouveau/nouveau_drm.c       |  5 ++---
>   drivers/gpu/drm/nouveau/nouveau_fbcon.c     |  6 ++++--
>   drivers/gpu/drm/nouveau/nouveau_vga.c       | 20 ++++++++++++--------
>   10 files changed, 58 insertions(+), 39 deletions(-)
> 
> diff --git a/drivers/gpu/drm/nouveau/dispnv04/arb.c b/drivers/gpu/drm/nouveau/dispnv04/arb.c
> index 9d4a2d97507e..1d3542d6006b 100644
> --- a/drivers/gpu/drm/nouveau/dispnv04/arb.c
> +++ b/drivers/gpu/drm/nouveau/dispnv04/arb.c
> @@ -200,16 +200,17 @@ nv04_update_arb(struct drm_device *dev, int VClk, int bpp,
>   	int MClk = nouveau_hw_get_clock(dev, PLL_MEMORY);
>   	int NVClk = nouveau_hw_get_clock(dev, PLL_CORE);
>   	uint32_t cfg1 = nvif_rd32(device, NV04_PFB_CFG1);
> +	struct pci_dev *pdev = to_pci_dev(dev->dev);
>   
>   	sim_data.pclk_khz = VClk;
>   	sim_data.mclk_khz = MClk;
>   	sim_data.nvclk_khz = NVClk;
>   	sim_data.bpp = bpp;
>   	sim_data.two_heads = nv_two_heads(dev);
> -	if ((dev->pdev->device & 0xffff) == 0x01a0 /*CHIPSET_NFORCE*/ ||
> -	    (dev->pdev->device & 0xffff) == 0x01f0 /*CHIPSET_NFORCE2*/) {
> +	if ((pdev->device & 0xffff) == 0x01a0 /*CHIPSET_NFORCE*/ ||
> +	    (pdev->device & 0xffff) == 0x01f0 /*CHIPSET_NFORCE2*/) {
>   		uint32_t type;
> -		int domain = pci_domain_nr(dev->pdev->bus);
> +		int domain = pci_domain_nr(pdev->bus);
>   
>   		pci_read_config_dword(pci_get_domain_bus_and_slot(domain, 0, 1),
>   				      0x7c, &type);
> @@ -251,11 +252,12 @@ void
>   nouveau_calc_arb(struct drm_device *dev, int vclk, int bpp, int *burst, int *lwm)
>   {
>   	struct nouveau_drm *drm = nouveau_drm(dev);
> +	struct pci_dev *pdev = to_pci_dev(dev->dev);
>   
>   	if (drm->client.device.info.family < NV_DEVICE_INFO_V0_KELVIN)
>   		nv04_update_arb(dev, vclk, bpp, burst, lwm);
> -	else if ((dev->pdev->device & 0xfff0) == 0x0240 /*CHIPSET_C51*/ ||
> -		 (dev->pdev->device & 0xfff0) == 0x03d0 /*CHIPSET_C512*/) {
> +	else if ((pdev->device & 0xfff0) == 0x0240 /*CHIPSET_C51*/ ||
> +		 (pdev->device & 0xfff0) == 0x03d0 /*CHIPSET_C512*/) {
>   		*burst = 128;
>   		*lwm = 0x0480;
>   	} else
> diff --git a/drivers/gpu/drm/nouveau/dispnv04/disp.h b/drivers/gpu/drm/nouveau/dispnv04/disp.h
> index 5ace5e906949..f0a24126641a 100644
> --- a/drivers/gpu/drm/nouveau/dispnv04/disp.h
> +++ b/drivers/gpu/drm/nouveau/dispnv04/disp.h
> @@ -130,7 +130,7 @@ static inline bool
>   nv_two_heads(struct drm_device *dev)
>   {
>   	struct nouveau_drm *drm = nouveau_drm(dev);
> -	const int impl = dev->pdev->device & 0x0ff0;
> +	const int impl = to_pci_dev(dev->dev)->device & 0x0ff0;
>   
>   	if (drm->client.device.info.family >= NV_DEVICE_INFO_V0_CELSIUS && impl != 0x0100 &&
>   	    impl != 0x0150 && impl != 0x01a0 && impl != 0x0200)
> @@ -142,14 +142,14 @@ nv_two_heads(struct drm_device *dev)
>   static inline bool
>   nv_gf4_disp_arch(struct drm_device *dev)
>   {
> -	return nv_two_heads(dev) && (dev->pdev->device & 0x0ff0) != 0x0110;
> +	return nv_two_heads(dev) && (to_pci_dev(dev->dev)->device & 0x0ff0) != 0x0110;
>   }
>   
>   static inline bool
>   nv_two_reg_pll(struct drm_device *dev)
>   {
>   	struct nouveau_drm *drm = nouveau_drm(dev);
> -	const int impl = dev->pdev->device & 0x0ff0;
> +	const int impl = to_pci_dev(dev->dev)->device & 0x0ff0;
>   
>   	if (impl == 0x0310 || impl == 0x0340 || drm->client.device.info.family >= NV_DEVICE_INFO_V0_CURIE)
>   		return true;
> @@ -160,9 +160,11 @@ static inline bool
>   nv_match_device(struct drm_device *dev, unsigned device,
>   		unsigned sub_vendor, unsigned sub_device)
>   {
> -	return dev->pdev->device == device &&
> -		dev->pdev->subsystem_vendor == sub_vendor &&
> -		dev->pdev->subsystem_device == sub_device;
> +	struct pci_dev *pdev = to_pci_dev(dev->dev);
> +
> +	return pdev->device == device &&
> +		pdev->subsystem_vendor == sub_vendor &&
> +		pdev->subsystem_device == sub_device;
>   }
>   
>   #include <subdev/bios/init.h>
> diff --git a/drivers/gpu/drm/nouveau/dispnv04/hw.c b/drivers/gpu/drm/nouveau/dispnv04/hw.c
> index b674d68ef28a..f7d35657aa64 100644
> --- a/drivers/gpu/drm/nouveau/dispnv04/hw.c
> +++ b/drivers/gpu/drm/nouveau/dispnv04/hw.c
> @@ -214,14 +214,15 @@ nouveau_hw_pllvals_to_clk(struct nvkm_pll_vals *pv)
>   int
>   nouveau_hw_get_clock(struct drm_device *dev, enum nvbios_pll_type plltype)
>   {
> +	struct pci_dev *pdev = to_pci_dev(dev->dev);
>   	struct nvkm_pll_vals pllvals;
>   	int ret;
>   	int domain;
>   
> -	domain = pci_domain_nr(dev->pdev->bus);
> +	domain = pci_domain_nr(pdev->bus);
>   
>   	if (plltype == PLL_MEMORY &&
> -	    (dev->pdev->device & 0x0ff0) == CHIPSET_NFORCE) {
> +	    (pdev->device & 0x0ff0) == CHIPSET_NFORCE) {
>   		uint32_t mpllP;
>   		pci_read_config_dword(pci_get_domain_bus_and_slot(domain, 0, 3),
>   				      0x6c, &mpllP);
> @@ -232,7 +233,7 @@ nouveau_hw_get_clock(struct drm_device *dev, enum nvbios_pll_type plltype)
>   		return 400000 / mpllP;
>   	} else
>   	if (plltype == PLL_MEMORY &&
> -	    (dev->pdev->device & 0xff0) == CHIPSET_NFORCE2) {
> +	    (pdev->device & 0xff0) == CHIPSET_NFORCE2) {
>   		uint32_t clock;
>   
>   		pci_read_config_dword(pci_get_domain_bus_and_slot(domain, 0, 5),
> @@ -309,6 +310,7 @@ void
>   nouveau_hw_save_vga_fonts(struct drm_device *dev, bool save)
>   {
>   	struct nouveau_drm *drm = nouveau_drm(dev);
> +	struct pci_dev *pdev = to_pci_dev(dev->dev);
>   	uint8_t misc, gr4, gr5, gr6, seq2, seq4;
>   	bool graphicsmode;
>   	unsigned plane;
> @@ -327,7 +329,7 @@ nouveau_hw_save_vga_fonts(struct drm_device *dev, bool save)
>   	NV_INFO(drm, "%sing VGA fonts\n", save ? "Sav" : "Restor");
>   
>   	/* map first 64KiB of VRAM, holds VGA fonts etc */
> -	iovram = ioremap(pci_resource_start(dev->pdev, 1), 65536);
> +	iovram = ioremap(pci_resource_start(pdev, 1), 65536);
>   	if (!iovram) {
>   		NV_ERROR(drm, "Failed to map VRAM, "
>   					"cannot save/restore VGA fonts.\n");
> diff --git a/drivers/gpu/drm/nouveau/nouveau_abi16.c b/drivers/gpu/drm/nouveau/nouveau_abi16.c
> index 9a5be6f32424..f08b31d84d4d 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_abi16.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_abi16.c
> @@ -181,6 +181,7 @@ nouveau_abi16_ioctl_getparam(ABI16_IOCTL_ARGS)
>   	struct nvif_device *device = &drm->client.device;
>   	struct nvkm_gr *gr = nvxx_gr(device);
>   	struct drm_nouveau_getparam *getparam = data;
> +	struct pci_dev *pdev = to_pci_dev(dev->dev);
>   
>   	switch (getparam->param) {
>   	case NOUVEAU_GETPARAM_CHIPSET_ID:
> @@ -188,13 +189,13 @@ nouveau_abi16_ioctl_getparam(ABI16_IOCTL_ARGS)
>   		break;
>   	case NOUVEAU_GETPARAM_PCI_VENDOR:
>   		if (device->info.platform != NV_DEVICE_INFO_V0_SOC)
> -			getparam->value = dev->pdev->vendor;
> +			getparam->value = pdev->vendor;
>   		else
>   			getparam->value = 0;
>   		break;
>   	case NOUVEAU_GETPARAM_PCI_DEVICE:
>   		if (device->info.platform != NV_DEVICE_INFO_V0_SOC)
> -			getparam->value = dev->pdev->device;
> +			getparam->value = pdev->device;
>   		else
>   			getparam->value = 0;
>   		break;
> @@ -205,7 +206,7 @@ nouveau_abi16_ioctl_getparam(ABI16_IOCTL_ARGS)
>   		case NV_DEVICE_INFO_V0_PCIE: getparam->value = 2; break;
>   		case NV_DEVICE_INFO_V0_SOC : getparam->value = 3; break;
>   		case NV_DEVICE_INFO_V0_IGP :
> -			if (!pci_is_pcie(dev->pdev))
> +			if (!pci_is_pcie(pdev))
>   				getparam->value = 1;
>   			else
>   				getparam->value = 2;
> diff --git a/drivers/gpu/drm/nouveau/nouveau_acpi.c b/drivers/gpu/drm/nouveau/nouveau_acpi.c
> index 69a84d0197d0..7c15f6448428 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_acpi.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_acpi.c
> @@ -377,7 +377,7 @@ nouveau_acpi_edid(struct drm_device *dev, struct drm_connector *connector)
>   		return NULL;
>   	}
>   
> -	handle = ACPI_HANDLE(&dev->pdev->dev);
> +	handle = ACPI_HANDLE(dev->dev);
>   	if (!handle)
>   		return NULL;
>   
> diff --git a/drivers/gpu/drm/nouveau/nouveau_bios.c b/drivers/gpu/drm/nouveau/nouveau_bios.c
> index d204ea8a5618..7cc683b8dc7a 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_bios.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_bios.c
> @@ -110,6 +110,9 @@ static int call_lvds_manufacturer_script(struct drm_device *dev, struct dcb_outp
>   	struct nvbios *bios = &drm->vbios;
>   	uint8_t sub = bios->data[bios->fp.xlated_entry + script] + (bios->fp.link_c_increment && dcbent->or & DCB_OUTPUT_C ? 1 : 0);
>   	uint16_t scriptofs = ROM16(bios->data[bios->init_script_tbls_ptr + sub * 2]);
> +#ifdef __powerpc__
> +	struct pci_dev *pdev = to_pci_dev(dev->dev);
> +#endif
>   
>   	if (!bios->fp.xlated_entry || !sub || !scriptofs)
>   		return -EINVAL;
> @@ -123,8 +126,8 @@ static int call_lvds_manufacturer_script(struct drm_device *dev, struct dcb_outp
>   #ifdef __powerpc__
>   	/* Powerbook specific quirks */
>   	if (script == LVDS_RESET &&
> -	    (dev->pdev->device == 0x0179 || dev->pdev->device == 0x0189 ||
> -	     dev->pdev->device == 0x0329))
> +	    (pdev->device == 0x0179 || pdev->device == 0x0189 ||
> +	     pdev->device == 0x0329))
>   		nv_write_tmds(dev, dcbent->or, 0, 0x02, 0x72);
>   #endif
>   
> @@ -2080,11 +2083,13 @@ nouveau_bios_init(struct drm_device *dev)
>   {
>   	struct nouveau_drm *drm = nouveau_drm(dev);
>   	struct nvbios *bios = &drm->vbios;
> +	struct pci_dev *pdev;
>   	int ret;
>   
>   	/* only relevant for PCI devices */
> -	if (!dev->pdev)
> +	if (!dev_is_pci(dev->dev))
>   		return 0;
> +	pdev = to_pci_dev(dev->dev);
>   
>   	if (!NVInitVBIOS(dev))
>   		return -ENODEV;
> diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c b/drivers/gpu/drm/nouveau/nouveau_connector.c
> index 8b4b3688c7ae..14c29e68db8f 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_connector.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_connector.c
> @@ -411,6 +411,7 @@ static struct nouveau_encoder *
>   nouveau_connector_ddc_detect(struct drm_connector *connector)
>   {
>   	struct drm_device *dev = connector->dev;
> +	struct pci_dev *pdev = to_pci_dev(dev->dev);
>   	struct nouveau_encoder *nv_encoder = NULL, *found = NULL;
>   	struct drm_encoder *encoder;
>   	int ret;
> @@ -438,11 +439,11 @@ nouveau_connector_ddc_detect(struct drm_connector *connector)
>   				break;
>   
>   			if (switcheroo_ddc)
> -				vga_switcheroo_lock_ddc(dev->pdev);
> +				vga_switcheroo_lock_ddc(pdev);
>   			if (nvkm_probe_i2c(nv_encoder->i2c, 0x50))
>   				found = nv_encoder;
>   			if (switcheroo_ddc)
> -				vga_switcheroo_unlock_ddc(dev->pdev);
> +				vga_switcheroo_unlock_ddc(pdev);
>   
>   			break;
>   		}
> @@ -490,6 +491,7 @@ nouveau_connector_set_encoder(struct drm_connector *connector,
>   	struct nouveau_connector *nv_connector = nouveau_connector(connector);
>   	struct nouveau_drm *drm = nouveau_drm(connector->dev);
>   	struct drm_device *dev = connector->dev;
> +	struct pci_dev *pdev = to_pci_dev(dev->dev);
>   
>   	if (nv_connector->detected_encoder == nv_encoder)
>   		return;
> @@ -511,8 +513,8 @@ nouveau_connector_set_encoder(struct drm_connector *connector,
>   		connector->doublescan_allowed = true;
>   		if (drm->client.device.info.family == NV_DEVICE_INFO_V0_KELVIN ||
>   		    (drm->client.device.info.family == NV_DEVICE_INFO_V0_CELSIUS &&
> -		     (dev->pdev->device & 0x0ff0) != 0x0100 &&
> -		     (dev->pdev->device & 0x0ff0) != 0x0150))
> +		     (pdev->device & 0x0ff0) != 0x0100 &&
> +		     (pdev->device & 0x0ff0) != 0x0150))
>   			/* HW is broken */
>   			connector->interlace_allowed = false;
>   		else
> diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c b/drivers/gpu/drm/nouveau/nouveau_drm.c
> index d141a5f004af..1b2169e9c295 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_drm.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_drm.c
> @@ -115,8 +115,8 @@ nouveau_platform_name(struct platform_device *platformdev)
>   static u64
>   nouveau_name(struct drm_device *dev)
>   {
> -	if (dev->pdev)
> -		return nouveau_pci_name(dev->pdev);
> +	if (dev_is_pci(dev->dev))
> +		return nouveau_pci_name(to_pci_dev(dev->dev));
>   	else
>   		return nouveau_platform_name(to_platform_device(dev->dev));
>   }
> @@ -760,7 +760,6 @@ static int nouveau_drm_probe(struct pci_dev *pdev,
>   	if (ret)
>   		goto fail_drm;
>   
> -	drm_dev->pdev = pdev;
>   	pci_set_drvdata(pdev, drm_dev);
>   
>   	ret = nouveau_drm_device_init(drm_dev);
> diff --git a/drivers/gpu/drm/nouveau/nouveau_fbcon.c b/drivers/gpu/drm/nouveau/nouveau_fbcon.c
> index 24ec5339efb4..4fc0fa696461 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_fbcon.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_fbcon.c
> @@ -396,7 +396,9 @@ nouveau_fbcon_create(struct drm_fb_helper *helper,
>   	NV_INFO(drm, "allocated %dx%d fb: 0x%llx, bo %p\n",
>   		fb->width, fb->height, nvbo->offset, nvbo);
>   
> -	vga_switcheroo_client_fb_set(dev->pdev, info);
> +	if (dev_is_pci(dev->dev))
> +		vga_switcheroo_client_fb_set(to_pci_dev(dev->dev), info);
> +
>   	return 0;
>   
>   out_unlock:
> @@ -548,7 +550,7 @@ nouveau_fbcon_init(struct drm_device *dev)
>   	int ret;
>   
>   	if (!dev->mode_config.num_crtc ||
> -	    (dev->pdev->class >> 8) != PCI_CLASS_DISPLAY_VGA)
> +	    (to_pci_dev(dev->dev)->class >> 8) != PCI_CLASS_DISPLAY_VGA)
>   		return 0;
>   
>   	fbcon = kzalloc(sizeof(struct nouveau_fbdev), GFP_KERNEL);
> diff --git a/drivers/gpu/drm/nouveau/nouveau_vga.c b/drivers/gpu/drm/nouveau/nouveau_vga.c
> index c85dd8afa3c3..7c4b374b3eca 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_vga.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_vga.c
> @@ -87,18 +87,20 @@ nouveau_vga_init(struct nouveau_drm *drm)
>   {
>   	struct drm_device *dev = drm->dev;
>   	bool runtime = nouveau_pmops_runtime();
> +	struct pci_dev *pdev;
>   
>   	/* only relevant for PCI devices */
> -	if (!dev->pdev)
> +	if (!dev_is_pci(dev->dev))
>   		return;
> +	pdev = to_pci_dev(dev->dev);
>   
> -	vga_client_register(dev->pdev, dev, NULL, nouveau_vga_set_decode);
> +	vga_client_register(pdev, dev, NULL, nouveau_vga_set_decode);
>   
>   	/* don't register Thunderbolt eGPU with vga_switcheroo */
> -	if (pci_is_thunderbolt_attached(dev->pdev))
> +	if (pci_is_thunderbolt_attached(pdev))
>   		return;
>   
> -	vga_switcheroo_register_client(dev->pdev, &nouveau_switcheroo_ops, runtime);
> +	vga_switcheroo_register_client(pdev, &nouveau_switcheroo_ops, runtime);
>   
>   	if (runtime && nouveau_is_v1_dsm() && !nouveau_is_optimus())
>   		vga_switcheroo_init_domain_pm_ops(drm->dev->dev, &drm->vga_pm_domain);
> @@ -109,17 +111,19 @@ nouveau_vga_fini(struct nouveau_drm *drm)
>   {
>   	struct drm_device *dev = drm->dev;
>   	bool runtime = nouveau_pmops_runtime();
> +	struct pci_dev *pdev;
>   
>   	/* only relevant for PCI devices */
> -	if (!dev->pdev)
> +	if (!dev_is_pci(dev->dev))
>   		return;
> +	pdev = to_pci_dev(dev->dev);
>   
> -	vga_client_register(dev->pdev, NULL, NULL, NULL);
> +	vga_client_register(pdev, NULL, NULL, NULL);
>   
> -	if (pci_is_thunderbolt_attached(dev->pdev))
> +	if (pci_is_thunderbolt_attached(pdev))
>   		return;
>   
> -	vga_switcheroo_unregister_client(dev->pdev);
> +	vga_switcheroo_unregister_client(pdev);
>   	if (runtime && nouveau_is_v1_dsm() && !nouveau_is_optimus())
>   		vga_switcheroo_fini_domain_pm_ops(drm->dev->dev);
>   }
>
Jeremy Cline Dec. 9, 2020, 6:04 p.m. UTC | #2
Hi,

On Tue, Dec 01, 2020 at 11:35:35AM +0100, Thomas Zimmermann wrote:
> Using struct drm_device.pdev is deprecated. Convert nouveau to struct
> drm_device.dev. No functional changes.
> 
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> Cc: Ben Skeggs <bskeggs@redhat.com>
> ---
>  drivers/gpu/drm/nouveau/dispnv04/arb.c      | 12 +++++++-----
>  drivers/gpu/drm/nouveau/dispnv04/disp.h     | 14 ++++++++------
>  drivers/gpu/drm/nouveau/dispnv04/hw.c       | 10 ++++++----
>  drivers/gpu/drm/nouveau/nouveau_abi16.c     |  7 ++++---
>  drivers/gpu/drm/nouveau/nouveau_acpi.c      |  2 +-
>  drivers/gpu/drm/nouveau/nouveau_bios.c      | 11 ++++++++---
>  drivers/gpu/drm/nouveau/nouveau_connector.c | 10 ++++++----
>  drivers/gpu/drm/nouveau/nouveau_drm.c       |  5 ++---
>  drivers/gpu/drm/nouveau/nouveau_fbcon.c     |  6 ++++--
>  drivers/gpu/drm/nouveau/nouveau_vga.c       | 20 ++++++++++++--------
>  10 files changed, 58 insertions(+), 39 deletions(-)
> 

I believe there's a use of drm_device.pdev in
drivers/gpu/drm/nouveau/dispnv04/dfp.c in the
nv04_dfp_update_backlight() function.

Other than that, this looks good to me.

> diff --git a/drivers/gpu/drm/nouveau/dispnv04/arb.c b/drivers/gpu/drm/nouveau/dispnv04/arb.c
> index 9d4a2d97507e..1d3542d6006b 100644
> --- a/drivers/gpu/drm/nouveau/dispnv04/arb.c
> +++ b/drivers/gpu/drm/nouveau/dispnv04/arb.c
> @@ -200,16 +200,17 @@ nv04_update_arb(struct drm_device *dev, int VClk, int bpp,
>  	int MClk = nouveau_hw_get_clock(dev, PLL_MEMORY);
>  	int NVClk = nouveau_hw_get_clock(dev, PLL_CORE);
>  	uint32_t cfg1 = nvif_rd32(device, NV04_PFB_CFG1);
> +	struct pci_dev *pdev = to_pci_dev(dev->dev);
>  
>  	sim_data.pclk_khz = VClk;
>  	sim_data.mclk_khz = MClk;
>  	sim_data.nvclk_khz = NVClk;
>  	sim_data.bpp = bpp;
>  	sim_data.two_heads = nv_two_heads(dev);
> -	if ((dev->pdev->device & 0xffff) == 0x01a0 /*CHIPSET_NFORCE*/ ||
> -	    (dev->pdev->device & 0xffff) == 0x01f0 /*CHIPSET_NFORCE2*/) {
> +	if ((pdev->device & 0xffff) == 0x01a0 /*CHIPSET_NFORCE*/ ||
> +	    (pdev->device & 0xffff) == 0x01f0 /*CHIPSET_NFORCE2*/) {
>  		uint32_t type;
> -		int domain = pci_domain_nr(dev->pdev->bus);
> +		int domain = pci_domain_nr(pdev->bus);
>  
>  		pci_read_config_dword(pci_get_domain_bus_and_slot(domain, 0, 1),
>  				      0x7c, &type);
> @@ -251,11 +252,12 @@ void
>  nouveau_calc_arb(struct drm_device *dev, int vclk, int bpp, int *burst, int *lwm)
>  {
>  	struct nouveau_drm *drm = nouveau_drm(dev);
> +	struct pci_dev *pdev = to_pci_dev(dev->dev);
>  
>  	if (drm->client.device.info.family < NV_DEVICE_INFO_V0_KELVIN)
>  		nv04_update_arb(dev, vclk, bpp, burst, lwm);
> -	else if ((dev->pdev->device & 0xfff0) == 0x0240 /*CHIPSET_C51*/ ||
> -		 (dev->pdev->device & 0xfff0) == 0x03d0 /*CHIPSET_C512*/) {
> +	else if ((pdev->device & 0xfff0) == 0x0240 /*CHIPSET_C51*/ ||
> +		 (pdev->device & 0xfff0) == 0x03d0 /*CHIPSET_C512*/) {
>  		*burst = 128;
>  		*lwm = 0x0480;
>  	} else
> diff --git a/drivers/gpu/drm/nouveau/dispnv04/disp.h b/drivers/gpu/drm/nouveau/dispnv04/disp.h
> index 5ace5e906949..f0a24126641a 100644
> --- a/drivers/gpu/drm/nouveau/dispnv04/disp.h
> +++ b/drivers/gpu/drm/nouveau/dispnv04/disp.h
> @@ -130,7 +130,7 @@ static inline bool
>  nv_two_heads(struct drm_device *dev)
>  {
>  	struct nouveau_drm *drm = nouveau_drm(dev);
> -	const int impl = dev->pdev->device & 0x0ff0;
> +	const int impl = to_pci_dev(dev->dev)->device & 0x0ff0;
>  
>  	if (drm->client.device.info.family >= NV_DEVICE_INFO_V0_CELSIUS && impl != 0x0100 &&
>  	    impl != 0x0150 && impl != 0x01a0 && impl != 0x0200)
> @@ -142,14 +142,14 @@ nv_two_heads(struct drm_device *dev)
>  static inline bool
>  nv_gf4_disp_arch(struct drm_device *dev)
>  {
> -	return nv_two_heads(dev) && (dev->pdev->device & 0x0ff0) != 0x0110;
> +	return nv_two_heads(dev) && (to_pci_dev(dev->dev)->device & 0x0ff0) != 0x0110;
>  }
>  
>  static inline bool
>  nv_two_reg_pll(struct drm_device *dev)
>  {
>  	struct nouveau_drm *drm = nouveau_drm(dev);
> -	const int impl = dev->pdev->device & 0x0ff0;
> +	const int impl = to_pci_dev(dev->dev)->device & 0x0ff0;
>  
>  	if (impl == 0x0310 || impl == 0x0340 || drm->client.device.info.family >= NV_DEVICE_INFO_V0_CURIE)
>  		return true;
> @@ -160,9 +160,11 @@ static inline bool
>  nv_match_device(struct drm_device *dev, unsigned device,
>  		unsigned sub_vendor, unsigned sub_device)
>  {
> -	return dev->pdev->device == device &&
> -		dev->pdev->subsystem_vendor == sub_vendor &&
> -		dev->pdev->subsystem_device == sub_device;
> +	struct pci_dev *pdev = to_pci_dev(dev->dev);
> +
> +	return pdev->device == device &&
> +		pdev->subsystem_vendor == sub_vendor &&
> +		pdev->subsystem_device == sub_device;
>  }
>  
>  #include <subdev/bios/init.h>
> diff --git a/drivers/gpu/drm/nouveau/dispnv04/hw.c b/drivers/gpu/drm/nouveau/dispnv04/hw.c
> index b674d68ef28a..f7d35657aa64 100644
> --- a/drivers/gpu/drm/nouveau/dispnv04/hw.c
> +++ b/drivers/gpu/drm/nouveau/dispnv04/hw.c
> @@ -214,14 +214,15 @@ nouveau_hw_pllvals_to_clk(struct nvkm_pll_vals *pv)
>  int
>  nouveau_hw_get_clock(struct drm_device *dev, enum nvbios_pll_type plltype)
>  {
> +	struct pci_dev *pdev = to_pci_dev(dev->dev);
>  	struct nvkm_pll_vals pllvals;
>  	int ret;
>  	int domain;
>  
> -	domain = pci_domain_nr(dev->pdev->bus);
> +	domain = pci_domain_nr(pdev->bus);
>  
>  	if (plltype == PLL_MEMORY &&
> -	    (dev->pdev->device & 0x0ff0) == CHIPSET_NFORCE) {
> +	    (pdev->device & 0x0ff0) == CHIPSET_NFORCE) {
>  		uint32_t mpllP;
>  		pci_read_config_dword(pci_get_domain_bus_and_slot(domain, 0, 3),
>  				      0x6c, &mpllP);
> @@ -232,7 +233,7 @@ nouveau_hw_get_clock(struct drm_device *dev, enum nvbios_pll_type plltype)
>  		return 400000 / mpllP;
>  	} else
>  	if (plltype == PLL_MEMORY &&
> -	    (dev->pdev->device & 0xff0) == CHIPSET_NFORCE2) {
> +	    (pdev->device & 0xff0) == CHIPSET_NFORCE2) {
>  		uint32_t clock;
>  
>  		pci_read_config_dword(pci_get_domain_bus_and_slot(domain, 0, 5),
> @@ -309,6 +310,7 @@ void
>  nouveau_hw_save_vga_fonts(struct drm_device *dev, bool save)
>  {
>  	struct nouveau_drm *drm = nouveau_drm(dev);
> +	struct pci_dev *pdev = to_pci_dev(dev->dev);
>  	uint8_t misc, gr4, gr5, gr6, seq2, seq4;
>  	bool graphicsmode;
>  	unsigned plane;
> @@ -327,7 +329,7 @@ nouveau_hw_save_vga_fonts(struct drm_device *dev, bool save)
>  	NV_INFO(drm, "%sing VGA fonts\n", save ? "Sav" : "Restor");
>  
>  	/* map first 64KiB of VRAM, holds VGA fonts etc */
> -	iovram = ioremap(pci_resource_start(dev->pdev, 1), 65536);
> +	iovram = ioremap(pci_resource_start(pdev, 1), 65536);
>  	if (!iovram) {
>  		NV_ERROR(drm, "Failed to map VRAM, "
>  					"cannot save/restore VGA fonts.\n");
> diff --git a/drivers/gpu/drm/nouveau/nouveau_abi16.c b/drivers/gpu/drm/nouveau/nouveau_abi16.c
> index 9a5be6f32424..f08b31d84d4d 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_abi16.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_abi16.c
> @@ -181,6 +181,7 @@ nouveau_abi16_ioctl_getparam(ABI16_IOCTL_ARGS)
>  	struct nvif_device *device = &drm->client.device;
>  	struct nvkm_gr *gr = nvxx_gr(device);
>  	struct drm_nouveau_getparam *getparam = data;
> +	struct pci_dev *pdev = to_pci_dev(dev->dev);
>  
>  	switch (getparam->param) {
>  	case NOUVEAU_GETPARAM_CHIPSET_ID:
> @@ -188,13 +189,13 @@ nouveau_abi16_ioctl_getparam(ABI16_IOCTL_ARGS)
>  		break;
>  	case NOUVEAU_GETPARAM_PCI_VENDOR:
>  		if (device->info.platform != NV_DEVICE_INFO_V0_SOC)
> -			getparam->value = dev->pdev->vendor;
> +			getparam->value = pdev->vendor;
>  		else
>  			getparam->value = 0;
>  		break;
>  	case NOUVEAU_GETPARAM_PCI_DEVICE:
>  		if (device->info.platform != NV_DEVICE_INFO_V0_SOC)
> -			getparam->value = dev->pdev->device;
> +			getparam->value = pdev->device;
>  		else
>  			getparam->value = 0;
>  		break;
> @@ -205,7 +206,7 @@ nouveau_abi16_ioctl_getparam(ABI16_IOCTL_ARGS)
>  		case NV_DEVICE_INFO_V0_PCIE: getparam->value = 2; break;
>  		case NV_DEVICE_INFO_V0_SOC : getparam->value = 3; break;
>  		case NV_DEVICE_INFO_V0_IGP :
> -			if (!pci_is_pcie(dev->pdev))
> +			if (!pci_is_pcie(pdev))
>  				getparam->value = 1;
>  			else
>  				getparam->value = 2;
> diff --git a/drivers/gpu/drm/nouveau/nouveau_acpi.c b/drivers/gpu/drm/nouveau/nouveau_acpi.c
> index 69a84d0197d0..7c15f6448428 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_acpi.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_acpi.c
> @@ -377,7 +377,7 @@ nouveau_acpi_edid(struct drm_device *dev, struct drm_connector *connector)
>  		return NULL;
>  	}
>  
> -	handle = ACPI_HANDLE(&dev->pdev->dev);
> +	handle = ACPI_HANDLE(dev->dev);
>  	if (!handle)
>  		return NULL;
>  
> diff --git a/drivers/gpu/drm/nouveau/nouveau_bios.c b/drivers/gpu/drm/nouveau/nouveau_bios.c
> index d204ea8a5618..7cc683b8dc7a 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_bios.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_bios.c
> @@ -110,6 +110,9 @@ static int call_lvds_manufacturer_script(struct drm_device *dev, struct dcb_outp
>  	struct nvbios *bios = &drm->vbios;
>  	uint8_t sub = bios->data[bios->fp.xlated_entry + script] + (bios->fp.link_c_increment && dcbent->or & DCB_OUTPUT_C ? 1 : 0);
>  	uint16_t scriptofs = ROM16(bios->data[bios->init_script_tbls_ptr + sub * 2]);
> +#ifdef __powerpc__
> +	struct pci_dev *pdev = to_pci_dev(dev->dev);
> +#endif
>  
>  	if (!bios->fp.xlated_entry || !sub || !scriptofs)
>  		return -EINVAL;
> @@ -123,8 +126,8 @@ static int call_lvds_manufacturer_script(struct drm_device *dev, struct dcb_outp
>  #ifdef __powerpc__
>  	/* Powerbook specific quirks */
>  	if (script == LVDS_RESET &&
> -	    (dev->pdev->device == 0x0179 || dev->pdev->device == 0x0189 ||
> -	     dev->pdev->device == 0x0329))
> +	    (pdev->device == 0x0179 || pdev->device == 0x0189 ||
> +	     pdev->device == 0x0329))
>  		nv_write_tmds(dev, dcbent->or, 0, 0x02, 0x72);
>  #endif
>  
> @@ -2080,11 +2083,13 @@ nouveau_bios_init(struct drm_device *dev)
>  {
>  	struct nouveau_drm *drm = nouveau_drm(dev);
>  	struct nvbios *bios = &drm->vbios;
> +	struct pci_dev *pdev;
>  	int ret;
>  
>  	/* only relevant for PCI devices */
> -	if (!dev->pdev)
> +	if (!dev_is_pci(dev->dev))
>  		return 0;
> +	pdev = to_pci_dev(dev->dev);
>  
>  	if (!NVInitVBIOS(dev))
>  		return -ENODEV;
> diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c b/drivers/gpu/drm/nouveau/nouveau_connector.c
> index 8b4b3688c7ae..14c29e68db8f 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_connector.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_connector.c
> @@ -411,6 +411,7 @@ static struct nouveau_encoder *
>  nouveau_connector_ddc_detect(struct drm_connector *connector)
>  {
>  	struct drm_device *dev = connector->dev;
> +	struct pci_dev *pdev = to_pci_dev(dev->dev);
>  	struct nouveau_encoder *nv_encoder = NULL, *found = NULL;
>  	struct drm_encoder *encoder;
>  	int ret;
> @@ -438,11 +439,11 @@ nouveau_connector_ddc_detect(struct drm_connector *connector)
>  				break;
>  
>  			if (switcheroo_ddc)
> -				vga_switcheroo_lock_ddc(dev->pdev);
> +				vga_switcheroo_lock_ddc(pdev);
>  			if (nvkm_probe_i2c(nv_encoder->i2c, 0x50))
>  				found = nv_encoder;
>  			if (switcheroo_ddc)
> -				vga_switcheroo_unlock_ddc(dev->pdev);
> +				vga_switcheroo_unlock_ddc(pdev);
>  
>  			break;
>  		}
> @@ -490,6 +491,7 @@ nouveau_connector_set_encoder(struct drm_connector *connector,
>  	struct nouveau_connector *nv_connector = nouveau_connector(connector);
>  	struct nouveau_drm *drm = nouveau_drm(connector->dev);
>  	struct drm_device *dev = connector->dev;
> +	struct pci_dev *pdev = to_pci_dev(dev->dev);
>  
>  	if (nv_connector->detected_encoder == nv_encoder)
>  		return;
> @@ -511,8 +513,8 @@ nouveau_connector_set_encoder(struct drm_connector *connector,
>  		connector->doublescan_allowed = true;
>  		if (drm->client.device.info.family == NV_DEVICE_INFO_V0_KELVIN ||
>  		    (drm->client.device.info.family == NV_DEVICE_INFO_V0_CELSIUS &&
> -		     (dev->pdev->device & 0x0ff0) != 0x0100 &&
> -		     (dev->pdev->device & 0x0ff0) != 0x0150))
> +		     (pdev->device & 0x0ff0) != 0x0100 &&
> +		     (pdev->device & 0x0ff0) != 0x0150))
>  			/* HW is broken */
>  			connector->interlace_allowed = false;
>  		else
> diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c b/drivers/gpu/drm/nouveau/nouveau_drm.c
> index d141a5f004af..1b2169e9c295 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_drm.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_drm.c
> @@ -115,8 +115,8 @@ nouveau_platform_name(struct platform_device *platformdev)
>  static u64
>  nouveau_name(struct drm_device *dev)
>  {
> -	if (dev->pdev)
> -		return nouveau_pci_name(dev->pdev);
> +	if (dev_is_pci(dev->dev))
> +		return nouveau_pci_name(to_pci_dev(dev->dev));
>  	else
>  		return nouveau_platform_name(to_platform_device(dev->dev));
>  }
> @@ -760,7 +760,6 @@ static int nouveau_drm_probe(struct pci_dev *pdev,
>  	if (ret)
>  		goto fail_drm;
>  
> -	drm_dev->pdev = pdev;
>  	pci_set_drvdata(pdev, drm_dev);
>  
>  	ret = nouveau_drm_device_init(drm_dev);
> diff --git a/drivers/gpu/drm/nouveau/nouveau_fbcon.c b/drivers/gpu/drm/nouveau/nouveau_fbcon.c
> index 24ec5339efb4..4fc0fa696461 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_fbcon.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_fbcon.c
> @@ -396,7 +396,9 @@ nouveau_fbcon_create(struct drm_fb_helper *helper,
>  	NV_INFO(drm, "allocated %dx%d fb: 0x%llx, bo %p\n",
>  		fb->width, fb->height, nvbo->offset, nvbo);
>  
> -	vga_switcheroo_client_fb_set(dev->pdev, info);
> +	if (dev_is_pci(dev->dev))
> +		vga_switcheroo_client_fb_set(to_pci_dev(dev->dev), info);
> +
>  	return 0;
>  
>  out_unlock:
> @@ -548,7 +550,7 @@ nouveau_fbcon_init(struct drm_device *dev)
>  	int ret;
>  
>  	if (!dev->mode_config.num_crtc ||
> -	    (dev->pdev->class >> 8) != PCI_CLASS_DISPLAY_VGA)
> +	    (to_pci_dev(dev->dev)->class >> 8) != PCI_CLASS_DISPLAY_VGA)
>  		return 0;
>  
>  	fbcon = kzalloc(sizeof(struct nouveau_fbdev), GFP_KERNEL);
> diff --git a/drivers/gpu/drm/nouveau/nouveau_vga.c b/drivers/gpu/drm/nouveau/nouveau_vga.c
> index c85dd8afa3c3..7c4b374b3eca 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_vga.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_vga.c
> @@ -87,18 +87,20 @@ nouveau_vga_init(struct nouveau_drm *drm)
>  {
>  	struct drm_device *dev = drm->dev;
>  	bool runtime = nouveau_pmops_runtime();
> +	struct pci_dev *pdev;
>  
>  	/* only relevant for PCI devices */
> -	if (!dev->pdev)
> +	if (!dev_is_pci(dev->dev))
>  		return;
> +	pdev = to_pci_dev(dev->dev);
>  
> -	vga_client_register(dev->pdev, dev, NULL, nouveau_vga_set_decode);
> +	vga_client_register(pdev, dev, NULL, nouveau_vga_set_decode);
>  
>  	/* don't register Thunderbolt eGPU with vga_switcheroo */
> -	if (pci_is_thunderbolt_attached(dev->pdev))
> +	if (pci_is_thunderbolt_attached(pdev))
>  		return;
>  
> -	vga_switcheroo_register_client(dev->pdev, &nouveau_switcheroo_ops, runtime);
> +	vga_switcheroo_register_client(pdev, &nouveau_switcheroo_ops, runtime);
>  
>  	if (runtime && nouveau_is_v1_dsm() && !nouveau_is_optimus())
>  		vga_switcheroo_init_domain_pm_ops(drm->dev->dev, &drm->vga_pm_domain);
> @@ -109,17 +111,19 @@ nouveau_vga_fini(struct nouveau_drm *drm)
>  {
>  	struct drm_device *dev = drm->dev;
>  	bool runtime = nouveau_pmops_runtime();
> +	struct pci_dev *pdev;
>  
>  	/* only relevant for PCI devices */
> -	if (!dev->pdev)
> +	if (!dev_is_pci(dev->dev))
>  		return;
> +	pdev = to_pci_dev(dev->dev);
>  
> -	vga_client_register(dev->pdev, NULL, NULL, NULL);
> +	vga_client_register(pdev, NULL, NULL, NULL);
>  
> -	if (pci_is_thunderbolt_attached(dev->pdev))
> +	if (pci_is_thunderbolt_attached(pdev))
>  		return;
>  
> -	vga_switcheroo_unregister_client(dev->pdev);
> +	vga_switcheroo_unregister_client(pdev);
>  	if (runtime && nouveau_is_v1_dsm() && !nouveau_is_optimus())
>  		vga_switcheroo_fini_domain_pm_ops(drm->dev->dev);
>  }
> -- 
> 2.29.2
> 
> _______________________________________________
> intel-gvt-dev mailing list
> intel-gvt-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gvt-dev
>
Thomas Zimmermann Dec. 10, 2020, 7:56 a.m. UTC | #3
Hi

Am 09.12.20 um 19:04 schrieb Jeremy Cline:
> Hi,
> 
> On Tue, Dec 01, 2020 at 11:35:35AM +0100, Thomas Zimmermann wrote:
>> Using struct drm_device.pdev is deprecated. Convert nouveau to struct
>> drm_device.dev. No functional changes.
>>
>> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
>> Cc: Ben Skeggs <bskeggs@redhat.com>
>> ---
>>   drivers/gpu/drm/nouveau/dispnv04/arb.c      | 12 +++++++-----
>>   drivers/gpu/drm/nouveau/dispnv04/disp.h     | 14 ++++++++------
>>   drivers/gpu/drm/nouveau/dispnv04/hw.c       | 10 ++++++----
>>   drivers/gpu/drm/nouveau/nouveau_abi16.c     |  7 ++++---
>>   drivers/gpu/drm/nouveau/nouveau_acpi.c      |  2 +-
>>   drivers/gpu/drm/nouveau/nouveau_bios.c      | 11 ++++++++---
>>   drivers/gpu/drm/nouveau/nouveau_connector.c | 10 ++++++----
>>   drivers/gpu/drm/nouveau/nouveau_drm.c       |  5 ++---
>>   drivers/gpu/drm/nouveau/nouveau_fbcon.c     |  6 ++++--
>>   drivers/gpu/drm/nouveau/nouveau_vga.c       | 20 ++++++++++++--------
>>   10 files changed, 58 insertions(+), 39 deletions(-)
>>
> 
> I believe there's a use of drm_device.pdev in
> drivers/gpu/drm/nouveau/dispnv04/dfp.c in the
> nv04_dfp_update_backlight() function.

Oh, I see! It's PowerPC-only.

> 
> Other than that, this looks good to me.

With the forgotten pdev fixes, can I count this as an Acked-by?

Best regards
Thomas

> 
>> diff --git a/drivers/gpu/drm/nouveau/dispnv04/arb.c b/drivers/gpu/drm/nouveau/dispnv04/arb.c
>> index 9d4a2d97507e..1d3542d6006b 100644
>> --- a/drivers/gpu/drm/nouveau/dispnv04/arb.c
>> +++ b/drivers/gpu/drm/nouveau/dispnv04/arb.c
>> @@ -200,16 +200,17 @@ nv04_update_arb(struct drm_device *dev, int VClk, int bpp,
>>   	int MClk = nouveau_hw_get_clock(dev, PLL_MEMORY);
>>   	int NVClk = nouveau_hw_get_clock(dev, PLL_CORE);
>>   	uint32_t cfg1 = nvif_rd32(device, NV04_PFB_CFG1);
>> +	struct pci_dev *pdev = to_pci_dev(dev->dev);
>>   
>>   	sim_data.pclk_khz = VClk;
>>   	sim_data.mclk_khz = MClk;
>>   	sim_data.nvclk_khz = NVClk;
>>   	sim_data.bpp = bpp;
>>   	sim_data.two_heads = nv_two_heads(dev);
>> -	if ((dev->pdev->device & 0xffff) == 0x01a0 /*CHIPSET_NFORCE*/ ||
>> -	    (dev->pdev->device & 0xffff) == 0x01f0 /*CHIPSET_NFORCE2*/) {
>> +	if ((pdev->device & 0xffff) == 0x01a0 /*CHIPSET_NFORCE*/ ||
>> +	    (pdev->device & 0xffff) == 0x01f0 /*CHIPSET_NFORCE2*/) {
>>   		uint32_t type;
>> -		int domain = pci_domain_nr(dev->pdev->bus);
>> +		int domain = pci_domain_nr(pdev->bus);
>>   
>>   		pci_read_config_dword(pci_get_domain_bus_and_slot(domain, 0, 1),
>>   				      0x7c, &type);
>> @@ -251,11 +252,12 @@ void
>>   nouveau_calc_arb(struct drm_device *dev, int vclk, int bpp, int *burst, int *lwm)
>>   {
>>   	struct nouveau_drm *drm = nouveau_drm(dev);
>> +	struct pci_dev *pdev = to_pci_dev(dev->dev);
>>   
>>   	if (drm->client.device.info.family < NV_DEVICE_INFO_V0_KELVIN)
>>   		nv04_update_arb(dev, vclk, bpp, burst, lwm);
>> -	else if ((dev->pdev->device & 0xfff0) == 0x0240 /*CHIPSET_C51*/ ||
>> -		 (dev->pdev->device & 0xfff0) == 0x03d0 /*CHIPSET_C512*/) {
>> +	else if ((pdev->device & 0xfff0) == 0x0240 /*CHIPSET_C51*/ ||
>> +		 (pdev->device & 0xfff0) == 0x03d0 /*CHIPSET_C512*/) {
>>   		*burst = 128;
>>   		*lwm = 0x0480;
>>   	} else
>> diff --git a/drivers/gpu/drm/nouveau/dispnv04/disp.h b/drivers/gpu/drm/nouveau/dispnv04/disp.h
>> index 5ace5e906949..f0a24126641a 100644
>> --- a/drivers/gpu/drm/nouveau/dispnv04/disp.h
>> +++ b/drivers/gpu/drm/nouveau/dispnv04/disp.h
>> @@ -130,7 +130,7 @@ static inline bool
>>   nv_two_heads(struct drm_device *dev)
>>   {
>>   	struct nouveau_drm *drm = nouveau_drm(dev);
>> -	const int impl = dev->pdev->device & 0x0ff0;
>> +	const int impl = to_pci_dev(dev->dev)->device & 0x0ff0;
>>   
>>   	if (drm->client.device.info.family >= NV_DEVICE_INFO_V0_CELSIUS && impl != 0x0100 &&
>>   	    impl != 0x0150 && impl != 0x01a0 && impl != 0x0200)
>> @@ -142,14 +142,14 @@ nv_two_heads(struct drm_device *dev)
>>   static inline bool
>>   nv_gf4_disp_arch(struct drm_device *dev)
>>   {
>> -	return nv_two_heads(dev) && (dev->pdev->device & 0x0ff0) != 0x0110;
>> +	return nv_two_heads(dev) && (to_pci_dev(dev->dev)->device & 0x0ff0) != 0x0110;
>>   }
>>   
>>   static inline bool
>>   nv_two_reg_pll(struct drm_device *dev)
>>   {
>>   	struct nouveau_drm *drm = nouveau_drm(dev);
>> -	const int impl = dev->pdev->device & 0x0ff0;
>> +	const int impl = to_pci_dev(dev->dev)->device & 0x0ff0;
>>   
>>   	if (impl == 0x0310 || impl == 0x0340 || drm->client.device.info.family >= NV_DEVICE_INFO_V0_CURIE)
>>   		return true;
>> @@ -160,9 +160,11 @@ static inline bool
>>   nv_match_device(struct drm_device *dev, unsigned device,
>>   		unsigned sub_vendor, unsigned sub_device)
>>   {
>> -	return dev->pdev->device == device &&
>> -		dev->pdev->subsystem_vendor == sub_vendor &&
>> -		dev->pdev->subsystem_device == sub_device;
>> +	struct pci_dev *pdev = to_pci_dev(dev->dev);
>> +
>> +	return pdev->device == device &&
>> +		pdev->subsystem_vendor == sub_vendor &&
>> +		pdev->subsystem_device == sub_device;
>>   }
>>   
>>   #include <subdev/bios/init.h>
>> diff --git a/drivers/gpu/drm/nouveau/dispnv04/hw.c b/drivers/gpu/drm/nouveau/dispnv04/hw.c
>> index b674d68ef28a..f7d35657aa64 100644
>> --- a/drivers/gpu/drm/nouveau/dispnv04/hw.c
>> +++ b/drivers/gpu/drm/nouveau/dispnv04/hw.c
>> @@ -214,14 +214,15 @@ nouveau_hw_pllvals_to_clk(struct nvkm_pll_vals *pv)
>>   int
>>   nouveau_hw_get_clock(struct drm_device *dev, enum nvbios_pll_type plltype)
>>   {
>> +	struct pci_dev *pdev = to_pci_dev(dev->dev);
>>   	struct nvkm_pll_vals pllvals;
>>   	int ret;
>>   	int domain;
>>   
>> -	domain = pci_domain_nr(dev->pdev->bus);
>> +	domain = pci_domain_nr(pdev->bus);
>>   
>>   	if (plltype == PLL_MEMORY &&
>> -	    (dev->pdev->device & 0x0ff0) == CHIPSET_NFORCE) {
>> +	    (pdev->device & 0x0ff0) == CHIPSET_NFORCE) {
>>   		uint32_t mpllP;
>>   		pci_read_config_dword(pci_get_domain_bus_and_slot(domain, 0, 3),
>>   				      0x6c, &mpllP);
>> @@ -232,7 +233,7 @@ nouveau_hw_get_clock(struct drm_device *dev, enum nvbios_pll_type plltype)
>>   		return 400000 / mpllP;
>>   	} else
>>   	if (plltype == PLL_MEMORY &&
>> -	    (dev->pdev->device & 0xff0) == CHIPSET_NFORCE2) {
>> +	    (pdev->device & 0xff0) == CHIPSET_NFORCE2) {
>>   		uint32_t clock;
>>   
>>   		pci_read_config_dword(pci_get_domain_bus_and_slot(domain, 0, 5),
>> @@ -309,6 +310,7 @@ void
>>   nouveau_hw_save_vga_fonts(struct drm_device *dev, bool save)
>>   {
>>   	struct nouveau_drm *drm = nouveau_drm(dev);
>> +	struct pci_dev *pdev = to_pci_dev(dev->dev);
>>   	uint8_t misc, gr4, gr5, gr6, seq2, seq4;
>>   	bool graphicsmode;
>>   	unsigned plane;
>> @@ -327,7 +329,7 @@ nouveau_hw_save_vga_fonts(struct drm_device *dev, bool save)
>>   	NV_INFO(drm, "%sing VGA fonts\n", save ? "Sav" : "Restor");
>>   
>>   	/* map first 64KiB of VRAM, holds VGA fonts etc */
>> -	iovram = ioremap(pci_resource_start(dev->pdev, 1), 65536);
>> +	iovram = ioremap(pci_resource_start(pdev, 1), 65536);
>>   	if (!iovram) {
>>   		NV_ERROR(drm, "Failed to map VRAM, "
>>   					"cannot save/restore VGA fonts.\n");
>> diff --git a/drivers/gpu/drm/nouveau/nouveau_abi16.c b/drivers/gpu/drm/nouveau/nouveau_abi16.c
>> index 9a5be6f32424..f08b31d84d4d 100644
>> --- a/drivers/gpu/drm/nouveau/nouveau_abi16.c
>> +++ b/drivers/gpu/drm/nouveau/nouveau_abi16.c
>> @@ -181,6 +181,7 @@ nouveau_abi16_ioctl_getparam(ABI16_IOCTL_ARGS)
>>   	struct nvif_device *device = &drm->client.device;
>>   	struct nvkm_gr *gr = nvxx_gr(device);
>>   	struct drm_nouveau_getparam *getparam = data;
>> +	struct pci_dev *pdev = to_pci_dev(dev->dev);
>>   
>>   	switch (getparam->param) {
>>   	case NOUVEAU_GETPARAM_CHIPSET_ID:
>> @@ -188,13 +189,13 @@ nouveau_abi16_ioctl_getparam(ABI16_IOCTL_ARGS)
>>   		break;
>>   	case NOUVEAU_GETPARAM_PCI_VENDOR:
>>   		if (device->info.platform != NV_DEVICE_INFO_V0_SOC)
>> -			getparam->value = dev->pdev->vendor;
>> +			getparam->value = pdev->vendor;
>>   		else
>>   			getparam->value = 0;
>>   		break;
>>   	case NOUVEAU_GETPARAM_PCI_DEVICE:
>>   		if (device->info.platform != NV_DEVICE_INFO_V0_SOC)
>> -			getparam->value = dev->pdev->device;
>> +			getparam->value = pdev->device;
>>   		else
>>   			getparam->value = 0;
>>   		break;
>> @@ -205,7 +206,7 @@ nouveau_abi16_ioctl_getparam(ABI16_IOCTL_ARGS)
>>   		case NV_DEVICE_INFO_V0_PCIE: getparam->value = 2; break;
>>   		case NV_DEVICE_INFO_V0_SOC : getparam->value = 3; break;
>>   		case NV_DEVICE_INFO_V0_IGP :
>> -			if (!pci_is_pcie(dev->pdev))
>> +			if (!pci_is_pcie(pdev))
>>   				getparam->value = 1;
>>   			else
>>   				getparam->value = 2;
>> diff --git a/drivers/gpu/drm/nouveau/nouveau_acpi.c b/drivers/gpu/drm/nouveau/nouveau_acpi.c
>> index 69a84d0197d0..7c15f6448428 100644
>> --- a/drivers/gpu/drm/nouveau/nouveau_acpi.c
>> +++ b/drivers/gpu/drm/nouveau/nouveau_acpi.c
>> @@ -377,7 +377,7 @@ nouveau_acpi_edid(struct drm_device *dev, struct drm_connector *connector)
>>   		return NULL;
>>   	}
>>   
>> -	handle = ACPI_HANDLE(&dev->pdev->dev);
>> +	handle = ACPI_HANDLE(dev->dev);
>>   	if (!handle)
>>   		return NULL;
>>   
>> diff --git a/drivers/gpu/drm/nouveau/nouveau_bios.c b/drivers/gpu/drm/nouveau/nouveau_bios.c
>> index d204ea8a5618..7cc683b8dc7a 100644
>> --- a/drivers/gpu/drm/nouveau/nouveau_bios.c
>> +++ b/drivers/gpu/drm/nouveau/nouveau_bios.c
>> @@ -110,6 +110,9 @@ static int call_lvds_manufacturer_script(struct drm_device *dev, struct dcb_outp
>>   	struct nvbios *bios = &drm->vbios;
>>   	uint8_t sub = bios->data[bios->fp.xlated_entry + script] + (bios->fp.link_c_increment && dcbent->or & DCB_OUTPUT_C ? 1 : 0);
>>   	uint16_t scriptofs = ROM16(bios->data[bios->init_script_tbls_ptr + sub * 2]);
>> +#ifdef __powerpc__
>> +	struct pci_dev *pdev = to_pci_dev(dev->dev);
>> +#endif
>>   
>>   	if (!bios->fp.xlated_entry || !sub || !scriptofs)
>>   		return -EINVAL;
>> @@ -123,8 +126,8 @@ static int call_lvds_manufacturer_script(struct drm_device *dev, struct dcb_outp
>>   #ifdef __powerpc__
>>   	/* Powerbook specific quirks */
>>   	if (script == LVDS_RESET &&
>> -	    (dev->pdev->device == 0x0179 || dev->pdev->device == 0x0189 ||
>> -	     dev->pdev->device == 0x0329))
>> +	    (pdev->device == 0x0179 || pdev->device == 0x0189 ||
>> +	     pdev->device == 0x0329))
>>   		nv_write_tmds(dev, dcbent->or, 0, 0x02, 0x72);
>>   #endif
>>   
>> @@ -2080,11 +2083,13 @@ nouveau_bios_init(struct drm_device *dev)
>>   {
>>   	struct nouveau_drm *drm = nouveau_drm(dev);
>>   	struct nvbios *bios = &drm->vbios;
>> +	struct pci_dev *pdev;
>>   	int ret;
>>   
>>   	/* only relevant for PCI devices */
>> -	if (!dev->pdev)
>> +	if (!dev_is_pci(dev->dev))
>>   		return 0;
>> +	pdev = to_pci_dev(dev->dev);
>>   
>>   	if (!NVInitVBIOS(dev))
>>   		return -ENODEV;
>> diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c b/drivers/gpu/drm/nouveau/nouveau_connector.c
>> index 8b4b3688c7ae..14c29e68db8f 100644
>> --- a/drivers/gpu/drm/nouveau/nouveau_connector.c
>> +++ b/drivers/gpu/drm/nouveau/nouveau_connector.c
>> @@ -411,6 +411,7 @@ static struct nouveau_encoder *
>>   nouveau_connector_ddc_detect(struct drm_connector *connector)
>>   {
>>   	struct drm_device *dev = connector->dev;
>> +	struct pci_dev *pdev = to_pci_dev(dev->dev);
>>   	struct nouveau_encoder *nv_encoder = NULL, *found = NULL;
>>   	struct drm_encoder *encoder;
>>   	int ret;
>> @@ -438,11 +439,11 @@ nouveau_connector_ddc_detect(struct drm_connector *connector)
>>   				break;
>>   
>>   			if (switcheroo_ddc)
>> -				vga_switcheroo_lock_ddc(dev->pdev);
>> +				vga_switcheroo_lock_ddc(pdev);
>>   			if (nvkm_probe_i2c(nv_encoder->i2c, 0x50))
>>   				found = nv_encoder;
>>   			if (switcheroo_ddc)
>> -				vga_switcheroo_unlock_ddc(dev->pdev);
>> +				vga_switcheroo_unlock_ddc(pdev);
>>   
>>   			break;
>>   		}
>> @@ -490,6 +491,7 @@ nouveau_connector_set_encoder(struct drm_connector *connector,
>>   	struct nouveau_connector *nv_connector = nouveau_connector(connector);
>>   	struct nouveau_drm *drm = nouveau_drm(connector->dev);
>>   	struct drm_device *dev = connector->dev;
>> +	struct pci_dev *pdev = to_pci_dev(dev->dev);
>>   
>>   	if (nv_connector->detected_encoder == nv_encoder)
>>   		return;
>> @@ -511,8 +513,8 @@ nouveau_connector_set_encoder(struct drm_connector *connector,
>>   		connector->doublescan_allowed = true;
>>   		if (drm->client.device.info.family == NV_DEVICE_INFO_V0_KELVIN ||
>>   		    (drm->client.device.info.family == NV_DEVICE_INFO_V0_CELSIUS &&
>> -		     (dev->pdev->device & 0x0ff0) != 0x0100 &&
>> -		     (dev->pdev->device & 0x0ff0) != 0x0150))
>> +		     (pdev->device & 0x0ff0) != 0x0100 &&
>> +		     (pdev->device & 0x0ff0) != 0x0150))
>>   			/* HW is broken */
>>   			connector->interlace_allowed = false;
>>   		else
>> diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c b/drivers/gpu/drm/nouveau/nouveau_drm.c
>> index d141a5f004af..1b2169e9c295 100644
>> --- a/drivers/gpu/drm/nouveau/nouveau_drm.c
>> +++ b/drivers/gpu/drm/nouveau/nouveau_drm.c
>> @@ -115,8 +115,8 @@ nouveau_platform_name(struct platform_device *platformdev)
>>   static u64
>>   nouveau_name(struct drm_device *dev)
>>   {
>> -	if (dev->pdev)
>> -		return nouveau_pci_name(dev->pdev);
>> +	if (dev_is_pci(dev->dev))
>> +		return nouveau_pci_name(to_pci_dev(dev->dev));
>>   	else
>>   		return nouveau_platform_name(to_platform_device(dev->dev));
>>   }
>> @@ -760,7 +760,6 @@ static int nouveau_drm_probe(struct pci_dev *pdev,
>>   	if (ret)
>>   		goto fail_drm;
>>   
>> -	drm_dev->pdev = pdev;
>>   	pci_set_drvdata(pdev, drm_dev);
>>   
>>   	ret = nouveau_drm_device_init(drm_dev);
>> diff --git a/drivers/gpu/drm/nouveau/nouveau_fbcon.c b/drivers/gpu/drm/nouveau/nouveau_fbcon.c
>> index 24ec5339efb4..4fc0fa696461 100644
>> --- a/drivers/gpu/drm/nouveau/nouveau_fbcon.c
>> +++ b/drivers/gpu/drm/nouveau/nouveau_fbcon.c
>> @@ -396,7 +396,9 @@ nouveau_fbcon_create(struct drm_fb_helper *helper,
>>   	NV_INFO(drm, "allocated %dx%d fb: 0x%llx, bo %p\n",
>>   		fb->width, fb->height, nvbo->offset, nvbo);
>>   
>> -	vga_switcheroo_client_fb_set(dev->pdev, info);
>> +	if (dev_is_pci(dev->dev))
>> +		vga_switcheroo_client_fb_set(to_pci_dev(dev->dev), info);
>> +
>>   	return 0;
>>   
>>   out_unlock:
>> @@ -548,7 +550,7 @@ nouveau_fbcon_init(struct drm_device *dev)
>>   	int ret;
>>   
>>   	if (!dev->mode_config.num_crtc ||
>> -	    (dev->pdev->class >> 8) != PCI_CLASS_DISPLAY_VGA)
>> +	    (to_pci_dev(dev->dev)->class >> 8) != PCI_CLASS_DISPLAY_VGA)
>>   		return 0;
>>   
>>   	fbcon = kzalloc(sizeof(struct nouveau_fbdev), GFP_KERNEL);
>> diff --git a/drivers/gpu/drm/nouveau/nouveau_vga.c b/drivers/gpu/drm/nouveau/nouveau_vga.c
>> index c85dd8afa3c3..7c4b374b3eca 100644
>> --- a/drivers/gpu/drm/nouveau/nouveau_vga.c
>> +++ b/drivers/gpu/drm/nouveau/nouveau_vga.c
>> @@ -87,18 +87,20 @@ nouveau_vga_init(struct nouveau_drm *drm)
>>   {
>>   	struct drm_device *dev = drm->dev;
>>   	bool runtime = nouveau_pmops_runtime();
>> +	struct pci_dev *pdev;
>>   
>>   	/* only relevant for PCI devices */
>> -	if (!dev->pdev)
>> +	if (!dev_is_pci(dev->dev))
>>   		return;
>> +	pdev = to_pci_dev(dev->dev);
>>   
>> -	vga_client_register(dev->pdev, dev, NULL, nouveau_vga_set_decode);
>> +	vga_client_register(pdev, dev, NULL, nouveau_vga_set_decode);
>>   
>>   	/* don't register Thunderbolt eGPU with vga_switcheroo */
>> -	if (pci_is_thunderbolt_attached(dev->pdev))
>> +	if (pci_is_thunderbolt_attached(pdev))
>>   		return;
>>   
>> -	vga_switcheroo_register_client(dev->pdev, &nouveau_switcheroo_ops, runtime);
>> +	vga_switcheroo_register_client(pdev, &nouveau_switcheroo_ops, runtime);
>>   
>>   	if (runtime && nouveau_is_v1_dsm() && !nouveau_is_optimus())
>>   		vga_switcheroo_init_domain_pm_ops(drm->dev->dev, &drm->vga_pm_domain);
>> @@ -109,17 +111,19 @@ nouveau_vga_fini(struct nouveau_drm *drm)
>>   {
>>   	struct drm_device *dev = drm->dev;
>>   	bool runtime = nouveau_pmops_runtime();
>> +	struct pci_dev *pdev;
>>   
>>   	/* only relevant for PCI devices */
>> -	if (!dev->pdev)
>> +	if (!dev_is_pci(dev->dev))
>>   		return;
>> +	pdev = to_pci_dev(dev->dev);
>>   
>> -	vga_client_register(dev->pdev, NULL, NULL, NULL);
>> +	vga_client_register(pdev, NULL, NULL, NULL);
>>   
>> -	if (pci_is_thunderbolt_attached(dev->pdev))
>> +	if (pci_is_thunderbolt_attached(pdev))
>>   		return;
>>   
>> -	vga_switcheroo_unregister_client(dev->pdev);
>> +	vga_switcheroo_unregister_client(pdev);
>>   	if (runtime && nouveau_is_v1_dsm() && !nouveau_is_optimus())
>>   		vga_switcheroo_fini_domain_pm_ops(drm->dev->dev);
>>   }
>> -- 
>> 2.29.2
>>
>> _______________________________________________
>> intel-gvt-dev mailing list
>> intel-gvt-dev@lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/intel-gvt-dev
>>
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
>
Jeremy Cline Dec. 10, 2020, 2:25 p.m. UTC | #4
On Thu, Dec 10, 2020 at 08:56:08AM +0100, Thomas Zimmermann wrote:
> Hi
> 
> Am 09.12.20 um 19:04 schrieb Jeremy Cline:
> > Hi,
> > 
> > On Tue, Dec 01, 2020 at 11:35:35AM +0100, Thomas Zimmermann wrote:
> > > Using struct drm_device.pdev is deprecated. Convert nouveau to struct
> > > drm_device.dev. No functional changes.
> > > 
> > > Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> > > Cc: Ben Skeggs <bskeggs@redhat.com>
> > > ---
> > >   drivers/gpu/drm/nouveau/dispnv04/arb.c      | 12 +++++++-----
> > >   drivers/gpu/drm/nouveau/dispnv04/disp.h     | 14 ++++++++------
> > >   drivers/gpu/drm/nouveau/dispnv04/hw.c       | 10 ++++++----
> > >   drivers/gpu/drm/nouveau/nouveau_abi16.c     |  7 ++++---
> > >   drivers/gpu/drm/nouveau/nouveau_acpi.c      |  2 +-
> > >   drivers/gpu/drm/nouveau/nouveau_bios.c      | 11 ++++++++---
> > >   drivers/gpu/drm/nouveau/nouveau_connector.c | 10 ++++++----
> > >   drivers/gpu/drm/nouveau/nouveau_drm.c       |  5 ++---
> > >   drivers/gpu/drm/nouveau/nouveau_fbcon.c     |  6 ++++--
> > >   drivers/gpu/drm/nouveau/nouveau_vga.c       | 20 ++++++++++++--------
> > >   10 files changed, 58 insertions(+), 39 deletions(-)
> > > 
> > 
> > I believe there's a use of drm_device.pdev in
> > drivers/gpu/drm/nouveau/dispnv04/dfp.c in the
> > nv04_dfp_update_backlight() function.
> 
> Oh, I see! It's PowerPC-only.
> 
> > 
> > Other than that, this looks good to me.
> 
> With the forgotten pdev fixes, can I count this as an Acked-by?
> 

Yeah, with that fix:

Reviewed-by: Jeremy Cline <jcline@redhat.com>

> Best regards
> Thomas
> 
> > 
> > > diff --git a/drivers/gpu/drm/nouveau/dispnv04/arb.c b/drivers/gpu/drm/nouveau/dispnv04/arb.c
> > > index 9d4a2d97507e..1d3542d6006b 100644
> > > --- a/drivers/gpu/drm/nouveau/dispnv04/arb.c
> > > +++ b/drivers/gpu/drm/nouveau/dispnv04/arb.c
> > > @@ -200,16 +200,17 @@ nv04_update_arb(struct drm_device *dev, int VClk, int bpp,
> > >   	int MClk = nouveau_hw_get_clock(dev, PLL_MEMORY);
> > >   	int NVClk = nouveau_hw_get_clock(dev, PLL_CORE);
> > >   	uint32_t cfg1 = nvif_rd32(device, NV04_PFB_CFG1);
> > > +	struct pci_dev *pdev = to_pci_dev(dev->dev);
> > >   	sim_data.pclk_khz = VClk;
> > >   	sim_data.mclk_khz = MClk;
> > >   	sim_data.nvclk_khz = NVClk;
> > >   	sim_data.bpp = bpp;
> > >   	sim_data.two_heads = nv_two_heads(dev);
> > > -	if ((dev->pdev->device & 0xffff) == 0x01a0 /*CHIPSET_NFORCE*/ ||
> > > -	    (dev->pdev->device & 0xffff) == 0x01f0 /*CHIPSET_NFORCE2*/) {
> > > +	if ((pdev->device & 0xffff) == 0x01a0 /*CHIPSET_NFORCE*/ ||
> > > +	    (pdev->device & 0xffff) == 0x01f0 /*CHIPSET_NFORCE2*/) {
> > >   		uint32_t type;
> > > -		int domain = pci_domain_nr(dev->pdev->bus);
> > > +		int domain = pci_domain_nr(pdev->bus);
> > >   		pci_read_config_dword(pci_get_domain_bus_and_slot(domain, 0, 1),
> > >   				      0x7c, &type);
> > > @@ -251,11 +252,12 @@ void
> > >   nouveau_calc_arb(struct drm_device *dev, int vclk, int bpp, int *burst, int *lwm)
> > >   {
> > >   	struct nouveau_drm *drm = nouveau_drm(dev);
> > > +	struct pci_dev *pdev = to_pci_dev(dev->dev);
> > >   	if (drm->client.device.info.family < NV_DEVICE_INFO_V0_KELVIN)
> > >   		nv04_update_arb(dev, vclk, bpp, burst, lwm);
> > > -	else if ((dev->pdev->device & 0xfff0) == 0x0240 /*CHIPSET_C51*/ ||
> > > -		 (dev->pdev->device & 0xfff0) == 0x03d0 /*CHIPSET_C512*/) {
> > > +	else if ((pdev->device & 0xfff0) == 0x0240 /*CHIPSET_C51*/ ||
> > > +		 (pdev->device & 0xfff0) == 0x03d0 /*CHIPSET_C512*/) {
> > >   		*burst = 128;
> > >   		*lwm = 0x0480;
> > >   	} else
> > > diff --git a/drivers/gpu/drm/nouveau/dispnv04/disp.h b/drivers/gpu/drm/nouveau/dispnv04/disp.h
> > > index 5ace5e906949..f0a24126641a 100644
> > > --- a/drivers/gpu/drm/nouveau/dispnv04/disp.h
> > > +++ b/drivers/gpu/drm/nouveau/dispnv04/disp.h
> > > @@ -130,7 +130,7 @@ static inline bool
> > >   nv_two_heads(struct drm_device *dev)
> > >   {
> > >   	struct nouveau_drm *drm = nouveau_drm(dev);
> > > -	const int impl = dev->pdev->device & 0x0ff0;
> > > +	const int impl = to_pci_dev(dev->dev)->device & 0x0ff0;
> > >   	if (drm->client.device.info.family >= NV_DEVICE_INFO_V0_CELSIUS && impl != 0x0100 &&
> > >   	    impl != 0x0150 && impl != 0x01a0 && impl != 0x0200)
> > > @@ -142,14 +142,14 @@ nv_two_heads(struct drm_device *dev)
> > >   static inline bool
> > >   nv_gf4_disp_arch(struct drm_device *dev)
> > >   {
> > > -	return nv_two_heads(dev) && (dev->pdev->device & 0x0ff0) != 0x0110;
> > > +	return nv_two_heads(dev) && (to_pci_dev(dev->dev)->device & 0x0ff0) != 0x0110;
> > >   }
> > >   static inline bool
> > >   nv_two_reg_pll(struct drm_device *dev)
> > >   {
> > >   	struct nouveau_drm *drm = nouveau_drm(dev);
> > > -	const int impl = dev->pdev->device & 0x0ff0;
> > > +	const int impl = to_pci_dev(dev->dev)->device & 0x0ff0;
> > >   	if (impl == 0x0310 || impl == 0x0340 || drm->client.device.info.family >= NV_DEVICE_INFO_V0_CURIE)
> > >   		return true;
> > > @@ -160,9 +160,11 @@ static inline bool
> > >   nv_match_device(struct drm_device *dev, unsigned device,
> > >   		unsigned sub_vendor, unsigned sub_device)
> > >   {
> > > -	return dev->pdev->device == device &&
> > > -		dev->pdev->subsystem_vendor == sub_vendor &&
> > > -		dev->pdev->subsystem_device == sub_device;
> > > +	struct pci_dev *pdev = to_pci_dev(dev->dev);
> > > +
> > > +	return pdev->device == device &&
> > > +		pdev->subsystem_vendor == sub_vendor &&
> > > +		pdev->subsystem_device == sub_device;
> > >   }
> > >   #include <subdev/bios/init.h>
> > > diff --git a/drivers/gpu/drm/nouveau/dispnv04/hw.c b/drivers/gpu/drm/nouveau/dispnv04/hw.c
> > > index b674d68ef28a..f7d35657aa64 100644
> > > --- a/drivers/gpu/drm/nouveau/dispnv04/hw.c
> > > +++ b/drivers/gpu/drm/nouveau/dispnv04/hw.c
> > > @@ -214,14 +214,15 @@ nouveau_hw_pllvals_to_clk(struct nvkm_pll_vals *pv)
> > >   int
> > >   nouveau_hw_get_clock(struct drm_device *dev, enum nvbios_pll_type plltype)
> > >   {
> > > +	struct pci_dev *pdev = to_pci_dev(dev->dev);
> > >   	struct nvkm_pll_vals pllvals;
> > >   	int ret;
> > >   	int domain;
> > > -	domain = pci_domain_nr(dev->pdev->bus);
> > > +	domain = pci_domain_nr(pdev->bus);
> > >   	if (plltype == PLL_MEMORY &&
> > > -	    (dev->pdev->device & 0x0ff0) == CHIPSET_NFORCE) {
> > > +	    (pdev->device & 0x0ff0) == CHIPSET_NFORCE) {
> > >   		uint32_t mpllP;
> > >   		pci_read_config_dword(pci_get_domain_bus_and_slot(domain, 0, 3),
> > >   				      0x6c, &mpllP);
> > > @@ -232,7 +233,7 @@ nouveau_hw_get_clock(struct drm_device *dev, enum nvbios_pll_type plltype)
> > >   		return 400000 / mpllP;
> > >   	} else
> > >   	if (plltype == PLL_MEMORY &&
> > > -	    (dev->pdev->device & 0xff0) == CHIPSET_NFORCE2) {
> > > +	    (pdev->device & 0xff0) == CHIPSET_NFORCE2) {
> > >   		uint32_t clock;
> > >   		pci_read_config_dword(pci_get_domain_bus_and_slot(domain, 0, 5),
> > > @@ -309,6 +310,7 @@ void
> > >   nouveau_hw_save_vga_fonts(struct drm_device *dev, bool save)
> > >   {
> > >   	struct nouveau_drm *drm = nouveau_drm(dev);
> > > +	struct pci_dev *pdev = to_pci_dev(dev->dev);
> > >   	uint8_t misc, gr4, gr5, gr6, seq2, seq4;
> > >   	bool graphicsmode;
> > >   	unsigned plane;
> > > @@ -327,7 +329,7 @@ nouveau_hw_save_vga_fonts(struct drm_device *dev, bool save)
> > >   	NV_INFO(drm, "%sing VGA fonts\n", save ? "Sav" : "Restor");
> > >   	/* map first 64KiB of VRAM, holds VGA fonts etc */
> > > -	iovram = ioremap(pci_resource_start(dev->pdev, 1), 65536);
> > > +	iovram = ioremap(pci_resource_start(pdev, 1), 65536);
> > >   	if (!iovram) {
> > >   		NV_ERROR(drm, "Failed to map VRAM, "
> > >   					"cannot save/restore VGA fonts.\n");
> > > diff --git a/drivers/gpu/drm/nouveau/nouveau_abi16.c b/drivers/gpu/drm/nouveau/nouveau_abi16.c
> > > index 9a5be6f32424..f08b31d84d4d 100644
> > > --- a/drivers/gpu/drm/nouveau/nouveau_abi16.c
> > > +++ b/drivers/gpu/drm/nouveau/nouveau_abi16.c
> > > @@ -181,6 +181,7 @@ nouveau_abi16_ioctl_getparam(ABI16_IOCTL_ARGS)
> > >   	struct nvif_device *device = &drm->client.device;
> > >   	struct nvkm_gr *gr = nvxx_gr(device);
> > >   	struct drm_nouveau_getparam *getparam = data;
> > > +	struct pci_dev *pdev = to_pci_dev(dev->dev);
> > >   	switch (getparam->param) {
> > >   	case NOUVEAU_GETPARAM_CHIPSET_ID:
> > > @@ -188,13 +189,13 @@ nouveau_abi16_ioctl_getparam(ABI16_IOCTL_ARGS)
> > >   		break;
> > >   	case NOUVEAU_GETPARAM_PCI_VENDOR:
> > >   		if (device->info.platform != NV_DEVICE_INFO_V0_SOC)
> > > -			getparam->value = dev->pdev->vendor;
> > > +			getparam->value = pdev->vendor;
> > >   		else
> > >   			getparam->value = 0;
> > >   		break;
> > >   	case NOUVEAU_GETPARAM_PCI_DEVICE:
> > >   		if (device->info.platform != NV_DEVICE_INFO_V0_SOC)
> > > -			getparam->value = dev->pdev->device;
> > > +			getparam->value = pdev->device;
> > >   		else
> > >   			getparam->value = 0;
> > >   		break;
> > > @@ -205,7 +206,7 @@ nouveau_abi16_ioctl_getparam(ABI16_IOCTL_ARGS)
> > >   		case NV_DEVICE_INFO_V0_PCIE: getparam->value = 2; break;
> > >   		case NV_DEVICE_INFO_V0_SOC : getparam->value = 3; break;
> > >   		case NV_DEVICE_INFO_V0_IGP :
> > > -			if (!pci_is_pcie(dev->pdev))
> > > +			if (!pci_is_pcie(pdev))
> > >   				getparam->value = 1;
> > >   			else
> > >   				getparam->value = 2;
> > > diff --git a/drivers/gpu/drm/nouveau/nouveau_acpi.c b/drivers/gpu/drm/nouveau/nouveau_acpi.c
> > > index 69a84d0197d0..7c15f6448428 100644
> > > --- a/drivers/gpu/drm/nouveau/nouveau_acpi.c
> > > +++ b/drivers/gpu/drm/nouveau/nouveau_acpi.c
> > > @@ -377,7 +377,7 @@ nouveau_acpi_edid(struct drm_device *dev, struct drm_connector *connector)
> > >   		return NULL;
> > >   	}
> > > -	handle = ACPI_HANDLE(&dev->pdev->dev);
> > > +	handle = ACPI_HANDLE(dev->dev);
> > >   	if (!handle)
> > >   		return NULL;
> > > diff --git a/drivers/gpu/drm/nouveau/nouveau_bios.c b/drivers/gpu/drm/nouveau/nouveau_bios.c
> > > index d204ea8a5618..7cc683b8dc7a 100644
> > > --- a/drivers/gpu/drm/nouveau/nouveau_bios.c
> > > +++ b/drivers/gpu/drm/nouveau/nouveau_bios.c
> > > @@ -110,6 +110,9 @@ static int call_lvds_manufacturer_script(struct drm_device *dev, struct dcb_outp
> > >   	struct nvbios *bios = &drm->vbios;
> > >   	uint8_t sub = bios->data[bios->fp.xlated_entry + script] + (bios->fp.link_c_increment && dcbent->or & DCB_OUTPUT_C ? 1 : 0);
> > >   	uint16_t scriptofs = ROM16(bios->data[bios->init_script_tbls_ptr + sub * 2]);
> > > +#ifdef __powerpc__
> > > +	struct pci_dev *pdev = to_pci_dev(dev->dev);
> > > +#endif
> > >   	if (!bios->fp.xlated_entry || !sub || !scriptofs)
> > >   		return -EINVAL;
> > > @@ -123,8 +126,8 @@ static int call_lvds_manufacturer_script(struct drm_device *dev, struct dcb_outp
> > >   #ifdef __powerpc__
> > >   	/* Powerbook specific quirks */
> > >   	if (script == LVDS_RESET &&
> > > -	    (dev->pdev->device == 0x0179 || dev->pdev->device == 0x0189 ||
> > > -	     dev->pdev->device == 0x0329))
> > > +	    (pdev->device == 0x0179 || pdev->device == 0x0189 ||
> > > +	     pdev->device == 0x0329))
> > >   		nv_write_tmds(dev, dcbent->or, 0, 0x02, 0x72);
> > >   #endif
> > > @@ -2080,11 +2083,13 @@ nouveau_bios_init(struct drm_device *dev)
> > >   {
> > >   	struct nouveau_drm *drm = nouveau_drm(dev);
> > >   	struct nvbios *bios = &drm->vbios;
> > > +	struct pci_dev *pdev;
> > >   	int ret;
> > >   	/* only relevant for PCI devices */
> > > -	if (!dev->pdev)
> > > +	if (!dev_is_pci(dev->dev))
> > >   		return 0;
> > > +	pdev = to_pci_dev(dev->dev);
> > >   	if (!NVInitVBIOS(dev))
> > >   		return -ENODEV;
> > > diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c b/drivers/gpu/drm/nouveau/nouveau_connector.c
> > > index 8b4b3688c7ae..14c29e68db8f 100644
> > > --- a/drivers/gpu/drm/nouveau/nouveau_connector.c
> > > +++ b/drivers/gpu/drm/nouveau/nouveau_connector.c
> > > @@ -411,6 +411,7 @@ static struct nouveau_encoder *
> > >   nouveau_connector_ddc_detect(struct drm_connector *connector)
> > >   {
> > >   	struct drm_device *dev = connector->dev;
> > > +	struct pci_dev *pdev = to_pci_dev(dev->dev);
> > >   	struct nouveau_encoder *nv_encoder = NULL, *found = NULL;
> > >   	struct drm_encoder *encoder;
> > >   	int ret;
> > > @@ -438,11 +439,11 @@ nouveau_connector_ddc_detect(struct drm_connector *connector)
> > >   				break;
> > >   			if (switcheroo_ddc)
> > > -				vga_switcheroo_lock_ddc(dev->pdev);
> > > +				vga_switcheroo_lock_ddc(pdev);
> > >   			if (nvkm_probe_i2c(nv_encoder->i2c, 0x50))
> > >   				found = nv_encoder;
> > >   			if (switcheroo_ddc)
> > > -				vga_switcheroo_unlock_ddc(dev->pdev);
> > > +				vga_switcheroo_unlock_ddc(pdev);
> > >   			break;
> > >   		}
> > > @@ -490,6 +491,7 @@ nouveau_connector_set_encoder(struct drm_connector *connector,
> > >   	struct nouveau_connector *nv_connector = nouveau_connector(connector);
> > >   	struct nouveau_drm *drm = nouveau_drm(connector->dev);
> > >   	struct drm_device *dev = connector->dev;
> > > +	struct pci_dev *pdev = to_pci_dev(dev->dev);
> > >   	if (nv_connector->detected_encoder == nv_encoder)
> > >   		return;
> > > @@ -511,8 +513,8 @@ nouveau_connector_set_encoder(struct drm_connector *connector,
> > >   		connector->doublescan_allowed = true;
> > >   		if (drm->client.device.info.family == NV_DEVICE_INFO_V0_KELVIN ||
> > >   		    (drm->client.device.info.family == NV_DEVICE_INFO_V0_CELSIUS &&
> > > -		     (dev->pdev->device & 0x0ff0) != 0x0100 &&
> > > -		     (dev->pdev->device & 0x0ff0) != 0x0150))
> > > +		     (pdev->device & 0x0ff0) != 0x0100 &&
> > > +		     (pdev->device & 0x0ff0) != 0x0150))
> > >   			/* HW is broken */
> > >   			connector->interlace_allowed = false;
> > >   		else
> > > diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c b/drivers/gpu/drm/nouveau/nouveau_drm.c
> > > index d141a5f004af..1b2169e9c295 100644
> > > --- a/drivers/gpu/drm/nouveau/nouveau_drm.c
> > > +++ b/drivers/gpu/drm/nouveau/nouveau_drm.c
> > > @@ -115,8 +115,8 @@ nouveau_platform_name(struct platform_device *platformdev)
> > >   static u64
> > >   nouveau_name(struct drm_device *dev)
> > >   {
> > > -	if (dev->pdev)
> > > -		return nouveau_pci_name(dev->pdev);
> > > +	if (dev_is_pci(dev->dev))
> > > +		return nouveau_pci_name(to_pci_dev(dev->dev));
> > >   	else
> > >   		return nouveau_platform_name(to_platform_device(dev->dev));
> > >   }
> > > @@ -760,7 +760,6 @@ static int nouveau_drm_probe(struct pci_dev *pdev,
> > >   	if (ret)
> > >   		goto fail_drm;
> > > -	drm_dev->pdev = pdev;
> > >   	pci_set_drvdata(pdev, drm_dev);
> > >   	ret = nouveau_drm_device_init(drm_dev);
> > > diff --git a/drivers/gpu/drm/nouveau/nouveau_fbcon.c b/drivers/gpu/drm/nouveau/nouveau_fbcon.c
> > > index 24ec5339efb4..4fc0fa696461 100644
> > > --- a/drivers/gpu/drm/nouveau/nouveau_fbcon.c
> > > +++ b/drivers/gpu/drm/nouveau/nouveau_fbcon.c
> > > @@ -396,7 +396,9 @@ nouveau_fbcon_create(struct drm_fb_helper *helper,
> > >   	NV_INFO(drm, "allocated %dx%d fb: 0x%llx, bo %p\n",
> > >   		fb->width, fb->height, nvbo->offset, nvbo);
> > > -	vga_switcheroo_client_fb_set(dev->pdev, info);
> > > +	if (dev_is_pci(dev->dev))
> > > +		vga_switcheroo_client_fb_set(to_pci_dev(dev->dev), info);
> > > +
> > >   	return 0;
> > >   out_unlock:
> > > @@ -548,7 +550,7 @@ nouveau_fbcon_init(struct drm_device *dev)
> > >   	int ret;
> > >   	if (!dev->mode_config.num_crtc ||
> > > -	    (dev->pdev->class >> 8) != PCI_CLASS_DISPLAY_VGA)
> > > +	    (to_pci_dev(dev->dev)->class >> 8) != PCI_CLASS_DISPLAY_VGA)
> > >   		return 0;
> > >   	fbcon = kzalloc(sizeof(struct nouveau_fbdev), GFP_KERNEL);
> > > diff --git a/drivers/gpu/drm/nouveau/nouveau_vga.c b/drivers/gpu/drm/nouveau/nouveau_vga.c
> > > index c85dd8afa3c3..7c4b374b3eca 100644
> > > --- a/drivers/gpu/drm/nouveau/nouveau_vga.c
> > > +++ b/drivers/gpu/drm/nouveau/nouveau_vga.c
> > > @@ -87,18 +87,20 @@ nouveau_vga_init(struct nouveau_drm *drm)
> > >   {
> > >   	struct drm_device *dev = drm->dev;
> > >   	bool runtime = nouveau_pmops_runtime();
> > > +	struct pci_dev *pdev;
> > >   	/* only relevant for PCI devices */
> > > -	if (!dev->pdev)
> > > +	if (!dev_is_pci(dev->dev))
> > >   		return;
> > > +	pdev = to_pci_dev(dev->dev);
> > > -	vga_client_register(dev->pdev, dev, NULL, nouveau_vga_set_decode);
> > > +	vga_client_register(pdev, dev, NULL, nouveau_vga_set_decode);
> > >   	/* don't register Thunderbolt eGPU with vga_switcheroo */
> > > -	if (pci_is_thunderbolt_attached(dev->pdev))
> > > +	if (pci_is_thunderbolt_attached(pdev))
> > >   		return;
> > > -	vga_switcheroo_register_client(dev->pdev, &nouveau_switcheroo_ops, runtime);
> > > +	vga_switcheroo_register_client(pdev, &nouveau_switcheroo_ops, runtime);
> > >   	if (runtime && nouveau_is_v1_dsm() && !nouveau_is_optimus())
> > >   		vga_switcheroo_init_domain_pm_ops(drm->dev->dev, &drm->vga_pm_domain);
> > > @@ -109,17 +111,19 @@ nouveau_vga_fini(struct nouveau_drm *drm)
> > >   {
> > >   	struct drm_device *dev = drm->dev;
> > >   	bool runtime = nouveau_pmops_runtime();
> > > +	struct pci_dev *pdev;
> > >   	/* only relevant for PCI devices */
> > > -	if (!dev->pdev)
> > > +	if (!dev_is_pci(dev->dev))
> > >   		return;
> > > +	pdev = to_pci_dev(dev->dev);
> > > -	vga_client_register(dev->pdev, NULL, NULL, NULL);
> > > +	vga_client_register(pdev, NULL, NULL, NULL);
> > > -	if (pci_is_thunderbolt_attached(dev->pdev))
> > > +	if (pci_is_thunderbolt_attached(pdev))
> > >   		return;
> > > -	vga_switcheroo_unregister_client(dev->pdev);
> > > +	vga_switcheroo_unregister_client(pdev);
> > >   	if (runtime && nouveau_is_v1_dsm() && !nouveau_is_optimus())
> > >   		vga_switcheroo_fini_domain_pm_ops(drm->dev->dev);
> > >   }
> > > -- 
> > > 2.29.2
> > > 
> > > _______________________________________________
> > > intel-gvt-dev mailing list
> > > intel-gvt-dev@lists.freedesktop.org
> > > https://lists.freedesktop.org/mailman/listinfo/intel-gvt-dev
> > > 
> > 
> > _______________________________________________
> > dri-devel mailing list
> > dri-devel@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/dri-devel
> > 
> 
> -- 
> Thomas Zimmermann
> Graphics Driver Developer
> SUSE Software Solutions Germany GmbH
> Maxfeldstr. 5, 90409 Nürnberg, Germany
> (HRB 36809, AG Nürnberg)
> Geschäftsführer: Felix Imendörffer
>
diff mbox series

Patch

diff --git a/drivers/gpu/drm/nouveau/dispnv04/arb.c b/drivers/gpu/drm/nouveau/dispnv04/arb.c
index 9d4a2d97507e..1d3542d6006b 100644
--- a/drivers/gpu/drm/nouveau/dispnv04/arb.c
+++ b/drivers/gpu/drm/nouveau/dispnv04/arb.c
@@ -200,16 +200,17 @@  nv04_update_arb(struct drm_device *dev, int VClk, int bpp,
 	int MClk = nouveau_hw_get_clock(dev, PLL_MEMORY);
 	int NVClk = nouveau_hw_get_clock(dev, PLL_CORE);
 	uint32_t cfg1 = nvif_rd32(device, NV04_PFB_CFG1);
+	struct pci_dev *pdev = to_pci_dev(dev->dev);
 
 	sim_data.pclk_khz = VClk;
 	sim_data.mclk_khz = MClk;
 	sim_data.nvclk_khz = NVClk;
 	sim_data.bpp = bpp;
 	sim_data.two_heads = nv_two_heads(dev);
-	if ((dev->pdev->device & 0xffff) == 0x01a0 /*CHIPSET_NFORCE*/ ||
-	    (dev->pdev->device & 0xffff) == 0x01f0 /*CHIPSET_NFORCE2*/) {
+	if ((pdev->device & 0xffff) == 0x01a0 /*CHIPSET_NFORCE*/ ||
+	    (pdev->device & 0xffff) == 0x01f0 /*CHIPSET_NFORCE2*/) {
 		uint32_t type;
-		int domain = pci_domain_nr(dev->pdev->bus);
+		int domain = pci_domain_nr(pdev->bus);
 
 		pci_read_config_dword(pci_get_domain_bus_and_slot(domain, 0, 1),
 				      0x7c, &type);
@@ -251,11 +252,12 @@  void
 nouveau_calc_arb(struct drm_device *dev, int vclk, int bpp, int *burst, int *lwm)
 {
 	struct nouveau_drm *drm = nouveau_drm(dev);
+	struct pci_dev *pdev = to_pci_dev(dev->dev);
 
 	if (drm->client.device.info.family < NV_DEVICE_INFO_V0_KELVIN)
 		nv04_update_arb(dev, vclk, bpp, burst, lwm);
-	else if ((dev->pdev->device & 0xfff0) == 0x0240 /*CHIPSET_C51*/ ||
-		 (dev->pdev->device & 0xfff0) == 0x03d0 /*CHIPSET_C512*/) {
+	else if ((pdev->device & 0xfff0) == 0x0240 /*CHIPSET_C51*/ ||
+		 (pdev->device & 0xfff0) == 0x03d0 /*CHIPSET_C512*/) {
 		*burst = 128;
 		*lwm = 0x0480;
 	} else
diff --git a/drivers/gpu/drm/nouveau/dispnv04/disp.h b/drivers/gpu/drm/nouveau/dispnv04/disp.h
index 5ace5e906949..f0a24126641a 100644
--- a/drivers/gpu/drm/nouveau/dispnv04/disp.h
+++ b/drivers/gpu/drm/nouveau/dispnv04/disp.h
@@ -130,7 +130,7 @@  static inline bool
 nv_two_heads(struct drm_device *dev)
 {
 	struct nouveau_drm *drm = nouveau_drm(dev);
-	const int impl = dev->pdev->device & 0x0ff0;
+	const int impl = to_pci_dev(dev->dev)->device & 0x0ff0;
 
 	if (drm->client.device.info.family >= NV_DEVICE_INFO_V0_CELSIUS && impl != 0x0100 &&
 	    impl != 0x0150 && impl != 0x01a0 && impl != 0x0200)
@@ -142,14 +142,14 @@  nv_two_heads(struct drm_device *dev)
 static inline bool
 nv_gf4_disp_arch(struct drm_device *dev)
 {
-	return nv_two_heads(dev) && (dev->pdev->device & 0x0ff0) != 0x0110;
+	return nv_two_heads(dev) && (to_pci_dev(dev->dev)->device & 0x0ff0) != 0x0110;
 }
 
 static inline bool
 nv_two_reg_pll(struct drm_device *dev)
 {
 	struct nouveau_drm *drm = nouveau_drm(dev);
-	const int impl = dev->pdev->device & 0x0ff0;
+	const int impl = to_pci_dev(dev->dev)->device & 0x0ff0;
 
 	if (impl == 0x0310 || impl == 0x0340 || drm->client.device.info.family >= NV_DEVICE_INFO_V0_CURIE)
 		return true;
@@ -160,9 +160,11 @@  static inline bool
 nv_match_device(struct drm_device *dev, unsigned device,
 		unsigned sub_vendor, unsigned sub_device)
 {
-	return dev->pdev->device == device &&
-		dev->pdev->subsystem_vendor == sub_vendor &&
-		dev->pdev->subsystem_device == sub_device;
+	struct pci_dev *pdev = to_pci_dev(dev->dev);
+
+	return pdev->device == device &&
+		pdev->subsystem_vendor == sub_vendor &&
+		pdev->subsystem_device == sub_device;
 }
 
 #include <subdev/bios/init.h>
diff --git a/drivers/gpu/drm/nouveau/dispnv04/hw.c b/drivers/gpu/drm/nouveau/dispnv04/hw.c
index b674d68ef28a..f7d35657aa64 100644
--- a/drivers/gpu/drm/nouveau/dispnv04/hw.c
+++ b/drivers/gpu/drm/nouveau/dispnv04/hw.c
@@ -214,14 +214,15 @@  nouveau_hw_pllvals_to_clk(struct nvkm_pll_vals *pv)
 int
 nouveau_hw_get_clock(struct drm_device *dev, enum nvbios_pll_type plltype)
 {
+	struct pci_dev *pdev = to_pci_dev(dev->dev);
 	struct nvkm_pll_vals pllvals;
 	int ret;
 	int domain;
 
-	domain = pci_domain_nr(dev->pdev->bus);
+	domain = pci_domain_nr(pdev->bus);
 
 	if (plltype == PLL_MEMORY &&
-	    (dev->pdev->device & 0x0ff0) == CHIPSET_NFORCE) {
+	    (pdev->device & 0x0ff0) == CHIPSET_NFORCE) {
 		uint32_t mpllP;
 		pci_read_config_dword(pci_get_domain_bus_and_slot(domain, 0, 3),
 				      0x6c, &mpllP);
@@ -232,7 +233,7 @@  nouveau_hw_get_clock(struct drm_device *dev, enum nvbios_pll_type plltype)
 		return 400000 / mpllP;
 	} else
 	if (plltype == PLL_MEMORY &&
-	    (dev->pdev->device & 0xff0) == CHIPSET_NFORCE2) {
+	    (pdev->device & 0xff0) == CHIPSET_NFORCE2) {
 		uint32_t clock;
 
 		pci_read_config_dword(pci_get_domain_bus_and_slot(domain, 0, 5),
@@ -309,6 +310,7 @@  void
 nouveau_hw_save_vga_fonts(struct drm_device *dev, bool save)
 {
 	struct nouveau_drm *drm = nouveau_drm(dev);
+	struct pci_dev *pdev = to_pci_dev(dev->dev);
 	uint8_t misc, gr4, gr5, gr6, seq2, seq4;
 	bool graphicsmode;
 	unsigned plane;
@@ -327,7 +329,7 @@  nouveau_hw_save_vga_fonts(struct drm_device *dev, bool save)
 	NV_INFO(drm, "%sing VGA fonts\n", save ? "Sav" : "Restor");
 
 	/* map first 64KiB of VRAM, holds VGA fonts etc */
-	iovram = ioremap(pci_resource_start(dev->pdev, 1), 65536);
+	iovram = ioremap(pci_resource_start(pdev, 1), 65536);
 	if (!iovram) {
 		NV_ERROR(drm, "Failed to map VRAM, "
 					"cannot save/restore VGA fonts.\n");
diff --git a/drivers/gpu/drm/nouveau/nouveau_abi16.c b/drivers/gpu/drm/nouveau/nouveau_abi16.c
index 9a5be6f32424..f08b31d84d4d 100644
--- a/drivers/gpu/drm/nouveau/nouveau_abi16.c
+++ b/drivers/gpu/drm/nouveau/nouveau_abi16.c
@@ -181,6 +181,7 @@  nouveau_abi16_ioctl_getparam(ABI16_IOCTL_ARGS)
 	struct nvif_device *device = &drm->client.device;
 	struct nvkm_gr *gr = nvxx_gr(device);
 	struct drm_nouveau_getparam *getparam = data;
+	struct pci_dev *pdev = to_pci_dev(dev->dev);
 
 	switch (getparam->param) {
 	case NOUVEAU_GETPARAM_CHIPSET_ID:
@@ -188,13 +189,13 @@  nouveau_abi16_ioctl_getparam(ABI16_IOCTL_ARGS)
 		break;
 	case NOUVEAU_GETPARAM_PCI_VENDOR:
 		if (device->info.platform != NV_DEVICE_INFO_V0_SOC)
-			getparam->value = dev->pdev->vendor;
+			getparam->value = pdev->vendor;
 		else
 			getparam->value = 0;
 		break;
 	case NOUVEAU_GETPARAM_PCI_DEVICE:
 		if (device->info.platform != NV_DEVICE_INFO_V0_SOC)
-			getparam->value = dev->pdev->device;
+			getparam->value = pdev->device;
 		else
 			getparam->value = 0;
 		break;
@@ -205,7 +206,7 @@  nouveau_abi16_ioctl_getparam(ABI16_IOCTL_ARGS)
 		case NV_DEVICE_INFO_V0_PCIE: getparam->value = 2; break;
 		case NV_DEVICE_INFO_V0_SOC : getparam->value = 3; break;
 		case NV_DEVICE_INFO_V0_IGP :
-			if (!pci_is_pcie(dev->pdev))
+			if (!pci_is_pcie(pdev))
 				getparam->value = 1;
 			else
 				getparam->value = 2;
diff --git a/drivers/gpu/drm/nouveau/nouveau_acpi.c b/drivers/gpu/drm/nouveau/nouveau_acpi.c
index 69a84d0197d0..7c15f6448428 100644
--- a/drivers/gpu/drm/nouveau/nouveau_acpi.c
+++ b/drivers/gpu/drm/nouveau/nouveau_acpi.c
@@ -377,7 +377,7 @@  nouveau_acpi_edid(struct drm_device *dev, struct drm_connector *connector)
 		return NULL;
 	}
 
-	handle = ACPI_HANDLE(&dev->pdev->dev);
+	handle = ACPI_HANDLE(dev->dev);
 	if (!handle)
 		return NULL;
 
diff --git a/drivers/gpu/drm/nouveau/nouveau_bios.c b/drivers/gpu/drm/nouveau/nouveau_bios.c
index d204ea8a5618..7cc683b8dc7a 100644
--- a/drivers/gpu/drm/nouveau/nouveau_bios.c
+++ b/drivers/gpu/drm/nouveau/nouveau_bios.c
@@ -110,6 +110,9 @@  static int call_lvds_manufacturer_script(struct drm_device *dev, struct dcb_outp
 	struct nvbios *bios = &drm->vbios;
 	uint8_t sub = bios->data[bios->fp.xlated_entry + script] + (bios->fp.link_c_increment && dcbent->or & DCB_OUTPUT_C ? 1 : 0);
 	uint16_t scriptofs = ROM16(bios->data[bios->init_script_tbls_ptr + sub * 2]);
+#ifdef __powerpc__
+	struct pci_dev *pdev = to_pci_dev(dev->dev);
+#endif
 
 	if (!bios->fp.xlated_entry || !sub || !scriptofs)
 		return -EINVAL;
@@ -123,8 +126,8 @@  static int call_lvds_manufacturer_script(struct drm_device *dev, struct dcb_outp
 #ifdef __powerpc__
 	/* Powerbook specific quirks */
 	if (script == LVDS_RESET &&
-	    (dev->pdev->device == 0x0179 || dev->pdev->device == 0x0189 ||
-	     dev->pdev->device == 0x0329))
+	    (pdev->device == 0x0179 || pdev->device == 0x0189 ||
+	     pdev->device == 0x0329))
 		nv_write_tmds(dev, dcbent->or, 0, 0x02, 0x72);
 #endif
 
@@ -2080,11 +2083,13 @@  nouveau_bios_init(struct drm_device *dev)
 {
 	struct nouveau_drm *drm = nouveau_drm(dev);
 	struct nvbios *bios = &drm->vbios;
+	struct pci_dev *pdev;
 	int ret;
 
 	/* only relevant for PCI devices */
-	if (!dev->pdev)
+	if (!dev_is_pci(dev->dev))
 		return 0;
+	pdev = to_pci_dev(dev->dev);
 
 	if (!NVInitVBIOS(dev))
 		return -ENODEV;
diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c b/drivers/gpu/drm/nouveau/nouveau_connector.c
index 8b4b3688c7ae..14c29e68db8f 100644
--- a/drivers/gpu/drm/nouveau/nouveau_connector.c
+++ b/drivers/gpu/drm/nouveau/nouveau_connector.c
@@ -411,6 +411,7 @@  static struct nouveau_encoder *
 nouveau_connector_ddc_detect(struct drm_connector *connector)
 {
 	struct drm_device *dev = connector->dev;
+	struct pci_dev *pdev = to_pci_dev(dev->dev);
 	struct nouveau_encoder *nv_encoder = NULL, *found = NULL;
 	struct drm_encoder *encoder;
 	int ret;
@@ -438,11 +439,11 @@  nouveau_connector_ddc_detect(struct drm_connector *connector)
 				break;
 
 			if (switcheroo_ddc)
-				vga_switcheroo_lock_ddc(dev->pdev);
+				vga_switcheroo_lock_ddc(pdev);
 			if (nvkm_probe_i2c(nv_encoder->i2c, 0x50))
 				found = nv_encoder;
 			if (switcheroo_ddc)
-				vga_switcheroo_unlock_ddc(dev->pdev);
+				vga_switcheroo_unlock_ddc(pdev);
 
 			break;
 		}
@@ -490,6 +491,7 @@  nouveau_connector_set_encoder(struct drm_connector *connector,
 	struct nouveau_connector *nv_connector = nouveau_connector(connector);
 	struct nouveau_drm *drm = nouveau_drm(connector->dev);
 	struct drm_device *dev = connector->dev;
+	struct pci_dev *pdev = to_pci_dev(dev->dev);
 
 	if (nv_connector->detected_encoder == nv_encoder)
 		return;
@@ -511,8 +513,8 @@  nouveau_connector_set_encoder(struct drm_connector *connector,
 		connector->doublescan_allowed = true;
 		if (drm->client.device.info.family == NV_DEVICE_INFO_V0_KELVIN ||
 		    (drm->client.device.info.family == NV_DEVICE_INFO_V0_CELSIUS &&
-		     (dev->pdev->device & 0x0ff0) != 0x0100 &&
-		     (dev->pdev->device & 0x0ff0) != 0x0150))
+		     (pdev->device & 0x0ff0) != 0x0100 &&
+		     (pdev->device & 0x0ff0) != 0x0150))
 			/* HW is broken */
 			connector->interlace_allowed = false;
 		else
diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c b/drivers/gpu/drm/nouveau/nouveau_drm.c
index d141a5f004af..1b2169e9c295 100644
--- a/drivers/gpu/drm/nouveau/nouveau_drm.c
+++ b/drivers/gpu/drm/nouveau/nouveau_drm.c
@@ -115,8 +115,8 @@  nouveau_platform_name(struct platform_device *platformdev)
 static u64
 nouveau_name(struct drm_device *dev)
 {
-	if (dev->pdev)
-		return nouveau_pci_name(dev->pdev);
+	if (dev_is_pci(dev->dev))
+		return nouveau_pci_name(to_pci_dev(dev->dev));
 	else
 		return nouveau_platform_name(to_platform_device(dev->dev));
 }
@@ -760,7 +760,6 @@  static int nouveau_drm_probe(struct pci_dev *pdev,
 	if (ret)
 		goto fail_drm;
 
-	drm_dev->pdev = pdev;
 	pci_set_drvdata(pdev, drm_dev);
 
 	ret = nouveau_drm_device_init(drm_dev);
diff --git a/drivers/gpu/drm/nouveau/nouveau_fbcon.c b/drivers/gpu/drm/nouveau/nouveau_fbcon.c
index 24ec5339efb4..4fc0fa696461 100644
--- a/drivers/gpu/drm/nouveau/nouveau_fbcon.c
+++ b/drivers/gpu/drm/nouveau/nouveau_fbcon.c
@@ -396,7 +396,9 @@  nouveau_fbcon_create(struct drm_fb_helper *helper,
 	NV_INFO(drm, "allocated %dx%d fb: 0x%llx, bo %p\n",
 		fb->width, fb->height, nvbo->offset, nvbo);
 
-	vga_switcheroo_client_fb_set(dev->pdev, info);
+	if (dev_is_pci(dev->dev))
+		vga_switcheroo_client_fb_set(to_pci_dev(dev->dev), info);
+
 	return 0;
 
 out_unlock:
@@ -548,7 +550,7 @@  nouveau_fbcon_init(struct drm_device *dev)
 	int ret;
 
 	if (!dev->mode_config.num_crtc ||
-	    (dev->pdev->class >> 8) != PCI_CLASS_DISPLAY_VGA)
+	    (to_pci_dev(dev->dev)->class >> 8) != PCI_CLASS_DISPLAY_VGA)
 		return 0;
 
 	fbcon = kzalloc(sizeof(struct nouveau_fbdev), GFP_KERNEL);
diff --git a/drivers/gpu/drm/nouveau/nouveau_vga.c b/drivers/gpu/drm/nouveau/nouveau_vga.c
index c85dd8afa3c3..7c4b374b3eca 100644
--- a/drivers/gpu/drm/nouveau/nouveau_vga.c
+++ b/drivers/gpu/drm/nouveau/nouveau_vga.c
@@ -87,18 +87,20 @@  nouveau_vga_init(struct nouveau_drm *drm)
 {
 	struct drm_device *dev = drm->dev;
 	bool runtime = nouveau_pmops_runtime();
+	struct pci_dev *pdev;
 
 	/* only relevant for PCI devices */
-	if (!dev->pdev)
+	if (!dev_is_pci(dev->dev))
 		return;
+	pdev = to_pci_dev(dev->dev);
 
-	vga_client_register(dev->pdev, dev, NULL, nouveau_vga_set_decode);
+	vga_client_register(pdev, dev, NULL, nouveau_vga_set_decode);
 
 	/* don't register Thunderbolt eGPU with vga_switcheroo */
-	if (pci_is_thunderbolt_attached(dev->pdev))
+	if (pci_is_thunderbolt_attached(pdev))
 		return;
 
-	vga_switcheroo_register_client(dev->pdev, &nouveau_switcheroo_ops, runtime);
+	vga_switcheroo_register_client(pdev, &nouveau_switcheroo_ops, runtime);
 
 	if (runtime && nouveau_is_v1_dsm() && !nouveau_is_optimus())
 		vga_switcheroo_init_domain_pm_ops(drm->dev->dev, &drm->vga_pm_domain);
@@ -109,17 +111,19 @@  nouveau_vga_fini(struct nouveau_drm *drm)
 {
 	struct drm_device *dev = drm->dev;
 	bool runtime = nouveau_pmops_runtime();
+	struct pci_dev *pdev;
 
 	/* only relevant for PCI devices */
-	if (!dev->pdev)
+	if (!dev_is_pci(dev->dev))
 		return;
+	pdev = to_pci_dev(dev->dev);
 
-	vga_client_register(dev->pdev, NULL, NULL, NULL);
+	vga_client_register(pdev, NULL, NULL, NULL);
 
-	if (pci_is_thunderbolt_attached(dev->pdev))
+	if (pci_is_thunderbolt_attached(pdev))
 		return;
 
-	vga_switcheroo_unregister_client(dev->pdev);
+	vga_switcheroo_unregister_client(pdev);
 	if (runtime && nouveau_is_v1_dsm() && !nouveau_is_optimus())
 		vga_switcheroo_fini_domain_pm_ops(drm->dev->dev);
 }