* Use of pinctrl-single for external device over I2C [not found] <55893B2C.1070800@linaro.org> @ 2015-06-24 12:04 ` Vaibhav Hiremath 2015-06-24 13:33 ` Tony Lindgren 0 siblings, 1 reply; 7+ messages in thread From: Vaibhav Hiremath @ 2015-06-24 12:04 UTC (permalink / raw) To: linux-arm-kernel On Tuesday 23 June 2015 04:25 PM, Vaibhav Hiremath wrote: > Hi, + linux-arm-kernel & MFD Thanks, Vaibhav > > I am working on enabling support for PMIC 88PM860 device in the > mainline. > > In 88PM860 (and family of devices) few pins are labelled as GPIO's, to > be precise, in 88PM860, we have 8 GPIO's (ana & dig). > > > I was looking at pinctrl-single driver, as it seems it can not handle > pinmux configuration of external device (in this case its over I2C), as > it uses raw read/write api's. > > I see below lines in the driver, > > > /* > * REVISIT: Reads and writes could eventually use regmap or something > * generic. But at least on omaps, some mux registers are performance > * critical as they may need to be remuxed every time before and after > * idle. Adding tests for register access width for every read and > * write like regmap is doing is not desired, and caching the registers > * does not help in this case. > */ > > > Should be not have flag for this and use regmap_ variants? If we > implement flag based approach then same driver can be reused for pinmux > configuration of external device. > > > Just to give more clarity, Let me describe my use-case below, > > The platform which I have is based on PXA1928 and 88PM860 chipsets, > where 88PM860.GPIO_0 is connected back to PXA1928.EXT_32K_IN. > > GPIO_0 need to configured in mode '4'. > > As per spec, 88PM860.GPIO_0 can be configured to > > 000 = GPIO input mode > 001 = GPIO output mode > 010 = SLEEPOUTN mirror mode > 011 = Buck4 FPWM enable > 100 = 32 Khz output buffer mode > 101 = PMICINTN output mode > 110 = HW_RESET1 mode > 111 = HW_RESET2 mode > > > Please let me know if there is already an alternative for this, which I > missed. > > Thanks, > Vaibhav > > > > Thanks, > Vaibhav ^ permalink raw reply [flat|nested] 7+ messages in thread
* Use of pinctrl-single for external device over I2C 2015-06-24 12:04 ` Use of pinctrl-single for external device over I2C Vaibhav Hiremath @ 2015-06-24 13:33 ` Tony Lindgren 2015-06-24 17:10 ` Vaibhav Hiremath 0 siblings, 1 reply; 7+ messages in thread From: Tony Lindgren @ 2015-06-24 13:33 UTC (permalink / raw) To: linux-arm-kernel * Vaibhav Hiremath <vaibhav.hiremath@linaro.org> [150624 05:06]: > On Tuesday 23 June 2015 04:25 PM, Vaibhav Hiremath wrote: > > > >/* > > * REVISIT: Reads and writes could eventually use regmap or something > > * generic. But at least on omaps, some mux registers are performance > > * critical as they may need to be remuxed every time before and after > > * idle. Adding tests for register access width for every read and > > * write like regmap is doing is not desired, and caching the registers > > * does not help in this case. > > */ > > > > > >Should be not have flag for this and use regmap_ variants? If we > >implement flag based approach then same driver can be reused for pinmux > >configuration of external device. Nothing stopping you from adding regmap support to it. It just needs to be made optional as the users so far don't need it. Regards, Tony ^ permalink raw reply [flat|nested] 7+ messages in thread
* Use of pinctrl-single for external device over I2C 2015-06-24 13:33 ` Tony Lindgren @ 2015-06-24 17:10 ` Vaibhav Hiremath 2015-06-25 4:38 ` Tony Lindgren 0 siblings, 1 reply; 7+ messages in thread From: Vaibhav Hiremath @ 2015-06-24 17:10 UTC (permalink / raw) To: linux-arm-kernel On Wednesday 24 June 2015 07:03 PM, Tony Lindgren wrote: > * Vaibhav Hiremath <vaibhav.hiremath@linaro.org> [150624 05:06]: >> On Tuesday 23 June 2015 04:25 PM, Vaibhav Hiremath wrote: >>> >>> /* >>> * REVISIT: Reads and writes could eventually use regmap or something >>> * generic. But at least on omaps, some mux registers are performance >>> * critical as they may need to be remuxed every time before and after >>> * idle. Adding tests for register access width for every read and >>> * write like regmap is doing is not desired, and caching the registers >>> * does not help in this case. >>> */ >>> >>> >>> Should be not have flag for this and use regmap_ variants? If we >>> implement flag based approach then same driver can be reused for pinmux >>> configuration of external device. > > Nothing stopping you from adding regmap support to it. It just needs > to be made optional as the users so far don't need it. > Yeah, absolutely. Thinking more on this, I do not like this, as this is not HW feature, so DT may not be right approach. So I will dig more from either runtime or Compile time option to use regmap_ Vs raw read/writes. Thanks, Vaibhav ^ permalink raw reply [flat|nested] 7+ messages in thread
* Use of pinctrl-single for external device over I2C 2015-06-24 17:10 ` Vaibhav Hiremath @ 2015-06-25 4:38 ` Tony Lindgren 2015-06-25 5:46 ` Vaibhav Hiremath 0 siblings, 1 reply; 7+ messages in thread From: Tony Lindgren @ 2015-06-25 4:38 UTC (permalink / raw) To: linux-arm-kernel * Vaibhav Hiremath <vaibhav.hiremath@linaro.org> [150624 10:12]: > > I do not like this, as this is not HW feature, so DT may not be right > approach. > > So I will dig more from either runtime or Compile time option to use > regmap_ Vs raw read/writes. Can't you just check if the pinctrl node has compatible = "syscon" property? A compile time option won't work for sure. I don't know what you would check at runtime as you do not know what the bus is behind syscon. Regards, Tony ^ permalink raw reply [flat|nested] 7+ messages in thread
* Use of pinctrl-single for external device over I2C 2015-06-25 4:38 ` Tony Lindgren @ 2015-06-25 5:46 ` Vaibhav Hiremath 2015-06-30 7:46 ` Vaibhav Hiremath 0 siblings, 1 reply; 7+ messages in thread From: Vaibhav Hiremath @ 2015-06-25 5:46 UTC (permalink / raw) To: linux-arm-kernel On Thursday 25 June 2015 10:08 AM, Tony Lindgren wrote: > * Vaibhav Hiremath <vaibhav.hiremath@linaro.org> [150624 10:12]: >> >> I do not like this, as this is not HW feature, so DT may not be right >> approach. >> >> So I will dig more from either runtime or Compile time option to use >> regmap_ Vs raw read/writes. > > Can't you just check if the pinctrl node has compatible = "syscon" > property? > > A compile time option won't work for sure. I don't know what you > would check at runtime as you do not know what the bus is behind > syscon. > Although, I haven't gone through syscon, but not sure whether syscon would be useful. As you rightly stated, we need to know the bus behind regmap. Thanks, Vaibhav ^ permalink raw reply [flat|nested] 7+ messages in thread
* Use of pinctrl-single for external device over I2C 2015-06-25 5:46 ` Vaibhav Hiremath @ 2015-06-30 7:46 ` Vaibhav Hiremath 2015-06-30 7:58 ` Vaibhav Hiremath 0 siblings, 1 reply; 7+ messages in thread From: Vaibhav Hiremath @ 2015-06-30 7:46 UTC (permalink / raw) To: linux-arm-kernel On Thursday 25 June 2015 11:16 AM, Vaibhav Hiremath wrote: > > > On Thursday 25 June 2015 10:08 AM, Tony Lindgren wrote: >> * Vaibhav Hiremath <vaibhav.hiremath@linaro.org> [150624 10:12]: >>> >>> I do not like this, as this is not HW feature, so DT may not be right >>> approach. >>> >>> So I will dig more from either runtime or Compile time option to use >>> regmap_ Vs raw read/writes. >> >> Can't you just check if the pinctrl node has compatible = "syscon" >> property? >> >> A compile time option won't work for sure. I don't know what you >> would check at runtime as you do not know what the bus is behind >> syscon. >> > > Although, I haven't gone through syscon, but not sure whether syscon > would be useful. > > As you rightly stated, we need to know the bus behind regmap. > Trying to understand what is the right way of doing pinctrl of external device on board, I feel it would not be good idea to pollute pinctrl-single driver, and also I am still not able to figure out how can I have access to bus behind regmap. How about having separate driver (generic for all I2C), say pinctrl- i2c.c, which is i2c_client driver and would support pinctrl and pinmux on I2C client device. The current usecase which I have is pretty simple in nature, 88PM860 has few GPIO pins which can be configured to different functionality, based on board design. In most of the cases they are one/init/boot time settings. GPIO_0: ======= 000 = GPIO input mode 001 = GPIO output mode 010 = SLEEPOUTN mirror mode 011 = Buck4 FPWM enable 100 = 32 Khz output buffer mode 101 = PMICINTN output mode 110 = HW_RESET1 mode 111 = HW_RESET2 mode Thanks, Vaibhav ^ permalink raw reply [flat|nested] 7+ messages in thread
* Use of pinctrl-single for external device over I2C 2015-06-30 7:46 ` Vaibhav Hiremath @ 2015-06-30 7:58 ` Vaibhav Hiremath 0 siblings, 0 replies; 7+ messages in thread From: Vaibhav Hiremath @ 2015-06-30 7:58 UTC (permalink / raw) To: linux-arm-kernel On Tuesday 30 June 2015 01:16 PM, Vaibhav Hiremath wrote: > > > On Thursday 25 June 2015 11:16 AM, Vaibhav Hiremath wrote: >> >> >> On Thursday 25 June 2015 10:08 AM, Tony Lindgren wrote: >>> * Vaibhav Hiremath <vaibhav.hiremath@linaro.org> [150624 10:12]: >>>> >>>> I do not like this, as this is not HW feature, so DT may not be right >>>> approach. >>>> >>>> So I will dig more from either runtime or Compile time option to use >>>> regmap_ Vs raw read/writes. >>> >>> Can't you just check if the pinctrl node has compatible = "syscon" >>> property? >>> >>> A compile time option won't work for sure. I don't know what you >>> would check at runtime as you do not know what the bus is behind >>> syscon. >>> >> >> Although, I haven't gone through syscon, but not sure whether syscon >> would be useful. >> >> As you rightly stated, we need to know the bus behind regmap. >> > > Trying to understand what is the right way of doing pinctrl of external > device on board, > > I feel it would not be good idea to pollute pinctrl-single driver, and > also I am still not able to figure out how can I have access to bus > behind regmap. > > > How about having separate driver (generic for all I2C), say pinctrl- > i2c.c, which is i2c_client driver and would support pinctrl and pinmux > on I2C client device. > I mean, part of mfd here (mfd_cell) > > The current usecase which I have is pretty simple in nature, > > 88PM860 has few GPIO pins which can be configured to different > functionality, based on board design. > In most of the cases they are one/init/boot time settings. > > GPIO_0: > ======= > 000 = GPIO input mode > 001 = GPIO output mode > 010 = SLEEPOUTN mirror mode > 011 = Buck4 FPWM enable > 100 = 32 Khz output buffer mode > 101 = PMICINTN output mode > 110 = HW_RESET1 mode > 111 = HW_RESET2 mode > > > Thanks, > Vaibhav ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2015-06-30 7:58 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <55893B2C.1070800@linaro.org>
2015-06-24 12:04 ` Use of pinctrl-single for external device over I2C Vaibhav Hiremath
2015-06-24 13:33 ` Tony Lindgren
2015-06-24 17:10 ` Vaibhav Hiremath
2015-06-25 4:38 ` Tony Lindgren
2015-06-25 5:46 ` Vaibhav Hiremath
2015-06-30 7:46 ` Vaibhav Hiremath
2015-06-30 7:58 ` Vaibhav Hiremath
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).