рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдВрдХреНрд╕ рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ GPIO рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ _HID ACPI рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдбреНрд░рд╛рдЗрд╡рд░ рдФрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдмреАрдЪ рд╕рдВрдЪрд╛рд░

рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдмрдпрд╛рди


рд▓рд┐рдирдХреНрд╕ рдореЗрдВ GPIO рдХреЗ рд╕рд╛рде sysfs рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рдирдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, "/ sys / class / gpio" рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ "рдирд┐рд░реНрдпрд╛рдд" рдФрд░ "рдЕрдирдПрдХреНрд╕рдкреЛрд░реНрдЯ" рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВред рдирд┐рд░реНрдпрд╛рдд рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрдЦреНрдпрд╛ X рд▓рд┐рдЦрдХрд░, рдЖрдк GPIOX рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдерд╛рди рдореЗрдВ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ

#    user space   GPIO12 $ echo 12 > /sys/class/gpio/export 

рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЦреЛрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рдлрд╝реЛрд▓реНрдбрд░ / sys / class / gpio / gpioX / рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ "рдорд╛рди" рдпрд╛ "рджрд┐рд╢рд╛" рдХреЗ рд░реВрдк рдореЗрдВ рдРрд╕реА рдлрд╛рдЗрд▓реЗрдВ рд╣реЛрдВрдЧреА, рдФрд░ "рджрд┐рд╢рд╛" рдлрд╝рд╛рдЗрд▓ рдореЗрдВ "рдЗрди" рдпрд╛ "рдЖрдЙрдЯ" рд▓рд┐рдЦрдХрд░ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ 1 рдпрд╛ 0 рд▓рд┐рдЦреЗрдВрдЧреЗред "рдорд╛рди" рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рд╕реАрдзреЗ GPIO рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред

 #  GPIO   $ echo "out" > /sys/class/gpio/gpio12/direction #  1   GPIO $ echo 1 > /sys/class/gpio/gpio12/value 

"GpioX" рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП "рдЗрдХреЛ X> / sys / рдХреНрд▓рд╛рд╕ / gpio / рдПрдХреНрд╕рдкреЛрд░реНрдЯ" рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП, GPIO рдХрдВрдЯреНрд░реЛрд▓рд░ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ GPIO рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рдЦреЛрд▓рддрд╛ рд╣реИред

