Hi All, Now that we have the atomisp2 driver running on some devices like the Asus T101HA; and with the exposure + gain controls for the ov2680 sensor found on that laptop fixed: https://lore.kernel.org/linux-media/20211107171549.267583-1-hdegoede@xxxxxxxxxx/ I believe we need to start thinking about various userspace API concerns. Thanks to Mauro's great work on various V4L2 API things are starting to work (somewhat) with regular V4L2 apps, but we really also need some processing / 3A stuff to make the cameras really usable. The most important thing needed is automatic exposure + gain control, ATM this relies on a custom ATOMISP ioctl, but I believe that we can just export the controls as regular v4l2 controls on the sensor subdev, at least for the ov2680 the exposure is already exported this way but it is read-only. Does anyone see any problems with just making these normal v4l2 controls on the sensor subdev ? We can then simulate the custom ATOMISP ioctl through the subdevs, or we can just remove it alltogether. Once we have the controls available this way I think we should write a libcamera plugin, which like the older versions of the Rasberry Pi plugin (if I've understood things correctly) won't use the MC framework for now. I believe we first need to understand the atomisp code better before we add MC support (*). But I still believe that an (experimental) plugin would be good, both to get something usable so that we can get more testers / more people interested in contributing. Another reason is to have another use-case where apps need to support libcamera to work properly (like on IPU3 devices) which will hopefully motivate people working on apps to put more effort in supporting libcamera (preferably through the new pipewire libcamera plugin so that things will also work in a flatpack sandbox). ### On other thing which I'm wondering about is the need to call S_INPUT to select front / back in this list from Mauro: $ for i in $(ls /dev/video*|sort -k2 -to -n); do echo -n $i:; v4l2-ctl -D -d $i|grep Name; done /dev/video0: Name : ATOMISP ISP CAPTURE output /dev/video1: Name : ATOMISP ISP VIEWFINDER output /dev/video2: Name : ATOMISP ISP PREVIEW output /dev/video3: Name : ATOMISP ISP VIDEO output /dev/video4: Name : ATOMISP ISP ACC /dev/video5: Name : ATOMISP ISP MEMORY input /dev/video6: Name : ATOMISP ISP CAPTURE output /dev/video7: Name : ATOMISP ISP VIEWFINDER output /dev/video8: Name : ATOMISP ISP PREVIEW output /dev/video9: Name : ATOMISP ISP VIDEO output /dev/video10: Name : ATOMISP ISP ACC I notice that everything is listed twice, I wonder if we can use /dev/video2 with input 0 together with /dev/video8 for input 1, if that is possible then we might set a different default input on each. And maybe also make them /dev/video0 (already done I see) and /dev/video1, possibly combined with a module-option to hide the others for now. This should make things better for regular apps. OTOH if we go the libcamera route then this is not really necessary I guess? Regards, Hans *) I do believe that in the end MC support makes sense at least to tie together the