From: krzk@kernel.org (Krzysztof Kozlowski)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 3/7] pinctrl: samsung: Add support for pad retention control for Exynos5433 SoCs
Date: Wed, 25 Jan 2017 20:51:52 +0200 [thread overview]
Message-ID: <20170125185152.6wedhwibl2q3mlp5@kozik-lap> (raw)
In-Reply-To: <1485345031-2948-4-git-send-email-m.szyprowski@samsung.com>
On Wed, Jan 25, 2017 at 12:50:27PM +0100, Marek Szyprowski wrote:
> This patch adds support for retention control for Exynos5433 SoCs. Three
> groups of pins has been defined for retention control: common shared group
> for ALIVE, CPIF, eSE, FINGER, IMEM, NFC, PERIC, TOUCH pin banks and
> separate control for FSYS and AUD pin banks, for which PMU retention
> registers match whole banks.
>
> Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
> ---
> drivers/pinctrl/samsung/pinctrl-exynos.c | 58 +++++++++++++++++++++++++++++
> include/linux/soc/samsung/exynos-regs-pmu.h | 19 ++++++++++
> 2 files changed, 77 insertions(+)
>
> diff --git a/drivers/pinctrl/samsung/pinctrl-exynos.c b/drivers/pinctrl/samsung/pinctrl-exynos.c
> index fa3802970570..f854c92209e1 100644
> --- a/drivers/pinctrl/samsung/pinctrl-exynos.c
> +++ b/drivers/pinctrl/samsung/pinctrl-exynos.c
> @@ -1551,6 +1551,54 @@ static void exynos_retention_disable(struct samsung_pinctrl_drv_data *drvdata)
> EXYNOS5433_PIN_BANK_EINTG(3, 0x000, "gpj1", 0x00),
> };
>
> +/* PMU pin retention groups registers for Exynos5433 (without audio & fsys) */
> +static const u32 exynos5433_retention_regs[] = {
> + EXYNOS5433_PAD_RETENTION_TOP_OPTION,
> + EXYNOS5433_PAD_RETENTION_UART_OPTION,
> + EXYNOS5433_PAD_RETENTION_EBIA_OPTION,
> + EXYNOS5433_PAD_RETENTION_EBIB_OPTION,
> + EXYNOS5433_PAD_RETENTION_SPI_OPTION,
> + EXYNOS5433_PAD_RETENTION_MIF_OPTION,
> + EXYNOS5433_PAD_RETENTION_USBXTI_OPTION,
> + EXYNOS5433_PAD_RETENTION_BOOTLDO_OPTION,
> + EXYNOS5433_PAD_RETENTION_UFS_OPTION,
> + EXYNOS5433_PAD_RETENTION_FSYSGENIO_OPTION,
> +};
> +
> +static const struct samsung_retention_data exynos5433_retention_data __initconst = {
> + .regs = exynos5433_retention_regs,
> + .nr_regs = ARRAY_SIZE(exynos5433_retention_regs),
> + .value = PAD_INITIATE_WAKEUP,
> + .refcnt = &exynos_shared_retention_refcnt,
> + .init = exynos_retention_init,
> +};
> +
> +/* PMU retention control for audio pins can be tied to audio pin bank */
> +static const u32 exynos5433_audio_retention_regs[] = {
> + EXYNOS5433_PAD_RETENTION_AUD_OPTION,
> +};
> +
> +static const struct samsung_retention_data exynos5433_audio_retention_data __initconst = {
> + .regs = exynos5433_audio_retention_regs,
> + .nr_regs = ARRAY_SIZE(exynos5433_audio_retention_regs),
> + .value = PAD_INITIATE_WAKEUP,
> + .init = exynos_retention_init,
> +};
> +
> +/* PMU retention control for mmc pins can be tied to fsys pin bank */
> +static const u32 exynos5433_fsys_retention_regs[] = {
> + EXYNOS5433_PAD_RETENTION_MMC0_OPTION,
> + EXYNOS5433_PAD_RETENTION_MMC1_OPTION,
> + EXYNOS5433_PAD_RETENTION_MMC2_OPTION,
> +};
> +
> +static const struct samsung_retention_data exynos5433_fsys_retention_data __initconst = {
> + .regs = exynos5433_fsys_retention_regs,
> + .nr_regs = ARRAY_SIZE(exynos5433_fsys_retention_regs),
> + .value = PAD_INITIATE_WAKEUP,
> + .init = exynos_retention_init,
> +};
> +
> /*
> * Samsung pinctrl driver data for Exynos5433 SoC. Exynos5433 SoC includes
> * ten gpio/pin-mux/pinconfig controllers.
> @@ -1564,6 +1612,7 @@ static void exynos_retention_disable(struct samsung_pinctrl_drv_data *drvdata)
> .suspend = exynos_pinctrl_suspend,
> .resume = exynos_pinctrl_resume,
> .nr_ext_resources = 1,
> + .retention_data = &exynos5433_retention_data,
> }, {
> /* pin-controller instance 1 data */
> .pin_banks = exynos5433_pin_banks1,
> @@ -1571,6 +1620,7 @@ static void exynos_retention_disable(struct samsung_pinctrl_drv_data *drvdata)
> .eint_gpio_init = exynos_eint_gpio_init,
> .suspend = exynos_pinctrl_suspend,
> .resume = exynos_pinctrl_resume,
> + .retention_data = &exynos5433_audio_retention_data,
> }, {
> /* pin-controller instance 2 data */
> .pin_banks = exynos5433_pin_banks2,
> @@ -1578,6 +1628,7 @@ static void exynos_retention_disable(struct samsung_pinctrl_drv_data *drvdata)
> .eint_gpio_init = exynos_eint_gpio_init,
> .suspend = exynos_pinctrl_suspend,
> .resume = exynos_pinctrl_resume,
> + .retention_data = &exynos5433_retention_data,
> }, {
> /* pin-controller instance 3 data */
> .pin_banks = exynos5433_pin_banks3,
> @@ -1585,6 +1636,7 @@ static void exynos_retention_disable(struct samsung_pinctrl_drv_data *drvdata)
> .eint_gpio_init = exynos_eint_gpio_init,
> .suspend = exynos_pinctrl_suspend,
> .resume = exynos_pinctrl_resume,
> + .retention_data = &exynos5433_retention_data,
> }, {
> /* pin-controller instance 4 data */
> .pin_banks = exynos5433_pin_banks4,
> @@ -1592,6 +1644,7 @@ static void exynos_retention_disable(struct samsung_pinctrl_drv_data *drvdata)
> .eint_gpio_init = exynos_eint_gpio_init,
> .suspend = exynos_pinctrl_suspend,
> .resume = exynos_pinctrl_resume,
> + .retention_data = &exynos5433_retention_data,
> }, {
> /* pin-controller instance 5 data */
> .pin_banks = exynos5433_pin_banks5,
> @@ -1599,6 +1652,7 @@ static void exynos_retention_disable(struct samsung_pinctrl_drv_data *drvdata)
> .eint_gpio_init = exynos_eint_gpio_init,
> .suspend = exynos_pinctrl_suspend,
> .resume = exynos_pinctrl_resume,
> + .retention_data = &exynos5433_fsys_retention_data,
> }, {
> /* pin-controller instance 6 data */
> .pin_banks = exynos5433_pin_banks6,
> @@ -1606,6 +1660,7 @@ static void exynos_retention_disable(struct samsung_pinctrl_drv_data *drvdata)
> .eint_gpio_init = exynos_eint_gpio_init,
> .suspend = exynos_pinctrl_suspend,
> .resume = exynos_pinctrl_resume,
> + .retention_data = &exynos5433_retention_data,
> }, {
> /* pin-controller instance 7 data */
> .pin_banks = exynos5433_pin_banks7,
> @@ -1613,6 +1668,7 @@ static void exynos_retention_disable(struct samsung_pinctrl_drv_data *drvdata)
> .eint_gpio_init = exynos_eint_gpio_init,
> .suspend = exynos_pinctrl_suspend,
> .resume = exynos_pinctrl_resume,
> + .retention_data = &exynos5433_retention_data,
> }, {
> /* pin-controller instance 8 data */
> .pin_banks = exynos5433_pin_banks8,
> @@ -1620,6 +1676,7 @@ static void exynos_retention_disable(struct samsung_pinctrl_drv_data *drvdata)
> .eint_gpio_init = exynos_eint_gpio_init,
> .suspend = exynos_pinctrl_suspend,
> .resume = exynos_pinctrl_resume,
> + .retention_data = &exynos5433_retention_data,
> }, {
> /* pin-controller instance 9 data */
> .pin_banks = exynos5433_pin_banks9,
> @@ -1627,6 +1684,7 @@ static void exynos_retention_disable(struct samsung_pinctrl_drv_data *drvdata)
> .eint_gpio_init = exynos_eint_gpio_init,
> .suspend = exynos_pinctrl_suspend,
> .resume = exynos_pinctrl_resume,
> + .retention_data = &exynos5433_retention_data,
> },
> };
>
> diff --git a/include/linux/soc/samsung/exynos-regs-pmu.h b/include/linux/soc/samsung/exynos-regs-pmu.h
> index d30186e2b609..6a160e2ef4f0 100644
> --- a/include/linux/soc/samsung/exynos-regs-pmu.h
> +++ b/include/linux/soc/samsung/exynos-regs-pmu.h
> @@ -690,4 +690,23 @@
> | EXYNOS5420_KFC_USE_STANDBY_WFI2 \
> | EXYNOS5420_KFC_USE_STANDBY_WFI3)
>
> +/* For EXYNOS5433 */
> +#define EXYNOS5433_PAD_RETENTION_AUD_OPTION (0x3028)
> +#define EXYNOS5433_PAD_RETENTION_MMC2_OPTION (0x30C8)
> +#define EXYNOS5433_PAD_RETENTION_TOP_OPTION (0x3108)
> +#define EXYNOS5433_PAD_RETENTION_UART_OPTION (0x3128)
> +#define EXYNOS5433_PAD_RETENTION_MMC0_OPTION (0x3148)
> +#define EXYNOS5433_PAD_RETENTION_MMC1_OPTION (0x3168)
> +#define EXYNOS5433_PAD_RETENTION_EBIA_OPTION (0x3188)
> +#define EXYNOS5433_PAD_RETENTION_EBIB_OPTION (0x31A8)
> +#define EXYNOS5433_PAD_RETENTION_SPI_OPTION (0x31C8)
> +#define EXYNOS5433_PAD_RETENTION_MIF_OPTION (0x31E8)
> +#define EXYNOS5433_PAD_RETENTION_USBXTI_OPTION (0x3228)
> +#define EXYNOS5433_PAD_RETENTION_BOOTLDO_OPTION (0x3248)
> +#define EXYNOS5433_PAD_RETENTION_UFS_OPTION (0x3268)
> +#define EXYNOS5433_PAD_RETENTION_FSYSGENIO_OPTION (0x32A8)
> +
> +/* EXYNOS5433_PAD_RETENTION_*_OPTION */
> +#define PAD_INITIATE_WAKEUP (0x1 << 28)
Use existing EXYNOS_WAKEUP_FROM_LOWPWR unless there is a reason not to
use it?
Best regards,
Krzysztof
next prev parent reply other threads:[~2017-01-25 18:51 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20170125115101eucas1p1f337cfef7d1ed8ff8cafcac3c93e9aa1@eucas1p1.samsung.com>
2017-01-25 11:50 ` [PATCH 0/7] Pad retentions support for Exynos5433 Marek Szyprowski
2017-01-25 11:50 ` [PATCH 1/7] soc: samsung: pmu: Add dummy support for Exynos5433 SoC Marek Szyprowski
2017-01-25 17:30 ` Krzysztof Kozlowski
2017-01-25 11:50 ` [PATCH 2/7] pinctrl: samsung: Ensure that pad retention is disabled on driver init Marek Szyprowski
2017-01-25 17:38 ` Krzysztof Kozlowski
2017-01-25 11:50 ` [PATCH 3/7] pinctrl: samsung: Add support for pad retention control for Exynos5433 SoCs Marek Szyprowski
2017-01-25 18:51 ` Krzysztof Kozlowski [this message]
2017-01-25 11:50 ` [PATCH 4/7] arm64: dts: exynos: Add clocks to Exynos5433 LPASS module Marek Szyprowski
2017-01-25 19:50 ` Krzysztof Kozlowski
2017-01-26 7:18 ` Marek Szyprowski
2017-01-26 8:40 ` Krzysztof Kozlowski
2017-01-26 8:44 ` Marek Szyprowski
2017-01-25 11:50 ` [PATCH 5/7] mfd: exynos-lpass: Remove pad retention control Marek Szyprowski
2017-01-25 19:51 ` Krzysztof Kozlowski
2017-01-26 9:27 ` Sylwester Nawrocki
2017-01-25 11:50 ` [PATCH 6/7] mfd: exynos-lpass: Add support for clocks Marek Szyprowski
2017-01-25 20:00 ` Krzysztof Kozlowski
2017-01-25 20:02 ` Krzysztof Kozlowski
2017-01-25 11:50 ` [PATCH 7/7] mfd: exynos-lpass: Add runtime PM support Marek Szyprowski
2017-01-25 20:04 ` 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=20170125185152.6wedhwibl2q3mlp5@kozik-lap \
--to=krzk@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
/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