From: Lee Jones <lee.jones@linaro.org>
To: Krzysztof Kozlowski <k.kozlowski.k@gmail.com>
Cc: Sangbeom Kim <sbkim73@samsung.com>,
Krzysztof Kozlowski <k.kozlowski@samsung.com>,
linux-kernel@vger.kernel.org, linux-samsung-soc@vger.kernel.org,
devicetree@vger.kernel.org, Kukjin Kim <kgene@kernel.org>,
linux-arm-kernel@lists.infradead.org,
Anand Moon <linux.amoon@gmail.com>
Subject: Re: [PATCH 1/2] mfd: s2mps11: Add manual shutdown method for Odroid XU3
Date: Mon, 10 Aug 2015 16:49:10 +0100 [thread overview]
Message-ID: <20150810154910.GA12631@x1> (raw)
In-Reply-To: <1438605447-6836-2-git-send-email-k.kozlowski.k@gmail.com>
On Mon, 03 Aug 2015, Krzysztof Kozlowski wrote:
> 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>
>
> ---
>
> 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
> ---
> Documentation/devicetree/bindings/mfd/s2mps11.txt | 4 +++
> drivers/mfd/sec-core.c | 31 +++++++++++++++++++++++
> include/linux/mfd/samsung/core.h | 2 ++
> include/linux/mfd/samsung/s2mps11.h | 1 +
> 4 files changed, 38 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/mfd/s2mps11.txt b/Documentation/devicetree/bindings/mfd/s2mps11.txt
> index 57a045016fca..90eaef393325 100644
> --- a/Documentation/devicetree/bindings/mfd/s2mps11.txt
> +++ b/Documentation/devicetree/bindings/mfd/s2mps11.txt
> @@ -15,6 +15,10 @@ Optional properties:
> - interrupt-parent: Specifies the phandle of the interrupt controller to which
> the interrupts from s2mps11 are delivered to.
> - interrupts: Interrupt specifiers for interrupt sources.
> +- samsung,s2mps11-acokb-ground: Indicates that ACOKB pin of S2MPS11 PMIC is
> + connected to the ground so the PMIC must manually set PWRHOLD bit in CTRL1
> + register to turn off the power. Usually the ACOKB is pulled up to VBATT so
> + when PWRHOLD pin goes low, the rising ACOKB will trigger power off.
Binding looks fine. Please seperate it into a different patch and
apply my Ack:
Acked-by: Lee Jones <lee.jones@linaro.org>
> Optional nodes:
> - clocks: s2mps11, s2mps13 and s5m8767 provide three(AP/CP/BT) buffered 32.768
> diff --git a/drivers/mfd/sec-core.c b/drivers/mfd/sec-core.c
> index d206a3e8fe87..a56ab2102a32 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,34 @@ 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);
> +}
> +
> +
Remove the extra '\n'.
When you resubmit, apply my Ack:
Acked-by: Lee Jones <lee.jones@linaro.org>
> #ifdef CONFIG_PM_SLEEP
> static int sec_pmic_suspend(struct device *dev)
> {
> @@ -491,6 +521,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
next prev parent reply other threads:[~2015-08-10 15:49 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-03 12:37 [PATCH 0/2] mfd/EXYNOS: Properly shutdown Odroid XU3 Krzysztof Kozlowski
2015-08-03 12:37 ` [PATCH 1/2] mfd: s2mps11: Add manual shutdown method for " Krzysztof Kozlowski
2015-08-03 18:52 ` Anand Moon
2015-08-05 10:53 ` Javier Martinez Canillas
2015-08-10 15:49 ` Lee Jones [this message]
2015-08-10 23:45 ` Krzysztof Kozlowski
2015-08-03 12:37 ` [PATCH 2/2] ARM: dts: Fix power off method on exynos5422-odroidxu3 Krzysztof Kozlowski
2015-08-05 10:54 ` Javier Martinez Canillas
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=20150810154910.GA12631@x1 \
--to=lee.jones@linaro.org \
--cc=devicetree@vger.kernel.org \
--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=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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).