рдРрд╕рд╛ рд╣реБрдЖ рдХрд┐ рдореИрдВ рдЗрдВрдЯреЗрд▓ рд╣рд╕рд╡реЗрд▓ i7 рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рдХрд╕реНрдЯрдо рдмреЛрд░реНрдб рдХреЗ рд▓рд┐рдП рдХреЛрд░рдмреВрдЯ рдХреЛ рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ [рдЬреЛ рд▓реЛрдЧ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рдХреЛрд░рдмреВрдЯ рдПрдХ рдУрдкрди рд╕реЛрд░реНрд╕ BIOS рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдУрдкрди рд╕реЛрд░реНрд╕ ( https://www.coreboot.org/ ) рд╣реИред ]ред LynxpointLP рджрдХреНрд╖рд┐рдг рдкреБрд▓ рдЬрд┐рд╕рдореЗрдВ 94 GPIO рд▓рд╛рдЗрдиреЗрдВ рд╣реИрдВ, рдореЗрд░реЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдФрд░ рдореИрдВ рдЙрдиреНрд╣реЗрдВ sysfs рдореЗрдВ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ ...

рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ (рд▓рд┐рдирдХреНрд╕ рдореЗрдВ рдбреНрд░рд╛рдЗрд╡рд░ рдФрд░ рдбрд┐рд╡рд╛рдЗрд╕ рд╕рдВрдЪрд╛рд░)


рдХрд░реНрдиреЗрд▓ рдХреЛрдб рдкрд░ рдПрдХ рдЫреЛрдЯреА рдЦреЛрдЬ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдпрд╣ рдбреНрд░рд╛рдЗрд╡рд░ рдкрд╣рд▓реЗ рд╣реА рд▓рд┐рдЦрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИ, "рдбреНрд░рд╛рдЗрд╡рд░ \ 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 рд╡рд┐рдХрд▓реНрдк рдЙрд╕ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдореИрдВ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛, рд╣рд╛рд▓рд╛рдБрдХрд┐, GPIO рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд▓рд┐рдП "/ sys / class / gpio /" рдлрд╝реЛрд▓реНрдбрд░ (рдЬреЛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП) рдореЗрдВ рдПрдХ рднреА "gpiochipN" рдлрд╝реЛрд▓реНрдбрд░ рдирд╣реАрдВ рдерд╛, рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рднреА рдХрд┐рд╕реА рдХреЗ рдирд┐рд░реНрдпрд╛рдд рдХрд╛ рдиреЗрддреГрддреНрд╡ рдирд╣реАрдВ рд╣реБрдЖред рд▓рд╛рдЗрдиред

 $ for i in {0..255}; do echo $i > /sys/class/gpio/export; done 

рдХреЛрд░рдмреВрдЯ рдХреЛрдб рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдпрд╛ рдЗрд╕ рджрдХреНрд╖рд┐рдг рдкреБрд▓ рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ GPIO рдирд┐рдпрдВрддреНрд░рдХ рдПрдХ рдЕрд▓рдЧ PCI рдбрд┐рд╡рд╛рдЗрд╕ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдПрдХ рдЕрдиреНрдп PCI рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ: LPC рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмреНрд░рд┐рдЬред рдЗрд╕ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ PCI рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реНрдкреЗрд╕ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЖрдкрдХреЛ GPIO рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ I / O рд╕реНрдкреЗрд╕ рдореЗрдВ BASE_ADDRESS рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ 1KV I / O рд╕реНрдкреЗрд╕ рдореЗрдВ рдПрдХ рд╡рд┐рдВрдбреЛ рдЦреЛрд▓реЗрдЧрд╛ред рдЗрд╕ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдмрд╛рдЗрдЯреНрд╕ рд▓рд┐рдЦрдиреЗ / рдкрдврд╝рдиреЗ рд╕реЗ рдЖрдк GPIO рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╣рдо рдХреЛрд░рдмреЛрдЯ рдХреЛрдб рдореЗрдВ рдХреНрдпрд╛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:

Southbridge \ Intel \ 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) 

Southbridge \ Intel \ lynxpoint \ initial_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); 

рдпрджрд┐ рд╣рдо "lspci -xxx" рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рд┐рдирдХреНрд╕ рдореЗрдВ LPC рдбрд┐рд╡рд╛рдЗрд╕ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рд░рд┐рдХреЙрд░реНрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдбреЗрдЯрд╛ рдЗрди рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдореЗрдВ рд╣реИред рддреЛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛрдб рдХреЛ рджреЗрдЦрдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рд▓рд┐рдирдХреНрд╕ рдЪрд╛рд▓рдХ .acpi_match_table рдлрд╝реАрд▓реНрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдПрдиреНрдпреВрдорд░реЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдпрд╣ рдкреАрд╕реАрдЖрдИ рдпрд╛ рдпреВрдПрд╕рдмреА рдмрд╕ рдкрд░ рд╕реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ), рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдбреНрд░рд╛рдЗрд╡рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд╕рд╛рде рдЗрд╕ рдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛ рдХрдиреЗрдХреНрд╢рди рдПрд╕реАрдкреАрдЖрдИ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрддрд╛ рд╣реИред X86 рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓рд╛, рдПрдЖрд░рдПрдо рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдЕрдкрдиреЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдбрд┐рд╡рд╛рдЗрд╕рдЯреНрд░реА рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВрдЧреЗ, рдпрд╛ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдкреБрд░рд╛рдиреЗ рд╣рд╛рд░реНрдбрдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред

рдбреНрд░рд╛рдЗрд╡рд░ \ 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), }, }; 

рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рдпрджрд┐ рдХрд░реНрдиреЗрд▓, рдПрд╕реАрдкреАрдЖрдИ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╕рдордп, рдЗрд╕рдореЗрдВ _HID рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ "INT33C7" рдХреЗ рд╕рд╛рде рдПрдХ рдбрд┐рд╡рд╛рдЗрд╕ рджреЗрдЦрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рдорд┐рд▓рд╛рди рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЗрд╕рдХреЗ рд▓рд┐рдП рдордВрдЪ рдЪрд╛рд▓рдХ рдХреЛ рдЦреЛрдЬрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧрд╛ "ред Driver-> acpi_match_table"ред

рдЬрдм рдПрдХ рдореИрдЪ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд▓рд┐рдирдХреНрд╕ .probe рдбреНрд░рд╛рдЗрд╡рд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛ред

рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рдЗрд╕ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП ACPI рдХреЛрдб рдХреЛ рдХреЛрд░рдмреВрдЯ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдореИрдВрдиреЗ рдЕрднреА рдЗрд╕рдХреА рдЯрд┐рдкреНрдкрдгреА рдХреА рдереАред рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдЯрд┐рдкреНрдкрдгреА рдХреА рдЧрдИ рдХрд┐ рдЗрд╕ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП рд╡рд┐рдВрдбреЛрдЬ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рдирд╣реАрдВ рдвреВрдВрдв рд╕рдХрд╛ рдФрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдореИрдиреЗрдЬрд░ рдореЗрдВ "рдЕрдЬреНрдЮрд╛рдд рдбрд┐рд╡рд╛рдЗрд╕" рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ред рдЗрд╕ рдкрд░ рдЕрдзрд┐рдХ рдиреАрдЪреЗред

рддреЛ рд╣рдо рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ
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) } } ... } } 

рдЗрд╕ рдХреЛрдб рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрд╕реАрдкреА рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рдПрдПрд╕рдПрд▓ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рд╛рде рдЦреБрдж рдХреЛ рдкрд░рд┐рдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд▓реЗрдХрд┐рди рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрд╣ рдХреЛрдб рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ "INT33C7" рдХреЗ рд╕рд╛рде рдПрдХ рдЙрдкрдХрд░рдг рдмрдирд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ 2 рд╕рдВрд╕рд╛рдзрди рд╣реИрдВ:

 I/O memory: 1400-17ff; IRQ: 14; 

рдЗрд╕рдХреЗ .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 рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред рдЗрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ "рдЖрдзрд╛рд░" рдФрд░ "рдПрдирдЬреАрдкреАрдУ" рд╢рд╛рдорд┐рд▓ рд╣реИред рдЖрдзрд╛рд░ рдлрд╝рд╛рдЗрд▓ рдЗрд╕ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рдкрд╣рд▓реЗ 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 / рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗ, рдЬрд┐рд╕рдХреЗ рдЕрдВрджрд░ рд▓рд╛рдЗрди рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╛рдЗрд▓реЗрдВ рд╣реЛрдВрдЧреАред

рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рдПрдХ рдЬреЛрдбрд╝реА:

  • GPIO0 рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП / sys / рд╡рд░реНрдЧ / gpio162 / рдлрд╝реЛрд▓реНрдбрд░ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, GPIO1 рдХреЗ рд▓рд┐рдП / sys / рд╡рд░реНрдЧ / gpio163 / рдлрд╝реЛрд▓реНрдбрд░ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ рдпрд╣ рдмрджрд▓рд╛рд╡ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реБрдЖ рд╣реИ рдХрд┐ рдирд┐рдпрдВрддреНрд░рдг рд╕рдВрд░рдЪрдирд╛ "рд╕рдВрд░рдЪрдирд╛рддреНрдордХ gpio_chip" рдХреЗ рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ "gc-> рдЖрдзрд╛рд░ = -1" рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдореИрдВрдиреЗ рдЦреБрдж рдирдВрдмрд░ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реНрдиреЗрд▓ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ред рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╛рдж рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рд╣реИред
  • рдПрдХреНрд╕реЗрд╕ рдХреЗрд╡рд▓ GPIO рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ GPIO рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдХрд┐рд╕реА рднреА рдореВрд▓ рд╕рд╛рдЙрдердмреНрд░рд┐рдЬ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВред рдРрд╕реА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдЪрд╛рд▓рдХ dmesg рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ: "gpio% d ACPI рдХреЗ рд▓рд┐рдП рдЖрд░рдХреНрд╖рд┐рдд рд╣реИ"ред рдХреЛрд░рдмреВрдЯ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, GPIO рдХреЛ рдорджрд░рдмреЛрд░реНрдб рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ "gpio.h" рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
  • рдбрд┐рд╡рд╛рдЗрд╕ рдФрд░ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ _CID (рдХрдореНрдкреЗрдЯрд┐рдмрд▓ рдЖрдИрдбреА) рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореИрдк рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рд╣рдорд╛рд░реЗ рд╡рд┐рд╖рдп рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ "ACPI рдЖрдзрд╛рд░рд┐рдд рдбрд┐рд╡рд╛рдЗрд╕ рдПрдиреНрдпреВрдорд░реЗрд╢рди" рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ INT33C7 рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдВ ACPI рдЯреЗрдмрд▓ (IBASE рдФрд░ DFI рд╕реЗ) рдореЗрдВ рдПрдХ рд╣реА рдЪрд┐рдкрд╕реЗрдЯ рдкрд░ 2 рдорд╛рд▓рд┐рдХрд╛рдирд╛ рдорджрд░рдмреЛрд░реНрдб рдирд╣реАрдВ рд╣реИрдВред рд╕рдЪ рд╣реИ, рд╡рд╣рд╛рдБ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ GPIO рд▓рд╛рдЗрдиреЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдирд╣реАрдВ рд╣реИрдВ (рдореИрдВрдиреЗ рдЙрд╕ рдкрд▓ рдореЗрдВ рдкреНрд░рд▓реЗрдЦрди рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдирд╣реАрдВ рджреЗрдЦрд╛)ред

рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ "INT33C7"


Sysfs рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдореЗрд░рд╛ рдПрдХ рд╕рд╡рд╛рд▓ рдерд╛, "INT33C7" рдкрд╣рдЪрд╛рди рд╕рдВрдЦреНрдпрд╛ рдХрд╣рд╛рдВ рд╕реЗ рдЖрдИ?

_HID рдкрджреНрдзрддрд┐ рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рджреЗрдЦрдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рдпрд╣ http://www.uefi.org/PNP_ACPI_Registry рджреЗрдЦрдиреЗ рд▓рд╛рдпрдХ рд╣реИ

_HID (рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЖрдИрдбреА)
_HID (рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЖрдИрдбреА)
рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ PNP ID рдпрд╛ ACPI ID рдХреЗ рд╕рд╛рде OSPM рдХреА рдЖрдкреВрд░реНрддрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╕рдордп, рдХрд┐рд╕реА рднреА _HID рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдПрдХ _HID рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
рдХрд┐рд╕реА рднреА рдЙрдкрдХрд░рдг рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ OSPM рджреНрд╡рд╛рд░рд╛ рдЧрдгрдирд╛ рдХреА рдЬрд╛рдПрдЧреА OSPM рдХреЗрд╡рд▓ рдПрдХ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдПрдиреНрдпреВрдорд░реЗрдЯ рдХрд░рддрд╛ рд╣реИ
рдЬрдм рдХреЛрдИ рдмрд╕ рдПрдиреНрдпреВрдорд░реЗрдЯрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдЖрдИрдбреА рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, ISA рдмрд╕ рдкрд░ рдбрд┐рд╡рд╛рдЗрд╕ рд╣реИрдВ
OSPM рджреНрд╡рд╛рд░рд╛ рдЧрдгрдирд╛ рдХреА рдЧрдИред рдмрд╕ enumerators рджреНрд╡рд╛рд░рд╛ рдЧрдгрдирд╛ рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП _ADR рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
OSPM рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдпред

рддрд░реНрдХ:
рдХреЛрдИ рдирд╣реАрдВ

