Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1238385 > unrolled thread
| Started by | Grigoryev Denis <grigoryev@fastwel.ru> |
|---|---|
| First post | 2015-10-02 18:20 +0200 |
| Last post | 2015-10-05 11:50 +0200 |
| Articles | 4 — 3 participants |
Back to article view | Back to linux.kernel
[PATCH] mfd: tps6105x: Use i2c regmap to access registers Grigoryev Denis <grigoryev@fastwel.ru> - 2015-10-02 18:20 +0200
Re: [PATCH] mfd: tps6105x: Use i2c regmap to access registers Mark Brown <broonie@kernel.org> - 2015-10-02 19:40 +0200
Re: [PATCH] mfd: tps6105x: Use i2c regmap to access registers Lee Jones <lee.jones@linaro.org> - 2015-10-05 11:50 +0200
[GIT PULL] Immutable branch between MFD and Regulator for v4.3 Lee Jones <lee.jones@linaro.org> - 2015-10-05 11:50 +0200
| From | Grigoryev Denis <grigoryev@fastwel.ru> |
|---|---|
| Date | 2015-10-02 18:20 +0200 |
| Subject | [PATCH] mfd: tps6105x: Use i2c regmap to access registers |
| Message-ID | <qfbdU-8tf-7@gated-at.bofh.it> |
VGhpcyBwYXRjaCBtb2RpZmllcyB0cHM2MTA1eCBhbmQgYXNzb2NpYXRlZCBmdW5jdGlvbiBkcml2 ZXIgdG8gdXNlIHJlZ21hcAppbnN0ZWFkIG9mIG9wZXJhdGluZyBkaXJlY3RseSBvbiBpMmMuCgpT aWduZWQtb2ZmLWJ5OiBEZW5pcyBHcmlnb3J5ZXYgPGdyaWdvcnlldkBmYXN0d2VsLnJ1PgotLS0K IGRyaXZlcnMvbWZkL3RwczYxMDV4LmMgICAgICAgICAgICAgICAgIHwgNzggKysrKysrLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9yZWd1bGF0b3IvdHBzNjEwNXgtcmVndWxh dG9yLmMgfCAxNiArKystLS0tCiBpbmNsdWRlL2xpbnV4L21mZC90cHM2MTA1eC5oICAgICAgICAg ICB8IDEwICsrLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDI0IGluc2VydGlvbnMoKyksIDgwIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWZkL3RwczYxMDV4LmMgYi9kcml2ZXJzL21m ZC90cHM2MTA1eC5jCmluZGV4IDE4MmViZTAuLjUxYzU0OTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv bWZkL3RwczYxMDV4LmMKKysrIGIvZHJpdmVycy9tZmQvdHBzNjEwNXguYwpAQCAtMTYsNyArMTYs NyBAQAogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgogI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4K ICNpbmNsdWRlIDxsaW51eC9pMmMuaD4KLSNpbmNsdWRlIDxsaW51eC9tdXRleC5oPgorI2luY2x1 ZGUgPGxpbnV4L3JlZ21hcC5oPgogI2luY2x1ZGUgPGxpbnV4L2dwaW8uaD4KICNpbmNsdWRlIDxs aW51eC9zcGlubG9jay5oPgogI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KQEAgLTI1LDczICsyNSwx OCBAQAogI2luY2x1ZGUgPGxpbnV4L21mZC9jb3JlLmg+CiAjaW5jbHVkZSA8bGludXgvbWZkL3Rw czYxMDV4Lmg+CiAKLWludCB0cHM2MTA1eF9zZXQoc3RydWN0IHRwczYxMDV4ICp0cHM2MTA1eCwg dTggcmVnLCB1OCB2YWx1ZSkKLXsKLQlpbnQgcmV0OwotCi0JcmV0ID0gbXV0ZXhfbG9ja19pbnRl cnJ1cHRpYmxlKCZ0cHM2MTA1eC0+bG9jayk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQly ZXQgPSBpMmNfc21idXNfd3JpdGVfYnl0ZV9kYXRhKHRwczYxMDV4LT5jbGllbnQsIHJlZywgdmFs dWUpOwotCW11dGV4X3VubG9jaygmdHBzNjEwNXgtPmxvY2spOwotCWlmIChyZXQgPCAwKQotCQly ZXR1cm4gcmV0OwotCi0JcmV0dXJuIDA7Ci19Ci1FWFBPUlRfU1lNQk9MKHRwczYxMDV4X3NldCk7 Ci0KLWludCB0cHM2MTA1eF9nZXQoc3RydWN0IHRwczYxMDV4ICp0cHM2MTA1eCwgdTggcmVnLCB1 OCAqYnVmKQotewotCWludCByZXQ7Ci0KLQlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUo JnRwczYxMDV4LT5sb2NrKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwotCXJldCA9IGkyY19z bWJ1c19yZWFkX2J5dGVfZGF0YSh0cHM2MTA1eC0+Y2xpZW50LCByZWcpOwotCW11dGV4X3VubG9j aygmdHBzNjEwNXgtPmxvY2spOwotCWlmIChyZXQgPCAwKQotCQlyZXR1cm4gcmV0OwotCi0JKmJ1 ZiA9IHJldDsKLQlyZXR1cm4gMDsKLX0KLUVYUE9SVF9TWU1CT0wodHBzNjEwNXhfZ2V0KTsKLQot LyoKLSAqIE1hc2tzIG9mZiB0aGUgYml0cyBpbiB0aGUgbWFzayBhbmQgc2V0cyB0aGUgYml0cyBp biB0aGUgYml0dmFsdWVzCi0gKiBwYXJhbWV0ZXIgaW4gb25lIGF0b21pYyBvcGVyYXRpb24KLSAq LwotaW50IHRwczYxMDV4X21hc2tfYW5kX3NldChzdHJ1Y3QgdHBzNjEwNXggKnRwczYxMDV4LCB1 OCByZWcsCi0JCQkgIHU4IGJpdG1hc2ssIHU4IGJpdHZhbHVlcykKLXsKLQlpbnQgcmV0OwotCXU4 IHJlZ3ZhbDsKLQotCXJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmdHBzNjEwNXgtPmxv Y2spOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7Ci0JcmV0ID0gaTJjX3NtYnVzX3JlYWRfYnl0 ZV9kYXRhKHRwczYxMDV4LT5jbGllbnQsIHJlZyk7Ci0JaWYgKHJldCA8IDApCi0JCWdvdG8gZmFp bDsKLQlyZWd2YWwgPSByZXQ7Ci0JcmVndmFsID0gKH5iaXRtYXNrICYgcmVndmFsKSB8IChiaXRt YXNrICYgYml0dmFsdWVzKTsKLQlyZXQgPSBpMmNfc21idXNfd3JpdGVfYnl0ZV9kYXRhKHRwczYx MDV4LT5jbGllbnQsIHJlZywgcmVndmFsKTsKLWZhaWw6Ci0JbXV0ZXhfdW5sb2NrKCZ0cHM2MTA1 eC0+bG9jayk7Ci0JaWYgKHJldCA8IDApCi0JCXJldHVybiByZXQ7Ci0KLQlyZXR1cm4gMDsKLX0K LUVYUE9SVF9TWU1CT0wodHBzNjEwNXhfbWFza19hbmRfc2V0KTsKK3N0YXRpYyBzdHJ1Y3QgcmVn bWFwX2NvbmZpZyB0cHM2MTA1eF9yZWdtYXBfY29uZmlnID0geworCS5yZWdfYml0cyA9IDgsCisJ LnZhbF9iaXRzID0gOCwKKwkubWF4X3JlZ2lzdGVyID0gVFBTNjEwNVhfUkVHXzMsCit9OwogCiBz dGF0aWMgaW50IHRwczYxMDV4X3N0YXJ0dXAoc3RydWN0IHRwczYxMDV4ICp0cHM2MTA1eCkKIHsK IAlpbnQgcmV0OwotCXU4IHJlZ3ZhbDsKKwl1bnNpZ25lZCBpbnQgcmVndmFsOwogCi0JcmV0ID0g dHBzNjEwNXhfZ2V0KHRwczYxMDV4LCBUUFM2MTA1WF9SRUdfMCwgJnJlZ3ZhbCk7CisJcmV0ID0g cmVnbWFwX3JlYWQodHBzNjEwNXgtPnJlZ21hcCwgVFBTNjEwNVhfUkVHXzAsICZyZWd2YWwpOwog CWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAJc3dpdGNoIChyZWd2YWwgPj4gVFBTNjEwNVhfUkVH MF9NT0RFX1NISUZUKSB7CkBAIC0xNjUsMTAgKzExMCwxMyBAQCBzdGF0aWMgaW50IHRwczYxMDV4 X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsCiAJaWYgKCF0cHM2MTA1eCkKIAkJcmV0 dXJuIC1FTk9NRU07CiAKKwl0cHM2MTA1eC0+cmVnbWFwID0gZGV2bV9yZWdtYXBfaW5pdF9pMmMo Y2xpZW50LCAmdHBzNjEwNXhfcmVnbWFwX2NvbmZpZyk7CisJaWYgKElTX0VSUih0cHM2MTA1eC0+ cmVnbWFwKSkKKwkJcmV0dXJuIFBUUl9FUlIodHBzNjEwNXgtPnJlZ21hcCk7CisKIAlpMmNfc2V0 X2NsaWVudGRhdGEoY2xpZW50LCB0cHM2MTA1eCk7CiAJdHBzNjEwNXgtPmNsaWVudCA9IGNsaWVu dDsKIAl0cHM2MTA1eC0+cGRhdGEgPSBwZGF0YTsKLQltdXRleF9pbml0KCZ0cHM2MTA1eC0+bG9j ayk7CiAKIAlyZXQgPSB0cHM2MTA1eF9zdGFydHVwKHRwczYxMDV4KTsKIAlpZiAocmV0KSB7CkBA IC0yMTIsNyArMTYwLDcgQEAgc3RhdGljIGludCB0cHM2MTA1eF9yZW1vdmUoc3RydWN0IGkyY19j bGllbnQgKmNsaWVudCkKIAltZmRfcmVtb3ZlX2RldmljZXMoJmNsaWVudC0+ZGV2KTsKIAogCS8q IFB1dCBjaGlwIGluIHNodXRkb3duIG1vZGUgKi8KLQl0cHM2MTA1eF9tYXNrX2FuZF9zZXQodHBz NjEwNXgsIFRQUzYxMDVYX1JFR18wLAorCXJlZ21hcF91cGRhdGVfYml0cyh0cHM2MTA1eC0+cmVn bWFwLCBUUFM2MTA1WF9SRUdfMCwKIAkJVFBTNjEwNVhfUkVHMF9NT0RFX01BU0ssCiAJCVRQUzYx MDVYX01PREVfU0hVVERPV04gPDwgVFBTNjEwNVhfUkVHMF9NT0RFX1NISUZUKTsKIApkaWZmIC0t Z2l0IGEvZHJpdmVycy9yZWd1bGF0b3IvdHBzNjEwNXgtcmVndWxhdG9yLmMgYi9kcml2ZXJzL3Jl Z3VsYXRvci90cHM2MTA1eC1yZWd1bGF0b3IuYwppbmRleCAzNTEwYjNlLi5kZGM0ZjEwIDEwMDY0 NAotLS0gYS9kcml2ZXJzL3JlZ3VsYXRvci90cHM2MTA1eC1yZWd1bGF0b3IuYworKysgYi9kcml2 ZXJzL3JlZ3VsYXRvci90cHM2MTA1eC1yZWd1bGF0b3IuYwpAQCAtMTQsNyArMTQsNyBAQAogI2lu Y2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgogI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KICNpbmNsdWRl IDxsaW51eC9lcnIuaD4KLSNpbmNsdWRlIDxsaW51eC9pMmMuaD4KKyNpbmNsdWRlIDxsaW51eC9y ZWdtYXAuaD4KICNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KICNpbmNsdWRlIDxs aW51eC9yZWd1bGF0b3IvZHJpdmVyLmg+CiAjaW5jbHVkZSA8bGludXgvbWZkL2NvcmUuaD4KQEAg LTMzLDcgKzMzLDcgQEAgc3RhdGljIGludCB0cHM2MTA1eF9yZWd1bGF0b3JfZW5hYmxlKHN0cnVj dCByZWd1bGF0b3JfZGV2ICpyZGV2KQogCWludCByZXQ7CiAKIAkvKiBBY3RpdmF0ZSB2b2x0YWdl IG1vZGUgKi8KLQlyZXQgPSB0cHM2MTA1eF9tYXNrX2FuZF9zZXQodHBzNjEwNXgsIFRQUzYxMDVY X1JFR18wLAorCXJldCA9IHJlZ21hcF91cGRhdGVfYml0cyh0cHM2MTA1eC0+cmVnbWFwLCBUUFM2 MTA1WF9SRUdfMCwKIAkJVFBTNjEwNVhfUkVHMF9NT0RFX01BU0ssCiAJCVRQUzYxMDVYX1JFRzBf TU9ERV9WT0xUQUdFIDw8IFRQUzYxMDVYX1JFRzBfTU9ERV9TSElGVCk7CiAJaWYgKHJldCkKQEAg LTQ4LDcgKzQ4LDcgQEAgc3RhdGljIGludCB0cHM2MTA1eF9yZWd1bGF0b3JfZGlzYWJsZShzdHJ1 Y3QgcmVndWxhdG9yX2RldiAqcmRldikKIAlpbnQgcmV0OwogCiAJLyogU2V0IGludG8gc2h1dGRv d24gbW9kZSAqLwotCXJldCA9IHRwczYxMDV4X21hc2tfYW5kX3NldCh0cHM2MTA1eCwgVFBTNjEw NVhfUkVHXzAsCisJcmV0ID0gcmVnbWFwX3VwZGF0ZV9iaXRzKHRwczYxMDV4LT5yZWdtYXAsIFRQ UzYxMDVYX1JFR18wLAogCQlUUFM2MTA1WF9SRUcwX01PREVfTUFTSywKIAkJVFBTNjEwNVhfUkVH MF9NT0RFX1NIVVRET1dOIDw8IFRQUzYxMDVYX1JFRzBfTU9ERV9TSElGVCk7CiAJaWYgKHJldCkK QEAgLTYwLDEwICs2MCwxMCBAQCBzdGF0aWMgaW50IHRwczYxMDV4X3JlZ3VsYXRvcl9kaXNhYmxl KHN0cnVjdCByZWd1bGF0b3JfZGV2ICpyZGV2KQogc3RhdGljIGludCB0cHM2MTA1eF9yZWd1bGF0 b3JfaXNfZW5hYmxlZChzdHJ1Y3QgcmVndWxhdG9yX2RldiAqcmRldikKIHsKIAlzdHJ1Y3QgdHBz NjEwNXggKnRwczYxMDV4ID0gcmRldl9nZXRfZHJ2ZGF0YShyZGV2KTsKLQl1OCByZWd2YWw7CisJ dW5zaWduZWQgaW50IHJlZ3ZhbDsKIAlpbnQgcmV0OwogCi0JcmV0ID0gdHBzNjEwNXhfZ2V0KHRw czYxMDV4LCBUUFM2MTA1WF9SRUdfMCwgJnJlZ3ZhbCk7CisJcmV0ID0gcmVnbWFwX3JlYWQodHBz NjEwNXgtPnJlZ21hcCwgVFBTNjEwNVhfUkVHXzAsICZyZWd2YWwpOwogCWlmIChyZXQpCiAJCXJl dHVybiByZXQ7CiAJcmVndmFsICY9IFRQUzYxMDVYX1JFRzBfTU9ERV9NQVNLOwpAQCAtNzgsMTAg Kzc4LDEwIEBAIHN0YXRpYyBpbnQgdHBzNjEwNXhfcmVndWxhdG9yX2lzX2VuYWJsZWQoc3RydWN0 IHJlZ3VsYXRvcl9kZXYgKnJkZXYpCiBzdGF0aWMgaW50IHRwczYxMDV4X3JlZ3VsYXRvcl9nZXRf dm9sdGFnZV9zZWwoc3RydWN0IHJlZ3VsYXRvcl9kZXYgKnJkZXYpCiB7CiAJc3RydWN0IHRwczYx MDV4ICp0cHM2MTA1eCA9IHJkZXZfZ2V0X2RydmRhdGEocmRldik7Ci0JdTggcmVndmFsOworCXVu c2lnbmVkIGludCByZWd2YWw7CiAJaW50IHJldDsKIAotCXJldCA9IHRwczYxMDV4X2dldCh0cHM2 MTA1eCwgVFBTNjEwNVhfUkVHXzAsICZyZWd2YWwpOworCXJldCA9IHJlZ21hcF9yZWFkKHRwczYx MDV4LT5yZWdtYXAsIFRQUzYxMDVYX1JFR18wLCAmcmVndmFsKTsKIAlpZiAocmV0KQogCQlyZXR1 cm4gcmV0OwogCkBAIC05Niw3ICs5Niw3IEBAIHN0YXRpYyBpbnQgdHBzNjEwNXhfcmVndWxhdG9y X3NldF92b2x0YWdlX3NlbChzdHJ1Y3QgcmVndWxhdG9yX2RldiAqcmRldiwKIAlzdHJ1Y3QgdHBz NjEwNXggKnRwczYxMDV4ID0gcmRldl9nZXRfZHJ2ZGF0YShyZGV2KTsKIAlpbnQgcmV0OwogCi0J cmV0ID0gdHBzNjEwNXhfbWFza19hbmRfc2V0KHRwczYxMDV4LCBUUFM2MTA1WF9SRUdfMCwKKwly ZXQgPSByZWdtYXBfdXBkYXRlX2JpdHModHBzNjEwNXgtPnJlZ21hcCwgVFBTNjEwNVhfUkVHXzAs CiAJCQkJICAgIFRQUzYxMDVYX1JFRzBfVk9MVEFHRV9NQVNLLAogCQkJCSAgICBzZWxlY3RvciA8 PCBUUFM2MTA1WF9SRUcwX1ZPTFRBR0VfU0hJRlQpOwogCWlmIChyZXQpCmRpZmYgLS1naXQgYS9p bmNsdWRlL2xpbnV4L21mZC90cHM2MTA1eC5oIGIvaW5jbHVkZS9saW51eC9tZmQvdHBzNjEwNXgu aAppbmRleCAzODY3NDNkLi44YmM1MTE4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L21mZC90 cHM2MTA1eC5oCisrKyBiL2luY2x1ZGUvbGludXgvbWZkL3RwczYxMDV4LmgKQEAgLTEwLDYgKzEw LDcgQEAKICNkZWZpbmUgTUZEX1RQUzYxMDVYX0gKIAogI2luY2x1ZGUgPGxpbnV4L2kyYy5oPgor I2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5oPgogI2luY2x1ZGUgPGxpbnV4L3JlZ3VsYXRvci9tYWNo aW5lLmg+CiAKIC8qCkBAIC04MiwyMCArODMsMTUgQEAgc3RydWN0IHRwczYxMDV4X3BsYXRmb3Jt X2RhdGEgewogCiAvKioKICAqIHN0cnVjdCB0cHM2MTA1eCAtIHN0YXRlIGhvbGRlciBmb3IgdGhl IFRQUzYxMDV4IGRyaXZlcnMKLSAqIEBtdXRleDogbXV0ZXggdG8gc2VyaWFsaXplIEkyQyBhY2Nl c3NlcwogICogQGkyY19jbGllbnQ6IGNvcnJlc3BvbmRpbmcgSTJDIGNsaWVudAogICogQHJlZ3Vs YXRvcjogcmVndWxhdG9yIGRldmljZSBpZiB1c2VkIGluIHZvbHRhZ2UgbW9kZQorICogQHJlZ21h cDogdXNlZCBmb3IgaTJjIGNvbW11bmNhdGlvbiBvbiBhY2Nlc3NpbmcgcmVnaXN0ZXJzCiAgKi8K IHN0cnVjdCB0cHM2MTA1eCB7CiAJc3RydWN0IHRwczYxMDV4X3BsYXRmb3JtX2RhdGEgKnBkYXRh OwotCXN0cnVjdCBtdXRleAkJbG9jazsKIAlzdHJ1Y3QgaTJjX2NsaWVudAkqY2xpZW50OwogCXN0 cnVjdCByZWd1bGF0b3JfZGV2CSpyZWd1bGF0b3I7CisJc3RydWN0IHJlZ21hcAkJKnJlZ21hcDsK IH07CiAKLWV4dGVybiBpbnQgdHBzNjEwNXhfc2V0KHN0cnVjdCB0cHM2MTA1eCAqdHBzNjEwNXgs IHU4IHJlZywgdTggdmFsdWUpOwotZXh0ZXJuIGludCB0cHM2MTA1eF9nZXQoc3RydWN0IHRwczYx MDV4ICp0cHM2MTA1eCwgdTggcmVnLCB1OCAqYnVmKTsKLWV4dGVybiBpbnQgdHBzNjEwNXhfbWFz a19hbmRfc2V0KHN0cnVjdCB0cHM2MTA1eCAqdHBzNjEwNXgsIHU4IHJlZywKLQkJCQkgdTggYml0 bWFzaywgdTggYml0dmFsdWVzKTsKLQogI2VuZGlmCi0tIAoxLjkuMQoK -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [next] | [standalone]
| From | Mark Brown <broonie@kernel.org> |
|---|---|
| Date | 2015-10-02 19:40 +0200 |
| Message-ID | <qfctl-1MB-33@gated-at.bofh.it> |
| In reply to | #1238385 |
[Multipart message — attachments visible in raw view] — view raw
On Fri, Oct 02, 2015 at 04:14:41PM +0000, Grigoryev Denis wrote: > This patch modifies tps6105x and associated function driver to use regmap > instead of operating directly on i2c. Acked-by: Mark Brown <broonie@kernel.org> You could also have done this by just implementing the existing functions in terms of the regmap ones as static inlines and avoided the need for cross tree stuff.
[toc] | [prev] | [next] | [standalone]
| From | Lee Jones <lee.jones@linaro.org> |
|---|---|
| Date | 2015-10-05 11:50 +0200 |
| Message-ID | <qgaz8-3zT-1@gated-at.bofh.it> |
| In reply to | #1238385 |
On Fri, 02 Oct 2015, Grigoryev Denis wrote:
> This patch modifies tps6105x and associated function driver to use regmap
> instead of operating directly on i2c.
>
> Signed-off-by: Denis Grigoryev <grigoryev@fastwel.ru>
> ---
> drivers/mfd/tps6105x.c | 78 ++++++----------------------------
> drivers/regulator/tps6105x-regulator.c | 16 +++----
> include/linux/mfd/tps6105x.h | 10 ++---
> 3 files changed, 24 insertions(+), 80 deletions(-)
Applied, thanks.
> diff --git a/drivers/mfd/tps6105x.c b/drivers/mfd/tps6105x.c
> index 182ebe0..51c5495 100644
> --- a/drivers/mfd/tps6105x.c
> +++ b/drivers/mfd/tps6105x.c
> @@ -16,7 +16,7 @@
> #include <linux/module.h>
> #include <linux/init.h>
> #include <linux/i2c.h>
> -#include <linux/mutex.h>
> +#include <linux/regmap.h>
> #include <linux/gpio.h>
> #include <linux/spinlock.h>
> #include <linux/slab.h>
> @@ -25,73 +25,18 @@
> #include <linux/mfd/core.h>
> #include <linux/mfd/tps6105x.h>
>
> -int tps6105x_set(struct tps6105x *tps6105x, u8 reg, u8 value)
> -{
> - int ret;
> -
> - ret = mutex_lock_interruptible(&tps6105x->lock);
> - if (ret)
> - return ret;
> - ret = i2c_smbus_write_byte_data(tps6105x->client, reg, value);
> - mutex_unlock(&tps6105x->lock);
> - if (ret < 0)
> - return ret;
> -
> - return 0;
> -}
> -EXPORT_SYMBOL(tps6105x_set);
> -
> -int tps6105x_get(struct tps6105x *tps6105x, u8 reg, u8 *buf)
> -{
> - int ret;
> -
> - ret = mutex_lock_interruptible(&tps6105x->lock);
> - if (ret)
> - return ret;
> - ret = i2c_smbus_read_byte_data(tps6105x->client, reg);
> - mutex_unlock(&tps6105x->lock);
> - if (ret < 0)
> - return ret;
> -
> - *buf = ret;
> - return 0;
> -}
> -EXPORT_SYMBOL(tps6105x_get);
> -
> -/*
> - * Masks off the bits in the mask and sets the bits in the bitvalues
> - * parameter in one atomic operation
> - */
> -int tps6105x_mask_and_set(struct tps6105x *tps6105x, u8 reg,
> - u8 bitmask, u8 bitvalues)
> -{
> - int ret;
> - u8 regval;
> -
> - ret = mutex_lock_interruptible(&tps6105x->lock);
> - if (ret)
> - return ret;
> - ret = i2c_smbus_read_byte_data(tps6105x->client, reg);
> - if (ret < 0)
> - goto fail;
> - regval = ret;
> - regval = (~bitmask & regval) | (bitmask & bitvalues);
> - ret = i2c_smbus_write_byte_data(tps6105x->client, reg, regval);
> -fail:
> - mutex_unlock(&tps6105x->lock);
> - if (ret < 0)
> - return ret;
> -
> - return 0;
> -}
> -EXPORT_SYMBOL(tps6105x_mask_and_set);
> +static struct regmap_config tps6105x_regmap_config = {
> + .reg_bits = 8,
> + .val_bits = 8,
> + .max_register = TPS6105X_REG_3,
> +};
>
> static int tps6105x_startup(struct tps6105x *tps6105x)
> {
> int ret;
> - u8 regval;
> + unsigned int regval;
>
> - ret = tps6105x_get(tps6105x, TPS6105X_REG_0, ®val);
> + ret = regmap_read(tps6105x->regmap, TPS6105X_REG_0, ®val);
> if (ret)
> return ret;
> switch (regval >> TPS6105X_REG0_MODE_SHIFT) {
> @@ -165,10 +110,13 @@ static int tps6105x_probe(struct i2c_client *client,
> if (!tps6105x)
> return -ENOMEM;
>
> + tps6105x->regmap = devm_regmap_init_i2c(client, &tps6105x_regmap_config);
> + if (IS_ERR(tps6105x->regmap))
> + return PTR_ERR(tps6105x->regmap);
> +
> i2c_set_clientdata(client, tps6105x);
> tps6105x->client = client;
> tps6105x->pdata = pdata;
> - mutex_init(&tps6105x->lock);
>
> ret = tps6105x_startup(tps6105x);
> if (ret) {
> @@ -212,7 +160,7 @@ static int tps6105x_remove(struct i2c_client *client)
> mfd_remove_devices(&client->dev);
>
> /* Put chip in shutdown mode */
> - tps6105x_mask_and_set(tps6105x, TPS6105X_REG_0,
> + regmap_update_bits(tps6105x->regmap, TPS6105X_REG_0,
> TPS6105X_REG0_MODE_MASK,
> TPS6105X_MODE_SHUTDOWN << TPS6105X_REG0_MODE_SHIFT);
>
> diff --git a/drivers/regulator/tps6105x-regulator.c b/drivers/regulator/tps6105x-regulator.c
> index 3510b3e..ddc4f10 100644
> --- a/drivers/regulator/tps6105x-regulator.c
> +++ b/drivers/regulator/tps6105x-regulator.c
> @@ -14,7 +14,7 @@
> #include <linux/kernel.h>
> #include <linux/init.h>
> #include <linux/err.h>
> -#include <linux/i2c.h>
> +#include <linux/regmap.h>
> #include <linux/platform_device.h>
> #include <linux/regulator/driver.h>
> #include <linux/mfd/core.h>
> @@ -33,7 +33,7 @@ static int tps6105x_regulator_enable(struct regulator_dev *rdev)
> int ret;
>
> /* Activate voltage mode */
> - ret = tps6105x_mask_and_set(tps6105x, TPS6105X_REG_0,
> + ret = regmap_update_bits(tps6105x->regmap, TPS6105X_REG_0,
> TPS6105X_REG0_MODE_MASK,
> TPS6105X_REG0_MODE_VOLTAGE << TPS6105X_REG0_MODE_SHIFT);
> if (ret)
> @@ -48,7 +48,7 @@ static int tps6105x_regulator_disable(struct regulator_dev *rdev)
> int ret;
>
> /* Set into shutdown mode */
> - ret = tps6105x_mask_and_set(tps6105x, TPS6105X_REG_0,
> + ret = regmap_update_bits(tps6105x->regmap, TPS6105X_REG_0,
> TPS6105X_REG0_MODE_MASK,
> TPS6105X_REG0_MODE_SHUTDOWN << TPS6105X_REG0_MODE_SHIFT);
> if (ret)
> @@ -60,10 +60,10 @@ static int tps6105x_regulator_disable(struct regulator_dev *rdev)
> static int tps6105x_regulator_is_enabled(struct regulator_dev *rdev)
> {
> struct tps6105x *tps6105x = rdev_get_drvdata(rdev);
> - u8 regval;
> + unsigned int regval;
> int ret;
>
> - ret = tps6105x_get(tps6105x, TPS6105X_REG_0, ®val);
> + ret = regmap_read(tps6105x->regmap, TPS6105X_REG_0, ®val);
> if (ret)
> return ret;
> regval &= TPS6105X_REG0_MODE_MASK;
> @@ -78,10 +78,10 @@ static int tps6105x_regulator_is_enabled(struct regulator_dev *rdev)
> static int tps6105x_regulator_get_voltage_sel(struct regulator_dev *rdev)
> {
> struct tps6105x *tps6105x = rdev_get_drvdata(rdev);
> - u8 regval;
> + unsigned int regval;
> int ret;
>
> - ret = tps6105x_get(tps6105x, TPS6105X_REG_0, ®val);
> + ret = regmap_read(tps6105x->regmap, TPS6105X_REG_0, ®val);
> if (ret)
> return ret;
>
> @@ -96,7 +96,7 @@ static int tps6105x_regulator_set_voltage_sel(struct regulator_dev *rdev,
> struct tps6105x *tps6105x = rdev_get_drvdata(rdev);
> int ret;
>
> - ret = tps6105x_mask_and_set(tps6105x, TPS6105X_REG_0,
> + ret = regmap_update_bits(tps6105x->regmap, TPS6105X_REG_0,
> TPS6105X_REG0_VOLTAGE_MASK,
> selector << TPS6105X_REG0_VOLTAGE_SHIFT);
> if (ret)
> diff --git a/include/linux/mfd/tps6105x.h b/include/linux/mfd/tps6105x.h
> index 386743d..8bc5118 100644
> --- a/include/linux/mfd/tps6105x.h
> +++ b/include/linux/mfd/tps6105x.h
> @@ -10,6 +10,7 @@
> #define MFD_TPS6105X_H
>
> #include <linux/i2c.h>
> +#include <linux/regmap.h>
> #include <linux/regulator/machine.h>
>
> /*
> @@ -82,20 +83,15 @@ struct tps6105x_platform_data {
>
> /**
> * struct tps6105x - state holder for the TPS6105x drivers
> - * @mutex: mutex to serialize I2C accesses
> * @i2c_client: corresponding I2C client
> * @regulator: regulator device if used in voltage mode
> + * @regmap: used for i2c communcation on accessing registers
> */
> struct tps6105x {
> struct tps6105x_platform_data *pdata;
> - struct mutex lock;
> struct i2c_client *client;
> struct regulator_dev *regulator;
> + struct regmap *regmap;
> };
>
> -extern int tps6105x_set(struct tps6105x *tps6105x, u8 reg, u8 value);
> -extern int tps6105x_get(struct tps6105x *tps6105x, u8 reg, u8 *buf);
> -extern int tps6105x_mask_and_set(struct tps6105x *tps6105x, u8 reg,
> - u8 bitmask, u8 bitvalues);
> -
> #endif
--
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Lee Jones <lee.jones@linaro.org> |
|---|---|
| Date | 2015-10-05 11:50 +0200 |
| Subject | [GIT PULL] Immutable branch between MFD and Regulator for v4.3 |
| Message-ID | <qgaz8-3zT-21@gated-at.bofh.it> |
| In reply to | #1238385 |
The following changes since commit 1f93e4a96c9109378204c147b3eec0d0e8100fde:
Linux 4.3-rc2 (2015-09-20 14:32:34 -0700)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd.git tags/ib-mfd-regulator-v4.3
for you to fetch changes up to 7e50711993552800644a4667daa0f569a7665eca:
mfd: tps6105x: Use i2c regmap to access registers (2015-10-05 10:38:22 +0100)
----------------------------------------------------------------
Immutable branch between MFD and Regulator due for v4.3
----------------------------------------------------------------
Grigoryev Denis (1):
mfd: tps6105x: Use i2c regmap to access registers
drivers/mfd/tps6105x.c | 78 ++++++----------------------------
drivers/regulator/tps6105x-regulator.c | 16 +++----
include/linux/mfd/tps6105x.h | 10 ++---
3 files changed, 24 insertions(+), 80 deletions(-)
--
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web