03 Feb, 2015

1 commit


04 Dec, 2014

1 commit


12 Nov, 2014

3 commits

  • The LPSS DMA controller does not have _PS0 and _PS3 methods. Moreover it can be
    powered off automatically whenever the last LPSS device goes down. In case of
    no power any access to the DMA controller will hang the system. The behaviour
    is reproduced on some HP laptops based on Intel Bay Trail [1] as well as on
    Asus T100 transformer.

    This patch introduces a so called 'proxy' device that has the knobs to handle a
    power of the LPSS island. When the system needs to program the DMA controller
    it calls to the ACPI LPSS power domain callbacks that wake or suspend the
    'proxy' device.

    [1] http://www.spinics.net/lists/dmaengine/msg01514.html

    Suggested-by: Rafael J. Wysocki
    Signed-off-by: Andy Shevchenko
    Tested-by: Scott Ashcroft
    Signed-off-by: Rafael J. Wysocki

    Andy Shevchenko
     
  • The LPSS DMA controller would like to use the specific PM domain callbacks
    during early stage, namely in ->probe(). This patch moves the specific PM
    domain assignment early to be accessible during a whole life time of the device
    in the system.

    Suggested-by: Rafael J. Wysocki
    Signed-off-by: Andy Shevchenko
    Tested-by: Scott Ashcroft
    Signed-off-by: Rafael J. Wysocki

    Andy Shevchenko
     
  • Currently the LPSS devices are located in the different power domains depends
    on LPSS_SAVE_CTX flag. We would like to use the specific power domain for all
    LPSS devices.

    The LPSS DMA controller has no knobs to control its power state. The specific
    power domain implementation will handle this case. The patch does a preparation
    for that.

    Signed-off-by: Andy Shevchenko
    Tested-by: Scott Ashcroft
    Signed-off-by: Rafael J. Wysocki

    Andy Shevchenko
     

29 Sep, 2014

1 commit


25 Sep, 2014

2 commits

  • Adding a check for UART Auto Flow Control feature and only
    enabling the RTS override when it's not supported. RTS
    override is not needed when Auto Flow Control is used and
    they shouldn't be used together.

    Signed-off-by: Heikki Krogerus
    Signed-off-by: Rafael J. Wysocki

    Heikki Krogerus
     
  • On some systems (Asus T100 in particular) there are strict ordering
    dependencies between LPSS devices with respect to power management
    that break if they suspend/resume asynchronously.

    In theory it should be possible to follow those dependencies in the
    async suspend/resume case too (the ACPI tables tell as that the
    dependencies are there), but since we're missing infrastructure
    for that at the moment, disable async suspend/resume for all of
    the LPSS devices for the time being.

    Link: http://marc.info/?l=linux-acpi&m=141158962321905&w=2
    Fixes: 8ce62f85a81f (ACPI / platform / LPSS: Enable async suspend/resume of LPSS devices)
    Signed-off-by: Li Aubrey
    Signed-off-by: Fu Zhonghui
    Cc: 3.16+ # 3.16+
    [ rjw: Changelog ]
    Signed-off-by: Rafael J. Wysocki

    Fu Zhonghui
     

21 Sep, 2014

1 commit


09 Sep, 2014

1 commit

  • PM entries of LPSS power domain were not implemented correctly
    in commit c78b0830667a "ACPI / LPSS: custom power domain for LPSS".

    This patch fixes and completes these PM entries.

    Fixes: c78b0830667a (ACPI / LPSS: custom power domain for LPSS)
    Signed-off-by: Li Aubrey
    Signed-off-by: Mika Westerberg
    Signed-off-by: Fu Zhonghui
    Cc: 3.16+ # 3.16+
    Signed-off-by: Rafael J. Wysocki

    Fu Zhonghui
     

03 Sep, 2014

4 commits


26 Aug, 2014

1 commit


01 Aug, 2014

1 commit

  • INT3438 is the ADSP device on Wildcat Point platform
    with 2 DW DMA engines built In. The DMA engines are
    used for DSP FW loading and audio data transferring.
    These DMA engine probing need the clock, without it,
    probing may failed and can't go forward.

    Add LPSS device "INT3438" for Wildcat Point PCH, to
    provide clock for its ADSP DMA engine probing.

    Signed-off-by: Jie Yang
    Signed-off-by: Rafael J. Wysocki

    Jie Yang
     

17 Jun, 2014

