lkml.org 
[lkml]   [2017]   [May]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.10 036/129] ARM: OMAP3: Fix smartreflex platform data regression
    Date
    4.10-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Tony Lindgren <tony@atomide.com>

    commit 179125085bd4ca70e8e028913193a93653bd12f7 upstream.

    Commit d9d9cec02835 ("ARM: OMAP2+: Remove legacy data from hwmod for
    omap3") dropped platform data that should no longer be used as we're
    booting with device tree. It turns out that smartreflex is still
    using platform data and produces the following errors during probe:

    smartreflex smartreflex.0: invalid resource
    smartreflex smartreflex.0: omap_sr_probe: ioremap fail
    smartreflex: probe of smartreflex.0 failed with error -22
    smartreflex smartreflex.1: invalid resource
    smartreflex smartreflex.1: omap_sr_probe: ioremap fail
    smartreflex: probe of smartreflex.1 failed with error -22

    Let's fix the regression by adding back the smartreflex hwmod data.
    The long term is to update the smartreflex driver to use device tree
    based probing.

    Fixes: d9d9cec02835 ("ARM: OMAP2+: Remove legacy data from hwmod
    for omap3")
    Reported-by: Adam Ford <aford173@gmail.com>
    Tested-by: Adam Ford <aford173@gmail.com>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | 20 ++++++++++++++++++++
    1 file changed, 20 insertions(+)

    --- a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
    +++ b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
    @@ -2112,11 +2112,20 @@ static struct omap_hwmod_ocp_if omap3_l4
    };

    /* L4 CORE -> SR1 interface */
    +static struct omap_hwmod_addr_space omap3_sr1_addr_space[] = {
    + {
    + .pa_start = OMAP34XX_SR1_BASE,
    + .pa_end = OMAP34XX_SR1_BASE + SZ_1K - 1,
    + .flags = ADDR_TYPE_RT,
    + },
    + { },
    +};

    static struct omap_hwmod_ocp_if omap34xx_l4_core__sr1 = {
    .master = &omap3xxx_l4_core_hwmod,
    .slave = &omap34xx_sr1_hwmod,
    .clk = "sr_l4_ick",
    + .addr = omap3_sr1_addr_space,
    .user = OCP_USER_MPU,
    };

    @@ -2124,15 +2133,25 @@ static struct omap_hwmod_ocp_if omap36xx
    .master = &omap3xxx_l4_core_hwmod,
    .slave = &omap36xx_sr1_hwmod,
    .clk = "sr_l4_ick",
    + .addr = omap3_sr1_addr_space,
    .user = OCP_USER_MPU,
    };

    /* L4 CORE -> SR1 interface */
    +static struct omap_hwmod_addr_space omap3_sr2_addr_space[] = {
    + {
    + .pa_start = OMAP34XX_SR2_BASE,
    + .pa_end = OMAP34XX_SR2_BASE + SZ_1K - 1,
    + .flags = ADDR_TYPE_RT,
    + },
    + { },
    +};

    static struct omap_hwmod_ocp_if omap34xx_l4_core__sr2 = {
    .master = &omap3xxx_l4_core_hwmod,
    .slave = &omap34xx_sr2_hwmod,
    .clk = "sr_l4_ick",
    + .addr = omap3_sr2_addr_space,
    .user = OCP_USER_MPU,
    };

    @@ -2140,6 +2159,7 @@ static struct omap_hwmod_ocp_if omap36xx
    .master = &omap3xxx_l4_core_hwmod,
    .slave = &omap36xx_sr2_hwmod,
    .clk = "sr_l4_ick",
    + .addr = omap3_sr2_addr_space,
    .user = OCP_USER_MPU,
    };


    \
     
     \ /
      Last update: 2017-05-11 17:48    [W:4.219 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site