Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1238385 > unrolled thread

[PATCH] mfd: tps6105x: Use i2c regmap to access registers

Started byGrigoryev Denis <grigoryev@fastwel.ru>
First post2015-10-02 18:20 +0200
Last post2015-10-05 11:50 +0200
Articles 4 — 3 participants

Back to article view | Back to linux.kernel


Contents

  [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

#1238385 — [PATCH] mfd: tps6105x: Use i2c regmap to access registers

FromGrigoryev Denis <grigoryev@fastwel.ru>
Date2015-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]


#1238456

FromMark Brown <broonie@kernel.org>
Date2015-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]


#1239390

FromLee Jones <lee.jones@linaro.org>
Date2015-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, &regval);
> +	ret = regmap_read(tps6105x->regmap, TPS6105X_REG_0, &regval);
>  	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, &regval);
> +	ret = regmap_read(tps6105x->regmap, TPS6105X_REG_0, &regval);
>  	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, &regval);
> +	ret = regmap_read(tps6105x->regmap, TPS6105X_REG_0, &regval);
>  	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]


#1239395 — [GIT PULL] Immutable branch between MFD and Regulator for v4.3

FromLee Jones <lee.jones@linaro.org>
Date2015-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