Hi Todor, On Thu, Jun 29, 2017 at 07:36:47PM +0300, Todor Tomov wrote: > >> +/* > >> + * csiphy_link_setup - Setup CSIPHY connections > >> + * @entity: Pointer to media entity structure > >> + * @local: Pointer to local pad > >> + * @remote: Pointer to remote pad > >> + * @flags: Link flags > >> + * > >> + * Rreturn 0 on success > >> + */ > >> +static int csiphy_link_setup(struct media_entity *entity, > >> + const struct media_pad *local, > >> + const struct media_pad *remote, u32 flags) > >> +{ > >> + if ((local->flags & MEDIA_PAD_FL_SOURCE) && > >> + (flags & MEDIA_LNK_FL_ENABLED)) { > >> + struct v4l2_subdev *sd; > >> + struct csiphy_device *csiphy; > >> + struct csid_device *csid; > >> + > >> + if (media_entity_remote_pad((struct media_pad *)local)) > > > > This is ugly. > > > > What do you intend to find with media_entity_remote_pad()? The pad flags > > haven't been assigned to the pad yet, so media_entity_remote_pad() could > > give you something else than remote. > > This is an attempt to check whether the pad is already linked - to refuse > a second active connection from the same src pad. As far as I can say, it > was a successful attempt. Do you see any problem with it? Ah. So you have multiple links here only one of which may be active? I guess you can well use media_entity_remote_pad(), but then media_entity_remote_pad() argument needs to be made const. Feel free to spin a patch. I don't think it'd have further implications elsewhere. -- Regards, Sakari Ailus e-mail: sakari.ailus@xxxxxx XMPP: sailus@xxxxxxxxxxxxxx