RE: [PATCH 2/7] i2c-bfin-twi: Use struct dev_pm_ops for power management
Acked-by: Sonic Zhang >-Original Message- >From: Rafael J. Wysocki [mailto:r...@sisk.pl] >Sent: Thursday, July 12, 2012 3:24 AM >To: LKML >Cc: Linux PM list; Linus Walleij; linux-...@vger.kernel.org; Zhang, Sonic; Jean >Delvare; Ben Dooks; Wolfram Sang; Peter Korsgaard; Guan Xuetao; Vitaly Wool; >Colin Cross; Stephen Warren >Subject: [PATCH 2/7] i2c-bfin-twi: Use struct dev_pm_ops for power management > >From: Rafael J. Wysocki > >Make the Blackfin On-Chip Two Wire Interface driver define its PM >callbacks through a struct dev_pm_ops object rather than by using >legacy PM hooks in struct platform_driver. > >Signed-off-by: Rafael J. Wysocki >--- > drivers/i2c/busses/i2c-bfin-twi.c | 18 ++ > 1 file changed, 10 insertions(+), 8 deletions(-) > >Index: linux/drivers/i2c/busses/i2c-bfin-twi.c >= >== >--- linux.orig/drivers/i2c/busses/i2c-bfin-twi.c >+++ linux/drivers/i2c/busses/i2c-bfin-twi.c >@@ -611,9 +611,9 @@ static struct i2c_algorithm bfin_twi_alg > .functionality = bfin_twi_functionality, > }; > >-static int i2c_bfin_twi_suspend(struct platform_device *pdev, pm_message_t >state) >+static int i2c_bfin_twi_suspend(struct device *dev) > { >- struct bfin_twi_iface *iface = platform_get_drvdata(pdev); >+ struct bfin_twi_iface *iface = dev_get_drvdata(dev); > > iface->saved_clkdiv = read_CLKDIV(iface); > iface->saved_control = read_CONTROL(iface); >@@ -626,14 +626,14 @@ static int i2c_bfin_twi_suspend(struct p > return 0; > } > >-static int i2c_bfin_twi_resume(struct platform_device *pdev) >+static int i2c_bfin_twi_resume(struct device *dev) > { >- struct bfin_twi_iface *iface = platform_get_drvdata(pdev); >+ struct bfin_twi_iface *iface = dev_get_drvdata(dev); > > int rc = request_irq(iface->irq, bfin_twi_interrupt_entry, >- 0, pdev->name, iface); >+ 0, to_platform_device(dev)->name, iface); > if (rc) { >- dev_err(>dev, "Can't get IRQ %d !\n", iface->irq); >+ dev_err(dev, "Can't get IRQ %d !\n", iface->irq); > return -ENODEV; > } > >@@ -646,6 +646,9 @@ static int i2c_bfin_twi_resume(struct pl > return 0; > } > >+static SIMPLE_DEV_PM_OPS(i2c_bfin_twi_pm, >+ i2c_bfin_twi_suspend, i2c_bfin_twi_resume); >+ > static int i2c_bfin_twi_probe(struct platform_device *pdev) > { > struct bfin_twi_iface *iface; >@@ -770,11 +773,10 @@ static int i2c_bfin_twi_remove(struct pl > static struct platform_driver i2c_bfin_twi_driver = { > .probe = i2c_bfin_twi_probe, > .remove = i2c_bfin_twi_remove, >- .suspend= i2c_bfin_twi_suspend, >- .resume = i2c_bfin_twi_resume, > .driver = { > .name = "i2c-bfin-twi", > .owner = THIS_MODULE, >+ .pm = _bfin_twi_pm, > }, > }; > > N�r��yb�X��ǧv�^�){.n�+{zX����ܨ}���Ơz�:+v���zZ+��+zf���h���~i���z��w���?�&�)ߢf��^jǫy�m��@A�a��� 0��h���i
RE: [PATCH 2/7] i2c-bfin-twi: Use struct dev_pm_ops for power management
Acked-by: Sonic Zhang sonic.zh...@analog.com -Original Message- From: Rafael J. Wysocki [mailto:r...@sisk.pl] Sent: Thursday, July 12, 2012 3:24 AM To: LKML Cc: Linux PM list; Linus Walleij; linux-...@vger.kernel.org; Zhang, Sonic; Jean Delvare; Ben Dooks; Wolfram Sang; Peter Korsgaard; Guan Xuetao; Vitaly Wool; Colin Cross; Stephen Warren Subject: [PATCH 2/7] i2c-bfin-twi: Use struct dev_pm_ops for power management From: Rafael J. Wysocki r...@sisk.pl Make the Blackfin On-Chip Two Wire Interface driver define its PM callbacks through a struct dev_pm_ops object rather than by using legacy PM hooks in struct platform_driver. Signed-off-by: Rafael J. Wysocki r...@sisk.pl --- drivers/i2c/busses/i2c-bfin-twi.c | 18 ++ 1 file changed, 10 insertions(+), 8 deletions(-) Index: linux/drivers/i2c/busses/i2c-bfin-twi.c = == --- linux.orig/drivers/i2c/busses/i2c-bfin-twi.c +++ linux/drivers/i2c/busses/i2c-bfin-twi.c @@ -611,9 +611,9 @@ static struct i2c_algorithm bfin_twi_alg .functionality = bfin_twi_functionality, }; -static int i2c_bfin_twi_suspend(struct platform_device *pdev, pm_message_t state) +static int i2c_bfin_twi_suspend(struct device *dev) { - struct bfin_twi_iface *iface = platform_get_drvdata(pdev); + struct bfin_twi_iface *iface = dev_get_drvdata(dev); iface-saved_clkdiv = read_CLKDIV(iface); iface-saved_control = read_CONTROL(iface); @@ -626,14 +626,14 @@ static int i2c_bfin_twi_suspend(struct p return 0; } -static int i2c_bfin_twi_resume(struct platform_device *pdev) +static int i2c_bfin_twi_resume(struct device *dev) { - struct bfin_twi_iface *iface = platform_get_drvdata(pdev); + struct bfin_twi_iface *iface = dev_get_drvdata(dev); int rc = request_irq(iface-irq, bfin_twi_interrupt_entry, - 0, pdev-name, iface); + 0, to_platform_device(dev)-name, iface); if (rc) { - dev_err(pdev-dev, Can't get IRQ %d !\n, iface-irq); + dev_err(dev, Can't get IRQ %d !\n, iface-irq); return -ENODEV; } @@ -646,6 +646,9 @@ static int i2c_bfin_twi_resume(struct pl return 0; } +static SIMPLE_DEV_PM_OPS(i2c_bfin_twi_pm, + i2c_bfin_twi_suspend, i2c_bfin_twi_resume); + static int i2c_bfin_twi_probe(struct platform_device *pdev) { struct bfin_twi_iface *iface; @@ -770,11 +773,10 @@ static int i2c_bfin_twi_remove(struct pl static struct platform_driver i2c_bfin_twi_driver = { .probe = i2c_bfin_twi_probe, .remove = i2c_bfin_twi_remove, - .suspend= i2c_bfin_twi_suspend, - .resume = i2c_bfin_twi_resume, .driver = { .name = i2c-bfin-twi, .owner = THIS_MODULE, + .pm = i2c_bfin_twi_pm, }, }; N�r��yb�X��ǧv�^�){.n�+{zX����ܨ}���Ơz�j:+v���zZ+��+zf���h���~i���z��w���?��)ߢf��^jǫy�m��@A�a��� 0��h���i