Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1569713

[PATCH v3 3/7] pinctrl: samsung: Add support for pad retention control for Exynos5433 SoCs

Path csiph.com!1.us.feeder.erje.net!feeder.erje.net!2.eu.feeder.erje.net!news.roellig-ltd.de!open-news-network.org!weretis.net!feeder4.news.weretis.net!news.mixmin.net!aioe.org!bofh.it!news.nic.it!robomod
From Marek Szyprowski <m.szyprowski@samsung.com>
Newsgroups linux.kernel
Subject [PATCH v3 3/7] pinctrl: samsung: Add support for pad retention control for Exynos5433 SoCs
Date Mon, 30 Jan 2017 14:00:03 +0100
Message-ID <t5jIT-45O-41@gated-at.bofh.it> (permalink)
References <t5jzb-42b-7@gated-at.bofh.it> <t5jIT-45O-43@gated-at.bofh.it> <t5jzb-42b-7@gated-at.bofh.it>
X-Original-To linux-gpio@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, linux-kernel@vger.kernel.org
X-Auditid cbfec7ef-f79d26d00000420c-d8-588f33d1ff43
X-Mailer git-send-email 1.9.1
X-Brightmail-Tracker H4sIAAAAAAAAA+NgFnrMIsWRmVeSWpSXmKPExsWy7djPc7oXjfsjDI73G1hsnLGe1eL8+Q3s Fve/HmW0mPJnOZPFpsfXWC02z//DaHF51xw2ixnn9zFZrD1yl93i8Jt2VotVu/4wOnB77Jx1 l91j06pONo871/aweWxeUu/Rt2UVo8fnTXIBbFFcNimpOZllqUX6dglcGS9OzWUqeGVUMWdr C2sD40ztLkZODgkBE4ldt1awQdhiEhfurQeyuTiEBJYxSvzre8EO4XxmlDh79TkTTMfRQ40s cFVPP92BchqYJGY0LgKbxSZgKNH1tgtslohAO6PE3b4OJhCHWWATk0TbkhPMIFXCAqkSl15+ YQWxWQRUJW6uegoW5xXwkOjfNIMVYp+cxMljk8FsTgFPiS1PDzGDDJIQmM4u0b36A9AKDiBH VmLTAWaIeheJx61n2SFsYYlXx7dA2TISnR0HoX7oZ5RoaoWGwAxGiXNveSFsa4nDxy+C7WIW 4JOYtG06M8R4XomONiGIEg+J3jOdUGMcJX5t/8UM8f0cRol5s34wT2CUWcDIsIpRJLW0ODc9 tdhQrzgxt7g0L10vOT93EyMw6k//O/5+B+PT5pBDjAIcjEo8vA2CfRFCrIllxZW5hxglOJiV RHhPqvZHCPGmJFZWpRblxxeV5qQWH2KU5mBREufdu+BKuJBAemJJanZqakFqEUyWiYNTqoGx fl6RuZpD5U3FK9/yY1pWOy1Yv1x1q/H7KVJl3uv7l0k9XDHbe9oBp5z+vVxBB44XZ0w8aCMo NNtx9rQg3pY/DiEtkh8mGoqIPL2S8SvYN5pnIierkoXS7m+sn6qSw/7zm255andv1sXMcuVH 34/xb1Of5cL5KKJw27ee7wJqVSGT3K71t15SYinOSDTUYi4qTgQArQxP6/YCAAA=
X-Brightmail-Tracker H4sIAAAAAAAAA+NgFmpmkeLIzCtJLcpLzFFi42I5/e/4VV1Bk/4Ig2dTzC02zljPanH+/AZ2 i/tfjzJaTPmznMli0+NrrBab5/9htLi8aw6bxYzz+5gs1h65y25x+E07q8WqXX8YHbg9ds66 y+6xaVUnm8eda3vYPDYvqffo27KK0ePzJrkAtig3m4zUxJTUIoXUvOT8lMy8dFul0BA3XQsl hbzE3FRbpQhd35AgJYWyxJxSIM/IAA04OAe4Byvp2yW4Zbw4NZep4JVRxZytLawNjDO1uxg5 OSQETCSOHmpkgbDFJC7cW8/WxcjFISSwhFHi8vdNUE4Tk8SVpYfAqtgEDCW63naBJUQE2hkl Xt++xgTiMAtsYZLo2nSRHaRKWCBV4srcz4wgNouAqsTNVU+ZQWxeAQ+J/k0zWCH2yUmcPDYZ zOYU8JTY8vQQWI0QUM35G/9ZJjDyLmBkWMUoklpanJueW2yoV5yYW1yal66XnJ+7iREYAduO /dy8g/HSxuBDjAIcjEo8vDeE+yKEWBPLiitzDzFKcDArifCeVO2PEOJNSaysSi3Kjy8qzUkt PsRoCnTURGYp0eR8YHTmlcQbmhiaWxoaGVtYmBsZKYnzlny4Ei4kkJ5YkpqdmlqQWgTTx8TB KdXAKPH3c8GNZRO+vX55pFVtawDHjuM33x0xCtDP+bNE70lg0f1926adSlT8c/me/PLVVv4z +KbN2N10NjpCZOee88IMkh76tcJLdT/KFHNHKnz9sOXlm+L3O7TKVlXzCXyeVKt0/daDjg/K nxdPrUy+UL4taRdPfkJU7zl/ru74tHrPN1tCD7B0v1JiKc5INNRiLipOBACxdx95lgIAAA==
X-Mtr 20000000000000000@CPGS
X-Cms-Mailid 20170130123838eucas1p1fdae7ffe2af981607ec389f27c46f689
X-Msg-Generator CA
X-Sender-IP 182.198.249.179
X-Local-Sender Marek SzyprowskiSRPOL-Kernel (TP)삼성전자Senior Software Engineer
X-Global-Sender Marek SzyprowskiSRPOL-Kernel (TP)Samsung ElectronicsSenior Software Engineer
X-Sender-Code C10EHQC10CD02CD027392
Cms-Type 201P
X-Hopcount 7
X-Cms-Rootmailid 20170130123838eucas1p1fdae7ffe2af981607ec389f27c46f689
X-Rootmtr 20170130123838eucas1p1fdae7ffe2af981607ec389f27c46f689
Sender robomod@news.nic.it
List-ID <linux-kernel.vger.kernel.org>
X-Mailing-List linux-kernel@vger.kernel.org
Approved robomod@news.nic.it
Lines 153
Organization linux.* mail to news gateway
X-Original-Cc Marek Szyprowski <m.szyprowski@samsung.com>, Sylwester Nawrocki <s.nawrocki@samsung.com>, Krzysztof Kozlowski <krzk@kernel.org>, Linus Walleij <linus.walleij@linaro.org>, Tomasz Figa <tomasz.figa@gmail.com>, Lee Jones <lee.jones@linaro.org>, Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
X-Original-Date Mon, 30 Jan 2017 13:38:24 +0100
X-Original-Message-ID <1485779908-32147-4-git-send-email-m.szyprowski@samsung.com>
X-Original-References <1485779908-32147-1-git-send-email-m.szyprowski@samsung.com> <CGME20170130123838eucas1p1fdae7ffe2af981607ec389f27c46f689@eucas1p1.samsung.com> <1485779908-32147-1-git-send-email-m.szyprowski@samsung.com>
X-Original-Sender linux-kernel-owner@vger.kernel.org
Xref csiph.com linux.kernel:1569713

Show key headers only | View raw


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>
Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org>
---
 drivers/pinctrl/samsung/pinctrl-exynos.c | 58 ++++++++++++++++++++++++++++++++
 1 file changed, 58 insertions(+)

diff --git a/drivers/pinctrl/samsung/pinctrl-exynos.c b/drivers/pinctrl/samsung/pinctrl-exynos.c
index fa3802970570..7b0e6cc35e04 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	 = EXYNOS_WAKEUP_FROM_LOWPWR,
+	.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	 = EXYNOS_WAKEUP_FROM_LOWPWR,
+	.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	 = EXYNOS_WAKEUP_FROM_LOWPWR,
+	.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,
 	},
 };
 
-- 
1.9.1

Back to linux.kernel | Previous | Next | Find similar | Unroll thread


Thread

[PATCH v3 3/7] pinctrl: samsung: Add support for pad retention control  for Exynos5433 SoCs Marek Szyprowski <m.szyprowski@samsung.com> - 2017-01-30 14:00 +0100

csiph-web