17 Jan, 2019

1 commit

  • commit 2b531d71595d2b5b12782a49b23c335869e2621e upstream.

    The current-source used for the battery temp-sensor (TS) is shared with the
    GPADC. For proper fuel-gauge and charger operation the TS current-source
    needs to be permanently on. But to read the GPADC we need to temporary
    switch the TS current-source to ondemand, so that the GPADC can use it,
    otherwise we will always read an all 0 value.

    The switching from on to on-ondemand is not necessary when the TS
    current-source is off (this happens on devices which do not have a TS).

    Prior to this commit there were 2 issues with our handling of the TS
    current-source switching:

    1) We were writing hardcoded values to the ADC TS pin-ctrl register,
    overwriting various other unrelated bits. Specifically we were overwriting
    the current-source setting for the TS and GPIO0 pins, forcing it to 80ųA
    independent of its original setting. On a Chuwi Vi10 tablet this was
    causing us to get a too high adc value (due to a too high current-source)
    resulting in acpi_lpat_raw_to_temp() returning -ENOENT, resulting in:

    ACPI Error: AE_ERROR, Returned by Handler for [UserDefinedRegion]
    ACPI Error: Method parse/execution failed \_SB.SXP1._TMP, AE_ERROR

    This commit fixes this by using regmap_update_bits to change only the
    relevant bits.

    2) At the end of intel_xpower_pmic_get_raw_temp() we were unconditionally
    enabling the TS current-source even on devices where the TS-pin is not used
    and the current-source thus was off on entry of the function.

    This commit fixes this by checking if the TS current-source is off when
    entering intel_xpower_pmic_get_raw_temp() and if so it is left as is.

    Fixes: 58eefe2f3f53 (ACPI / PMIC: xpower: Do pinswitch ... reading GPADC)
    Signed-off-by: Hans de Goede
    Acked-by: Andy Shevchenko
    Cc: 4.14+ # 4.14+
    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Greg Kroah-Hartman

    Hans de Goede
     

02 Nov, 2017