1 commit

  • On Intel Baytrail, some I2C host controllers are held in reset when the OS
    gets control. This causes the driver to fail to detect the hardware
    properly.

    Fix this so that we make sure that the I2C host controller is not in reset
    when the driver gets probe'd.

    Signed-off-by: Mika Westerberg
    Signed-off-by: Rafael J. Wysocki

    Mika Westerberg
     

04 Jun, 2014

1 commit

  • …fael/linux-pm into next

    Pull ACPI and power management updates from Rafael Wysocki:
    "ACPICA is the leader this time (63 commits), followed by cpufreq (28
    commits), devfreq (15 commits), system suspend/hibernation (12
    commits), ACPI video and ACPI device enumeration (10 commits each).

    We have no major new features this time, but there are a few
    significant changes of how things work. The most visible one will
    probably be that we are now going to create platform devices rather
    than PNP devices by default for ACPI device objects with _HID. That
    was long overdue and will be really necessary to be able to use the
    same drivers for the same hardware blocks on ACPI and DT-based systems
    going forward. We're not expecting fallout from this one (as usual),
    but it's something to watch nevertheless.

    The second change having a chance to be visible is that ACPI video
    will now default to using native backlight rather than the ACPI
    backlight interface which should generally help systems with broken
    Win8 BIOSes. We're hoping that all problems with the native backlight
    handling that we had previously have been addressed and we are in a
    good enough shape to flip the default, but this change should be easy
    enough to revert if need be.

    In addition to that, the system suspend core has a new mechanism to
    allow runtime-suspended devices to stay suspended throughout system
    suspend/resume transitions if some extra conditions are met
    (generally, they are related to coordination within device hierarchy).
    However, enabling this feature requires cooperation from the bus type
    layer and for now it has only been implemented for the ACPI PM domain
    (used by ACPI-enumerated platform devices mostly today).

    Also, the acpidump utility that was previously shipped as a separate
    tool will now be provided by the upstream ACPICA along with the rest
    of ACPICA code, which will allow it to be more up to date and better
    supported, and we have one new cpuidle driver (ARM clps711x).

    The rest is improvements related to certain specific use cases,
    cleanups and fixes all over the place.

    Specifics:

    - ACPICA update to upstream version 20140424. That includes a number
    of fixes and improvements related to things like GPE handling,
    table loading, headers, memory mapping and unmapping, DSDT/SSDT
    overriding, and the Unload() operator. The acpidump utility from
    upstream ACPICA is included too. From Bob Moore, Lv Zheng, David
    Box, David Binderman, and Colin Ian King.

    - Fixes and cleanups related to ACPI video and backlight interfaces
    from Hans de Goede. That includes blacklist entries for some new
    machines and using native backlight by default.

    - ACPI device enumeration changes to create platform devices rather
    than PNP devices for ACPI device objects with _HID by default. PNP
    devices will still be created for the ACPI device object with
    device IDs corresponding to real PNP devices, so that change should
    not break things left and right, and we're expecting to see more
    and more ACPI-enumerated platform devices in the future. From
    Zhang Rui and Rafael J Wysocki.

    - Updates for the ACPI LPSS (Low-Power Subsystem) driver allowing it
    to handle system suspend/resume on Asus T100 correctly. From
    Heikki Krogerus and Rafael J Wysocki.

    - PM core update introducing a mechanism to allow runtime-suspended
    devices to stay suspended over system suspend/resume transitions if
    certain additional conditions related to coordination within device
    hierarchy are met. Related PM documentation update and ACPI PM
    domain support for the new feature. From Rafael J Wysocki.

    - Fixes and improvements related to the "freeze" sleep state. They
    affect several places including cpuidle, PM core, ACPI core, and
    the ACPI battery driver. From Rafael J Wysocki and Zhang Rui.

    - Miscellaneous fixes and updates of the ACPI core from Aaron Lu,
    Bjørn Mork, Hanjun Guo, Lan Tianyu, and Rafael J Wysocki.

    - Fixes and cleanups for the ACPI processor and ACPI PAD (Processor
    Aggregator Device) drivers from Baoquan He, Manuel Schölling, Tony
    Camuso, and Toshi Kani.

    - System suspend/resume optimization in the ACPI battery driver from
    Lan Tianyu.

    - OPP (Operating Performance Points) subsystem updates from Chander
    Kashyap, Mark Brown, and Nishanth Menon.

    - cpufreq core fixes, updates and cleanups from Srivatsa S Bhat,
    Stratos Karafotis, and Viresh Kumar.

    - Updates, fixes and cleanups for the Tegra, powernow-k8, imx6q,
    s5pv210, nforce2, and powernv cpufreq drivers from Brian Norris,
    Jingoo Han, Paul Bolle, Philipp Zabel, Stratos Karafotis, and
    Viresh Kumar.

    - intel_pstate driver fixes and cleanups from Dirk Brandewie, Doug
    Smythies, and Stratos Karafotis.

    - Enabling the big.LITTLE cpufreq driver on arm64 from Mark Brown.

    - Fix for the cpuidle menu governor from Chander Kashyap.

    - New ARM clps711x cpuidle driver from Alexander Shiyan.

    - Hibernate core fixes and cleanups from Chen Gang, Dan Carpenter,
    Fabian Frederick, Pali Rohár, and Sebastian Capella.

    - Intel RAPL (Running Average Power Limit) driver updates from Jacob
    Pan.

    - PNP subsystem updates from Bjorn Helgaas and Fabian Frederick.

    - devfreq core updates from Chanwoo Choi and Paul Bolle.

    - devfreq updates for exynos4 and exynos5 from Chanwoo Choi and
    Bartlomiej Zolnierkiewicz.

    - turbostat tool fix from Jean Delvare.

    - cpupower tool updates from Prarit Bhargava, Ramkumar Ramachandra
    and Thomas Renninger.

    - New ACPI ec_access.c tool for poking at the EC in a safe way from
    Thomas Renninger"

    * tag 'pm+acpi-3.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (187 commits)
    ACPICA: Namespace: Remove _PRP method support.
    intel_pstate: Improve initial busy calculation
    intel_pstate: add sample time scaling
    intel_pstate: Correct rounding in busy calculation
    intel_pstate: Remove C0 tracking
    PM / hibernate: fixed typo in comment
    ACPI: Fix x86 regression related to early mapping size limitation
    ACPICA: Tables: Add mechanism to control early table checksum verification.
    ACPI / scan: use platform bus type by default for _HID enumeration
    ACPI / scan: always register ACPI LPSS scan handler
    ACPI / scan: always register memory hotplug scan handler
    ACPI / scan: always register container scan handler
    ACPI / scan: Change the meaning of missing .attach() in scan handlers
    ACPI / scan: introduce platform_id device PNP type flag
    ACPI / scan: drop unsupported serial IDs from PNP ACPI scan handler ID list
    ACPI / scan: drop IDs that do not comply with the ACPI PNP ID rule
    ACPI / PNP: use device ID list for PNPACPI device enumeration
    ACPI / scan: .match() callback for ACPI scan handlers
    ACPI / battery: wakeup the system only when necessary
    power_supply: allow power supply devices registered w/o wakeup source
    ...

    Linus Torvalds
     

