From: Arnd Bergmann <arnd@arndb.de> To: Viresh Kumar <viresh.kumar@linaro.org> Cc: devicetree-discuss@lists.ozlabs.org, spear-devel@list.st.com, arm@kernel.org, olof@lixom.net, sr@denx.de, linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH 12/14] ARM: SPEAr3xx: shirq: simplify and move the shared irq multiplexor to DT Date: Mon, 12 Nov 2012 15:09:44 +0000 [thread overview] Message-ID: <201211121509.45176.arnd@arndb.de> (raw) In-Reply-To: <71bbb1faf3cd048953dcf24ef9ce6d9dd37fe8e1.1352608333.git.viresh.kumar@linaro.org> On Sunday 11 November 2012, Viresh Kumar wrote: > From: Shiraz Hashim <shiraz.hashim@st.com> > > SPEAr3xx architecture includes shared/multiplexed irqs for certain set > of devices. The multiplexor provides a single interrupt to parent > interrupt controller (VIC) on behalf of a group of devices. > > There can be multiple groups available on SPEAr3xx variants but not > exceeding 4. The number of devices in a group can differ, further they > may share same set of status/mask registers spanning across different > bit masks. Also in some cases the group may not have enable or other > registers. This makes software little complex. > > Present implementation was non-DT and had few complex data structures to > decipher banks, number of irqs supported, mask and registers involved. > > This patch simplifies the overall design and convert it in to DT. It > also removes all registration from individual SoC files and bring them > in to common shirq.c. > > Also updated the corresponding documentation for DT binding of shirq. Looks basically ok, but I have a few comments. > Signed-off-by: Shiraz Hashim <shiraz.hashim@st.com> > Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> > --- > .../devicetree/bindings/arm/spear/shirq.txt | 48 ++++ > arch/arm/mach-spear3xx/include/mach/irqs.h | 10 +- > arch/arm/mach-spear3xx/spear300.c | 103 ------- > arch/arm/mach-spear3xx/spear310.c | 202 -------------- > arch/arm/mach-spear3xx/spear320.c | 204 -------------- > arch/arm/mach-spear3xx/spear3xx.c | 4 + > arch/arm/plat-spear/include/plat/shirq.h | 35 +-- > arch/arm/plat-spear/shirq.c | 305 +++++++++++++++++---- I guess it would be nice to move this to drivers/irqchip/st-shirq.c now that we have introduced that directory. > static const char * const spear320_dt_board_compat[] = { > diff --git a/arch/arm/mach-spear3xx/spear3xx.c b/arch/arm/mach-spear3xx/spear3xx.c > index 98144ba..781aec9 100644 > --- a/arch/arm/mach-spear3xx/spear3xx.c > +++ b/arch/arm/mach-spear3xx/spear3xx.c > @@ -121,6 +122,9 @@ struct sys_timer spear3xx_timer = { > > static const struct of_device_id vic_of_match[] __initconst = { > { .compatible = "arm,pl190-vic", .data = vic_of_init, }, > + { .compatible = "st,spear300-shirq", .data = spear3xx_shirq_of_init, }, > + { .compatible = "st,spear310-shirq", .data = spear3xx_shirq_of_init, }, > + { .compatible = "st,spear320-shirq", .data = spear3xx_shirq_of_init, }, > { /* Sentinel */ } > }; You list three "compatible" values here with the same init function, and then > +int __init spear3xx_shirq_of_init(struct device_node *np, > + struct device_node *parent) > +{ > + struct spear_shirq **shirq_blocks; > + void __iomem *base; > + int block_nr, ret; > + > + base = of_iomap(np, 0); > + if (!base) { > + pr_err("%s: failed to map shirq registers\n", __func__); > + return -ENXIO; > + } > + > + if (of_device_is_compatible(np, "st,spear300-shirq")) { > + shirq_blocks = spear300_shirq_blocks; > + block_nr = ARRAY_SIZE(spear300_shirq_blocks); > + } else if (of_device_is_compatible(np, "st,spear310-shirq")) { > + shirq_blocks = spear310_shirq_blocks; > + block_nr = ARRAY_SIZE(spear310_shirq_blocks); > + } else if (of_device_is_compatible(np, "st,spear320-shirq")) { > + shirq_blocks = spear320_shirq_blocks; > + block_nr = ARRAY_SIZE(spear320_shirq_blocks); > + } else { > + pr_err("%s: unknown platform\n", __func__); > + ret = -EINVAL; > + goto unmap; > + } > + > + ret = shirq_init(shirq_blocks, block_nr, base, np); > + if (ret) { > + pr_err("%s: shirq initialization failed\n", __func__); > + goto unmap; > + } > + > + return ret; > + > +unmap: > + iounmap(base); > + return ret; > +} In that multiplex between thre three again. I think it would be cleaner to have three separate functions and move the call to of_iomap into shirq_init. Arnd
WARNING: multiple messages have this Message-ID (diff)
From: arnd@arndb.de (Arnd Bergmann) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH 12/14] ARM: SPEAr3xx: shirq: simplify and move the shared irq multiplexor to DT Date: Mon, 12 Nov 2012 15:09:44 +0000 [thread overview] Message-ID: <201211121509.45176.arnd@arndb.de> (raw) In-Reply-To: <71bbb1faf3cd048953dcf24ef9ce6d9dd37fe8e1.1352608333.git.viresh.kumar@linaro.org> On Sunday 11 November 2012, Viresh Kumar wrote: > From: Shiraz Hashim <shiraz.hashim@st.com> > > SPEAr3xx architecture includes shared/multiplexed irqs for certain set > of devices. The multiplexor provides a single interrupt to parent > interrupt controller (VIC) on behalf of a group of devices. > > There can be multiple groups available on SPEAr3xx variants but not > exceeding 4. The number of devices in a group can differ, further they > may share same set of status/mask registers spanning across different > bit masks. Also in some cases the group may not have enable or other > registers. This makes software little complex. > > Present implementation was non-DT and had few complex data structures to > decipher banks, number of irqs supported, mask and registers involved. > > This patch simplifies the overall design and convert it in to DT. It > also removes all registration from individual SoC files and bring them > in to common shirq.c. > > Also updated the corresponding documentation for DT binding of shirq. Looks basically ok, but I have a few comments. > Signed-off-by: Shiraz Hashim <shiraz.hashim@st.com> > Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> > --- > .../devicetree/bindings/arm/spear/shirq.txt | 48 ++++ > arch/arm/mach-spear3xx/include/mach/irqs.h | 10 +- > arch/arm/mach-spear3xx/spear300.c | 103 ------- > arch/arm/mach-spear3xx/spear310.c | 202 -------------- > arch/arm/mach-spear3xx/spear320.c | 204 -------------- > arch/arm/mach-spear3xx/spear3xx.c | 4 + > arch/arm/plat-spear/include/plat/shirq.h | 35 +-- > arch/arm/plat-spear/shirq.c | 305 +++++++++++++++++---- I guess it would be nice to move this to drivers/irqchip/st-shirq.c now that we have introduced that directory. > static const char * const spear320_dt_board_compat[] = { > diff --git a/arch/arm/mach-spear3xx/spear3xx.c b/arch/arm/mach-spear3xx/spear3xx.c > index 98144ba..781aec9 100644 > --- a/arch/arm/mach-spear3xx/spear3xx.c > +++ b/arch/arm/mach-spear3xx/spear3xx.c > @@ -121,6 +122,9 @@ struct sys_timer spear3xx_timer = { > > static const struct of_device_id vic_of_match[] __initconst = { > { .compatible = "arm,pl190-vic", .data = vic_of_init, }, > + { .compatible = "st,spear300-shirq", .data = spear3xx_shirq_of_init, }, > + { .compatible = "st,spear310-shirq", .data = spear3xx_shirq_of_init, }, > + { .compatible = "st,spear320-shirq", .data = spear3xx_shirq_of_init, }, > { /* Sentinel */ } > }; You list three "compatible" values here with the same init function, and then > +int __init spear3xx_shirq_of_init(struct device_node *np, > + struct device_node *parent) > +{ > + struct spear_shirq **shirq_blocks; > + void __iomem *base; > + int block_nr, ret; > + > + base = of_iomap(np, 0); > + if (!base) { > + pr_err("%s: failed to map shirq registers\n", __func__); > + return -ENXIO; > + } > + > + if (of_device_is_compatible(np, "st,spear300-shirq")) { > + shirq_blocks = spear300_shirq_blocks; > + block_nr = ARRAY_SIZE(spear300_shirq_blocks); > + } else if (of_device_is_compatible(np, "st,spear310-shirq")) { > + shirq_blocks = spear310_shirq_blocks; > + block_nr = ARRAY_SIZE(spear310_shirq_blocks); > + } else if (of_device_is_compatible(np, "st,spear320-shirq")) { > + shirq_blocks = spear320_shirq_blocks; > + block_nr = ARRAY_SIZE(spear320_shirq_blocks); > + } else { > + pr_err("%s: unknown platform\n", __func__); > + ret = -EINVAL; > + goto unmap; > + } > + > + ret = shirq_init(shirq_blocks, block_nr, base, np); > + if (ret) { > + pr_err("%s: shirq initialization failed\n", __func__); > + goto unmap; > + } > + > + return ret; > + > +unmap: > + iounmap(base); > + return ret; > +} In that multiplex between thre three again. I think it would be cleaner to have three separate functions and move the call to of_iomap into shirq_init. Arnd
next prev parent reply other threads:[~2012-11-12 15:09 UTC|newest] Thread overview: 80+ messages / expand[flat|nested] mbox.gz Atom feed top 2012-11-11 4:39 [PATCH 00/14] ARM: SPEAr: DT updates Viresh Kumar 2012-11-11 4:39 ` Viresh Kumar 2012-11-11 4:39 ` [PATCH 01/14] pinctrl: SPEAr: add spi chipselect control driver Viresh Kumar 2012-11-11 4:39 ` Viresh Kumar [not found] ` <4a92290e8a3b1a19c3a5e864edfa7badfc2af5d0.1352608333.git.viresh.kumar-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> 2012-11-12 15:03 ` Arnd Bergmann 2012-11-12 15:03 ` Arnd Bergmann 2012-11-15 14:17 ` Linus Walleij 2012-11-15 14:17 ` Linus Walleij [not found] ` <CACRpkdb9tSUUGQjWdHqRr5rUSyiPgWm2i3-QZq9VbWFY2EAQeQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2012-11-15 14:19 ` Viresh Kumar 2012-11-15 14:19 ` Viresh Kumar [not found] ` <CAKohpomLRYAKJ=dNLVsjj1xf=G6xj4EcTpPmhSDvgBYUMXc1mA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2012-11-15 19:09 ` Linus Walleij 2012-11-15 19:09 ` Linus Walleij 2012-11-16 5:15 ` [PATCH 01/16] gpio: " Viresh Kumar 2012-11-16 5:15 ` Viresh Kumar [not found] ` <3702a1036f8e714e6d18e4726569bbb1eadd65bf.1353042873.git.viresh.kumar-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> 2012-11-16 8:19 ` Arnd Bergmann 2012-11-16 8:19 ` Arnd Bergmann [not found] ` <201211160819.04343.arnd-r2nGTMty4D4@public.gmane.org> 2012-11-16 8:19 ` Viresh Kumar 2012-11-16 8:19 ` Viresh Kumar 2012-11-17 23:02 ` Linus Walleij 2012-11-17 23:02 ` Linus Walleij 2012-11-11 4:39 ` [PATCH 02/14] ARM: SPEAr13xx: DT: Add spics gpio controller nodes Viresh Kumar 2012-11-11 4:39 ` Viresh Kumar [not found] ` <58a7d91cab20b924784fb5a09e16ca08e6f13318.1352608333.git.viresh.kumar-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> 2012-11-13 14:08 ` Linus Walleij 2012-11-13 14:08 ` Linus Walleij 2012-11-13 14:34 ` Viresh Kumar 2012-11-13 14:34 ` Viresh Kumar [not found] ` <CAKohpon=AVGZmR_cwUZ4=buw0kr3JVtXh51BtXteWkJ7E-f_bQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2012-11-15 14:06 ` Linus Walleij 2012-11-15 14:06 ` Linus Walleij [not found] ` <CACRpkdaJ2kCYfSP=xCRQAG2wDnkMKX9fey+ByhDDiOS==u+XwA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2012-11-15 14:08 ` Viresh Kumar 2012-11-15 14:08 ` Viresh Kumar [not found] ` <CAKohpok7-iBCoYk+aAXZPsOODyh6tp2nutC+6wYOot-bK3=wkg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2012-11-15 17:25 ` Linus Walleij 2012-11-15 17:25 ` Linus Walleij 2012-11-11 4:39 ` [PATCH 03/14] ARM: SPEAr: DT: Update pinctrl list Viresh Kumar 2012-11-11 4:39 ` Viresh Kumar 2012-11-11 4:39 ` [PATCH 04/14] ARM: SPEAr: DT: Update partition info for MTD devices Viresh Kumar 2012-11-11 4:39 ` Viresh Kumar 2012-11-11 4:39 ` [PATCH 05/14] ARM: SPEAr: DT: Fix existing DT support Viresh Kumar 2012-11-11 4:39 ` Viresh Kumar 2012-11-11 4:39 ` [PATCH 06/14] ARM: SPEAr: DT: Modify DT bindings for STMMAC Viresh Kumar 2012-11-11 4:39 ` Viresh Kumar 2012-11-11 4:39 ` [PATCH 07/14] ARM: SPEAr: DT: add uart state to fix warning Viresh Kumar 2012-11-11 4:39 ` Viresh Kumar 2012-11-11 4:39 ` [PATCH 08/14] ARM: SPEAr: DT: Update device nodes Viresh Kumar 2012-11-11 4:39 ` Viresh Kumar [not found] ` <b3925b105ee2c6fe828ef3b54928aeee02a801ae.1352608333.git.viresh.kumar-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> 2012-11-26 11:25 ` Viresh Kumar 2012-11-26 11:25 ` Viresh Kumar 2012-11-11 4:39 ` [PATCH 09/14] ARM: SPEAr1310: Move 1310 specific misc register into machine specific files Viresh Kumar 2012-11-11 4:39 ` Viresh Kumar 2012-11-11 4:39 ` [PATCH 10/14] ARM: SPEAr13xx: Remove fields not required for ssp controller Viresh Kumar 2012-11-11 4:39 ` Viresh Kumar 2012-11-11 4:39 ` [PATCH 11/14] ARM: SPEAr1310: Fix AUXDATA for compact flash controller Viresh Kumar 2012-11-11 4:39 ` Viresh Kumar 2012-11-11 4:39 ` [PATCH 12/14] ARM: SPEAr3xx: shirq: simplify and move the shared irq multiplexor to DT Viresh Kumar 2012-11-11 4:39 ` Viresh Kumar 2012-11-12 15:09 ` Arnd Bergmann [this message] 2012-11-12 15:09 ` Arnd Bergmann 2012-11-12 16:37 ` viresh kumar 2012-11-12 16:37 ` viresh kumar [not found] ` <CAOh2x=nJXVVjFmDFnTN_02PSG9hcDuXToRUzRMi5jwJqUFtgfw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2012-11-12 17:00 ` Arnd Bergmann 2012-11-12 17:00 ` Arnd Bergmann 2012-11-12 17:16 ` [PATCH] fixup! " Viresh Kumar 2012-11-12 17:16 ` Viresh Kumar 2012-11-12 17:35 ` [PATCH] ARM: SPEAr3xx: Shirq: Move shirq controller out of plat/ Viresh Kumar 2012-11-12 17:35 ` Viresh Kumar 2012-11-11 4:39 ` [PATCH 13/14] ARM: SPEAr3xx: DT: add shirq node for interrupt multiplexor Viresh Kumar 2012-11-11 4:39 ` Viresh Kumar 2012-11-11 4:39 ` [PATCH 14/14] ARM: SPEAr320: DT: Add SPEAr 320 HMI board support Viresh Kumar 2012-11-11 4:39 ` Viresh Kumar [not found] ` <cover.1352608333.git.viresh.kumar-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> 2012-11-12 15:21 ` [PATCH 00/14] ARM: SPEAr: DT updates Arnd Bergmann 2012-11-12 15:21 ` Arnd Bergmann 2012-11-12 16:39 ` viresh kumar 2012-11-12 16:39 ` viresh kumar 2012-11-12 17:18 ` Viresh Kumar 2012-11-12 17:18 ` Viresh Kumar [not found] ` <CAKohpom0kMjuHx5jO-LTPKQhy_-r4khKi7UBPB_O-50K42FOeQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2012-11-21 20:24 ` Olof Johansson 2012-11-21 20:24 ` Olof Johansson [not found] ` <20121121202405.GA15549-O5ziIzlqnXUVNXGz7ipsyg@public.gmane.org> 2012-11-22 3:19 ` Viresh Kumar 2012-11-22 3:19 ` Viresh Kumar [not found] ` <CAKohpokMUTQja6tCz1RmKXFgu+X7MGFAi1+UWLgKhpViOuiMSA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2012-11-22 9:47 ` Linus Walleij 2012-11-22 9:47 ` Linus Walleij
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=201211121509.45176.arnd@arndb.de \ --to=arnd@arndb.de \ --cc=arm@kernel.org \ --cc=devicetree-discuss@lists.ozlabs.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=olof@lixom.net \ --cc=spear-devel@list.st.com \ --cc=sr@denx.de \ --cc=viresh.kumar@linaro.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: 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.