|
|
|
@ -301,7 +301,7 @@ static int robo_probe(char *devname) |
|
|
|
|
{ |
|
|
|
|
__u32 phyid; |
|
|
|
|
unsigned int i; |
|
|
|
|
int err; |
|
|
|
|
int err = 1; |
|
|
|
|
|
|
|
|
|
printk(KERN_INFO PFX "Probing device %s: ", devname); |
|
|
|
|
strcpy(robo.ifr.ifr_name, devname); |
|
|
|
@ -331,7 +331,7 @@ static int robo_probe(char *devname) |
|
|
|
|
(mii->phy_id != ROBO_PHY_ADDR_BCM63XX) && |
|
|
|
|
(mii->phy_id != ROBO_PHY_ADDR_TG3)) { |
|
|
|
|
printk("Invalid phy address (%d)\n", mii->phy_id); |
|
|
|
|
return 1; |
|
|
|
|
goto done; |
|
|
|
|
} |
|
|
|
|
robo.use_et = 0; |
|
|
|
|
/* The robo has a fixed PHY address that is different from the
|
|
|
|
@ -344,7 +344,7 @@ static int robo_probe(char *devname) |
|
|
|
|
|
|
|
|
|
if (phyid == 0xffffffff || phyid == 0x55210022) { |
|
|
|
|
printk("No Robo switch in managed mode found, phy_id = 0x%08x\n", phyid); |
|
|
|
|
return 1; |
|
|
|
|
goto done; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* Get the device ID */ |
|
|
|
@ -361,11 +361,18 @@ static int robo_probe(char *devname) |
|
|
|
|
robo_switch_reset(); |
|
|
|
|
err = robo_switch_enable(); |
|
|
|
|
if (err) |
|
|
|
|
return err; |
|
|
|
|
goto done; |
|
|
|
|
err = 0; |
|
|
|
|
|
|
|
|
|
printk("found a 5%s%x!%s\n", robo.devid & 0xff00 ? "" : "3", robo.devid, |
|
|
|
|
robo.is_5350 ? " It's a 5350." : ""); |
|
|
|
|
return 0; |
|
|
|
|
|
|
|
|
|
done: |
|
|
|
|
if (err) { |
|
|
|
|
dev_put(robo.dev); |
|
|
|
|
robo.dev = NULL; |
|
|
|
|
} |
|
|
|
|
return err; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -610,6 +617,8 @@ static int __init robo_init(void) |
|
|
|
|
static void __exit robo_exit(void) |
|
|
|
|
{ |
|
|
|
|
switch_unregister_driver(DRIVER_NAME); |
|
|
|
|
if (robo.dev) |
|
|
|
|
dev_put(robo.dev); |
|
|
|
|
kfree(robo.device); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|