> The only platform-specific part is the message format exchanged between Linux 
> and the remote processors.
> As long as the remote processor follows the same message protocol, the driver 
> should work as expected.
> 
> Here's the layout of the message packets:
> 
> +--------+--------+--------+--------+--------+----------------+--------+--------+---------------+---------------+
> |0x00    |0x01    |0x02    |0x03    |0x04    |0x05..0x09      |0x0A    |0x0B  
>   |0x0C           |0x0D           |
> |cate    |major   |minor   |type    |cmd     |reserved[5]     |pin_idx 
> |port_idx|out:{evt/rc/v} |in:{wkup/val}  |
> +--------+--------+--------+--------+--------+----------------+--------+--------+---------------+---------------+
> 
> Cate (Category field ): can be GPIO /I2C/PMIC/AUDIO ... etc
> Major : Major version number
> Minor: Minor version number
> Type (Message Type): Can be SETUP / REPLY /NOTIFY for GPIO category
> Cmd (Command): Can be Input INIT / Output INIT / Input GET for GPIO category
> Pin_idx: The GPIO line index
> Port_idx: The GPIO controller index
> 
> For Out packet:  
>       if it is OUPUT INIT, the out field value is the gpio output level.
>       If it is INPUT INIT, the out filed is 0.
> 
> For In packet:
>       If it is a REPLY message, the out field is return code. 0 means 
> success.  
>       If it is a REPLY of INPUT GET, the in field is the value of GPIO line 
> level.
>       If it is an NOTIFY type of message, it simulates an interrupt event 
> from the remote processor.
> 
> I can add above comments in the commit log or the beginning of the driver 
> source file.

Maybe Documentation/admin-guide/gpio-rpmsg.rst would be better.  You
should also document how to handle features the device does not
support. e.g. i _think_ your hardware supports all 4 interrupt
types. But maybe other hardware needs to return something meaning
-EOPNOTSUP?

        Andrew

Reply via email to