Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ks8851: suspend resume support

Add suspend/resume support using default open/stop interface methods
to do hardware dependant operations.

On suspend, same low power state (soft power mode) will be kept, the
following blocks will be disabled:

- Internal PLL Clock
- Tx/Rx PHY
- MAC
- SPI Interface

Signed-off-by: Abraham Arce <x0066660@ti.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Arce, Abraham and committed by
David S. Miller
1d5439b9 d0eaeec8

+33
+33
drivers/net/ks8851.c
··· 1545 1545 1546 1546 /* driver bus management functions */ 1547 1547 1548 + #ifdef CONFIG_PM 1549 + static int ks8851_suspend(struct spi_device *spi, pm_message_t state) 1550 + { 1551 + struct ks8851_net *ks = dev_get_drvdata(&spi->dev); 1552 + struct net_device *dev = ks->netdev; 1553 + 1554 + if (netif_running(dev)) { 1555 + netif_device_detach(dev); 1556 + ks8851_net_stop(dev); 1557 + } 1558 + 1559 + return 0; 1560 + } 1561 + 1562 + static int ks8851_resume(struct spi_device *spi) 1563 + { 1564 + struct ks8851_net *ks = dev_get_drvdata(&spi->dev); 1565 + struct net_device *dev = ks->netdev; 1566 + 1567 + if (netif_running(dev)) { 1568 + ks8851_net_open(dev); 1569 + netif_device_attach(dev); 1570 + } 1571 + 1572 + return 0; 1573 + } 1574 + #else 1575 + #define ks8851_suspend NULL 1576 + #define ks8851_resume NULL 1577 + #endif 1578 + 1548 1579 static int __devinit ks8851_probe(struct spi_device *spi) 1549 1580 { 1550 1581 struct net_device *ndev; ··· 1710 1679 }, 1711 1680 .probe = ks8851_probe, 1712 1681 .remove = __devexit_p(ks8851_remove), 1682 + .suspend = ks8851_suspend, 1683 + .resume = ks8851_resume, 1713 1684 }; 1714 1685 1715 1686 static int __init ks8851_init(void)