* [PATCH] parport: Consistently define pci_device_ids using named initializers
@ 2026-04-29 16:14 Uwe Kleine-König (The Capable Hub)
2026-06-10 16:53 ` Uwe Kleine-König (The Capable Hub)
0 siblings, 1 reply; 2+ messages in thread
From: Uwe Kleine-König (The Capable Hub) @ 2026-04-29 16:14 UTC (permalink / raw)
To: Sudip Mukherjee; +Cc: Markus Schneider-Pargmann, linux-kernel
... and PCI device helpers.
The various struct pci_device_id arrays were initialized mostly by list
expressions. This isn't easily readable if you're not into PCI.
Use PCI_DEVICE* helper macros and named initializers which is more
explicit and thus easier to parse. Also skip explicit assignments of 0
(which the compiler then 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) <u.kleine-koenig@baylibre.com>
---
Hello,
the mentioned follow-up quest isn't relevant to the two parport drivers.
For other drivers it allows to do
- { PCI_VDEVICE(TTI, 0x3220), .driver_data = (kernel_ulong_t)&hptiop_itl_ops },
+ { PCI_VDEVICE(TTI, 0x3220), .driver_data_ptr = &hptiop_itl_ops },
which gets rid of a bunch of casts and so brings a little bit more type
safety. This patch is a preparation for that.
Best regards
Uwe
drivers/parport/parport_pc.c | 204 +++++++++++-----------
drivers/parport/parport_serial.c | 280 ++++++++++++++++---------------
2 files changed, 257 insertions(+), 227 deletions(-)
diff --git a/drivers/parport/parport_pc.c b/drivers/parport/parport_pc.c
index c75abdd8ef25..bccfe75fe6e5 100644
--- a/drivers/parport/parport_pc.c
+++ b/drivers/parport/parport_pc.c
@@ -2745,116 +2745,128 @@ static struct parport_pc_pci {
static const struct pci_device_id parport_pc_pci_tbl[] = {
/* Super-IO onboard chips */
- { 0x1106, 0x0686, PCI_ANY_ID, PCI_ANY_ID, 0, 0, sio_via_686a },
- { 0x1106, 0x8231, PCI_ANY_ID, PCI_ANY_ID, 0, 0, sio_via_8231 },
- { PCI_VENDOR_ID_ITE, PCI_DEVICE_ID_ITE_8872,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, sio_ite_8872 },
+ { PCI_DEVICE(0x1106, 0x0686),
+ .driver_data = sio_via_686a },
+ { PCI_DEVICE(0x1106, 0x8231),
+ .driver_data = sio_via_8231 },
+ { PCI_VDEVICE(ITE, PCI_DEVICE_ID_ITE_8872),
+ .driver_data = sio_ite_8872 },
/* PCI cards */
- { PCI_VENDOR_ID_SIIG, PCI_DEVICE_ID_SIIG_1P_10x,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, siig_1p_10x },
- { PCI_VENDOR_ID_SIIG, PCI_DEVICE_ID_SIIG_2P_10x,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, siig_2p_10x },
- { PCI_VENDOR_ID_SIIG, PCI_DEVICE_ID_SIIG_1P_20x,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, siig_1p_20x },
- { PCI_VENDOR_ID_SIIG, PCI_DEVICE_ID_SIIG_2P_20x,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, siig_2p_20x },
- { PCI_VENDOR_ID_LAVA, PCI_DEVICE_ID_LAVA_PARALLEL,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, lava_parallel },
- { PCI_VENDOR_ID_LAVA, PCI_DEVICE_ID_LAVA_DUAL_PAR_A,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, lava_parallel_dual_a },
- { PCI_VENDOR_ID_LAVA, PCI_DEVICE_ID_LAVA_DUAL_PAR_B,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, lava_parallel_dual_b },
- { PCI_VENDOR_ID_LAVA, PCI_DEVICE_ID_LAVA_BOCA_IOPPAR,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, boca_ioppar },
- { PCI_VENDOR_ID_PLX, PCI_DEVICE_ID_PLX_9050,
- PCI_SUBVENDOR_ID_EXSYS, PCI_SUBDEVICE_ID_EXSYS_4014, 0, 0, plx_9050 },
+ { PCI_VDEVICE(SIIG, PCI_DEVICE_ID_SIIG_1P_10x),
+ .driver_data = siig_1p_10x },
+ { PCI_VDEVICE(SIIG, PCI_DEVICE_ID_SIIG_2P_10x),
+ .driver_data = siig_2p_10x },
+ { PCI_VDEVICE(SIIG, PCI_DEVICE_ID_SIIG_1P_20x),
+ .driver_data = siig_1p_20x },
+ { PCI_VDEVICE(SIIG, PCI_DEVICE_ID_SIIG_2P_20x),
+ .driver_data = siig_2p_20x },
+ { PCI_VDEVICE(LAVA, PCI_DEVICE_ID_LAVA_PARALLEL),
+ .driver_data = lava_parallel },
+ { PCI_VDEVICE(LAVA, PCI_DEVICE_ID_LAVA_DUAL_PAR_A),
+ .driver_data = lava_parallel_dual_a },
+ { PCI_VDEVICE(LAVA, PCI_DEVICE_ID_LAVA_DUAL_PAR_B),
+ .driver_data = lava_parallel_dual_b },
+ { PCI_VDEVICE(LAVA, PCI_DEVICE_ID_LAVA_BOCA_IOPPAR),
+ .driver_data = boca_ioppar },
+ { PCI_VDEVICE_SUB(PLX, PCI_DEVICE_ID_PLX_9050,
+ PCI_SUBVENDOR_ID_EXSYS, PCI_SUBDEVICE_ID_EXSYS_4014),
+ .driver_data = plx_9050 },
/* PCI_VENDOR_ID_TIMEDIA/SUNIX has many differing cards ...*/
- { 0x1409, 0x7268, 0x1409, 0x0101, 0, 0, timedia_4006a },
- { 0x1409, 0x7268, 0x1409, 0x0102, 0, 0, timedia_4014 },
- { 0x1409, 0x7268, 0x1409, 0x0103, 0, 0, timedia_4008a },
- { 0x1409, 0x7268, 0x1409, 0x0104, 0, 0, timedia_4018 },
- { 0x1409, 0x7268, 0x1409, 0x9018, 0, 0, timedia_9018a },
- { PCI_VENDOR_ID_SYBA, PCI_DEVICE_ID_SYBA_2P_EPP,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, syba_2p_epp },
- { PCI_VENDOR_ID_SYBA, PCI_DEVICE_ID_SYBA_1P_ECP,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, syba_1p_ecp },
- { PCI_VENDOR_ID_TITAN, PCI_DEVICE_ID_TITAN_010L,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, titan_010l },
+ { PCI_DEVICE_SUB(0x1409, 0x7268, 0x1409, 0x0101),
+ .driver_data = timedia_4006a },
+ { PCI_DEVICE_SUB(0x1409, 0x7268, 0x1409, 0x0102),
+ .driver_data = timedia_4014 },
+ { PCI_DEVICE_SUB(0x1409, 0x7268, 0x1409, 0x0103),
+ .driver_data = timedia_4008a },
+ { PCI_DEVICE_SUB(0x1409, 0x7268, 0x1409, 0x0104),
+ .driver_data = timedia_4018 },
+ { PCI_DEVICE_SUB(0x1409, 0x7268, 0x1409, 0x9018),
+ .driver_data = timedia_9018a },
+ { PCI_VDEVICE(SYBA, PCI_DEVICE_ID_SYBA_2P_EPP),
+ .driver_data = syba_2p_epp },
+ { PCI_VDEVICE(SYBA, PCI_DEVICE_ID_SYBA_1P_ECP),
+ .driver_data = syba_1p_ecp },
+ { PCI_VDEVICE(TITAN, PCI_DEVICE_ID_TITAN_010L),
+ .driver_data = titan_010l },
/* PCI_VENDOR_ID_AVLAB/Intek21 has another bunch of cards ...*/
/* AFAVLAB_TK9902 */
- { 0x14db, 0x2120, PCI_ANY_ID, PCI_ANY_ID, 0, 0, avlab_1p},
- { 0x14db, 0x2121, PCI_ANY_ID, PCI_ANY_ID, 0, 0, avlab_2p},
- { PCI_VENDOR_ID_OXSEMI, PCI_DEVICE_ID_OXSEMI_16PCI952PP,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, oxsemi_952 },
- { PCI_VENDOR_ID_OXSEMI, PCI_DEVICE_ID_OXSEMI_16PCI954PP,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, oxsemi_954 },
- { PCI_VENDOR_ID_OXSEMI, PCI_DEVICE_ID_OXSEMI_12PCI840,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, oxsemi_840 },
- { PCI_VENDOR_ID_OXSEMI, PCI_DEVICE_ID_OXSEMI_PCIe840,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, oxsemi_pcie_pport },
- { PCI_VENDOR_ID_OXSEMI, PCI_DEVICE_ID_OXSEMI_PCIe840_G,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, oxsemi_pcie_pport },
- { PCI_VENDOR_ID_OXSEMI, PCI_DEVICE_ID_OXSEMI_PCIe952_0,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, oxsemi_pcie_pport },
- { PCI_VENDOR_ID_OXSEMI, PCI_DEVICE_ID_OXSEMI_PCIe952_0_G,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, oxsemi_pcie_pport },
- { PCI_VENDOR_ID_OXSEMI, PCI_DEVICE_ID_OXSEMI_PCIe952_1,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, oxsemi_pcie_pport },
- { PCI_VENDOR_ID_OXSEMI, PCI_DEVICE_ID_OXSEMI_PCIe952_1_G,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, oxsemi_pcie_pport },
- { PCI_VENDOR_ID_OXSEMI, PCI_DEVICE_ID_OXSEMI_PCIe952_1_U,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, oxsemi_pcie_pport },
- { PCI_VENDOR_ID_OXSEMI, PCI_DEVICE_ID_OXSEMI_PCIe952_1_GU,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, oxsemi_pcie_pport },
- { PCI_VENDOR_ID_AKS, PCI_DEVICE_ID_AKS_ALADDINCARD,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, aks_0100 },
- { 0x14f2, 0x0121, PCI_ANY_ID, PCI_ANY_ID, 0, 0, mobility_pp },
+ { PCI_DEVICE(0x14db, 0x2120),
+ .driver_data = avlab_1p },
+ { PCI_DEVICE(0x14db, 0x2121),
+ .driver_data = avlab_2p },
+ { PCI_VDEVICE(OXSEMI, PCI_DEVICE_ID_OXSEMI_16PCI952PP),
+ .driver_data = oxsemi_952 },
+ { PCI_VDEVICE(OXSEMI, PCI_DEVICE_ID_OXSEMI_16PCI954PP),
+ .driver_data = oxsemi_954 },
+ { PCI_VDEVICE(OXSEMI, PCI_DEVICE_ID_OXSEMI_12PCI840),
+ .driver_data = oxsemi_840 },
+ { PCI_VDEVICE(OXSEMI, PCI_DEVICE_ID_OXSEMI_PCIe840),
+ .driver_data = oxsemi_pcie_pport },
+ { PCI_VDEVICE(OXSEMI, PCI_DEVICE_ID_OXSEMI_PCIe840_G),
+ .driver_data = oxsemi_pcie_pport },
+ { PCI_VDEVICE(OXSEMI, PCI_DEVICE_ID_OXSEMI_PCIe952_0),
+ .driver_data = oxsemi_pcie_pport },
+ { PCI_VDEVICE(OXSEMI, PCI_DEVICE_ID_OXSEMI_PCIe952_0_G),
+ .driver_data = oxsemi_pcie_pport },
+ { PCI_VDEVICE(OXSEMI, PCI_DEVICE_ID_OXSEMI_PCIe952_1),
+ .driver_data = oxsemi_pcie_pport },
+ { PCI_VDEVICE(OXSEMI, PCI_DEVICE_ID_OXSEMI_PCIe952_1_G),
+ .driver_data = oxsemi_pcie_pport },
+ { PCI_VDEVICE(OXSEMI, PCI_DEVICE_ID_OXSEMI_PCIe952_1_U),
+ .driver_data = oxsemi_pcie_pport },
+ { PCI_VDEVICE(OXSEMI, PCI_DEVICE_ID_OXSEMI_PCIe952_1_GU),
+ .driver_data = oxsemi_pcie_pport },
+ { PCI_VDEVICE(AKS, PCI_DEVICE_ID_AKS_ALADDINCARD),
+ .driver_data = aks_0100 },
+ { PCI_DEVICE(0x14f2, 0x0121),
+ .driver_data = mobility_pp },
/* NetMos communication controllers */
- { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9900,
- 0xA000, 0x2000, 0, 0, netmos_9900 },
- { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9705,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, netmos_9705 },
- { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9715,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, netmos_9715 },
- { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9755,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, netmos_9755 },
- { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9805,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, netmos_9805 },
- { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9815,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, netmos_9815 },
- { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9901,
- 0xA000, 0x2000, 0, 0, netmos_9901 },
- { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9865,
- 0xA000, 0x1000, 0, 0, netmos_9865 },
- { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9865,
- 0xA000, 0x2000, 0, 0, netmos_9865 },
+ { PCI_VDEVICE_SUB(NETMOS, PCI_DEVICE_ID_NETMOS_9900, 0xA000, 0x2000),
+ .driver_data = netmos_9900 },
+ { PCI_VDEVICE(NETMOS, PCI_DEVICE_ID_NETMOS_9705),
+ .driver_data = netmos_9705 },
+ { PCI_VDEVICE(NETMOS, PCI_DEVICE_ID_NETMOS_9715),
+ .driver_data = netmos_9715 },
+ { PCI_VDEVICE(NETMOS, PCI_DEVICE_ID_NETMOS_9755),
+ .driver_data = netmos_9755 },
+ { PCI_VDEVICE(NETMOS, PCI_DEVICE_ID_NETMOS_9805),
+ .driver_data = netmos_9805 },
+ { PCI_VDEVICE(NETMOS, PCI_DEVICE_ID_NETMOS_9815),
+ .driver_data = netmos_9815 },
+ { PCI_VDEVICE_SUB(NETMOS, PCI_DEVICE_ID_NETMOS_9901, 0xA000, 0x2000),
+ .driver_data = netmos_9901 },
+ { PCI_VDEVICE_SUB(NETMOS, PCI_DEVICE_ID_NETMOS_9865, 0xA000, 0x1000),
+ .driver_data = netmos_9865 },
+ { PCI_VDEVICE_SUB(NETMOS, PCI_DEVICE_ID_NETMOS_9865, 0xA000, 0x2000),
+ .driver_data = netmos_9865 },
/* ASIX AX99100 PCIe to Multi I/O Controller */
- { PCI_VENDOR_ID_ASIX, PCI_DEVICE_ID_ASIX_AX99100,
- 0xA000, 0x2000, 0, 0, asix_ax99100 },
+ { PCI_VDEVICE_SUB(ASIX, PCI_DEVICE_ID_ASIX_AX99100, 0xA000, 0x2000),
+ .driver_data = asix_ax99100 },
/* Quatech SPPXP-100 Parallel port PCI ExpressCard */
- { PCI_VENDOR_ID_QUATECH, PCI_DEVICE_ID_QUATECH_SPPXP_100,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, quatech_sppxp100 },
+ { PCI_VDEVICE(QUATECH, PCI_DEVICE_ID_QUATECH_SPPXP_100),
+ .driver_data = quatech_sppxp100 },
/* WCH CH382L PCI-E single parallel port card */
- { 0x1c00, 0x3050, 0x1c00, 0x3050, 0, 0, wch_ch382l },
+ { PCI_DEVICE_SUB(0x1c00, 0x3050, 0x1c00, 0x3050),
+ .driver_data = wch_ch382l },
/* Brainboxes IX-500/550 */
- { PCI_VENDOR_ID_INTASHIELD, 0x402a,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, oxsemi_pcie_pport },
+ { PCI_VDEVICE(INTASHIELD, 0x402a),
+ .driver_data = oxsemi_pcie_pport },
/* Brainboxes UC-146/UC-157 */
- { PCI_VENDOR_ID_INTASHIELD, 0x0be1,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, brainboxes_uc146 },
- { PCI_VENDOR_ID_INTASHIELD, 0x0be2,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, brainboxes_uc146 },
+ { PCI_VDEVICE(INTASHIELD, 0x0be1),
+ .driver_data = brainboxes_uc146 },
+ { PCI_VDEVICE(INTASHIELD, 0x0be2),
+ .driver_data = brainboxes_uc146 },
/* Brainboxes PX-146/PX-257 */
- { PCI_VENDOR_ID_INTASHIELD, 0x401c,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, oxsemi_pcie_pport },
+ { PCI_VDEVICE(INTASHIELD, 0x401c),
+ .driver_data = oxsemi_pcie_pport },
/* Brainboxes PX-203 */
- { PCI_VENDOR_ID_INTASHIELD, 0x4007,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, brainboxes_px203 },
+ { PCI_VDEVICE(INTASHIELD, 0x4007),
+ .driver_data = brainboxes_px203 },
/* Brainboxes PX-475 */
- { PCI_VENDOR_ID_INTASHIELD, 0x401f,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, oxsemi_pcie_pport },
- { 0, } /* terminate list */
+ { PCI_VDEVICE(INTASHIELD, 0x401f),
+ .driver_data = oxsemi_pcie_pport },
+ { } /* terminate list */
};
MODULE_DEVICE_TABLE(pci, parport_pc_pci_tbl);
diff --git a/drivers/parport/parport_serial.c b/drivers/parport/parport_serial.c
index 24d4f3a3ec3d..4d4140c8584d 100644
--- a/drivers/parport/parport_serial.c
+++ b/drivers/parport/parport_serial.c
@@ -170,158 +170,176 @@ static struct parport_pc_pci cards[] = {
static struct pci_device_id parport_serial_pci_tbl[] = {
/* PCI cards */
- { PCI_VENDOR_ID_TITAN, PCI_DEVICE_ID_TITAN_110L,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, titan_110l },
- { PCI_VENDOR_ID_TITAN, PCI_DEVICE_ID_TITAN_210L,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, titan_210l },
- { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9735,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, netmos_9xx5_combo },
- { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9745,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, netmos_9xx5_combo },
- { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9835,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, netmos_9xx5_combo },
- { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9845,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, netmos_9xx5_combo },
- { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9855,
- 0x1000, 0x0020, 0, 0, netmos_9855_2p },
- { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9855,
- 0x1000, 0x0022, 0, 0, netmos_9855_2p },
- { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9855,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, netmos_9855 },
- { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9900,
- 0xA000, 0x3011, 0, 0, netmos_9900 },
- { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9900,
- 0xA000, 0x3012, 0, 0, netmos_9900 },
- { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9900,
- 0xA000, 0x3020, 0, 0, netmos_9900_2p },
- { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9912,
- 0xA000, 0x2000, 0, 0, netmos_99xx_1p },
+ { PCI_VDEVICE(TITAN, PCI_DEVICE_ID_TITAN_110L),
+ .driver_data = titan_110l },
+ { PCI_VDEVICE(TITAN, PCI_DEVICE_ID_TITAN_210L),
+ .driver_data = titan_210l },
+ { PCI_VDEVICE(NETMOS, PCI_DEVICE_ID_NETMOS_9735),
+ .driver_data = netmos_9xx5_combo },
+ { PCI_VDEVICE(NETMOS, PCI_DEVICE_ID_NETMOS_9745),
+ .driver_data = netmos_9xx5_combo },
+ { PCI_VDEVICE(NETMOS, PCI_DEVICE_ID_NETMOS_9835),
+ .driver_data = netmos_9xx5_combo },
+ { PCI_VDEVICE(NETMOS, PCI_DEVICE_ID_NETMOS_9845),
+ .driver_data = netmos_9xx5_combo },
+ { PCI_VDEVICE_SUB(NETMOS, PCI_DEVICE_ID_NETMOS_9855, 0x1000, 0x0020),
+ .driver_data = netmos_9855_2p },
+ { PCI_VDEVICE_SUB(NETMOS, PCI_DEVICE_ID_NETMOS_9855, 0x1000, 0x0022),
+ .driver_data = netmos_9855_2p },
+ { PCI_VDEVICE(NETMOS, PCI_DEVICE_ID_NETMOS_9855),
+ .driver_data = netmos_9855 },
+ { PCI_VDEVICE_SUB(NETMOS, PCI_DEVICE_ID_NETMOS_9900, 0xA000, 0x3011),
+ .driver_data = netmos_9900 },
+ { PCI_VDEVICE_SUB(NETMOS, PCI_DEVICE_ID_NETMOS_9900, 0xA000, 0x3012),
+ .driver_data = netmos_9900 },
+ { PCI_VDEVICE_SUB(NETMOS, PCI_DEVICE_ID_NETMOS_9900, 0xA000, 0x3020),
+ .driver_data = netmos_9900_2p },
+ { PCI_VDEVICE_SUB(NETMOS, PCI_DEVICE_ID_NETMOS_9912, 0xA000, 0x2000),
+ .driver_data = netmos_99xx_1p },
/* PCI_VENDOR_ID_AVLAB/Intek21 has another bunch of cards ...*/
- { PCI_VENDOR_ID_AFAVLAB, 0x2110,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, avlab_1s1p },
- { PCI_VENDOR_ID_AFAVLAB, 0x2111,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, avlab_1s1p },
- { PCI_VENDOR_ID_AFAVLAB, 0x2112,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, avlab_1s1p },
- { PCI_VENDOR_ID_AFAVLAB, 0x2140,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, avlab_1s2p },
- { PCI_VENDOR_ID_AFAVLAB, 0x2141,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, avlab_1s2p },
- { PCI_VENDOR_ID_AFAVLAB, 0x2142,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, avlab_1s2p },
- { PCI_VENDOR_ID_AFAVLAB, 0x2160,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, avlab_2s1p },
- { PCI_VENDOR_ID_AFAVLAB, 0x2161,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, avlab_2s1p },
- { PCI_VENDOR_ID_AFAVLAB, 0x2162,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, avlab_2s1p },
- { PCI_VENDOR_ID_SIIG, PCI_DEVICE_ID_SIIG_1S1P_10x_550,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, siig_1s1p_10x },
- { PCI_VENDOR_ID_SIIG, PCI_DEVICE_ID_SIIG_1S1P_10x_650,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, siig_1s1p_10x },
- { PCI_VENDOR_ID_SIIG, PCI_DEVICE_ID_SIIG_1S1P_10x_850,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, siig_1s1p_10x },
- { PCI_VENDOR_ID_SIIG, PCI_DEVICE_ID_SIIG_2S1P_10x_550,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, siig_2s1p_10x },
- { PCI_VENDOR_ID_SIIG, PCI_DEVICE_ID_SIIG_2S1P_10x_650,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, siig_2s1p_10x },
- { PCI_VENDOR_ID_SIIG, PCI_DEVICE_ID_SIIG_2S1P_10x_850,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, siig_2s1p_10x },
- { PCI_VENDOR_ID_SIIG, PCI_DEVICE_ID_SIIG_2P1S_20x_550,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, siig_2p1s_20x },
- { PCI_VENDOR_ID_SIIG, PCI_DEVICE_ID_SIIG_2P1S_20x_650,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, siig_2p1s_20x },
- { PCI_VENDOR_ID_SIIG, PCI_DEVICE_ID_SIIG_2P1S_20x_850,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, siig_2p1s_20x },
- { PCI_VENDOR_ID_SIIG, PCI_DEVICE_ID_SIIG_1S1P_20x_550,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, siig_2s1p_20x },
- { PCI_VENDOR_ID_SIIG, PCI_DEVICE_ID_SIIG_1S1P_20x_650,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, siig_1s1p_20x },
- { PCI_VENDOR_ID_SIIG, PCI_DEVICE_ID_SIIG_1S1P_20x_850,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, siig_1s1p_20x },
- { PCI_VENDOR_ID_SIIG, PCI_DEVICE_ID_SIIG_2S1P_20x_550,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, siig_2s1p_20x },
- { PCI_VENDOR_ID_SIIG, PCI_DEVICE_ID_SIIG_2S1P_20x_650,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, siig_2s1p_20x },
- { PCI_VENDOR_ID_SIIG, PCI_DEVICE_ID_SIIG_2S1P_20x_850,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, siig_2s1p_20x },
+ { PCI_VDEVICE(AFAVLAB, 0x2110),
+ .driver_data = avlab_1s1p },
+ { PCI_VDEVICE(AFAVLAB, 0x2111),
+ .driver_data = avlab_1s1p },
+ { PCI_VDEVICE(AFAVLAB, 0x2112),
+ .driver_data = avlab_1s1p },
+ { PCI_VDEVICE(AFAVLAB, 0x2140),
+ .driver_data = avlab_1s2p },
+ { PCI_VDEVICE(AFAVLAB, 0x2141),
+ .driver_data = avlab_1s2p },
+ { PCI_VDEVICE(AFAVLAB, 0x2142),
+ .driver_data = avlab_1s2p },
+ { PCI_VDEVICE(AFAVLAB, 0x2160),
+ .driver_data = avlab_2s1p },
+ { PCI_VDEVICE(AFAVLAB, 0x2161),
+ .driver_data = avlab_2s1p },
+ { PCI_VDEVICE(AFAVLAB, 0x2162),
+ .driver_data = avlab_2s1p },
+ { PCI_VDEVICE(SIIG, PCI_DEVICE_ID_SIIG_1S1P_10x_550),
+ .driver_data = siig_1s1p_10x },
+ { PCI_VDEVICE(SIIG, PCI_DEVICE_ID_SIIG_1S1P_10x_650),
+ .driver_data = siig_1s1p_10x },
+ { PCI_VDEVICE(SIIG, PCI_DEVICE_ID_SIIG_1S1P_10x_850),
+ .driver_data = siig_1s1p_10x },
+ { PCI_VDEVICE(SIIG, PCI_DEVICE_ID_SIIG_2S1P_10x_550),
+ .driver_data = siig_2s1p_10x },
+ { PCI_VDEVICE(SIIG, PCI_DEVICE_ID_SIIG_2S1P_10x_650),
+ .driver_data = siig_2s1p_10x },
+ { PCI_VDEVICE(SIIG, PCI_DEVICE_ID_SIIG_2S1P_10x_850),
+ .driver_data = siig_2s1p_10x },
+ { PCI_VDEVICE(SIIG, PCI_DEVICE_ID_SIIG_2P1S_20x_550),
+ .driver_data = siig_2p1s_20x },
+ { PCI_VDEVICE(SIIG, PCI_DEVICE_ID_SIIG_2P1S_20x_650),
+ .driver_data = siig_2p1s_20x },
+ { PCI_VDEVICE(SIIG, PCI_DEVICE_ID_SIIG_2P1S_20x_850),
+ .driver_data = siig_2p1s_20x },
+ { PCI_VDEVICE(SIIG, PCI_DEVICE_ID_SIIG_1S1P_20x_550),
+ .driver_data = siig_2s1p_20x },
+ { PCI_VDEVICE(SIIG, PCI_DEVICE_ID_SIIG_1S1P_20x_650),
+ .driver_data = siig_1s1p_20x },
+ { PCI_VDEVICE(SIIG, PCI_DEVICE_ID_SIIG_1S1P_20x_850),
+ .driver_data = siig_1s1p_20x },
+ { PCI_VDEVICE(SIIG, PCI_DEVICE_ID_SIIG_2S1P_20x_550),
+ .driver_data = siig_2s1p_20x },
+ { PCI_VDEVICE(SIIG, PCI_DEVICE_ID_SIIG_2S1P_20x_650),
+ .driver_data = siig_2s1p_20x },
+ { PCI_VDEVICE(SIIG, PCI_DEVICE_ID_SIIG_2S1P_20x_850),
+ .driver_data = siig_2s1p_20x },
/* PCI_VENDOR_ID_TIMEDIA/SUNIX has many differing cards ...*/
- { 0x1409, 0x7168, 0x1409, 0x4078, 0, 0, timedia_4078a },
- { 0x1409, 0x7168, 0x1409, 0x4079, 0, 0, timedia_4079h },
- { 0x1409, 0x7168, 0x1409, 0x4085, 0, 0, timedia_4085h },
- { 0x1409, 0x7168, 0x1409, 0x4088, 0, 0, timedia_4088a },
- { 0x1409, 0x7168, 0x1409, 0x4089, 0, 0, timedia_4089a },
- { 0x1409, 0x7168, 0x1409, 0x4095, 0, 0, timedia_4095a },
- { 0x1409, 0x7168, 0x1409, 0x4096, 0, 0, timedia_4096a },
- { 0x1409, 0x7168, 0x1409, 0x5078, 0, 0, timedia_4078u },
- { 0x1409, 0x7168, 0x1409, 0x5079, 0, 0, timedia_4079a },
- { 0x1409, 0x7168, 0x1409, 0x5085, 0, 0, timedia_4085u },
- { 0x1409, 0x7168, 0x1409, 0x6079, 0, 0, timedia_4079r },
- { 0x1409, 0x7168, 0x1409, 0x7079, 0, 0, timedia_4079s },
- { 0x1409, 0x7168, 0x1409, 0x8079, 0, 0, timedia_4079d },
- { 0x1409, 0x7168, 0x1409, 0x9079, 0, 0, timedia_4079e },
- { 0x1409, 0x7168, 0x1409, 0xa079, 0, 0, timedia_4079f },
- { 0x1409, 0x7168, 0x1409, 0xb079, 0, 0, timedia_9079a },
- { 0x1409, 0x7168, 0x1409, 0xc079, 0, 0, timedia_9079b },
- { 0x1409, 0x7168, 0x1409, 0xd079, 0, 0, timedia_9079c },
+ { PCI_DEVICE_SUB(0x1409, 0x7168, 0x1409, 0x4078),
+ .driver_data = timedia_4078a },
+ { PCI_DEVICE_SUB(0x1409, 0x7168, 0x1409, 0x4079),
+ .driver_data = timedia_4079h },
+ { PCI_DEVICE_SUB(0x1409, 0x7168, 0x1409, 0x4085),
+ .driver_data = timedia_4085h },
+ { PCI_DEVICE_SUB(0x1409, 0x7168, 0x1409, 0x4088),
+ .driver_data = timedia_4088a },
+ { PCI_DEVICE_SUB(0x1409, 0x7168, 0x1409, 0x4089),
+ .driver_data = timedia_4089a },
+ { PCI_DEVICE_SUB(0x1409, 0x7168, 0x1409, 0x4095),
+ .driver_data = timedia_4095a },
+ { PCI_DEVICE_SUB(0x1409, 0x7168, 0x1409, 0x4096),
+ .driver_data = timedia_4096a },
+ { PCI_DEVICE_SUB(0x1409, 0x7168, 0x1409, 0x5078),
+ .driver_data = timedia_4078u },
+ { PCI_DEVICE_SUB(0x1409, 0x7168, 0x1409, 0x5079),
+ .driver_data = timedia_4079a },
+ { PCI_DEVICE_SUB(0x1409, 0x7168, 0x1409, 0x5085),
+ .driver_data = timedia_4085u },
+ { PCI_DEVICE_SUB(0x1409, 0x7168, 0x1409, 0x6079),
+ .driver_data = timedia_4079r },
+ { PCI_DEVICE_SUB(0x1409, 0x7168, 0x1409, 0x7079),
+ .driver_data = timedia_4079s },
+ { PCI_DEVICE_SUB(0x1409, 0x7168, 0x1409, 0x8079),
+ .driver_data = timedia_4079d },
+ { PCI_DEVICE_SUB(0x1409, 0x7168, 0x1409, 0x9079),
+ .driver_data = timedia_4079e },
+ { PCI_DEVICE_SUB(0x1409, 0x7168, 0x1409, 0xa079),
+ .driver_data = timedia_4079f },
+ { PCI_DEVICE_SUB(0x1409, 0x7168, 0x1409, 0xb079),
+ .driver_data = timedia_9079a },
+ { PCI_DEVICE_SUB(0x1409, 0x7168, 0x1409, 0xc079),
+ .driver_data = timedia_9079b },
+ { PCI_DEVICE_SUB(0x1409, 0x7168, 0x1409, 0xd079),
+ .driver_data = timedia_9079c },
/* WCH CARDS */
- { PCI_VENDOR_ID_WCHCN, PCI_DEVICE_ID_WCHCN_CH353_1S1P,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, wch_ch353_1s1p },
- { PCI_VENDOR_ID_WCHCN, PCI_DEVICE_ID_WCHCN_CH353_2S1P,
- 0x4348, 0x3253, 0, 0, wch_ch353_2s1p },
- { PCI_VENDOR_ID_WCHIC, PCI_DEVICE_ID_WCHIC_CH382_0S1P,
- 0x1c00, 0x3050, 0, 0, wch_ch382_0s1p },
- { PCI_VENDOR_ID_WCHIC, PCI_DEVICE_ID_WCHIC_CH382_2S1P,
- 0x1c00, 0x3250, 0, 0, wch_ch382_2s1p },
+ { PCI_VDEVICE(WCHCN, PCI_DEVICE_ID_WCHCN_CH353_1S1P),
+ .driver_data = wch_ch353_1s1p },
+ { PCI_VDEVICE_SUB(WCHCN, PCI_DEVICE_ID_WCHCN_CH353_2S1P, 0x4348, 0x3253),
+ .driver_data = wch_ch353_2s1p },
+ { PCI_VDEVICE_SUB(WCHIC, PCI_DEVICE_ID_WCHIC_CH382_0S1P, 0x1c00, 0x3050),
+ .driver_data = wch_ch382_0s1p },
+ { PCI_VDEVICE_SUB(WCHIC, PCI_DEVICE_ID_WCHIC_CH382_2S1P, 0x1c00, 0x3250),
+ .driver_data = wch_ch382_2s1p },
/* BrainBoxes PX272/PX306 MIO card */
- { PCI_VENDOR_ID_INTASHIELD, 0x4100,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, brainboxes_5s1p },
+ { PCI_VDEVICE(INTASHIELD, 0x4100),
+ .driver_data = brainboxes_5s1p },
/* Sunix boards */
- { PCI_VENDOR_ID_SUNIX, PCI_DEVICE_ID_SUNIX_1999, PCI_VENDOR_ID_SUNIX,
- 0x0100, 0, 0, sunix_4008a },
- { PCI_VENDOR_ID_SUNIX, PCI_DEVICE_ID_SUNIX_1999, PCI_VENDOR_ID_SUNIX,
- 0x0101, 0, 0, sunix_5069a },
- { PCI_VENDOR_ID_SUNIX, PCI_DEVICE_ID_SUNIX_1999, PCI_VENDOR_ID_SUNIX,
- 0x0102, 0, 0, sunix_5079a },
- { PCI_VENDOR_ID_SUNIX, PCI_DEVICE_ID_SUNIX_1999, PCI_VENDOR_ID_SUNIX,
- 0x0104, 0, 0, sunix_5099a },
+ { PCI_VDEVICE_SUB(SUNIX, PCI_DEVICE_ID_SUNIX_1999, PCI_VENDOR_ID_SUNIX, 0x0100),
+ .driver_data = sunix_4008a },
+ { PCI_VDEVICE_SUB(SUNIX, PCI_DEVICE_ID_SUNIX_1999, PCI_VENDOR_ID_SUNIX, 0x0101),
+ .driver_data = sunix_5069a },
+ { PCI_VDEVICE_SUB(SUNIX, PCI_DEVICE_ID_SUNIX_1999, PCI_VENDOR_ID_SUNIX, 0x0102),
+ .driver_data = sunix_5079a },
+ { PCI_VDEVICE_SUB(SUNIX, PCI_DEVICE_ID_SUNIX_1999, PCI_VENDOR_ID_SUNIX, 0x0104),
+ .driver_data = sunix_5099a },
/* Brainboxes UC-203 */
- { PCI_VENDOR_ID_INTASHIELD, 0x0bc1,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, brainboxes_uc257 },
- { PCI_VENDOR_ID_INTASHIELD, 0x0bc2,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, brainboxes_uc257 },
+ { PCI_VDEVICE(INTASHIELD, 0x0bc1),
+ .driver_data = brainboxes_uc257 },
+ { PCI_VDEVICE(INTASHIELD, 0x0bc2),
+ .driver_data = brainboxes_uc257 },
/* Brainboxes UC-257 */
- { PCI_VENDOR_ID_INTASHIELD, 0x0861,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, brainboxes_uc257 },
- { PCI_VENDOR_ID_INTASHIELD, 0x0862,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, brainboxes_uc257 },
- { PCI_VENDOR_ID_INTASHIELD, 0x0863,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, brainboxes_uc257 },
+ { PCI_VDEVICE(INTASHIELD, 0x0861),
+ .driver_data = brainboxes_uc257 },
+ { PCI_VDEVICE(INTASHIELD, 0x0862),
+ .driver_data = brainboxes_uc257 },
+ { PCI_VDEVICE(INTASHIELD, 0x0863),
+ .driver_data = brainboxes_uc257 },
/* Brainboxes UC-414 */
- { PCI_VENDOR_ID_INTASHIELD, 0x0e61,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, brainboxes_uc414 },
+ { PCI_VDEVICE(INTASHIELD, 0x0e61),
+ .driver_data = brainboxes_uc414 },
/* Brainboxes UC-475 */
- { PCI_VENDOR_ID_INTASHIELD, 0x0981,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, brainboxes_uc257 },
- { PCI_VENDOR_ID_INTASHIELD, 0x0982,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, brainboxes_uc257 },
+ { PCI_VDEVICE(INTASHIELD, 0x0981),
+ .driver_data = brainboxes_uc257 },
+ { PCI_VDEVICE(INTASHIELD, 0x0982),
+ .driver_data = brainboxes_uc257 },
/* Brainboxes IS-300/IS-500 */
- { PCI_VENDOR_ID_INTASHIELD, 0x0da0,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, brainboxes_is300 },
+ { PCI_VDEVICE(INTASHIELD, 0x0da0),
+ .driver_data = brainboxes_is300 },
/* Brainboxes PX-263/PX-295 */
- { PCI_VENDOR_ID_INTASHIELD, 0x402c,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, brainboxes_px263 },
+ { PCI_VDEVICE(INTASHIELD, 0x402c),
+ .driver_data = brainboxes_px263 },
- { 0, } /* terminate list */
+ { } /* terminate list */
};
MODULE_DEVICE_TABLE(pci,parport_serial_pci_tbl);
base-commit: 254f49634ee16a731174d2ae34bc50bd5f45e731
--
2.47.3
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] parport: Consistently define pci_device_ids using named initializers
2026-04-29 16:14 [PATCH] parport: Consistently define pci_device_ids using named initializers Uwe Kleine-König (The Capable Hub)
@ 2026-06-10 16:53 ` Uwe Kleine-König (The Capable Hub)
0 siblings, 0 replies; 2+ messages in thread
From: Uwe Kleine-König (The Capable Hub) @ 2026-06-10 16:53 UTC (permalink / raw)
To: Sudip Mukherjee
Cc: Markus Schneider-Pargmann, linux-kernel, Greg Kroah-Hartman
[-- Attachment #1: Type: text/plain, Size: 1206 bytes --]
[adding Greg to Cc: as his tree seems to be the usual way into mainline
for these drivers.]
Hello Sudip,
On Wed, Apr 29, 2026 at 06:14:53PM +0200, Uwe Kleine-König (The Capable Hub) wrote:
> ... and PCI device helpers.
>
> The various struct pci_device_id arrays were initialized mostly by list
> expressions. This isn't easily readable if you're not into PCI.
>
> Use PCI_DEVICE* helper macros and named initializers which is more
> explicit and thus easier to parse. Also skip explicit assignments of 0
> (which the compiler then 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) <u.kleine-koenig@baylibre.com>
Gentil ping! I'd like to work on the actual change to pci_device_id and
that requires this patch to be in.
Is it already too late for 7.2-rc1?
Best regards
Uwe
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-06-10 16:54 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-29 16:14 [PATCH] parport: Consistently define pci_device_ids using named initializers Uwe Kleine-König (The Capable Hub)
2026-06-10 16:53 ` Uwe Kleine-König (The Capable Hub)
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.