Hi, On 5-Jun-25 19:53, Ricardo Ribalda wrote: > Fetch the orientation from the fwnode and map it into a control. > > The uvc driver does not use the media controller, so we need to create a > virtual entity, like we previously did with the external gpio. > > We do not re-purpose the external gpio entity because its is planned to > remove it. > > Signed-off-by: Ricardo Ribalda <ribalda@xxxxxxxxxxxx> ... Taking a second look at this I noticed the following: > @@ -1869,11 +1869,15 @@ static int uvc_scan_device(struct uvc_device *dev) > return -1; > } > > - /* Add GPIO entity to the first chain. */ > - if (dev->gpio_unit) { > + /* Add virtual entities to the first chain. */ > + if (dev->gpio_unit || dev->swentity_unit) { > chain = list_first_entry(&dev->chains, > struct uvc_video_chain, list); > - list_add_tail(&dev->gpio_unit->chain, &chain->entities); > + if (dev->gpio_unit) > + list_add_tail(&dev->gpio_unit->chain, &chain->entities); > + if (dev->swentity_unit) > + list_add_tail(&dev->swentity_unit->chain, > + &chain->entities); > } > > return 0; The double checking of if (dev->gpio_unit) / if (dev->swentity_unit) looks unnecessary here list_first_entry() is pretty cheap and this only runs once at probe() time. So maybe: /* Add virtual entities to the first chain. */ chain = list_first_entry(&dev->chains, struct uvc_video_chain, list); if (dev->gpio_unit) list_add_tail(&dev->gpio_unit->chain, &chain->entities); if (dev->swentity_unit) list_add_tail(&dev->swentity_unit->chain, &chain->entities); ? ... Regards, Hans