From: Pankaj Dubey <pankaj.dubey@samsung.com> To: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: rmk+kernel@armlinux.org.uk, arnd@arndb.de, horms@verge.net.au, magnus.damm@gmail.com, geert+renesas@glider.be, vireshk@kernel.org, shiraz.linux.kernel@gmail.com, krzk@kernel.org, thomas.ab@samsung.com, Pankaj Dubey <pankaj.dubey@samsung.com>, Jisheng Zhang <jszhang@marvell.com>, Russell King <linux@armlinux.org.uk>, Dinh Nguyen <dinguyen@opensource.altera.com>, Patrice Chotard <patrice.chotard@st.com>, Linus Walleij <linus.walleij@linaro.org>, Liviu Dudau <liviu.dudau@arm.com>, Ray Jui <rjui@broadcom.com>, Stephen Warren <swarren@wwwdotorg.org>, Heiko Stuebner <heiko@sntech.de>, Shawn Guo <shawnguo@kernel.org>, Michal Simek <michal.simek@xilinx.com>, Wei Xu <xuwei5@hisilicon.com>, Andrew Lunn <andrew@lunn.ch>, Jun Nie <jun.nie@linaro.org> Subject: [PATCH 01/16] ARM: scu: Provide support for parsing SCU device node to enable SCU Date: Mon, 14 Nov 2016 10:31:56 +0530 [thread overview] Message-ID: <1479099731-28108-2-git-send-email-pankaj.dubey@samsung.com> (raw) In-Reply-To: <1479099731-28108-1-git-send-email-pankaj.dubey@samsung.com> Many platforms are duplicating code for enabling SCU, lets add common code to enable SCU by parsing SCU device node so the duplication in each platform can be avoided. CC: Krzysztof Kozlowski <krzk@kernel.org> CC: Jisheng Zhang <jszhang@marvell.com> CC: Russell King <linux@armlinux.org.uk> CC: Dinh Nguyen <dinguyen@opensource.altera.com> CC: Patrice Chotard <patrice.chotard@st.com> CC: Linus Walleij <linus.walleij@linaro.org> CC: Liviu Dudau <liviu.dudau@arm.com> CC: Ray Jui <rjui@broadcom.com> CC: Stephen Warren <swarren@wwwdotorg.org> CC: Heiko Stuebner <heiko@sntech.de> CC: Shawn Guo <shawnguo@kernel.org> CC: Michal Simek <michal.simek@xilinx.com> CC: Wei Xu <xuwei5@hisilicon.com> CC: Andrew Lunn <andrew@lunn.ch> CC: Jun Nie <jun.nie@linaro.org> Suggested-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Pankaj Dubey <pankaj.dubey@samsung.com> --- arch/arm/include/asm/smp_scu.h | 4 +++ arch/arm/kernel/smp_scu.c | 56 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) diff --git a/arch/arm/include/asm/smp_scu.h b/arch/arm/include/asm/smp_scu.h index bfe163c..fdeec07 100644 --- a/arch/arm/include/asm/smp_scu.h +++ b/arch/arm/include/asm/smp_scu.h @@ -39,8 +39,12 @@ static inline int scu_power_mode(void __iomem *scu_base, unsigned int mode) #if defined(CONFIG_SMP) && defined(CONFIG_HAVE_ARM_SCU) void scu_enable(void __iomem *scu_base); +void __iomem *of_scu_get_base(void); +int of_scu_enable(void); #else static inline void scu_enable(void __iomem *scu_base) {} +static inline void __iomem *of_scu_get_base(void) {return NULL; } +static inline int of_scu_enable(void) {return 0; } #endif #endif diff --git a/arch/arm/kernel/smp_scu.c b/arch/arm/kernel/smp_scu.c index 72f9241..d0ac3ed 100644 --- a/arch/arm/kernel/smp_scu.c +++ b/arch/arm/kernel/smp_scu.c @@ -10,6 +10,7 @@ */ #include <linux/init.h> #include <linux/io.h> +#include <linux/of_address.h> #include <asm/smp_plat.h> #include <asm/smp_scu.h> @@ -70,6 +71,61 @@ void scu_enable(void __iomem *scu_base) */ flush_cache_all(); } + +static const struct of_device_id scu_match[] = { + { .compatible = "arm,cortex-a9-scu", }, + { .compatible = "arm,cortex-a5-scu", }, + { } +}; + +/* + * Helper API to get SCU base address + * In case platform DT do not have SCU node, or iomap fails + * this call will fallback and will try to map via call to + * scu_a9_get_base. + * This will return ownership of scu_base to the caller + */ +void __iomem *of_scu_get_base(void) +{ + unsigned long base = 0; + struct device_node *np; + void __iomem *scu_base; + + np = of_find_matching_node(NULL, scu_match); + scu_base = of_iomap(np, 0); + of_node_put(np); + if (!scu_base) { + pr_err("%s failed to map scu_base via DT\n", __func__); + if (scu_a9_has_base()) { + base = scu_a9_get_base(); + scu_base = ioremap(base, SZ_4K); + } + if (!scu_base) { + pr_err("%s failed to map scu_base\n", __func__); + return IOMEM_ERR_PTR(-ENOMEM); + } + } + return scu_base; +} + +/* + * Enable SCU via mapping scu_base DT + * If scu_base mapped successfully scu will be enabled and in case of + * failure if will return non-zero error code + */ +int of_scu_enable(void) +{ + void __iomem *scu_base; + + scu_base = of_scu_get_base(); + if (!IS_ERR(scu_base)) { + scu_enable(scu_base); + iounmap(scu_base); + return 0; + } + return PTR_ERR(scu_base); +} + #endif /* -- 2.7.4
WARNING: multiple messages have this Message-ID (diff)
From: pankaj.dubey@samsung.com (Pankaj Dubey) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH 01/16] ARM: scu: Provide support for parsing SCU device node to enable SCU Date: Mon, 14 Nov 2016 10:31:56 +0530 [thread overview] Message-ID: <1479099731-28108-2-git-send-email-pankaj.dubey@samsung.com> (raw) In-Reply-To: <1479099731-28108-1-git-send-email-pankaj.dubey@samsung.com> Many platforms are duplicating code for enabling SCU, lets add common code to enable SCU by parsing SCU device node so the duplication in each platform can be avoided. CC: Krzysztof Kozlowski <krzk@kernel.org> CC: Jisheng Zhang <jszhang@marvell.com> CC: Russell King <linux@armlinux.org.uk> CC: Dinh Nguyen <dinguyen@opensource.altera.com> CC: Patrice Chotard <patrice.chotard@st.com> CC: Linus Walleij <linus.walleij@linaro.org> CC: Liviu Dudau <liviu.dudau@arm.com> CC: Ray Jui <rjui@broadcom.com> CC: Stephen Warren <swarren@wwwdotorg.org> CC: Heiko Stuebner <heiko@sntech.de> CC: Shawn Guo <shawnguo@kernel.org> CC: Michal Simek <michal.simek@xilinx.com> CC: Wei Xu <xuwei5@hisilicon.com> CC: Andrew Lunn <andrew@lunn.ch> CC: Jun Nie <jun.nie@linaro.org> Suggested-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Pankaj Dubey <pankaj.dubey@samsung.com> --- arch/arm/include/asm/smp_scu.h | 4 +++ arch/arm/kernel/smp_scu.c | 56 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) diff --git a/arch/arm/include/asm/smp_scu.h b/arch/arm/include/asm/smp_scu.h index bfe163c..fdeec07 100644 --- a/arch/arm/include/asm/smp_scu.h +++ b/arch/arm/include/asm/smp_scu.h @@ -39,8 +39,12 @@ static inline int scu_power_mode(void __iomem *scu_base, unsigned int mode) #if defined(CONFIG_SMP) && defined(CONFIG_HAVE_ARM_SCU) void scu_enable(void __iomem *scu_base); +void __iomem *of_scu_get_base(void); +int of_scu_enable(void); #else static inline void scu_enable(void __iomem *scu_base) {} +static inline void __iomem *of_scu_get_base(void) {return NULL; } +static inline int of_scu_enable(void) {return 0; } #endif #endif diff --git a/arch/arm/kernel/smp_scu.c b/arch/arm/kernel/smp_scu.c index 72f9241..d0ac3ed 100644 --- a/arch/arm/kernel/smp_scu.c +++ b/arch/arm/kernel/smp_scu.c @@ -10,6 +10,7 @@ */ #include <linux/init.h> #include <linux/io.h> +#include <linux/of_address.h> #include <asm/smp_plat.h> #include <asm/smp_scu.h> @@ -70,6 +71,61 @@ void scu_enable(void __iomem *scu_base) */ flush_cache_all(); } + +static const struct of_device_id scu_match[] = { + { .compatible = "arm,cortex-a9-scu", }, + { .compatible = "arm,cortex-a5-scu", }, + { } +}; + +/* + * Helper API to get SCU base address + * In case platform DT do not have SCU node, or iomap fails + * this call will fallback and will try to map via call to + * scu_a9_get_base. + * This will return ownership of scu_base to the caller + */ +void __iomem *of_scu_get_base(void) +{ + unsigned long base = 0; + struct device_node *np; + void __iomem *scu_base; + + np = of_find_matching_node(NULL, scu_match); + scu_base = of_iomap(np, 0); + of_node_put(np); + if (!scu_base) { + pr_err("%s failed to map scu_base via DT\n", __func__); + if (scu_a9_has_base()) { + base = scu_a9_get_base(); + scu_base = ioremap(base, SZ_4K); + } + if (!scu_base) { + pr_err("%s failed to map scu_base\n", __func__); + return IOMEM_ERR_PTR(-ENOMEM); + } + } + return scu_base; +} + +/* + * Enable SCU via mapping scu_base DT + * If scu_base mapped successfully scu will be enabled and in case of + * failure if will return non-zero error code + */ +int of_scu_enable(void) +{ + void __iomem *scu_base; + + scu_base = of_scu_get_base(); + if (!IS_ERR(scu_base)) { + scu_enable(scu_base); + iounmap(scu_base); + return 0; + } + return PTR_ERR(scu_base); +} + #endif /* -- 2.7.4
next prev parent reply other threads:[~2016-11-14 4:59 UTC|newest] Thread overview: 97+ messages / expand[flat|nested] mbox.gz Atom feed top 2016-11-14 5:01 [PATCH 00/16] Provide support of generic function for SCU enable Pankaj Dubey 2016-11-14 5:01 ` Pankaj Dubey 2016-11-14 5:01 ` Pankaj Dubey [this message] 2016-11-14 5:01 ` [PATCH 01/16] ARM: scu: Provide support for parsing SCU device node to enable SCU Pankaj Dubey 2016-11-14 6:12 ` Jisheng Zhang 2016-11-14 6:12 ` Jisheng Zhang 2016-11-14 6:54 ` Jisheng Zhang 2016-11-14 6:54 ` Jisheng Zhang 2016-11-14 8:23 ` pankaj.dubey 2016-11-14 8:23 ` pankaj.dubey 2016-11-14 8:47 ` Jisheng Zhang 2016-11-14 8:47 ` Jisheng Zhang 2016-11-14 8:40 ` pankaj.dubey 2016-11-14 8:40 ` pankaj.dubey 2016-11-14 12:03 ` Arnd Bergmann 2016-11-14 12:03 ` Arnd Bergmann 2016-11-14 13:50 ` Russell King - ARM Linux 2016-11-14 13:50 ` Russell King - ARM Linux 2016-11-14 14:37 ` Arnd Bergmann 2016-11-14 14:37 ` Arnd Bergmann 2016-11-14 14:51 ` Russell King - ARM Linux 2016-11-14 14:51 ` Russell King - ARM Linux 2016-11-17 4:20 ` pankaj.dubey 2016-11-17 4:20 ` pankaj.dubey 2016-11-17 17:03 ` Arnd Bergmann 2016-11-17 17:03 ` Arnd Bergmann 2016-11-18 3:24 ` pankaj.dubey 2016-11-18 3:24 ` pankaj.dubey 2016-11-18 12:14 ` Arnd Bergmann 2016-11-18 12:14 ` Arnd Bergmann 2016-11-18 12:48 ` Russell King - ARM Linux 2016-11-18 12:48 ` Russell King - ARM Linux 2016-11-18 13:32 ` Arnd Bergmann 2016-11-18 13:32 ` Arnd Bergmann 2016-12-08 15:18 ` Pankaj Dubey 2016-12-08 15:18 ` Pankaj Dubey 2016-11-14 13:48 ` Russell King - ARM Linux 2016-11-14 13:48 ` Russell King - ARM Linux 2016-11-17 2:22 ` pankaj.dubey 2016-11-17 2:22 ` pankaj.dubey 2016-11-14 5:01 ` [PATCH 02/16] ARM: EXYNOS: use generic API " Pankaj Dubey 2016-11-14 5:01 ` Pankaj Dubey 2016-11-14 5:01 ` Pankaj Dubey 2016-11-15 18:59 ` Krzysztof Kozlowski 2016-11-15 18:59 ` Krzysztof Kozlowski 2016-11-17 2:15 ` pankaj.dubey 2016-11-17 2:15 ` pankaj.dubey 2016-11-14 5:01 ` [PATCH 03/16] ARM: berlin: use generic API for enabling SCU Pankaj Dubey 2016-11-14 5:01 ` Pankaj Dubey 2016-11-14 8:51 ` Jisheng Zhang 2016-11-14 8:51 ` Jisheng Zhang 2016-11-14 16:20 ` Pankaj Dubey 2016-11-14 16:20 ` Pankaj Dubey 2016-11-14 5:01 ` [PATCH 04/16] ARM: realview: " Pankaj Dubey 2016-11-14 5:01 ` Pankaj Dubey 2016-11-14 11:56 ` Arnd Bergmann 2016-11-14 11:56 ` Arnd Bergmann 2016-11-14 12:06 ` pankaj.dubey 2016-11-14 12:06 ` pankaj.dubey 2016-11-14 14:28 ` Arnd Bergmann 2016-11-14 14:28 ` Arnd Bergmann 2016-11-14 13:19 ` Pankaj Dubey 2016-11-14 13:19 ` Pankaj Dubey 2016-11-14 5:02 ` [PATCH 05/16] ARM: socfpga: " Pankaj Dubey 2016-11-14 5:02 ` Pankaj Dubey 2016-11-14 5:02 ` [PATCH 06/16] ARM: STi: " Pankaj Dubey 2016-11-14 5:02 ` Pankaj Dubey 2016-11-14 5:02 ` [PATCH 07/16] ARM: ux500: " Pankaj Dubey 2016-11-14 5:02 ` Pankaj Dubey 2016-11-14 5:02 ` [PATCH 08/16] ARM: vexpress: " Pankaj Dubey 2016-11-14 5:02 ` Pankaj Dubey 2016-11-16 14:34 ` Sudeep Holla 2016-11-16 14:34 ` Sudeep Holla 2016-11-17 2:12 ` pankaj.dubey 2016-11-17 2:12 ` pankaj.dubey 2016-11-14 5:02 ` [PATCH 09/16] ARM: BCM: " Pankaj Dubey 2016-11-14 5:02 ` Pankaj Dubey 2016-11-14 6:10 ` Florian Fainelli 2016-11-14 6:10 ` Florian Fainelli 2016-11-14 5:02 ` [PATCH 10/16] ARM: tegra: " Pankaj Dubey 2016-11-14 5:02 ` Pankaj Dubey 2016-11-14 5:02 ` [PATCH 11/16] ARM: rockchip: " Pankaj Dubey 2016-11-14 5:02 ` Pankaj Dubey 2016-11-14 5:02 ` [PATCH 12/16] ARM: imx: " Pankaj Dubey 2016-11-14 5:02 ` Pankaj Dubey 2016-11-14 14:26 ` Shawn Guo 2016-11-14 14:26 ` Shawn Guo 2016-11-17 4:29 ` pankaj.dubey 2016-11-17 4:29 ` pankaj.dubey 2016-11-14 5:02 ` [PATCH 13/16] ARM: zynq: " Pankaj Dubey 2016-11-14 5:02 ` Pankaj Dubey 2016-11-14 5:02 ` [PATCH 14/16] ARM: hisi: " Pankaj Dubey 2016-11-14 5:02 ` Pankaj Dubey 2016-11-14 5:02 ` [PATCH 15/16] ARM: mvebu: " Pankaj Dubey 2016-11-14 5:02 ` Pankaj Dubey 2016-11-14 5:02 ` [PATCH 16/16] ARM: zx: " Pankaj Dubey 2016-11-14 5:02 ` Pankaj Dubey
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=1479099731-28108-2-git-send-email-pankaj.dubey@samsung.com \ --to=pankaj.dubey@samsung.com \ --cc=andrew@lunn.ch \ --cc=arnd@arndb.de \ --cc=dinguyen@opensource.altera.com \ --cc=geert+renesas@glider.be \ --cc=heiko@sntech.de \ --cc=horms@verge.net.au \ --cc=jszhang@marvell.com \ --cc=jun.nie@linaro.org \ --cc=krzk@kernel.org \ --cc=linus.walleij@linaro.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux@armlinux.org.uk \ --cc=liviu.dudau@arm.com \ --cc=magnus.damm@gmail.com \ --cc=michal.simek@xilinx.com \ --cc=patrice.chotard@st.com \ --cc=rjui@broadcom.com \ --cc=rmk+kernel@armlinux.org.uk \ --cc=shawnguo@kernel.org \ --cc=shiraz.linux.kernel@gmail.com \ --cc=swarren@wwwdotorg.org \ --cc=thomas.ab@samsung.com \ --cc=vireshk@kernel.org \ --cc=xuwei5@hisilicon.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: linkBe 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.