• Claudiu Manoil's avatar
    felix: Fix initialization of ioremap resources · b4024c9e
    Claudiu Manoil authored
    The caller of devm_ioremap_resource(), either accidentally
    or by wrong assumption, is writing back derived resource data
    to global static resource initialization tables that should
    have been constant.  Meaning that after it computes the final
    physical start address it saves the address for no reason
    in the static tables.  This doesn't affect the first driver
    probing after reboot, but it breaks consecutive driver reloads
    (i.e. driver unbind & bind) because the initialization tables
    no longer have the correct initial values.  So the next probe()
    will map the device registers to wrong physical addresses,
    causing ARM SError async exceptions.
    This patch fixes all of the above.
    
    Fixes: 56051948 ("net: dsa: ocelot: add driver for Felix switch family")
    Signed-off-by: default avatarClaudiu Manoil <claudiu.manoil@nxp.com>
    Reviewed-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
    Tested-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    b4024c9e
felix_vsc9959.c 38.5 KB