From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: "Rafael J. Wysocki" <rafael@kernel.org>,
Hans de Goede <hdegoede@redhat.com>,
Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Cc: "Rafael J . Wysocki" <rjw@rjwysocki.net>,
Len Brown <lenb@kernel.org>,
ACPI Devel Maling List <linux-acpi@vger.kernel.org>
Subject: Re: [PATCH v4 2/2] ACPI / PMIC: Stop xpower OPRegion handler relying on IIO
Date: Thu, 20 Apr 2017 11:19:33 +0300 [thread overview]
Message-ID: <1492676373.24567.91.camel@linux.intel.com> (raw)
In-Reply-To: <CAJZ5v0i6SztwFrkGA3cw9Y+qCGuJ_mH_gMBXbXx9SgGMRQjHfA@mail.gmail.com>
On Wed, 2017-04-19 at 22:18 +0200, Rafael J. Wysocki wrote:
> On Wed, Apr 19, 2017 at 3:07 PM, Hans de Goede <hdegoede@redhat.com>
> 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@redhat.com>
>
> Andy, Srinivas, any concerns?
I would prefer to have this magic shifts in a common header between
drivers, but I'm not insisting (I admit it might take much more work for
no clear benefit, except keeping ADC bits in one place).
So, I'm fine with this change.
>
> > ---
> > 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@vger.kernel.org
> > More majordomo info at http://vger.kernel.org/majordomo-info.html
--
Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Intel Finland Oy
next prev parent reply other threads:[~2017-04-20 8:19 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-04-19 13:06 [PATCH v4 0/2] ACPI / PMIC: Intel CHT Whiskey Cove opregion driver + xpower opregion bugfix Hans de Goede
2017-04-19 13:06 ` [PATCH v4 1/2] ACPI / PMIC: Add opregion driver for Intel CHT Whiskey Cove PMIC Hans de Goede
2017-04-19 20:17 ` Rafael J. Wysocki
2017-04-19 20:26 ` Srinivas Pandruvada
2017-04-19 13:07 ` [PATCH v4 2/2] ACPI / PMIC: Stop xpower OPRegion handler relying on IIO Hans de Goede
2017-04-19 20:18 ` Rafael J. Wysocki
2017-04-19 20:41 ` Srinivas Pandruvada
2017-04-20 8:19 ` Andy Shevchenko [this message]
2017-04-20 10:38 ` Rafael J. Wysocki
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1492676373.24567.91.camel@linux.intel.com \
--to=andriy.shevchenko@linux.intel.com \
--cc=hdegoede@redhat.com \
--cc=lenb@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=rafael@kernel.org \
--cc=rjw@rjwysocki.net \
--cc=srinivas.pandruvada@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.