Starting from Linux kernel 3.0, pci probing is automatic with: pci_register_driver(&pci_driver);
Linux kernel 2.6 and older, programmers had to create a character device, and walk through the PCI list, select appropriate PCI and doing work with it. Can you tell me how the steps of this procedure, why the initialization of a character device is need before working with the PCI driver and why it is unnecessary to register a character driver anymore.
I think you refer to linux 2.4 or older. Current kernel device model with busses, devices and drivers has always been part of the 2.6 series.
What is your question exactly ?
A list of PCI devices is made at boot time. Then when a driver is registered, the
pci_driverstructureid_tablefield is used to matchwith the devices present on the bus. Then the pci_driver probe function is called with a pointer to the device structure that matched.
So it is not very different from 2.4, except all the probing, matching driver and devices, etc… is handled by the “device core” and not by the pci driver.
For a detailed explanation, see this PDF and this page