All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lee Jones <lee.jones@linaro.org>
To: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Cc: devicetree@vger.kernel.org, Samuel Ortiz <sameo@linux.intel.com>,
	Kukjin Kim <kgene@kernel.org>,
	linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	Sangbeom Kim <sbkim73@samsung.com>,
	Anand Moon <linux.amoon@gmail.com>,
	Javier Martinez Canillas <javier@osg.samsung.com>,
	Krzysztof Kozlowski <k.kozlowski.k@gmail.com>,
	linux-samsung-soc@vger.kernel.org
Subject: Re: [PATCH v2 2/3] mfd: s2mps11: Add manual shutdown method for Odroid XU3
Date: Mon, 14 Sep 2015 09:12:12 +0100	[thread overview]
Message-ID: <20150914081212.GE27591@x1> (raw)
In-Reply-To: <CAJKOXPeSH-w1zBLomLiUKqAVbGEQVvTLfGbJ-YFgZ_qw5MsC9Q@mail.gmail.com>

On Sun, 13 Sep 2015, Krzysztof Kozlowski wrote:
> You acked this patch. However finally it did not go through other tree
> so maybe you could pick it up for 4.4?
> 
> If you want I could reabse and resend it.

Yes, please rebase and resend.

> 2015-08-11 19:09 GMT+09:00 Krzysztof Kozlowski <k.kozlowski.k@gmail.com>:
> >
> > On Odroid XU3 board (with S2MPS11 PMIC) the PWRHOLD bit in CTRL1
> > register must be manually set to 0 before initiating power off sequence.
> >
> > One of usual power down methods for Exynos based devices looks like:
> > 1. PWRHOLD pin of PMIC is connected to PSHOLD of Exynos.
> > 2. Exynos holds up this pin during system operation.
> > 3. ACOKB pin of PMIC is pulled up to VBATT and optionally to pin in
> >    other device.
> > 4. When PWRHOLD/PSHOLD goes low, the PMIC will turn off the power if
> >    ACOKB goes high.
> >
> > On Odroid XU3 family the difference is in (3) - the ACOKB is grounded.
> > This means that PMIC must manually set PWRHOLD field to low and then
> > wait for signal from Application Processor (the usual change in
> > PWRHOLD/PSHOLD pin will actually cut off the power).
> >
> > The patch adds respective binding allowing Odroid XU3 device to be
> > powered off.
> >
> > Signed-off-by: Krzysztof Kozlowski <k.kozlowski.k@gmail.com>
> > Reported-by: Anand Moon <linux.amoon@gmail.com>
> > Tested-by: Anand Moon <linux.amoon@gmail.com>
> > Reviewed-by: Javier Martinez Canillas <javier@osg.samsung.com>
> > Acked-by: Lee Jones <lee.jones@linaro.org>
> >
> > ---
> >
> > Changes since v1:
> > 1. Split bindings documentation to separate patch (suggested by Lee).
> > 2. Fix additional empty line (suggested by Lee).
> > 3. Add Anand's tested-by, Javier's reviewed-by and Lee's acked-by.
> >
> > Patch is losely based on patch in Hardkernel repository [0] and previous
> > work of Anand Moon [1].
> >
> > [0] https://github.com/hardkernel/linux/commit/6897e62ba328bd1c8c095d918101863250cd73e7
> > [1] http://www.spinics.net/lists/linux-samsung-soc/msg45959.html
> > ---
> >  drivers/mfd/sec-core.c              | 30 ++++++++++++++++++++++++++++++
> >  include/linux/mfd/samsung/core.h    |  2 ++
> >  include/linux/mfd/samsung/s2mps11.h |  1 +
> >  3 files changed, 33 insertions(+)
> >
> > diff --git a/drivers/mfd/sec-core.c b/drivers/mfd/sec-core.c
> > index d206a3e8fe87..2d1137a7a0ee 100644
> > --- a/drivers/mfd/sec-core.c
> > +++ b/drivers/mfd/sec-core.c
> > @@ -278,6 +278,8 @@ static struct sec_platform_data *sec_pmic_i2c_parse_dt_pdata(
> >          * not parsed here.
> >          */
> >
> > +       pd->manual_poweroff = of_property_read_bool(dev->of_node,
> > +                                               "samsung,s2mps11-acokb-ground");
> >         return pd;
> >  }
> >  #else
> > @@ -440,6 +442,33 @@ static int sec_pmic_remove(struct i2c_client *i2c)
> >         return 0;
> >  }
> >
> > +static void sec_pmic_shutdown(struct i2c_client *i2c)
> > +{
> > +       struct sec_pmic_dev *sec_pmic = i2c_get_clientdata(i2c);
> > +       unsigned int reg, mask;
> > +
> > +       if (!sec_pmic->pdata->manual_poweroff)
> > +               return;
> > +
> > +       switch (sec_pmic->device_type) {
> > +       case S2MPS11X:
> > +               reg = S2MPS11_REG_CTRL1;
> > +               mask = S2MPS11_CTRL1_PWRHOLD_MASK;
> > +               break;
> > +       default:
> > +               /*
> > +                * Currently only one board with S2MPS11 needs this, so just
> > +                * ignore the rest.
> > +                */
> > +               dev_warn(sec_pmic->dev,
> > +                       "Unsupported device %lu for manual power off\n",
> > +                       sec_pmic->device_type);
> > +               return;
> > +       }
> > +
> > +       regmap_update_bits(sec_pmic->regmap_pmic, reg, mask, 0);
> > +}
> > +
> >  #ifdef CONFIG_PM_SLEEP
> >  static int sec_pmic_suspend(struct device *dev)
> >  {
> > @@ -491,6 +520,7 @@ static struct i2c_driver sec_pmic_driver = {
> >         },
> >         .probe = sec_pmic_probe,
> >         .remove = sec_pmic_remove,
> > +       .shutdown = sec_pmic_shutdown,
> >         .id_table = sec_pmic_id,
> >  };
> >
> > diff --git a/include/linux/mfd/samsung/core.h b/include/linux/mfd/samsung/core.h
> > index 75115384f3fc..aa78957e092f 100644
> > --- a/include/linux/mfd/samsung/core.h
> > +++ b/include/linux/mfd/samsung/core.h
> > @@ -132,6 +132,8 @@ struct sec_platform_data {
> >         int                             buck2_init;
> >         int                             buck3_init;
> >         int                             buck4_init;
> > +       /* Whether or not manually set PWRHOLD to low during shutdown. */
> > +       bool                            manual_poweroff;
> >  };
> >
> >  /**
> > diff --git a/include/linux/mfd/samsung/s2mps11.h b/include/linux/mfd/samsung/s2mps11.h
> > index 7981a9d77d3f..b288965e8101 100644
> > --- a/include/linux/mfd/samsung/s2mps11.h
> > +++ b/include/linux/mfd/samsung/s2mps11.h
> > @@ -179,6 +179,7 @@ enum s2mps11_regulators {
> >  #define S2MPS11_BUCK_N_VOLTAGES (S2MPS11_BUCK_VSEL_MASK + 1)
> >  #define S2MPS11_RAMP_DELAY     25000           /* uV/us */
> >
> > +#define S2MPS11_CTRL1_PWRHOLD_MASK     BIT(4)
> >
> >  #define S2MPS11_BUCK2_RAMP_SHIFT       6
> >  #define S2MPS11_BUCK34_RAMP_SHIFT      4
> >

