Re: [PATCH 1/2] media: entity: Add pad_from_dt_regs entity operation

Niklas Söderlund
2017-04-28T11:57:55Z

Hi Sakari,

Thanks for your feedback.

On 2017-04-28 13:32:57 +0300, Sakari Ailus wrote:
> Hi Niklas,
>
> On Fri, Apr 28, 2017 at 12:33:22AM +0200, Niklas Söderlund wrote:
> > The optional operation can be used by entities to report how it maps its
> > DT node ports and endpoints to media pad numbers. This is useful for
> > devices which require more advanced mappings of pads then DT port
> > number is equivalent with media port number.
> >
> > Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
> > ---
> > include/media/media-entity.h | 4 ++++
> > 1 file changed, 4 insertions(+)
> >
> > diff --git a/include/media/media-entity.h b/include/media/media-entity.h
> > index c7c254c5bca1761b..47efaf4d825e671b 100644
> > --- a/include/media/media-entity.h
> > +++ b/include/media/media-entity.h
> > @@ -171,6 +171,9 @@ struct media_pad {
> >
> > /**
> > * struct media_entity_operations - Media entity operations
> > + * @pad_from_dt_regs: Return the pad number based on DT port and reg
> > + * properties. This operation can be used to map a
> > + * DT port and reg to a media pad number. Optional.
>
> Don't you need to provide entity as an argument as well? The driver will be
> a little bit loss due to lack of context. :-)

I'm not sure I understand you, this is a entity operation so the driver
will know for which entity the request is mad on. Or am I missing
something?

>
> How about using the endpoint's device node (or fwnode; you can get it using
> of_fwnode_handle() soon) instead? You can always obtain the port node by
> just getting the parent.

I did think about that but opted for port_reg and reg since it seemed
more simple.

But it might be better to base this work on top of your fwnode work,
s/from_dt_regs/from_fwnode/ and use the of_fwnode_handle() as you
suggest here. Do you think this would be valuable and make this new
operation more useful?

>
> > * @link_setup: Notify the entity of link changes. The operation can
> > * return an error, in which case link setup will be
> > * cancelled. Optional.
> > @@ -184,6 +187,7 @@ struct media_pad {
> > * mutex held.
> > */
> > struct media_entity_operations {
> > + int (*pad_from_dt_regs)(int port_reg, int reg, unsigned int *pad);
> > int (*link_setup)(struct media_entity *entity,
> > const struct media_pad *local,
> > const struct media_pad *remote, u32 flags);
>
> --
> Kind regards,
>
> Sakari Ailus
> e-mail: sakari.ailus@iki.fi XMPP: sailus@retiisi.org.uk

--
Regards,
Niklas Söderlund