[PATCH v4 6/7] arm/imx6q: add device tree machine support
Shawn Guo
shawn.guo at freescale.com
Fri Sep 30 10:32:02 EDT 2011
On Fri, Sep 30, 2011 at 10:01:56AM +0100, Jamie Iles wrote:
> Hi Shawn,
>
> On Wed, Sep 28, 2011 at 05:06:47PM +0800, Shawn Guo wrote:
> > It adds generic device tree based machine support for imx6q.
> >
> > Signed-off-by: Shawn Guo <shawn.guo at linaro.org>
> > ---
> [...]
> > diff --git a/arch/arm/mach-imx/mach-imx6q.c
> > b/arch/arm/mach-imx/mach-imx6q.c
> > new file mode 100644
> > index 0000000..8bf5fa3
> > --- /dev/null
> > +++ b/arch/arm/mach-imx/mach-imx6q.c
> [...]
> > +static void __init imx6q_gpio_add_irq_domain(struct device_node *np,
> > + struct device_node *interrupt_parent)
> > +{
> > + static int gpio_irq_base = MXC_GPIO_IRQ_START + ARCH_NR_GPIOS -
> > + 32 * 7; /* imx6q gets 7 gpio ports */
> > +
> > + irq_domain_add_simple(np, gpio_irq_base);
> > + gpio_irq_base += 32;
>
> Doesn't this rely on imx6q_gpio_add_irq_domain() being called for each
> gpio bank in the order that they appear in the device tree (and that the
> dt is correctly ordered)?
>
Not really. In case of DT, gpio core will dynamically assign gpio
range from the end of total number (MXC_GPIO_IRQ_START + ARCH_NR_GPIOS
for imx case) for each gpio bank that gets probed. Supposing we have
gpio0 ~ gpio6 sorted in dts, we will have the following gpio ranges
assigned by gpio core.
gpio0: MXC_GPIO_IRQ_START + ARCH_NR_GPIOS - 32
gpio1: MXC_GPIO_IRQ_START + ARCH_NR_GPIOS - 32 * 2
...
gpio6: MXC_GPIO_IRQ_START + ARCH_NR_GPIOS - 32 * 7
Regards,
Shawn
> > +}
> > +
> > +static const struct of_device_id imx6q_irq_match[] __initconst = {
> > + { .compatible = "arm,cortex-a9-gic", .data = gic_of_init, },
> > + { .compatible = "fsl,imx6q-gpio", .data = imx6q_gpio_add_irq_domain, },
> > + { /* sentinel */ }
> > +};
> > +
> > +static void __init imx6q_init_irq(void)
> > +{
> > + l2x0_of_init(0, ~0UL);
> > + imx_src_init();
> > + imx_gpc_init();
> > + of_irq_init(imx6q_irq_match);
> > +}
More information about the linux-arm-kernel
mailing list