[libcamera-devel] MS Surface Go camera not working

Laurent Pinchart laurent.pinchart at ideasonboard.com
Fri Jan 3 01:23:31 CET 2020


Hello Olivier,

On Thu, Jan 02, 2020 at 05:11:58PM +0100, Olivier Fauchon wrote:
> Hi, 
> 
> I just installed Arch Linux (kernel 5.4.6) on my MS Surface Go tablet. 
> 
> It seems to use IPU3,CIO2 driver, but the camera is not working.
> 
> Please find the acpidump, dmidecode, lsmod, lspci, lsusb outputs here: 
> 
> https://github.com/ofauchon/surface_go_linux/tree/master/logs 
>  
> Hope this will help to fix the problem. 
> Please ask if more tests needed. 

Thank you for the information. This is helpful, but to fix the problem
we need someone to do the actual work :-)

There are a few issues to be solved here. The first one lies on the
sensor side, we need drivers for the camera sensors used in your device.
Looking at the DSDT ACPI table, the back and front sensors are a Sony
IMX135 and an Omnivision OV2740. Neither of those two are supported
upstream, but there's some code floating around that could be leveraged.

The second issue lies on the CIO2 side and its ACPI bindings. The CIO2
Linux driver was developed for Chrome OS, and Chrome OS devices ship
ACPI tables with CIO2 information differing significantly from the ACPI
tables shipped in devices developed for Windows. In particular the CIO2
driver expects the CIO2 ACPI device entry to contain pointers to the
camera sensors, which isn't the case on your device. A quick glance at
the DSDT didn't show an easy way to get that information, but I may have
missed something. An alternative would be to add board drivers to the
kernel to store this kind of data. Other solutions may be possible.

Once all this gets solved libcamera should be able to support your
device. We just need a volunteer to do the kernel work :-)

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list