-- 
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

WARNING: multiple messages have this Message-ID (diff)
From: lee.jones@linaro.org (Lee Jones)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 2/3] mfd: s2mps11: Add manual shutdown method for Odroid XU3
Date: Mon, 14 Sep 2015 09:12:12 +0100	[thread overview]
Message-ID: <20150914081212.GE27591@x1> (raw)
In-Reply-To: <CAJKOXPeSH-w1zBLomLiUKqAVbGEQVvTLfGbJ-YFgZ_qw5MsC9Q@mail.gmail.com>

On Sun, 13 Sep 2015, Krzysztof Kozlowski wrote:
> You acked this patch. However finally it did not go through other tree
> so maybe you could pick it up for 4.4?
> 
> If you want I could reabse and resend it.

Yes, please rebase and resend.

> 2015-08-11 19:09 GMT+09:00 Krzysztof Kozlowski <k.kozlowski.k@gmail.com>:
> >
> > On Odroid XU3 board (with S2MPS11 PMIC) the PWRHOLD bit in CTRL1
> > register must be manually set to 0 before initiating power off sequence.
> >
> > One of usual power down methods for Exynos based devices looks like:
> > 1. PWRHOLD pin of PMIC is connected to PSHOLD of Exynos.
> > 2. Exynos holds up this pin during system operation.
> > 3. ACOKB pin of PMIC is pulled up to VBATT and optionally to pin in
> >    other device.
> > 4. When PWRHOLD/PSHOLD goes low, the PMIC will turn off the power if
> >    ACOKB goes high.
> >
> > On Odroid XU3 family the difference is in (3) - the ACOKB is grounded.
> > This means that PMIC must manually set PWRHOLD field to low and then
> > wait for signal from Application Processor (the usual change in
> > PWRHOLD/PSHOLD pin will actually cut off the power).
> >
> > The patch adds respective binding allowing Odroid XU3 device to be
> > powered off.
> >
> > Signed-off-by: Krzysztof Kozlowski <k.kozlowski.k@gmail.com>
> > Reported-by: Anand Moon <linux.amoon@gmail.com>
> > Tested-by: Anand Moon <linux.amoon@gmail.com>
> > Reviewed-by: Javier Martinez Canillas <javier@osg.samsung.com>
> > Acked-by: Lee Jones <lee.jones@linaro.org>
> >
> > ---
> >
> > Changes since v1:
> > 1. Split bindings documentation to separate patch (suggested by Lee).
> > 2. Fix additional empty line (suggested by Lee).
> > 3. Add Anand's tested-by, Javier's reviewed-by and Lee's acked-by.
> >
> > Patch is losely based on patch in Hardkernel repository [0] and previous
> > work of Anand Moon [1].
> >
> > [0] https://github.com/hardkernel/linux/commit/6897e62ba328bd1c8c095d918101863250cd73e7
> > [1] http://www.spinics.net/lists/linux-samsung-soc/msg45959.html
> > ---
> >  drivers/mfd/sec-core.c              | 30 ++++++++++++++++++++++++++++++
> >  include/linux/mfd/samsung/core.h    |  2 ++
> >  include/linux/mfd/samsung/s2mps11.h |  1 +
> >  3 files changed, 33 insertions(+)
> >
> > diff --git a/drivers/mfd/sec-core.c b/drivers/mfd/sec-core.c
> > index d206a3e8fe87..2d1137a7a0ee 100644
> > --- a/drivers/mfd/sec-core.c
> > +++ b/drivers/mfd/sec-core.c
> > @@ -278,6 +278,8 @@ static struct sec_platform_data *sec_pmic_i2c_parse_dt_pdata(
> >          * not parsed here.
> >          */
> >
> > +       pd->manual_poweroff = of_property_read_bool(dev->of_node,
> > +                                               "samsung,s2mps11-acokb-ground");
> >         return pd;
> >  }
> >  #else
> > @@ -440,6 +442,33 @@ static int sec_pmic_remove(struct i2c_client *i2c)
> >         return 0;
> >  }
> >
> > +static void sec_pmic_shutdown(struct i2c_client *i2c)
> > +{
> > +       struct sec_pmic_dev *sec_pmic = i2c_get_clientdata(i2c);
> > +       unsigned int reg, mask;
> > +
> > +       if (!sec_pmic->pdata->manual_poweroff)
> > +               return;
> > +
> > +       switch (sec_pmic->device_type) {
> > +       case S2MPS11X:
> > +               reg = S2MPS11_REG_CTRL1;
> > +               mask = S2MPS11_CTRL1_PWRHOLD_MASK;
> > +               break;
> > +       default:
> > +               /*
> > +                * Currently only one board with S2MPS11 needs this, so just
> > +                * ignore the rest.
> > +                */
> > +               dev_warn(sec_pmic->dev,
> > +                       "Unsupported device %lu for manual power off\n",
> > +                       sec_pmic->device_type);
> > +               return;
> > +       }
> > +
> > +       regmap_update_bits(sec_pmic->regmap_pmic, reg, mask, 0);
> > +}
> > +
> >  #ifdef CONFIG_PM_SLEEP
> >  static int sec_pmic_suspend(struct device *dev)
> >  {
> > @@ -491,6 +520,7 @@ static struct i2c_driver sec_pmic_driver = {
> >         },
> >         .probe = sec_pmic_probe,
> >         .remove = sec_pmic_remove,
> > +       .shutdown = sec_pmic_shutdown,
> >         .id_table = sec_pmic_id,
> >  };
> >
> > diff --git a/include/linux/mfd/samsung/core.h b/include/linux/mfd/samsung/core.h
> > index 75115384f3fc..aa78957e092f 100644
> > --- a/include/linux/mfd/samsung/core.h
> > +++ b/include/linux/mfd/samsung/core.h
> > @@ -132,6 +132,8 @@ struct sec_platform_data {
> >         int                             buck2_init;
> >         int                             buck3_init;
> >         int                             buck4_init;
> > +       /* Whether or not manually set PWRHOLD to low during shutdown. */
> > +       bool                            manual_poweroff;
> >  };
> >
> >  /**
> > diff --git a/include/linux/mfd/samsung/s2mps11.h b/include/linux/mfd/samsung/s2mps11.h
> > index 7981a9d77d3f..b288965e8101 100644
> > --- a/include/linux/mfd/samsung/s2mps11.h
> > +++ b/include/linux/mfd/samsung/s2mps11.h
> > @@ -179,6 +179,7 @@ enum s2mps11_regulators {
> >  #define S2MPS11_BUCK_N_VOLTAGES (S2MPS11_BUCK_VSEL_MASK + 1)
> >  #define S2MPS11_RAMP_DELAY     25000           /* uV/us */
> >
> > +#define S2MPS11_CTRL1_PWRHOLD_MASK     BIT(4)
> >
> >  #define S2MPS11_BUCK2_RAMP_SHIFT       6
> >  #define S2MPS11_BUCK34_RAMP_SHIFT      4
> >

