Re: [Gta04-owner] [PATCH 3/3] tty/slaves: add a driver to power on/off UART attached devices.

Dr. H. Nikolaus Schaller
2015-03-25T21:25:43Z

Am 25.03.2015 um 21:53 schrieb Pavel Machek <pavel@ucw.cz>:

> Hi!
>
>>>> AFAIK the chip simply starts to emit NMEA records if powered on.
>>>> There is no command going over the serial interface to address it
>>>> or control it.
>>>
>>> Right, since GPS basically doesn't need any configuration/control.
>>> That’s not true for other UART attached devices, though.
>>
>> Do you have an example? Usually an UART data stream is transparently
>> presented to a /dev/tty - and user-space daemon can configure/control the
>> attached device. In most cases it can mix payload data and control command
>> by some AT command and escape sequences.
>
> Bluetooth H4P protocol is one example.
>
>>> well parent > child is not about power control, but about "primary"
>>> control.
>>
>> Can you clearly and precisely define what “primary” control is? I think
>> two people will have three opinions about that.
>
> This has not be a problem so far...
>
>> For example I would see the w2sg0004 on/off gpio as the primary “control”
>> which makes the light (NMES records) turned on.
>
> ...and I don't think it is a problem now.
>
>>> Main reason is, that I would need to go
>>> through the UART to “communicate" with the w2sg0004.
>>
>> You can always "communicate” through the UART. Even without DT. As long as
>> the connected chip is powered up by any means (could be some fixed-regulator
>> or hard wired).
>
> But you don't know "how" to communicate through the uart.

Maybe we are talking using different assumptions. As long as you have a user space
gpsd daemon that talks to the gps chip the kernel simply has to transparently (except
line disciplines) pass the data to the uart.

For that there is no need to describe anything in DT.

>
>> Let me raise the question:
>>
>> Why do we need to describe in the DT (independently of Linux power control
>> structures and drivers!) that the GPS data interface is connected to a specific UART?
>
> Because we want the phone to boot knowing "I have a bluetooth" or "I
> have a GPS", as it would if it was connected using USB, and not having
> user figure out what commands he needs to do to enable reasonable
> hardware support (and getting it wrong, because you need to specify
> _many_ critical parameters to hciattach).

Yes, this is indeed something I also would like to see for the GTA04 (and other)
devices.

So the reason is that some kernel driver wants to use the tty/uart to communicate
directly with the chip. This is very similar to a gpio that some driver wants to use.

Thus please consider the

/ {
bt {
compatible = "vendor,product“;
uart = <&uart1>;
enable = <&gpio17 34 0>;
};
};

approach.

And if you want to hide uart1 from the user-space, that should be a property
of the uart1 node (whereever it is defined).

BR,
Nikolaus