рд╡рд╛рдкрд╕реА рдорд╛рди:
рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдпрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЬрд┐рд╕рдореЗрдВ рдЫреБрдкрд╛рдпрд╛ рдЧрдпрд╛ рд╣реЛ
_HID рдСрдмреНрдЬреЗрдХреНрдЯ рдпрд╛ рддреЛ рдПрдХ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ 32-рдмрд┐рдЯ рд╕рдВрдкреАрдбрд┐рдд EISA рдкреНрд░рдХрд╛рд░ ID рдпрд╛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдП
рд╕реНрдЯреНрд░рд┐рдВрдЧ, рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЕрд▓реНрдлрд╝рд╛рдиреНрдпреВрдореЗрд░рд┐рдХ PNP рдпрд╛ ACPI ID рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдореЗрдВ рдХреЛрдИ рддрд╛рд░рд╛рдВрдХрди рдпрд╛ рдЕрдиреНрдп рдкреНрд░рдореБрдЦ рди рд╣реЛ
рдЕрдХреНрд╖рд░ред

рдПрдХ рдорд╛рдиреНрдп рдкреАрдПрдирдкреА рдЖрдИрдбреА "рдПрдПрдП ####" рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд╣рд╛рдВ рдП рдПрдХ рдЕрдкрд░рдХреЗрд╕ рдЕрдХреНрд╖рд░ рдФрд░ # рд╣реЗрдХреНрд╕ рд╣реИред
рдЕрдВрдХреЛрдВред рдПрдХ рд╡реИрдз рдПрд╕реАрдкреАрдЖрдИ рдЖрдИрдбреА "рдПрдирдПрдирдПрдирдПрди ####" рдлреЙрд░реНрдо рдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд╣рд╛рдВ рдПрди рдПрдХ рдЕрдкрд░рдХреЗрд╕ рдкрддреНрд░ рдпрд╛
рдЕрдВрдХ ('0' - '9') рдФрд░ # рдПрдХ рд╣реЗрдХреНрд╕ рдЕрдВрдХ рд╣реИред рдпрд╣ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЗрд╡рд▓ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреНрд░рд┐рдВрдЧ "рдПрд╕реАрдкреАрдЖрдИ" рдХреЛ рдЖрд░рдХреНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ
рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕реВрдЪреАред рдпрд╣ рдЖрдЧреЗ рдХреЗ рд▓рд┐рдП 4 HEX рдЕрдВрдХреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рддрд╛рд░реЛрдВ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░рдЦрддрд╛ рд╣реИ
рдкреАрд╕реАрдЖрдИ-рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╡реЗрдВрдбрд░ рдЖрдИрдбреА рдХреЗ рд╕рд╛рде рд╡рд┐рд╢реЗрд╖ рдЙрдкрдпреЛрдЧред

* -PNP ID рдФрд░ ACPI ID рд░рдЬрд┐рд╕реНрдЯреНрд░реА http://www.uefi.org/PNP_ACPI_Registry рдкрд░ рд╣реИ

рдЗрд╕ рд▓рд┐рдВрдХ рдкрд░ 3 рдмрд┐рдВрджреБ рд╣реИрдВ:

  • рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ 3 рдЕрдХреНрд╖рд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ (рдкреАрдПрдирдкреА рдЖрдИрдбреА) рдпрд╣рд╛рдВ рдЗрдВрдЧрд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ
  • Microsoft рджреНрд╡рд╛рд░рд╛ рдЖрд░рдХреНрд╖рд┐рдд "PNP" рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ PNP рдЖрдИрдбреА рдпрд╣рд╛рдВ рдЗрдВрдЧрд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВред
  • рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ 4 рдЕрдХреНрд╖рд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ (ACPI ID) рдпрд╣рд╛рдВ рджрд┐рдП рдЧрдП рд╣реИрдВ

рдпрд╣ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдкреАрдПрдирдкреА рдЖрдИрдбреА рд╕реВрдЪреА рд╕реЗ рдЖрдк рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ "INT" рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдкреНрд░реЗрдиреНрдпреЛрд░ рдХреЙрд░реНрдкреЛрд░реЗрд╢рди рдкрд░ рдЖрд░рдХреНрд╖рд┐рдд рд╣реИрдВ:

 INTERPHASE CORPORATION INT 11/29/1996 

