Message ID | 562FA7E9.5080005@baylibre.com |
---|---|
State | RFC, archived |
Delegated to: | David Miller |
Headers | show |
Hi Neil, [auto build test ERROR on net/master -- if it's inappropriate base, please suggest rules for selecting the more suitable base] url: https://github.com/0day-ci/linux/commits/Neil-Armstrong/net-dsa-cleanup-dsa-driver/20151028-003842 config: x86_64-allmodconfig (attached as .config) reproduce: # save the attached .config to linux build tree make ARCH=x86_64 All error/warnings (new ones prefixed by >>): >> drivers/net/dsa/bcm_sf2.c:1077:2: error: unknown field 'remove' specified in initializer .remove = bcm_sf2_sw_remove, ^ >> drivers/net/dsa/bcm_sf2.c:1077:14: warning: initialization from incompatible pointer type [-Wincompatible-pointer-types] .remove = bcm_sf2_sw_remove, ^ drivers/net/dsa/bcm_sf2.c:1077:14: note: (near initialization for 'bcm_sf2_switch_driver.setup') vim +/remove +1077 drivers/net/dsa/bcm_sf2.c 1071 } 1072 1073 static struct dsa_switch_driver bcm_sf2_switch_driver = { 1074 .tag_protocol = DSA_TAG_PROTO_BRCM, 1075 .priv_size = sizeof(struct bcm_sf2_priv), 1076 .probe = bcm_sf2_sw_probe, > 1077 .remove = bcm_sf2_sw_remove, 1078 .setup = bcm_sf2_sw_setup, 1079 .set_addr = bcm_sf2_sw_set_addr, 1080 .get_phy_flags = bcm_sf2_sw_get_phy_flags, --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
diff --git a/drivers/net/dsa/bcm_sf2.c b/drivers/net/dsa/bcm_sf2.c index 6f946fe..e0be318 100644 --- a/drivers/net/dsa/bcm_sf2.c +++ b/drivers/net/dsa/bcm_sf2.c @@ -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,