-- 
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org ? Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

  reply	other threads:[~2015-09-14  8:12 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-11 10:09 [PATCH v2 0/3] mfd: EXYNOS: Properly shutdown Odroid XU3 Krzysztof Kozlowski
2015-08-11 10:09 ` Krzysztof Kozlowski
2015-08-11 10:09 ` [PATCH v2 1/3] mfd: documentation: dt: Document grounded ACOKB pin on S2MPS11 Krzysztof Kozlowski
2015-08-11 10:09   ` Krzysztof Kozlowski
2015-08-14  9:47   ` Kukjin Kim
2015-08-14  9:47     ` Kukjin Kim
2015-10-13 10:07     ` Lee Jones
2015-10-13 10:07       ` Lee Jones
2015-08-11 10:09 ` [PATCH v2 2/3] mfd: s2mps11: Add manual shutdown method for Odroid XU3 Krzysztof Kozlowski
2015-08-11 10:09   ` Krzysztof Kozlowski
     [not found]   ` <1439287746-14034-3-git-send-email-k.kozlowski.k-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-09-13  2:43     ` Krzysztof Kozlowski
2015-09-13  2:43       ` Krzysztof Kozlowski
2015-09-13  2:43       ` Krzysztof Kozlowski
2015-09-14  8:12       ` Lee Jones [this message]
2015-09-14  8:12         ` Lee Jones
2015-08-11 10:09 ` [PATCH v2 3/3] ARM: dts: Fix power off method on exynos5422-odroidxu3 Krzysztof Kozlowski
2015-08-11 10:09   ` Krzysztof Kozlowski

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=20150914081212.GE27591@x1 \
    --to=lee.jones@linaro.org \
    --cc=devicetree@vger.kernel.org \
    --cc=javier@osg.samsung.com \
    --cc=k.kozlowski.k@gmail.com \
    --cc=k.kozlowski@samsung.com \
    --cc=kgene@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-samsung-soc@vger.kernel.org \
    --cc=linux.amoon@gmail.com \
    --cc=sameo@linux.intel.com \
    --cc=sbkim73@samsung.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.