* Marc Zyngier <marc.zyng...@arm.com> [150115 07:24]:
> --- a/arch/arm/mach-omap2/omap4-common.c
> +++ b/arch/arm/mach-omap2/omap4-common.c
> @@ -256,6 +256,38 @@ static int __init omap4_sar_ram_init(void)
>  }
>  omap_early_initcall(omap4_sar_ram_init);
>  
> +static struct of_device_id gic_match[] = {
> +     { .compatible = "arm,cortex-a9-gic", },
> +     { .compatible = "arm,cortex-a15-gic", },
> +     { },
> +};
> +
> +static struct device_node *gic_node;
> +
> +unsigned int omap4_xlate_irq(unsigned int hwirq)
> +{
> +     struct of_phandle_args irq_data;
> +     unsigned int irq;
> +
> +     if (!gic_node)
> +             gic_node = of_find_matching_node(NULL, gic_match);
> +
> +     if (WARN_ON(!gic_node))
> +             return hwirq;
> +
> +     irq_data.np = gic_node;
> +     irq_data.args_count = 3;
> +     irq_data.args[0] = 0;
> +     irq_data.args[1] = hwirq - OMAP44XX_IRQ_GIC_START;
> +     irq_data.args[2] = IRQ_TYPE_LEVEL_HIGH;
> +
> +     irq = irq_create_of_mapping(&irq_data);
> +     if (WARN_ON(!irq))
> +             irq = hwirq;
> +
> +     return irq;
> +}
> +
>  void __init omap_gic_of_init(void)
>  {
>       struct device_node *np;

Thanks for the quick fix, this is is fine with me as long as we
don't have other legacy users. At least I did not find any other
legacy users based on a quick grep.

> --- a/arch/arm/mach-omap2/omap_hwmod_54xx_data.c
> +++ b/arch/arm/mach-omap2/omap_hwmod_54xx_data.c
> @@ -288,6 +288,7 @@ static struct omap_hwmod omap54xx_dma_system_hwmod = {
>       .class          = &omap54xx_dma_hwmod_class,
>       .clkdm_name     = "dma_clkdm",
>       .mpu_irqs       = omap54xx_dma_system_irqs,
> +     .xlate_irq      = omap4_xlate_irq,
>       .main_clk       = "l3_iclk_div",
>       .prcm = {
>               .omap4 = {

We could now drop the legacy DMA init completely for omap4 and later.
But that would require patching the legacy DMA for the exported
functions.. So probably not doable for the -rc series and does not
solve the issue with other legacy IRQ users.

> --- a/arch/arm/mach-omap2/twl-common.c
> +++ b/arch/arm/mach-omap2/twl-common.c
> @@ -71,9 +71,12 @@ void __init omap4_pmic_init(const char *pmic_type,
>                   struct i2c_board_info *devices, int nr_devices)
>  {
>       /* PMIC part*/
> +     unsigned int irq;
> +
>       omap_mux_init_signal("sys_nirq1", OMAP_PIN_INPUT_PULLUP | 
> OMAP_PIN_OFF_WAKEUPENABLE);
>       omap_mux_init_signal("fref_clk0_out.sys_drm_msecure", OMAP_PIN_OUTPUT);
> -     omap_pmic_init(1, 400, pmic_type, 7 + OMAP44XX_IRQ_GIC_START, 
> pmic_data);
> +     irq = omap4_xlate_irq(7 + OMAP44XX_IRQ_GIC_START);
> +     omap_pmic_init(1, 400, pmic_type, irq, pmic_data);
>  
>       /* Register additional devices on i2c1 bus if needed */
>       if (devices)

FYI, I posted a patch yesterday to drop the legacy init code
for twl6040 as the legacy omap4_pmic_init() is no longer used.
No need to change this patch though.

So unless somebody has better ideas for the fix for -rc series,
I'll queue this with the twl6040 code removal patch.

Regards,

Tony
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to