drm/nouveau: Remove references to struct drm_device.pdev

Using struct drm_device.pdev is deprecated. Convert nouveau to struct
drm_device.dev. No functional changes.

v3:
	* fix nv04_dfp_update_backlight() as well (Jeremy)

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Jeremy Cline <jcline@redhat.com>
Cc: Ben Skeggs <bskeggs@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210107080748.4768-8-tzimmermann@suse.de
This commit is contained in:
Thomas Zimmermann 2021-01-07 09:07:47 +01:00
parent 4d4dad21cc
commit 4c0d42f7ba
11 changed files with 64 additions and 44 deletions

View File

@ -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 MClk = nouveau_hw_get_clock(dev, PLL_MEMORY);
int NVClk = nouveau_hw_get_clock(dev, PLL_CORE); int NVClk = nouveau_hw_get_clock(dev, PLL_CORE);
uint32_t cfg1 = nvif_rd32(device, NV04_PFB_CFG1); 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.pclk_khz = VClk;
sim_data.mclk_khz = MClk; sim_data.mclk_khz = MClk;
sim_data.nvclk_khz = NVClk; sim_data.nvclk_khz = NVClk;
sim_data.bpp = bpp; sim_data.bpp = bpp;
sim_data.two_heads = nv_two_heads(dev); sim_data.two_heads = nv_two_heads(dev);
if ((dev->pdev->device & 0xffff) == 0x01a0 /*CHIPSET_NFORCE*/ || if ((pdev->device & 0xffff) == 0x01a0 /*CHIPSET_NFORCE*/ ||
(dev->pdev->device & 0xffff) == 0x01f0 /*CHIPSET_NFORCE2*/) { (pdev->device & 0xffff) == 0x01f0 /*CHIPSET_NFORCE2*/) {
uint32_t type; 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), pci_read_config_dword(pci_get_domain_bus_and_slot(domain, 0, 1),
0x7c, &type); 0x7c, &type);
@ -251,11 +252,12 @@ void
nouveau_calc_arb(struct drm_device *dev, int vclk, int bpp, int *burst, int *lwm) nouveau_calc_arb(struct drm_device *dev, int vclk, int bpp, int *burst, int *lwm)
{ {
struct nouveau_drm *drm = nouveau_drm(dev); 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) if (drm->client.device.info.family < NV_DEVICE_INFO_V0_KELVIN)
nv04_update_arb(dev, vclk, bpp, burst, lwm); nv04_update_arb(dev, vclk, bpp, burst, lwm);
else if ((dev->pdev->device & 0xfff0) == 0x0240 /*CHIPSET_C51*/ || else if ((pdev->device & 0xfff0) == 0x0240 /*CHIPSET_C51*/ ||
(dev->pdev->device & 0xfff0) == 0x03d0 /*CHIPSET_C512*/) { (pdev->device & 0xfff0) == 0x03d0 /*CHIPSET_C512*/) {
*burst = 128; *burst = 128;
*lwm = 0x0480; *lwm = 0x0480;
} else } else

View File

@ -488,12 +488,13 @@ static void nv04_dfp_update_backlight(struct drm_encoder *encoder, int mode)
#ifdef __powerpc__ #ifdef __powerpc__
struct drm_device *dev = encoder->dev; struct drm_device *dev = encoder->dev;
struct nvif_object *device = &nouveau_drm(dev)->client.device.object; struct nvif_object *device = &nouveau_drm(dev)->client.device.object;
struct pci_dev *pdev = to_pci_dev(dev->dev);
/* BIOS scripts usually take care of the backlight, thanks /* BIOS scripts usually take care of the backlight, thanks
* Apple for your consistency. * Apple for your consistency.
*/ */
if (dev->pdev->device == 0x0174 || dev->pdev->device == 0x0179 || if (pdev->device == 0x0174 || pdev->device == 0x0179 ||
dev->pdev->device == 0x0189 || dev->pdev->device == 0x0329) { pdev->device == 0x0189 || pdev->device == 0x0329) {
if (mode == DRM_MODE_DPMS_ON) { if (mode == DRM_MODE_DPMS_ON) {
nvif_mask(device, NV_PBUS_DEBUG_DUALHEAD_CTL, 1 << 31, 1 << 31); nvif_mask(device, NV_PBUS_DEBUG_DUALHEAD_CTL, 1 << 31, 1 << 31);
nvif_mask(device, NV_PCRTC_GPIO_EXT, 3, 1); nvif_mask(device, NV_PCRTC_GPIO_EXT, 3, 1);

View File

@ -130,7 +130,7 @@ static inline bool
nv_two_heads(struct drm_device *dev) nv_two_heads(struct drm_device *dev)
{ {
struct nouveau_drm *drm = nouveau_drm(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 && if (drm->client.device.info.family >= NV_DEVICE_INFO_V0_CELSIUS && impl != 0x0100 &&
impl != 0x0150 && impl != 0x01a0 && impl != 0x0200) impl != 0x0150 && impl != 0x01a0 && impl != 0x0200)
@ -142,14 +142,14 @@ nv_two_heads(struct drm_device *dev)
static inline bool static inline bool
nv_gf4_disp_arch(struct drm_device *dev) 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 static inline bool
nv_two_reg_pll(struct drm_device *dev) nv_two_reg_pll(struct drm_device *dev)
{ {
struct nouveau_drm *drm = nouveau_drm(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) if (impl == 0x0310 || impl == 0x0340 || drm->client.device.info.family >= NV_DEVICE_INFO_V0_CURIE)
return true; return true;
@ -160,9 +160,11 @@ static inline bool
nv_match_device(struct drm_device *dev, unsigned device, nv_match_device(struct drm_device *dev, unsigned device,
unsigned sub_vendor, unsigned sub_device) unsigned sub_vendor, unsigned sub_device)
{ {
return dev->pdev->device == device && struct pci_dev *pdev = to_pci_dev(dev->dev);
dev->pdev->subsystem_vendor == sub_vendor &&
dev->pdev->subsystem_device == sub_device; return pdev->device == device &&
pdev->subsystem_vendor == sub_vendor &&
pdev->subsystem_device == sub_device;
} }
#include <subdev/bios/init.h> #include <subdev/bios/init.h>

View File

@ -214,14 +214,15 @@ nouveau_hw_pllvals_to_clk(struct nvkm_pll_vals *pv)
int int
nouveau_hw_get_clock(struct drm_device *dev, enum nvbios_pll_type plltype) 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; struct nvkm_pll_vals pllvals;
int ret; int ret;
int domain; int domain;
domain = pci_domain_nr(dev->pdev->bus); domain = pci_domain_nr(pdev->bus);
if (plltype == PLL_MEMORY && if (plltype == PLL_MEMORY &&
(dev->pdev->device & 0x0ff0) == CHIPSET_NFORCE) { (pdev->device & 0x0ff0) == CHIPSET_NFORCE) {
uint32_t mpllP; uint32_t mpllP;
pci_read_config_dword(pci_get_domain_bus_and_slot(domain, 0, 3), pci_read_config_dword(pci_get_domain_bus_and_slot(domain, 0, 3),
0x6c, &mpllP); 0x6c, &mpllP);
@ -232,7 +233,7 @@ nouveau_hw_get_clock(struct drm_device *dev, enum nvbios_pll_type plltype)
return 400000 / mpllP; return 400000 / mpllP;
} else } else
if (plltype == PLL_MEMORY && if (plltype == PLL_MEMORY &&
(dev->pdev->device & 0xff0) == CHIPSET_NFORCE2) { (pdev->device & 0xff0) == CHIPSET_NFORCE2) {
uint32_t clock; uint32_t clock;
pci_read_config_dword(pci_get_domain_bus_and_slot(domain, 0, 5), 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) nouveau_hw_save_vga_fonts(struct drm_device *dev, bool save)
{ {
struct nouveau_drm *drm = nouveau_drm(dev); struct nouveau_drm *drm = nouveau_drm(dev);
struct pci_dev *pdev = to_pci_dev(dev->dev);
uint8_t misc, gr4, gr5, gr6, seq2, seq4; uint8_t misc, gr4, gr5, gr6, seq2, seq4;
bool graphicsmode; bool graphicsmode;
unsigned plane; 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"); NV_INFO(drm, "%sing VGA fonts\n", save ? "Sav" : "Restor");
/* map first 64KiB of VRAM, holds VGA fonts etc */ /* 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) { if (!iovram) {
NV_ERROR(drm, "Failed to map VRAM, " NV_ERROR(drm, "Failed to map VRAM, "
"cannot save/restore VGA fonts.\n"); "cannot save/restore VGA fonts.\n");

View File

@ -181,6 +181,7 @@ nouveau_abi16_ioctl_getparam(ABI16_IOCTL_ARGS)
struct nvif_device *device = &drm->client.device; struct nvif_device *device = &drm->client.device;
struct nvkm_gr *gr = nvxx_gr(device); struct nvkm_gr *gr = nvxx_gr(device);
struct drm_nouveau_getparam *getparam = data; struct drm_nouveau_getparam *getparam = data;
struct pci_dev *pdev = to_pci_dev(dev->dev);
switch (getparam->param) { switch (getparam->param) {
case NOUVEAU_GETPARAM_CHIPSET_ID: case NOUVEAU_GETPARAM_CHIPSET_ID:
@ -188,13 +189,13 @@ nouveau_abi16_ioctl_getparam(ABI16_IOCTL_ARGS)
break; break;
case NOUVEAU_GETPARAM_PCI_VENDOR: case NOUVEAU_GETPARAM_PCI_VENDOR:
if (device->info.platform != NV_DEVICE_INFO_V0_SOC) if (device->info.platform != NV_DEVICE_INFO_V0_SOC)
getparam->value = dev->pdev->vendor; getparam->value = pdev->vendor;
else else
getparam->value = 0; getparam->value = 0;
break; break;
case NOUVEAU_GETPARAM_PCI_DEVICE: case NOUVEAU_GETPARAM_PCI_DEVICE:
if (device->info.platform != NV_DEVICE_INFO_V0_SOC) if (device->info.platform != NV_DEVICE_INFO_V0_SOC)
getparam->value = dev->pdev->device; getparam->value = pdev->device;
else else
getparam->value = 0; getparam->value = 0;
break; 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_PCIE: getparam->value = 2; break;
case NV_DEVICE_INFO_V0_SOC : getparam->value = 3; break; case NV_DEVICE_INFO_V0_SOC : getparam->value = 3; break;
case NV_DEVICE_INFO_V0_IGP : case NV_DEVICE_INFO_V0_IGP :
if (!pci_is_pcie(dev->pdev)) if (!pci_is_pcie(pdev))
getparam->value = 1; getparam->value = 1;
else else
getparam->value = 2; getparam->value = 2;

View File

@ -377,7 +377,7 @@ nouveau_acpi_edid(struct drm_device *dev, struct drm_connector *connector)
return NULL; return NULL;
} }
handle = ACPI_HANDLE(&dev->pdev->dev); handle = ACPI_HANDLE(dev->dev);
if (!handle) if (!handle)
return NULL; return NULL;

View File

@ -110,6 +110,9 @@ static int call_lvds_manufacturer_script(struct drm_device *dev, struct dcb_outp
struct nvbios *bios = &drm->vbios; 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); 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]); 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) if (!bios->fp.xlated_entry || !sub || !scriptofs)
return -EINVAL; return -EINVAL;
@ -123,8 +126,8 @@ static int call_lvds_manufacturer_script(struct drm_device *dev, struct dcb_outp
#ifdef __powerpc__ #ifdef __powerpc__
/* Powerbook specific quirks */ /* Powerbook specific quirks */
if (script == LVDS_RESET && if (script == LVDS_RESET &&
(dev->pdev->device == 0x0179 || dev->pdev->device == 0x0189 || (pdev->device == 0x0179 || pdev->device == 0x0189 ||
dev->pdev->device == 0x0329)) pdev->device == 0x0329))
nv_write_tmds(dev, dcbent->or, 0, 0x02, 0x72); nv_write_tmds(dev, dcbent->or, 0, 0x02, 0x72);
#endif #endif
@ -2080,11 +2083,13 @@ nouveau_bios_init(struct drm_device *dev)
{ {
struct nouveau_drm *drm = nouveau_drm(dev); struct nouveau_drm *drm = nouveau_drm(dev);
struct nvbios *bios = &drm->vbios; struct nvbios *bios = &drm->vbios;
struct pci_dev *pdev;
int ret; int ret;
/* only relevant for PCI devices */ /* only relevant for PCI devices */
if (!dev->pdev) if (!dev_is_pci(dev->dev))
return 0; return 0;
pdev = to_pci_dev(dev->dev);
if (!NVInitVBIOS(dev)) if (!NVInitVBIOS(dev))
return -ENODEV; return -ENODEV;

View File

@ -411,6 +411,7 @@ static struct nouveau_encoder *
nouveau_connector_ddc_detect(struct drm_connector *connector) nouveau_connector_ddc_detect(struct drm_connector *connector)
{ {
struct drm_device *dev = connector->dev; struct drm_device *dev = connector->dev;
struct pci_dev *pdev = to_pci_dev(dev->dev);
struct nouveau_encoder *nv_encoder = NULL, *found = NULL; struct nouveau_encoder *nv_encoder = NULL, *found = NULL;
struct drm_encoder *encoder; struct drm_encoder *encoder;
int ret; int ret;
@ -438,11 +439,11 @@ nouveau_connector_ddc_detect(struct drm_connector *connector)
break; break;
if (switcheroo_ddc) if (switcheroo_ddc)
vga_switcheroo_lock_ddc(dev->pdev); vga_switcheroo_lock_ddc(pdev);
if (nvkm_probe_i2c(nv_encoder->i2c, 0x50)) if (nvkm_probe_i2c(nv_encoder->i2c, 0x50))
found = nv_encoder; found = nv_encoder;
if (switcheroo_ddc) if (switcheroo_ddc)
vga_switcheroo_unlock_ddc(dev->pdev); vga_switcheroo_unlock_ddc(pdev);
break; break;
} }
@ -490,6 +491,7 @@ nouveau_connector_set_encoder(struct drm_connector *connector,
struct nouveau_connector *nv_connector = nouveau_connector(connector); struct nouveau_connector *nv_connector = nouveau_connector(connector);
struct nouveau_drm *drm = nouveau_drm(connector->dev); struct nouveau_drm *drm = nouveau_drm(connector->dev);
struct drm_device *dev = connector->dev; struct drm_device *dev = connector->dev;
struct pci_dev *pdev = to_pci_dev(dev->dev);
if (nv_connector->detected_encoder == nv_encoder) if (nv_connector->detected_encoder == nv_encoder)
return; return;
@ -511,8 +513,8 @@ nouveau_connector_set_encoder(struct drm_connector *connector,
connector->doublescan_allowed = true; connector->doublescan_allowed = true;
if (drm->client.device.info.family == NV_DEVICE_INFO_V0_KELVIN || if (drm->client.device.info.family == NV_DEVICE_INFO_V0_KELVIN ||
(drm->client.device.info.family == NV_DEVICE_INFO_V0_CELSIUS && (drm->client.device.info.family == NV_DEVICE_INFO_V0_CELSIUS &&
(dev->pdev->device & 0x0ff0) != 0x0100 && (pdev->device & 0x0ff0) != 0x0100 &&
(dev->pdev->device & 0x0ff0) != 0x0150)) (pdev->device & 0x0ff0) != 0x0150))
/* HW is broken */ /* HW is broken */
connector->interlace_allowed = false; connector->interlace_allowed = false;
else else

View File

@ -115,8 +115,8 @@ nouveau_platform_name(struct platform_device *platformdev)
static u64 static u64
nouveau_name(struct drm_device *dev) nouveau_name(struct drm_device *dev)
{ {
if (dev->pdev) if (dev_is_pci(dev->dev))
return nouveau_pci_name(dev->pdev); return nouveau_pci_name(to_pci_dev(dev->dev));
else else
return nouveau_platform_name(to_platform_device(dev->dev)); return nouveau_platform_name(to_platform_device(dev->dev));
} }
@ -760,7 +760,6 @@ static int nouveau_drm_probe(struct pci_dev *pdev,
if (ret) if (ret)
goto fail_drm; goto fail_drm;
drm_dev->pdev = pdev;
pci_set_drvdata(pdev, drm_dev); pci_set_drvdata(pdev, drm_dev);
ret = nouveau_drm_device_init(drm_dev); ret = nouveau_drm_device_init(drm_dev);

View File

@ -396,7 +396,9 @@ nouveau_fbcon_create(struct drm_fb_helper *helper,
NV_INFO(drm, "allocated %dx%d fb: 0x%llx, bo %p\n", NV_INFO(drm, "allocated %dx%d fb: 0x%llx, bo %p\n",
fb->width, fb->height, nvbo->offset, nvbo); 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; return 0;
out_unlock: out_unlock:
@ -548,7 +550,7 @@ nouveau_fbcon_init(struct drm_device *dev)
int ret; int ret;
if (!dev->mode_config.num_crtc || 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; return 0;
fbcon = kzalloc(sizeof(struct nouveau_fbdev), GFP_KERNEL); fbcon = kzalloc(sizeof(struct nouveau_fbdev), GFP_KERNEL);

View File

@ -87,18 +87,20 @@ nouveau_vga_init(struct nouveau_drm *drm)
{ {
struct drm_device *dev = drm->dev; struct drm_device *dev = drm->dev;
bool runtime = nouveau_pmops_runtime(); bool runtime = nouveau_pmops_runtime();
struct pci_dev *pdev;
/* only relevant for PCI devices */ /* only relevant for PCI devices */
if (!dev->pdev) if (!dev_is_pci(dev->dev))
return; 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 */ /* don't register Thunderbolt eGPU with vga_switcheroo */
if (pci_is_thunderbolt_attached(dev->pdev)) if (pci_is_thunderbolt_attached(pdev))
return; 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()) if (runtime && nouveau_is_v1_dsm() && !nouveau_is_optimus())
vga_switcheroo_init_domain_pm_ops(drm->dev->dev, &drm->vga_pm_domain); 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; struct drm_device *dev = drm->dev;
bool runtime = nouveau_pmops_runtime(); bool runtime = nouveau_pmops_runtime();
struct pci_dev *pdev;
/* only relevant for PCI devices */ /* only relevant for PCI devices */
if (!dev->pdev) if (!dev_is_pci(dev->dev))
return;
pdev = to_pci_dev(dev->dev);
vga_client_register(pdev, NULL, NULL, NULL);
if (pci_is_thunderbolt_attached(pdev))
return; return;
vga_client_register(dev->pdev, NULL, NULL, NULL); vga_switcheroo_unregister_client(pdev);
if (pci_is_thunderbolt_attached(dev->pdev))
return;
vga_switcheroo_unregister_client(dev->pdev);
if (runtime && nouveau_is_v1_dsm() && !nouveau_is_optimus()) if (runtime && nouveau_is_v1_dsm() && !nouveau_is_optimus())
vga_switcheroo_fini_domain_pm_ops(drm->dev->dev); vga_switcheroo_fini_domain_pm_ops(drm->dev->dev);
} }