Add device driver for APU2/APU3 GPIOs
Subsystems (2)
v5 cover Add device driver for APU2/APU3 GPIOs
Changes v2:
- Update SPDX short identifier
- Remove gpio-keys-polled device moved to arch/x86/platform
- Fix styling
- Use spinnlock only there where it is useful
- Removed useless output on driver load
- Do bit manipulation later not on IO
- Add additional GPIOs handling mpci2_reset and mpcie3_reset.
- Add name to GPIOs exported via sysfs
Changes v3:
- Add a new platform device for the frontpanel push button.
- Get global variables from the heap
- Fix errors/warnings generated by ./scripts/checkpatch.pl
Changes v4:gpio-apu.c
- Move bit shifting out of spinnlock
- Change declaration of int to unsigned int
- Remove redundant blank line
- Use dmi table callback
- Remove noisepcengines-apu-platform.c
- Move platform device to drivers/platform/x86
- Remove needless include
- Add dmi information so that this device is only present on APU2 APU3 boards from PC Engines
Changes v5:gpio-apu.c
- Remove GPIO_GENERIC select from Kconfig
- Make gpio_chip real member of apu_gpio_pdata
- Use BIT macro for get_data and get_dir functions
- Pass platform data to devm_gpiochip_add_data to get data per-instance state container
- Remove DEVNAME define
- Remove platfrom_device member from apu_gpio_pdata this
- Clean up init function
- Remove MODULE_ALIAS
Until now it was not possible to get more information to detect the MMIO_BASE address from the ACPI subsystem.
Florian Eckert (2):
gpio: Add driver for PC Engines APU boards
platform: Add reset button device for PC Engines APU boards
drivers/gpio/Kconfig | 7 + drivers/gpio/Makefile | 1 + drivers/gpio/gpio-apu.c | 288 ++++++++++++++++++++++++++ drivers/platform/x86/Kconfig | 11 + drivers/platform/x86/Makefile | 1 + drivers/platform/x86/pcengines-apu-platform.c | 114 ++++++++++ 6 files changed, 422 insertions(+) create mode 100644 drivers/gpio/gpio-apu.c create mode 100644 drivers/platform/x86/pcengines-apu-platform.c
Signature · 1 line
2.11.0
PATCH v5 1/2 gpio: Add driver for PC Engines APU boards
Add a new device driver "gpio-apu" which will handle the GPIOs on APU2 and APU3 devices from PC Engines.
APU2 (https://pcengines.ch/schema/apu2c.pdf page 7):
- G32 is "button_reset" connected to the smd-button on the frontpanel
- G50 is "mpcie2_reset" connected to mPCIe2 reset line
- G51 is "mpcie3_reset" connected to mPCIe3 reset line
APU3 (https://pcengines.ch/schema/apu3c.pdf page 7):
- G32 is "button_reset" connected to the smd-button on the frontpanel
- G50 is "mpcie2_reset" connected to mPCIe2 reset line
- G51 is "mpcie3_reset" connected to mPCIe3 reset line
- G33 is "simswap" connected to SIM switch IC to swap the SIM between mPCIe2 and mPCIe3 slot
--- drivers/gpio/Kconfig | 7 ++ drivers/gpio/Makefile | 1 + drivers/gpio/gpio-apu.c | 288 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 296 insertions(+) create mode 100644 drivers/gpio/gpio-apu.c
drivers/gpio/Kconfig +7 -0
@@ -117,6 +117,13 @@ config GPIO_AMDPT driver for GPIO functionality on Promontory IOHub Require ACPI ASL code to enumerate as a platform device. +config GPIO_APU + tristate "PC Engines APU2/APU3 GPIO support" + depends on X86 + help + Say Y here to support GPIO functionality on APU2/APU3 boards + from PC Engines. + config GPIO_ASPEED tristate "Aspeed GPIO support" depends on (ARCH_ASPEED || COMPILE_TEST) && OF_GPIO
drivers/gpio/Makefile +1 -0
@@ -29,6 +29,7 @@ obj-$(CONFIG_GPIO_ALTERA) += gpio-altera.o obj-$(CONFIG_GPIO_ALTERA_A10SR) += gpio-altera-a10sr.o obj-$(CONFIG_GPIO_AMD8111) += gpio-amd8111.o obj-$(CONFIG_GPIO_AMDPT) += gpio-amdpt.o +obj-$(CONFIG_GPIO_APU) += gpio-apu.o obj-$(CONFIG_GPIO_ARIZONA) += gpio-arizona.o obj-$(CONFIG_GPIO_ATH79) += gpio-ath79.o obj-$(CONFIG_GPIO_ASPEED) += gpio-aspeed.o
drivers/gpio/gpio-apu.c new file +288 -0
288 lines not on this page · raw message
Signature · 1 line
2.11.0
kbuild test robot
build botRe: [PATCH v5 1/2] gpio: Add driver for PC Engines APU boards
Thank you for the patch! Yet something to improve:
Hi Florian,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on gpio/for-next]
[also build test ERROR on v4.20-rc4 next-20181127]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Florian-Eckert/Add-device-driver-for-APU2-APU3-GPIOs/20181128-045043 base: https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio.git for-next config: i386-allmodconfig (attached as .config) compiler: gcc-7 (Debian 7.3.0-1) 7.3.0 reproduce: # save the attached .config to linux build tree make ARCH=i386
All error/warnings (new ones prefixed by >>):
In file included from drivers/gpio/gpio-apu.c:13:0:
>> include/linux/module.h:213:1: error: expected ',' or ';' before 'extern'
extern typeof(name) __mod_##type##__##name##_device_table \
^
>> drivers/gpio/gpio-apu.c:163:1: note: in expansion of macro 'MODULE_DEVICE_TABLE'
MODULE_DEVICE_TABLE(dmi, apu2_gpio_dmi_table);
^~~~~~~~~~~~~~~~~~~vim +213 include/linux/module.h
^1da177e Linus Torvalds 2005-04-16 209 cff26a51 Rusty Russell 2014-02-03 210 #ifdef MODULE cff26a51 Rusty Russell 2014-02-03 211 /* Creates an alias so file2alias.c can find device table. */ ^1da177e Linus Torvalds 2005-04-16 212 #define MODULE_DEVICE_TABLE(type, name) \ 0bf8bf50 Matthias Kaehlcke 2017-07-24 @213 extern typeof(name) __mod_##type##__##name##_device_table \ cff26a51 Rusty Russell 2014-02-03 214 __attribute__ ((unused, alias(__stringify(name)))) cff26a51 Rusty Russell 2014-02-03 215 #else /* !MODULE */ cff26a51 Rusty Russell 2014-02-03 216 #define MODULE_DEVICE_TABLE(type, name) cff26a51 Rusty Russell 2014-02-03 217 #endif ^1da177e Linus Torvalds 2005-04-16 218
:::::: The code at line 213 was first introduced by commit
:::::: 0bf8bf50eddc7511b52461bae798cbfaa0157a34 module: Remove const attribute from alias for MODULE_DEVICE_TABLE
:::::: TO: Matthias Kaehlcke <[email protected]> :::::: CC: Jessica Yu <[email protected]>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
Re: [PATCH v5 1/2] gpio: Add driver for PC Engines APU boards
In reply to Florian EckertQuoted 16 lines · Florian Eckert
Add a new device driver "gpio-apu" which will handle the GPIOs on APU2 and APU3 devices from PC Engines.
APU2 (https://pcengines.ch/schema/apu2c.pdf page 7):
- G32 is "button_reset" connected to the smd-button on the frontpanel
- G50 is "mpcie2_reset" connected to mPCIe2 reset line
- G51 is "mpcie3_reset" connected to mPCIe3 reset lineAPU3 (https://pcengines.ch/schema/apu3c.pdf page 7):
- G32 is "button_reset" connected to the smd-button on the frontpanel
- G50 is "mpcie2_reset" connected to mPCIe2 reset line
- G51 is "mpcie3_reset" connected to mPCIe3 reset line
- G33 is "simswap" connected to SIM switch IC to swap the SIM between mPCIe2 and mPCIe3 slot
Quoted 4 lines
+/* PC Engines APU2/APU3 GPIO device driver
+ *
+ * Copyright (C) 2018 Florian Eckert <[email protected]>
+ */
/*
* Multi-line comments
* have this style
*/
drivers/gpio/gpio-apu.c line 12
Quoted 6 lines
drivers/gpio/gpio-apu.c new file +6
-0+#include <linux/bits.h> +#include <linux/dmi.h> +#include <linux/err.h> +#include <linux/gpio/driver.h> +#include <linux/input.h> +#include <linux/kernel.h>
kbuild bot complains for absence of
#include <linux/mod_devicetable.h>
here.
drivers/gpio/gpio-apu.c line 64
Quoted 12 lines
drivers/gpio/gpio-apu.c new file +10
-0+#include <linux/module.h> +#include <linux/platform_device.h> +static int gpio_apu_get_dir (struct gpio_chip *chip,unsigned int offset) +{ +u32 val; +struct apu_gpio_pdata *apu_gpio =gpiochip_get_data (chip); + +spin_lock (&apu_gpio->lock); + + val = ~ioread32 (apu_gpio->addr[offset]);
There is no need to do ~ under spin lock.
drivers/gpio/gpio-apu.c
Quoted 7 lines
drivers/gpio/gpio-apu.c new file +6
-0+ +spin_unlock (&apu_gpio->lock); + +return !!(val &BIT (APU_GPIO_BIT_DIR )); +} +if (dmi_check_system (apu3_gpio_dmi_table)) {
(1)
drivers/gpio/gpio-apu.c line 218
Quoted 5 lines
drivers/gpio/gpio-apu.c new file +4
-0+ apu_gpio->addr =devm_kzalloc (&pdev->dev, +sizeof (apu3_gpio_offset), +GFP_KERNEL ); +
No need to have this blank line. Same for the other cases.
drivers/gpio/gpio-apu.c line 231
Quoted 4 lines
drivers/gpio/gpio-apu.c new file +3
-0+if (!apu_gpio->addr) +return -ENOMEM ; + }else if (dmi_check_system (apu2_gpio_dmi_table)) {
(2)
I think I have already told about (1) and (2). You may create two callbacks and utilize .callback member in DMI table.
drivers/gpio/gpio-apu.c line 266
Quoted 10 lines
drivers/gpio/gpio-apu.c new file +8
-0+ } +static int __init apu_gpio_init (void ) +{ +if (!(dmi_check_system (apu2_gpio_dmi_table)) && + !(dmi_check_system (apu3_gpio_dmi_table))) { +pr_err ("No PC Engines board detected\n" ); +return -ENODEV ; + }
I don't think we need this.
Quoted 7 lines
drivers/gpio/gpio-apu.c new file +7
-0+ apu_gpio_pdev =platform_device_register_simple (KBUILD_MODNAME , +-1 ,NULL ,0 ); +if (IS_ERR (apu_gpio_pdev)) +return PTR_ERR (apu_gpio_pdev); + + +return platform_driver_register (&apu_gpio_driver);
drivers/gpio/gpio-apu.c line 284
Quoted 10 lines
drivers/gpio/gpio-apu.c new file +10
-0+} + +static void __exit apu_gpio_exit(void) +{ +platform_device_unregister (apu_gpio_pdev); +platform_driver_unregister (&apu_gpio_driver); +} + +module_init (apu_gpio_init); +module_exit (apu_gpio_exit);
After removing unneeded checks why not to simple use module_platform_driver()
?
Signature · 2 lines
With Best Regards, Andy Shevchenko
Re: [PATCH v5 1/2] gpio: Add driver for PC Engines APU boards
Quoted 6 lines
/*
* Multi-line comments
* have this style
*/
fixed
Quoted 8 lines
Quoted 1 line
+#include <
linux/kernel.h>kbuild bot complains for absence of
#include <
linux/mod_devicetable.h>here.
fixed
Quoted 9 lines
Quoted 8 lines
+static int
gpio_apu_get_dir(struct gpio_chip *chip, unsigned int offset)drivers/gpio/gpio-apu.c new file +6
-0+{ +u32 val; +struct apu_gpio_pdata *apu_gpio =gpiochip_get_data (chip); + +spin_lock (&apu_gpio->lock); +
Quoted 4 lines
Quoted 1 line
+ val = ~ioread32(apu_gpio->addr[offset]);
There is no need to do ~ under spin lock.
fixed
Quoted 10 lines
drivers/gpio/gpio-apu.c
Quoted 7 lines
drivers/gpio/gpio-apu.c new file +6
-0+ +spin_unlock (&apu_gpio->lock); + +return !!(val &BIT (APU_GPIO_BIT_DIR )); +} +if (dmi_check_system (apu3_gpio_dmi_table)) {(1)
Quoted 8 lines
drivers/gpio/gpio-apu.c line 218
Quoted 5 lines
drivers/gpio/gpio-apu.c new file +4
-0+ apu_gpio->addr =devm_kzalloc (&pdev->dev, +sizeof (apu3_gpio_offset), +GFP_KERNEL ); +No need to have this blank line. Same for the other cases.
fixed
Quoted 10 lines
drivers/gpio/gpio-apu.c line 231
Quoted 4 lines
drivers/gpio/gpio-apu.c new file +3
-0+if (!apu_gpio->addr) +return -ENOMEM ; + }else if (dmi_check_system (apu2_gpio_dmi_table)) {(2)
I think I have already told about (1) and (2). You may create two callbacks and utilize .callback member in DMI table.
Done but I do not seen any advantage. I used the following driver as basis.
https://github.com/torvalds/linux/blob/master/drivers/leds/leds-clevo-mail.c
Quoted 5 lines
Quoted 4 lines
drivers/gpio/gpio-apu.c new file +3
-0+ } +static int __init apu_gpio_init (void ) +{
Quoted 8 lines
drivers/gpio/gpio-apu.c line 266
Quoted 5 lines
drivers/gpio/gpio-apu.c new file +5
-0+if (!(dmi_check_system (apu2_gpio_dmi_table)) && + !(dmi_check_system (apu3_gpio_dmi_table))) { +pr_err ("No PC Engines board detected\n" ); +return -ENODEV ; + }I don't think we need this.
see below
Quoted 9 lines
drivers/gpio/gpio-apu.c line 284
Quoted 4 lines
drivers/gpio/gpio-apu.c new file +4
-0+} + +module_init (apu_gpio_init); +module_exit (apu_gpio_exit);After removing unneeded checks why not to simple use
module_platform_driver()
?
I have fixed all the above hints from you now but using "module_platform_driver" is no option. I played around with them but the driver does not find any device. So I need the init function to add a platform device. Only if I do this way driver and device will find and match. And I see the gpios under /sys/class/gpio. So I think I need this?
I have not find any driver who has the same problems
I used the following drivers as my basis:
https://github.com/torvalds/linux/blob/master/drivers/leds/leds-apu.c
https://github.com/torvalds/linux/blob/master/drivers/leds/leds-clevo-mail.c
They all use dmi and need init/exit for platform device register and unregister
PATCH v5 2/2 platform: Add reset button device for PC Engines APU boards
In reply to Florian EckertAdd a platform/x86 device "gpio-keys-polled" for the frontpanel reset button. This device uses the gpio-apu driver for APU borads from PC Engines.
--- drivers/platform/x86/Kconfig | 11 +++ drivers/platform/x86/Makefile | 1 + drivers/platform/x86/pcengines-apu-platform.c | 114 ++++++++++++++++++++++++++ 3 files changed, 126 insertions(+) create mode 100644 drivers/platform/x86/pcengines-apu-platform.c
drivers/platform/x86/Kconfig +11 -0
@@ -1288,6 +1288,17 @@ config INTEL_ATOMISP2_PM To compile this driver as a module, choose M here: the module will be called intel_atomisp2_pm. +config PCENGINES_APU_PLATFORM + bool "PCEngines APU System Support" + depends on X86_64 && DMI && GPIOLIB + help + This option enables system support for the PCEngines APU platform. + At present this just adds the GPIO reset button platform device on + APU2/APU3 boards. + + Note: You must still enable the drivers for GPIO and LED support + (GPIO_APU & LEDS_APU) to actually use the LEDs and the GPIOs. + endif # X86_PLATFORM_DEVICES config PMC_ATOM
drivers/platform/x86/Makefile +1 -0
@@ -96,3 +96,4 @@ obj-$(CONFIG_INTEL_TURBO_MAX_3) += intel_turbo_max_3.o obj-$(CONFIG_INTEL_CHTDC_TI_PWRBTN) += intel_chtdc_ti_pwrbtn.o obj-$(CONFIG_I2C_MULTI_INSTANTIATE) += i2c-multi-instantiate.o obj-$(CONFIG_INTEL_ATOMISP2_PM) += intel_atomisp2_pm.o +obj-$(CONFIG_PCENGINES_APU_PLATFORM) += pcengines-apu-platform.o
drivers/platform/x86/pcengines-apu-platform.c new file +114 -0
114 lines not on this page · raw message
Signature · 1 line
2.11.0
Re: [PATCH v5 2/2] platform: Add reset button device for PC Engines APU boards
Quoted 3 lines · Florian Eckert
Add a platform/x86 device "gpio-keys-polled" for the frontpanel reset button. This device uses the gpio-apu driver for APU borads from PC Engines.
Yep, and actually this one has to instantiate a GPIO.
Quoted 163 lines
Signed-off-by Florian Eckert <[email protected]>--- drivers/platform/x86/Kconfig | 11 +++ drivers/platform/x86/Makefile | 1 + drivers/platform/x86/pcengines-apu-platform.c | 114 ++++++++++++++++++++++++++ 3 files changed, 126 insertions(+) create mode 100644 drivers/platform/x86/pcengines-apu-platform.cdrivers/platform/x86/Kconfig +11
-0@@ -1288,6 +1288,17 @@ config INTEL_ATOMISP2_PM To compile this driver as a module, choose M here: the module will be called intel_atomisp2_pm. +config PCENGINES_APU_PLATFORM + bool "PCEngines APU System Support" + depends on X86_64 && DMI && GPIOLIB + help + This option enables system support for the PCEngines APU platform. + At present this just adds the GPIO reset button platform device on + APU2/APU3 boards. + + Note: You must still enable the drivers for GPIO and LED support + (GPIO_APU & LEDS_APU) to actually use the LEDs and the GPIOs. + endif # X86_PLATFORM_DEVICES config PMC_ATOMdrivers/platform/x86/Makefile +1
-0@@ -96,3 +96,4 @@ obj-$(CONFIG_INTEL_TURBO_MAX_3) += intel_turbo_max_3.o obj-$(CONFIG_INTEL_CHTDC_TI_PWRBTN) += intel_chtdc_ti_pwrbtn.o obj-$(CONFIG_I2C_MULTI_INSTANTIATE) += i2c-multi-instantiate.o obj-$(CONFIG_INTEL_ATOMISP2_PM) += intel_atomisp2_pm.o +obj-$(CONFIG_PCENGINES_APU_PLATFORM) += pcengines-apu-platform.odrivers/platform/x86/pcengines-apu-platform.c new file +114
-1@@ -0,0 +1,114 @@ +// SPDX-License-Identifier: GPL-2.0 +/* +* System Specific setup for PC-Engines APU2/APU3 devices +* +* Copyright (C) 2018 Florian Eckert <[email protected]> +*/ + +#include <linux/dmi.h> +#include <linux/gpio_keys.h> +#include <linux/input.h> +#include <linux/module.h> +#include <linux/platform_device.h> + +static const struct dmi_system_id apu2_gpio_dmi_table[]__initconst = { +/* PC Engines APU2 with "Legacy" bios < 4.0.8 */ + { + .ident ="apu2" , + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"PC Engines" ), +DMI_MATCH (DMI_BOARD_NAME ,"APU2" ) + } + }, +/* PC Engines APU2 with "Legacy" bios >= 4.0.8 */ + { + .ident ="apu2" , + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"PC Engines" ), +DMI_MATCH (DMI_BOARD_NAME ,"apu2" ) + } + }, +/* PC Engines APU2 with "Mainline" bios */ + { + .ident ="apu2" , + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"PC Engines" ), +DMI_MATCH (DMI_BOARD_NAME ,"PC Engines apu2" ) + } + }, + {} +}; +MODULE_DEVICE_TABLE (dmi, apu2_gpio_dmi_table); + +static const struct dmi_system_id apu3_gpio_dmi_table[]__initconst = { +/* PC Engines APU3 with "Legacy" bios < 4.0.8 */ + { + .ident ="apu3" , + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"PC Engines" ), +DMI_MATCH (DMI_BOARD_NAME ,"APU3" ) + } + }, +/* PC Engines APU3 with "Legacy" bios >= 4.0.8 */ + { + .ident ="apu3" , + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"PC Engines" ), +DMI_MATCH (DMI_BOARD_NAME ,"apu3" ) + } + }, +/* PC Engines APU3 with "Mainline" bios */ + { + .ident ="apu3" , + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"PC Engines" ), +DMI_MATCH (DMI_BOARD_NAME ,"PC Engines apu3" ) + } + }, + {} +}; +MODULE_DEVICE_TABLE (dmi, apu3_gpio_dmi_table); + + +static struct gpio_keys_button apu_gpio_buttons[] = { + { + .code =KEY_RESTART , + .gpio =20 , + .active_low =1 , + .desc ="Reset button" , + .type =EV_KEY , + .debounce_interval =60 , + } +}; + +static struct gpio_keys_platform_data apu_buttons_data = { + .buttons = apu_gpio_buttons, + .nbuttons =ARRAY_SIZE (apu_gpio_buttons), + .poll_interval =20 , +}; + +static struct platform_device apu_button_dev = { + .name ="gpio-keys-polled" , + .id =1 , + .dev = { + .platform_data = &apu_buttons_data, + } +}; + +static int __init apu_init (void ) +{ +if (!(dmi_check_system (apu2_gpio_dmi_table)) && + !(dmi_check_system (apu3_gpio_dmi_table))) { +return -ENODEV ; + } + +return platform_device_register (&apu_button_dev); +} + +static void __exit apu_exit(void) +{ +platform_device_unregister (&apu_button_dev); +} + +module_init (apu_init); +module_exit (apu_exit); --2.11.0
Signature · 2 lines
With Best Regards, Andy Shevchenko
kbuild test robot
build botRe: [PATCH v5 2/2] platform: Add reset button device for PC Engines APU boards
In reply to Florian EckertThank you for the patch! Yet something to improve:
Hi Florian,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on gpio/for-next]
[also build test ERROR on v4.20-rc4 next-20181128]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Florian-Eckert/Add-device-driver-for-APU2-APU3-GPIOs/20181128-045043 base: https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio.git for-next config: x86_64-allmodconfig (attached as .config) compiler: gcc-7 (Debian 7.3.0-1) 7.3.0 reproduce: # save the attached .config to linux build tree make ARCH=x86_64
All errors (new ones prefixed by >>):
>> drivers/gpio/gpio-apu.c:163:1: error: Expected ; at end of declaration
>> drivers/gpio/gpio-apu.c:163:1: error: got extern
In file included from drivers/gpio/gpio-apu.c:13:0:
include/linux/module.h:213:1: error: expected ',' or ';' before 'extern'
extern typeof(name) __mod_##type##__##name##_device_table \
^
drivers/gpio/gpio-apu.c:163:1: note: in expansion of macro 'MODULE_DEVICE_TABLE'
MODULE_DEVICE_TABLE(dmi, apu2_gpio_dmi_table);
^~~~~~~~~~~~~~~~~~~vim +163 drivers/gpio/gpio-apu.c
4c30b3d4 Florian Eckert 2018-11-27 135
4c30b3d4 Florian Eckert 2018-11-27 136 static const struct dmi_system_id apu2_gpio_dmi_table[] __initconst = {
4c30b3d4 Florian Eckert 2018-11-27 137 /* PC Engines APU2 with "Legacy" bios < 4.0.8 */
4c30b3d4 Florian Eckert 2018-11-27 138 {
4c30b3d4 Florian Eckert 2018-11-27 139 .ident = "apu2",
4c30b3d4 Florian Eckert 2018-11-27 140 .matches = {
4c30b3d4 Florian Eckert 2018-11-27 141 DMI_MATCH(DMI_SYS_VENDOR, "PC Engines"),
4c30b3d4 Florian Eckert 2018-11-27 142 DMI_MATCH(DMI_BOARD_NAME, "APU2")
4c30b3d4 Florian Eckert 2018-11-27 143 }
4c30b3d4 Florian Eckert 2018-11-27 144 },
4c30b3d4 Florian Eckert 2018-11-27 145 /* PC Engines APU2 with "Legacy" bios >= 4.0.8 */
4c30b3d4 Florian Eckert 2018-11-27 146 {
4c30b3d4 Florian Eckert 2018-11-27 147 .ident = "apu2",
4c30b3d4 Florian Eckert 2018-11-27 148 .matches = {
4c30b3d4 Florian Eckert 2018-11-27 149 DMI_MATCH(DMI_SYS_VENDOR, "PC Engines"),
4c30b3d4 Florian Eckert 2018-11-27 150 DMI_MATCH(DMI_BOARD_NAME, "apu2")
4c30b3d4 Florian Eckert 2018-11-27 151 }
4c30b3d4 Florian Eckert 2018-11-27 152 },
4c30b3d4 Florian Eckert 2018-11-27 153 /* PC Engines APU2 with "Mainline" bios */
4c30b3d4 Florian Eckert 2018-11-27 154 {
4c30b3d4 Florian Eckert 2018-11-27 155 .ident = "apu2",
4c30b3d4 Florian Eckert 2018-11-27 156 .matches = {
4c30b3d4 Florian Eckert 2018-11-27 157 DMI_MATCH(DMI_SYS_VENDOR, "PC Engines"),
4c30b3d4 Florian Eckert 2018-11-27 158 DMI_MATCH(DMI_BOARD_NAME, "PC Engines apu2")
4c30b3d4 Florian Eckert 2018-11-27 159 }
4c30b3d4 Florian Eckert 2018-11-27 160 },
4c30b3d4 Florian Eckert 2018-11-27 161 {}
4c30b3d4 Florian Eckert 2018-11-27 162 }4c30b3d4 Florian Eckert 2018-11-27 @163 MODULE_DEVICE_TABLE(dmi, apu2_gpio_dmi_table); 4c30b3d4 Florian Eckert 2018-11-27 164
:::::: The code at line 163 was first introduced by commit
:::::: 4c30b3d47204299cdb436562e2099c4a72427db7 gpio: Add driver for PC Engines APU boards
:::::: TO: Florian Eckert <[email protected]>
:::::: CC: 0day robot <[email protected]>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
Quoted 12 lines · Florian Eckert
Changes v5:
gpio-apu.c
- RemoveGPIO_GENERICselect fromKconfig
- Makegpio_chipreal member ofapu_gpio_pdata
- Use BIT macro forget_dataandget_dirfunctions
- Pass platform data todevm_gpiochip_add_datato get data per-instance state container
- Remove DEVNAME define
- Removeplatfrom_devicemember fromapu_gpio_pdatathis
- Clean up init function
- RemoveMODULE_ALIAS
Quoted 2 lines
Until now it was not possible to get more information to detect the
MMIO_BASEaddress from the ACPI subsystem.
I'm sorry if I already asked, please, remind me where dump of ACPI tables can be found?
Also would be nice to have the output of lspci -nk -vv -xxx on such platform.
Signature · 2 lines
With Best Regards, Andy Shevchenko
Hello Andy,
Thank you very very much for your code review "again" I will update my patch set with your hints. Should I send v6 or should i wait till I get feedback from you about ACPI?
Quoted 6 lines
Quoted 3 lines
Until now it was not possible to get more information to detect the
MMIO_BASEaddress from the ACPI subsystem.I'm sorry if I already asked, please, remind me where dump of ACPI tables can be found?
https://www.spinics.net/lists/kernel/msg2887290.html
Quoted 1 line
Also would be nice to have the output of
lspci -nk -vv -xxxon such platform.
00:00.0 0600: 1022:1566
Subsystem: 1022:1566 Control: I/O- Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort-
<MAbort- >SERR- <PERR- INTx-
Latency: 0
lspci: Unable to load libkmod resources: error -12
00: 22 10 66 15 04 00 00 00 00 00 00 06 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 22 10 66 15
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
40: 00 00 00 00 00 00 00 00 80 00 00 00 00 00 00 00
50: 22 10 66 15 00 00 00 00 00 00 00 00 00 00 00 00
60: 46 00 00 00 63 10 00 00 00 00 00 00 00 00 00 00
70: 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00
80: 00 00 00 00 08 00 00 00 00 00 00 00 00 00 00 00
90: 00 00 00 7f 2c 00 00 00 02 02 19 00 00 00 00 00
a0: 01 80 30 01 ef be ad de 00 00 00 00 00 00 00 00
b0: 00 00 00 00 00 00 00 00 04 00 10 c2 03 00 00 00
c0: 00 00 00 00 00 00 00 00 01 00 12 00 00 00 14 00
d0: b6 14 30 01 00 00 00 00 00 00 00 00 00 00 00 00
e0: 10 00 40 01 01 11 e3 80 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 80 80 00 00 00 00 00 05 00 00 00
00:02.0 0600: 1022:156b
Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort-
<MAbort- >SERR- <PERR- INTx-
00: 22 10 6b 15 00 00 00 00 00 00 00 06 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
40: 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00:02.2 0604: 1022:1439 (prog-if 00 [Normal decode])
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort-
<MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin B routed to IRQ 24
Bus: primary=00, secondary=01, subordinate=01, sec-latency=0 I/O behind bridge: 00001000-00001fff [size=4K]
Memory behind bridge: fe500000-fe5fffff [size=1M]
Prefetchable memory behind bridge: None
Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort-
<MAbort- <SERR- <PERR-
BridgeCtl: Parity+ SERR+ NoISA- VGA- MAbort- >Reset- FastB2B-
PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
Capabilities: [50] Power Management version 3
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mAPME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [58] Express (v2) Root Port (Slot+), MSI 00
DevCap: MaxPayload 512 bytes, PhantFunc 0
ExtTag+ RBE+
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop+ MaxPayload 256 bytes, MaxReadReq 512 bytes
DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
LnkCap: Port #1, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s
<512ns, L1 <64us
ClockPM- Surprise- LLActRep+ BwNot+ ASPMOptComp+
LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive+
BWMgmt+ ABWMgmt-
SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
Slot #0, PowerLimit 0.000W; Interlock- NoCompl+
SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq-
LinkChg-
Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
Changed: MRL- PresDet+ LinkState+
RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna-
CRSVisible+
RootCap: CRSVisible+
RootSta: PME ReqID 0000, PMEStatus- PMEPending-
DevCap2: Completion Timeout: Range ABCD, TimeoutDis+, LTR-, OBFF Not
Supported ARIFwd-
AtomicOpsCap: Routing- 32bit- 64bit- 128bitCAS- DevCtl2: Completion Timeout: 65ms to 210ms, TimeoutDis-, LTR-, OBFF
Disabled ARIFwd-
AtomicOpsCtl: ReqEn- EgressBlck-
LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
Transmit Margin: Normal Operating Range, EnterModifiedCompliance-
ComplianceSOS-
Compliance De-emphasis: -6dB
LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-,
EqualizationPhase1-
EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit+
Address: 0000000000000000 Data: 0000
Capabilities: [b0] Subsystem: 1022:1234
Capabilities: [b8] HyperTransport: MSI Mapping Enable+ Fixed+
Capabilities: [100 v1] Vendor Specific Information: ID=0001 Rev=1
Len=010 <?>
Kernel driver in use: pcieport
00: 22 10 39 14 07 00 10 00 00 00 04 06 10 00 81 00
10: 00 00 00 00 00 00 00 00 00 01 01 00 11 11 00 00
20: 50 fe 50 fe f1 ff 01 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 50 00 00 00 00 00 00 00 00 02 03 00
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
50: 01 58 03 c8 00 00 00 00 10 a0 42 01 22 80 00 00
60: 30 29 00 00 12 3c 73 01 40 00 11 70 00 00 04 00
70: 00 00 48 01 10 00 01 00 00 00 00 00 1f 00 00 00
80: 06 00 00 00 06 00 00 00 02 00 01 00 00 00 00 00
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
a0: 05 b0 80 00 00 00 00 00 00 00 00 00 00 00 00 00
b0: 0d b8 00 00 22 10 34 12 08 00 03 a8 00 00 00 00
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 6a 00 00 00 01 05 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00:02.3 0604: 1022:1439 (prog-if 00 [Normal decode])
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort-
<MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin C routed to IRQ 25
Bus: primary=00, secondary=02, subordinate=02, sec-latency=0 I/O behind bridge: 00002000-00002fff [size=4K]
Memory behind bridge: fe600000-fe6fffff [size=1M]
Prefetchable memory behind bridge: None
Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort-
<MAbort- <SERR- <PERR-
BridgeCtl: Parity+ SERR+ NoISA- VGA- MAbort- >Reset- FastB2B-
PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
Capabilities: [50] Power Management version 3
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mAPME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [58] Express (v2) Root Port (Slot+), MSI 00
DevCap: MaxPayload 512 bytes, PhantFunc 0
ExtTag+ RBE+
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop+ MaxPayload 256 bytes, MaxReadReq 512 bytes
DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
LnkCap: Port #2, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s
<512ns, L1 <64us
ClockPM- Surprise- LLActRep+ BwNot+ ASPMOptComp+
LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive+
BWMgmt+ ABWMgmt-
SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
Slot #0, PowerLimit 0.000W; Interlock- NoCompl+
SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq-
LinkChg-
Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
Changed: MRL- PresDet+ LinkState+
RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna-
CRSVisible+
RootCap: CRSVisible+
RootSta: PME ReqID 0000, PMEStatus- PMEPending-
DevCap2: Completion Timeout: Range ABCD, TimeoutDis+, LTR-, OBFF Not
Supported ARIFwd-
AtomicOpsCap: Routing- 32bit- 64bit- 128bitCAS- DevCtl2: Completion Timeout: 65ms to 210ms, TimeoutDis-, LTR-, OBFF
Disabled ARIFwd-
AtomicOpsCtl: ReqEn- EgressBlck-
LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
Transmit Margin: Normal Operating Range, EnterModifiedCompliance-
ComplianceSOS-
Compliance De-emphasis: -6dB
LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-,
EqualizationPhase1-
EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit+
Address: 0000000000000000 Data: 0000
Capabilities: [b0] Subsystem: 1022:1234
Capabilities: [b8] HyperTransport: MSI Mapping Enable+ Fixed+
Capabilities: [100 v1] Vendor Specific Information: ID=0001 Rev=1
Len=010 <?>
Kernel driver in use: pcieport
00: 22 10 39 14 07 00 10 00 00 00 04 06 10 00 81 00
10: 00 00 00 00 00 00 00 00 00 02 02 00 21 21 00 00
20: 60 fe 60 fe f1 ff 01 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 50 00 00 00 00 00 00 00 00 03 03 00
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
50: 01 58 03 c8 00 00 00 00 10 a0 42 01 22 80 00 00
60: 30 29 00 00 12 3c 73 02 40 00 11 70 00 00 04 00
70: 00 00 48 01 10 00 01 00 00 00 00 00 1f 00 00 00
80: 06 00 00 00 06 00 00 00 02 00 01 00 00 00 00 00
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
a0: 05 b0 80 00 00 00 00 00 00 00 00 00 00 00 00 00
b0: 0d b8 00 00 22 10 34 12 08 00 03 a8 00 00 00 00
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 6a 00 00 00 01 05 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00:02.4 0604: 1022:1439 (prog-if 00 [Normal decode])
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort-
<MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin D routed to IRQ 26
Bus: primary=00, secondary=03, subordinate=03, sec-latency=0 I/O behind bridge: 00003000-00003fff [size=4K]
Memory behind bridge: fe700000-fe7fffff [size=1M]
Prefetchable memory behind bridge: None
Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort-
<MAbort- <SERR- <PERR-
BridgeCtl: Parity+ SERR+ NoISA- VGA- MAbort- >Reset- FastB2B-
PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
Capabilities: [50] Power Management version 3
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mAPME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [58] Express (v2) Root Port (Slot+), MSI 00
DevCap: MaxPayload 512 bytes, PhantFunc 0
ExtTag+ RBE+
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop+ MaxPayload 256 bytes, MaxReadReq 512 bytes
DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
LnkCap: Port #3, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s
<512ns, L1 <64us
ClockPM- Surprise- LLActRep+ BwNot+ ASPMOptComp+
LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive+
BWMgmt+ ABWMgmt-
SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
Slot #0, PowerLimit 0.000W; Interlock- NoCompl+
SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq-
LinkChg-
Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
Changed: MRL- PresDet+ LinkState+
RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna-
CRSVisible+
RootCap: CRSVisible+
RootSta: PME ReqID 0000, PMEStatus- PMEPending-
DevCap2: Completion Timeout: Range ABCD, TimeoutDis+, LTR-, OBFF Not
Supported ARIFwd-
AtomicOpsCap: Routing- 32bit- 64bit- 128bitCAS- DevCtl2: Completion Timeout: 65ms to 210ms, TimeoutDis-, LTR-, OBFF
Disabled ARIFwd-
AtomicOpsCtl: ReqEn- EgressBlck-
LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
Transmit Margin: Normal Operating Range, EnterModifiedCompliance-
ComplianceSOS-
Compliance De-emphasis: -6dB
LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-,
EqualizationPhase1-
EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit+
Address: 0000000000000000 Data: 0000
Capabilities: [b0] Subsystem: 1022:1234
Capabilities: [b8] HyperTransport: MSI Mapping Enable+ Fixed+
Capabilities: [100 v1] Vendor Specific Information: ID=0001 Rev=1
Len=010 <?>
Kernel driver in use: pcieport
00: 22 10 39 14 07 00 10 00 00 00 04 06 10 00 81 00
10: 00 00 00 00 00 00 00 00 00 03 03 00 31 31 00 00
20: 70 fe 70 fe f1 ff 01 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 50 00 00 00 00 00 00 00 00 04 03 00
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
50: 01 58 03 c8 00 00 00 00 10 a0 42 01 22 80 00 00
60: 30 29 00 00 12 3c 73 03 40 00 11 70 00 00 04 00
70: 00 00 48 01 10 00 01 00 00 00 00 00 1f 00 00 00
80: 06 00 00 00 06 00 00 00 02 00 01 00 00 00 00 00
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
a0: 05 b0 80 00 00 00 00 00 00 00 00 00 00 00 00 00
b0: 0d b8 00 00 22 10 34 12 08 00 03 a8 00 00 00 00
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 6a 00 00 00 01 05 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00:02.5 0604: 1022:1439 (prog-if 00 [Normal decode])
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort-
<MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 27
Bus: primary=00, secondary=04, subordinate=04, sec-latency=0 I/O behind bridge: None
Memory behind bridge: fe200000-fe4fffff [size=3M]
Prefetchable memory behind bridge: None
Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort-
<MAbort- <SERR- <PERR-
BridgeCtl: Parity+ SERR+ NoISA- VGA- MAbort- >Reset- FastB2B-
PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
Capabilities: [50] Power Management version 3
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mAPME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [58] Express (v2) Root Port (Slot+), MSI 00
DevCap: MaxPayload 512 bytes, PhantFunc 0
ExtTag+ RBE+
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop+ MaxPayload 256 bytes, MaxReadReq 512 bytes
DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
LnkCap: Port #4, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s
<512ns, L1 <64us
ClockPM- Surprise- LLActRep+ BwNot+ ASPMOptComp+
LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive+
BWMgmt+ ABWMgmt-
SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
Slot #0, PowerLimit 0.000W; Interlock- NoCompl+
SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq-
LinkChg-
Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
Changed: MRL- PresDet+ LinkState+
RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna-
CRSVisible+
RootCap: CRSVisible+
RootSta: PME ReqID 0000, PMEStatus- PMEPending-
DevCap2: Completion Timeout: Range ABCD, TimeoutDis+, LTR-, OBFF Not
Supported ARIFwd-
AtomicOpsCap: Routing- 32bit- 64bit- 128bitCAS- DevCtl2: Completion Timeout: 65ms to 210ms, TimeoutDis-, LTR-, OBFF
Disabled ARIFwd-
AtomicOpsCtl: ReqEn- EgressBlck-
LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
Transmit Margin: Normal Operating Range, EnterModifiedCompliance-
ComplianceSOS-
Compliance De-emphasis: -6dB
LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-,
EqualizationPhase1-
EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit+
Address: 0000000000000000 Data: 0000
Capabilities: [b0] Subsystem: 1022:1234
Capabilities: [b8] HyperTransport: MSI Mapping Enable+ Fixed+
Capabilities: [100 v1] Vendor Specific Information: ID=0001 Rev=1
Len=010 <?>
Kernel driver in use: pcieport
00: 22 10 39 14 06 00 10 00 00 00 04 06 10 00 81 00
10: 00 00 00 00 00 00 00 00 00 04 04 00 f1 01 00 00
20: 20 fe 40 fe f1 ff 01 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 50 00 00 00 00 00 00 00 00 01 03 00
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
50: 01 58 03 c8 00 00 00 00 10 a0 42 01 22 80 00 00
60: 30 29 00 00 12 3c 73 04 40 00 11 70 00 00 04 00
70: 00 00 48 01 10 00 01 00 00 00 00 00 1f 00 00 00
80: 06 00 00 00 06 00 00 00 02 00 01 00 00 00 00 00
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
a0: 05 b0 80 00 00 00 00 00 00 00 00 00 00 00 00 00
b0: 0d b8 00 00 22 10 34 12 08 00 03 a8 00 00 00 00
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 6a 00 00 00 01 05 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00:08.0 1080: 1022:1537
Subsystem: 1022:1537 Control: I/O- Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Region 0: Memory at fea00000 (64-bit, prefetchable) [size=128K] Region 2: Memory at fe800000 (32-bit, non-prefetchable) [size=1M] Region 3: Memory at fea24000 (32-bit, non-prefetchable) [size=4K] Region 4: Memory at fe900000 (32-bit, non-prefetchable) [size=1M] Region 5: Memory at fea20000 (32-bit, non-prefetchable) [size=8K] Capabilities: [50] MSI-X: Enable- Count=2 Masked- Vector table: BAR=5 offset=00000000 PBA: BAR=5 offset=00001000 Capabilities: [5c] HyperTransport: MSI Mapping Enable+ Fixed+ Capabilities: [60] Power Management version 3 Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
00: 22 10 37 15 02 00 10 00 00 00 80 10 00 00 00 00
10: 0c 00 a0 fe 00 00 00 00 00 00 80 fe 00 40 a2 fe
20: 00 00 90 fe 00 00 a2 fe 00 00 00 00 22 10 37 15
30: 00 00 00 00 50 00 00 00 00 00 00 00 00 00 00 00
40: 00 00 80 10 00 00 37 15 00 00 00 00 22 10 37 15
50: 11 5c 01 00 05 00 00 00 05 10 00 00 08 60 03 a8
60: 01 00 03 00 08 00 00 00 10 00 92 00 e0 8f 00 00
70: 10 09 00 00 00 00 00 00 00 00 00 00 00 00 00 00
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
a0: 00 00 00 00 13 00 06 01 00 00 00 00 00 00 00 00
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 00 00 00 00 00 00 00 00 4c 00 00 00 00 00 00 00
f0: 49 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00
00:10.0 0c03: 1022:7814 (rev 11) (prog-if 30 [XHCI])
Subsystem: 1022:1410 Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort-
<MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 18
Region 0: Memory at fea22000 (64-bit, non-prefetchable) [size=8K]
Capabilities: [50] Power Management version 3
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mAPME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME- Capabilities: [70] MSI: Enable- Count=1/8 Maskable- 64bit+ Address: 0000000000000000 Data: 0000 Capabilities: [90] MSI-X: Enable+ Count=8 Masked- Vector table: BAR=0 offset=00001000 PBA: BAR=0 offset=00001080 Capabilities: [a0] Express (v2) Root Complex Integrated Endpoint, MSI
00
DevCap: MaxPayload 128 bytes, PhantFunc 0
ExtTag- RBE+
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop+ MaxPayload 128 bytes, MaxReadReq 512 bytes
DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
DevCap2: Completion Timeout: Not Supported, TimeoutDis+, LTR+, OBFF
Not Supported
AtomicOpsCap: 32bit- 64bit- 128bitCAS- DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF
Disabled
AtomicOpsCtl: ReqEn-
Capabilities: [100 v1] Latency Tolerance Reporting
Max snoop latency: 0ns
Max no snoop latency: 0ns
Kernel driver in use: xhci_hcd
00: 22 10 14 78 06 04 10 00 11 30 03 0c 10 00 00 00 10: 04 20 a2 fe 00 00 00 00 00 00 00 00 00 00 00 00 20: 00 00 00 00 00 00 00 00 00 00 00 00 22 10 10 14 30: 00 00 00 00 50 00 00 00 00 00 00 00 00 01 00 00 40: 00 00 00 00 20 00 00 01 04 00 00 00 11 00 ff 0f 50: 01 70 03 c8 08 00 00 00 00 00 00 00 00 00 00 00 60: 30 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 70: 05 90 86 00 00 00 00 00 00 00 00 00 00 00 00 00 80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90: 11 a0 07 80 00 10 00 00 80 10 00 00 00 00 00 00
a0: 10 00 92 00 c0 8f 00 00 00 28 10 00 00 00 00 00
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
c0: 00 00 00 00 10 08 00 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: fc 1f 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f0: 08 17 80 00 00 00 00 00 00 00 00 00 00 00 00 00
00:11.0 0106: 1022:7800 (rev 40) (prog-if 01 [AHCI 1.0])
Subsystem: 1022:7800 Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 64, Cache Line Size: 64 bytes Interrupt: pin A routed to IRQ 19 Region 0: I/O ports at 4010 [size=8] Region 1: I/O ports at 4020 [size=4] Region 2: I/O ports at 4018 [size=8] Region 3: I/O ports at 4024 [size=4] Region 4: I/O ports at 4000 [size=16] Region 5: Memory at fea25000 (32-bit, non-prefetchable) [size=1K] Capabilities: [60] Power Management version 3 Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot+,D3cold-)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [70] SATA HBA v1.0 InCfgSpace
Kernel driver in use: ahci
00: 22 10 00 78 07 00 30 02 40 01 06 01 10 40 00 00
10: 11 40 00 00 21 40 00 00 19 40 00 00 25 40 00 00
20: 01 40 00 00 00 50 a2 fe 00 00 00 00 22 10 00 78
30: 00 00 00 00 60 00 00 00 00 00 00 00 00 01 00 00
40: 04 20 00 00 01 00 20 00 ea 10 00 80 01 03 03 fa
50: 05 d0 80 00 00 00 00 00 00 00 00 00 00 00 00 00
60: 01 70 23 40 00 00 00 00 00 00 00 00 00 00 00 00
70: 12 00 10 00 0f 00 00 00 00 00 00 00 00 00 00 00
80: 10 00 00 00 06 00 14 04 ab 01 00 20 7d 00 70 60
90: 45 70 00 00 0c 00 10 00 03 31 40 00 86 0a 8f 0f
a0: 01 c8 00 00 81 10 00 00 00 00 00 00 00 00 00 00
b0: 00 00 00 00 00 00 00 00 00 20 00 00 00 00 00 00
c0: 00 00 00 00 00 00 00 00 10 00 00 ff 00 00 00 00
d0: 13 00 06 03 00 00 64 00 00 00 08 00 00 00 00 00
e0: 80 00 00 00 00 00 00 00 27 60 74 c7 ff 00 ff 01
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00:12.0 0c03: 1022:7808 (rev 39) (prog-if 20 [EHCI])
Subsystem: 1022:7808 Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 64, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 18
Region 0: Memory at fea25400 (32-bit, non-prefetchable) [size=256]
Capabilities: [c0] Power Management version 2
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mAPME(D0+,D1+,D2+,D3hot+,D3cold+)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Bridge: PM- B3+
Capabilities: [e4] Debug port: BAR=1 offset=00e0 Kernel driver in use: ehci-pci
00: 22 10 08 78 16 00 b0 02 39 20 03 0c 10 40 00 00
10: 00 54 a2 fe 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 22 10 08 78
30: 00 00 00 00 c0 00 00 00 00 00 00 00 00 01 00 00
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
50: 41 11 2a a4 7b da 7f fb 00 00 00 00 00 00 00 00
60: 20 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00
70: ff ff 0f 00 2c 00 00 c0 ff 00 00 80 00 00 00 00
80: 38 04 00 79 18 00 fe fc 81 00 20 00 c7 7e 32 64
90: 4c 1d 01 10 00 00 00 00 00 00 00 00 00 0f 0f 03
a0: 01 00 00 00 00 00 00 c0 00 00 00 00 00 00 00 00
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
c0: 01 e4 02 fe 00 00 40 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 00 00 00 00 0a 00 e0 20 00 00 00 00 20 00 00 01
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00:13.0 0c03: 1022:7808 (rev 39) (prog-if 20 [EHCI])
Subsystem: 1022:7808 Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 64, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 18
Region 0: Memory at fea25500 (32-bit, non-prefetchable) [size=256]
Capabilities: [c0] Power Management version 2
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mAPME(D0+,D1+,D2+,D3hot+,D3cold+)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Bridge: PM- B3+
Capabilities: [e4] Debug port: BAR=1 offset=00e0 Kernel driver in use: ehci-pci
00: 22 10 08 78 16 00 b0 02 39 20 03 0c 10 40 00 00
10: 00 55 a2 fe 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 22 10 08 78
30: 00 00 00 00 c0 00 00 00 00 00 00 00 00 01 00 00
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
50: 41 11 2a a4 7b da 7f fb 00 00 00 00 00 00 00 00
60: 20 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00
70: ff ff 0f 00 2c 00 00 c0 ff 00 00 80 00 00 00 00
80: 38 04 00 79 18 00 fe fc 81 00 20 00 c7 7e 32 64
90: 4c 1d 01 10 00 00 00 00 00 00 00 00 00 0f 0b 00
a0: 01 00 00 00 00 00 08 c0 00 00 00 00 00 00 00 00
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
c0: 01 e4 02 fe 00 00 40 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 00 00 00 00 0a 00 e0 20 00 00 00 00 20 00 00 01
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00:14.0 0c05: 1022:780b (rev 42)
Subsystem: 1022:780b Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx+
Status: Cap- 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Kernel driver in use: piix4_smbus
00: 22 10 0b 78 03 04 20 02 42 00 05 0c 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 22 10 0b 78
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00:14.3 0601: 1022:780e (rev 11)
Subsystem: 1022:780e Control: I/O+ Mem+ BusMaster+ SpecCycle+ MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap- 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0
00: 22 10 0e 78 0f 00 20 02 11 00 01 06 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 22 10 0e 78
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
40: 04 00 00 00 d5 ff 03 ff 07 ff 20 00 00 00 00 00
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
60: 00 00 00 00 00 0e 10 00 0e 00 0f 00 00 ff ff ff
70: 67 45 23 00 00 00 00 00 90 00 00 00 05 0a 00 00
80: 08 00 03 a8 00 00 00 00 00 00 00 00 00 00 00 00
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
a0: 02 00 c1 fe 2f 01 00 00 00 00 00 00 00 00 00 00
b0: 00 00 00 00 00 00 00 00 04 00 e9 3d 00 00 00 00
c0: 00 00 00 00 00 00 00 00 00 00 00 80 47 10 82 ff
d0: 86 ff ff 08 42 00 00 00 00 00 00 00 00 00 00 00
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00:14.7 0805: 1022:7813 (rev 01) (prog-if 01)
Subsystem: 1022:7806 Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap- 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 71, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 16
Region 0: Memory at fea25600 (32-bit, non-prefetchable) [size=256] Kernel driver in use: sdhci-pci
00: 22 10 13 78 06 00 20 02 01 01 05 08 10 47 80 00
10: 00 56 a2 fe 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 22 10 06 78
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
80: 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
90: 01 00 03 80 00 00 00 00 00 00 00 00 00 00 00 00
a0: 02 00 00 00 b2 32 fe 21 70 00 00 00 64 00 c8 00
b0: 01 0c 18 01 01 00 00 80 00 04 02 88 98 cc 44 00
c0: 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
d0: 8b 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f0: fa 00 04 00 02 00 04 00 02 00 01 00 00 40 01 00
00:18.0 0600: 1022:1580
Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort-
<MAbort- >SERR- <PERR- INTx-
00: 22 10 80 15 00 00 10 00 00 00 00 06 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
40: 01 02 04 00 00 00 00 00 00 00 00 00 00 00 00 00
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
60: 00 00 03 00 e0 c8 00 00 1f 88 4e 00 00 fe 0f 58
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
80: 00 00 00 00 20 10 11 00 00 00 00 00 13 00 00 00
90: a5 01 05 80 00 00 01 02 27 00 00 00 00 00 00 00
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00:18.1 0600: 1022:1581
Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort-
<MAbort- >SERR- <PERR- INTx-
00: 22 10 81 15 00 00 00 00 00 00 00 06 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
40: 03 00 00 00 00 00 7e 00 00 00 00 00 00 00 00 00
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
80: 03 d0 fe 00 80 df fe 00 03 00 7f 00 00 cf fe 00
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
c0: 03 00 00 00 00 f0 00 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 03 00 00 ff 00 00 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00:18.2 0600: 1022:1582
Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort-
<MAbort- >SERR- <PERR- INTx-
00: 22 10 82 15 00 00 00 00 00 00 00 06 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
40: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
60: e0 ff 78 00 00 00 00 00 00 00 00 00 00 00 00 00
70: 00 00 00 00 00 00 00 00 00 00 02 00 90 00 08 18
80: 07 00 00 00 05 00 80 00 00 00 00 3c 00 00 02 00
90: 00 00 01 83 8e 88 49 9f 1f 00 0f 8d 06 60 00 00
a0: a0 03 1f 00 00 00 00 00 00 00 32 80 00 00 00 00
b0: d1 fe c5 c8 59 00 00 00 31 b7 9b a3 d2 09 54 3d
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
d0: f6 7e be 29 f3 66 c6 da 2e ea e7 9c 76 76 d7 b9
e0: b7 69 17 dd ea 6c 9f db f5 6f 2b fb bd 36 d4 7e
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00:18.3 0600: 1022:1583
Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort-
<MAbort- >SERR- <PERR- INTx-
Capabilities: [f0] Secure device <?>
Kernel driver in use: k10temp
00: 22 10 83 15 00 00 10 00 00 00 00 06 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 f0 00 00 00 00 00 00 00 00 00 00 00
40: ff ff ff ff 44 00 b0 48 00 00 00 00 00 00 00 00
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
60: 00 00 00 00 25 00 6a 42 00 00 00 40 52 00 01 10
70: 53 11 13 10 01 01 1c 01 10 08 18 00 1b 06 05 00
80: 00 00 00 00 02 00 00 00 00 00 85 00 00 40 c8 40
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
a0: 00 48 8c a0 ef 0f a0 33 00 00 00 90 00 00 00 00
b0: 00 00 00 00 00 00 00 00 89 03 00 b0 00 80 00 00
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 0a 0f 80 98 40 00 00 00 00 64 78 68
e0: 00 00 00 00 20 00 00 00 18 4f f7 01 00 00 00 00
f0: 0f 00 10 00 00 00 00 00 00 00 00 00 01 0f 73 00
00:18.4 0600: 1022:1584
Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort-
<MAbort- >SERR- <PERR- INTx-
Kernel driver in use: fam15h_power
00: 22 10 84 15 00 00 00 00 00 00 00 06 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
50: 00 00 00 00 ff ff 00 00 00 00 00 00 00 00 00 00
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00:18.5 0600: 1022:1585
Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort-
<MAbort- >SERR- <PERR- INTx-
00: 22 10 85 15 00 00 00 00 00 00 00 06 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
80: 01 00 00 01 03 f0 0e 0e 01 10 0e 01 02 80 00 84
90: 4f 1d 12 60 31 00 00 00 00 00 00 01 00 00 00 00
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
c0: 00 00 00 00 a0 03 00 05 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 71 0d 00 00 00 00 00 00 28 ac 7b 00 00 00 00 00
f0: 11 00 00 00 02 00 00 40 00 00 00 00 00 00 00 00
01:00.0 0200: 8086:1539 (rev 03)
Subsystem: 8086:0000 Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort-
<MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 33
Region 0: Memory at fe500000 (32-bit, non-prefetchable) [size=128K] Region 2: I/O ports at 1000 [size=32]
Region 3: Memory at fe520000 (32-bit, non-prefetchable) [size=16K]
Capabilities: [40] Power Management version 3
Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mAPME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=1 PME- Capabilities: [50] MSI: Enable- Count=1/1 Maskable+ 64bit+ Address: 0000000000000000 Data: 0000 Masking: 00000000 Pending: 00000000 Capabilities: [70] MSI-X: Enable+ Count=5 Masked- Vector table: BAR=3 offset=00000000 PBA: BAR=3 offset=00002000 Capabilities: [a0] Express (v2) Endpoint, MSI 00 DevCap: MaxPayload 512 bytes, PhantFunc 0, Latency L0s <512ns, L1
<64us
ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset+ SlotPowerLimit 0.000W
DevCtl: Report errors: Correctable+ Non-Fatal+ Fatal+ Unsupported+
RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+ FLReset- MaxPayload 256 bytes, MaxReadReq 512 bytes
DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
LnkCap: Port #1, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency
L0s <2us, L1 <16us
ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp+
LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive-
BWMgmt- ABWMgmt-
DevCap2: Completion Timeout: Range ABCD, TimeoutDis+, LTR-, OBFF Not
Supported
AtomicOpsCap: 32bit- 64bit- 128bitCAS- DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF
Disabled
AtomicOpsCtl: ReqEn-
LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
Transmit Margin: Normal Operating Range, EnterModifiedCompliance-
ComplianceSOS-
Compliance De-emphasis: -6dB
LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-,
EqualizationPhase1-
EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
Capabilities: [100 v2] Advanced Error Reporting
UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF-
MalfTLP- ECRC- UnsupReq- ACSViol-
UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF-
MalfTLP- ECRC- UnsupReq- ACSViol-
UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+
MalfTLP+ ECRC- UnsupReq- ACSViol-
CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
AERCap: First Error Pointer: 00, ECRCGenCap+ ECRCGenEn- ECRCChkCap+
ECRCChkEn-
MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
HeaderLog: 00000000 00000000 00000000 00000000
Capabilities: [140 v1] Device Serial Number 00-0d-b9-ff-ff-4b-48-a4
Capabilities: [1a0 v1] Transaction Processing Hints
Device specific mode supported
Steering table in TPH capability structure
Kernel driver in use: igb
00: 86 80 39 15 07 04 10 00 03 00 00 02 10 00 00 00
10: 00 00 50 fe 00 00 00 00 01 10 00 00 00 00 52 fe
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 00 00
30: 00 00 00 00 40 00 00 00 00 00 00 00 00 01 00 00
40: 01 50 23 c8 08 20 00 00 00 00 00 00 00 00 00 00
50: 05 70 80 01 00 00 00 00 00 00 00 00 00 00 00 00
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
70: 11 a0 04 80 03 00 00 00 03 20 00 00 00 00 00 00
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
90: 00 00 00 00 00 00 00 00 00 00 00 00 ff ff ff ff
a0: 10 00 02 00 c2 8c 00 10 3f 28 10 00 11 5c 42 01
b0: 40 00 11 10 00 00 00 00 00 00 00 00 00 00 00 00
c0: 00 00 00 00 1f 00 00 00 00 00 00 00 00 00 00 00
d0: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
02:00.0 0200: 8086:1539 (rev 03)
Subsystem: 8086:0000 Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort-
<MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 39
Region 0: Memory at fe600000 (32-bit, non-prefetchable) [size=128K] Region 2: I/O ports at 2000 [size=32]
Region 3: Memory at fe620000 (32-bit, non-prefetchable) [size=16K]
Capabilities: [40] Power Management version 3
Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mAPME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=1 PME- Capabilities: [50] MSI: Enable- Count=1/1 Maskable+ 64bit+ Address: 0000000000000000 Data: 0000 Masking: 00000000 Pending: 00000000 Capabilities: [70] MSI-X: Enable+ Count=5 Masked- Vector table: BAR=3 offset=00000000 PBA: BAR=3 offset=00002000 Capabilities: [a0] Express (v2) Endpoint, MSI 00 DevCap: MaxPayload 512 bytes, PhantFunc 0, Latency L0s <512ns, L1
<64us
ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset+ SlotPowerLimit 0.000W
DevCtl: Report errors: Correctable+ Non-Fatal+ Fatal+ Unsupported+
RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+ FLReset- MaxPayload 256 bytes, MaxReadReq 512 bytes
DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
LnkCap: Port #2, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency
L0s <2us, L1 <16us
ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp+
LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive-
BWMgmt- ABWMgmt-
DevCap2: Completion Timeout: Range ABCD, TimeoutDis+, LTR-, OBFF Not
Supported
AtomicOpsCap: 32bit- 64bit- 128bitCAS- DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF
Disabled
AtomicOpsCtl: ReqEn-
LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
Transmit Margin: Normal Operating Range, EnterModifiedCompliance-
ComplianceSOS-
Compliance De-emphasis: -6dB
LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-,
EqualizationPhase1-
EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
Capabilities: [100 v2] Advanced Error Reporting
UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF-
MalfTLP- ECRC- UnsupReq- ACSViol-
UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF-
MalfTLP- ECRC- UnsupReq- ACSViol-
UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+
MalfTLP+ ECRC- UnsupReq- ACSViol-
CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
AERCap: First Error Pointer: 00, ECRCGenCap+ ECRCGenEn- ECRCChkCap+
ECRCChkEn-
MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
HeaderLog: 00000000 00000000 00000000 00000000
Capabilities: [140 v1] Device Serial Number 00-0d-b9-ff-ff-4b-48-a5
Capabilities: [1a0 v1] Transaction Processing Hints
Device specific mode supported
Steering table in TPH capability structure
Kernel driver in use: igb
00: 86 80 39 15 07 04 10 00 03 00 00 02 10 00 00 00
10: 00 00 60 fe 00 00 00 00 01 20 00 00 00 00 62 fe
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 00 00
30: 00 00 00 00 40 00 00 00 00 00 00 00 00 01 00 00
40: 01 50 23 c8 08 20 00 00 00 00 00 00 00 00 00 00
50: 05 70 80 01 00 00 00 00 00 00 00 00 00 00 00 00
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
70: 11 a0 04 80 03 00 00 00 03 20 00 00 00 00 00 00
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
90: 00 00 00 00 00 00 00 00 00 00 00 00 ff ff ff ff
a0: 10 00 02 00 c2 8c 00 10 3f 28 10 00 11 5c 42 02
b0: 40 00 11 10 00 00 00 00 00 00 00 00 00 00 00 00
c0: 00 00 00 00 1f 00 00 00 00 00 00 00 00 00 00 00
d0: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
03:00.0 0200: 8086:1539 (rev 03)
Subsystem: 8086:0000 Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort-
<MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 45
Region 0: Memory at fe700000 (32-bit, non-prefetchable) [size=128K] Region 2: I/O ports at 3000 [size=32]
Region 3: Memory at fe720000 (32-bit, non-prefetchable) [size=16K]
Capabilities: [40] Power Management version 3
Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mAPME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=1 PME- Capabilities: [50] MSI: Enable- Count=1/1 Maskable+ 64bit+ Address: 0000000000000000 Data: 0000 Masking: 00000000 Pending: 00000000 Capabilities: [70] MSI-X: Enable+ Count=5 Masked- Vector table: BAR=3 offset=00000000 PBA: BAR=3 offset=00002000 Capabilities: [a0] Express (v2) Endpoint, MSI 00 DevCap: MaxPayload 512 bytes, PhantFunc 0, Latency L0s <512ns, L1
<64us
ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset+ SlotPowerLimit 0.000W
DevCtl: Report errors: Correctable+ Non-Fatal+ Fatal+ Unsupported+
RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+ FLReset- MaxPayload 256 bytes, MaxReadReq 512 bytes
DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
LnkCap: Port #3, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency
L0s <2us, L1 <16us
ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp+
LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive-
BWMgmt- ABWMgmt-
DevCap2: Completion Timeout: Range ABCD, TimeoutDis+, LTR-, OBFF Not
Supported
AtomicOpsCap: 32bit- 64bit- 128bitCAS- DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF
Disabled
AtomicOpsCtl: ReqEn-
LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
Transmit Margin: Normal Operating Range, EnterModifiedCompliance-
ComplianceSOS-
Compliance De-emphasis: -6dB
LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-,
EqualizationPhase1-
EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
Capabilities: [100 v2] Advanced Error Reporting
UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF-
MalfTLP- ECRC- UnsupReq- ACSViol-
UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF-
MalfTLP- ECRC- UnsupReq- ACSViol-
UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+
MalfTLP+ ECRC- UnsupReq- ACSViol-
CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
AERCap: First Error Pointer: 00, ECRCGenCap+ ECRCGenEn- ECRCChkCap+
ECRCChkEn-
MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
HeaderLog: 00000000 00000000 00000000 00000000
Capabilities: [140 v1] Device Serial Number 00-0d-b9-ff-ff-4b-48-a6
Capabilities: [1a0 v1] Transaction Processing Hints
Device specific mode supported
Steering table in TPH capability structure
Kernel driver in use: igb
00: 86 80 39 15 07 04 10 00 03 00 00 02 10 00 00 00
10: 00 00 70 fe 00 00 00 00 01 30 00 00 00 00 72 fe
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 00 00
30: 00 00 00 00 40 00 00 00 00 00 00 00 00 01 00 00
40: 01 50 23 c8 08 20 00 00 00 00 00 00 00 00 00 00
50: 05 70 80 01 00 00 00 00 00 00 00 00 00 00 00 00
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
70: 11 a0 04 80 03 00 00 00 03 20 00 00 00 00 00 00
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
90: 00 00 00 00 00 00 00 00 00 00 00 00 ff ff ff ff
a0: 10 00 02 00 c2 8c 00 10 3f 28 10 00 11 5c 42 03
b0: 40 00 11 10 00 00 00 00 00 00 00 00 00 00 00 00
c0: 00 00 00 00 1f 00 00 00 00 00 00 00 00 00 00 00
d0: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
04:00.0 0280: 168c:003c
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort-
<MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 52
Region 0: Memory at fe200000 (64-bit, non-prefetchable) [size=2M] Expansion ROM at fe400000 [disabled] [size=64K]
Capabilities: [40] Power Management version 2
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mAPME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME- Capabilities: [50] MSI: Enable+ Count=1/8 Maskable+ 64bit- Address: fee0f00c Data: 41e3 Masking: 00fe00fe Pending: 00000000 Capabilities: [70] Express (v2) Endpoint, MSI 00 DevCap: MaxPayload 256 bytes, PhantFunc 0, Latency L0s unlimited, L1
<64us
ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset- SlotPowerLimit 0.000W
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop- MaxPayload 256 bytes, MaxReadReq 512 bytes
DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency
L0s <4us, L1 <64us
ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp-
LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive-
BWMgmt- ABWMgmt-
DevCap2: Completion Timeout: Not Supported, TimeoutDis+, LTR-, OBFF
Not Supported
AtomicOpsCap: 32bit- 64bit- 128bitCAS- DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF
Disabled
AtomicOpsCtl: ReqEn-
LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
Transmit Margin: Normal Operating Range, EnterModifiedCompliance-
ComplianceSOS-
Compliance De-emphasis: -6dB
LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-,
EqualizationPhase1-
EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
Capabilities: [100 v1] Advanced Error Reporting
UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF-
MalfTLP- ECRC- UnsupReq- ACSViol-
UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF-
MalfTLP- ECRC- UnsupReq- ACSViol-
UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+
MalfTLP+ ECRC- UnsupReq- ACSViol-
CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
AERCap: First Error Pointer: 00, ECRCGenCap- ECRCGenEn- ECRCChkCap-
ECRCChkEn-
MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
HeaderLog: 00000000 00000000 00000000 00000000
Capabilities: [140 v1] Virtual Channel
Caps: LPEVC=0 RefClk=100ns PATEntryBits=1
Arb: Fixed- WRR32- WRR64- WRR128-
Ctrl: ArbSelect=Fixed
Status: InProgress-
VC0: Caps: PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
Arb: Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
Ctrl: Enable+ ID=0 ArbSelect=Fixed TC/VC=ff
Status: NegoPending- InProgress-
Capabilities: [160 v1] Device Serial Number 00-00-00-00-00-00-00-00 Kernel driver in use: ath10k_pci
00: 8c 16 3c 00 06 04 10 00 00 00 80 02 10 00 00 00
10: 04 00 20 fe 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 40 fe 40 00 00 00 00 00 00 00 00 01 00 00
40: 01 50 c2 07 00 00 00 00 00 00 00 00 00 00 00 00
50: 05 70 07 01 0c f0 e0 fe e3 41 00 00 fe 00 fe 00
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
70: 10 00 02 00 c1 8d 00 00 30 20 00 00 11 6c 03 00
80: 40 00 11 10 00 00 00 00 00 00 00 00 00 00 00 00
90: 00 00 00 00 10 00 00 00 00 00 00 00 02 00 00 00
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Quoted 9 lines · Florian Eckert
Hello Andy,
Thank you very very much for your code review "again" I will update my patch set with your hints.
Should I send v6 or should i wait till I get feedback from you about ACPI?Quoted 1 line
Quoted 1 line
Quoted 7 lines
Quoted 5 lines
Quoted 2 lines
Until now it was not possible to get more information to detect the
MMIO_BASEaddress from the ACPI subsystem.I'm sorry if I already asked, please, remind me where dump of ACPI tables can be found?
Unfortunately the file had been removed.
Btw, is the statement in above email still actual? "...I can fix required things."
Quoted 18 lines
Quoted 2 lines
Also would be nice to have the output of
lspci -nk -vv -xxxon such platform.00:14.3 0601: 1022:780e (rev 11)
Subsystem: 1022:780e
Control: I/O+ Mem+ BusMaster+ SpecCycle+ MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap- 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0
00: 22 10 0e 78 0f 00 20 02 11 00 01 06 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 22 10 0e 78
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
40: 04 00 00 00 d5 ff 03 ff 07 ff 20 00 00 00 00 00
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
60: 00 00 00 00 00 0e 10 00 0e 00 0f 00 00 ff ff ff
70: 67 45 23 00 00 00 00 00 90 00 00 00 05 0a 00 00
Quoted 8 lines
80: 08 00 03 a8 00 00 00 00 00 00 00 00 00 00 00 00 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
a0: 02 00 c1 fe 2f 01 00 00 00 00 00 00 00 00 00 00
b0: 00 00 00 00 00 00 00 00 04 00 e9 3d 00 00 00 00
c0: 00 00 00 00 00 00 00 00 00 00 00 80 47 10 82 ff
d0: 86 ff ff 08 42 00 00 00 00 00 00 00 00 00 00 00
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Thanks.
--
With Best Regards,
Andy Shevchenko
Quoted 12 lines
Quoted 12 lines
Thank you very very much for your code review "again" I will update my patch set with your hints.
Should I send v6 or should i wait till I get feedback from you about ACPI?Quoted 6 lines
Quoted 3 lines
Until now it was not possible to get more information to detect the
MMIO_BASEaddress from the ACPI subsystem.I'm sorry if I already asked, please, remind me where dump of ACPI tables can be found?
Quoted 7 lines
Quoted 1 line
Unfortunately the file had been removed.
Btw, is the statement in above email still actual? "...I can fix required things."
Yes i will fix your hints tomorrow and send a v6 of my patchset. Thank you for your hints and time
It would be nice if you could fix ACPI problemmatik.
Best regards
Florian Eckert
Quoted 15 lines · Florian Eckert
Quoted 15 lines
Quoted 14 lines
Thank you very very much for your code review "again" I will update my patch set with your hints.
Should I send v6 or should i wait till I get feedback from you about ACPI?Quoted 6 lines
Quoted 3 lines
Until now it was not possible to get more information to detect the
MMIO_BASEaddress from the ACPI subsystem.I'm sorry if I already asked, please, remind me where dump of ACPI tables can be found?
Quoted 8 lines
Quoted 4 lines
Unfortunately the file had been removed.
Btw, is the statement in above email still actual? "...I can fix required things."
Yes i will fix your hints tomorrow and send a v6 of my patchset. Thank you for your hints and time
It would be nice if you could fix ACPI problemmatik.
I would like to see the ACPI dump for that...
Signature · 2 lines
With Best Regards, Andy Shevchenko
Hello Andy
Quoted 8 lines
Quoted 6 lines
Quoted 2 lines
Btw, is the statement in above email still actual? "...I can fix required things."
Yes i will fix your hints tomorrow and send a v6 of my patchset. Thank you for your hints and time
It would be nice if you could fix ACPI problemmatik.I would like to see the ACPI dump for that...
See https://github.com/openwrt/openwrt/pull/1232#issuecomment-443224576
In this comment Michał Żygowski appended to this thread the missing files you want to have.
Regards
Flo
Quoted 7 lines · Florian Eckert
Quoted 7 lines
Quoted 6 lines
Quoted 2 lines
Btw, is the statement in above email still actual? "...I can fix required things."
Yes i will fix your hints tomorrow and send a v6 of my patchset. Thank you for your hints and time
It would be nice if you could fix ACPI problemmatik.
Quoted 5 lines
Quoted 1 line
I would like to see the ACPI dump for that...
See https://github.com/openwrt/openwrt/pull/1232#issuecomment-443224576
In this comment Michał Żygowski appended to this thread the missing files you want to have.
Thanks!
So, let me clarify what we have:
- some platforms are in the wild with old BIOS with broken ACPI tables
- you still may fix the things for new BIOS version for all affected platforms
- you need to support both
Is this all correct?
For broken firmware you need to do the following:
- create an MFD driver, which would instantiate GPIO and GPIO keys
support (at least)
- create one of each above drivers w/o any DMI crap (should be done
as a part of MFD driver)
For fixed BIOS you need to add the following (example, not a fully correct solution) at the level behind SB:
Scope (SB)
{
Device(GPIO)
{
Name (_ADR, Zero) // _ADR: Address
Name (_HID, "AMDxxxx") // One ID per platform, so, APU2 :
1, APU 3: 1 => 2 unique IDs, in this case no need to add neither _HRV nor _UID
Name (_HRV, 2) // Other approach is to have one ID
but different _HRV: e.g. 2 for APU2, 3 for APU3
Name (_UID, Zero) // Another approach is to have one
device per community of pins and several _UID:s
Name (_DDN, "AMD APU General Purpose Input/Output (GPIO) controller")
Method (_CRS, 0, NotSerialized)
{
Name (RBUF, ResourceTemplate ()
{
Memory32Fixed (ReadWrite,
0xFED80000 // + offset + community0 offset
0x0000xxxx, // + size of the community0
)
...
Memory32Fixed (ReadWrite,
0xFED80000 // + offset + communityN offset
0x0000xxxx, // + size of the communityN
)
/* IRQ resource if needed and present on real HW */
Interrupt (ResourceConsumer, Level, ActiveLow, Shared, ,, )
{
0x000000xx,
}
})
Return (RBUF) /* \_SB_.GPIO._CRS.RBUF */
}
Method (_STA, 0, NotSerialized)
{
Return (0x0F)
}}
Device (BTNS)
{
Name (_HID, "PRP0001")
Name (_DDN, "GPIO buttons device")
Name (_CRS, ResourceTemplate () {
GpioIo (
Exclusive, // Not shared
PullUp, // Pull up the line
0, // Debounce timeout
0, // Drive strength
IoRestrictionInputOnly, // Only used as input
"\\_SB.GPIO", // GPIO controller
0) // Must be 0
{
x0, // GPIO pin offset in
corresponding controller for Button 0
x1, // for Button 1, and so on
...
}
})
Name (_DSD, Package () {
ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
Package () {
Package () {"compatible", "gpio-keys-polled"},
Package () {"poll-interval", 100},
Package () {"autorepeat", 1}
},
ToUUID("dbb8e3e6-5886-4ba6-8795-1319f52a966b"),
Package () {
Package () {"button-0", "BTN0"},
Package () {"button-1", "BTN1"},
...
}
})
// For more information about these bindings see:
// Documentation/devicetree/bindings/input/gpio-keys-polled.txt
// and Documentation/acpi/gpio-properties.txt.
Name (BTN0, Package () {
ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
Package () {
Package () {"linux,code", 105},
Package () {"linux,input-type", 1},
Package () {"gpios", Package () {^BTNS, 0, 0, 1}}
}
}) }
}
After updating firmware you would need just an ACPI ID table to be added to the GPIO driver. MFD driver should not be enumerated at all.
Signature · 2 lines
With Best Regards, Andy Shevchenko
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
Quoted 3 lines
Yes i will fix your hints tomorrow and send a v6 of my patchset. Thank you for your hints and time
It would be nice if you could fix ACPI problemmatik.
Quoted 8 lines
Quoted 5 lines
Quoted 1 line
I would like to see the ACPI dump for that...
See https://github.com/openwrt/openwrt/pull/1232#issuecomment-443224576
In this comment Michał Żygowski appended to this thread the missing files you want to have.So, let me clarify what we have:
- some platforms are in the wild with old BIOS with broken ACPI tables
correct
Quoted 2 lines
- you still may fix the things for new BIOS version for all affected
platforms
I have seen that this is a lot of work and I didn't think it was so complicated! To get the GPIO support for APU2/APU3 merged into the gpio subsystem. I am little confused what i should do now. By the way I only have one board (APU3).
Quoted 1 line
- you need to support both
That is not necessary from my point of view. I am fine if the driver supports at least the current BIOS version. And if the coreboot maintainer fixes the ACPI problem then we could extend the driver and add the ACPI stuff.
But this not in my hand, right?
Quoted 5 lines
For broken firmware you need to do the following:
- create an MFD driver, which would instantiate GPIO and GPIO keys
support (at least)
- create one of each above drivers w/o any DMI crap (should be done
as a part of MFD driver)
I will have a look how to achieve this.
If we want to support all BIOS version.
And is a must have to get the driver into mainline.
Quoted 2 lines
For fixed BIOS you need to add the following (example, not a fully correct solution) at the level behind SB:
I do not understand how I could fix this. I have no idea from ACPI. I have not found any driver where I can inspire myself.
Quoted 8 lines
Scope (SB)
{
Device(GPIO)
{After updating firmware you would need just an ACPI ID table to be added to the GPIO driver. MFD driver should not be enumerated at all.
That's maybe coming next when the coreboot maintainers have their bios fixed, right?