1 commit

  • Many source files in the tree are missing licensing information, which
    makes it harder for compliance tools to determine the correct license.

    By default all files without license information are under the default
    license of the kernel, which is GPL version 2.

    Update the files which contain no license information with the 'GPL-2.0'
    SPDX license identifier. The SPDX identifier is a legally binding
    shorthand, which can be used instead of the full boiler plate text.

    This patch is based on work done by Thomas Gleixner and Kate Stewart and
    Philippe Ombredanne.

    How this work was done:

    Patches were generated and checked against linux-4.14-rc6 for a subset of
    the use cases:
    - file had no licensing information it it.
    - file was a */uapi/* one with no licensing information in it,
    - file was a */uapi/* one with existing licensing information,

    Further patches will be generated in subsequent months to fix up cases
    where non-standard license headers were used, and references to license
    had to be inferred by heuristics based on keywords.

    The analysis to determine which SPDX License Identifier to be applied to
    a file was done in a spreadsheet of side by side results from of the
    output of two independent scanners (ScanCode & Windriver) producing SPDX
    tag:value files created by Philippe Ombredanne. Philippe prepared the
    base worksheet, and did an initial spot review of a few 1000 files.

    The 4.13 kernel was the starting point of the analysis with 60,537 files
    assessed. Kate Stewart did a file by file comparison of the scanner
    results in the spreadsheet to determine which SPDX license identifier(s)
    to be applied to the file. She confirmed any determination that was not
    immediately clear with lawyers working with the Linux Foundation.

    Criteria used to select files for SPDX license identifier tagging was:
    - Files considered eligible had to be source code files.
    - Make and config files were included as candidates if they contained >5
    lines of source
    - File already had some variant of a license header in it (even if
    Reviewed-by: Philippe Ombredanne
    Reviewed-by: Thomas Gleixner
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

25 Jul, 2017

1 commit

  • Testing has shown that the TS-pin's bias-current needs to be disabled
    when reading the GPIO0 pin in GPADC mode.

    It seems that there is only 1 bias current source and to be able to use it
    for the GPIO0 pin in GPADC mode it must be temporarily turned off for the
    TS pin, but the datasheet does not mention this.

    This commit adds the necessary writes to turn the TS pin BIAS current
    off before and back on after reading the GPADC. This fixes the GPADC
    always returning a reading of 0.

    Signed-off-by: Hans de Goede
    Signed-off-by: Rafael J. Wysocki

    Hans de Goede
     

22 Jun, 2017

1 commit


29 Apr, 2017

1 commit

  • The power table addresses should be contiguous, but there was a hole
    where 0x34 was missing. On most devices this is not a problem as
    addresses above 0x34 are used for the BUC# convertors which are not
    used in the DSDTs I've access to but after the BUC# convertors
    there is a field named GPI1 in the DSTDs, which does get used in some
    cases and ended up turning BUC6 on and off due to the wrong addresses,
    resulting in turning the entire device off (or causing it to reboot).

    Removing the hole in the addresses fixes this, fixing one of my
    Bay Trail tablets turning off while booting the mainline kernel.

    While at it add comments with the field names used in the DSDTs to
    make it easier to compare the register and bits used at each address
    with the datasheet.

    Signed-off-by: Hans de Goede
    Reviewed-by: Andy Shevchenko
    Signed-off-by: Rafael J. Wysocki

    Hans de Goede
     

20 Apr, 2017

2 commits

  • The intel_pmic_xpower code provides an OPRegion handler, which must be
    available before other drivers using it are loaded, which can only be
    ensured if both the mfd and opregion drivers are built in, which is why
    the Kconfig option for intel_pmic_xpower is a bool.

    The use of IIO is causing trouble for generic distro configs here as
    distros will typically want to build IIO drivers as modules and there
    really is no reason to use IIO here. The reading of the ADC value is a
    single regmap_bulk_read, which is already protected against races by
    the regmap-lock.

    This commit removes the use of IIO, allowing distros to enable the
    driver without needing to built IIO in and also actually simplifies
    the code.

    Signed-off-by: Hans de Goede
    Signed-off-by: Rafael J. Wysocki

    Hans de Goede
     
  • Add opregion driver for Intel CHT Whiskey Cove PMIC, based on various
    non upstreamed CHT Whiskey Cove PMIC patches. This does not include
    support for the Thermal opregion (DPTF) due to lacking documentation.

    Signed-off-by: Hans de Goede
    Reviewed-by: Andy Shevchenko
    Signed-off-by: Rafael J. Wysocki

    Hans de Goede
     

16 Jul, 2016

1 commit

  • The Kconfig currently controlling compilation of these files are:

    drivers/acpi/Kconfig:menuconfig PMIC_OPREGION
    drivers/acpi/Kconfig: bool "PMIC (Power Management Integrated Circuit) operation region support"

    drivers/acpi/Kconfig:config BXT_WC_PMIC_OPREGION
    drivers/acpi/Kconfig: bool "ACPI operation region support for BXT WhiskeyCove PMIC"

    drivers/acpi/Kconfig:config XPOWER_PMIC_OPREGION
    drivers/acpi/Kconfig: bool "ACPI operation region support for XPower AXP288 PMIC"

    ...meaning they currently are not being built as a module by anyone.

    Lets remove the couple traces of modular infrastructure use, so that
    when reading the code there is no doubt it is builtin-only.

    We delete the MODULE_LICENSE tag etc. since all that information
    is already contained at the top of the file in the comments.

    One file was using module_init. Since module_init translates to
    device_initcall in the non-modular case, the init ordering remains
    unchanged with this commit.

    In one case we replace the module.h with export.h since that file
    is exporting some symbols, but does not use __init. The other two
    are using __init and so module.h gets replaced with init.h there.

    Signed-off-by: Paul Gortmaker
    Signed-off-by: Rafael J. Wysocki

    Paul Gortmaker
     

27 Jun, 2016

2 commits


24 Jun, 2016

2 commits

  • This patch adds operation region driver for Intel BXT WhiskeyCove
    PMIC. The register mapping is done as per the BXT WC data sheet.

    Signed-off-by: Ajay Thomas
    Signed-off-by: Bin Gao
    Reviewed-by: Aaron Lu
    Signed-off-by: Rafael J. Wysocki

    Bin Gao
     
  • Issue description: On some pmics, the policy enable for thermal alerts
    refers to different bit fields of the same registers, whereas on other
    pmics, the policy enable refers to the same bit field on different
    registers. Previous implementation did not provide the flexibility for
    supporting the first approach.

    Solution: Modified the policy enable function to take bit field as well.
    The use of bit field is left to the pmic specific opregion driver.

    Signed-off-by: Yegnesh Iyer
    Signed-off-by: Bin Gao
    Reviewed-by: Aaron Lu
    Signed-off-by: Rafael J. Wysocki

    Bin Gao
     

10 Mar, 2016

1 commit

  • The Kconfig currently controlling compilation of this code is:

    drivers/acpi/Kconfig:config CRC_PMIC_OPREGION
    drivers/acpi/Kconfig: bool "ACPI operation region support for CrystalCove PMIC"

    ...meaning that it currently is not being built as a module by anyone.

    Lets remove the couple modular references, so that when reading
    the driver there is no doubt it is builtin-only.

    Since module_init translates to device_initcall in the non-modular
    case, the init ordering remains unchanged with this commit.

    We also delete the MODULE_LICENSE tag etc. since all that information
    is already contained at the top of the file in the comments.

    Signed-off-by: Paul Gortmaker
    Acked-by: Aaron Lu
    Signed-off-by: Rafael J. Wysocki

    Paul Gortmaker
     

27 Mar, 2015

1 commit


29 Jan, 2015

1 commit


27 Nov, 2014

3 commits

  • The same virtual GPIO strategy is also used for the AXP288 PMIC in that
    various control methods that are used to do power rail handling and
    sensor reading/setting will touch GPIO fields defined under the PMIC
    device. The GPIO fileds are only defined by the ACPI code while the
    actual hardware doesn't really have a GPIO controller, but to make those
    control method execution succeed, we have to install a GPIO handler for
    the PMIC device handle. Since we do not need the virtual GPIO strategy,
    we can simply do nothing in that handler.

    Signed-off-by: Aaron Lu
    Signed-off-by: Rafael J. Wysocki

    Aaron Lu
     
  • The Baytrail-T-CR platform firmware has defined two customized operation
    regions for PMIC chip Dollar Cove XPower - one is for power resource
    handling and one is for thermal just like the CrystalCove one. This patch
    adds support for them on top of the common PMIC opregion region code.

    Signed-off-by: Aaron Lu
    Acked-by: Lee Jones for the MFD part
    Signed-off-by: Rafael J. Wysocki

    Aaron Lu
     
  • The Baytrail-T platform firmware has defined two customized operation
    regions for PMIC chip Crystal Cove - one is for power resource handling
    and one is for thermal: sensor temperature reporting, trip point setting,
    etc. This patch adds support for them on top of the existing Crystal Cove
    PMIC driver.

    The reason to split code into a separate file intel_pmic.c is that there
    are more PMIC drivers with ACPI operation region support coming and we can
    re-use those code. The intel_pmic_opregion_data structure is created also
    for this purpose: when we need to support a new PMIC's operation region,
    we just need to fill those callbacks and the two register mapping tables.

    Signed-off-by: Aaron Lu
    Acked-by: Lee Jones for the MFD part
    Signed-off-by: Rafael J. Wysocki

    Aaron Lu