On Wed, 29 Mar 2017, Hans de Goede wrote:
On x86 the axp288 PMIC provides an ACPI OPRegion handler, which must be
available before other drivers using it are loaded, which can only be
ensured if the mfd, opregion driver and i2c-bus drivers are built in.
The opregion driver is a bool depending on MFD_AXP20X_I2C ensuring that
it will be builtin if the opregion driver is to be enabled, add a
select for the designware-options to ensure those get built in too.
This fixes errors like these during boot:
mmc0: SDHCI controller on ACPI [80860F14:00] using ADMA
ACPI Error: No handler for Region [REGS] (ffff93543b0cc3a8) [UserDefinedRegion]
ACPI Error: Region UserDefinedRegion (ID=143) has no handler (20170119/exfldio-2
ACPI Error: Method parse/execution failed [\_SB.PCI0.I2C7.PMI5.GET] (Node ffff93
ACPI Error: Method parse/execution failed [\_SB.PCI0.SHC1._PS0] (Node ffff93543b
acpi 80860F14:02: Failed to change power state to D0
Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx>
---
Changes in v2:
-Fix Kconfig depends and selects to fix warning reported by kbuild test robot
Looks like there is still an issue.
-Improve commit msg (add example of ACPI errors this avoids)
---
drivers/mfd/Kconfig | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
index 4eb044e..ed2616c 100644
--- a/drivers/mfd/Kconfig
+++ b/drivers/mfd/Kconfig
@@ -148,7 +148,14 @@ config MFD_AXP20X_I2C
tristate "X-Powers AXP series PMICs with I2C"
select MFD_AXP20X
select REGMAP_I2C
- depends on I2C
+ # In order for the ACPI Opregion this provides on x86 to be available
+ # the i2c-adapter driver must be builtin too, select it and its deps
+ depends on X86=n || (ACPI && HAS_IOMEM)
+ select I2C
+ select IOSF_MBI if X86
+ select COMMON_CLK if X86
+ select I2C_DESIGNWARE_PLATFORM if X86
+ select I2C_DESIGNWARE_BAYTRAIL if X86
help
If you say Y here you get support for the X-Powers AXP series power
management ICs (PMICs) controlled with I2C.
@@ -156,6 +163,10 @@ config MFD_AXP20X_I2C
components like regulators or the PEK (Power Enable Key) under the
corresponding menus.
+ Note on x86 this provides an ACPI Opregion, so this must be 'y'
+ (builtin) and not a module, as the OPregion must be available as
+ soon as possible.
+
config MFD_AXP20X_RSB
tristate "X-Powers AXP series PMICs with RSB"
select MFD_AXP20X