mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-30 08:02:30 +00:00
[S390] pm: ctcm driver power management callbacks
Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
parent
bbcfcdc832
commit
b8a2d42a82
1 changed files with 36 additions and 1 deletions
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* drivers/s390/net/ctcm_main.c
|
* drivers/s390/net/ctcm_main.c
|
||||||
*
|
*
|
||||||
* Copyright IBM Corp. 2001, 2007
|
* Copyright IBM Corp. 2001, 2009
|
||||||
* Author(s):
|
* Author(s):
|
||||||
* Original CTC driver(s):
|
* Original CTC driver(s):
|
||||||
* Fritz Elfert (felfert@millenux.com)
|
* Fritz Elfert (felfert@millenux.com)
|
||||||
|
@ -1688,6 +1688,38 @@ static void ctcm_remove_device(struct ccwgroup_device *cgdev)
|
||||||
put_device(&cgdev->dev);
|
put_device(&cgdev->dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int ctcm_pm_suspend(struct ccwgroup_device *gdev)
|
||||||
|
{
|
||||||
|
struct ctcm_priv *priv = dev_get_drvdata(&gdev->dev);
|
||||||
|
|
||||||
|
if (gdev->state == CCWGROUP_OFFLINE)
|
||||||
|
return 0;
|
||||||
|
netif_device_detach(priv->channel[READ]->netdev);
|
||||||
|
ctcm_close(priv->channel[READ]->netdev);
|
||||||
|
ccw_device_set_offline(gdev->cdev[1]);
|
||||||
|
ccw_device_set_offline(gdev->cdev[0]);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int ctcm_pm_resume(struct ccwgroup_device *gdev)
|
||||||
|
{
|
||||||
|
struct ctcm_priv *priv = dev_get_drvdata(&gdev->dev);
|
||||||
|
int rc;
|
||||||
|
|
||||||
|
if (gdev->state == CCWGROUP_OFFLINE)
|
||||||
|
return 0;
|
||||||
|
rc = ccw_device_set_online(gdev->cdev[1]);
|
||||||
|
if (rc)
|
||||||
|
goto err_out;
|
||||||
|
rc = ccw_device_set_online(gdev->cdev[0]);
|
||||||
|
if (rc)
|
||||||
|
goto err_out;
|
||||||
|
ctcm_open(priv->channel[READ]->netdev);
|
||||||
|
err_out:
|
||||||
|
netif_device_attach(priv->channel[READ]->netdev);
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
static struct ccwgroup_driver ctcm_group_driver = {
|
static struct ccwgroup_driver ctcm_group_driver = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.name = CTC_DRIVER_NAME,
|
.name = CTC_DRIVER_NAME,
|
||||||
|
@ -1697,6 +1729,9 @@ static struct ccwgroup_driver ctcm_group_driver = {
|
||||||
.remove = ctcm_remove_device,
|
.remove = ctcm_remove_device,
|
||||||
.set_online = ctcm_new_device,
|
.set_online = ctcm_new_device,
|
||||||
.set_offline = ctcm_shutdown_device,
|
.set_offline = ctcm_shutdown_device,
|
||||||
|
.freeze = ctcm_pm_suspend,
|
||||||
|
.thaw = ctcm_pm_resume,
|
||||||
|
.restore = ctcm_pm_resume,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue