Re: [Linux-fbdev-devel] [PATCH 3/9] viafb: VIA Frame Buffer DeviceDriver

From: Alan Cox
Date: Wed May 07 2008 - 11:38:53 EST


> + /* Indentify GFX Chip Name */
> + pdev =
> + (struct pci_dev *)pci_get_device(PCI_VIA_VENDOR_ID,
> + UNICHROME_CLE266_DID, NULL);
> + if (pdev != NULL)
> + chip_info.gfx_chip_name = UNICHROME_CLE266;
> +
> + pdev =
> + (struct pci_dev *)pci_get_device(PCI_VIA_VENDOR_ID,
> + UNICHROME_K400_DID, NULL);

pci_get_device takes a reference so you need to do a pci_dev_put() on the
result if you have finished with it. Alternatively you could make use of
pci_dev_present()

> + case UNICHROME_CLE266:
> + pdev =
> + (struct pci_dev *)pci_get_device(PCI_VIA_VENDOR_ID,
> + UNICHROME_CLE266_DID,

Similar issue here.


> +void get_fb_info(unsigned int *fb_base, unsigned int *fb_len)
> +{
> + struct pci_dev *pdev = NULL;
> +
> + switch (chip_info.gfx_chip_name) {
> + case UNICHROME_CLE266:
> + pdev =
> + (struct pci_dev *)pci_get_device(PCI_VIA_VENDOR_ID,
> + UNICHROME_CLE266_DID,
> + NULL);

And here

So it might be better to for example use an array of types and keep the
array reference in the probe function pci_device_id field (which is how a
lot of stuff like libata drivers avoid doing messy lookups)

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/