Hi Uwe, On Tue Apr 28, 2026 at 7:18 PM CEST, Uwe Kleine-König (The Capable Hub) wrote: > ... and PCI device helpers. > > The various struct pci_device_id arrays were initialized mostly by one > the PCI_DEVICE macros and then list expressions. The latter isn't easily > readable if you're not into PCI. Using named initializers is more > explicit and thus easier to parse. > > Also use PCI_DEVICE* helper macros to assign .vendor, .device, > .subvendor and .subdevice where appropriate and skip explicit > assignments of 0 (which the compiler takes care of). > > The secret plan is to make struct pci_device_id::driver_data an > anonymous union (similar to > https://lore.kernel.org/all/cover.1776579304.git.u.kleine-koenig@baylibre.com/) > and that requires named initializers. But it's also a nice cleanup on > its own. > > This change doesn't introduce changes to the compiled pci_device_id > arrays. Tested on x86 and arm64. > > Signed-off-by: Uwe Kleine-König (The Capable Hub) > --- > Hello, > > the mentioned follow-up quest allows to do > > PCI_DEVICE(0x1571, 0xa203), > + .driver_data = (kernel_ulong_t)&card_info_10mbit, > - .driver_data_ptr = &card_info_10mbit, > > which gets rid of a bunch of casts and so brings a little bit more type > safety. This patch is a preparation for that. > > I handled all of drivers/net/ in a single patch, please tell me if I > should split by subsystem. > > Best regards > Uwe > --- [...] > diff --git a/drivers/net/can/m_can/m_can_pci.c b/drivers/net/can/m_can/m_can_pci.c > index eb31ed1f9644..cb9335c1d3ea 100644 > --- a/drivers/net/can/m_can/m_can_pci.c > +++ b/drivers/net/can/m_can/m_can_pci.c > @@ -183,9 +183,9 @@ static SIMPLE_DEV_PM_OPS(m_can_pci_pm_ops, > m_can_pci_suspend, m_can_pci_resume); > > static const struct pci_device_id m_can_pci_id_table[] = { > - { PCI_VDEVICE(INTEL, 0x4bc1), M_CAN_CLOCK_FREQ_EHL, }, > - { PCI_VDEVICE(INTEL, 0x4bc2), M_CAN_CLOCK_FREQ_EHL, }, > - { } /* Terminating Entry */ > + { PCI_VDEVICE(INTEL, 0x4bc1), .driver_data = M_CAN_CLOCK_FREQ_EHL, }, > + { PCI_VDEVICE(INTEL, 0x4bc2), .driver_data = M_CAN_CLOCK_FREQ_EHL, }, > + { } /* terminating entry */ M_CAN_CLOCK_FREQ_EHL is basically hardcoded for all PCI devices since 2020. I don't think we need this driver data at all and can just drop it and use M_CAN_CLOCK_FREQ_EHL directly in the code for the frequency. Once a real new PCI device gets added we can see if and what driver_data is needed. Best Markus