The PCI-IFIFD CAN implementation (drivers/net/can) of the linux mainline kernel (link) is using the platform_driver structure instead of the pci_driver structure.
I have some trouble differentiating between those two structures. Therefor I informed myself:
- platform driver vs normal device driver
- platform_driver
- pci_driver
According to the first source:
Unlike PCI or USB devices, I2C devices are not enumerated at the hardware level (at run time). Instead, the software must know (at compile time) which devices are connected on each I2C bus segment. So USB and PCI are not platform devices.
If this is the case, why is the PCI ififd implementation using the platform_driver struct?
Additionally how can someone use this driver for pci-cards using ififd?