30 May, 2014

1 commit

  • Prevent platform devices from being created for ACPI LPSS devices
    if CONFIG_X86_INTEL_LPSS is unset by compiling out the LPSS scan
    handler's callbacks only in that case and still compiling its device
    ID list in and registering the scan handler in either case.

    This change is based on a prototype from Zhang Rui.

    Signed-off-by: Rafael J. Wysocki
    Reviewed-by: Mika Westerberg

    Rafael J. Wysocki
     

25 May, 2014

4 commits

  • Rafael J. Wysocki
     
  • This creates fractional divider type clock for the ones that
    have it. It is needed by the UART driver as the clock rate must
    accommodate to the requested baud rate.

    Signed-off-by: Heikki Krogerus
    Signed-off-by: Rafael J. Wysocki

    Heikki Krogerus
     
  • A power domain where we save the context of the additional
    LPSS registers. We need to do this or all LPSS devices are
    left in reset state when resuming from D3 on some Baytrails.
    The devices with the fractional clock divider also have
    zeros for N and M values after resuming unless they are
    reset.

    Li Aubrey found the root cause for the issue. The idea of
    using power domain for LPSS came from Mika Westerberg.

    Reported-by: Jin Yao
    Suggested-by: Li Aubrey
    Suggested-by: Mika Westerberg
    Tested-by: Mika Westerberg
    Signed-off-by: Heikki Krogerus
    [rjw: Added the .complete() callback to the PM domain, fixed build
    warning on 32-bit.]
    Signed-off-by: Rafael J. Wysocki

    Heikki Krogerus
     
  • To seed up suspend and resume of devices included into Intel SoCs
    handled by the ACPI LPSS driver during system suspend, make
    acpi_lpss_create_device() call device_enable_async_suspend() for
    every device created by it.

    This requires acpi_create_platform_device() to be modified to return
    a pointer to struct platform_device instead of an int. As a result,
    acpi_create_platform_device() cannot be pointed to by the .attach
    pointer in platform_handler directly any more, so a simple wrapper
    around it is necessary for this purpose. That, in turn, allows the
    second unused argument of acpi_create_platform_device() to be
    dropped, which is an improvement.

    Tested-by: Heikki Krogerus
    Signed-off-by: Rafael J. Wysocki

    Rafael J. Wysocki
     

