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]

 



On 05/23/2016 10:54 AM, Uwe Kleine-König wrote:
> 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.

I don't care about generic gpio.

This is an emulation layer for uarts; show me a single uart design where
a r/w register read of an output pin does anything other than return the
last value written.

Regards,
Peter Hurley

--
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