• Andy Shevchenko's avatar
    ACPI / LPSS: power on when probe() and otherwise when remove() · c3a49cf3
    Andy Shevchenko authored
    When LPSS drivers are compiled as a module, which is usually the case, the
    second probe of that driver may fail because the driver is written in an
    assumption that device is powered on. That is not the case for all drivers.
    Moreover we would like not drain power in vain.
    
    Implement ->activate() and ->dismiss() callbacks in the ACPI LPSS custom power
    domain.
    
    -------- 8< -------- 8< -------- 8< -------- 8< -------- 8< --------
    
    Case 1: The I2C probe() repeat.
    
    /sys/bus/platform/devices/808622C1:00 \_SB_.PCI0.I2C1 [D3hot]
    /sys/bus/platform/devices/808622C1:01 \_SB_.PCI0.I2C2 [D3hot]
    /sys/bus/platform/devices/808622C1:02 \_SB_.PCI0.I2C3 [D3hot]
    /sys/bus/platform/devices/808622C1:03 \_SB_.PCI0.I2C4 [D3hot]
    /sys/bus/platform/devices/808622C1:05 \_SB_.PCI0.I2C6 [D3hot]
    /sys/bus/platform/devices/808622C1:06 \_SB_.PCI0.I2C7 [D3hot]
    
    % modprobe i2c-designware-platform
        i2c_designware 808622C1:00: Unknown Synopsys component type: 0xffffffff
        i2c_designware 808622C1:01: Unknown Synopsys component type: 0xffffffff
        i2c_designware 808622C1:02: Unknown Synopsys component type: 0xffffffff
        i2c_designware 808622C1:03: Unknown Synopsys component type: 0xffffffff
        i2c_designware 808622C1:05: Unknown Synopsys component type: 0xffffffff
        i2c_designware 808622C1:06: Unknown Synopsys component type: 0xffffffff
    
    Case 2: The power drain in case of SDHCI.
    
    /sys/bus/platform/devices/80860F14:00 \_SB_.PCI0.SDHA [D3hot]
    /sys/bus/platform/devices/80860F14:01 \_SB_.PCI0.SDHC [D3hot]
    
    % modprobe -r sdhci-acpi
        mmc0: card 0001 removed
    
    /sys/bus/platform/devices/80860F14:00 \_SB_.PCI0.SDHA [D0]
    /sys/bus/platform/devices/80860F14:01 \_SB_.PCI0.SDHC [D0]
    
    -------- 8< -------- 8< -------- 8< -------- 8< -------- 8< --------
    
    Patch fixes above problems.
    Signed-off-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    c3a49cf3
acpi_lpss.c 20.5 KB