рдЬрд╛рд╣рд┐рд░ рд╣реИ, рд╕рдВрдкреВрд░реНрдг рдЙрдкрдХрд░рдг рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ (рдкрддреНрд░ рднрд╛рдЧ + рдбрд┐рдЬрд┐рдЯрд▓) рдХреА рдПрдХ рднреА рд╕реВрдЪреА рдкреНрд░рдХрд╛рд╢рд┐рдд рдирд╣реАрдВ рдХреА рдЧрдИ рд╣реИред рд▓реЗрдХрд┐рди Google рдХреА рдорджрдж рд╕реЗ рдпрд╣рд╛рдБ рдпрд╛ рдпрд╣рд╛рдБ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдгреЛрдВ рдХреА рд╕реВрдЪреА рдФрд░ рдЙрдирдХреЗ _HID рдХреЛ рдЦреЛрдЬрдирд╛ рд╕рдВрднрд╡ рдерд╛ред

рд╡реЗ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВ:

 INT33C7=Intel Serial I/O GPIO Host Controller 

рдФрд░ рдЗрд╕ рд╕реВрдЪреА рдХреА рд╢реЗрд╖ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рд╕рднреА INTxxxx рдбрд┐рд╡рд╛рдЗрд╕ рдЗрдВрдЯреЗрд▓ рдбрд┐рд╡рд╛рдЗрд╕ рд╣реИрдВ (рдЕрдм рдпрд╣ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд▓рдЧ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди INTERPHASE CORPORATION рдХреЗ рд╕рд╛рде рд╕рдВрдмрдВрдз рдЕрднреА рднреА рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ; рдпрд╣ рднреА рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрддрдиреА рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдирдВрдмрд░рд┐рдВрдЧ рдХреНрдпреЛрдВ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рджреГрд╢реНрдпрдорд╛рди рд╣реИ) рдЗрдВрдЯреЗрд▓ рд╡рд┐рд╡реЗрдХ)ред

рд╡рд┐рдВрдбреЛрдЬ рдореЗрдВ рд╕рдВрдЪрд╛рд░ рдЪрд╛рд▓рдХ рдФрд░ рдбрд┐рд╡рд╛рдЗрд╕


рдЕрдкрдиреА рдЬрд┐рдЬреНрдЮрд╛рд╕рд╛ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдмреЛрд░реНрдб рдкрд░ рд╡рд┐рдВрдбреЛрдЬ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдЕрдкреЗрдХреНрд╖рд┐рдд рдерд╛, рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП рдбреНрд░рд╛рдЗрд╡рд░ рдирд╣реАрдВ рдорд┐рд▓рд╛ред IBASE рдФрд░ DFI рдмреЛрд░реНрдбреЛрдВ рдХреЗ рд▓рд┐рдП рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХреА рдХреЛрдИ рдорджрдж рдирд╣реАрдВ рдХреА рдЧрдИ, рдЬреЛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрди рдмреЛрд░реНрдбреЛрдВ рдХреЗ BIOS рдореЗрдВ рдЗрд╕ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдЗрдВрдЧрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдореИрдВ Microsoft рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдбреНрд░рд╛рдЗрд╡рд░ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗрд╡рд▓ рд╡рд┐рдВрдбреЛрдЬ 8.1 рдФрд░ рдЙрдЪреНрдЪрддрд░ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореИрдВ рдЕрднреА рднреА рд╡рд┐рдВрдбреЛрдЬ 7 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдлрд┐рд░ рднреА, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдЕрдЬреНрдЮрд╛рдд рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП рдбреНрд░рд╛рдЗрд╡рд░ рдХреА рдЦреЛрдЬ рдХрд░рддреЗ рд╕рдордп рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдЙрд╕рдХрд╛ рдлрд╝реЛрд▓реНрдбрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдбрд┐рд╕реНрдкреИрдЪрд░ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдореИрдк рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдерд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐ 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 рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдпрд╣ рдирд┐рдХрд▓рд╛ рдХрд┐ [рдирд┐рд░реНрдорд╛рддрд╛] рдЕрдиреБрднрд╛рдЧ рдиреЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдХрд┐ рдпрд╣ рдореЗрд░реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рдирд╣реАрдВ рдерд╛:

