diff mbox

[2/7] i2c-bfin-twi: Use struct dev_pm_ops for power management

Message ID 201207112123.31502.rjw@sisk.pl (mailing list archive)
State Accepted, archived
Headers show

Commit Message

Rafael Wysocki July 11, 2012, 7:23 p.m. UTC
From: Rafael J. Wysocki <rjw@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 <rjw@sisk.pl>
---
 drivers/i2c/busses/i2c-bfin-twi.c |   18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)


--
To unsubscribe from this list: send the line "unsubscribe linux-pm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

sonic zhang July 12, 2012, 2:51 a.m. UTC | #1
QWNrZWQtYnk6IFNvbmljIFpoYW5nIDxzb25pYy56aGFuZ0BhbmFsb2cuY29tPg0KDQo+LS0tLS1P
cmlnaW5hbCBNZXNzYWdlLS0tLS0NCj5Gcm9tOiBSYWZhZWwgSi4gV3lzb2NraSBbbWFpbHRvOnJq
d0BzaXNrLnBsXQ0KPlNlbnQ6IFRodXJzZGF5LCBKdWx5IDEyLCAyMDEyIDM6MjQgQU0NCj5Ubzog
TEtNTA0KPkNjOiBMaW51eCBQTSBsaXN0OyBMaW51cyBXYWxsZWlqOyBsaW51eC1pMmNAdmdlci5r
ZXJuZWwub3JnOyBaaGFuZywgU29uaWM7IEplYW4NCj5EZWx2YXJlOyBCZW4gRG9va3M7IFdvbGZy
YW0gU2FuZzsgUGV0ZXIgS29yc2dhYXJkOyBHdWFuIFh1ZXRhbzsgVml0YWx5IFdvb2w7DQo+Q29s
aW4gQ3Jvc3M7IFN0ZXBoZW4gV2FycmVuDQo+U3ViamVjdDogW1BBVENIIDIvN10gaTJjLWJmaW4t
dHdpOiBVc2Ugc3RydWN0IGRldl9wbV9vcHMgZm9yIHBvd2VyIG1hbmFnZW1lbnQNCj4NCj5Gcm9t
OiBSYWZhZWwgSi4gV3lzb2NraSA8cmp3QHNpc2sucGw+DQo+DQo+TWFrZSB0aGUgQmxhY2tmaW4g
T24tQ2hpcCBUd28gV2lyZSBJbnRlcmZhY2UgZHJpdmVyIGRlZmluZSBpdHMgUE0NCj5jYWxsYmFj
a3MgdGhyb3VnaCBhIHN0cnVjdCBkZXZfcG1fb3BzIG9iamVjdCByYXRoZXIgdGhhbiBieSB1c2lu
Zw0KPmxlZ2FjeSBQTSBob29rcyBpbiBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyLg0KPg0KPlNpZ25l
ZC1vZmYtYnk6IFJhZmFlbCBKLiBXeXNvY2tpIDxyandAc2lzay5wbD4NCj4tLS0NCj4gZHJpdmVy
cy9pMmMvYnVzc2VzL2kyYy1iZmluLXR3aS5jIHwgICAxOCArKysrKysrKysrLS0tLS0tLS0NCj4g
MSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pDQo+DQo+SW5k
ZXg6IGxpbnV4L2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtYmZpbi10d2kuYw0KPj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj49PT09
PT0NCj4tLS0gbGludXgub3JpZy9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWJmaW4tdHdpLmMNCj4r
KysgbGludXgvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1iZmluLXR3aS5jDQo+QEAgLTYxMSw5ICs2
MTEsOSBAQCBzdGF0aWMgc3RydWN0IGkyY19hbGdvcml0aG0gYmZpbl90d2lfYWxnDQo+ICAgICAg
IC5mdW5jdGlvbmFsaXR5ID0gYmZpbl90d2lfZnVuY3Rpb25hbGl0eSwNCj4gfTsNCj4NCj4tc3Rh
dGljIGludCBpMmNfYmZpbl90d2lfc3VzcGVuZChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2
LCBwbV9tZXNzYWdlX3QNCj5zdGF0ZSkNCj4rc3RhdGljIGludCBpMmNfYmZpbl90d2lfc3VzcGVu
ZChzdHJ1Y3QgZGV2aWNlICpkZXYpDQo+IHsNCj4tICAgICAgc3RydWN0IGJmaW5fdHdpX2lmYWNl
ICppZmFjZSA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOw0KPisgICAgICBzdHJ1Y3QgYmZp
bl90d2lfaWZhY2UgKmlmYWNlID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQo+DQo+ICAgICAgIGlm
YWNlLT5zYXZlZF9jbGtkaXYgPSByZWFkX0NMS0RJVihpZmFjZSk7DQo+ICAgICAgIGlmYWNlLT5z
YXZlZF9jb250cm9sID0gcmVhZF9DT05UUk9MKGlmYWNlKTsNCj5AQCAtNjI2LDE0ICs2MjYsMTQg
QEAgc3RhdGljIGludCBpMmNfYmZpbl90d2lfc3VzcGVuZChzdHJ1Y3QgcA0KPiAgICAgICByZXR1
cm4gMDsNCj4gfQ0KPg0KPi1zdGF0aWMgaW50IGkyY19iZmluX3R3aV9yZXN1bWUoc3RydWN0IHBs
YXRmb3JtX2RldmljZSAqcGRldikNCj4rc3RhdGljIGludCBpMmNfYmZpbl90d2lfcmVzdW1lKHN0
cnVjdCBkZXZpY2UgKmRldikNCj4gew0KPi0gICAgICBzdHJ1Y3QgYmZpbl90d2lfaWZhY2UgKmlm
YWNlID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7DQo+KyAgICAgIHN0cnVjdCBiZmluX3R3
aV9pZmFjZSAqaWZhY2UgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4NCj4gICAgICAgaW50IHJj
ID0gcmVxdWVzdF9pcnEoaWZhY2UtPmlycSwgYmZpbl90d2lfaW50ZXJydXB0X2VudHJ5LA0KPi0g
ICAgICAgICAgICAgIDAsIHBkZXYtPm5hbWUsIGlmYWNlKTsNCj4rICAgICAgICAgICAgICAwLCB0
b19wbGF0Zm9ybV9kZXZpY2UoZGV2KS0+bmFtZSwgaWZhY2UpOw0KPiAgICAgICBpZiAocmMpIHsN
Cj4tICAgICAgICAgICAgICBkZXZfZXJyKCZwZGV2LT5kZXYsICJDYW4ndCBnZXQgSVJRICVkICFc
biIsIGlmYWNlLT5pcnEpOw0KPisgICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiQ2FuJ3QgZ2V0
IElSUSAlZCAhXG4iLCBpZmFjZS0+aXJxKTsNCj4gICAgICAgICAgICAgICByZXR1cm4gLUVOT0RF
VjsNCj4gICAgICAgfQ0KPg0KPkBAIC02NDYsNiArNjQ2LDkgQEAgc3RhdGljIGludCBpMmNfYmZp
bl90d2lfcmVzdW1lKHN0cnVjdCBwbA0KPiAgICAgICByZXR1cm4gMDsNCj4gfQ0KPg0KPitzdGF0
aWMgU0lNUExFX0RFVl9QTV9PUFMoaTJjX2JmaW5fdHdpX3BtLA0KPisgICAgICAgICAgICAgICAg
ICAgICAgIGkyY19iZmluX3R3aV9zdXNwZW5kLCBpMmNfYmZpbl90d2lfcmVzdW1lKTsNCj4rDQo+
IHN0YXRpYyBpbnQgaTJjX2JmaW5fdHdpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBk
ZXYpDQo+IHsNCj4gICAgICAgc3RydWN0IGJmaW5fdHdpX2lmYWNlICppZmFjZTsNCj5AQCAtNzcw
LDExICs3NzMsMTAgQEAgc3RhdGljIGludCBpMmNfYmZpbl90d2lfcmVtb3ZlKHN0cnVjdCBwbA0K
PiBzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBpMmNfYmZpbl90d2lfZHJpdmVyID0gew0K
PiAgICAgICAucHJvYmUgICAgICAgICAgPSBpMmNfYmZpbl90d2lfcHJvYmUsDQo+ICAgICAgIC5y
ZW1vdmUgICAgICAgICA9IGkyY19iZmluX3R3aV9yZW1vdmUsDQo+LSAgICAgIC5zdXNwZW5kICAg
ICAgICA9IGkyY19iZmluX3R3aV9zdXNwZW5kLA0KPi0gICAgICAucmVzdW1lICAgICAgICAgPSBp
MmNfYmZpbl90d2lfcmVzdW1lLA0KPiAgICAgICAuZHJpdmVyICAgICAgICAgPSB7DQo+ICAgICAg
ICAgICAgICAgLm5hbWUgICA9ICJpMmMtYmZpbi10d2kiLA0KPiAgICAgICAgICAgICAgIC5vd25l
ciAgPSBUSElTX01PRFVMRSwNCj4rICAgICAgICAgICAgICAucG0gICAgID0gJmkyY19iZmluX3R3
aV9wbSwNCj4gICAgICAgfSwNCj4gfTsNCj4NCj4NCg0K

--
To unsubscribe from this list: send the line "unsubscribe linux-pm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

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,
 	},
 };