Make PNP IDs all uppercase
Subsystems (13)
PATCH 1/1 Make PNP IDs all uppercase
If I understand correctly, ACPI _HIDs (including PNP IDs) should be all uppercase, including the hex digits, cf. ACPI Specification 3.0b [1], pp. 162-3 and acpi_glb_hex_to_ascii[] in drivers/acpi/utilities/utglobal.c.
Since compare_pnp_id() in drivers/pnp/driver.c is case-insensitive, the case should only matter for the MODULE_DEVICE_TABLE and thus for module aliases, as modprobe uses fnmatch() to match aliases, which is case-sensitive. Therefore, using uppercase letters in PNP IDs can lead to non-functional module aliases.
This patch converts all PNP IDs to uppercase.
[1] http://www.acpi.info/spec.htm
---
I have successfully tested this patch for drivers/rtc/rtc-cmos.c.
If you would rather have this as a series of patches, one per file, let me know.
I hope I did not forget any recipients and that I didn't spam anyone unnecessarily. If I did, I apologize.
arch/x86/kernel/rtc.c | 2 +- drivers/input/gameport/ns558.c | 6 ++-- drivers/input/serio/i8042-x86ia64io.h | 16 ++++++------ drivers/input/touchscreen/htcpen.c | 2 +- drivers/media/radio/radio-cadet.c | 2 +- drivers/net/3c509.c | 4 +- drivers/net/irda/smsc-ircc2.c | 2 +- drivers/platform/x86/fujitsu-laptop.c | 2 +- drivers/platform/x86/wmi.c | 2 +- drivers/pnp/quirks.c | 4 +- drivers/pnp/system.c | 4 +- drivers/rtc/rtc-cmos.c | 6 ++-- sound/drivers/mpu401/mpu401.c | 2 +- sound/isa/cs423x/cs4236.c | 42 ++++++++++++++++---------------- sound/isa/gus/interwave.c | 8 +++--- sound/isa/sb/sb16.c | 36 ++++++++++++++-------------- sound/isa/wavefront/wavefront.c | 4 +- sound/oss/sb_card.h | 10 ++++---- 18 files changed, 77 insertions(+), 77 deletions(-)
arch/x86/kernel/rtc.c +1 -1
@@ -224,7 +224,7 @@ static __init int add_rtc_cmos(void) {#ifdef CONFIG_PNP static const char *ids[]__initconst = - {"PNP0b00" ,"PNP0b01" ,"PNP0b02" , }; + {"PNP0B00" ,"PNP0B01" ,"PNP0B02" , };struct pnp_dev *dev;struct pnp_id *id;int i;
drivers/input/gameport/ns558.c +3 -3
@@ -171,11 +171,11 @@ static struct pnp_device_id pnp_devids[] = { { .id = "@P@0020", .driver_data = 0 }, /* ALS 200 */ { .id = "@P@1001", .driver_data = 0 }, /* ALS 100+ */ { .id = "@P@2001", .driver_data = 0 }, /* ALS 120 */ - { .id = "ASB16fd", .driver_data = 0 }, /* AdLib NSC16 */ + { .id = "ASB16FD", .driver_data = 0 }, /* AdLib NSC16 */ { .id = "AZT3001", .driver_data = 0 }, /* AZT1008 */ { .id = "CDC0001", .driver_data = 0 }, /* Opl3-SAx */ { .id = "CSC0001", .driver_data = 0 }, /* CS4232 */ - { .id = "CSC000f", .driver_data = 0 }, /* CS4236 */ + { .id = "CSC000F", .driver_data = 0 }, /* CS4236 */ { .id = "CSC0101", .driver_data = 0 }, /* CS4327 */ { .id = "CTL7001", .driver_data = 0 }, /* SB16 */ { .id = "CTL7002", .driver_data = 0 }, /* AWE64 */
@@ -188,7 +188,7 @@ static struct pnp_device_id pnp_devids[] = { { .id = "OPT0001", .driver_data = 0 }, /* OPTi Audio16 */ { .id = "YMH0006", .driver_data = 0 }, /* Opl3-SA */ { .id = "YMH0022", .driver_data = 0 }, /* Opl3-SAx */ - { .id = "PNPb02f", .driver_data = 0 }, /* Generic */ + { .id = "PNPB02F", .driver_data = 0 }, /* Generic */ { .id = "", }, };
drivers/input/serio/i8042-x86ia64io.h +8 -8
@@ -510,7 +510,7 @@ static int i8042_pnp_aux_probe(struct pnp_dev *dev, const struct pnp_device_id *static struct pnp_device_id pnp_kbd_devids[] = { { .id ="PNP0303" , .driver_data =0 }, - { .id ="PNP030b" , .driver_data =0 }, + { .id ="PNP030B" , .driver_data =0 }, { .id ="" , }, };
@@ -523,13 +523,13 @@ static struct pnp_driver i8042_pnp_kbd_driver = {static struct pnp_device_id pnp_aux_devids[] = { { .id ="FJC6000" , .driver_data =0 }, { .id ="FJC6001" , .driver_data =0 }, - { .id ="PNP0f03" , .driver_data =0 }, - { .id ="PNP0f0b" , .driver_data =0 }, - { .id ="PNP0f0e" , .driver_data =0 }, - { .id ="PNP0f12" , .driver_data =0 }, - { .id ="PNP0f13" , .driver_data =0 }, - { .id ="PNP0f19" , .driver_data =0 }, - { .id ="PNP0f1c" , .driver_data =0 }, + { .id ="PNP0F03" , .driver_data =0 }, + { .id ="PNP0F0B" , .driver_data =0 }, + { .id ="PNP0F0E" , .driver_data =0 }, + { .id ="PNP0F12" , .driver_data =0 }, + { .id ="PNP0F13" , .driver_data =0 }, + { .id ="PNP0F19" , .driver_data =0 }, + { .id ="PNP0F1C" , .driver_data =0 }, { .id ="SYN0801" , .driver_data =0 }, { .id ="" , }, };
drivers/input/touchscreen/htcpen.c +1 -1
@@ -48,7 +48,7 @@ module_param(invert_y, bool, 0644);MODULE_PARM_DESC (invert_y,"If set, Y axis is inverted" );static struct pnp_device_id pnp_ids[] = { - { .id ="PNP0cc0" }, + { .id ="PNP0CC0" }, { .id ="" } };MODULE_DEVICE_TABLE (pnp, pnp_ids);
drivers/media/radio/radio-cadet.c +1 -1
@@ -592,7 +592,7 @@ static struct video_device cadet_radio = {static struct pnp_device_id cadet_pnp_devices[] = {/* ADS Cadet AM/FM Radio Card */ - {.id ="MSM0c24" , .driver_data =0 }, + {.id ="MSM0C24" , .driver_data =0 }, {.id ="" } };
drivers/net/3c509.c +2 -2
@@ -402,8 +402,8 @@ static struct pnp_device_id el3_pnp_ids[] = { { .id = "TCM5094" }, /* 3Com Etherlink III (combo) */ { .id = "TCM5095" }, /* 3Com Etherlink III (TPO) */ { .id = "TCM5098" }, /* 3Com Etherlink III (TPC) */ - { .id = "PNP80f7" }, /* 3Com Etherlink III compatible */ - { .id = "PNP80f8" }, /* 3Com Etherlink III compatible */ + { .id = "PNP80F7" }, /* 3Com Etherlink III compatible */ + { .id = "PNP80F8" }, /* 3Com Etherlink III compatible */ { .id = "" } };MODULE_DEVICE_TABLE (pnp, el3_pnp_ids);
drivers/net/irda/smsc-ircc2.c +1 -1
@@ -365,7 +365,7 @@ static inline void register_bank(int iobase, int bank)/* PNP hotplug support */ static const struct pnp_device_id smsc_ircc_pnp_table[] = { - { .id ="SMCf010" , .driver_data =0 }, + { .id ="SMCF010" , .driver_data =0 },/* and presumably others */ { } };
drivers/platform/x86/fujitsu-laptop.c +1 -1
@@ -1284,7 +1284,7 @@ MODULE_ALIAS("dmi:*:svnFUJITSUSIEMENS:*:pvr:rvnFUJITSU:rnFJNB1E6:*:cvrS6420:*");MODULE_ALIAS ("dmi:*:svnFUJITSU:*:pvr:rvnFUJITSU:rnFJNB19C:*:cvrS7020:*" );static struct pnp_device_id pnp_ids[] = { - {.id ="FUJ02bf" }, + {.id ="FUJ02BF" }, {.id ="FUJ02B1" }, {.id ="FUJ02E3" }, {.id ="" }
drivers/platform/x86/wmi.c +1 -1
@@ -84,7 +84,7 @@ static int acpi_wmi_add(struct acpi_device *device);static const struct acpi_device_id wmi_device_ids[] = { {"PNP0C14" ,0 }, - {"pnp0c14" ,0 }, + {"PNP0C14" ,0 }, {"" ,0 }, };MODULE_DEVICE_TABLE (acpi, wmi_device_ids);
drivers/pnp/quirks.c +2 -2
@@ -325,8 +325,8 @@ static struct pnp_fixup pnp_fixups[] = { {"ADS7181", quirk_add_irq_optional_dependent_sets}, {"AZT0002", quirk_add_irq_optional_dependent_sets},/* PnP resources that might overlap PCI BARs */ - {"PNP0c01", quirk_system_pci_resources}, - {"PNP0c02", quirk_system_pci_resources}, + {"PNP0C01", quirk_system_pci_resources}, + {"PNP0C02", quirk_system_pci_resources}, {""} };
drivers/pnp/system.c +2 -2
@@ -16,9 +16,9 @@static const struct pnp_device_id pnp_dev_table[] = {/* General ID for reserving resources */ - {"PNP0c02" ,0 }, + {"PNP0C02" ,0 },/* memory controller */ - {"PNP0c01" ,0 }, + {"PNP0C01" ,0 }, {"" ,0 } };
drivers/rtc/rtc-cmos.c +3 -3
@@ -1110,9 +1110,9 @@ static void cmos_pnp_shutdown(struct device *pdev) }static const struct pnp_device_id rtc_ids[] = { - { .id ="PNP0b00" , }, - { .id ="PNP0b01" , }, - { .id ="PNP0b02" , }, + { .id ="PNP0B00" , }, + { .id ="PNP0B01" , }, + { .id ="PNP0B02" , }, { }, };MODULE_DEVICE_TABLE (pnp, rtc_ids);
sound/drivers/mpu401/mpu401.c +1 -1
@@ -150,7 +150,7 @@ static struct platform_driver snd_mpu401_driver = {#define IO_EXTENT 2static struct pnp_device_id snd_mpu401_pnpids[] = { - { .id ="PNPb006" }, + { .id ="PNPB006" }, { .id ="" } };
sound/isa/cs423x/cs4236.c +2 -2
@@ -164,21 +164,21 @@ MODULE_DEVICE_TABLE(pnp, snd_cs4232_pnpbiosids);#define CS423X_ISAPNP_DRIVER "cs4232_isapnp"static struct pnp_card_device_id snd_cs423x_pnpids[] = {/* Philips PCA70PS */ - { .id ="CSC0d32" , .devs = { {"CSC0000" }, {"CSC0010" }, {"PNPb006" } } }, + { .id ="CSC0D32" , .devs = { {"CSC0000" }, {"CSC0010" }, {"PNPB006" } } },/* TerraTec Maestro 32/96 (CS4232) */ - { .id ="CSC1a32" , .devs = { {"CSC0000" }, {"CSC0010" }, {"CSC0003" } } }, + { .id ="CSC1A32" , .devs = { {"CSC0000" }, {"CSC0010" }, {"CSC0003" } } },/* HP Omnibook 5500 onboard */ { .id ="CSC4232" , .devs = { {"CSC0000" }, {"CSC0002" }, {
"CSC0003" } } },
/* Unnamed CS4236 card (Made in Taiwan) */
{ .id = "CSC4236", .devs = { { "CSC0000" }, { "CSC0010" }, {
"CSC0003" } } },
/* Turtle Beach TBS-2000 (CS4232) */
- { .id = "CSC7532", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSCb006" } } },
+ { .id = "CSC7532", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSCB006" } } },
/* Turtle Beach Tropez Plus (CS4232) */
- { .id = "CSC7632", .devs = { { "CSC0000" }, { "CSC0010" }, { "PNPb006" } } },
+ { .id = "CSC7632", .devs = { { "CSC0000" }, { "CSC0010" }, { "PNPB006" } } },
/* SIC CrystalWave 32 (CS4232) */
- { .id = "CSCf032", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
+ { .id = "CSCF032", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
/* Netfinity 3000 on-board soundcard */
- { .id = "CSCe825", .devs = { { "CSC0100" }, { "CSC0110" }, { "CSC010f" } } },
+ { .id = "CSCE825", .devs = { { "CSC0100" }, { "CSC0110" }, { "CSC010F" } } },
/* --- */
{ .id = "" } /* end */
};
@@ -196,9 +196,9 @@ static struct pnp_card_device_id snd_cs423x_pnpids[] = {
/* Digital PC 5000 Onboard - CS4236B */
{ .id = "CSC0735", .devs = { { "CSC0000" }, { "CSC0010" } } }, /* some uknown CS4236B */
- { .id = "CSC0b35", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
+ { .id = "CSC0B35", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
/* Intel PR440FX Onboard sound */
- { .id = "CSC0b36", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
+ { .id = "CSC0B36", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
/* CS4235 on mainboard without MPU */
{ .id = "CSC1425", .devs = { { "CSC0100" }, { "CSC0110" } } }, /* Gateway E1000 Onboard CS4236B */
@@ -206,7 +206,7 @@ static struct pnp_card_device_id snd_cs423x_pnpids[] = {
/* HP 6330 Onboard sound */
{ .id = "CSC1525", .devs = { { "CSC0100" }, { "CSC0110" }, {
"CSC0103" } } },
/* Crystal Computer TidalWave128 */
- { .id = "CSC1e37", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
+ { .id = "CSC1E37", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
/* ACER AW37 - CS4235 */
{ .id = "CSC4236", .devs = { { "CSC0000" }, { "CSC0010" }, {
"CSC0003" } } },
/* build-in soundcard in EliteGroup P5TX-LA motherboard - CS4237B */
@@ -234,35 +234,35 @@ static struct pnp_card_device_id snd_cs423x_pnpids[] = {
/* IBM Aptiva 2137 E24 Onboard - CS4237B */
{ .id = "CSC8037", .devs = { { "CSC0000" }, { "CSC0010" }, {
"CSC0003" } } },
/* IBM IntelliStation M Pro motherboard */
- { .id = "CSCc835", .devs = { { "CSC0000" }, { "CSC0010" } } },
+ { .id = "CSCC835", .devs = { { "CSC0000" }, { "CSC0010" } } },
/* Guillemot MaxiSound 16 PnP - CS4236B */
{ .id = "CSC9836", .devs = { { "CSC0000" }, { "CSC0010" }, {
"CSC0003" } } },
/* Gallant SC-70P */
{ .id = "CSC9837", .devs = { { "CSC0000" }, { "CSC0010" }, {
"CSC0003" } } },
/* Techmakers MF-4236PW */
- { .id = "CSCa736", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
+ { .id = "CSCA736", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
/* TerraTec AudioSystem EWS64XL - CS4236B */
- { .id = "CSCa836", .devs = { { "CSCa800" }, { "CSCa810" }, { "CSCa803" } } },
+ { .id = "CSCA836", .devs = { { "CSCA800" }, { "CSCA810" }, { "CSCA803" } } },
/* TerraTec AudioSystem EWS64XL - CS4236B */
- { .id = "CSCa836", .devs = { { "CSCa800" }, { "CSCa810" } } },
+ { .id = "CSCA836", .devs = { { "CSCA800" }, { "CSCA810" } } },
/* ACER AW37/Pro - CS4235 */
- { .id = "CSCd925", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
+ { .id = "CSCD925", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
/* ACER AW35/Pro - CS4237B */
- { .id = "CSCd937", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
+ { .id = "CSCD937", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
/* CS4235 without MPU401 */
- { .id = "CSCe825", .devs = { { "CSC0100" }, { "CSC0110" } } },
+ { .id = "CSCE825", .devs = { { "CSC0100" }, { "CSC0110" } } },
/* Unknown SiS530 - CS4235 */
{ .id = "CSC4825", .devs = { { "CSC0100" }, { "CSC0110" } } }, /* IBM IntelliStation M Pro 6898 11U - CS4236B */
- { .id = "CSCe835", .devs = { { "CSC0000" }, { "CSC0010" } } },
+ { .id = "CSCE835", .devs = { { "CSC0000" }, { "CSC0010" } } },
/* IBM PC 300PL Onboard - CS4236B */
- { .id = "CSCe836", .devs = { { "CSC0000" }, { "CSC0010" } } },
+ { .id = "CSCE836", .devs = { { "CSC0000" }, { "CSC0010" } } },
/* Some noname CS4236 based card */
- { .id = "CSCe936", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
+ { .id = "CSCE936", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
/* CS4236B */
- { .id = "CSCf235", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
+ { .id = "CSCF235", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
/* CS4236B */
- { .id = "CSCf238", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
+ { .id = "CSCF238", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
/* --- */
{ .id = "" } /* end */
};
sound/isa/gus/interwave.c +4 -4
@@ -142,19 +142,19 @@ static struct pnp_card_device_id snd_interwave_pnpids[] = {/* Gravis UltraSound Plug & Play */ { .id = "GRV0001", .devs = { { .id = "GRV0000" } } },/* STB SoundRage32 */ - { .id = "STB011a", .devs = { { .id = "STB0010" } } }, + { .id = "STB011A", .devs = { { .id = "STB0010" } } },/* MED3210 */ { .id = "DXP3201", .devs = { { .id = "DXP0010" } } },/* Dynasonic Pro */ /* This device also have CDC1117:DynaSonix Pro Audio Effects Processor */ { .id = "CDC1111", .devs = { { .id = "CDC1112" } } },/* Panasonic PCA761AW Audio Card */ - { .id = "ADV55ff", .devs = { { .id = "ADV0010" } } }, + { .id = "ADV55FF", .devs = { { .id = "ADV0010" } } },/* InterWave STB without TEA6330T */ - { .id = "ADV550a", .devs = { { .id = "ADV0010" } } }, + { .id = "ADV550A", .devs = { { .id = "ADV0010" } } },#else /* InterWave STB with TEA6330T */ - { .id = "ADV550a", .devs = { { .id = "ADV0010" }, { .id = "ADV0015" } } }, + { .id = "ADV550A", .devs = { { .id = "ADV0010" }, { .id = "ADV0015" } } },#endif { .id = "" } };
sound/isa/sb/sb16.c +18 -18
@@ -161,12 +161,12 @@ static struct pnp_card_device_id snd_sb16_pnpids[] = {/* Sound Blaster 16 PnP */ { .id = "CTL0029", .devs = { { "CTL0031" } } },/* Sound Blaster 16 PnP */ - { .id = "CTL002a", .devs = { { "CTL0031" } } }, + { .id = "CTL002A", .devs = { { "CTL0031" } } },/* Sound Blaster 16 PnP */ /* Note: This card has also a CTL0051:StereoEnhance device!!! */ - { .id = "CTL002b", .devs = { { "CTL0031" } } }, + { .id = "CTL002B", .devs = { { "CTL0031" } } },/* Sound Blaster 16 PnP */ - { .id = "CTL002c", .devs = { { "CTL0031" } } }, + { .id = "CTL002C", .devs = { { "CTL0031" } } },/* Sound Blaster Vibra16S */ { .id = "CTL0051", .devs = { { "CTL0001" } } },/* Sound Blaster Vibra16C */
@@ -177,9 +177,9 @@ static struct pnp_card_device_id snd_sb16_pnpids[] = {/* but ct4131 on a sticker on the board.. */ { .id = "CTL0086", .devs = { { "CTL0041" } } },/* Sound Blaster Vibra16X */ - { .id = "CTL00f0", .devs = { { "CTL0043" } } }, + { .id = "CTL00F0", .devs = { { "CTL0043" } } },/* Sound Blaster 16 (Virtual PC 2004) */ - { .id = "tBA03b0", .devs = { {.id="PNPb003" } } }, + { .id = "TBA03B0", .devs = { {.id="PNPB003" } } },#else /* SNDRV_SBAWE defined */ /* Sound Blaster AWE 32 PnP */ { .id = "CTL0035", .devs = { { "CTL0031" }, { "CTL0021" } } },
@@ -204,31 +204,31 @@ static struct pnp_card_device_id snd_sb16_pnpids[] = {/* Sound Blaster AWE 32 PnP */ { .id = "CTL0054", .devs = { { "CTL0031" }, { "CTL0021" } } },/* Sound Blaster AWE 32 PnP */ - { .id = "CTL009a", .devs = { { "CTL0041" }, { "CTL0021" } } }, + { .id = "CTL009A", .devs = { { "CTL0041" }, { "CTL0021" } } },/* Sound Blaster AWE 32 PnP */ - { .id = "CTL009c", .devs = { { "CTL0041" }, { "CTL0021" } } }, + { .id = "CTL009C", .devs = { { "CTL0041" }, { "CTL0021" } } },/* Sound Blaster 32 PnP */ - { .id = "CTL009f", .devs = { { "CTL0041" }, { "CTL0021" } } }, + { .id = "CTL009F", .devs = { { "CTL0041" }, { "CTL0021" } } },/* Sound Blaster AWE 64 PnP */ - { .id = "CTL009d", .devs = { { "CTL0042" }, { "CTL0022" } } }, + { .id = "CTL009D", .devs = { { "CTL0042" }, { "CTL0022" } } },/* Sound Blaster AWE 64 PnP Gold */ - { .id = "CTL009e", .devs = { { "CTL0044" }, { "CTL0023" } } }, + { .id = "CTL009E", .devs = { { "CTL0044" }, { "CTL0023" } } },/* Sound Blaster AWE 64 PnP Gold */ - { .id = "CTL00b2", .devs = { { "CTL0044" }, { "CTL0023" } } }, + { .id = "CTL00B2", .devs = { { "CTL0044" }, { "CTL0023" } } },/* Sound Blaster AWE 64 PnP */ - { .id = "CTL00c1", .devs = { { "CTL0042" }, { "CTL0022" } } }, + { .id = "CTL00C1", .devs = { { "CTL0042" }, { "CTL0022" } } },/* Sound Blaster AWE 64 PnP */ - { .id = "CTL00c3", .devs = { { "CTL0045" }, { "CTL0022" } } }, + { .id = "CTL00C3", .devs = { { "CTL0045" }, { "CTL0022" } } },/* Sound Blaster AWE 64 PnP */ - { .id = "CTL00c5", .devs = { { "CTL0045" }, { "CTL0022" } } }, + { .id = "CTL00C5", .devs = { { "CTL0045" }, { "CTL0022" } } },/* Sound Blaster AWE 64 PnP */ - { .id = "CTL00c7", .devs = { { "CTL0045" }, { "CTL0022" } } }, + { .id = "CTL00C7", .devs = { { "CTL0045" }, { "CTL0022" } } },/* Sound Blaster AWE 64 PnP */ - { .id = "CTL00e4", .devs = { { "CTL0045" }, { "CTL0022" } } }, + { .id = "CTL00E4", .devs = { { "CTL0045" }, { "CTL0022" } } },/* Sound Blaster AWE 64 PnP */ - { .id = "CTL00e9", .devs = { { "CTL0045" }, { "CTL0022" } } }, + { .id = "CTL00E9", .devs = { { "CTL0045" }, { "CTL0022" } } },/* Sound Blaster 16 PnP (AWE) */ - { .id = "CTL00ed", .devs = { { "CTL0041" }, { "CTL0070" } } }, + { .id = "CTL00ED", .devs = { { "CTL0041" }, { "CTL0070" } } },/* Generic entries */ { .id = "CTLXXXX" , .devs = { { "CTL0031" }, { "CTL0021" } } }, { .id = "CTLXXXX" , .devs = { { "CTL0041" }, { "CTL0021" } } },
sound/isa/wavefront/wavefront.c +2 -2
@@ -91,9 +91,9 @@ static int pnp_registered;static struct pnp_card_device_id snd_wavefront_pnpids[] = {/* Tropez */ - { .id ="CSC7532" , .devs = { {"CSC0000" }, {"CSC0010" }, {"PnPb006" }, {"CSC0004" } } }, + { .id ="CSC7532" , .devs = { {"CSC0000" }, {"CSC0010" }, {"PNPB006" }, {"CSC0004" } } },/* Tropez+ */ - { .id ="CSC7632" , .devs = { {"CSC0000" }, {"CSC0010" }, {"PnPb006" }, {"CSC0004" } } }, + { .id ="CSC7632" , .devs = { {"CSC0000" }, {"CSC0010" }, {"PNPB006" }, {"CSC0004" } } }, { .id ="" } };
sound/oss/sb_card.h +5 -5
@@ -37,13 +37,13 @@ static struct pnp_card_device_id sb_pnp_card_table[] = {/* Sound Blaster 16 */ {.id = "CTL0029", .driver_data = 0, .devs = { {.id="CTL0031"}, } }, /* Sound Blaster 16 */ - {.id = "CTL002a", .driver_data = 0, .devs = { {.id="CTL0031"}, } }, + {.id = "CTL002A", .driver_data = 0, .devs = { {.id="CTL0031"}, } }, /* Sound Blaster 16 */ - {.id = "CTL002b", .driver_data = 0, .devs = { {.id="CTL0031"}, } }, + {.id = "CTL002B", .driver_data = 0, .devs = { {.id="CTL0031"}, } }, /* Sound Blaster 16 */ - {.id = "CTL002c", .driver_data = 0, .devs = { {.id="CTL0031"}, } }, + {.id = "CTL002C", .driver_data = 0, .devs = { {.id="CTL0031"}, } }, /* Sound Blaster 16 */ - {.id = "CTL00ed", .driver_data = 0, .devs = { {.id="CTL0041"}, } }, + {.id = "CTL00ED", .driver_data = 0, .devs = { {.id="CTL0041"}, } }, /* Sound Blaster 16 */ {.id = "CTL0086", .driver_data = 0, .devs = { {.id="CTL0041"}, } }, /* Sound Blaster Vibra16S */
@@ -141,7 +141,7 @@ static struct pnp_card_device_id sb_pnp_card_table[] = { {.id="@X@2001"}, {.id="@H@0001"}, } },/* Sound Blaster 16 (Virtual PC 2004) */ - {.id = "tBA03b0", .driver_data = 0, .devs = { {.id="PNPb003"}, } }, + {.id = "TBA03B0", .driver_data = 0, .devs = { {.id="PNPB003"}, } },/* -end- */ {.id = "", } };
Quoted 3 lines · Philipp Kohlbecher
If I understand correctly, ACPI
_HIDs(including PNP IDs) should be all uppercase, including the hex digits, cf. ACPI Specification 3.0b [1], pp. 162-3
Section 6.1.4, "_HID (Hardware ID)" says:
A valid PNP ID must be of the form “AAA####” where A is an uppercase letter and # is a hex digit. A valid ACPI ID must be of the form “ACPI####” where # is a hex digit.
I don't see the part about requiring the hex digits to be uppercase. Did I miss it, or is it somewhere else?
Quoted 7 lines
and acpi_glb_hex_to_ascii[] in
drivers/acpi/utilities/utglobal.c.Since
compare_pnp_id()indrivers/pnp/driver.cis case-insensitive, the case should only matter for theMODULE_DEVICE_TABLEand thus for module aliases, as modprobe usesfnmatch()to match aliases, which is case-sensitive. Therefore, using uppercase letters in PNP IDs can lead to non-functional module aliases.
Your patch converts PNP IDs to uppercase, so you must mean that using *lowercase* letters can lead to non-functional module aliases.
There are definitely some inconsistencies that it would be nice to fix, if we can do it safely. For example, for ISAPNP and PNPBIOS devices, I think we always generate lowercase hex digits in the PNP IDs. For PNPACPI, we generate uppercase digits for numeric _HIDs, but we use string _HIDs unchanged.
Did you trip over an actual problem that is fixed by this patch? If so, can you give any more details?
Bjorn
Quoted 551 lines
This patch converts all PNP IDs to uppercase.
[1] http://www.acpi.info/spec.htm
Signed-off-by Philipp Kohlbecher <[email protected]>---
I have successfully tested this patch for
drivers/rtc/rtc-cmos.c.If you would rather have this as a series of patches, one per file, let me know.
I hope I did not forget any recipients and that I didn't spam anyone unnecessarily. If I did, I apologize.
arch/x86/kernel/rtc.c | 2 +- drivers/input/gameport/ns558.c | 6 ++-- drivers/input/serio/i8042-x86ia64io.h | 16 ++++++------ drivers/input/touchscreen/htcpen.c | 2 +- drivers/media/radio/radio-cadet.c | 2 +- drivers/net/3c509.c | 4 +- drivers/net/irda/smsc-ircc2.c | 2 +- drivers/platform/x86/fujitsu-laptop.c | 2 +- drivers/platform/x86/wmi.c | 2 +- drivers/pnp/quirks.c | 4 +- drivers/pnp/system.c | 4 +- drivers/rtc/rtc-cmos.c | 6 ++-- sound/drivers/mpu401/mpu401.c | 2 +- sound/isa/cs423x/cs4236.c | 42 ++++++++++++++++---------------- sound/isa/gus/interwave.c | 8 +++--- sound/isa/sb/sb16.c | 36 ++++++++++++++-------------- sound/isa/wavefront/wavefront.c | 4 +- sound/oss/sb_card.h | 10 ++++---- 18 files changed, 77 insertions(+), 77 deletions(-)arch/x86/kernel/rtc.c +1
-1@@ -224,7 +224,7 @@ static __init int add_rtc_cmos(void) {#ifdef CONFIG_PNP static const char *ids[]__initconst = - {"PNP0b00" ,"PNP0b01" ,"PNP0b02" , }; + {"PNP0B00" ,"PNP0B01" ,"PNP0B02" , };struct pnp_dev *dev;struct pnp_id *id;int i;drivers/input/gameport/ns558.c +3
-3@@ -171,11 +171,11 @@ static struct pnp_device_id pnp_devids[] = { { .id = "@P@0020", .driver_data = 0 }, /* ALS 200 */ { .id = "@P@1001", .driver_data = 0 }, /* ALS 100+ */ { .id = "@P@2001", .driver_data = 0 }, /* ALS 120 */ - { .id = "ASB16fd", .driver_data = 0 }, /* AdLib NSC16 */ + { .id = "ASB16FD", .driver_data = 0 }, /* AdLib NSC16 */ { .id = "AZT3001", .driver_data = 0 }, /* AZT1008 */ { .id = "CDC0001", .driver_data = 0 }, /* Opl3-SAx */ { .id = "CSC0001", .driver_data = 0 }, /* CS4232 */ - { .id = "CSC000f", .driver_data = 0 }, /* CS4236 */ + { .id = "CSC000F", .driver_data = 0 }, /* CS4236 */ { .id = "CSC0101", .driver_data = 0 }, /* CS4327 */ { .id = "CTL7001", .driver_data = 0 }, /* SB16 */ { .id = "CTL7002", .driver_data = 0 }, /* AWE64 */@@ -188,7 +188,7 @@ static struct pnp_device_id pnp_devids[] = { { .id = "OPT0001", .driver_data = 0 }, /* OPTi Audio16 */ { .id = "YMH0006", .driver_data = 0 }, /* Opl3-SA */ { .id = "YMH0022", .driver_data = 0 }, /* Opl3-SAx */ - { .id = "PNPb02f", .driver_data = 0 }, /* Generic */ + { .id = "PNPB02F", .driver_data = 0 }, /* Generic */ { .id = "", }, };drivers/input/serio/i8042-x86ia64io.h +0
-0@@ -510,7 +510,7 @@ static int i8042_pnp_aux_probe(struct pnp_dev *dev,const struct
pnp_device_id*static struct
pnp_device_idpnp_kbd_devids[] = {
{ .id = "PNP0303", .driver_data = 0 },drivers/input/serio/i8042-x86ia64io.h +8
-8- { .id = "PNP030b", .driver_data = 0 }, + { .id = "PNP030B", .driver_data = 0 }, { .id = "", }, };@@ -523,13 +523,13 @@ static struct pnp_driver i8042_pnp_kbd_driver = {static struct pnp_device_id pnp_aux_devids[] = { { .id ="FJC6000" , .driver_data =0 }, { .id ="FJC6001" , .driver_data =0 }, - { .id ="PNP0f03" , .driver_data =0 }, - { .id ="PNP0f0b" , .driver_data =0 }, - { .id ="PNP0f0e" , .driver_data =0 }, - { .id ="PNP0f12" , .driver_data =0 }, - { .id ="PNP0f13" , .driver_data =0 }, - { .id ="PNP0f19" , .driver_data =0 }, - { .id ="PNP0f1c" , .driver_data =0 }, + { .id ="PNP0F03" , .driver_data =0 }, + { .id ="PNP0F0B" , .driver_data =0 }, + { .id ="PNP0F0E" , .driver_data =0 }, + { .id ="PNP0F12" , .driver_data =0 }, + { .id ="PNP0F13" , .driver_data =0 }, + { .id ="PNP0F19" , .driver_data =0 }, + { .id ="PNP0F1C" , .driver_data =0 }, { .id ="SYN0801" , .driver_data =0 }, { .id ="" , }, };drivers/input/touchscreen/htcpen.c +1
-1@@ -48,7 +48,7 @@ module_param(invert_y, bool, 0644);MODULE_PARM_DESC (invert_y,"If set, Y axis is inverted" );static struct pnp_device_id pnp_ids[] = { - { .id ="PNP0cc0" }, + { .id ="PNP0CC0" }, { .id ="" } };MODULE_DEVICE_TABLE (pnp, pnp_ids);drivers/media/radio/radio-cadet.c +1
-1@@ -592,7 +592,7 @@ static struct video_device cadet_radio = {static struct pnp_device_id cadet_pnp_devices[] = {/* ADS Cadet AM/FM Radio Card */ - {.id ="MSM0c24" , .driver_data =0 }, + {.id ="MSM0C24" , .driver_data =0 }, {.id ="" } };drivers/net/3c509.c +2
-2@@ -402,8 +402,8 @@ static struct pnp_device_id el3_pnp_ids[] = { { .id = "TCM5094" }, /* 3Com Etherlink III (combo) */ { .id = "TCM5095" }, /* 3Com Etherlink III (TPO) */ { .id = "TCM5098" }, /* 3Com Etherlink III (TPC) */ - { .id = "PNP80f7" }, /* 3Com Etherlink III compatible */ - { .id = "PNP80f8" }, /* 3Com Etherlink III compatible */ + { .id = "PNP80F7" }, /* 3Com Etherlink III compatible */ + { .id = "PNP80F8" }, /* 3Com Etherlink III compatible */ { .id = "" } };MODULE_DEVICE_TABLE (pnp, el3_pnp_ids);drivers/net/irda/smsc-ircc2.c +1
-1@@ -365,7 +365,7 @@ static inline void register_bank(int iobase, int bank)/* PNP hotplug support */ static const struct pnp_device_id smsc_ircc_pnp_table[] = { - { .id ="SMCf010" , .driver_data =0 }, + { .id ="SMCF010" , .driver_data =0 },/* and presumably others */ { } };drivers/platform/x86/fujitsu-laptop.c +1
-1@@ -1284,7 +1284,7 @@MODULE_ALIAS ("dmi:*:svnFUJITSUSIEMENS:*:pvr:rvnFUJITSU:rnFJNB1E6:*:cvrS6420:*" );MODULE_ALIAS ("dmi:*:svnFUJITSU:*:pvr:rvnFUJITSU:rnFJNB19C:*:cvrS7020:*" );static struct pnp_device_id pnp_ids[] = { - {.id ="FUJ02bf" }, + {.id ="FUJ02BF" }, {.id ="FUJ02B1" }, {.id ="FUJ02E3" },{.id = ""}
drivers/platform/x86/wmi.c +1
-1@@ -84,7 +84,7 @@ static int acpi_wmi_add(struct acpi_device *device);static const struct acpi_device_id wmi_device_ids[] = { {"PNP0C14" ,0 }, - {"pnp0c14" ,0 }, + {"PNP0C14" ,0 }, {"" ,0 }, };MODULE_DEVICE_TABLE (acpi, wmi_device_ids);drivers/pnp/quirks.c +2
-2@@ -325,8 +325,8 @@ static struct pnp_fixup pnp_fixups[] = { {"ADS7181", quirk_add_irq_optional_dependent_sets}, {"AZT0002", quirk_add_irq_optional_dependent_sets},/* PnP resources that might overlap PCI BARs */ - {"PNP0c01", quirk_system_pci_resources}, - {"PNP0c02", quirk_system_pci_resources}, + {"PNP0C01", quirk_system_pci_resources}, + {"PNP0C02", quirk_system_pci_resources}, {""} };drivers/pnp/system.c +2
-2@@ -16,9 +16,9 @@static const struct pnp_device_id pnp_dev_table[] = {/* General ID for reserving resources */ - {"PNP0c02" ,0 }, + {"PNP0C02" ,0 },/* memory controller */ - {"PNP0c01" ,0 }, + {"PNP0C01" ,0 }, {"" ,0 } };drivers/rtc/rtc-cmos.c +3
-3@@ -1110,9 +1110,9 @@ static void cmos_pnp_shutdown(struct device *pdev) }static const struct pnp_device_id rtc_ids[] = { - { .id ="PNP0b00" , }, - { .id ="PNP0b01" , }, - { .id ="PNP0b02" , }, + { .id ="PNP0B00" , }, + { .id ="PNP0B01" , }, + { .id ="PNP0B02" , }, { }, };MODULE_DEVICE_TABLE (pnp, rtc_ids);sound/drivers/mpu401/mpu401.c +1
-1@@ -150,7 +150,7 @@ static struct platform_driver snd_mpu401_driver = {#define IO_EXTENT 2static struct pnp_device_id snd_mpu401_pnpids[] = { - { .id ="PNPb006" }, + { .id ="PNPB006" }, { .id ="" } };sound/isa/cs423x/cs4236.c +3
-4@@ -164,21 +164,21 @@ MODULE_DEVICE_TABLE(pnp, snd_cs4232_pnpbiosids);#define CS423X_ISAPNP_DRIVER "cs4232_isapnp"static struct pnp_card_device_id snd_cs423x_pnpids[] = {/* Philips PCA70PS */ - { .id ="CSC0d32" , .devs = { {"CSC0000" }, {"CSC0010" }, {"PNPb006" } } }, + { .id = "CSC0D32", .devs = { { "CSC0000" }, { "CSC0010" }, { "PNPB006" } } },/* TerraTec Maestro 32/96 (CS4232) */ - { .id = "CSC1a32", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } }, + { .id = "CSC1A32", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },/* HP Omnibook 5500 onboard */ { .id = "CSC4232", .devs = { { "CSC0000" }, { "CSC0002" }, { "CSC0003" } } },/* Unnamed CS4236 card (Made in Taiwan) */ { .id = "CSC4236", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },/* Turtle Beach TBS-2000 (CS4232) */ - { .id = "CSC7532", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSCb006" } } }, + { .id = "CSC7532", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSCB006" } } },/* Turtle Beach Tropez Plus (CS4232) */ - { .id = "CSC7632", .devs = { { "CSC0000" }, { "CSC0010" }, { "PNPb006"} } },
sound/isa/cs423x/cs4236.c +1
-0+ { .id = "CSC7632", .devs = { { "CSC0000" }, { "CSC0010" }, { "PNPB006"} } },
/* SIC CrystalWave 32 (CS4232) */sound/isa/cs423x/cs4236.c +0
-1- { .id = "CSCf032", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003"} } },
sound/isa/cs423x/cs4236.c +1
-0+ { .id = "CSCF032", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003"} } },
/* Netfinity 3000 on-board soundcard */sound/isa/cs423x/cs4236.c +0
-1- { .id = "CSCe825", .devs = { { "CSC0100" }, { "CSC0110" }, { "CSC010f"} } },
sound/isa/cs423x/cs4236.c +1
-0+ { .id = "CSCE825", .devs = { { "CSC0100" }, { "CSC0110" }, { "CSC010F"} } },
/* --- */
{ .id = "" } /* end */
};sound/isa/cs423x/cs4236.c +2
-2@@ -196,9 +196,9 @@ static struct pnp_card_device_id snd_cs423x_pnpids[] = {/* Digital PC 5000 Onboard - CS4236B */ { .id = "CSC0735", .devs = { { "CSC0000" }, { "CSC0010" } } },/* some uknown CS4236B */ - { .id = "CSC0b35", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } }, + { .id = "CSC0B35", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },/* Intel PR440FX Onboard sound */ - { .id = "CSC0b36", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } }, + { .id = "CSC0B36", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003"} } },
/* CS4235 on mainboard without MPU */
{ .id = "CSC1425", .devs = { { "CSC0100" }, { "CSC0110" } } }, /* Gateway E1000 Onboard CS4236B */sound/isa/cs423x/cs4236.c +1
-1@@ -206,7 +206,7 @@ static struct pnp_card_device_id snd_cs423x_pnpids[] = {/* HP 6330 Onboard sound */ { .id = "CSC1525", .devs = { { "CSC0100" }, { "CSC0110" }, { "CSC0103" } } },/* Crystal Computer TidalWave128 */ - { .id = "CSC1e37", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } }, + { .id = "CSC1E37", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },/* ACER AW37 - CS4235 */
{ .id = "CSC4236", .devs = { { "CSC0000" }, { "CSC0010" }, {
"CSC0003" } } },
/* build-in soundcard in EliteGroup P5TX-LA motherboard - CS4237B */sound/isa/cs423x/cs4236.c +9
-10@@ -234,35 +234,35 @@ static struct pnp_card_device_id snd_cs423x_pnpids[] = {/* IBM Aptiva 2137 E24 Onboard - CS4237B */ { .id = "CSC8037", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },/* IBM IntelliStation M Pro motherboard */ - { .id = "CSCc835", .devs = { { "CSC0000" }, { "CSC0010" } } }, + { .id = "CSCC835", .devs = { { "CSC0000" }, { "CSC0010" } } },/* Guillemot MaxiSound 16 PnP - CS4236B */ { .id = "CSC9836", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },/* Gallant SC-70P */ { .id = "CSC9837", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },/* Techmakers MF-4236PW */ - { .id = "CSCa736", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } }, + { .id = "CSCA736", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },/* TerraTec AudioSystem EWS64XL - CS4236B */ - { .id = "CSCa836", .devs = { { "CSCa800" }, { "CSCa810" }, { "CSCa803" } } }, + { .id = "CSCA836", .devs = { { "CSCA800" }, { "CSCA810" }, { "CSCA803" } } },/* TerraTec AudioSystem EWS64XL - CS4236B */ - { .id = "CSCa836", .devs = { { "CSCa800" }, { "CSCa810" } } }, + { .id = "CSCA836", .devs = { { "CSCA800" }, { "CSCA810" } } },/* ACER AW37/Pro - CS4235 */ - { .id = "CSCd925", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } }, + { .id = "CSCD925", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },/* ACER AW35/Pro - CS4237B */ - { .id = "CSCd937", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } }, + { .id = "CSCD937", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },/* CS4235 without MPU401 */ - { .id = "CSCe825", .devs = { { "CSC0100" }, { "CSC0110" } } }, + { .id = "CSCE825", .devs = { { "CSC0100" }, { "CSC0110" } } },/* Unknown SiS530 - CS4235 */ { .id = "CSC4825", .devs = { { "CSC0100" }, { "CSC0110" } } },/* IBM IntelliStation M Pro 6898 11U - CS4236B */ - { .id = "CSCe835", .devs = { { "CSC0000" }, { "CSC0010" } } }, + { .id = "CSCE835", .devs = { { "CSC0000" }, { "CSC0010" } } },/* IBM PC 300PL Onboard - CS4236B */ - { .id = "CSCe836", .devs = { { "CSC0000" }, { "CSC0010" } } }, + { .id = "CSCE836", .devs = { { "CSC0000" }, { "CSC0010" } } },/* Some noname CS4236 based card */ - { .id = "CSCe936", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003"} } },
sound/isa/cs423x/cs4236.c +1
-0+ { .id = "CSCE936", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003"} } },
/* CS4236B */sound/isa/cs423x/cs4236.c +0
-1- { .id = "CSCf235", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003"} } },
sound/isa/cs423x/cs4236.c +1
-0+ { .id = "CSCF235", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003"} } },
/* CS4236B */sound/isa/cs423x/cs4236.c +0
-1- { .id = "CSCf238", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003"} } },
sound/isa/cs423x/cs4236.c +1
-0+ { .id = "CSCF238", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003"} } },
/* --- */
{ .id = "" } /* end */
};sound/isa/gus/interwave.c +4
-4@@ -142,19 +142,19 @@ static struct pnp_card_device_id snd_interwave_pnpids[] = {/* Gravis UltraSound Plug & Play */ { .id = "GRV0001", .devs = { { .id = "GRV0000" } } },/* STB SoundRage32 */ - { .id = "STB011a", .devs = { { .id = "STB0010" } } }, + { .id = "STB011A", .devs = { { .id = "STB0010" } } },/* MED3210 */ { .id = "DXP3201", .devs = { { .id = "DXP0010" } } },/* Dynasonic Pro */ /* This device also have CDC1117:DynaSonix Pro Audio Effects Processor */ { .id = "CDC1111", .devs = { { .id = "CDC1112" } } },/* Panasonic PCA761AW Audio Card */ - { .id = "ADV55ff", .devs = { { .id = "ADV0010" } } }, + { .id = "ADV55FF", .devs = { { .id = "ADV0010" } } },/* InterWave STB without TEA6330T */ - { .id = "ADV550a", .devs = { { .id = "ADV0010" } } }, + { .id = "ADV550A", .devs = { { .id = "ADV0010" } } }, #else/* InterWave STB with TEA6330T */ - { .id = "ADV550a", .devs = { { .id = "ADV0010" }, { .id = "ADV0015" } } }, + { .id = "ADV550A", .devs = { { .id = "ADV0010" }, { .id = "ADV0015" } } }, #endif { .id = "" }};sound/isa/sb/sb16.c +18
-18@@ -161,12 +161,12 @@ static struct pnp_card_device_id snd_sb16_pnpids[] = {/* Sound Blaster 16 PnP */ { .id = "CTL0029", .devs = { { "CTL0031" } } },/* Sound Blaster 16 PnP */ - { .id = "CTL002a", .devs = { { "CTL0031" } } }, + { .id = "CTL002A", .devs = { { "CTL0031" } } },/* Sound Blaster 16 PnP */ /* Note: This card has also a CTL0051:StereoEnhance device!!! */ - { .id = "CTL002b", .devs = { { "CTL0031" } } }, + { .id = "CTL002B", .devs = { { "CTL0031" } } },/* Sound Blaster 16 PnP */ - { .id = "CTL002c", .devs = { { "CTL0031" } } }, + { .id = "CTL002C", .devs = { { "CTL0031" } } },/* Sound Blaster Vibra16S */ { .id = "CTL0051", .devs = { { "CTL0001" } } },/* Sound Blaster Vibra16C */ @@ -177,9 +177,9 @@ static struct pnp_card_device_id snd_sb16_pnpids[] = {/* but ct4131 on a sticker on the board.. */ { .id = "CTL0086", .devs = { { "CTL0041" } } },/* Sound Blaster Vibra16X */ - { .id = "CTL00f0", .devs = { { "CTL0043" } } }, + { .id = "CTL00F0", .devs = { { "CTL0043" } } },/* Sound Blaster 16 (Virtual PC 2004) */ - { .id = "tBA03b0", .devs = { {.id="PNPb003" } } }, + { .id = "TBA03B0", .devs = { {.id="PNPB003" } } },#else /* SNDRV_SBAWE defined */ /* Sound Blaster AWE 32 PnP */ { .id = "CTL0035", .devs = { { "CTL0031" }, { "CTL0021" } } },@@ -204,31 +204,31 @@ static struct pnp_card_device_id snd_sb16_pnpids[] = {/* Sound Blaster AWE 32 PnP */ { .id = "CTL0054", .devs = { { "CTL0031" }, { "CTL0021" } } },/* Sound Blaster AWE 32 PnP */ - { .id = "CTL009a", .devs = { { "CTL0041" }, { "CTL0021" } } }, + { .id = "CTL009A", .devs = { { "CTL0041" }, { "CTL0021" } } },/* Sound Blaster AWE 32 PnP */ - { .id = "CTL009c", .devs = { { "CTL0041" }, { "CTL0021" } } }, + { .id = "CTL009C", .devs = { { "CTL0041" }, { "CTL0021" } } },/* Sound Blaster 32 PnP */ - { .id = "CTL009f", .devs = { { "CTL0041" }, { "CTL0021" } } }, + { .id = "CTL009F", .devs = { { "CTL0041" }, { "CTL0021" } } },/* Sound Blaster AWE 64 PnP */ - { .id = "CTL009d", .devs = { { "CTL0042" }, { "CTL0022" } } }, + { .id = "CTL009D", .devs = { { "CTL0042" }, { "CTL0022" } } },/* Sound Blaster AWE 64 PnP Gold */ - { .id = "CTL009e", .devs = { { "CTL0044" }, { "CTL0023" } } }, + { .id = "CTL009E", .devs = { { "CTL0044" }, { "CTL0023" } } },/* Sound Blaster AWE 64 PnP Gold */ - { .id = "CTL00b2", .devs = { { "CTL0044" }, { "CTL0023" } } }, + { .id = "CTL00B2", .devs = { { "CTL0044" }, { "CTL0023" } } },/* Sound Blaster AWE 64 PnP */ - { .id = "CTL00c1", .devs = { { "CTL0042" }, { "CTL0022" } } }, + { .id = "CTL00C1", .devs = { { "CTL0042" }, { "CTL0022" } } },/* Sound Blaster AWE 64 PnP */ - { .id = "CTL00c3", .devs = { { "CTL0045" }, { "CTL0022" } } }, + { .id = "CTL00C3", .devs = { { "CTL0045" }, { "CTL0022" } } },/* Sound Blaster AWE 64 PnP */ - { .id = "CTL00c5", .devs = { { "CTL0045" }, { "CTL0022" } } }, + { .id = "CTL00C5", .devs = { { "CTL0045" }, { "CTL0022" } } },/* Sound Blaster AWE 64 PnP */ - { .id = "CTL00c7", .devs = { { "CTL0045" }, { "CTL0022" } } }, + { .id = "CTL00C7", .devs = { { "CTL0045" }, { "CTL0022" } } },/* Sound Blaster AWE 64 PnP */ - { .id = "CTL00e4", .devs = { { "CTL0045" }, { "CTL0022" } } }, + { .id = "CTL00E4", .devs = { { "CTL0045" }, { "CTL0022" } } },/* Sound Blaster AWE 64 PnP */ - { .id = "CTL00e9", .devs = { { "CTL0045" }, { "CTL0022" } } }, + { .id = "CTL00E9", .devs = { { "CTL0045" }, { "CTL0022" } } },/* Sound Blaster 16 PnP (AWE) */ - { .id = "CTL00ed", .devs = { { "CTL0041" }, { "CTL0070" } } }, + { .id = "CTL00ED", .devs = { { "CTL0041" }, { "CTL0070" } } },/* Generic entries */ { .id = "CTLXXXX" , .devs = { { "CTL0031" }, { "CTL0021" } } }, { .id = "CTLXXXX" , .devs = { { "CTL0041" }, { "CTL0021" } } },sound/isa/wavefront/wavefront.c +2
-2@@ -91,9 +91,9 @@ static int pnp_registered; static struct pnp_card_device_id snd_wavefront_pnpids[] = { /* Tropez */ - { .id ="CSC7532" , .devs = { {"CSC0000" }, {"CSC0010" }, {"PnPb006" }, { "CSC0004" } } }, + { .id = "CSC7532", .devs = { { "CSC0000" }, { "CSC0010" }, { "PNPB006" }, { "CSC0004" } } },/* Tropez+ */ - { .id = "CSC7632", .devs = { { "CSC0000" }, { "CSC0010" }, { "PnPb006" }, { "CSC0004" } } }, + { .id = "CSC7632", .devs = { { "CSC0000" }, { "CSC0010" }, { "PNPB006"}, { "CSC0004" } } },
{ .id = "" }
};sound/oss/sb_card.h +4
-4@@ -37,13 +37,13 @@ static struct pnp_card_device_id sb_pnp_card_table[] = {/* Sound Blaster 16 */ {.id = "CTL0029", .driver_data = 0, .devs = { {.id="CTL0031"}, } }, /* Sound Blaster 16 */ - {.id = "CTL002a", .driver_data = 0, .devs = { {.id="CTL0031"}, } }, + {.id = "CTL002A", .driver_data = 0, .devs = { {.id="CTL0031"}, } }, /* Sound Blaster 16 */ - {.id = "CTL002b", .driver_data = 0, .devs = { {.id="CTL0031"}, } }, + {.id = "CTL002B", .driver_data = 0, .devs = { {.id="CTL0031"}, } }, /* Sound Blaster 16 */ - {.id = "CTL002c", .driver_data = 0, .devs = { {.id="CTL0031"}, } }, + {.id = "CTL002C", .driver_data = 0, .devs = { {.id="CTL0031"}, } }, /* Sound Blaster 16 */ - {.id = "CTL00ed", .driver_data = 0, .devs = { {.id="CTL0041"}, } }, + {.id = "CTL00ED", .driver_data = 0, .devs = { {.id="CTL0041"}, } }, /* Sound Blaster 16 */ {.id = "CTL0086", .driver_data = 0, .devs = { {.id="CTL0041"}, } }, /* Sound Blaster Vibra16S */
sound/oss/sb_card.h static struct pnp_card_device_id sb_pnp_card_table[] = { · line 147
Quoted 8 lines
sound/oss/sb_card.h +1
-1@@ -141,7 +141,7 @@ static struct pnp_card_device_id sb_pnp_card_table[] = { {.id="@X@2001"}, {.id="@H@0001"}, } },/* Sound Blaster 16 (Virtual PC 2004) */ - {.id = "tBA03b0", .driver_data = 0, .devs = { {.id="PNPb003"}, } }, + {.id = "TBA03B0", .driver_data = 0, .devs = { {.id="PNPB003"}, } },/* -end- */ {.id = "", } };
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 11 lines · Bjorn Helgaas
Quoted 1 line · Philipp Kohlbecher
If I understand correctly, ACPI
_HIDs(including PNP IDs) should be all uppercase, including the hex digits, cf. ACPI Specification 3.0b [1], pp. 162-3Section 6.1.4, "
_HID(Hardware ID)" says:A valid PNP ID must be of the form “AAA####” where A is an uppercase letter and # is a hex digit. A valid ACPI ID must be of the form “ACPI####” where # is a hex digit.
I don't see the part about requiring the hex digits to be uppercase. Did I miss it, or is it somewhere else?
It doesn't say explicitly, hence my reservation. The ACPI specification does, however, use uppercase hex digits in all examples of _HIDs.
Quoted 6 lines
Quoted 3 lines
and acpi_glb_hex_to_ascii[] in
drivers/acpi/utilities/utglobal.c.Since
compare_pnp_id()indrivers/pnp/driver.cis case-insensitive, the case should only matter for theMODULE_DEVICE_TABLEand thus for module aliases, as modprobe usesfnmatch()to match aliases, which is case-sensitive. Therefore, using uppercase letters in PNP IDs can lead to non-functional module aliases.Your patch converts PNP IDs to uppercase, so you must mean that using *lowercase* letters can lead to non-functional module aliases.
I do. Thanks for noticing that. Now, how do I make sure this mix-up doesn't go into the commit message? Re-submit or ask the committer to correct it?
Quoted 8 lines
There are definitely some inconsistencies that it would be nice to fix, if we can do it safely. For example, for ISAPNP and PNPBIOS devices, I think we always generate lowercase hex digits in the PNP IDs. For PNPACPI, we generate uppercase digits for numeric
_HIDs, but we use string_HIDsunchanged.Did you trip over an actual problem that is fixed by this patch? If so, can you give any more details?
Yes. After a package update, hwclock stopped using the "--directisa" switch and could not access the RTC anymore. My RTC is handled by rtc-cmos, which is compiled as a module. However, udev did not load this module, as the device's modalias "acpi:PNP0B00:" did not match any of the module's aliasas, including "acpi*:PNP0b00:*". Thus, the system clock was not set correctly at startup (my hardware clock is set to local time). Changing the PNP IDs in drivers/rtc/rtc-cmos.c to use uppercase hex digits solved that problem for me.
Quoted 542 lines
Quoted 542 lines
This patch converts all PNP IDs to uppercase.
[1] http://www.acpi.info/spec.htm
Signed-off-by Philipp Kohlbecher <[email protected]>---
I have successfully tested this patch for
drivers/rtc/rtc-cmos.c.If you would rather have this as a series of patches, one per file, let me know.
I hope I did not forget any recipients and that I didn't spam anyone unnecessarily. If I did, I apologize.
arch/x86/kernel/rtc.c | 2 +- drivers/input/gameport/ns558.c | 6 ++-- drivers/input/serio/i8042-x86ia64io.h | 16 ++++++------ drivers/input/touchscreen/htcpen.c | 2 +- drivers/media/radio/radio-cadet.c | 2 +- drivers/net/3c509.c | 4 +- drivers/net/irda/smsc-ircc2.c | 2 +- drivers/platform/x86/fujitsu-laptop.c | 2 +- drivers/platform/x86/wmi.c | 2 +- drivers/pnp/quirks.c | 4 +- drivers/pnp/system.c | 4 +- drivers/rtc/rtc-cmos.c | 6 ++-- sound/drivers/mpu401/mpu401.c | 2 +- sound/isa/cs423x/cs4236.c | 42 ++++++++++++++++---------------- sound/isa/gus/interwave.c | 8 +++--- sound/isa/sb/sb16.c | 36 ++++++++++++++-------------- sound/isa/wavefront/wavefront.c | 4 +- sound/oss/sb_card.h | 10 ++++---- 18 files changed, 77 insertions(+), 77 deletions(-)arch/x86/kernel/rtc.c +1
-1@@ -224,7 +224,7 @@ static __init int add_rtc_cmos(void) {#ifdef CONFIG_PNP static const char *ids[]__initconst = - {"PNP0b00" ,"PNP0b01" ,"PNP0b02" , }; + {"PNP0B00" ,"PNP0B01" ,"PNP0B02" , };struct pnp_dev *dev;struct pnp_id *id;int i;drivers/input/gameport/ns558.c +3
-3@@ -171,11 +171,11 @@ static struct pnp_device_id pnp_devids[] = { { .id = "@P@0020", .driver_data = 0 }, /* ALS 200 */ { .id = "@P@1001", .driver_data = 0 }, /* ALS 100+ */ { .id = "@P@2001", .driver_data = 0 }, /* ALS 120 */ - { .id = "ASB16fd", .driver_data = 0 }, /* AdLib NSC16 */ + { .id = "ASB16FD", .driver_data = 0 }, /* AdLib NSC16 */ { .id = "AZT3001", .driver_data = 0 }, /* AZT1008 */ { .id = "CDC0001", .driver_data = 0 }, /* Opl3-SAx */ { .id = "CSC0001", .driver_data = 0 }, /* CS4232 */ - { .id = "CSC000f", .driver_data = 0 }, /* CS4236 */ + { .id = "CSC000F", .driver_data = 0 }, /* CS4236 */ { .id = "CSC0101", .driver_data = 0 }, /* CS4327 */ { .id = "CTL7001", .driver_data = 0 }, /* SB16 */ { .id = "CTL7002", .driver_data = 0 }, /* AWE64 */@@ -188,7 +188,7 @@ static struct pnp_device_id pnp_devids[] = { { .id = "OPT0001", .driver_data = 0 }, /* OPTi Audio16 */ { .id = "YMH0006", .driver_data = 0 }, /* Opl3-SA */ { .id = "YMH0022", .driver_data = 0 }, /* Opl3-SAx */ - { .id = "PNPb02f", .driver_data = 0 }, /* Generic */ + { .id = "PNPB02F", .driver_data = 0 }, /* Generic */ { .id = "", }, };drivers/input/serio/i8042-x86ia64io.h +0
-0@@ -510,7 +510,7 @@ static int i8042_pnp_aux_probe(struct pnp_dev *dev,const struct
pnp_device_id*static struct
pnp_device_idpnp_kbd_devids[] = {
{ .id = "PNP0303", .driver_data = 0 },drivers/input/serio/i8042-x86ia64io.h +8
-8- { .id = "PNP030b", .driver_data = 0 }, + { .id = "PNP030B", .driver_data = 0 }, { .id = "", }, };@@ -523,13 +523,13 @@ static struct pnp_driver i8042_pnp_kbd_driver = {static struct pnp_device_id pnp_aux_devids[] = { { .id ="FJC6000" , .driver_data =0 }, { .id ="FJC6001" , .driver_data =0 }, - { .id ="PNP0f03" , .driver_data =0 }, - { .id ="PNP0f0b" , .driver_data =0 }, - { .id ="PNP0f0e" , .driver_data =0 }, - { .id ="PNP0f12" , .driver_data =0 }, - { .id ="PNP0f13" , .driver_data =0 }, - { .id ="PNP0f19" , .driver_data =0 }, - { .id ="PNP0f1c" , .driver_data =0 }, + { .id ="PNP0F03" , .driver_data =0 }, + { .id ="PNP0F0B" , .driver_data =0 }, + { .id ="PNP0F0E" , .driver_data =0 }, + { .id ="PNP0F12" , .driver_data =0 }, + { .id ="PNP0F13" , .driver_data =0 }, + { .id ="PNP0F19" , .driver_data =0 }, + { .id ="PNP0F1C" , .driver_data =0 }, { .id ="SYN0801" , .driver_data =0 }, { .id ="" , }, };drivers/input/touchscreen/htcpen.c +1
-1@@ -48,7 +48,7 @@ module_param(invert_y, bool, 0644);MODULE_PARM_DESC (invert_y,"If set, Y axis is inverted" );static struct pnp_device_id pnp_ids[] = { - { .id ="PNP0cc0" }, + { .id ="PNP0CC0" }, { .id ="" } };MODULE_DEVICE_TABLE (pnp, pnp_ids);drivers/media/radio/radio-cadet.c +1
-1@@ -592,7 +592,7 @@ static struct video_device cadet_radio = {static struct pnp_device_id cadet_pnp_devices[] = {/* ADS Cadet AM/FM Radio Card */ - {.id ="MSM0c24" , .driver_data =0 }, + {.id ="MSM0C24" , .driver_data =0 }, {.id ="" } };drivers/net/3c509.c +2
-2@@ -402,8 +402,8 @@ static struct pnp_device_id el3_pnp_ids[] = { { .id = "TCM5094" }, /* 3Com Etherlink III (combo) */ { .id = "TCM5095" }, /* 3Com Etherlink III (TPO) */ { .id = "TCM5098" }, /* 3Com Etherlink III (TPC) */ - { .id = "PNP80f7" }, /* 3Com Etherlink III compatible */ - { .id = "PNP80f8" }, /* 3Com Etherlink III compatible */ + { .id = "PNP80F7" }, /* 3Com Etherlink III compatible */ + { .id = "PNP80F8" }, /* 3Com Etherlink III compatible */ { .id = "" } };MODULE_DEVICE_TABLE (pnp, el3_pnp_ids);drivers/net/irda/smsc-ircc2.c +1
-1@@ -365,7 +365,7 @@ static inline void register_bank(int iobase, int bank)/* PNP hotplug support */ static const struct pnp_device_id smsc_ircc_pnp_table[] = { - { .id ="SMCf010" , .driver_data =0 }, + { .id ="SMCF010" , .driver_data =0 },/* and presumably others */ { } };drivers/platform/x86/fujitsu-laptop.c +1
-1@@ -1284,7 +1284,7 @@MODULE_ALIAS ("dmi:*:svnFUJITSUSIEMENS:*:pvr:rvnFUJITSU:rnFJNB1E6:*:cvrS6420:*" );MODULE_ALIAS ("dmi:*:svnFUJITSU:*:pvr:rvnFUJITSU:rnFJNB19C:*:cvrS7020:*" );static struct pnp_device_id pnp_ids[] = { - {.id ="FUJ02bf" }, + {.id ="FUJ02BF" }, {.id ="FUJ02B1" }, {.id ="FUJ02E3" },{.id = ""}
drivers/platform/x86/wmi.c +1
-1@@ -84,7 +84,7 @@ static int acpi_wmi_add(struct acpi_device *device);static const struct acpi_device_id wmi_device_ids[] = { {"PNP0C14" ,0 }, - {"pnp0c14" ,0 }, + {"PNP0C14" ,0 }, {"" ,0 }, };MODULE_DEVICE_TABLE (acpi, wmi_device_ids);drivers/pnp/quirks.c +2
-2@@ -325,8 +325,8 @@ static struct pnp_fixup pnp_fixups[] = { {"ADS7181", quirk_add_irq_optional_dependent_sets}, {"AZT0002", quirk_add_irq_optional_dependent_sets},/* PnP resources that might overlap PCI BARs */ - {"PNP0c01", quirk_system_pci_resources}, - {"PNP0c02", quirk_system_pci_resources}, + {"PNP0C01", quirk_system_pci_resources}, + {"PNP0C02", quirk_system_pci_resources}, {""} };drivers/pnp/system.c +2
-2@@ -16,9 +16,9 @@static const struct pnp_device_id pnp_dev_table[] = {/* General ID for reserving resources */ - {"PNP0c02" ,0 }, + {"PNP0C02" ,0 },/* memory controller */ - {"PNP0c01" ,0 }, + {"PNP0C01" ,0 }, {"" ,0 } };drivers/rtc/rtc-cmos.c +3
-3@@ -1110,9 +1110,9 @@ static void cmos_pnp_shutdown(struct device *pdev) }static const struct pnp_device_id rtc_ids[] = { - { .id ="PNP0b00" , }, - { .id ="PNP0b01" , }, - { .id ="PNP0b02" , }, + { .id ="PNP0B00" , }, + { .id ="PNP0B01" , }, + { .id ="PNP0B02" , }, { }, };MODULE_DEVICE_TABLE (pnp, rtc_ids);sound/drivers/mpu401/mpu401.c +1
-1@@ -150,7 +150,7 @@ static struct platform_driver snd_mpu401_driver = {#define IO_EXTENT 2static struct pnp_device_id snd_mpu401_pnpids[] = { - { .id ="PNPb006" }, + { .id ="PNPB006" }, { .id ="" } };sound/isa/cs423x/cs4236.c +3
-4@@ -164,21 +164,21 @@ MODULE_DEVICE_TABLE(pnp, snd_cs4232_pnpbiosids);#define CS423X_ISAPNP_DRIVER "cs4232_isapnp"static struct pnp_card_device_id snd_cs423x_pnpids[] = {/* Philips PCA70PS */ - { .id ="CSC0d32" , .devs = { {"CSC0000" }, {"CSC0010" }, {"PNPb006" } } }, + { .id = "CSC0D32", .devs = { { "CSC0000" }, { "CSC0010" }, { "PNPB006" } } },/* TerraTec Maestro 32/96 (CS4232) */ - { .id = "CSC1a32", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } }, + { .id = "CSC1A32", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },/* HP Omnibook 5500 onboard */ { .id = "CSC4232", .devs = { { "CSC0000" }, { "CSC0002" }, { "CSC0003" } } },/* Unnamed CS4236 card (Made in Taiwan) */ { .id = "CSC4236", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },/* Turtle Beach TBS-2000 (CS4232) */ - { .id = "CSC7532", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSCb006" } } }, + { .id = "CSC7532", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSCB006" } } },/* Turtle Beach Tropez Plus (CS4232) */ - { .id = "CSC7632", .devs = { { "CSC0000" }, { "CSC0010" }, { "PNPb006"} } },
sound/isa/cs423x/cs4236.c +1
-0+ { .id = "CSC7632", .devs = { { "CSC0000" }, { "CSC0010" }, { "PNPB006"} } },
/* SIC CrystalWave 32 (CS4232) */sound/isa/cs423x/cs4236.c +0
-1- { .id = "CSCf032", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003"} } },
sound/isa/cs423x/cs4236.c +1
-0+ { .id = "CSCF032", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003"} } },
/* Netfinity 3000 on-board soundcard */sound/isa/cs423x/cs4236.c +0
-1- { .id = "CSCe825", .devs = { { "CSC0100" }, { "CSC0110" }, { "CSC010f"} } },
sound/isa/cs423x/cs4236.c +1
-0+ { .id = "CSCE825", .devs = { { "CSC0100" }, { "CSC0110" }, { "CSC010F"} } },
/* --- */
{ .id = "" } /* end */
};sound/isa/cs423x/cs4236.c +2
-2@@ -196,9 +196,9 @@ static struct pnp_card_device_id snd_cs423x_pnpids[] = {/* Digital PC 5000 Onboard - CS4236B */ { .id = "CSC0735", .devs = { { "CSC0000" }, { "CSC0010" } } },/* some uknown CS4236B */ - { .id = "CSC0b35", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } }, + { .id = "CSC0B35", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },/* Intel PR440FX Onboard sound */ - { .id = "CSC0b36", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } }, + { .id = "CSC0B36", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003"} } },
/* CS4235 on mainboard without MPU */
{ .id = "CSC1425", .devs = { { "CSC0100" }, { "CSC0110" } } }, /* Gateway E1000 Onboard CS4236B */sound/isa/cs423x/cs4236.c +1
-1@@ -206,7 +206,7 @@ static struct pnp_card_device_id snd_cs423x_pnpids[] = {/* HP 6330 Onboard sound */ { .id = "CSC1525", .devs = { { "CSC0100" }, { "CSC0110" }, { "CSC0103" } } },/* Crystal Computer TidalWave128 */ - { .id = "CSC1e37", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } }, + { .id = "CSC1E37", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },/* ACER AW37 - CS4235 */
{ .id = "CSC4236", .devs = { { "CSC0000" }, { "CSC0010" }, {
"CSC0003" } } },
/* build-in soundcard in EliteGroup P5TX-LA motherboard - CS4237B */sound/isa/cs423x/cs4236.c +9
-10@@ -234,35 +234,35 @@ static struct pnp_card_device_id snd_cs423x_pnpids[] = {/* IBM Aptiva 2137 E24 Onboard - CS4237B */ { .id = "CSC8037", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },/* IBM IntelliStation M Pro motherboard */ - { .id = "CSCc835", .devs = { { "CSC0000" }, { "CSC0010" } } }, + { .id = "CSCC835", .devs = { { "CSC0000" }, { "CSC0010" } } },/* Guillemot MaxiSound 16 PnP - CS4236B */ { .id = "CSC9836", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },/* Gallant SC-70P */ { .id = "CSC9837", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },/* Techmakers MF-4236PW */ - { .id = "CSCa736", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } }, + { .id = "CSCA736", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },/* TerraTec AudioSystem EWS64XL - CS4236B */ - { .id = "CSCa836", .devs = { { "CSCa800" }, { "CSCa810" }, { "CSCa803" } } }, + { .id = "CSCA836", .devs = { { "CSCA800" }, { "CSCA810" }, { "CSCA803" } } },/* TerraTec AudioSystem EWS64XL - CS4236B */ - { .id = "CSCa836", .devs = { { "CSCa800" }, { "CSCa810" } } }, + { .id = "CSCA836", .devs = { { "CSCA800" }, { "CSCA810" } } },/* ACER AW37/Pro - CS4235 */ - { .id = "CSCd925", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } }, + { .id = "CSCD925", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },/* ACER AW35/Pro - CS4237B */ - { .id = "CSCd937", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } }, + { .id = "CSCD937", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },/* CS4235 without MPU401 */ - { .id = "CSCe825", .devs = { { "CSC0100" }, { "CSC0110" } } }, + { .id = "CSCE825", .devs = { { "CSC0100" }, { "CSC0110" } } },/* Unknown SiS530 - CS4235 */ { .id = "CSC4825", .devs = { { "CSC0100" }, { "CSC0110" } } },/* IBM IntelliStation M Pro 6898 11U - CS4236B */ - { .id = "CSCe835", .devs = { { "CSC0000" }, { "CSC0010" } } }, + { .id = "CSCE835", .devs = { { "CSC0000" }, { "CSC0010" } } },/* IBM PC 300PL Onboard - CS4236B */ - { .id = "CSCe836", .devs = { { "CSC0000" }, { "CSC0010" } } }, + { .id = "CSCE836", .devs = { { "CSC0000" }, { "CSC0010" } } },/* Some noname CS4236 based card */ - { .id = "CSCe936", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003"} } },
sound/isa/cs423x/cs4236.c +1
-0+ { .id = "CSCE936", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003"} } },
/* CS4236B */sound/isa/cs423x/cs4236.c +0
-1- { .id = "CSCf235", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003"} } },
sound/isa/cs423x/cs4236.c +1
-0+ { .id = "CSCF235", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003"} } },
/* CS4236B */sound/isa/cs423x/cs4236.c +0
-1- { .id = "CSCf238", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003"} } },
sound/isa/cs423x/cs4236.c +1
-0+ { .id = "CSCF238", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003"} } },
/* --- */
{ .id = "" } /* end */
};sound/isa/gus/interwave.c +4
-4@@ -142,19 +142,19 @@ static struct pnp_card_device_id snd_interwave_pnpids[] = {/* Gravis UltraSound Plug & Play */ { .id = "GRV0001", .devs = { { .id = "GRV0000" } } },/* STB SoundRage32 */ - { .id = "STB011a", .devs = { { .id = "STB0010" } } }, + { .id = "STB011A", .devs = { { .id = "STB0010" } } },/* MED3210 */ { .id = "DXP3201", .devs = { { .id = "DXP0010" } } },/* Dynasonic Pro */ /* This device also have CDC1117:DynaSonix Pro Audio Effects Processor */ { .id = "CDC1111", .devs = { { .id = "CDC1112" } } },/* Panasonic PCA761AW Audio Card */ - { .id = "ADV55ff", .devs = { { .id = "ADV0010" } } }, + { .id = "ADV55FF", .devs = { { .id = "ADV0010" } } },/* InterWave STB without TEA6330T */ - { .id = "ADV550a", .devs = { { .id = "ADV0010" } } }, + { .id = "ADV550A", .devs = { { .id = "ADV0010" } } }, #else/* InterWave STB with TEA6330T */ - { .id = "ADV550a", .devs = { { .id = "ADV0010" }, { .id = "ADV0015" } } }, + { .id = "ADV550A", .devs = { { .id = "ADV0010" }, { .id = "ADV0015" } } }, #endif { .id = "" }};sound/isa/sb/sb16.c +18
-18@@ -161,12 +161,12 @@ static struct pnp_card_device_id snd_sb16_pnpids[] = {/* Sound Blaster 16 PnP */ { .id = "CTL0029", .devs = { { "CTL0031" } } },/* Sound Blaster 16 PnP */ - { .id = "CTL002a", .devs = { { "CTL0031" } } }, + { .id = "CTL002A", .devs = { { "CTL0031" } } },/* Sound Blaster 16 PnP */ /* Note: This card has also a CTL0051:StereoEnhance device!!! */ - { .id = "CTL002b", .devs = { { "CTL0031" } } }, + { .id = "CTL002B", .devs = { { "CTL0031" } } },/* Sound Blaster 16 PnP */ - { .id = "CTL002c", .devs = { { "CTL0031" } } }, + { .id = "CTL002C", .devs = { { "CTL0031" } } },/* Sound Blaster Vibra16S */ { .id = "CTL0051", .devs = { { "CTL0001" } } },/* Sound Blaster Vibra16C */ @@ -177,9 +177,9 @@ static struct pnp_card_device_id snd_sb16_pnpids[] = {/* but ct4131 on a sticker on the board.. */ { .id = "CTL0086", .devs = { { "CTL0041" } } },/* Sound Blaster Vibra16X */ - { .id = "CTL00f0", .devs = { { "CTL0043" } } }, + { .id = "CTL00F0", .devs = { { "CTL0043" } } },/* Sound Blaster 16 (Virtual PC 2004) */ - { .id = "tBA03b0", .devs = { {.id="PNPb003" } } }, + { .id = "TBA03B0", .devs = { {.id="PNPB003" } } },#else /* SNDRV_SBAWE defined */ /* Sound Blaster AWE 32 PnP */ { .id = "CTL0035", .devs = { { "CTL0031" }, { "CTL0021" } } },@@ -204,31 +204,31 @@ static struct pnp_card_device_id snd_sb16_pnpids[] = {/* Sound Blaster AWE 32 PnP */ { .id = "CTL0054", .devs = { { "CTL0031" }, { "CTL0021" } } },/* Sound Blaster AWE 32 PnP */ - { .id = "CTL009a", .devs = { { "CTL0041" }, { "CTL0021" } } }, + { .id = "CTL009A", .devs = { { "CTL0041" }, { "CTL0021" } } },/* Sound Blaster AWE 32 PnP */ - { .id = "CTL009c", .devs = { { "CTL0041" }, { "CTL0021" } } }, + { .id = "CTL009C", .devs = { { "CTL0041" }, { "CTL0021" } } },/* Sound Blaster 32 PnP */ - { .id = "CTL009f", .devs = { { "CTL0041" }, { "CTL0021" } } }, + { .id = "CTL009F", .devs = { { "CTL0041" }, { "CTL0021" } } },/* Sound Blaster AWE 64 PnP */ - { .id = "CTL009d", .devs = { { "CTL0042" }, { "CTL0022" } } }, + { .id = "CTL009D", .devs = { { "CTL0042" }, { "CTL0022" } } },/* Sound Blaster AWE 64 PnP Gold */ - { .id = "CTL009e", .devs = { { "CTL0044" }, { "CTL0023" } } }, + { .id = "CTL009E", .devs = { { "CTL0044" }, { "CTL0023" } } },/* Sound Blaster AWE 64 PnP Gold */ - { .id = "CTL00b2", .devs = { { "CTL0044" }, { "CTL0023" } } }, + { .id = "CTL00B2", .devs = { { "CTL0044" }, { "CTL0023" } } },/* Sound Blaster AWE 64 PnP */ - { .id = "CTL00c1", .devs = { { "CTL0042" }, { "CTL0022" } } }, + { .id = "CTL00C1", .devs = { { "CTL0042" }, { "CTL0022" } } },/* Sound Blaster AWE 64 PnP */ - { .id = "CTL00c3", .devs = { { "CTL0045" }, { "CTL0022" } } }, + { .id = "CTL00C3", .devs = { { "CTL0045" }, { "CTL0022" } } },/* Sound Blaster AWE 64 PnP */ - { .id = "CTL00c5", .devs = { { "CTL0045" }, { "CTL0022" } } }, + { .id = "CTL00C5", .devs = { { "CTL0045" }, { "CTL0022" } } },/* Sound Blaster AWE 64 PnP */ - { .id = "CTL00c7", .devs = { { "CTL0045" }, { "CTL0022" } } }, + { .id = "CTL00C7", .devs = { { "CTL0045" }, { "CTL0022" } } },/* Sound Blaster AWE 64 PnP */ - { .id = "CTL00e4", .devs = { { "CTL0045" }, { "CTL0022" } } }, + { .id = "CTL00E4", .devs = { { "CTL0045" }, { "CTL0022" } } },/* Sound Blaster AWE 64 PnP */ - { .id = "CTL00e9", .devs = { { "CTL0045" }, { "CTL0022" } } }, + { .id = "CTL00E9", .devs = { { "CTL0045" }, { "CTL0022" } } },/* Sound Blaster 16 PnP (AWE) */ - { .id = "CTL00ed", .devs = { { "CTL0041" }, { "CTL0070" } } }, + { .id = "CTL00ED", .devs = { { "CTL0041" }, { "CTL0070" } } },/* Generic entries */ { .id = "CTLXXXX" , .devs = { { "CTL0031" }, { "CTL0021" } } }, { .id = "CTLXXXX" , .devs = { { "CTL0041" }, { "CTL0021" } } },sound/isa/wavefront/wavefront.c +2
-2@@ -91,9 +91,9 @@ static int pnp_registered; static struct pnp_card_device_id snd_wavefront_pnpids[] = { /* Tropez */ - { .id ="CSC7532" , .devs = { {"CSC0000" }, {"CSC0010" }, {"PnPb006" }, { "CSC0004" } } }, + { .id = "CSC7532", .devs = { { "CSC0000" }, { "CSC0010" }, { "PNPB006" }, { "CSC0004" } } },/* Tropez+ */ - { .id = "CSC7632", .devs = { { "CSC0000" }, { "CSC0010" }, { "PnPb006" }, { "CSC0004" } } }, + { .id = "CSC7632", .devs = { { "CSC0000" }, { "CSC0010" }, { "PNPB006"}, { "CSC0004" } } },
{ .id = "" }
};sound/oss/sb_card.h +4
-4@@ -37,13 +37,13 @@ static struct pnp_card_device_id sb_pnp_card_table[] = {/* Sound Blaster 16 */ {.id = "CTL0029", .driver_data = 0, .devs = { {.id="CTL0031"}, } }, /* Sound Blaster 16 */ - {.id = "CTL002a", .driver_data = 0, .devs = { {.id="CTL0031"}, } }, + {.id = "CTL002A", .driver_data = 0, .devs = { {.id="CTL0031"}, } }, /* Sound Blaster 16 */ - {.id = "CTL002b", .driver_data = 0, .devs = { {.id="CTL0031"}, } }, + {.id = "CTL002B", .driver_data = 0, .devs = { {.id="CTL0031"}, } }, /* Sound Blaster 16 */ - {.id = "CTL002c", .driver_data = 0, .devs = { {.id="CTL0031"}, } }, + {.id = "CTL002C", .driver_data = 0, .devs = { {.id="CTL0031"}, } }, /* Sound Blaster 16 */ - {.id = "CTL00ed", .driver_data = 0, .devs = { {.id="CTL0041"}, } }, + {.id = "CTL00ED", .driver_data = 0, .devs = { {.id="CTL0041"}, } }, /* Sound Blaster 16 */ {.id = "CTL0086", .driver_data = 0, .devs = { {.id="CTL0041"}, } }, /* Sound Blaster Vibra16S */@@ -141,7 +141,7 @@ static struct pnp_card_device_id sb_pnp_card_table[] = {
Quoted 8 lines
sound/oss/sb_card.h static struct pnp_card_device_id sb_pnp_card_table[] = { · line 147
Quoted 8 lines
sound/oss/sb_card.h +1
-1{.id="@X@2001"}, {.id="@H@0001"}, } },/* Sound Blaster 16 (Virtual PC 2004) */ - {.id = "tBA03b0", .driver_data = 0, .devs = { {.id="PNPb003"}, } }, + {.id = "TBA03B0", .driver_data = 0, .devs = { {.id="PNPB003"}, } },/* -end- */ {.id = "", } };
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 3 lines · On Wed, 21 Jan 2009 08:56:07 +0100 Philipp Kohlbecher <[email protected]> wrote:
switch and could not access the RTC anymore. My RTC is handled by rtc-cmos, which is compiled as a module. However, udev did not load this module, as the device's modalias "acpi:PNP0B00:" did not match any of
your main RTC should be compiled in, or you will have problems with fsck.
Signature · 6 lines
Best regards, Alessandro Zummo, Tower Technologies - Torino, Italy http://www.towertech.it
Quoted 12 lines · Philipp Kohlbecher
Quoted 11 lines · Bjorn Helgaas
Quoted 3 lines · Philipp Kohlbecher
If I understand correctly, ACPI
_HIDs(including PNP IDs) should be all uppercase, including the hex digits, cf. ACPI Specification 3.0b [1], pp. 162-3Section 6.1.4, "
_HID(Hardware ID)" says:A valid PNP ID must be of the form “AAA####” where A is an uppercase letter and # is a hex digit. A valid ACPI ID must be of the form “ACPI####” where # is a hex digit.
Quoted 5 lines
Quoted 2 lines
I don't see the part about requiring the hex digits to be uppercase. Did I miss it, or is it somewhere else?
It doesn't say explicitly, hence my reservation. The ACPI specification does, however, use uppercase hex digits in all examples of
_HIDs.
The PNPBIOS spec doesn't seem to say explicitly either, although the examples there also use uppercase. So it'd probably be nicer if we used uppercase everywhere in Linux. Unfortunately, we have the legacy of the kernel using lowercase in PNP IDs, and there are userspace things like modprobe aliases that depend on that.
Quoted 3 lines
I do. Thanks for noticing that. Now, how do I make sure this mix-up doesn't go into the commit message? Re-submit or ask the committer to correct it?
I think reposting the patch will be better. But I would split this up into a patch per file, so they can go through the usual maintainers, and I think we should wait a bit (see below).
Quoted 9 lines
Quoted 8 lines
There are definitely some inconsistencies that it would be nice to fix, if we can do it safely. For example, for ISAPNP and PNPBIOS devices, I think we always generate lowercase hex digits in the PNP IDs. For PNPACPI, we generate uppercase digits for numeric
_HIDs, but we use string_HIDsunchanged.Did you trip over an actual problem that is fixed by this patch? If so, can you give any more details?
Quoted 8 lines
Yes. After a package update, hwclock stopped using the "--directisa" switch and could not access the RTC anymore. My RTC is handled by rtc-cmos, which is compiled as a module. However, udev did not load this module, as the device's modalias "acpi:PNP0B00:" did not match any of the module's aliasas, including "acpi*:PNP0b00:*". Thus, the system clock was not set correctly at startup (my hardware clock is set to local time). Changing the PNP IDs in
drivers/rtc/rtc-cmos.cto use uppercase hex digits solved that problem for me.
Nice work debugging that problem! I would include that synopsis in the changelog, because it helps people who trip over the same problem and are looking for a solution, and it helps people who want to understand why the change was made.
IMO, part of the problem here is that there is a single PNP ID namespace, but it's shared between the PNP core and the ACPI core. And PNP doesn't emit uevents, so in this case, we're using ACPI uevents to load a PNP driver. The ACPI uevents will be uppercase (which matches the IDs in ACPI drivers), but the IDs in PNP drivers are typically lowercase (which matches the strings in /sys/devices/pnp*/*/id).
I started trying to untangle this last year, but I didn't get far enough to be comfortable that I wouldn't break existing userspace stuff. Maybe it's time to resurrect that work.
The RTC problem is not really a regression; it sounds like this is a long-standing problem. Given that, I'd like to have a clearer idea of how to clean up the namespace and uevent issues before we go changing all the PNP drivers.
Bjorn
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 15 lines · Bjorn Helgaas
Quoted 5 lines · Philipp Kohlbecher
Quoted 2 lines · Bjorn Helgaas
Did you trip over an actual problem that is fixed by this patch? If so, can you give any more details?
Quoted 8 lines
Yes. After a package update, hwclock stopped using the "--directisa" switch and could not access the RTC anymore. My RTC is handled by rtc-cmos, which is compiled as a module. However, udev did not load this module, as the device's modalias "acpi:PNP0B00:" did not match any of the module's aliasas, including "acpi*:PNP0b00:*". Thus, the system clock was not set correctly at startup (my hardware clock is set to local time). Changing the PNP IDs in
drivers/rtc/rtc-cmos.cto use uppercase hex digits solved that problem for me.
Quoted 4 lines
Nice work debugging that problem! I would include that synopsis in the changelog, because it helps people who trip over the same problem and are looking for a solution, and it helps people who want to understand why the change was made.
We uppercase all acpi alias strings now, so that should be solved:
http://git.kernel.org/?p=linux/kernel/git/gregkh/patches.git;a=blob;f=driver-core.current/pnp-fix-broken-pnp-lowercasing-for-acpi-module-aliases.patch;hb=HEAD
Kay
Quoted 3 lines · On Sunday 18 January 2009 14:02:32 Philipp Kohlbecher wrote:
If I understand correctly, ACPI
_HIDs(including PNP IDs) should be all uppercase, including the hex digits, cf. ACPI Specification 3.0b [1], pp. 162-3 and acpi_glb_hex_to_ascii[] indrivers/acpi/utilities/utglobal.c.
ACPI-WMI violates the spec here.
drivers/pnp/quirks.c
Quoted 15 lines
drivers/platform/x86/wmi.c +1
-1@@ -84,7 +84,7 @@ static int acpi_wmi_add(struct acpi_device *device);static const struct acpi_device_id wmi_device_ids[] = { {"PNP0C14" ,0 }, - {"pnp0c14" ,0 }, + {"PNP0C14" ,0 }, {"" ,0 }, };MODULE_DEVICE_TABLE (acpi, wmi_device_ids);drivers/pnp/quirks.c +0
-0
NAK to the ACPI-WMI changes. There really is a pnp0c14 and a PNP0C14, and removing the lower case version breaks ACPI-WMI on my laptop.
-Carlos
Signature · 3 lines
E-Mail: [email protected] Web: strangeworlds.co.uk GPG Key ID: 0x23EE722D