23 May, 2014

1 commit

  • Now that the x86 dynamic IRQ allocation problem has been resolved with
    commmit 62a08ae2a576 (genirq: x86: Ensure that dynamic irq allocation does
    not conflict), we can add back Baytrail-T ACPI ID to the pinctrl driver.

    This makes the driver to work on Asus T100 where it is needed for several
    things like ACPI GPIO events and SD card detection.

    References: https://bugzilla.kernel.org/show_bug.cgi?id=68291
    Acked-by: Rafael J. Wysocki
    Signed-off-by: Jin Yao
    Signed-off-by: Mika Westerberg
    Signed-off-by: Linus Walleij

    Jin Yao
     

20 Mar, 2014

1 commit

  • * pm-qos:
    PM / QoS: Add type to dev_pm_qos_add_ancestor_request() arguments
    ACPI / LPSS: Support for device latency tolerance PM QoS
    ACPI / scan: Add bind/unbind callbacks to struct acpi_scan_handler
    PM / QoS: Introcuce latency tolerance device PM QoS type
    PM / QoS: Add no_constraints_value field to struct pm_qos_constraints
    PM / QoS: Rename device resume latency QoS items

    * pm-domains:
    PM / domains: Turn latency warning into debug message

    * pm-drivers:
    PM: Add pm_runtime_suspend|resume_force functions
    PM / runtime: Fetch runtime PM callbacks using a macro

    Rafael J. Wysocki
     

19 Feb, 2014

1 commit

  • Intel BayTrail LPSS consists of two PWM controllers which can
    be enumerated from ACPI namespace. This change will cause
    platform device objects to be created for Intel BayTrail PWM
    controllers which will allow the pwm-lpss driver to bind to them
    and handle those devices.

    Signed-off-by: Chew, Chiau Ee
    Signed-off-by: Rafael J. Wysocki

    Chew, Chiau Ee
     

11 Feb, 2014

1 commit

  • Add a new routine, acpi_lpss_set_ltr(), for setting latency tolerance
    values for LPSS devices having LTR (Latency Tolerance Reporting)
    registers. Add .bind()/.unbind() callbacks to lpss_handler to set
    the LPSS devices' power.set_latency_tolerance callback pointers to
    acpi_lpss_set_ltr() during device addition and to clear them on
    device removal, respectively.

    That will cause the device latency tolerance PM QoS to work for
    the devices in question as documented.

    This changeset includes a fix from Mika Westerberg.

    Signed-off-by: Rafael J. Wysocki

    Rafael J. Wysocki
     

18 Jan, 2014

1 commit

  • This reverts commit f6308b36c411 (ACPI: Add BayTrail SoC GPIO and LPSS
    ACPI IDs), because it causes the Alan Cox' ASUS T100TA to "crash and
    burn" during boot if the Baytrail pinctrl driver is compiled in.

    Fixes: f6308b36c411 (ACPI: Add BayTrail SoC GPIO and LPSS ACPI IDs)
    Reported-by: One Thousand Gnomes
    Requested-by: Linus Walleij
    Signed-off-by: Rafael J. Wysocki

    Rafael J. Wysocki
     

30 Nov, 2013

1 commit

  • This adds the new ACPI ID (INT33FC) for the BayTrail GPIO
    banks as seen on a BayTrail M System-On-Chip platform. This
    ACPI ID is used by the BayTrail GPIO (pinctrl) driver to
    manage the Low Power Subsystem (LPSS).

    Signed-off-by: Paul Drews
    Acked-by: Linus Walleij
    Signed-off-by: Rafael J. Wysocki

    Paul Drews
     

16 Nov, 2013

1 commit


13 Nov, 2013

1 commit


11 Oct, 2013

1 commit

  • There is an additional bit in the GENERAL register on newer
    silicon that needs to be set or UART's RTS pin fails to
    reflect the flow control settings in the Modem Control
    Register.

    This will fix an issue where the RTS pin of the UART stays
    always at 1.8V, regardless of the register settings.

    Signed-off-by: Heikki Krogerus
    Signed-off-by: Rafael J. Wysocki

    Heikki Krogerus
     