рдХреНрдпрд╛ 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 

Windows 7 рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ Intel.NTamd64.6.3 рдХреЗ рд╕рд╛рде Intel.NTamd64.6.1 рдХреЗ рд╕реНрдерд╛рди рдкрд░ рдкреБрд╢ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЗрд╕реЗ рд╣рд▓реНрдХреЗ рдврдВрдЧ рд╕реЗ рд╡рд┐рдлрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдиреЗ рдореБрдЭреЗ рдореМрдд рдХреА рдиреАрд▓реА рд╕реНрдХреНрд░реАрди рдФрд░ рдПрдХ рдЕрд╕рднреНрдп рдУрдПрд╕ рджрд┐рдпрд╛, рдФрд░ рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдПрдХ рд░рд┐рдХрд╡рд░реА рдХрд░рдиреА рдереАред

Win7 рдХреЗ рд▓рд┐рдП рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗрд╡рд▓ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдПрдХ рдЕрдпреЛрдЧреНрдп рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдкрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдбрд┐рд╡рд╛рдЗрд╕ рдореИрдиреЗрдЬрд░ рдореЗрдВ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рд╡рд┐рд╕реНрдордпрд╛рджрд┐рдмреЛрдзрдХ рдЪрд┐рд╣реНрди рдХреЗ рд╕рд╛рде рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЙрдирдХреА рд╢рдХреНрддрд┐рд╣реАрдирддрд╛ рдХрд╛ рдПрд╣рд╕рд╛рд╕ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рд╡рд┐рдВрдбреЛрдЬ 10 рдкрд░ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдПрдХ рд╕реБрдЦрдж рдЖрд╢реНрдЪрд░реНрдп рдерд╛ред Intel рдЪрд┐рдкрд╕реЗрдЯ рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ (INF рдЕрджреНрдпрддрди рдЙрдкрдпреЛрдЧрд┐рддрд╛) рдиреЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдореЗрд░реЗ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд▓рд┐рдП рдбреНрд░рд╛рдЗрд╡рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ред



рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕ рдЙрдкрдХрд░рдг рдореЗрдВ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЗрдВрдЧрд┐рдд рдХрд┐рдП рдЧрдП рд╕рдВрд╕рд╛рдзрди рд╣реИрдВред



рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, GPIO рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд╕рд╛рде рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, IOCTL рдлрд╝рдВрдХреНрд╢рди ( рдЬреИрд╕реЗ рдЗрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╡рд┐рдВрдбреЛрдЬ рд╕реЗ рдХреЛрдИ GPIO рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛рд░реНрдп рдирд╣реАрдВ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореЗрд░реЗ рдЪрд┐рдкрд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреА рдЦреЛрдЬ рд╕реНрдердЧрд┐рдд рдХрд░ рджреА рдЧрдИ рдереАред



рдирд┐рд╖реНрдХрд░реНрд╖:


рдЗрд╕ рд▓реЗрдЦ рдиреЗ рдбреНрд░рд╛рдЗрд╡рд░ рдФрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдмреАрдЪ _HID ACPI рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдиреЗрдХреНрд╢рди рдХреА рдЬрд╛рдВрдЪ рдХреАред рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдВрдЪрд╛рд░ рдХреЛ рдЙрди рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ x86 рд╕рд┐рд╕реНрдЯрдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдЧрдгрдирд╛ рдирд╣реАрдВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред

  • рд▓рд┐рдирдХреНрд╕ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ .acpi_match_table рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрддрд╛ рд╣реИ
  • рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдПрдХ INF рдлрд╝рд╛рдЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрддрд╛ рд╣реИ

Source: https://habr.com/ru/post/hi429336/


All Articles