Thread (60 messages) 60 messages, 6 authors, 2018-11-26

Re: [RCF PATCH,v2,2/2] pwm: imx: Configure output to GPIO in disabled state

From: Lothar Waßmann <hidden>
Date: 2018-11-26 12:23:24
Also in: linux-pwm, lkml

Thierry Reding [off-list ref] wrote:
On Fri, Nov 23, 2018 at 03:15:11PM +0000, Vokáč Michal wrote:
quoted
On 22.11.2018 20:03, Uwe Kleine-König wrote:  
quoted
On Thu, Nov 22, 2018 at 04:46:39PM +0000, Vokáč Michal wrote:  
quoted
On 22.11.2018 17:23, Uwe Kleine-König wrote:  
quoted
On Thu, Nov 22, 2018 at 03:42:14PM +0000, Vokáč Michal wrote:  
quoted
On 16.11.2018 09:25, Uwe Kleine-König wrote:  
quoted
On Fri, Nov 16, 2018 at 08:34:30AM +0100, Lothar Waßmann wrote:  
quoted
No. You can disable the output driver via pinctrl, so that only the
selected pull-up/down is relevant. The pin function and GPIO register
settings don't matter at all in this case.  
Lothar, please can you be more specific how would you do that? IFAIK the
pull-up/down internal resistors have effect only if the pin is configured
as GPIO *input* (on i.MX6 at least). See the TRM, 29.4.2.2 Output driver:

    "Internal pull-up, pull-down resistors, and pad keeper are disabled in
     output mode."  
This would mean you'd have to rely on an external pull up for your use
case. I wouldn't be surprised however if DSE=0 wouldn't count as "output
mode". Given the reliability of NXP documentation I wouldn't bet neither
on one nor the other possibility.  
Yeah, the NXP documentation sometimes does not really match reality.
My use case is based on the fact that I configure the pin as input in
the driver. Then it works just fine.
  
quoted
quoted
quoted
So I'd expect this to really work on i.MX6 but not the earlier SoCs
without a gpio specifier.  
Maybe you would expect it to work but I already tested and measured
that weeks ago ;) It did not work.  
Which pin/gpio do we talk about? Which i.MX6 variant did you test this
on? (Assuming i.MX6D or i.MX6Q and PAD_DISP0_DATA09, did you try setting

	IOMUXC_SW_MUX_CTL_PAD_DISP0_DATA09 (0x020E0194) = 0x00000005
	IOMUXC_SW_PAD_CTL_PAD_DISP0_DATA09 (0x020E04A8) = 0x0000b080

and then play with GPIO 4.30 direction and output value?)  
My test setup is as follows:
- SoC is i.MX6DL or i.MX6S - I have three board variants in total.
- Pin used for PWM/GPIO is PAD_GPIO9.
- The pin is not connected to any circuit. Just a test point.
- pinctrl setup in DT:
   - for "pwm":
     - fsl,pins = <MX6QDL_PAD_GPIO_9__PWM1_OUT 0x8>
     - IOMUXC_SW_MUX_CTL_PAD_GPIO09 = 0x00000004
     - IOMUXC_SW_PAD_CTL_PAD_GPIO09 = 0x00000008

   - for "gpio":
    - fsl,pins = <MX6QDL_PAD_GPIO_9__GPIO1_IO09 0xb000>
    - IOMUXC_SW_MUX_CTL_PAD_GPIO09 = 0x00000005
    - IOMUXC_SW_PAD_CTL_PAD_GPIO09 = 0x0000b000  
Does it help if you additionally set the ODE bit (bit 11) here?
That only helps to NOT actively pulling the pin HIGH, but the opposite
is what is needed here.


Lothar Waßmann
-- 
___________________________________________________________

Ka-Ro electronics GmbH | Pascalstraße 22 | D - 52076 Aachen
Phone: +49 2408 1402-0 | Fax: +49 2408 1402-10
Geschäftsführer: Matthias Kaussen
Handelsregistereintrag: Amtsgericht Aachen, HRB 4996

www.karo-electronics.de | info@karo-electronics.de
___________________________________________________________
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help