net: dsa: bcm_sf2: cleanup resources in remove callback
RFC PATCH v2 2/4 net: dsa: bcm_sf2: cleanup resources in remove callback
Implement a remove callback allowing the switch driver to cleanup resources it used: interrupts and remapped register ranges.
Signed-off-by Florian Fainelli <[email protected]>
Signed-off-by Neil Armstrong <[email protected]>
--- drivers/net/dsa/bcm_sf2.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+)
drivers/net/dsa/bcm_sf2.c +20 -0
@@ -1054,6 +1054,25 @@ out_unmap:return ret; } +static void bcm_sf2_sw_remove (struct dsa_switch *ds) +{ +struct bcm_sf2_priv *priv =ds_to_priv (ds); +void __iomem **base; +unsigned int i; + +/* Disable all interrupts and free them */ +bcm_sf2_intr_disable (priv); + +free_irq (priv->irq0, priv); +free_irq (priv->irq1, priv); + + base = &priv->core; +for (i =0 ; i <BCM_SF2_REGS_NUM ; i++) { +iounmap (*base); + base++; + } +} +static int bcm_sf2_sw_set_addr (struct dsa_switch *ds,u8 *addr) {return 0 ;
@@ -1367,6 +1386,7 @@ static struct dsa_switch_driver bcm_sf2_switch_driver = { .tag_protocol = DSA_TAG_PROTO_BRCM, .priv_size = sizeof(struct bcm_sf2_priv), .probe = bcm_sf2_sw_probe, + .remove = bcm_sf2_sw_remove, .setup = bcm_sf2_sw_setup, .set_addr = bcm_sf2_sw_set_addr, .get_phy_flags = bcm_sf2_sw_get_phy_flags,
Signature · 1 line
1.9.1