^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) // SPDX-License-Identifier: GPL-2.0-only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * ACPI support for PNP bus type
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) * Copyright (C) 2014, Intel Corporation
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) * Authors: Zhang Rui <rui.zhang@intel.com>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) * Rafael J. Wysocki <rafael.j.wysocki@intel.com>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #include <linux/acpi.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #include <linux/module.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #include <linux/ctype.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) #include "internal.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) static const struct acpi_device_id acpi_pnp_device_ids[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) /* pata_isapnp */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) {"PNP0600"}, /* Generic ESDI/IDE/ATA compatible hard disk controller */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) /* floppy */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) {"PNP0700"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) /* tpm_inf_pnp */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) {"IFX0101"}, /* Infineon TPMs */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) {"IFX0102"}, /* Infineon TPMs */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) /*tpm_tis */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) {"PNP0C31"}, /* TPM */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) {"ATM1200"}, /* Atmel */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) {"IFX0102"}, /* Infineon */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) {"BCM0101"}, /* Broadcom */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) {"BCM0102"}, /* Broadcom */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) {"NSC1200"}, /* National */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) {"ICO0102"}, /* Intel */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) /* ide */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) {"PNP0600"}, /* Generic ESDI/IDE/ATA compatible hard disk controller */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) /* ns558 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) {"ASB16fd"}, /* AdLib NSC16 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) {"AZT3001"}, /* AZT1008 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) {"CDC0001"}, /* Opl3-SAx */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) {"CSC0001"}, /* CS4232 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) {"CSC000f"}, /* CS4236 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) {"CSC0101"}, /* CS4327 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) {"CTL7001"}, /* SB16 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) {"CTL7002"}, /* AWE64 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) {"CTL7005"}, /* Vibra16 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) {"ENS2020"}, /* SoundscapeVIVO */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) {"ESS0001"}, /* ES1869 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) {"ESS0005"}, /* ES1878 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) {"ESS6880"}, /* ES688 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) {"IBM0012"}, /* CS4232 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) {"OPT0001"}, /* OPTi Audio16 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) {"YMH0006"}, /* Opl3-SA */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) {"YMH0022"}, /* Opl3-SAx */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) {"PNPb02f"}, /* Generic */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) /* i8042 kbd */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) {"PNP0300"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) {"PNP0301"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) {"PNP0302"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) {"PNP0303"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) {"PNP0304"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) {"PNP0305"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) {"PNP0306"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) {"PNP0309"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) {"PNP030a"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) {"PNP030b"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) {"PNP0320"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) {"PNP0343"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) {"PNP0344"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) {"PNP0345"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) {"CPQA0D7"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) /* i8042 aux */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) {"AUI0200"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) {"FJC6000"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) {"FJC6001"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) {"PNP0f03"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) {"PNP0f0b"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) {"PNP0f0e"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) {"PNP0f12"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) {"PNP0f13"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) {"PNP0f19"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) {"PNP0f1c"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) {"SYN0801"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) /* fcpnp */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) {"AVM0900"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) /* radio-cadet */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) {"MSM0c24"}, /* ADS Cadet AM/FM Radio Card */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) /* radio-gemtek */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) {"ADS7183"}, /* AOpen FX-3D/Pro Radio */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) /* radio-sf16fmr2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) {"MFRad13"}, /* tuner subdevice of SF16-FMD2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) /* ene_ir */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) {"ENE0100"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) {"ENE0200"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) {"ENE0201"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) {"ENE0202"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) /* fintek-cir */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) {"FIT0002"}, /* CIR */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) /* ite-cir */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) {"ITE8704"}, /* Default model */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) {"ITE8713"}, /* CIR found in EEEBox 1501U */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) {"ITE8708"}, /* Bridged IT8512 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) {"ITE8709"}, /* SRAM-Bridged IT8512 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) /* nuvoton-cir */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) {"WEC0530"}, /* CIR */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) {"NTN0530"}, /* CIR for new chip's pnp id */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) /* Winbond CIR */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) {"WEC1022"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) /* wbsd */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) {"WEC0517"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) {"WEC0518"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) /* Winbond CIR */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) {"TCM5090"}, /* 3Com Etherlink III (TP) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) {"TCM5091"}, /* 3Com Etherlink III */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) {"TCM5094"}, /* 3Com Etherlink III (combo) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) {"TCM5095"}, /* 3Com Etherlink III (TPO) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) {"TCM5098"}, /* 3Com Etherlink III (TPC) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) {"PNP80f7"}, /* 3Com Etherlink III compatible */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) {"PNP80f8"}, /* 3Com Etherlink III compatible */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) /* nsc-ircc */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) {"NSC6001"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) {"HWPC224"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) {"IBM0071"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) /* smsc-ircc2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) {"SMCf010"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) /* sb1000 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) {"GIC1000"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) /* parport_pc */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) {"PNP0400"}, /* Standard LPT Printer Port */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) {"PNP0401"}, /* ECP Printer Port */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) /* apple-gmux */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) {"APP000B"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) /* system */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) {"PNP0c02"}, /* General ID for reserving resources */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) {"PNP0c01"}, /* memory controller */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) /* rtc_cmos */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) {"PNP0b00"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) {"PNP0b01"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) {"PNP0b02"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) /* c6xdigio */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) {"PNP0400"}, /* Standard LPT Printer Port */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) {"PNP0401"}, /* ECP Printer Port */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) /* ni_atmio.c */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) {"NIC1900"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) {"NIC2400"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) {"NIC2500"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) {"NIC2600"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) {"NIC2700"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) /* serial */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) {"AAC000F"}, /* Archtek America Corp. Archtek SmartLink Modem 3334BT Plug & Play */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) {"ADC0001"}, /* Anchor Datacomm BV. SXPro 144 External Data Fax Modem Plug & Play */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) {"ADC0002"}, /* SXPro 288 External Data Fax Modem Plug & Play */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) {"AEI0250"}, /* PROLiNK 1456VH ISA PnP K56flex Fax Modem */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) {"AEI1240"}, /* Actiontec ISA PNP 56K X2 Fax Modem */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) {"AKY1021"}, /* Rockwell 56K ACF II Fax+Data+Voice Modem */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) {"ALI5123"}, /* ALi Fast Infrared Controller */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) {"AZT4001"}, /* AZT3005 PnP SOUND DEVICE */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) {"BDP3336"}, /* Best Data Products Inc. Smart One 336F PnP Modem */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) {"BRI0A49"}, /* Boca Complete Ofc Communicator 14.4 Data-FAX */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) {"BRI1400"}, /* Boca Research 33,600 ACF Modem */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) {"BRI3400"}, /* Boca 33.6 Kbps Internal FD34FSVD */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) {"BRI0A49"}, /* Boca 33.6 Kbps Internal FD34FSVD */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) {"BDP3336"}, /* Best Data Products Inc. Smart One 336F PnP Modem */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) {"CPI4050"}, /* Computer Peripherals Inc. EuroViVa CommCenter-33.6 SP PnP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) {"CTL3001"}, /* Creative Labs Phone Blaster 28.8 DSVD PnP Voice */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) {"CTL3011"}, /* Creative Labs Modem Blaster 28.8 DSVD PnP Voice */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) {"DAV0336"}, /* Davicom ISA 33.6K Modem */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) {"DMB1032"}, /* Creative Modem Blaster Flash56 DI5601-1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) {"DMB2001"}, /* Creative Modem Blaster V.90 DI5660 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) {"ETT0002"}, /* E-Tech CyberBULLET PC56RVP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) {"FUJ0202"}, /* Fujitsu 33600 PnP-I2 R Plug & Play */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) {"FUJ0205"}, /* Fujitsu FMV-FX431 Plug & Play */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) {"FUJ0206"}, /* Fujitsu 33600 PnP-I4 R Plug & Play */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) {"FUJ0209"}, /* Fujitsu Fax Voice 33600 PNP-I5 R Plug & Play */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) {"GVC000F"}, /* Archtek SmartLink Modem 3334BT Plug & Play */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) {"GVC0303"}, /* Archtek SmartLink Modem 3334BRV 33.6K Data Fax Voice */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) {"HAY0001"}, /* Hayes Optima 288 V.34-V.FC + FAX + Voice Plug & Play */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) {"HAY000C"}, /* Hayes Optima 336 V.34 + FAX + Voice PnP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) {"HAY000D"}, /* Hayes Optima 336B V.34 + FAX + Voice PnP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) {"HAY5670"}, /* Hayes Accura 56K Ext Fax Modem PnP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) {"HAY5674"}, /* Hayes Accura 56K Ext Fax Modem PnP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) {"HAY5675"}, /* Hayes Accura 56K Fax Modem PnP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) {"HAYF000"}, /* Hayes 288, V.34 + FAX */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) {"HAYF001"}, /* Hayes Optima 288 V.34 + FAX + Voice, Plug & Play */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) {"IBM0033"}, /* IBM Thinkpad 701 Internal Modem Voice */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) {"PNP4972"}, /* Intermec CV60 touchscreen port */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) {"IXDC801"}, /* Intertex 28k8 33k6 Voice EXT PnP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) {"IXDC901"}, /* Intertex 33k6 56k Voice EXT PnP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) {"IXDD801"}, /* Intertex 28k8 33k6 Voice SP EXT PnP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) {"IXDD901"}, /* Intertex 33k6 56k Voice SP EXT PnP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) {"IXDF401"}, /* Intertex 28k8 33k6 Voice SP INT PnP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) {"IXDF801"}, /* Intertex 28k8 33k6 Voice SP EXT PnP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) {"IXDF901"}, /* Intertex 33k6 56k Voice SP EXT PnP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) {"KOR4522"}, /* KORTEX 28800 Externe PnP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) {"KORF661"}, /* KXPro 33.6 Vocal ASVD PnP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) {"LAS4040"}, /* LASAT Internet 33600 PnP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) {"LAS4540"}, /* Lasat Safire 560 PnP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) {"LAS5440"}, /* Lasat Safire 336 PnP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) {"MNP0281"}, /* Microcom TravelPorte FAST V.34 Plug & Play */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) {"MNP0336"}, /* Microcom DeskPorte V.34 FAST or FAST+ Plug & Play */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) {"MNP0339"}, /* Microcom DeskPorte FAST EP 28.8 Plug & Play */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) {"MNP0342"}, /* Microcom DeskPorte 28.8P Plug & Play */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) {"MNP0500"}, /* Microcom DeskPorte FAST ES 28.8 Plug & Play */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) {"MNP0501"}, /* Microcom DeskPorte FAST ES 28.8 Plug & Play */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) {"MNP0502"}, /* Microcom DeskPorte 28.8S Internal Plug & Play */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) {"MOT1105"}, /* Motorola BitSURFR Plug & Play */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) {"MOT1111"}, /* Motorola TA210 Plug & Play */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) {"MOT1114"}, /* Motorola HMTA 200 (ISDN) Plug & Play */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) {"MOT1115"}, /* Motorola BitSURFR Plug & Play */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) {"MOT1190"}, /* Motorola Lifestyle 28.8 Internal */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) {"MOT1501"}, /* Motorola V.3400 Plug & Play */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) {"MOT1502"}, /* Motorola Lifestyle 28.8 V.34 Plug & Play */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) {"MOT1505"}, /* Motorola Power 28.8 V.34 Plug & Play */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) {"MOT1509"}, /* Motorola ModemSURFR External 28.8 Plug & Play */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) {"MOT150A"}, /* Motorola Premier 33.6 Desktop Plug & Play */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) {"MOT150F"}, /* Motorola VoiceSURFR 56K External PnP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) {"MOT1510"}, /* Motorola ModemSURFR 56K External PnP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) {"MOT1550"}, /* Motorola ModemSURFR 56K Internal PnP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) {"MOT1560"}, /* Motorola ModemSURFR Internal 28.8 Plug & Play */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) {"MOT1580"}, /* Motorola Premier 33.6 Internal Plug & Play */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) {"MOT15B0"}, /* Motorola OnlineSURFR 28.8 Internal Plug & Play */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) {"MOT15F0"}, /* Motorola VoiceSURFR 56K Internal PnP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) {"MVX00A1"}, /* Deskline K56 Phone System PnP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) {"MVX00F2"}, /* PC Rider K56 Phone System PnP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) {"nEC8241"}, /* NEC 98NOTE SPEAKER PHONE FAX MODEM(33600bps) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) {"PMC2430"}, /* Pace 56 Voice Internal Plug & Play Modem */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) {"PNP0500"}, /* Generic standard PC COM port */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) {"PNP0501"}, /* Generic 16550A-compatible COM port */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) {"PNPC000"}, /* Compaq 14400 Modem */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) {"PNPC001"}, /* Compaq 2400/9600 Modem */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) {"PNPC031"}, /* Dial-Up Networking Serial Cable between 2 PCs */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) {"PNPC032"}, /* Dial-Up Networking Parallel Cable between 2 PCs */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) {"PNPC100"}, /* Standard 9600 bps Modem */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) {"PNPC101"}, /* Standard 14400 bps Modem */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) {"PNPC102"}, /* Standard 28800 bps Modem */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) {"PNPC103"}, /* Standard Modem */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) {"PNPC104"}, /* Standard 9600 bps Modem */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) {"PNPC105"}, /* Standard 14400 bps Modem */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) {"PNPC106"}, /* Standard 28800 bps Modem */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) {"PNPC107"}, /* Standard Modem */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) {"PNPC108"}, /* Standard 9600 bps Modem */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) {"PNPC109"}, /* Standard 14400 bps Modem */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) {"PNPC10A"}, /* Standard 28800 bps Modem */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) {"PNPC10B"}, /* Standard Modem */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) {"PNPC10C"}, /* Standard 9600 bps Modem */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) {"PNPC10D"}, /* Standard 14400 bps Modem */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) {"PNPC10E"}, /* Standard 28800 bps Modem */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) {"PNPC10F"}, /* Standard Modem */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) {"PNP2000"}, /* Standard PCMCIA Card Modem */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) {"ROK0030"}, /* Rockwell 33.6 DPF Internal PnP, Modular Technology 33.6 Internal PnP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) {"ROK0100"}, /* KORTEX 14400 Externe PnP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) {"ROK4120"}, /* Rockwell 28.8 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) {"ROK4920"}, /* Viking 28.8 INTERNAL Fax+Data+Voice PnP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) {"RSS00A0"}, /* Rockwell 33.6 DPF External PnP, BT Prologue 33.6 External PnP, Modular Technology 33.6 External PnP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) {"RSS0262"}, /* Viking 56K FAX INT */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) {"RSS0250"}, /* K56 par,VV,Voice,Speakphone,AudioSpan,PnP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) {"SUP1310"}, /* SupraExpress 28.8 Data/Fax PnP modem */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) {"SUP1381"}, /* SupraExpress 336i PnP Voice Modem */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) {"SUP1421"}, /* SupraExpress 33.6 Data/Fax PnP modem */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) {"SUP1590"}, /* SupraExpress 33.6 Data/Fax PnP modem */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) {"SUP1620"}, /* SupraExpress 336i Sp ASVD */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) {"SUP1760"}, /* SupraExpress 33.6 Data/Fax PnP modem */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) {"SUP2171"}, /* SupraExpress 56i Sp Intl */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) {"TEX0011"}, /* Phoebe Micro 33.6 Data Fax 1433VQH Plug & Play */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262) {"UAC000F"}, /* Archtek SmartLink Modem 3334BT Plug & Play */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263) {"USR0000"}, /* 3Com Corp. Gateway Telepath IIvi 33.6 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) {"USR0002"}, /* U.S. Robotics Sporster 33.6K Fax INT PnP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) {"USR0004"}, /* Sportster Vi 14.4 PnP FAX Voicemail */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) {"USR0006"}, /* U.S. Robotics 33.6K Voice INT PnP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) {"USR0007"}, /* U.S. Robotics 33.6K Voice EXT PnP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) {"USR0009"}, /* U.S. Robotics Courier V.Everything INT PnP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) {"USR2002"}, /* U.S. Robotics 33.6K Voice INT PnP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) {"USR2070"}, /* U.S. Robotics 56K Voice INT PnP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) {"USR2080"}, /* U.S. Robotics 56K Voice EXT PnP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) {"USR3031"}, /* U.S. Robotics 56K FAX INT */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) {"USR3050"}, /* U.S. Robotics 56K FAX INT */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) {"USR3070"}, /* U.S. Robotics 56K Voice INT PnP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) {"USR3080"}, /* U.S. Robotics 56K Voice EXT PnP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276) {"USR3090"}, /* U.S. Robotics 56K Voice INT PnP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) {"USR9100"}, /* U.S. Robotics 56K Message */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278) {"USR9160"}, /* U.S. Robotics 56K FAX EXT PnP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) {"USR9170"}, /* U.S. Robotics 56K FAX INT PnP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280) {"USR9180"}, /* U.S. Robotics 56K Voice EXT PnP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) {"USR9190"}, /* U.S. Robotics 56K Voice INT PnP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) {"WACFXXX"}, /* Wacom tablets */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) {"FPI2002"}, /* Compaq touchscreen */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) {"FUJ02B2"}, /* Fujitsu Stylistic touchscreens */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) {"FUJ02B3"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286) {"FUJ02B4"}, /* Fujitsu Stylistic LT touchscreens */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) {"FUJ02B6"}, /* Passive Fujitsu Stylistic touchscreens */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288) {"FUJ02B7"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) {"FUJ02B8"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290) {"FUJ02B9"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) {"FUJ02BC"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292) {"FUJ02E5"}, /* Fujitsu Wacom Tablet PC device */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) {"FUJ02E6"}, /* Fujitsu P-series tablet PC device */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) {"FUJ02E7"}, /* Fujitsu Wacom 2FGT Tablet PC device */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) {"FUJ02E9"}, /* Fujitsu Wacom 1FGT Tablet PC device */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) {"LTS0001"}, /* LG C1 EXPRESS DUAL (C1-PB11A3) touch screen (actually a FUJ02E6 in disguise) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) {"WCI0003"}, /* Rockwell's (PORALiNK) 33600 INT PNP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) {"WEC1022"}, /* Winbond CIR port, should not be probed. We should keep track of it to prevent the legacy serial driver from probing it */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) /* scl200wdt */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) {"NSC0800"}, /* National Semiconductor PC87307/PC97307 watchdog component */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) /* mpu401 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302) {"PNPb006"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) /* cs423x-pnpbios */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) {"CSC0100"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) {"CSC0103"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306) {"CSC0110"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) {"CSC0000"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) {"GIM0100"}, /* Guillemot Turtlebeach something appears to be cs4232 compatible */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) /* es18xx-pnpbios */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310) {"ESS1869"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) {"ESS1879"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) /* snd-opl3sa2-pnpbios */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) {"YMH0021"},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) {"NMX2210"}, /* Gateway Solo 2500 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315) {""},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318) static bool matching_id(const char *idstr, const char *list_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320) int i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322) if (strlen(idstr) != strlen(list_id))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323) return false;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325) if (memcmp(idstr, list_id, 3))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326) return false;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328) for (i = 3; i < 7; i++) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329) char c = toupper(idstr[i]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331) if (!isxdigit(c)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332) || (list_id[i] != 'X' && c != toupper(list_id[i])))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333) return false;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335) return true;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 336) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 337)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 338) static bool acpi_pnp_match(const char *idstr, const struct acpi_device_id **matchid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 339) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 340) const struct acpi_device_id *devid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 341)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 342) for (devid = acpi_pnp_device_ids; devid->id[0]; devid++)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 343) if (matching_id(idstr, (char *)devid->id)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 344) if (matchid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 345) *matchid = devid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 346)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 347) return true;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 348) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 349)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 350) return false;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 351) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 352)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 353) static int acpi_pnp_attach(struct acpi_device *adev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 354) const struct acpi_device_id *id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 355) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 356) return 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 357) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 358)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 359) static struct acpi_scan_handler acpi_pnp_handler = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 360) .ids = acpi_pnp_device_ids,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 361) .match = acpi_pnp_match,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 362) .attach = acpi_pnp_attach,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 363) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 364)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 365) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 366) * For CMOS RTC devices, the PNP ACPI scan handler does not work, because
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 367) * there is a CMOS RTC ACPI scan handler installed already, so we need to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 368) * check those devices and enumerate them to the PNP bus directly.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 369) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 370) static int is_cmos_rtc_device(struct acpi_device *adev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 371) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 372) static const struct acpi_device_id ids[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 373) { "PNP0B00" },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 374) { "PNP0B01" },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 375) { "PNP0B02" },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 376) {""},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 377) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 378) return !acpi_match_device_ids(adev, ids);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 379) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 380)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 381) bool acpi_is_pnp_device(struct acpi_device *adev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 382) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 383) return adev->handler == &acpi_pnp_handler || is_cmos_rtc_device(adev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 384) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 385) EXPORT_SYMBOL_GPL(acpi_is_pnp_device);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 386)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 387) void __init acpi_pnp_init(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 388) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 389) acpi_scan_add_handler(&acpi_pnp_handler);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 390) }