Re: [PATCH v4 2/4] serial: mctrl_gpio: add modem control read routine

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

On Mon, May 23, 2016 at 10:08:26AM -0700, Peter Hurley wrote:
> On 05/23/2016 01:59 AM, Uwe Kleine-König wrote:
> > Hello Yegor,
> > 
> > On Mon, May 23, 2016 at 09:30:56AM +0200, yegorslists@xxxxxxxxxxxxxx wrote:
> >> From: Yegor Yefremov <yegorslists@xxxxxxxxxxxxxx>
> >>
> >> mctrl_gpio_get_outputs() returns the state of following signals:
> >>
> >> RTS, DTR
> >>
> >> Signed-off-by: Yegor Yefremov <yegorslists@xxxxxxxxxxxxxx>
> >> ---
> >>  drivers/tty/serial/serial_mctrl_gpio.c | 18 ++++++++++++++++++
> >>  drivers/tty/serial/serial_mctrl_gpio.h | 15 ++++++++++++++-
> >>  2 files changed, 32 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/drivers/tty/serial/serial_mctrl_gpio.c b/drivers/tty/serial/serial_mctrl_gpio.c
> >> index e8dd509..a868595 100644
> >> --- a/drivers/tty/serial/serial_mctrl_gpio.c
> >> +++ b/drivers/tty/serial/serial_mctrl_gpio.c
> >> @@ -86,6 +86,24 @@ unsigned int mctrl_gpio_get(struct mctrl_gpios *gpios, unsigned int *mctrl)
> >>  }
> >>  EXPORT_SYMBOL_GPL(mctrl_gpio_get);
> >>  
> >> +unsigned int
> >> +mctrl_gpio_get_outputs(struct mctrl_gpios *gpios, unsigned int *mctrl)
> >> +{
> >> +	enum mctrl_gpio_idx i;
> >> +
> >> +	for (i = 0; i < UART_GPIO_MAX; i++) {
> >> +		if (gpios->gpio[i] && mctrl_gpios_desc[i].dir_out) {
> >> +			if (gpiod_get_value(gpios->gpio[i]))
> >> +				*mctrl |= mctrl_gpios_desc[i].mctrl;
> >> +			else
> >> +				*mctrl &= ~mctrl_gpios_desc[i].mctrl;
> > 
> > Given that get_value for outputs isn't well defined I'd prefer if there
> > were no usecase for this. This is intended for probe-time, right?
> > Otherwise the state of these lines should be known.
> 
> It should be known to both gpio and this emulation layer already,
> and it's an oversight if it doesn't.

So in which situations is this function supposed to be called?
(OK, I could check how it is used in patch 4, but I think explaining it
here in a comment to that function would be nice.)

> Why create a write-only interface? As if it's not hard enough when
> hardware registers are write-only...

There are different possible semantics and so the different hardware
implementations differ. Some return what the gpio was set to, some
return the real level of the pin, some return always 0 and I'm sure if I
ask a few hardware engineers they can come up with at least two further
creative ideas.

Best regards
Uwe

-- 
Pengutronix e.K.                           | Uwe Kleine-König            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux