From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lee Jones Subject: Re: [RESEND v2 02/10] mfd: stmpe: Add reset support for all STMPE variant Date: Wed, 10 Aug 2016 09:28:59 +0100 Message-ID: <20160810082859.GH1581@dell> References: <1470814755-19447-1-git-send-email-patrice.chotard@st.com> <1470814755-19447-3-git-send-email-patrice.chotard@st.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1470814755-19447-3-git-send-email-patrice.chotard@st.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org To: patrice.chotard@st.com Cc: gnurou@gmail.com, amelie.delaunay@st.com, vireshk@kernel.org, linus.walleij@linaro.org, linux-gpio@vger.kernel.org, thierry.reding@gmail.com, kernel@pengutronix.de, dinguyen@opensource.altera.com, shawnguo@kernel.org, shiraz.linux.kernel@gmail.com, linux-arm-kernel@lists.infradead.org List-Id: linux-gpio@vger.kernel.org T24gV2VkLCAxMCBBdWcgMjAxNiwgcGF0cmljZS5jaG90YXJkQHN0LmNvbSB3cm90ZToKCj4gRnJv bTogUGF0cmljZSBDaG90YXJkIDxwYXRyaWNlLmNob3RhcmRAc3QuY29tPgo+IAo+IFJlc2V0IHdh cyBvbmx5IGltcGxlbWVudGVkIGZvciBTVE1QRTE4MDEgdmFyaWFudCBkZXNwaXRlCj4gYWxsIHZh cmlhbnQgaGF2ZSBhIFNPRlRfUkVTRVQgYml0Lgo+IAo+IEZvciBTVE1QRTI0MDEvMjQwMy84MDEv MTYwMS8xODAxIFNPRlRfUkVTRVQgYml0IGlzIGJpdCA3Cj4gb2YgU1lTX0NUUkwgcmVnaXN0ZXIu Cj4gRm9yIFNUTVBFNjEwLzgxMSAod2hpY2ggaGF2ZSB0aGUgc2FtZSB2YXJpYW50IGlkKSBTT0ZU X1JFU0VUCj4gYml0IGlzIGJpdCAxIG9mIFNZU19DVFJMIHJlZ2lzdGVyLgo+IAo+IFNpZ25lZC1v ZmYtYnk6IFBhdHJpY2UgQ2hvdGFyZCA8cGF0cmljZS5jaG90YXJkQHN0LmNvbT4KPiBBY2tlZC1i eTogTGludXMgV2FsbGVpaiA8bGludXMud2FsbGVpakBsaW5hcm8ub3JnPgo+IEFja2VkLWJ5OiBM ZWUgSm9uZXMgPGxlZS5qb25lc0BsaW5hcm8ub3JnPgo+IC0tLQo+ICBkcml2ZXJzL21mZC9zdG1w ZS5jIHwgMjMgKysrKysrKysrKysrKysrLS0tLS0tLS0KPiAgZHJpdmVycy9tZmQvc3RtcGUuaCB8 ICA3ICsrKysrLS0KPiAgMiBmaWxlcyBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCAxMCBkZWxl dGlvbnMoLSkKCkFwcGxpZWQsIHRoYW5rcy4KCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWZkL3N0 bXBlLmMgYi9kcml2ZXJzL21mZC9zdG1wZS5jCj4gaW5kZXggYzU1M2I3My4uYWY2ODJkMCAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL21mZC9zdG1wZS5jCj4gKysrIGIvZHJpdmVycy9tZmQvc3RtcGUu Ywo+IEBAIC03MzUsMTMgKzczNSwyMiBAQCBzdGF0aWMgaW50IHN0bXBlMTgwMV9lbmFibGUoc3Ry dWN0IHN0bXBlICpzdG1wZSwgdW5zaWduZWQgaW50IGJsb2NrcywKPiAgCQkJCWVuYWJsZSA/IG1h c2sgOiAwKTsKPiAgfQo+ICAKPiAtc3RhdGljIGludCBzdG1wZTE4MDFfcmVzZXQoc3RydWN0IHN0 bXBlICpzdG1wZSkKPiArc3RhdGljIGludCBzdG1wZV9yZXNldChzdHJ1Y3Qgc3RtcGUgKnN0bXBl KQo+ICB7Cj4gKwl1MTYgaWRfdmFsID0gc3RtcGUtPnZhcmlhbnQtPmlkX3ZhbDsKPiAgCXVuc2ln bmVkIGxvbmcgdGltZW91dDsKPiAgCWludCByZXQgPSAwOwo+ICsJdTggcmVzZXRfYml0Owo+ICsK PiArCWlmIChpZF92YWwgPT0gU1RNUEU4MTFfSUQpCj4gKwkJLyogU1RNUEU4MDEgYW5kIFNUTVBF NjEwIHVzZSBiaXQgMSBvZiBTWVNfQ1RSTCByZWdpc3RlciAqLwo+ICsJCXJlc2V0X2JpdCA9IFNU TVBFODExX1NZU19DVFJMX1JFU0VUOwo+ICsJZWxzZQo+ICsJCS8qIGFsbCBvdGhlciBTVE1QRSB2 YXJpYW50IHVzZSBiaXQgNyBvZiBTWVNfQ1RSTCByZWdpc3RlciAqLwo+ICsJCXJlc2V0X2JpdCA9 IFNUTVBFX1NZU19DVFJMX1JFU0VUOwo+ICAKPiAgCXJldCA9IF9fc3RtcGVfc2V0X2JpdHMoc3Rt cGUsIHN0bXBlLT5yZWdzW1NUTVBFX0lEWF9TWVNfQ1RSTF0sCj4gLQkJU1RNUEUxODAxX01TS19T WVNfQ1RSTF9SRVNFVCwgU1RNUEUxODAxX01TS19TWVNfQ1RSTF9SRVNFVCk7Cj4gKwkJCSAgICAg ICByZXNldF9iaXQsIHJlc2V0X2JpdCk7Cj4gIAlpZiAocmV0IDwgMCkKPiAgCQlyZXR1cm4gcmV0 Owo+ICAKPiBAQCAtNzUwLDcgKzc1OSw3IEBAIHN0YXRpYyBpbnQgc3RtcGUxODAxX3Jlc2V0KHN0 cnVjdCBzdG1wZSAqc3RtcGUpCj4gIAkJcmV0ID0gX19zdG1wZV9yZWdfcmVhZChzdG1wZSwgc3Rt cGUtPnJlZ3NbU1RNUEVfSURYX1NZU19DVFJMXSk7Cj4gIAkJaWYgKHJldCA8IDApCj4gIAkJCXJl dHVybiByZXQ7Cj4gLQkJaWYgKCEocmV0ICYgU1RNUEUxODAxX01TS19TWVNfQ1RSTF9SRVNFVCkp Cj4gKwkJaWYgKCEocmV0ICYgcmVzZXRfYml0KSkKPiAgCQkJcmV0dXJuIDA7Cj4gIAkJdXNsZWVw X3JhbmdlKDEwMCwgMjAwKTsKPiAgCX0KPiBAQCAtMTA3NCwxMSArMTA4Myw5IEBAIHN0YXRpYyBp bnQgc3RtcGVfY2hpcF9pbml0KHN0cnVjdCBzdG1wZSAqc3RtcGUpCj4gIAlpZiAocmV0KQo+ICAJ CXJldHVybiByZXQ7Cj4gIAo+IC0JaWYgKGlkID09IFNUTVBFMTgwMV9JRCkJewo+IC0JCXJldCA9 ICBzdG1wZTE4MDFfcmVzZXQoc3RtcGUpOwo+IC0JCWlmIChyZXQgPCAwKQo+IC0JCQlyZXR1cm4g cmV0Owo+IC0JfQo+ICsJcmV0ID0gIHN0bXBlX3Jlc2V0KHN0bXBlKTsKPiArCWlmIChyZXQgPCAw KQo+ICsJCXJldHVybiByZXQ7Cj4gIAo+ICAJaWYgKHN0bXBlLT5pcnEgPj0gMCkgewo+ICAJCWlm IChpZCA9PSBTVE1QRTgwMV9JRCkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZmQvc3RtcGUuaCBi L2RyaXZlcnMvbWZkL3N0bXBlLmgKPiBpbmRleCA0MDZmOWYyLi40YWUzNDNkIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvbWZkL3N0bXBlLmgKPiArKysgYi9kcml2ZXJzL21mZC9zdG1wZS5oCj4gQEAg LTEwNCw2ICsxMDQsOCBAQCBpbnQgc3RtcGVfcmVtb3ZlKHN0cnVjdCBzdG1wZSAqc3RtcGUpOwo+ ICAjZGVmaW5lIFNUTVBFX0lDUl9MU0JfRURHRQkoMSA8PCAxKQo+ICAjZGVmaW5lIFNUTVBFX0lD Ul9MU0JfR0lNCSgxIDw8IDApCj4gIAo+ICsjZGVmaW5lIFNUTVBFX1NZU19DVFJMX1JFU0VUCSgx IDw8IDcpCj4gKwo+ICAvKgo+ICAgKiBTVE1QRTgwMQo+ICAgKi8KPiBAQCAtMTI2LDYgKzEyOCw3 IEBAIGludCBzdG1wZV9yZW1vdmUoc3RydWN0IHN0bXBlICpzdG1wZSk7Cj4gIC8qCj4gICAqIFNU TVBFODExCj4gICAqLwo+ICsjZGVmaW5lIFNUTVBFODExX0lECQkJMHgwODExCj4gIAo+ICAjZGVm aW5lIFNUTVBFODExX0lSUV9UT1VDSF9ERVQJCTAKPiAgI2RlZmluZSBTVE1QRTgxMV9JUlFfRklG T19USAkJMQo+IEBAIC0xNTUsNiArMTU4LDggQEAgaW50IHN0bXBlX3JlbW92ZShzdHJ1Y3Qgc3Rt cGUgKnN0bXBlKTsKPiAgI2RlZmluZSBTVE1QRTgxMV9SRUdfR1BJT19GRQkJMHgxNgo+ICAjZGVm aW5lIFNUTVBFODExX1JFR19HUElPX0FGCQkweDE3Cj4gIAo+ICsjZGVmaW5lIFNUTVBFODExX1NZ U19DVFJMX1JFU0VUCQkoMSA8PCAxKQo+ICsKPiAgI2RlZmluZSBTVE1QRTgxMV9TWVNfQ1RSTDJf QURDX09GRgkoMSA8PCAwKQo+ICAjZGVmaW5lIFNUTVBFODExX1NZU19DVFJMMl9UU0NfT0ZGCSgx IDw8IDEpCj4gICNkZWZpbmUgU1RNUEU4MTFfU1lTX0NUUkwyX0dQSU9fT0ZGCSgxIDw8IDIpCj4g QEAgLTI0NCw4ICsyNDksNiBAQCBpbnQgc3RtcGVfcmVtb3ZlKHN0cnVjdCBzdG1wZSAqc3RtcGUp Owo+ICAjZGVmaW5lIFNUTVBFMTgwMV9SRUdfR1BJT19QVUxMX1VQX01JRAkJMHgyMwo+ICAjZGVm aW5lIFNUTVBFMTgwMV9SRUdfR1BJT19QVUxMX1VQX0hJR0gJCTB4MjQKPiAgCj4gLSNkZWZpbmUg U1RNUEUxODAxX01TS19TWVNfQ1RSTF9SRVNFVAkJKDEgPDwgNykKPiAtCj4gICNkZWZpbmUgU1RN UEUxODAxX01TS19JTlRfRU5fS1BDCQkoMSA8PCAxKQo+ICAjZGVmaW5lIFNUTVBFMTgwMV9NU0tf SU5UX0VOX0dQSU8JCSgxIDw8IDMpCj4gIAoKLS0gCkxlZSBKb25lcwpMaW5hcm8gU1RNaWNyb2Vs ZWN0cm9uaWNzIExhbmRpbmcgVGVhbSBMZWFkCkxpbmFyby5vcmcg4pSCIE9wZW4gc291cmNlIHNv ZnR3YXJlIGZvciBBUk0gU29DcwpGb2xsb3cgTGluYXJvOiBGYWNlYm9vayB8IFR3aXR0ZXIgfCBC bG9nCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51 eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVh ZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1h cm0ta2VybmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 From: lee.jones@linaro.org (Lee Jones) Date: Wed, 10 Aug 2016 09:28:59 +0100 Subject: [RESEND v2 02/10] mfd: stmpe: Add reset support for all STMPE variant In-Reply-To: <1470814755-19447-3-git-send-email-patrice.chotard@st.com> References: <1470814755-19447-1-git-send-email-patrice.chotard@st.com> <1470814755-19447-3-git-send-email-patrice.chotard@st.com> Message-ID: <20160810082859.GH1581@dell> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Wed, 10 Aug 2016, patrice.chotard at st.com wrote: > From: Patrice Chotard > > Reset was only implemented for STMPE1801 variant despite > all variant have a SOFT_RESET bit. > > For STMPE2401/2403/801/1601/1801 SOFT_RESET bit is bit 7 > of SYS_CTRL register. > For STMPE610/811 (which have the same variant id) SOFT_RESET > bit is bit 1 of SYS_CTRL register. > > Signed-off-by: Patrice Chotard > Acked-by: Linus Walleij > Acked-by: Lee Jones > --- > drivers/mfd/stmpe.c | 23 +++++++++++++++-------- > drivers/mfd/stmpe.h | 7 +++++-- > 2 files changed, 20 insertions(+), 10 deletions(-) Applied, thanks. > diff --git a/drivers/mfd/stmpe.c b/drivers/mfd/stmpe.c > index c553b73..af682d0 100644 > --- a/drivers/mfd/stmpe.c > +++ b/drivers/mfd/stmpe.c > @@ -735,13 +735,22 @@ static int stmpe1801_enable(struct stmpe *stmpe, unsigned int blocks, > enable ? mask : 0); > } > > -static int stmpe1801_reset(struct stmpe *stmpe) > +static int stmpe_reset(struct stmpe *stmpe) > { > + u16 id_val = stmpe->variant->id_val; > unsigned long timeout; > int ret = 0; > + u8 reset_bit; > + > + if (id_val == STMPE811_ID) > + /* STMPE801 and STMPE610 use bit 1 of SYS_CTRL register */ > + reset_bit = STMPE811_SYS_CTRL_RESET; > + else > + /* all other STMPE variant use bit 7 of SYS_CTRL register */ > + reset_bit = STMPE_SYS_CTRL_RESET; > > ret = __stmpe_set_bits(stmpe, stmpe->regs[STMPE_IDX_SYS_CTRL], > - STMPE1801_MSK_SYS_CTRL_RESET, STMPE1801_MSK_SYS_CTRL_RESET); > + reset_bit, reset_bit); > if (ret < 0) > return ret; > > @@ -750,7 +759,7 @@ static int stmpe1801_reset(struct stmpe *stmpe) > ret = __stmpe_reg_read(stmpe, stmpe->regs[STMPE_IDX_SYS_CTRL]); > if (ret < 0) > return ret; > - if (!(ret & STMPE1801_MSK_SYS_CTRL_RESET)) > + if (!(ret & reset_bit)) > return 0; > usleep_range(100, 200); > } > @@ -1074,11 +1083,9 @@ static int stmpe_chip_init(struct stmpe *stmpe) > if (ret) > return ret; > > - if (id == STMPE1801_ID) { > - ret = stmpe1801_reset(stmpe); > - if (ret < 0) > - return ret; > - } > + ret = stmpe_reset(stmpe); > + if (ret < 0) > + return ret; > > if (stmpe->irq >= 0) { > if (id == STMPE801_ID) > diff --git a/drivers/mfd/stmpe.h b/drivers/mfd/stmpe.h > index 406f9f2..4ae343d 100644 > --- a/drivers/mfd/stmpe.h > +++ b/drivers/mfd/stmpe.h > @@ -104,6 +104,8 @@ int stmpe_remove(struct stmpe *stmpe); > #define STMPE_ICR_LSB_EDGE (1 << 1) > #define STMPE_ICR_LSB_GIM (1 << 0) > > +#define STMPE_SYS_CTRL_RESET (1 << 7) > + > /* > * STMPE801 > */ > @@ -126,6 +128,7 @@ int stmpe_remove(struct stmpe *stmpe); > /* > * STMPE811 > */ > +#define STMPE811_ID 0x0811 > > #define STMPE811_IRQ_TOUCH_DET 0 > #define STMPE811_IRQ_FIFO_TH 1 > @@ -155,6 +158,8 @@ int stmpe_remove(struct stmpe *stmpe); > #define STMPE811_REG_GPIO_FE 0x16 > #define STMPE811_REG_GPIO_AF 0x17 > > +#define STMPE811_SYS_CTRL_RESET (1 << 1) > + > #define STMPE811_SYS_CTRL2_ADC_OFF (1 << 0) > #define STMPE811_SYS_CTRL2_TSC_OFF (1 << 1) > #define STMPE811_SYS_CTRL2_GPIO_OFF (1 << 2) > @@ -244,8 +249,6 @@ int stmpe_remove(struct stmpe *stmpe); > #define STMPE1801_REG_GPIO_PULL_UP_MID 0x23 > #define STMPE1801_REG_GPIO_PULL_UP_HIGH 0x24 > > -#define STMPE1801_MSK_SYS_CTRL_RESET (1 << 7) > - > #define STMPE1801_MSK_INT_EN_KPC (1 << 1) > #define STMPE1801_MSK_INT_EN_GPIO (1 << 3) > -- Lee Jones Linaro STMicroelectronics Landing Team Lead Linaro.org ? Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog