On Thu, Sep 26, 2024 at 12:00:12AM +0000, Kuninori Morimoto wrote:
> We have endpoint base functions
>       - of_graph_get_next_device_endpoint()
>       - of_graph_get_device_endpoint_count()
>       - for_each_of_graph_device_endpoint()
> 
> Here, for_each_of_graph_device_endpoint() loop finds each endpoints
> 
>       ports {
>               port@0 {
> (1)                   endpoint {...};
>               };
>               port@1 {
> (2)                   endpoint {...};
>               };
>               ...
>       };
> 
> In above case, it finds endpoint as (1) -> (2) -> ...
> 
> Basically, user/driver knows which port is used for what, but not in
> all cases. For example on flexible/generic driver case, how many ports
> are used is not fixed.
> 
> For example Sound Generic Card driver which is used from many venders
> can't know how many ports are used. Because the driver is very
> flexible/generic, it is impossible to know how many ports are used,
> it depends on each vender SoC and/or its used board.
> 
> And more, the port can have multi endpoints. For example Generic Sound
> Card case, it supports many type of connection between CPU / Codec, and
> some of them uses multi endpoint in one port.
> Then, Generic Sound Card want to handle each connection via "port"
> instead of "endpoint".
> But, it is very difficult to handle each "port" via existing
> for_each_of_graph_device_endpoint(). Getting "port" via of_get_parent()
> from "endpoint" doesn't work. see below.
> 
>       ports {
>               port@0 {
> (1)                   endpoint@0 {...};
> (2)                   endpoint@1 {...};
>               };
>               port@1 {
> (3)                   endpoint {...};
>               };
>               ...
>       };
> 
> In other case, we want to handle "ports" same as "port" for some reasons.
> 
>       node {
> =>            ports@0 {
>                       port@0 { ... };
>                       port@1 { ... };
>                       ...
>               };
> =>            ports@1 {

As I said before. No where is this documented. We're not going to add 
common helpers for something undocumented and non-standard. Plus, this 
patch is doing a lot more than $subject says.

Rob

Reply via email to