åé¡ã®å£°æ
Linuxã«ã¯ãsysfsãä»ããŠGPIOãæäœããããã®æšæºã€ã³ã¿ãŒãã§ãŒã¹ããããŸãã ãã®ããã®ããã¥ã¡ã³ãã¯ããã«ãããŸã ã
èŠããã«ãã/ sys / class / gpioããã©ã«ããŒã«ã¯ãexportãããã³ãunexportããã¡ã€ã«ããããŸãã çªå·Xããšã¯ã¹ããŒããã¡ã€ã«ã«æžã蟌ãããšã«ããããŠãŒã¶ãŒç©ºéã§ã€ã³ã¿ãŒãã§ã€ã¹ãéããŠGPIOXãå¶åŸ¡ã§ããŸã
# user space GPIO12 $ echo 12 > /sys/class/gpio/export
ã€ã³ã¿ãŒãã§ãŒã¹ãéããåŸããã©ã«ããŒ/ sys / class / gpio / gpioX /ã衚瀺ãããããã«ãvalueããŸãã¯ãdirectionããªã©ã®ãã¡ã€ã«ãããããdirectionããã¡ã€ã«ã«ãinããŸãã¯ãoutããæžã蟌ã¿ããã¡ã€ã«ã«1ãŸãã¯0ãæžã蟌ã¿ãŸãã ãå€ãã¯ãã³ãã³ãã©ã€ã³ããGPIOåºåãçŽæ¥å¶åŸ¡ã§ããŸãã
# GPIO $ echo "out" > /sys/class/gpio/gpio12/direction # 1 GPIO $ echo 1 > /sys/class/gpio/gpio12/value
echo X> / sys / class / gpio / exportã³ãã³ãã§gpioXãã©ã«ããŒãäœæããã«ã¯ãGPIOã³ã³ãããŒã©ãŒãã©ã€ããŒãã«ãŒãã«ã«ç»é²ããå¿ èŠããããŸããããã«ãããGPIOã©ã€ã³ãžã®ã€ã³ã¿ãŒãã§ã€ã¹ãéããŸãã
Intel Haswell i7ããã»ããµãããŒã¹ã«ããã«ã¹ã¿ã ããŒãã®ã³ã¢ããŒãã®ç§»æ€ã«åãçµãã§ããããšãããããŸãã[ç¥ããªã人ã®ããã«ãcorebootã¯ãªãŒãã³ãœãŒã¹ïŒ https://www.coreboot.org/ ïŒã®ãªãŒãã³ãœãŒã¹BIOSãããžã§ã¯ãã§ãã ]ã 94åã®GPIOã©ã€ã³ãããLynxpointLPãµãŠã¹ããªããžãããã»ããµã«çµã¿èŸŒãŸããŠããŸãã ãããŠãç§ã¯ããããsysfsã§éããããšæããŸãã...
åé¡è§£æ±ºïŒLinuxã§ã®ãã©ã€ããŒãšããã€ã¹ã®éä¿¡ïŒ
ã«ãŒãã«ã³ãŒããå°ãæ€çŽ¢ããçµæããã®ãã©ã€ããŒã¯æ¢ã«äœæãããŠããããã¡ã€ã«ãdrivers \ gpio \ gpio-lynxpoint.cãã«ãããKconfigã䜿çšããŠæå¹ã«ãªã£ãŠããããšãããããŸããã
config GPIO_LYNXPOINT tristate "Intel Lynxpoint GPIO support" depends on ACPI && X86 select GPIOLIB_IRQCHIP help driver for GPIO functionality on Intel Lynxpoint PCH chipset Requires ACPI device enumeration code to set up a platform device.
䜿çšããŠããã«ãŒãã«ã§GPIO_LYNXPOINTãªãã·ã§ã³ãæå¹ã«ãªããŸããããã/ sys / class / gpio /ããã©ã«ããŒïŒããã¹ãïŒã«GPIOã³ã³ãããŒã©ãŒçšã®åäžã®ãgpiochipNããã©ã«ããŒããªãããã®ãããªã¹ã¯ãªããã§ããšã¯ã¹ããŒããããŸããã§ããè¡ã
$ for i in {0..255}; do echo $i > /sys/class/gpio/export; done
corebootã³ãŒããŸãã¯ãã®ãµãŠã¹ããªããžã®ããã¥ã¡ã³ããèŠããšãGPIOã³ã³ãããŒã©ãŒãç¬ç«ããPCIããã€ã¹ã§ã¯ãªãããšãããããŸãã ããã¯å¥ã®PCIããã€ã¹ã®äžéšã§ãïŒLPC Interface Bridgeã ãã®ããã€ã¹ã®PCIæ§æã¹ããŒã¹ã¬ãžã¹ã¿ã䜿çšããŠãGPIOã³ã³ãããŒã©ãŒãæå¹ã«ããI / Oã¹ããŒã¹ã§BASE_ADDRESSãå²ãåœãŠãå¿ èŠããããŸãã ããã«ããã1KV I / Oã¹ããŒã¹ã§ãŠã£ã³ããŠãéããŸãã ãã®ãŠã£ã³ããŠã§ãã€ãã®æžã蟌ã¿/èªã¿åããè¡ãããšã«ãããGPIOã©ã€ã³ãå¶åŸ¡ã§ããŸãã
corebootã³ãŒãã§ç¢ºèªã§ãããã®ïŒ
ãµãŠã¹ããªããž\ã€ã³ãã«\ lynxpoint \ pch.hïŒ
#define DEFAULT_GPIOBASE 0x1400 #define DEFAULT_GPIOSIZE 0x400 ... #define GPIO_BASE 0x48 /* LPC GPIO Base Address Register */ #define GPIO_CNTL 0x4C /* LPC GPIO Control Register */ ... /* PCI Configuration Space (D31:F0): LPC */ #define PCH_LPC_DEV PCI_DEV(0, 0x1f, 0)
ãµãŠã¹ããªããž\ã€ã³ãã«\ lynxpoint \ early_pch.cïŒ
/* Setup GPIO Base Address */ pci_write_config32(PCH_LPC_DEV, GPIO_BASE, DEFAULT_GPIOBASE|1); /* Enable GPIO functionality. */ pci_write_config8(PCH_LPC_DEV, GPIO_CNTL, 0x10);
Linuxã®LPCããã€ã¹ã¬ãžã¹ã¿ããlspci -xxxãã§èŠããšãèšé²ãããããŒã¿ããããã®ã¬ãžã¹ã¿ã«ããããšãããããŸãã ãã®ããããã¹ãŠãé©åã«æ§æãããŠããããã§ãã
ãã©ã€ããŒã³ãŒãã調ã¹ç¶ãããšãLinuxãã©ã€ããŒã.acpi_match_tableãã£ãŒã«ããä»ããŠããã€ã¹ã«æ¥ç¶ãããŠããããšã«æ°ä»ããŸããã ããã€ã¹ã¯åæã§ããªãããïŒPCIãŸãã¯USBãã¹äžã«ã¯ãããŸããïŒããã©ãããã©ãŒã ãã©ã€ããŒãå¿ èŠã§ããããã®ãã©ã€ããŒãšããã€ã¹ã®æ¥ç¶ã¯ACPIããŒãã«ãä»ããŠè¡ãããŸãã x86ã®éåžžã®å ŽåãARMã®å ŽåãDeviceTreeã«ããã€ã¹ãç»é²ããããã«ãŒãã«ã®å€ãããŒãã³ãŒãã䜿çšããŸãã
ãã©ã€ããŒ\ gpio \ gpio-lynxpoint.cïŒ
static const struct acpi_device_id lynxpoint_gpio_acpi_match[] = { { "INT33C7", 0 }, { "INT3437", 0 }, { } }; MODULE_DEVICE_TABLE(acpi, lynxpoint_gpio_acpi_match); static struct platform_driver lp_gpio_driver = { .probe = lp_gpio_probe, .remove = lp_gpio_remove, .driver = { .name = "lp_gpio", .pm = &lp_gpio_pm_ops, .acpi_match_table = ACPI_PTR(lynxpoint_gpio_acpi_match), }, };
ããã¯æ¬¡ã®ããã«æ©èœããŸããACPIããŒãã«ã解æãããšãã«ã«ãŒãã«ã_HIDèå¥åãINT33C7ããæã€ããã€ã¹ãæ€åºãããšãæ§é ã.driver-> acpi_match_tableãã®ãã£ãŒã«ãã«äžèŽããèå¥åãæã€ãã©ãããã©ãŒã ãã©ã€ããèŠã€ããããšããŸãã
äžèŽãèŠã€ãããšãLinuxã¯.probeãã©ã€ããŒé¢æ°ãå®è¡ããŸãã
çµå±ã®ãšããããã®ããã€ã¹ã®ACPIã³ãŒãã¯corebootã«è¡šç€ºãããŠããã®ã§ãã³ã¡ã³ãã¢ãŠãããŸããã ãã®ããã€ã¹ã§ã¯Windowsããã©ã€ããŒãèŠã€ããããšãã§ãããããã€ã¹ãããŒãžã£ãŒã«ãäžæãªããã€ã¹ããšè¡šç€ºããããšããäºå®ã®ããã«ã³ã¡ã³ãã¢ãŠããããŸããã 詳现ã«ã€ããŠã¯ã以äžãã芧ãã ããã
ãã®ããããã¡ã€ã«ããã®æ å ±ã«èå³ããããŸã
src \ southbridge \ intel \ lynxpoint \ acpi \ serialio.aslïŒã³ãŒãã¯å°ãç°¡ç¥åãããŠããŸãïŒïŒ
/* * src\southbridge\intel\lynxpoint\pch.h * #define DEFAULT_GPIOBASE 0x1400 * #define DEFAULT_GPIOSIZE 0x400 */ Scope (\_SB) { Device (PCI0) { ... Device (GPIO) { // GPIO Controller Name (_HID, "INT33C7") Name (_CID, "INT33C7") Name (_UID, 1) Name (RBUF, ResourceTemplate() { DWordIo (ResourceProducer, MinFixed, // IsMinFixed MaxFixed, // IsMaxFixed PosDecode, // Decode EntireRange, // ISARanges 0x00000000, // AddressGranularity 0x00000000, // AddressMinimum 0x00000000, // AddressMaximum 0x00000000, // AddressTranslation 0x00000001, // RangeLength , // ResourceSourceIndex , // ResourceSource BAR0) Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, , , ) {14} }) Method (_CRS, 0, NotSerialized) { CreateDwordField (^RBUF, ^BAR0._MIN, BMIN) CreateDwordField (^RBUF, ^BAR0._MAX, BMAX) CreateDwordField (^RBUF, ^BAR0._LEN, BLEN) Store (DEFAULT_GPIOSIZE, BLEN) Store (DEFAULT_GPIOBASE, BMIN) Store (Subtract (Add (DEFAULT_GPIOBASE, DEFAULT_GPIOSIZE), 1), BMAX) Return (RBUF) } Method (_STA, 0, NotSerialized) { Return (0xF) } } ... } }
ãã®ã³ãŒãã詳现ã«ç解ããã«ã¯ãACPIä»æ§ã® ASLæ§æã«ç²Ÿéããå¿ èŠããããŸãã
ããããèŠããã«ããã®ã³ãŒãã¯ã2ã€ã®ãªãœãŒã¹ãæã€èå¥åãINT33C7ããæã€ããã€ã¹ãäœæããŸãã
I/O memory: 1400-17ff; IRQ: 14;
Linuxã®.probeé¢æ°å ã§ããã©ã€ããŒã¯äžèšã®ããã€ã¹ãªãœãŒã¹ã次ã®ããã«åãåããŸãã
io_rc = platform_get_resource(pdev, IORESOURCE_IO, 0); irq_rc = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
ãã®ããŒã¿ã«åºã¥ããŠããã©ã€ããŒã³ãŒãã¯gpio_chipæ§é äœã«å ¥åããã·ã¹ãã ã«gpioã³ã³ãããŒã©ãŒãç»é²ããŸããããã«ãããsysfsã€ã³ã¿ãŒãã§ã€ã¹ããã¢ã¯ã»ã¹ã§ããããã«ãªããŸãã
ããã€ã¹ã®ASLã³ãŒããè¿ããBIOSã€ã¡ãŒãžãåã³ã³ãã€ã«ãããšãã·ã¹ãã ã¯sysfsãä»ããŠGPIOã«ã¢ã¯ã»ã¹ã§ããŸããã
ãŸãããã©ã«ããŒãgpiochip162ãã¯/ sys / class / gpioã«ãããŸãã ãã®ãã©ã«ãã«ã¯ããã¡ã€ã«ãbaseããšãngpioããå«ãŸããŠããŸãã åºæ¬ãã¡ã€ã«ã¯ããã®ã³ã³ãããŒã©ãŒã®æåã®GPIOã®çªå·ãæ åœãããã®çªå·ã¯ngpioã§ãã
$ cat /sys/class/gpio/gpiochip162/base 162 $ cat /sys/class/gpio/gpiochip162/ngpio 94
ãããã£ãŠããã¹ãŠãæ£åžžã«ãšã¯ã¹ããŒããããŸããã ã¹ã¯ãªãããå®è¡ããŸãã
$ for i in {162..255}; do echo $i > /sys/class/gpio/export; done
ãã®åŸãgpioNãµããã©ã«ããŒã/ sys / class / gpio /ãã©ã«ããŒã«è¡šç€ºããããã®äžã«åç·ã®ç¶æ ãå¶åŸ¡ãããã¡ã€ã«ããããŸãã
ããã€ãã®ã³ã¡ã³ãïŒ
- / sys / class / gpio162 /ãã©ã«ããŒã¯GPIO0ã管çãã/ sys / class / gpio163 /ãã©ã«ããŒã¯GPIO1ã管çããŸã ãã®ã·ããã¯ãå¶åŸ¡æ§é ãstruct gpio_chipãã®åæåäžã«ãã©ã€ããŒããgc-> base = -1;ããå²ãåœãŠãããã«çºçããŸããã ã€ãŸããæ°åãèªåã§éžæããããã«ã«ãŒãã«ãé¢ããŸããã ããã¯äžè¬ã«éèŠã§ã¯ãããŸããããèŠããŠãã䟡å€ããããŸãã
- ã¢ã¯ã»ã¹ã¯ãGPIOãšããŠæ§æãããGPIOåç·ã«ã®ã¿èš±å¯ããããã€ãã£ãã®ãµãŠã¹ããªããžæ©èœãšããŠã¯èš±å¯ãããŸããã ãã®ãããªè¡ã®å Žåããã©ã€ããŒã¯dmesgã«æ å ±ã衚瀺ããŸãïŒãgpioïŒ d reserved for ACPIãã corebootã®å ŽåãGPIOã¯ãã¶ãŒããŒãã®ãããã©ã«ããŒã®ãgpio.hããã¡ã€ã«ã§æ§æãããŸãã
- ããã€ã¹ãšãã©ã€ããŒã¯ã_CIDïŒäºææ§IDïŒã¡ãœããã䜿çšããŠãããããããšãã§ããŸããã«ãŒãã«ã®ãããã¯ã«é¢ããããã¥ã¡ã³ãã¯ãããã¥ã¡ã³ããACPIããŒã¹ã®ããã€ã¹åæãã«èšèŒãããŠããŸãã
INT33C7ããã€ã¹ã«ã¯ãACPIããŒãã«ïŒIBASEãšDFIããïŒã®åããããã»ããäžã«2ã€ã®å°çšãã¶ãŒããŒãããªãããšã«æ³šæããŠãã ããã 確ãã«ãGPIOè¡ãåºåãããªãå¯èœæ§ãæãé«ãïŒãã®æç¹ã§ããã¥ã¡ã³ãã詳现ã«èŠãŠããªãïŒã
èå¥åãINT33C7ã
sysfsæ©èœãäžããåŸããINT33C7ãèå¥çªå·ã¯ã©ãããæ¥ãã®ããšãã質åããããŸããã
_HIDã¡ãœããã®ããã¥ã¡ã³ããèŠããšã httpïŒ //www.uefi.org/PNP_ACPI_RegistryãèŠã䟡å€ãããããšãæããã«ãªããŸããã
_HIDïŒããŒããŠã§ã¢IDïŒ
_HIDïŒããŒããŠã§ã¢IDïŒ
ãã®ãªããžã§ã¯ãã¯ãOSPMã«ããã€ã¹ã®PNP IDãŸãã¯ACPI IDãæäŸããããã«äœ¿çšãããŸã*
ãã©ãããã©ãŒã ã説æããå Žåã_HIDãªããžã§ã¯ãã®äœ¿çšã¯ãªãã·ã§ã³ã§ãã ãã ãã_HIDãªããžã§ã¯ãã¯
OSPMã«ãã£ãŠåæãããããã€ã¹ãèšè¿°ããããã«äœ¿çšãããŸãã OSPMã¯ããã€ã¹ã®ã¿ãåæããŸã
ãã¹åæåãããã€ã¹IDãæ€åºã§ããªãå Žåã ããšãã°ãISAãã¹äžã®ããã€ã¹ã¯
OSPMã«ãã£ãŠåæãããŸãã _ADRãªããžã§ã¯ãã䜿çšããŠããã¹åæåã«ãã£ãŠåæãããããã€ã¹ãèšè¿°ããŸã
OSPM以å€ã
åŒæ°ïŒ
ãªã
æ»ãå€ïŒ
HIDãå«ãæŽæ°ãŸãã¯æåå
_HIDãªããžã§ã¯ãã¯ã32ãããã®å§çž®EISAæ°å€åIDãŸãã¯æååã®ããããã«è©äŸ¡ãããŸãã ãã
æååã圢åŒã¯ãã¢ã¹ã¿ãªã¹ã¯ããã®ä»ã®å é ã®ãªãè±æ°åã®PNPãŸãã¯ACPI IDã§ããå¿ èŠããããŸã
æåã
æå¹ãªPNP IDã¯ããAAA ####ãã®åœ¢åŒã§ããå¿ èŠããããŸããããã§ãAã¯å€§æåã§ãïŒã¯16é²æ°ã§ã
æ¡ã æå¹ãªACPI IDã¯ããNNNN ####ãã®åœ¢åŒã§ããå¿ èŠããããŸããNã¯å€§æåãŸãã¯
æ°åïŒ '0'-'9'ïŒããã³ïŒã¯16é²æ°ã§ãã ãã®ä»æ§ã¯ãæååãACPIãã䜿çšå°çšã«äºçŽããŠããŸã
ããã€ã¹å®çŸ©ãªã¹ãä»ãã ããã«4æ¡ã®16é²æ°ãè¡šããã¹ãŠã®æååãäºçŽããŸã
PCIãå²ãåœãŠããã³ããŒIDãæä»çã«äœ¿çšããŸãã
* -PNP IDããã³ACPI IDã¬ãžã¹ããªã¯http://www.uefi.org/PNP_ACPI_Registryã«ãããŸã
ãã®ãªããžã§ã¯ãã¯ãOSPMã«ããã€ã¹ã®PNP IDãŸãã¯ACPI IDãæäŸããããã«äœ¿çšãããŸã*
ãã©ãããã©ãŒã ã説æããå Žåã_HIDãªããžã§ã¯ãã®äœ¿çšã¯ãªãã·ã§ã³ã§ãã ãã ãã_HIDãªããžã§ã¯ãã¯
OSPMã«ãã£ãŠåæãããããã€ã¹ãèšè¿°ããããã«äœ¿çšãããŸãã OSPMã¯ããã€ã¹ã®ã¿ãåæããŸã
ãã¹åæåãããã€ã¹IDãæ€åºã§ããªãå Žåã ããšãã°ãISAãã¹äžã®ããã€ã¹ã¯
OSPMã«ãã£ãŠåæãããŸãã _ADRãªããžã§ã¯ãã䜿çšããŠããã¹åæåã«ãã£ãŠåæãããããã€ã¹ãèšè¿°ããŸã
OSPM以å€ã
åŒæ°ïŒ
ãªã
æ»ãå€ïŒ
HIDãå«ãæŽæ°ãŸãã¯æåå
_HIDãªããžã§ã¯ãã¯ã32ãããã®å§çž®EISAæ°å€åIDãŸãã¯æååã®ããããã«è©äŸ¡ãããŸãã ãã
æååã圢åŒã¯ãã¢ã¹ã¿ãªã¹ã¯ããã®ä»ã®å é ã®ãªãè±æ°åã®PNPãŸãã¯ACPI IDã§ããå¿ èŠããããŸã
æåã
æå¹ãªPNP IDã¯ããAAA ####ãã®åœ¢åŒã§ããå¿ èŠããããŸããããã§ãAã¯å€§æåã§ãïŒã¯16é²æ°ã§ã
æ¡ã æå¹ãªACPI IDã¯ããNNNN ####ãã®åœ¢åŒã§ããå¿ èŠããããŸããNã¯å€§æåãŸãã¯
æ°åïŒ '0'-'9'ïŒããã³ïŒã¯16é²æ°ã§ãã ãã®ä»æ§ã¯ãæååãACPIãã䜿çšå°çšã«äºçŽããŠããŸã
ããã€ã¹å®çŸ©ãªã¹ãä»ãã ããã«4æ¡ã®16é²æ°ãè¡šããã¹ãŠã®æååãäºçŽããŸã
PCIãå²ãåœãŠããã³ããŒIDãæä»çã«äœ¿çšããŸãã
* -PNP IDããã³ACPI IDã¬ãžã¹ããªã¯http://www.uefi.org/PNP_ACPI_Registryã«ãããŸã
ãã®ãªã³ã¯ã«ã¯3ã€ã®ãã€ã³ãããããŸãã
- ãã¹ãŠã®ã¿ã€ãã®3æåã®èå¥åïŒPNP IDïŒãããã«ç€ºãããŠããŸã
- ããã§ã¯ãMicrosoftãäºçŽãããPNPãã§å§ãŸãPNP IDã瀺ããŸãã
- ãã¹ãŠã®çš®é¡ã®4æåã®èå¥åïŒACPI IDïŒãããã«ç€ºãããŠããŸã
çç±ã¯æ確ã§ã¯ãããŸããããPNP IDãªã¹ãããããINTãèå¥åãINTERPHASE CORPORATIONã§äºçŽãããŠããããšãããããŸãã
INTERPHASE CORPORATION INT 11/29/1996
ã©ããããå®å šãªããã€ã¹èå¥åã®åäžãªã¹ãïŒæåéšå+ããžã¿ã«ïŒã¯å ¬éãããŠããŸããã ããããGoogleã®å©ããåããŠãããšãã°ãããŸãã¯ããã§ããã€ã¹ã®ãªã¹ããš_HIDãèŠã€ããããšãã§ããŸãã ã
圌ãã¯ç€ºããŸãïŒ
INT33C7=Intel Serial I/O GPIO Host Controller
ãããŠããã®ãªã¹ãã®æ®ãã®è¡ããå€æãããšããã¹ãŠã®INTxxxxããã€ã¹ã¯Intelããã€ã¹ã§ãïŒä»ã§ã¯éåžžã«æçœã«èãããŸãããINTERPHASE CORPORATIONãšã®æ¥ç¶ã¯ãŸã æ確ã§ã¯ãããŸããããŸããçªå·ããã®ãããªå€§ããªæ°åã§å§ãŸãçç±ã¯ããŸãæ確ã§ã¯ãããŸãããã Intelã®è£éïŒã
Windowsã®éä¿¡ãã©ã€ããŒãšããã€ã¹
奜å¥å¿ãæºãããã®ã§ãããŒãã«WindowsãããŒãããããšã«ããŸããã äºæ³ã©ãããã·ã¹ãã ã¯ããã€ã¹ã®ãã©ã€ããŒãèŠã€ããããšãã§ããŸããã§ããã IBASEããã³DFIããŒãã®ãã©ã€ããŒããã®å©ãã¯ãããŸããã§ãããããããã®ããŒãã®BIOSã§ã¯ãã®ããã€ã¹ã瀺ãããŠããªããããç解ã§ããŸãã
Microsoft Webãµã€ãã§ãã©ã€ããŒãèŠã€ããããšãã§ããŸãã
ãã ãããã®ãã©ã€ããŒã¯Windows 8.1以éã§ã®ã¿è¡šç€ºãããŸãã ç§ã¯ãŸã Windows 7ã§äœæ¥ããŠããŸãã
ããã§ããæªç¥ã®ããã€ã¹ã®ãã©ã€ããŒãæ€çŽ¢ãããšãã«ããã©ã€ããŒã®1ã€ãããŠã³ããŒãããŠããã®ãã©ã«ããŒãæå®ããããšããŸããã
ãã ãããã£ã¹ãããã£ã¯ãã©ã€ããããã€ã¹ã«ãããã§ããŸããã§ããã infãã¡ã€ã«ã«ã¯INT33C7ããã€ã¹ã«é¢ããæ å ±ãæ確ã«å«ãŸããŠããŸãããã
[Manufacturer] %INTEL%=Intel,NTamd64.6.3 [Intel.NTamd64.6.3] %iaLPSS_GPIO.DeviceDesc_LPT%=iaLPSS_GPIO_Device, ACPI\INT33C7 %iaLPSS_GPIO.DeviceDesc_WPT%=iaLPSS_GPIO_Device, ACPI\INT3437
INFãã¡ã€ã«ã解æããéçšã§ã[Manufacturer]ã»ã¯ã·ã§ã³ãããããç§ã®ã·ã¹ãã åãã§ã¯ãªãããšãæ確ã«ç€ºããŠããããšãããããŸããã
Intel.NTamd64.6.3ã®æå³ã¯ã説æããç解ã§ããŸãã
nt[Architecture][.[OSMajorVersion][.[OSMinorVersion] OSMajorVersion=6 => Windows 7/Windows 8.1/Windows Server 2012 R2/... OSMinorVersion=3 => Windows 8.1/Windows Server 2012 R2
Intel.NTamd64.6.3ãIntel.NTamd64.6.1ã«çœ®ãæããŠWindows 7ãã©ã€ããŒãããã·ã¥ããããšããŸããããããããã倱æãããŸãããæ»ã®ãã«ãŒã¹ã¯ãªãŒã³ãšèµ·åäžå¯èœãªOSã衚瀺ããããããå埩ããå¿ èŠããããŸããã
Win7ã®ãã©ã€ããŒã¯ãã€ã³ã¿ãŒãããäžã®ç解ã§ããªããµã€ãã§ã®ã¿æ€åºããããã®åŸãããã€ã¹ãããŒãžã£ãŒã®ããã€ã¹ãæå笊ä»ãã§è¡šç€ºãããŸãã
圌ã®ç¡åããå®æããWindows 10ã§æ©èœããã¹ãããããšã«ããŸãããå¬ããé©ãããããŸããã Intelãããã»ããããã€ã¹ãœãããŠã§ã¢ïŒINFæŽæ°ãŠãŒãã£ãªãã£ïŒã¯ãã³ã³ãããŒã©ãŒçšã®ãã©ã€ããŒãåé¡ãªãã€ã³ã¹ããŒã«ããŸããã

ã芧ã®ãšããããã®ããã€ã¹ã«ã¯åœç€Ÿã瀺ãããªãœãŒã¹ããããŸãã

çè«çã«ã¯ãGPIOã³ã³ãããŒã©ãŒã䜿çšããŠãã©ã€ããŒãã€ã³ã¹ããŒã«ããåŸãIOCTLé¢æ°ïŒ ãã®ããã¥ã¡ã³ããªã©ïŒã䜿çšããŠäœæ¥ããããšãå¯èœã«ãªãå¯èœæ§ãæãé«ããªããŸãã
ããããWindowsããã®GPIOããã°ã©ãã³ã°ã¿ã¹ã¯ã¯èããããªãã£ãããããããã»ããã®åæ§ã®ããã¥ã¡ã³ãã®æ€çŽ¢ã¯å»¶æãããŸããã
çµè«ïŒ
ãã®èšäºã§ã¯ã_HID ACPIã¡ãœããã䜿çšããŠããã©ã€ããŒãšããã€ã¹éã®æ¥ç¶ã調ã¹ãŸããã ãã®ãããªéä¿¡ã¯ãåæã§ããªãããã€ã¹ã®x86ã·ã¹ãã ã§å¿ èŠã«ãªãå ŽåããããŸãã
- Linuxã®å Žåããã©ã€ããŒãšã®éä¿¡ã¯.acpi_match_tableãä»ããŠè¡ãããŸã
- Windowsã®å Žåããã©ã€ããŒãšã®éä¿¡ã¯INFãã¡ã€ã«ãä»ããŠè¡ãããŸã