Re: [PATCH v4 2/2] ACPI / PMIC: Stop xpower OPRegion handler relying on IIO

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Apr 19, 2017 at 3:07 PM, Hans de Goede <hdegoede@xxxxxxxxxx> wrote:
> 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 <hdegoede@xxxxxxxxxx>

Andy, Srinivas, any concerns?

> ---
>  drivers/acpi/Kconfig                  |  2 +-
>  drivers/acpi/pmic/intel_pmic_xpower.c | 21 ++++-----------------
>  2 files changed, 5 insertions(+), 18 deletions(-)
>
> diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
> index 4f12fe0..842530f 100644
> --- a/drivers/acpi/Kconfig
> +++ b/drivers/acpi/Kconfig
> @@ -506,7 +506,7 @@ config CRC_PMIC_OPREGION
>
>  config XPOWER_PMIC_OPREGION
>         bool "ACPI operation region support for XPower AXP288 PMIC"
> -       depends on AXP288_ADC = y
> +       depends on MFD_AXP20X_I2C
>         help
>           This config adds ACPI operation region support for XPower AXP288 PMIC.
>
> diff --git a/drivers/acpi/pmic/intel_pmic_xpower.c b/drivers/acpi/pmic/intel_pmic_xpower.c
> index e6e991a..55f5111 100644
> --- a/drivers/acpi/pmic/intel_pmic_xpower.c
> +++ b/drivers/acpi/pmic/intel_pmic_xpower.c
> @@ -18,7 +18,6 @@
>  #include <linux/mfd/axp20x.h>
>  #include <linux/regmap.h>
>  #include <linux/platform_device.h>
> -#include <linux/iio/consumer.h>
>  #include "intel_pmic.h"
>
>  #define XPOWER_GPADC_LOW       0x5b
> @@ -186,28 +185,16 @@ static int intel_xpower_pmic_update_power(struct regmap *regmap, int reg,
>   * @regmap: regmap of the PMIC device
>   * @reg: register to get the reading
>   *
> - * We could get the sensor value by manipulating the HW regs here, but since
> - * the axp288 IIO driver may also access the same regs at the same time, the
> - * APIs provided by IIO subsystem are used here instead to avoid problems. As
> - * a result, the two passed in params are of no actual use.
> - *
>   * Return a positive value on success, errno on failure.
>   */
>  static int intel_xpower_pmic_get_raw_temp(struct regmap *regmap, int reg)
>  {
> -       struct iio_channel *gpadc_chan;
> -       int ret, val;
> -
> -       gpadc_chan = iio_channel_get(NULL, "axp288-system-temp");
> -       if (IS_ERR_OR_NULL(gpadc_chan))
> -               return -EACCES;
> +       u8 buf[2];
>
> -       ret = iio_read_channel_raw(gpadc_chan, &val);
> -       if (ret < 0)
> -               val = ret;
> +       if (regmap_bulk_read(regmap, AXP288_GP_ADC_H, buf, 2))
> +               return -EIO;
>
> -       iio_channel_release(gpadc_chan);
> -       return val;
> +       return (buf[0] << 4) + ((buf[1] >> 4) & 0x0F);
>  }
>
>  static struct intel_pmic_opregion_data intel_xpower_pmic_opregion_data = {
> --
> 2.9.3
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux