b44-ssb: Powerup the bus before using the device.
Subsystems (2)
PATCH 1/1 b44-ssb: Powerup the bus before using the device.
We must turn on buspower before poking with the device
Signed-off-by Michael Buesch <[email protected]>
drivers/net/b44.c +23 -6
@@ -2154,17 +2154,23 @@ static int __devinit b44_init_one(structnetif_carrier_off (dev); + err =ssb_bus_powerup (sdev->bus,0 ); +if (err) { +dev_err (sdev->dev, +"Failed to powerup the bus\n" ); + goto err_out_free_dev; + } err =ssb_dma_set_mask (sdev,DMA_30BIT_MASK );if (err) {dev_err (sdev->dev,"Required 30BIT DMA mask unsupported by the system.\n" ); - goto err_out_free_dev; + goto err_out_powerdown; } err =b44_get_invariants (bp);if (err) {dev_err (sdev->dev,"Problem fetching invariants of chip, aborting.\n" ); - goto err_out_free_dev; + goto err_out_powerdown; } bp->mii_if.dev = dev;
@@ -2184,7 +2190,7 @@ static int __devinit b44_init_one(struct err =register_netdev (dev);if (err) {dev_err (sdev->dev,"Cannot register net device, aborting.\n" ); - goto out; + goto err_out_powerdown; }ssb_set_drvdata (sdev, dev);
@@ -2201,6 +2207,9 @@ static int __devinit b44_init_one(structreturn 0 ; +err_out_powerdown: +ssb_bus_may_powerdown (sdev->bus); + err_out_free_dev:free_netdev (dev);
@@ -2208,13 +2217,14 @@ out:return err; } -static void __devexit b44_remove_one(struct ssb_device *pdev) +static void __devexit b44_remove_one(struct ssb_device *sdev) { -struct net_device *dev =ssb_get_drvdata (pdev); +struct net_device *dev =ssb_get_drvdata (sdev);unregister_netdev (dev); +ssb_bus_may_powerdown (sdev->bus);free_netdev (dev); -ssb_set_drvdata (pdev,NULL ); +ssb_set_drvdata (sdev,NULL ); }static int b44_suspend (struct ssb_device *sdev,pm_message_t state)
@@ -2251,6 +2261,13 @@ static int b44_resume(struct ssb_devicestruct b44 *bp =netdev_priv (dev);int rc =0 ; + rc =ssb_bus_powerup (sdev->bus,0 ); +if (rc) { +dev_err (sdev->dev, +"Failed to powerup the bus\n" ); +return rc; + } +if (!netif_running (dev))return 0 ;