On Wed, Aug 5, 2009 at 9:39 PM, kevin granade <kevin.granade@xxxxxxxxx> wrote:
I noticed a comment calling for converting drivers from pci_find_device() to pci_get_device() as a beginner kernel project on lkml and started looking into it. What I have been able to discern about the issue is the following:
Gleaned from code/documentation/previous posts on the subject:
The only remaining user of pci_find_device() seems to be parts of the HiSax isdn driver.
pci_find_device() is the same as pci_get_device(), but actively avoids holding a lock/reference count on the pci_dev that it returns.
as a result pci_get_device() requires pci_dev_put() to be called on a successful get in order to maintain correct lock/reference count semantics.
After Re-reading the PCI chapter of LDD3:
pci_get_device() is also deprecated, recommended init is creating a pci_device struct and mapping probe function etc. into it.
Finally noticed when I was setting up my config to build the driver:
The entire isdn4linux framework the hisax driver is based on is also deprecated, recommended interface is CAPI.
Additional information:
I don't have the associated hardware, just interested in doing some hacking.
There seem to be three paths forward for updating:
find_pci_device()->get_pci_device() for initializing drivers
find_pci_device()->struct pci_device for initializing drivers
port driver from isdn4linux to CAPI
Which of these (if any) are both worth doing and a reasonable "kernel newbie" project?
To somewhat answer my own question, it seems that a migration of some kind is underway and being discussed on the isdn4linux list, so I think the correct answer is to subscribe to that list and lurk a bit, and read some more archives.
Thanks,
Kevin