02 Sep, 2013

1 commit

  • Intel LPSS devices that are enumerated from ACPI have both MMIO and IRQ
    resources returned in their _CRS method. However, Apple Macbook Air with
    Haswell has LPSS devices enumerated from PCI bus instead and _CRS method
    returns only an interrupt number (but the device has _HID set that causes
    the scan handler to match it).

    The current ACPI / LPSS code sets pdata->dev_desc only when MMIO resource
    is found for the device and in case of Macbook Air it is never found. That
    leads to a NULL pointer dereference in register_device_clock().

    Correct this by always setting the pdata->dev_desc.

    Reported-and-tested-by: Imre Kaloz
    Signed-off-by: Mika Westerberg
    Cc: 3.10+ # 3.10+
    Signed-off-by: Rafael J. Wysocki

    Mika Westerberg
     

28 Jun, 2013

1 commit

  • * acpi-lpss:
    ACPI / LPSS: override SDIO private register space size from ACPI tables
    ACPI / LPSS: mask the UART TX completion interrupt
    ACPI / LPSS: add support for Intel BayTrail

    Conflicts:
    drivers/acpi/acpi_lpss.c (with commit b9e95fc)

    Rafael J. Wysocki
     

20 Jun, 2013

1 commit

  • Commit 7cd8407 (ACPI / PM: Do not execute _PS0 for devices without
    _PSC during initialization) introduced a regression on some systems
    with Intel Lynxpoint Low-Power Subsystem (LPSS) where some devices
    need to be powered up during initialization, but their device objects
    in the ACPI namespace have _PS0 and _PS3 only (without _PSC or power
    resources).

    To work around this problem, make the ACPI LPSS driver power up
    devices it knows about by using a new helper function
    acpi_device_fix_up_power() that does all of the necessary
    sanity checks and calls acpi_dev_pm_explicit_set() to put the
    device into D0.

    Reported-and-tested-by: Mika Westerberg
    Signed-off-by: Rafael J. Wysocki

    Rafael J. Wysocki
     

19 Jun, 2013

3 commits

  • The SDIO device in Lynxpoint has its LTR registers reserved for a
    WiFi device (a child of the SDIO device) in the ACPI namespace even
    though those registers physically belong to the SDIO device itself.
    In order to be able to access the SDIO LTR registers from the ACPI
    LPSS driver for diagnostic purposes we need to use a size override
    for the SDIO private register space.

    Add a possibility to override the size of the private register space
    of an LPSS device provided by the ACPI tables in the ACPI LPSS driver
    and set the correct size for the SDIO device in there.

    [rjw: Changelog]
    Signed-off-by: Mika Westerberg
    Signed-off-by: Rafael J. Wysocki

    Mika Westerberg
     
  • Intel LPSS provides an extra TX byte counter and an extra TX
    completion interrupt for some of its bus controllers. However,
    there is no use for the extra UART interrupt and it has to be
    masked out during initialization.

    Otherwise, if the firmware does not mask the interrupt and
    the driver does not clear it, it may cause an interrupt flood
    freezing the board to happen.

    Add code masking that problematic interrupt to the ACPI LPSS driver.

    [rjw: Changelog]
    Signed-off-by: Heikki Krogerus
    Signed-off-by: Rafael J. Wysocki

    Heikki Krogerus
     
  • Intel BayTrail has almost the same Low Power Subsystem than Lynxpoint with
    few differences. Peripherals are clocked with different speeds (typically
    lower) and the clock is not always gated. To support this we add
    possibility to share a common fixed rate clock and make clock gating
    optional.

    Signed-off-by: Mika Westerberg
    Acked-by: Mike Turquette
    Signed-off-by: Rafael J. Wysocki

    Mika Westerberg
     

14 May, 2013

1 commit

  • The DMA controller in Lynxpoint is enumerated as a regular ACPI device now. To
    work properly it is using the LPSS root clock as a functional clock. That's why
    we have to register the clock device accordingly to the ACPI ID of the DMA
    controller. The acpi_lpss.c module is responsible to do the job.

    This patch also removes hardcoded name of the DMA device in clk-lpt.c and the
    name of the root clock in acpi_lpss.c.

    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Andy Shevchenko
    Signed-off-by: Vinod Koul

    Rafael J. Wysocki
     

25 Mar, 2013

1 commit