diff for duplicates of <1369103589.12093.4.camel@lorien> diff --git a/a/1.txt b/N1/1.txt index 3a6c396..adc3bd9 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -1,61 +1,112 @@ -Q29udmVydCB0aGUgZHJpdmVyIHRvIHVzZSBkZXZfcG1fb3BzIGZvciBwb3dlciBtYW5hZ2VtZW50 -IGFuZCByZW1vdmUgTGVnYWN5IFBNDQpoYW5kbGluZy4gVGhpcyBjaGFuZ2UgcmUtdXNlcyBleGlz -dGluZyBzdXNwZW5kIGFuZCByZXN1bWUgaW50ZXJmYWNlcyBmb3IgDQpkZXZfcG1fb3BzLg0KDQpT -aWduZWQtb2ZmLWJ5OiBTaHVhaCBLaGFuIDxzaHVhaC5raEBzYW1zdW5nLmNvbT4NCkNjOiBTaHVh -aCBLaGFuIDxzaHVhaGtoYW5AZ21haWwuY29tPg0KU3VnZ2VzdGVkLWJ5OiByYWZhZWwuai53eXNv -Y2tpQGludGVsLmNvbQ0KLS0tDQoNClJhZmFlbCwNCg0KVGhpcyBpcyB0aGUgZmlyc3QgZHJpdmVy -IHBhdGNoIHRvIGNvbnZlcnQgZHJpdmVycyB0byB1c2UgZGV2X3BtX29wcyBmb3INCnBvd2VyIG1h -bmFnZW1lbnQuIFBsZWFzZSByZXZpZXcgZm9yIHRoZSBhcHByb2FjaCBhbmQgbWFrZSBzdWdnZXN0 -aW9ucyBmb3INCmltcHJvdmVtZW50Lg0KDQp0aGFua3MsDQotLSBTaHVhaA0KDQogZHJpdmVycy9u -ZXQvd2lyZWxlc3MvbXdpZmlleC9wY2llLmMgfCAgIDMzICsrKysrKysrKysrKysrKysrKysrKysr -KysrKy0tLS0tLQ0KIDEgZmlsZSBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9u -cygtKQ0KDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbXdpZmlleC9wY2llLmMg -Yi9kcml2ZXJzL25ldC93aXJlbGVzcy9td2lmaWV4L3BjaWUuYw0KaW5kZXggMjBjOWM0Yy4uYTI3 -MWM2NCAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL213aWZpZXgvcGNpZS5jDQor -KysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9td2lmaWV4L3BjaWUuYw0KQEAgLTg1LDcgKzg1LDcg -QEAgc3RhdGljIGJvb2wgbXdpZmlleF9wY2llX29rX3RvX2FjY2Vzc19odyhzdHJ1Y3QgbXdpZmll -eF9hZGFwdGVyICphZGFwdGVyKQ0KICAqIElmIGFscmVhZHkgbm90IHN1c3BlbmRlZCwgdGhpcyBm -dW5jdGlvbiBhbGxvY2F0ZXMgYW5kIHNlbmRzIGEgaG9zdA0KICAqIHNsZWVwIGFjdGl2YXRlIHJl -cXVlc3QgdG8gdGhlIGZpcm13YXJlIGFuZCB0dXJucyBvZmYgdGhlIHRyYWZmaWMuDQogICovDQot -c3RhdGljIGludCBtd2lmaWV4X3BjaWVfc3VzcGVuZChzdHJ1Y3QgcGNpX2RldiAqcGRldiwgcG1f -bWVzc2FnZV90IHN0YXRlKQ0KK3N0YXRpYyBpbnQgX19td2lmaWV4X3BjaWVfc3VzcGVuZChzdHJ1 -Y3QgcGNpX2RldiAqcGRldikNCiB7DQogCXN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXI7 -DQogCXN0cnVjdCBwY2llX3NlcnZpY2VfY2FyZCAqY2FyZDsNCkBAIC0xMTIsNiArMTEyLDEzIEBA -IHN0YXRpYyBpbnQgbXdpZmlleF9wY2llX3N1c3BlbmQoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHBt -X21lc3NhZ2VfdCBzdGF0ZSkNCiAJcmV0dXJuIDA7DQogfQ0KIA0KK3N0YXRpYyBpbnQgbXdpZmll -eF9wY2llX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQ0KK3sNCisJc3RydWN0IHBjaV9kZXYg -KnBkZXYgPSB0b19wY2lfZGV2KGRldik7DQorDQorCXJldHVybiBfX213aWZpZXhfcGNpZV9zdXNw -ZW5kKHBkZXYpOw0KK30NCisNCiAvKg0KICAqIEtlcm5lbCBuZWVkcyB0byBzdXNwZW5kIGFsbCBm -dW5jdGlvbnMgc2VwYXJhdGVseS4gVGhlcmVmb3JlIGFsbA0KICAqIHJlZ2lzdGVyZWQgZnVuY3Rp -b25zIG11c3QgaGF2ZSBkcml2ZXJzIHdpdGggc3VzcGVuZCBhbmQgcmVzdW1lDQpAQCAtMTIwLDcg -KzEyNyw3IEBAIHN0YXRpYyBpbnQgbXdpZmlleF9wY2llX3N1c3BlbmQoc3RydWN0IHBjaV9kZXYg -KnBkZXYsIHBtX21lc3NhZ2VfdCBzdGF0ZSkNCiAgKiBJZiBhbHJlYWR5IG5vdCByZXN1bWVkLCB0 -aGlzIGZ1bmN0aW9uIHR1cm5zIG9uIHRoZSB0cmFmZmljIGFuZA0KICAqIHNlbmRzIGEgaG9zdCBz -bGVlcCBjYW5jZWwgcmVxdWVzdCB0byB0aGUgZmlybXdhcmUuDQogICovDQotc3RhdGljIGludCBt -d2lmaWV4X3BjaWVfcmVzdW1lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQ0KK3N0YXRpYyBpbnQgX19t -d2lmaWV4X3BjaWVfcmVzdW1lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQ0KIHsNCiAJc3RydWN0IG13 -aWZpZXhfYWRhcHRlciAqYWRhcHRlcjsNCiAJc3RydWN0IHBjaWVfc2VydmljZV9jYXJkICpjYXJk -Ow0KQEAgLTE1MCw2ICsxNTcsMTMgQEAgc3RhdGljIGludCBtd2lmaWV4X3BjaWVfcmVzdW1lKHN0 -cnVjdCBwY2lfZGV2ICpwZGV2KQ0KIA0KIAlyZXR1cm4gMDsNCiB9DQorDQorc3RhdGljIGludCBt -d2lmaWV4X3BjaWVfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikNCit7DQorCXN0cnVjdCBwY2lf -ZGV2ICpwZGV2ID0gdG9fcGNpX2RldihkZXYpOw0KKw0KKwlyZXR1cm4gX19td2lmaWV4X3BjaWVf -cmVzdW1lKHBkZXYpOw0KK30NCiAjZW5kaWYNCiANCiAvKg0KQEAgLTIxMyw3ICsyMjcsNyBAQCBz -dGF0aWMgdm9pZCBtd2lmaWV4X3BjaWVfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQ0KIAlp -ZiAodXNlcl9ybW1vZCkgew0KICNpZmRlZiBDT05GSUdfUE0NCiAJCWlmIChhZGFwdGVyLT5pc19z -dXNwZW5kZWQpDQotCQkJbXdpZmlleF9wY2llX3Jlc3VtZShwZGV2KTsNCisJCQlfX213aWZpZXhf -cGNpZV9yZXN1bWUocGRldik7DQogI2VuZGlmDQogDQogCQlmb3IgKGkgPSAwOyBpIDwgYWRhcHRl -ci0+cHJpdl9udW07IGkrKykNCkBAIC0yNDksNiArMjYzLDEzIEBAIHN0YXRpYyBERUZJTkVfUENJ -X0RFVklDRV9UQUJMRShtd2lmaWV4X2lkcykgPSB7DQogDQogTU9EVUxFX0RFVklDRV9UQUJMRShw -Y2ksIG13aWZpZXhfaWRzKTsNCiANCisjaWZkZWYgQ09ORklHX1BNDQorLyogUG93ZXIgTWFuYWdl -bWVudCBIb29rcyAqLw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBtd2lmaWV4X3Bj -aWVfcG1fb3BzID0gew0KKwlTRVRfU1lTVEVNX1NMRUVQX1BNX09QUyhtd2lmaWV4X3BjaWVfc3Vz -cGVuZCwgbXdpZmlleF9wY2llX3Jlc3VtZSkNCit9Ow0KKyNlbmRpZg0KKw0KIC8qIFBDSSBEZXZp -Y2UgRHJpdmVyICovDQogc3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIF9fcmVmZGF0YSBtd2lmaWV4 -X3BjaWUgPSB7DQogCS5uYW1lICAgICA9ICJtd2lmaWV4X3BjaWUiLA0KQEAgLTI1Niw5ICsyNzcs -OSBAQCBzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgX19yZWZkYXRhIG13aWZpZXhfcGNpZSA9IHsN -CiAJLnByb2JlICAgID0gbXdpZmlleF9wY2llX3Byb2JlLA0KIAkucmVtb3ZlICAgPSBtd2lmaWV4 -X3BjaWVfcmVtb3ZlLA0KICNpZmRlZiBDT05GSUdfUE0NCi0JLyogUG93ZXIgTWFuYWdlbWVudCBI -b29rcyAqLw0KLQkuc3VzcGVuZCAgPSBtd2lmaWV4X3BjaWVfc3VzcGVuZCwNCi0JLnJlc3VtZSAg -ID0gbXdpZmlleF9wY2llX3Jlc3VtZSwNCisJLmRyaXZlciAgID0gew0KKwkJLnBtID0gJm13aWZp -ZXhfcGNpZV9wbV9vcHMsDQorCX0sDQogI2VuZGlmDQogfTsNCiANCi0tIA0KMS43LjEwLjQNCg0K -DQo= +Convert the driver to use dev_pm_ops for power management and remove Legacy PM +handling. This change re-uses existing suspend and resume interfaces for +dev_pm_ops. + +Signed-off-by: Shuah Khan <shuah.kh@samsung.com> +Cc: Shuah Khan <shuahkhan@gmail.com> +Suggested-by: rafael.j.wysocki@intel.com +--- + +Rafael, + +This is the first driver patch to convert drivers to use dev_pm_ops for +power management. Please review for the approach and make suggestions for +improvement. + +thanks, +-- Shuah + + drivers/net/wireless/mwifiex/pcie.c | 33 +++++++++++++++++++++++++++------ + 1 file changed, 27 insertions(+), 6 deletions(-) + +diff --git a/drivers/net/wireless/mwifiex/pcie.c b/drivers/net/wireless/mwifiex/pcie.c +index 20c9c4c..a271c64 100644 +--- a/drivers/net/wireless/mwifiex/pcie.c ++++ b/drivers/net/wireless/mwifiex/pcie.c +@@ -85,7 +85,7 @@ static bool mwifiex_pcie_ok_to_access_hw(struct mwifiex_adapter *adapter) + * If already not suspended, this function allocates and sends a host + * sleep activate request to the firmware and turns off the traffic. + */ +-static int mwifiex_pcie_suspend(struct pci_dev *pdev, pm_message_t state) ++static int __mwifiex_pcie_suspend(struct pci_dev *pdev) + { + struct mwifiex_adapter *adapter; + struct pcie_service_card *card; +@@ -112,6 +112,13 @@ static int mwifiex_pcie_suspend(struct pci_dev *pdev, pm_message_t state) + return 0; + } + ++static int mwifiex_pcie_suspend(struct device *dev) ++{ ++ struct pci_dev *pdev = to_pci_dev(dev); ++ ++ return __mwifiex_pcie_suspend(pdev); ++} ++ + /* + * Kernel needs to suspend all functions separately. Therefore all + * registered functions must have drivers with suspend and resume +@@ -120,7 +127,7 @@ static int mwifiex_pcie_suspend(struct pci_dev *pdev, pm_message_t state) + * If already not resumed, this function turns on the traffic and + * sends a host sleep cancel request to the firmware. + */ +-static int mwifiex_pcie_resume(struct pci_dev *pdev) ++static int __mwifiex_pcie_resume(struct pci_dev *pdev) + { + struct mwifiex_adapter *adapter; + struct pcie_service_card *card; +@@ -150,6 +157,13 @@ static int mwifiex_pcie_resume(struct pci_dev *pdev) + + return 0; + } ++ ++static int mwifiex_pcie_resume(struct device *dev) ++{ ++ struct pci_dev *pdev = to_pci_dev(dev); ++ ++ return __mwifiex_pcie_resume(pdev); ++} + #endif + + /* +@@ -213,7 +227,7 @@ static void mwifiex_pcie_remove(struct pci_dev *pdev) + if (user_rmmod) { + #ifdef CONFIG_PM + if (adapter->is_suspended) +- mwifiex_pcie_resume(pdev); ++ __mwifiex_pcie_resume(pdev); + #endif + + for (i = 0; i < adapter->priv_num; i++) +@@ -249,6 +263,13 @@ static DEFINE_PCI_DEVICE_TABLE(mwifiex_ids) = { + + MODULE_DEVICE_TABLE(pci, mwifiex_ids); + ++#ifdef CONFIG_PM ++/* Power Management Hooks */ ++static const struct dev_pm_ops mwifiex_pcie_pm_ops = { ++ SET_SYSTEM_SLEEP_PM_OPS(mwifiex_pcie_suspend, mwifiex_pcie_resume) ++}; ++#endif ++ + /* PCI Device Driver */ + static struct pci_driver __refdata mwifiex_pcie = { + .name = "mwifiex_pcie", +@@ -256,9 +277,9 @@ static struct pci_driver __refdata mwifiex_pcie = { + .probe = mwifiex_pcie_probe, + .remove = mwifiex_pcie_remove, + #ifdef CONFIG_PM +- /* Power Management Hooks */ +- .suspend = mwifiex_pcie_suspend, +- .resume = mwifiex_pcie_resume, ++ .driver = { ++ .pm = &mwifiex_pcie_pm_ops, ++ }, + #endif + }; + +-- +1.7.10.4 + + +ÿôèº{.nÇ+·®+%Ëÿ±éݶ\x17¥wÿº{.nÇ+·¥{±þG«éÿ{ayº\x1dÊÚë,j\a¢f£¢·hïêÿêçz_è®\x03(éÝ¢j"ú\x1a¶^[m§ÿÿ¾\a«þG«éÿ¢¸?¨èÚ&£ø§~á¶iOæ¬z·vØ^\x14\x04\x1a¶^[m§ÿÿÃ\fÿ¶ìÿ¢¸?I¥ diff --git a/a/content_digest b/N1/content_digest index 2cde3e3..89de200 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -11,66 +11,117 @@ " Shuah Khan <shuah.kh@samsung.com>\0" "\00:1\0" "b\0" - "Q29udmVydCB0aGUgZHJpdmVyIHRvIHVzZSBkZXZfcG1fb3BzIGZvciBwb3dlciBtYW5hZ2VtZW50\n" - "IGFuZCByZW1vdmUgTGVnYWN5IFBNDQpoYW5kbGluZy4gVGhpcyBjaGFuZ2UgcmUtdXNlcyBleGlz\n" - "dGluZyBzdXNwZW5kIGFuZCByZXN1bWUgaW50ZXJmYWNlcyBmb3IgDQpkZXZfcG1fb3BzLg0KDQpT\n" - "aWduZWQtb2ZmLWJ5OiBTaHVhaCBLaGFuIDxzaHVhaC5raEBzYW1zdW5nLmNvbT4NCkNjOiBTaHVh\n" - "aCBLaGFuIDxzaHVhaGtoYW5AZ21haWwuY29tPg0KU3VnZ2VzdGVkLWJ5OiByYWZhZWwuai53eXNv\n" - "Y2tpQGludGVsLmNvbQ0KLS0tDQoNClJhZmFlbCwNCg0KVGhpcyBpcyB0aGUgZmlyc3QgZHJpdmVy\n" - "IHBhdGNoIHRvIGNvbnZlcnQgZHJpdmVycyB0byB1c2UgZGV2X3BtX29wcyBmb3INCnBvd2VyIG1h\n" - "bmFnZW1lbnQuIFBsZWFzZSByZXZpZXcgZm9yIHRoZSBhcHByb2FjaCBhbmQgbWFrZSBzdWdnZXN0\n" - "aW9ucyBmb3INCmltcHJvdmVtZW50Lg0KDQp0aGFua3MsDQotLSBTaHVhaA0KDQogZHJpdmVycy9u\n" - "ZXQvd2lyZWxlc3MvbXdpZmlleC9wY2llLmMgfCAgIDMzICsrKysrKysrKysrKysrKysrKysrKysr\n" - "KysrKy0tLS0tLQ0KIDEgZmlsZSBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9u\n" - "cygtKQ0KDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbXdpZmlleC9wY2llLmMg\n" - "Yi9kcml2ZXJzL25ldC93aXJlbGVzcy9td2lmaWV4L3BjaWUuYw0KaW5kZXggMjBjOWM0Yy4uYTI3\n" - "MWM2NCAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL213aWZpZXgvcGNpZS5jDQor\n" - "KysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9td2lmaWV4L3BjaWUuYw0KQEAgLTg1LDcgKzg1LDcg\n" - "QEAgc3RhdGljIGJvb2wgbXdpZmlleF9wY2llX29rX3RvX2FjY2Vzc19odyhzdHJ1Y3QgbXdpZmll\n" - "eF9hZGFwdGVyICphZGFwdGVyKQ0KICAqIElmIGFscmVhZHkgbm90IHN1c3BlbmRlZCwgdGhpcyBm\n" - "dW5jdGlvbiBhbGxvY2F0ZXMgYW5kIHNlbmRzIGEgaG9zdA0KICAqIHNsZWVwIGFjdGl2YXRlIHJl\n" - "cXVlc3QgdG8gdGhlIGZpcm13YXJlIGFuZCB0dXJucyBvZmYgdGhlIHRyYWZmaWMuDQogICovDQot\n" - "c3RhdGljIGludCBtd2lmaWV4X3BjaWVfc3VzcGVuZChzdHJ1Y3QgcGNpX2RldiAqcGRldiwgcG1f\n" - "bWVzc2FnZV90IHN0YXRlKQ0KK3N0YXRpYyBpbnQgX19td2lmaWV4X3BjaWVfc3VzcGVuZChzdHJ1\n" - "Y3QgcGNpX2RldiAqcGRldikNCiB7DQogCXN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXI7\n" - "DQogCXN0cnVjdCBwY2llX3NlcnZpY2VfY2FyZCAqY2FyZDsNCkBAIC0xMTIsNiArMTEyLDEzIEBA\n" - "IHN0YXRpYyBpbnQgbXdpZmlleF9wY2llX3N1c3BlbmQoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHBt\n" - "X21lc3NhZ2VfdCBzdGF0ZSkNCiAJcmV0dXJuIDA7DQogfQ0KIA0KK3N0YXRpYyBpbnQgbXdpZmll\n" - "eF9wY2llX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQ0KK3sNCisJc3RydWN0IHBjaV9kZXYg\n" - "KnBkZXYgPSB0b19wY2lfZGV2KGRldik7DQorDQorCXJldHVybiBfX213aWZpZXhfcGNpZV9zdXNw\n" - "ZW5kKHBkZXYpOw0KK30NCisNCiAvKg0KICAqIEtlcm5lbCBuZWVkcyB0byBzdXNwZW5kIGFsbCBm\n" - "dW5jdGlvbnMgc2VwYXJhdGVseS4gVGhlcmVmb3JlIGFsbA0KICAqIHJlZ2lzdGVyZWQgZnVuY3Rp\n" - "b25zIG11c3QgaGF2ZSBkcml2ZXJzIHdpdGggc3VzcGVuZCBhbmQgcmVzdW1lDQpAQCAtMTIwLDcg\n" - "KzEyNyw3IEBAIHN0YXRpYyBpbnQgbXdpZmlleF9wY2llX3N1c3BlbmQoc3RydWN0IHBjaV9kZXYg\n" - "KnBkZXYsIHBtX21lc3NhZ2VfdCBzdGF0ZSkNCiAgKiBJZiBhbHJlYWR5IG5vdCByZXN1bWVkLCB0\n" - "aGlzIGZ1bmN0aW9uIHR1cm5zIG9uIHRoZSB0cmFmZmljIGFuZA0KICAqIHNlbmRzIGEgaG9zdCBz\n" - "bGVlcCBjYW5jZWwgcmVxdWVzdCB0byB0aGUgZmlybXdhcmUuDQogICovDQotc3RhdGljIGludCBt\n" - "d2lmaWV4X3BjaWVfcmVzdW1lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQ0KK3N0YXRpYyBpbnQgX19t\n" - "d2lmaWV4X3BjaWVfcmVzdW1lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQ0KIHsNCiAJc3RydWN0IG13\n" - "aWZpZXhfYWRhcHRlciAqYWRhcHRlcjsNCiAJc3RydWN0IHBjaWVfc2VydmljZV9jYXJkICpjYXJk\n" - "Ow0KQEAgLTE1MCw2ICsxNTcsMTMgQEAgc3RhdGljIGludCBtd2lmaWV4X3BjaWVfcmVzdW1lKHN0\n" - "cnVjdCBwY2lfZGV2ICpwZGV2KQ0KIA0KIAlyZXR1cm4gMDsNCiB9DQorDQorc3RhdGljIGludCBt\n" - "d2lmaWV4X3BjaWVfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikNCit7DQorCXN0cnVjdCBwY2lf\n" - "ZGV2ICpwZGV2ID0gdG9fcGNpX2RldihkZXYpOw0KKw0KKwlyZXR1cm4gX19td2lmaWV4X3BjaWVf\n" - "cmVzdW1lKHBkZXYpOw0KK30NCiAjZW5kaWYNCiANCiAvKg0KQEAgLTIxMyw3ICsyMjcsNyBAQCBz\n" - "dGF0aWMgdm9pZCBtd2lmaWV4X3BjaWVfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQ0KIAlp\n" - "ZiAodXNlcl9ybW1vZCkgew0KICNpZmRlZiBDT05GSUdfUE0NCiAJCWlmIChhZGFwdGVyLT5pc19z\n" - "dXNwZW5kZWQpDQotCQkJbXdpZmlleF9wY2llX3Jlc3VtZShwZGV2KTsNCisJCQlfX213aWZpZXhf\n" - "cGNpZV9yZXN1bWUocGRldik7DQogI2VuZGlmDQogDQogCQlmb3IgKGkgPSAwOyBpIDwgYWRhcHRl\n" - "ci0+cHJpdl9udW07IGkrKykNCkBAIC0yNDksNiArMjYzLDEzIEBAIHN0YXRpYyBERUZJTkVfUENJ\n" - "X0RFVklDRV9UQUJMRShtd2lmaWV4X2lkcykgPSB7DQogDQogTU9EVUxFX0RFVklDRV9UQUJMRShw\n" - "Y2ksIG13aWZpZXhfaWRzKTsNCiANCisjaWZkZWYgQ09ORklHX1BNDQorLyogUG93ZXIgTWFuYWdl\n" - "bWVudCBIb29rcyAqLw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBtd2lmaWV4X3Bj\n" - "aWVfcG1fb3BzID0gew0KKwlTRVRfU1lTVEVNX1NMRUVQX1BNX09QUyhtd2lmaWV4X3BjaWVfc3Vz\n" - "cGVuZCwgbXdpZmlleF9wY2llX3Jlc3VtZSkNCit9Ow0KKyNlbmRpZg0KKw0KIC8qIFBDSSBEZXZp\n" - "Y2UgRHJpdmVyICovDQogc3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIF9fcmVmZGF0YSBtd2lmaWV4\n" - "X3BjaWUgPSB7DQogCS5uYW1lICAgICA9ICJtd2lmaWV4X3BjaWUiLA0KQEAgLTI1Niw5ICsyNzcs\n" - "OSBAQCBzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgX19yZWZkYXRhIG13aWZpZXhfcGNpZSA9IHsN\n" - "CiAJLnByb2JlICAgID0gbXdpZmlleF9wY2llX3Byb2JlLA0KIAkucmVtb3ZlICAgPSBtd2lmaWV4\n" - "X3BjaWVfcmVtb3ZlLA0KICNpZmRlZiBDT05GSUdfUE0NCi0JLyogUG93ZXIgTWFuYWdlbWVudCBI\n" - "b29rcyAqLw0KLQkuc3VzcGVuZCAgPSBtd2lmaWV4X3BjaWVfc3VzcGVuZCwNCi0JLnJlc3VtZSAg\n" - "ID0gbXdpZmlleF9wY2llX3Jlc3VtZSwNCisJLmRyaXZlciAgID0gew0KKwkJLnBtID0gJm13aWZp\n" - "ZXhfcGNpZV9wbV9vcHMsDQorCX0sDQogI2VuZGlmDQogfTsNCiANCi0tIA0KMS43LjEwLjQNCg0K\n" - DQo= + "Convert the driver to use dev_pm_ops for power management and remove Legacy PM\n" + "handling. This change re-uses existing suspend and resume interfaces for \n" + "dev_pm_ops.\n" + "\n" + "Signed-off-by: Shuah Khan <shuah.kh@samsung.com>\n" + "Cc: Shuah Khan <shuahkhan@gmail.com>\n" + "Suggested-by: rafael.j.wysocki@intel.com\n" + "---\n" + "\n" + "Rafael,\n" + "\n" + "This is the first driver patch to convert drivers to use dev_pm_ops for\n" + "power management. Please review for the approach and make suggestions for\n" + "improvement.\n" + "\n" + "thanks,\n" + "-- Shuah\n" + "\n" + " drivers/net/wireless/mwifiex/pcie.c | 33 +++++++++++++++++++++++++++------\n" + " 1 file changed, 27 insertions(+), 6 deletions(-)\n" + "\n" + "diff --git a/drivers/net/wireless/mwifiex/pcie.c b/drivers/net/wireless/mwifiex/pcie.c\n" + "index 20c9c4c..a271c64 100644\n" + "--- a/drivers/net/wireless/mwifiex/pcie.c\n" + "+++ b/drivers/net/wireless/mwifiex/pcie.c\n" + "@@ -85,7 +85,7 @@ static bool mwifiex_pcie_ok_to_access_hw(struct mwifiex_adapter *adapter)\n" + " * If already not suspended, this function allocates and sends a host\n" + " * sleep activate request to the firmware and turns off the traffic.\n" + " */\n" + "-static int mwifiex_pcie_suspend(struct pci_dev *pdev, pm_message_t state)\n" + "+static int __mwifiex_pcie_suspend(struct pci_dev *pdev)\n" + " {\n" + " \tstruct mwifiex_adapter *adapter;\n" + " \tstruct pcie_service_card *card;\n" + "@@ -112,6 +112,13 @@ static int mwifiex_pcie_suspend(struct pci_dev *pdev, pm_message_t state)\n" + " \treturn 0;\n" + " }\n" + " \n" + "+static int mwifiex_pcie_suspend(struct device *dev)\n" + "+{\n" + "+\tstruct pci_dev *pdev = to_pci_dev(dev);\n" + "+\n" + "+\treturn __mwifiex_pcie_suspend(pdev);\n" + "+}\n" + "+\n" + " /*\n" + " * Kernel needs to suspend all functions separately. Therefore all\n" + " * registered functions must have drivers with suspend and resume\n" + "@@ -120,7 +127,7 @@ static int mwifiex_pcie_suspend(struct pci_dev *pdev, pm_message_t state)\n" + " * If already not resumed, this function turns on the traffic and\n" + " * sends a host sleep cancel request to the firmware.\n" + " */\n" + "-static int mwifiex_pcie_resume(struct pci_dev *pdev)\n" + "+static int __mwifiex_pcie_resume(struct pci_dev *pdev)\n" + " {\n" + " \tstruct mwifiex_adapter *adapter;\n" + " \tstruct pcie_service_card *card;\n" + "@@ -150,6 +157,13 @@ static int mwifiex_pcie_resume(struct pci_dev *pdev)\n" + " \n" + " \treturn 0;\n" + " }\n" + "+\n" + "+static int mwifiex_pcie_resume(struct device *dev)\n" + "+{\n" + "+\tstruct pci_dev *pdev = to_pci_dev(dev);\n" + "+\n" + "+\treturn __mwifiex_pcie_resume(pdev);\n" + "+}\n" + " #endif\n" + " \n" + " /*\n" + "@@ -213,7 +227,7 @@ static void mwifiex_pcie_remove(struct pci_dev *pdev)\n" + " \tif (user_rmmod) {\n" + " #ifdef CONFIG_PM\n" + " \t\tif (adapter->is_suspended)\n" + "-\t\t\tmwifiex_pcie_resume(pdev);\n" + "+\t\t\t__mwifiex_pcie_resume(pdev);\n" + " #endif\n" + " \n" + " \t\tfor (i = 0; i < adapter->priv_num; i++)\n" + "@@ -249,6 +263,13 @@ static DEFINE_PCI_DEVICE_TABLE(mwifiex_ids) = {\n" + " \n" + " MODULE_DEVICE_TABLE(pci, mwifiex_ids);\n" + " \n" + "+#ifdef CONFIG_PM\n" + "+/* Power Management Hooks */\n" + "+static const struct dev_pm_ops mwifiex_pcie_pm_ops = {\n" + "+\tSET_SYSTEM_SLEEP_PM_OPS(mwifiex_pcie_suspend, mwifiex_pcie_resume)\n" + "+};\n" + "+#endif\n" + "+\n" + " /* PCI Device Driver */\n" + " static struct pci_driver __refdata mwifiex_pcie = {\n" + " \t.name = \"mwifiex_pcie\",\n" + "@@ -256,9 +277,9 @@ static struct pci_driver __refdata mwifiex_pcie = {\n" + " \t.probe = mwifiex_pcie_probe,\n" + " \t.remove = mwifiex_pcie_remove,\n" + " #ifdef CONFIG_PM\n" + "-\t/* Power Management Hooks */\n" + "-\t.suspend = mwifiex_pcie_suspend,\n" + "-\t.resume = mwifiex_pcie_resume,\n" + "+\t.driver = {\n" + "+\t\t.pm = &mwifiex_pcie_pm_ops,\n" + "+\t},\n" + " #endif\n" + " };\n" + " \n" + "-- \n" + "1.7.10.4\n" + "\n" + "\n" + "\303\277\303\264\303\250\302\272{.n\303\207+\302\211\302\267\302\237\302\256\302\211\302\255\302\206+%\302\212\303\213\303\277\302\261\303\251\303\235\302\266\027\302\245\302\212w\303\277\302\272{.n\303\207+\302\211\302\267\302\245\302\212{\302\261\303\276G\302\253\302\235\303\251\303\277\302\212{ay\302\272\035\303\212\302\207\303\232\302\231\303\253,j\a\302\255\302\242f\302\243\302\242\302\267h\302\232\302\217\303\257\302\201\303\252\303\277\302\221\303\252\303\247z_\303\250\302\256\003(\302\255\303\251\302\232\302\216\302\212\303\235\302\242j\"\302\235\303\272\032\302\266\033m\302\247\303\277\303\277\302\276\a\302\253\303\276G\302\253\302\235\303\251\303\277\302\242\302\270?\302\231\302\250\303\250\302\255\303\232&\302\243\303\270\302\247~\302\217\303\241\302\266iO\302\225\303\246\302\254z\302\267\302\232v\303\230^\024\004\032\302\266\033m\302\247\303\277\303\277\303\203\f\303\277\302\266\303\254\303\277\302\242\302\270?\302\226I\302\245" -d0502323d7583767ffc3d0790f973620ed32e1e0974b2b6b9efee06d88d95d34 +a088cf4ccfcae92e9c3f2ca192b51a8b08a37af1d25e6c478c0ad6976838cf83
diff --git a/a/1.txt b/N2/1.txt index 3a6c396..54a2458 100644 --- a/a/1.txt +++ b/N2/1.txt @@ -1,61 +1,109 @@ -Q29udmVydCB0aGUgZHJpdmVyIHRvIHVzZSBkZXZfcG1fb3BzIGZvciBwb3dlciBtYW5hZ2VtZW50 -IGFuZCByZW1vdmUgTGVnYWN5IFBNDQpoYW5kbGluZy4gVGhpcyBjaGFuZ2UgcmUtdXNlcyBleGlz -dGluZyBzdXNwZW5kIGFuZCByZXN1bWUgaW50ZXJmYWNlcyBmb3IgDQpkZXZfcG1fb3BzLg0KDQpT -aWduZWQtb2ZmLWJ5OiBTaHVhaCBLaGFuIDxzaHVhaC5raEBzYW1zdW5nLmNvbT4NCkNjOiBTaHVh -aCBLaGFuIDxzaHVhaGtoYW5AZ21haWwuY29tPg0KU3VnZ2VzdGVkLWJ5OiByYWZhZWwuai53eXNv -Y2tpQGludGVsLmNvbQ0KLS0tDQoNClJhZmFlbCwNCg0KVGhpcyBpcyB0aGUgZmlyc3QgZHJpdmVy -IHBhdGNoIHRvIGNvbnZlcnQgZHJpdmVycyB0byB1c2UgZGV2X3BtX29wcyBmb3INCnBvd2VyIG1h -bmFnZW1lbnQuIFBsZWFzZSByZXZpZXcgZm9yIHRoZSBhcHByb2FjaCBhbmQgbWFrZSBzdWdnZXN0 -aW9ucyBmb3INCmltcHJvdmVtZW50Lg0KDQp0aGFua3MsDQotLSBTaHVhaA0KDQogZHJpdmVycy9u -ZXQvd2lyZWxlc3MvbXdpZmlleC9wY2llLmMgfCAgIDMzICsrKysrKysrKysrKysrKysrKysrKysr -KysrKy0tLS0tLQ0KIDEgZmlsZSBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9u -cygtKQ0KDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbXdpZmlleC9wY2llLmMg -Yi9kcml2ZXJzL25ldC93aXJlbGVzcy9td2lmaWV4L3BjaWUuYw0KaW5kZXggMjBjOWM0Yy4uYTI3 -MWM2NCAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL213aWZpZXgvcGNpZS5jDQor -KysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9td2lmaWV4L3BjaWUuYw0KQEAgLTg1LDcgKzg1LDcg -QEAgc3RhdGljIGJvb2wgbXdpZmlleF9wY2llX29rX3RvX2FjY2Vzc19odyhzdHJ1Y3QgbXdpZmll -eF9hZGFwdGVyICphZGFwdGVyKQ0KICAqIElmIGFscmVhZHkgbm90IHN1c3BlbmRlZCwgdGhpcyBm -dW5jdGlvbiBhbGxvY2F0ZXMgYW5kIHNlbmRzIGEgaG9zdA0KICAqIHNsZWVwIGFjdGl2YXRlIHJl -cXVlc3QgdG8gdGhlIGZpcm13YXJlIGFuZCB0dXJucyBvZmYgdGhlIHRyYWZmaWMuDQogICovDQot -c3RhdGljIGludCBtd2lmaWV4X3BjaWVfc3VzcGVuZChzdHJ1Y3QgcGNpX2RldiAqcGRldiwgcG1f -bWVzc2FnZV90IHN0YXRlKQ0KK3N0YXRpYyBpbnQgX19td2lmaWV4X3BjaWVfc3VzcGVuZChzdHJ1 -Y3QgcGNpX2RldiAqcGRldikNCiB7DQogCXN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXI7 -DQogCXN0cnVjdCBwY2llX3NlcnZpY2VfY2FyZCAqY2FyZDsNCkBAIC0xMTIsNiArMTEyLDEzIEBA -IHN0YXRpYyBpbnQgbXdpZmlleF9wY2llX3N1c3BlbmQoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHBt -X21lc3NhZ2VfdCBzdGF0ZSkNCiAJcmV0dXJuIDA7DQogfQ0KIA0KK3N0YXRpYyBpbnQgbXdpZmll -eF9wY2llX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQ0KK3sNCisJc3RydWN0IHBjaV9kZXYg -KnBkZXYgPSB0b19wY2lfZGV2KGRldik7DQorDQorCXJldHVybiBfX213aWZpZXhfcGNpZV9zdXNw -ZW5kKHBkZXYpOw0KK30NCisNCiAvKg0KICAqIEtlcm5lbCBuZWVkcyB0byBzdXNwZW5kIGFsbCBm -dW5jdGlvbnMgc2VwYXJhdGVseS4gVGhlcmVmb3JlIGFsbA0KICAqIHJlZ2lzdGVyZWQgZnVuY3Rp -b25zIG11c3QgaGF2ZSBkcml2ZXJzIHdpdGggc3VzcGVuZCBhbmQgcmVzdW1lDQpAQCAtMTIwLDcg -KzEyNyw3IEBAIHN0YXRpYyBpbnQgbXdpZmlleF9wY2llX3N1c3BlbmQoc3RydWN0IHBjaV9kZXYg -KnBkZXYsIHBtX21lc3NhZ2VfdCBzdGF0ZSkNCiAgKiBJZiBhbHJlYWR5IG5vdCByZXN1bWVkLCB0 -aGlzIGZ1bmN0aW9uIHR1cm5zIG9uIHRoZSB0cmFmZmljIGFuZA0KICAqIHNlbmRzIGEgaG9zdCBz -bGVlcCBjYW5jZWwgcmVxdWVzdCB0byB0aGUgZmlybXdhcmUuDQogICovDQotc3RhdGljIGludCBt -d2lmaWV4X3BjaWVfcmVzdW1lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQ0KK3N0YXRpYyBpbnQgX19t -d2lmaWV4X3BjaWVfcmVzdW1lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQ0KIHsNCiAJc3RydWN0IG13 -aWZpZXhfYWRhcHRlciAqYWRhcHRlcjsNCiAJc3RydWN0IHBjaWVfc2VydmljZV9jYXJkICpjYXJk -Ow0KQEAgLTE1MCw2ICsxNTcsMTMgQEAgc3RhdGljIGludCBtd2lmaWV4X3BjaWVfcmVzdW1lKHN0 -cnVjdCBwY2lfZGV2ICpwZGV2KQ0KIA0KIAlyZXR1cm4gMDsNCiB9DQorDQorc3RhdGljIGludCBt -d2lmaWV4X3BjaWVfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikNCit7DQorCXN0cnVjdCBwY2lf -ZGV2ICpwZGV2ID0gdG9fcGNpX2RldihkZXYpOw0KKw0KKwlyZXR1cm4gX19td2lmaWV4X3BjaWVf -cmVzdW1lKHBkZXYpOw0KK30NCiAjZW5kaWYNCiANCiAvKg0KQEAgLTIxMyw3ICsyMjcsNyBAQCBz -dGF0aWMgdm9pZCBtd2lmaWV4X3BjaWVfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQ0KIAlp -ZiAodXNlcl9ybW1vZCkgew0KICNpZmRlZiBDT05GSUdfUE0NCiAJCWlmIChhZGFwdGVyLT5pc19z -dXNwZW5kZWQpDQotCQkJbXdpZmlleF9wY2llX3Jlc3VtZShwZGV2KTsNCisJCQlfX213aWZpZXhf -cGNpZV9yZXN1bWUocGRldik7DQogI2VuZGlmDQogDQogCQlmb3IgKGkgPSAwOyBpIDwgYWRhcHRl -ci0+cHJpdl9udW07IGkrKykNCkBAIC0yNDksNiArMjYzLDEzIEBAIHN0YXRpYyBERUZJTkVfUENJ -X0RFVklDRV9UQUJMRShtd2lmaWV4X2lkcykgPSB7DQogDQogTU9EVUxFX0RFVklDRV9UQUJMRShw -Y2ksIG13aWZpZXhfaWRzKTsNCiANCisjaWZkZWYgQ09ORklHX1BNDQorLyogUG93ZXIgTWFuYWdl -bWVudCBIb29rcyAqLw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBtd2lmaWV4X3Bj -aWVfcG1fb3BzID0gew0KKwlTRVRfU1lTVEVNX1NMRUVQX1BNX09QUyhtd2lmaWV4X3BjaWVfc3Vz -cGVuZCwgbXdpZmlleF9wY2llX3Jlc3VtZSkNCit9Ow0KKyNlbmRpZg0KKw0KIC8qIFBDSSBEZXZp -Y2UgRHJpdmVyICovDQogc3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIF9fcmVmZGF0YSBtd2lmaWV4 -X3BjaWUgPSB7DQogCS5uYW1lICAgICA9ICJtd2lmaWV4X3BjaWUiLA0KQEAgLTI1Niw5ICsyNzcs -OSBAQCBzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgX19yZWZkYXRhIG13aWZpZXhfcGNpZSA9IHsN -CiAJLnByb2JlICAgID0gbXdpZmlleF9wY2llX3Byb2JlLA0KIAkucmVtb3ZlICAgPSBtd2lmaWV4 -X3BjaWVfcmVtb3ZlLA0KICNpZmRlZiBDT05GSUdfUE0NCi0JLyogUG93ZXIgTWFuYWdlbWVudCBI -b29rcyAqLw0KLQkuc3VzcGVuZCAgPSBtd2lmaWV4X3BjaWVfc3VzcGVuZCwNCi0JLnJlc3VtZSAg -ID0gbXdpZmlleF9wY2llX3Jlc3VtZSwNCisJLmRyaXZlciAgID0gew0KKwkJLnBtID0gJm13aWZp -ZXhfcGNpZV9wbV9vcHMsDQorCX0sDQogI2VuZGlmDQogfTsNCiANCi0tIA0KMS43LjEwLjQNCg0K -DQo= +Convert the driver to use dev_pm_ops for power management and remove Legacy PM +handling. This change re-uses existing suspend and resume interfaces for +dev_pm_ops. + +Signed-off-by: Shuah Khan <shuah.kh@samsung.com> +Cc: Shuah Khan <shuahkhan@gmail.com> +Suggested-by: rafael.j.wysocki@intel.com +--- + +Rafael, + +This is the first driver patch to convert drivers to use dev_pm_ops for +power management. Please review for the approach and make suggestions for +improvement. + +thanks, +-- Shuah + + drivers/net/wireless/mwifiex/pcie.c | 33 +++++++++++++++++++++++++++------ + 1 file changed, 27 insertions(+), 6 deletions(-) + +diff --git a/drivers/net/wireless/mwifiex/pcie.c b/drivers/net/wireless/mwifiex/pcie.c +index 20c9c4c..a271c64 100644 +--- a/drivers/net/wireless/mwifiex/pcie.c ++++ b/drivers/net/wireless/mwifiex/pcie.c +@@ -85,7 +85,7 @@ static bool mwifiex_pcie_ok_to_access_hw(struct mwifiex_adapter *adapter) + * If already not suspended, this function allocates and sends a host + * sleep activate request to the firmware and turns off the traffic. + */ +-static int mwifiex_pcie_suspend(struct pci_dev *pdev, pm_message_t state) ++static int __mwifiex_pcie_suspend(struct pci_dev *pdev) + { + struct mwifiex_adapter *adapter; + struct pcie_service_card *card; +@@ -112,6 +112,13 @@ static int mwifiex_pcie_suspend(struct pci_dev *pdev, pm_message_t state) + return 0; + } + ++static int mwifiex_pcie_suspend(struct device *dev) ++{ ++ struct pci_dev *pdev = to_pci_dev(dev); ++ ++ return __mwifiex_pcie_suspend(pdev); ++} ++ + /* + * Kernel needs to suspend all functions separately. Therefore all + * registered functions must have drivers with suspend and resume +@@ -120,7 +127,7 @@ static int mwifiex_pcie_suspend(struct pci_dev *pdev, pm_message_t state) + * If already not resumed, this function turns on the traffic and + * sends a host sleep cancel request to the firmware. + */ +-static int mwifiex_pcie_resume(struct pci_dev *pdev) ++static int __mwifiex_pcie_resume(struct pci_dev *pdev) + { + struct mwifiex_adapter *adapter; + struct pcie_service_card *card; +@@ -150,6 +157,13 @@ static int mwifiex_pcie_resume(struct pci_dev *pdev) + + return 0; + } ++ ++static int mwifiex_pcie_resume(struct device *dev) ++{ ++ struct pci_dev *pdev = to_pci_dev(dev); ++ ++ return __mwifiex_pcie_resume(pdev); ++} + #endif + + /* +@@ -213,7 +227,7 @@ static void mwifiex_pcie_remove(struct pci_dev *pdev) + if (user_rmmod) { + #ifdef CONFIG_PM + if (adapter->is_suspended) +- mwifiex_pcie_resume(pdev); ++ __mwifiex_pcie_resume(pdev); + #endif + + for (i = 0; i < adapter->priv_num; i++) +@@ -249,6 +263,13 @@ static DEFINE_PCI_DEVICE_TABLE(mwifiex_ids) = { + + MODULE_DEVICE_TABLE(pci, mwifiex_ids); + ++#ifdef CONFIG_PM ++/* Power Management Hooks */ ++static const struct dev_pm_ops mwifiex_pcie_pm_ops = { ++ SET_SYSTEM_SLEEP_PM_OPS(mwifiex_pcie_suspend, mwifiex_pcie_resume) ++}; ++#endif ++ + /* PCI Device Driver */ + static struct pci_driver __refdata mwifiex_pcie = { + .name = "mwifiex_pcie", +@@ -256,9 +277,9 @@ static struct pci_driver __refdata mwifiex_pcie = { + .probe = mwifiex_pcie_probe, + .remove = mwifiex_pcie_remove, + #ifdef CONFIG_PM +- /* Power Management Hooks */ +- .suspend = mwifiex_pcie_suspend, +- .resume = mwifiex_pcie_resume, ++ .driver = { ++ .pm = &mwifiex_pcie_pm_ops, ++ }, + #endif + }; + +-- +1.7.10.4 diff --git a/a/content_digest b/N2/content_digest index 2cde3e3..95b5a26 100644 --- a/a/content_digest +++ b/N2/content_digest @@ -11,66 +11,114 @@ " Shuah Khan <shuah.kh@samsung.com>\0" "\00:1\0" "b\0" - "Q29udmVydCB0aGUgZHJpdmVyIHRvIHVzZSBkZXZfcG1fb3BzIGZvciBwb3dlciBtYW5hZ2VtZW50\n" - "IGFuZCByZW1vdmUgTGVnYWN5IFBNDQpoYW5kbGluZy4gVGhpcyBjaGFuZ2UgcmUtdXNlcyBleGlz\n" - "dGluZyBzdXNwZW5kIGFuZCByZXN1bWUgaW50ZXJmYWNlcyBmb3IgDQpkZXZfcG1fb3BzLg0KDQpT\n" - "aWduZWQtb2ZmLWJ5OiBTaHVhaCBLaGFuIDxzaHVhaC5raEBzYW1zdW5nLmNvbT4NCkNjOiBTaHVh\n" - "aCBLaGFuIDxzaHVhaGtoYW5AZ21haWwuY29tPg0KU3VnZ2VzdGVkLWJ5OiByYWZhZWwuai53eXNv\n" - "Y2tpQGludGVsLmNvbQ0KLS0tDQoNClJhZmFlbCwNCg0KVGhpcyBpcyB0aGUgZmlyc3QgZHJpdmVy\n" - "IHBhdGNoIHRvIGNvbnZlcnQgZHJpdmVycyB0byB1c2UgZGV2X3BtX29wcyBmb3INCnBvd2VyIG1h\n" - "bmFnZW1lbnQuIFBsZWFzZSByZXZpZXcgZm9yIHRoZSBhcHByb2FjaCBhbmQgbWFrZSBzdWdnZXN0\n" - "aW9ucyBmb3INCmltcHJvdmVtZW50Lg0KDQp0aGFua3MsDQotLSBTaHVhaA0KDQogZHJpdmVycy9u\n" - "ZXQvd2lyZWxlc3MvbXdpZmlleC9wY2llLmMgfCAgIDMzICsrKysrKysrKysrKysrKysrKysrKysr\n" - "KysrKy0tLS0tLQ0KIDEgZmlsZSBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9u\n" - "cygtKQ0KDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbXdpZmlleC9wY2llLmMg\n" - "Yi9kcml2ZXJzL25ldC93aXJlbGVzcy9td2lmaWV4L3BjaWUuYw0KaW5kZXggMjBjOWM0Yy4uYTI3\n" - "MWM2NCAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL213aWZpZXgvcGNpZS5jDQor\n" - "KysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9td2lmaWV4L3BjaWUuYw0KQEAgLTg1LDcgKzg1LDcg\n" - "QEAgc3RhdGljIGJvb2wgbXdpZmlleF9wY2llX29rX3RvX2FjY2Vzc19odyhzdHJ1Y3QgbXdpZmll\n" - "eF9hZGFwdGVyICphZGFwdGVyKQ0KICAqIElmIGFscmVhZHkgbm90IHN1c3BlbmRlZCwgdGhpcyBm\n" - "dW5jdGlvbiBhbGxvY2F0ZXMgYW5kIHNlbmRzIGEgaG9zdA0KICAqIHNsZWVwIGFjdGl2YXRlIHJl\n" - "cXVlc3QgdG8gdGhlIGZpcm13YXJlIGFuZCB0dXJucyBvZmYgdGhlIHRyYWZmaWMuDQogICovDQot\n" - "c3RhdGljIGludCBtd2lmaWV4X3BjaWVfc3VzcGVuZChzdHJ1Y3QgcGNpX2RldiAqcGRldiwgcG1f\n" - "bWVzc2FnZV90IHN0YXRlKQ0KK3N0YXRpYyBpbnQgX19td2lmaWV4X3BjaWVfc3VzcGVuZChzdHJ1\n" - "Y3QgcGNpX2RldiAqcGRldikNCiB7DQogCXN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXI7\n" - "DQogCXN0cnVjdCBwY2llX3NlcnZpY2VfY2FyZCAqY2FyZDsNCkBAIC0xMTIsNiArMTEyLDEzIEBA\n" - "IHN0YXRpYyBpbnQgbXdpZmlleF9wY2llX3N1c3BlbmQoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHBt\n" - "X21lc3NhZ2VfdCBzdGF0ZSkNCiAJcmV0dXJuIDA7DQogfQ0KIA0KK3N0YXRpYyBpbnQgbXdpZmll\n" - "eF9wY2llX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQ0KK3sNCisJc3RydWN0IHBjaV9kZXYg\n" - "KnBkZXYgPSB0b19wY2lfZGV2KGRldik7DQorDQorCXJldHVybiBfX213aWZpZXhfcGNpZV9zdXNw\n" - "ZW5kKHBkZXYpOw0KK30NCisNCiAvKg0KICAqIEtlcm5lbCBuZWVkcyB0byBzdXNwZW5kIGFsbCBm\n" - "dW5jdGlvbnMgc2VwYXJhdGVseS4gVGhlcmVmb3JlIGFsbA0KICAqIHJlZ2lzdGVyZWQgZnVuY3Rp\n" - "b25zIG11c3QgaGF2ZSBkcml2ZXJzIHdpdGggc3VzcGVuZCBhbmQgcmVzdW1lDQpAQCAtMTIwLDcg\n" - "KzEyNyw3IEBAIHN0YXRpYyBpbnQgbXdpZmlleF9wY2llX3N1c3BlbmQoc3RydWN0IHBjaV9kZXYg\n" - "KnBkZXYsIHBtX21lc3NhZ2VfdCBzdGF0ZSkNCiAgKiBJZiBhbHJlYWR5IG5vdCByZXN1bWVkLCB0\n" - "aGlzIGZ1bmN0aW9uIHR1cm5zIG9uIHRoZSB0cmFmZmljIGFuZA0KICAqIHNlbmRzIGEgaG9zdCBz\n" - "bGVlcCBjYW5jZWwgcmVxdWVzdCB0byB0aGUgZmlybXdhcmUuDQogICovDQotc3RhdGljIGludCBt\n" - "d2lmaWV4X3BjaWVfcmVzdW1lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQ0KK3N0YXRpYyBpbnQgX19t\n" - "d2lmaWV4X3BjaWVfcmVzdW1lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQ0KIHsNCiAJc3RydWN0IG13\n" - "aWZpZXhfYWRhcHRlciAqYWRhcHRlcjsNCiAJc3RydWN0IHBjaWVfc2VydmljZV9jYXJkICpjYXJk\n" - "Ow0KQEAgLTE1MCw2ICsxNTcsMTMgQEAgc3RhdGljIGludCBtd2lmaWV4X3BjaWVfcmVzdW1lKHN0\n" - "cnVjdCBwY2lfZGV2ICpwZGV2KQ0KIA0KIAlyZXR1cm4gMDsNCiB9DQorDQorc3RhdGljIGludCBt\n" - "d2lmaWV4X3BjaWVfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikNCit7DQorCXN0cnVjdCBwY2lf\n" - "ZGV2ICpwZGV2ID0gdG9fcGNpX2RldihkZXYpOw0KKw0KKwlyZXR1cm4gX19td2lmaWV4X3BjaWVf\n" - "cmVzdW1lKHBkZXYpOw0KK30NCiAjZW5kaWYNCiANCiAvKg0KQEAgLTIxMyw3ICsyMjcsNyBAQCBz\n" - "dGF0aWMgdm9pZCBtd2lmaWV4X3BjaWVfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQ0KIAlp\n" - "ZiAodXNlcl9ybW1vZCkgew0KICNpZmRlZiBDT05GSUdfUE0NCiAJCWlmIChhZGFwdGVyLT5pc19z\n" - "dXNwZW5kZWQpDQotCQkJbXdpZmlleF9wY2llX3Jlc3VtZShwZGV2KTsNCisJCQlfX213aWZpZXhf\n" - "cGNpZV9yZXN1bWUocGRldik7DQogI2VuZGlmDQogDQogCQlmb3IgKGkgPSAwOyBpIDwgYWRhcHRl\n" - "ci0+cHJpdl9udW07IGkrKykNCkBAIC0yNDksNiArMjYzLDEzIEBAIHN0YXRpYyBERUZJTkVfUENJ\n" - "X0RFVklDRV9UQUJMRShtd2lmaWV4X2lkcykgPSB7DQogDQogTU9EVUxFX0RFVklDRV9UQUJMRShw\n" - "Y2ksIG13aWZpZXhfaWRzKTsNCiANCisjaWZkZWYgQ09ORklHX1BNDQorLyogUG93ZXIgTWFuYWdl\n" - "bWVudCBIb29rcyAqLw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBtd2lmaWV4X3Bj\n" - "aWVfcG1fb3BzID0gew0KKwlTRVRfU1lTVEVNX1NMRUVQX1BNX09QUyhtd2lmaWV4X3BjaWVfc3Vz\n" - "cGVuZCwgbXdpZmlleF9wY2llX3Jlc3VtZSkNCit9Ow0KKyNlbmRpZg0KKw0KIC8qIFBDSSBEZXZp\n" - "Y2UgRHJpdmVyICovDQogc3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIF9fcmVmZGF0YSBtd2lmaWV4\n" - "X3BjaWUgPSB7DQogCS5uYW1lICAgICA9ICJtd2lmaWV4X3BjaWUiLA0KQEAgLTI1Niw5ICsyNzcs\n" - "OSBAQCBzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgX19yZWZkYXRhIG13aWZpZXhfcGNpZSA9IHsN\n" - "CiAJLnByb2JlICAgID0gbXdpZmlleF9wY2llX3Byb2JlLA0KIAkucmVtb3ZlICAgPSBtd2lmaWV4\n" - "X3BjaWVfcmVtb3ZlLA0KICNpZmRlZiBDT05GSUdfUE0NCi0JLyogUG93ZXIgTWFuYWdlbWVudCBI\n" - "b29rcyAqLw0KLQkuc3VzcGVuZCAgPSBtd2lmaWV4X3BjaWVfc3VzcGVuZCwNCi0JLnJlc3VtZSAg\n" - "ID0gbXdpZmlleF9wY2llX3Jlc3VtZSwNCisJLmRyaXZlciAgID0gew0KKwkJLnBtID0gJm13aWZp\n" - "ZXhfcGNpZV9wbV9vcHMsDQorCX0sDQogI2VuZGlmDQogfTsNCiANCi0tIA0KMS43LjEwLjQNCg0K\n" - DQo= + "Convert the driver to use dev_pm_ops for power management and remove Legacy PM\n" + "handling. This change re-uses existing suspend and resume interfaces for \n" + "dev_pm_ops.\n" + "\n" + "Signed-off-by: Shuah Khan <shuah.kh@samsung.com>\n" + "Cc: Shuah Khan <shuahkhan@gmail.com>\n" + "Suggested-by: rafael.j.wysocki@intel.com\n" + "---\n" + "\n" + "Rafael,\n" + "\n" + "This is the first driver patch to convert drivers to use dev_pm_ops for\n" + "power management. Please review for the approach and make suggestions for\n" + "improvement.\n" + "\n" + "thanks,\n" + "-- Shuah\n" + "\n" + " drivers/net/wireless/mwifiex/pcie.c | 33 +++++++++++++++++++++++++++------\n" + " 1 file changed, 27 insertions(+), 6 deletions(-)\n" + "\n" + "diff --git a/drivers/net/wireless/mwifiex/pcie.c b/drivers/net/wireless/mwifiex/pcie.c\n" + "index 20c9c4c..a271c64 100644\n" + "--- a/drivers/net/wireless/mwifiex/pcie.c\n" + "+++ b/drivers/net/wireless/mwifiex/pcie.c\n" + "@@ -85,7 +85,7 @@ static bool mwifiex_pcie_ok_to_access_hw(struct mwifiex_adapter *adapter)\n" + " * If already not suspended, this function allocates and sends a host\n" + " * sleep activate request to the firmware and turns off the traffic.\n" + " */\n" + "-static int mwifiex_pcie_suspend(struct pci_dev *pdev, pm_message_t state)\n" + "+static int __mwifiex_pcie_suspend(struct pci_dev *pdev)\n" + " {\n" + " \tstruct mwifiex_adapter *adapter;\n" + " \tstruct pcie_service_card *card;\n" + "@@ -112,6 +112,13 @@ static int mwifiex_pcie_suspend(struct pci_dev *pdev, pm_message_t state)\n" + " \treturn 0;\n" + " }\n" + " \n" + "+static int mwifiex_pcie_suspend(struct device *dev)\n" + "+{\n" + "+\tstruct pci_dev *pdev = to_pci_dev(dev);\n" + "+\n" + "+\treturn __mwifiex_pcie_suspend(pdev);\n" + "+}\n" + "+\n" + " /*\n" + " * Kernel needs to suspend all functions separately. Therefore all\n" + " * registered functions must have drivers with suspend and resume\n" + "@@ -120,7 +127,7 @@ static int mwifiex_pcie_suspend(struct pci_dev *pdev, pm_message_t state)\n" + " * If already not resumed, this function turns on the traffic and\n" + " * sends a host sleep cancel request to the firmware.\n" + " */\n" + "-static int mwifiex_pcie_resume(struct pci_dev *pdev)\n" + "+static int __mwifiex_pcie_resume(struct pci_dev *pdev)\n" + " {\n" + " \tstruct mwifiex_adapter *adapter;\n" + " \tstruct pcie_service_card *card;\n" + "@@ -150,6 +157,13 @@ static int mwifiex_pcie_resume(struct pci_dev *pdev)\n" + " \n" + " \treturn 0;\n" + " }\n" + "+\n" + "+static int mwifiex_pcie_resume(struct device *dev)\n" + "+{\n" + "+\tstruct pci_dev *pdev = to_pci_dev(dev);\n" + "+\n" + "+\treturn __mwifiex_pcie_resume(pdev);\n" + "+}\n" + " #endif\n" + " \n" + " /*\n" + "@@ -213,7 +227,7 @@ static void mwifiex_pcie_remove(struct pci_dev *pdev)\n" + " \tif (user_rmmod) {\n" + " #ifdef CONFIG_PM\n" + " \t\tif (adapter->is_suspended)\n" + "-\t\t\tmwifiex_pcie_resume(pdev);\n" + "+\t\t\t__mwifiex_pcie_resume(pdev);\n" + " #endif\n" + " \n" + " \t\tfor (i = 0; i < adapter->priv_num; i++)\n" + "@@ -249,6 +263,13 @@ static DEFINE_PCI_DEVICE_TABLE(mwifiex_ids) = {\n" + " \n" + " MODULE_DEVICE_TABLE(pci, mwifiex_ids);\n" + " \n" + "+#ifdef CONFIG_PM\n" + "+/* Power Management Hooks */\n" + "+static const struct dev_pm_ops mwifiex_pcie_pm_ops = {\n" + "+\tSET_SYSTEM_SLEEP_PM_OPS(mwifiex_pcie_suspend, mwifiex_pcie_resume)\n" + "+};\n" + "+#endif\n" + "+\n" + " /* PCI Device Driver */\n" + " static struct pci_driver __refdata mwifiex_pcie = {\n" + " \t.name = \"mwifiex_pcie\",\n" + "@@ -256,9 +277,9 @@ static struct pci_driver __refdata mwifiex_pcie = {\n" + " \t.probe = mwifiex_pcie_probe,\n" + " \t.remove = mwifiex_pcie_remove,\n" + " #ifdef CONFIG_PM\n" + "-\t/* Power Management Hooks */\n" + "-\t.suspend = mwifiex_pcie_suspend,\n" + "-\t.resume = mwifiex_pcie_resume,\n" + "+\t.driver = {\n" + "+\t\t.pm = &mwifiex_pcie_pm_ops,\n" + "+\t},\n" + " #endif\n" + " };\n" + " \n" + "-- \n" + 1.7.10.4 -d0502323d7583767ffc3d0790f973620ed32e1e0974b2b6b9efee06d88d95d34 +c78b49147fcf0ce1e463f72214ea9734fbeaec219ef3583cc2ba0f533135c1e4
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.