Hi Stefano, On Sun, Apr 03, 2016 at 08:09:35PM +0200, Stefano Babic wrote: >Hi Peng, > >On 17/03/2016 02:44, Peng Fan wrote: >> On Wed, Mar 16, 2016 at 09:48:24AM -0300, Fabio Estevam wrote: >>> Hi Peng, >>> >>> On Tue, Mar 15, 2016 at 10:27 PM, Peng Fan <van.free...@gmail.com> wrote: >>> >>>> If set the SION bit, we need to change the pinmux settings in device tree, >>>> however device tree are introduced from linux kernel. I would not like >>>> to change the pinmux setting value. >>>> >>>> So I choose to use data register but not PSR register. >>> >>> Haven't checked the kernel driver, but just curious: how does the >>> kernel handle this? >> >> bgc->gc.get = bgpio_get; >> >> The get method: >> * @get: returns value for signal "offset"; for output signals this >> * returns either the value actually sensed, or zero >> >> 138 static int bgpio_get(struct gpio_chip *gc, unsigned int gpio) >> 139 { >> 140 struct bgpio_chip *bgc = to_bgpio_chip(gc); >> 141 >> 142 return !!(bgc->read_reg(bgc->reg_dat) & bgc->pin2mask(bgc, >> gpio)); >> 143 } >> >> The gpio subsystem use reg_data. The reg_data is GPIO_PSR for gpio-mxc.c: >> >> 450 err = bgpio_init(&port->bgc, &pdev->dev, 4, >> 451 port->base + GPIO_PSR, >> 452 port->base + GPIO_DR, NULL, >> 453 port->base + GPIO_GDIR, NULL, 0); >> >> So we know that kernel gpio-mxc use GPIO_PSR for reading data, but >> as the comments for get method "for output signals this returns >> either the value actually sensed, or zero", if no SION bit set, reading >> PSR will return 0 with direction output. >> > >There was already a debate in the past about this point. You can take a >look at the commit: > >commit 5dafa4543c399d329c7b01df1afa98437861cac0 >Author: Benoît Thébaudeau <benoit.thebaud...@advansee.com> >Date: Mon Aug 20 10:55:41 2012 +0000 > > mxc: Make gpio_get_value() use PSR > > >There were good reasons to switch to PSR (mxc-gpio used DR before) - we >cannot switch any time back to solve a single issue. > >I would like to remain compliant with Linux - your change breaks also >boards that rely on this behavior.
Thanks for this. I'll look at whether I can have some new way. Regards, Peng. > > >> But in U-Boot, the regulator driver needs to get the value when direction is >> configured as output, we can use data register here or configure SION in >> pinmux. >> But I prefer using data register here. >> > >Best regards, >Stefano > >-- >===================================================================== >DENX Software Engineering GmbH, Managing Director: Wolfgang Denk >HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany >Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sba...@denx.de >===================================================================== _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot