• Hans de Goede's avatar
    mfd: intel_soc_pmic: Select designware i2c-bus driver · acebcff9
    Hans de Goede authored
    The Crystal Cove PMIC provides an ACPI OPRegion handler, which must be
    available before other drivers using it are loaded, which is why
    INTEL_SOC_PMIC is a bool.
    
    Just having the driver is not enough, the driver for the i2c-bus must
    also be built in, to ensure this, this patch adds a select for it.
    
    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] (20170119/evregion-166)
    ACPI Error: Region UserDefinedRegion (ID=143) has no handler (20170119/exfldio-299)
    ACPI Error: Method parse/execution failed [\_SB.PCI0.I2C7.PMI5.GET] (Node ffff93543b0cde10), AE_NOT_EXIST (20170119/psparse-543)
    ACPI Error: Method parse/execution failed [\_SB.PCI0.SHC1._PS0] (Node ffff93543b0b5cd0), AE_NOT_EXIST (20170119/psparse-543)
    acpi 80860F14:02: Failed to change power state to D0
    
    While at it this patch also changes the human readable name of the Kconfig
    option to make clear the INTEL_SOC_PMIC option selects support for the
    Intel Crystal Cove PMIC and documents why this is a bool.
    
    [The above patch caused a build error on some archetectures]
    
    From: Arnd Bergmann <arnd@arndb.de>
    
    I ran into a build error on ARM with a platform that has a non-standard
    clk implementation:
    
    drivers/clk/clk.o: In function `clk_disable':
    clk.c:(.text.clk_disable+0x0): multiple definition of `clk_disable'
    arch/arm/mach-omap1/clock.o:clock.c:(.text.clk_disable+0x0): first defined here
    drivers/clk/clk.o: In function `clk_enable':
    clk.c:(.text.clk_enable+0x0): multiple definition of `clk_enable'
    arch/arm/mach-omap1/clock.o:clock.c:(.text.clk_enable+0x0): first defined here
    
    The problem is a device driver that uses 'select COMMON_CLK', which is
    generally a bad idea: selecting a subsystem should only be done from
    a platform, otherwise we run into circular dependencies. The same driver
    also selects 'GPIOLIB' and 'I2C', which has a similar effect.
    
    This turns all three into 'depends on', as it should be.
    
    Finally, we can limit the build to x86, unless we are compile testing.
    
    First patch:
    Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
    Reviewed-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
    
    Fix for first patch (squashed):
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
    Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
    acebcff9
Kconfig 52.7 KB