> -----Original Message-----
> From: Beleswar Prasad Padhi <[email protected]>
> Sent: Tuesday, April 28, 2026 2:25 AM
> To: Shenwei Wang <[email protected]>; Linus Walleij
> <[email protected]>; Bartosz Golaszewski <[email protected]>; Jonathan Corbet
> <[email protected]>; Rob Herring <[email protected]>; Krzysztof Kozlowski
> <[email protected]>; Conor Dooley <[email protected]>; Bjorn Andersson
> <[email protected]>; Mathieu Poirier <[email protected]>; Frank Li
> <[email protected]>; Sascha Hauer <[email protected]>
> Cc: Shuah Khan <[email protected]>; [email protected]; linux-
> [email protected]; [email protected]; Pengutronix Kernel Team
> <[email protected]>; Fabio Estevam <[email protected]>; Peng Fan
> <[email protected]>; [email protected]; linux-
> [email protected]; [email protected]; linux-arm-
> [email protected]; dl-linux-imx <[email protected]>; Bartosz
> Golaszewski <[email protected]>; Andrew Lunn <[email protected]>
> Subject: [EXT] Re: [PATCH v13 3/4] gpio: rpmsg: add generic rpmsg GPIO driver
> On 28/04/26 00:53, Shenwei Wang wrote:
> [...]
> 
> >
> >>> +     void *channel_devices[MAX_PORT_PER_CHANNEL];
> >>
> >> So this is technically a rpmsg endpoint (struct rpmsg_endpoint)
> >> without naming it "endpoint". Every rpmsg endpoint has a reference to
> >> its parent rpmsg channel (struct rpmsg_device) which represents the
> >> same information here. So we should use the framework standard here.
> >>
> > Yes, agree to use "endpoint_devices".
> 
> 
> I did not mean to say to just change the variable name from "channel_devices" 
> to
> "endpoint_devices". Infact you would not need to have this field & struct
> anymore.
> 
> Pseudo-code:
> 1. Add a 'struct rpmsg_endpoint *ept' field to struct rpmsg_gpio_port
>     to maintain the ept to port idx map.
> 
> 2. Call port->ept = rpmsg_create_ept(rpdev,
>                                                             
> rpmsg_gpio_channel_callback,
>                                                             port, 
> {rpdev.id.name,
>                                                             RPMSG_ADDR_ANY,
>                                                             RPMSG_ADDR_ANY})
>     from rpmsg_gpiochip_register().
> 

On the Linux side, we invoke rpmsg_create_ept. What is expected from the remote 
system in this case?
If the remote side does not need any extra support, this would be an excellent 
solution.

Thanks,
Shenwei

> 3. Send msgs from local ept in rpmsg_gpio_send_message() by:
>     rpmsg_send(port->ept, msg, sizeof(*msg));
> 
> 4. Get the port info in rpmsg_gpio_channel_callback() by:
>     struct rpmsg_gpio_port *port = priv;
> 
> Which also eliminates the need for struct rpdev_drvdata as you can just do
> rpmsg_get_rproc_node_name(rpdev) from rpmsg_gpiochip_register().
> 

Reply via email to