diff options
author | Qipan Li <Qipan.Li@csr.com> | 2014-01-03 02:44:06 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-01-07 20:09:04 -0500 |
commit | 99e626f50477e3b14c9be43892c33ab75b2e5bf9 (patch) | |
tree | 14bcec51b6a05177561c7edf02a7200b60b3db82 | |
parent | 093a9e2a20ebc414f8ca0d31709dab1040fa2886 (diff) |
serial: sirf: use PM macro initialize PM functions
use SET_SYSTEM_SLEEP_PM_OPS to initialize suspend/resume functions
instead of legacy suspend and resume entries of platform_driver.
this will add hibernation support automatically as suspend to disk
entries are also set.
Signed-off-by: Qipan Li <Qipan.Li@csr.com>
Signed-off-by: Barry Song <Baohua.Song@csr.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r-- | drivers/tty/serial/sirfsoc_uart.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/drivers/tty/serial/sirfsoc_uart.c b/drivers/tty/serial/sirfsoc_uart.c index f186a8fb8887..6fea79b96bb9 100644 --- a/drivers/tty/serial/sirfsoc_uart.c +++ b/drivers/tty/serial/sirfsoc_uart.c | |||
@@ -1518,32 +1518,37 @@ static int sirfsoc_uart_remove(struct platform_device *pdev) | |||
1518 | return 0; | 1518 | return 0; |
1519 | } | 1519 | } |
1520 | 1520 | ||
1521 | #ifdef CONFIG_PM_SLEEP | ||
1521 | static int | 1522 | static int |
1522 | sirfsoc_uart_suspend(struct platform_device *pdev, pm_message_t state) | 1523 | sirfsoc_uart_suspend(struct device *pdev) |
1523 | { | 1524 | { |
1524 | struct sirfsoc_uart_port *sirfport = platform_get_drvdata(pdev); | 1525 | struct sirfsoc_uart_port *sirfport = dev_get_drvdata(pdev); |
1525 | struct uart_port *port = &sirfport->port; | 1526 | struct uart_port *port = &sirfport->port; |
1526 | uart_suspend_port(&sirfsoc_uart_drv, port); | 1527 | uart_suspend_port(&sirfsoc_uart_drv, port); |
1527 | return 0; | 1528 | return 0; |
1528 | } | 1529 | } |
1529 | 1530 | ||
1530 | static int sirfsoc_uart_resume(struct platform_device *pdev) | 1531 | static int sirfsoc_uart_resume(struct device *pdev) |
1531 | { | 1532 | { |
1532 | struct sirfsoc_uart_port *sirfport = platform_get_drvdata(pdev); | 1533 | struct sirfsoc_uart_port *sirfport = dev_get_drvdata(pdev); |
1533 | struct uart_port *port = &sirfport->port; | 1534 | struct uart_port *port = &sirfport->port; |
1534 | uart_resume_port(&sirfsoc_uart_drv, port); | 1535 | uart_resume_port(&sirfsoc_uart_drv, port); |
1535 | return 0; | 1536 | return 0; |
1536 | } | 1537 | } |
1538 | #endif | ||
1539 | |||
1540 | static const struct dev_pm_ops sirfsoc_uart_pm_ops = { | ||
1541 | SET_SYSTEM_SLEEP_PM_OPS(sirfsoc_uart_suspend, sirfsoc_uart_resume) | ||
1542 | }; | ||
1537 | 1543 | ||
1538 | static struct platform_driver sirfsoc_uart_driver = { | 1544 | static struct platform_driver sirfsoc_uart_driver = { |
1539 | .probe = sirfsoc_uart_probe, | 1545 | .probe = sirfsoc_uart_probe, |
1540 | .remove = sirfsoc_uart_remove, | 1546 | .remove = sirfsoc_uart_remove, |
1541 | .suspend = sirfsoc_uart_suspend, | ||
1542 | .resume = sirfsoc_uart_resume, | ||
1543 | .driver = { | 1547 | .driver = { |
1544 | .name = SIRFUART_PORT_NAME, | 1548 | .name = SIRFUART_PORT_NAME, |
1545 | .owner = THIS_MODULE, | 1549 | .owner = THIS_MODULE, |
1546 | .of_match_table = sirfsoc_uart_ids, | 1550 | .of_match_table = sirfsoc_uart_ids, |
1551 | .pm = &sirfsoc_uart_pm_ops, | ||
1547 | }, | 1552 | }, |
1548 | }; | 1553 | }; |
1549 | 1554 | ||