Claus, On 8/21/23 6:07 PM, Claus Stovgaard wrote: > Bingbu > > On Mon, 2023-08-21 at 08:55 +0200, Claus Stovgaard wrote: >> Bingbu >> >> On Mon, 2023-08-21 at 14:22 +0800, Bingbu Cao wrote: >>> >>> Claus, >>> >>> >>> On 8/21/23 11:14 AM, Bingbu Cao wrote: >>> >>> >>> I see that the ivsc driver has not been in master branch. Before >>> that, >>> could you try several hack to check whether camera can work on >>> master? >>> >>> https://github.com/bingbucao/linux/commits/ipu_dev >>> >>> 7ebff51284d9 media: ov01a10: hack ivsc to make camera can work >>> 01cc9f3d1b61 i2c: ljca: Call acpi_dev_clear_dependencies() >>> 92e5d122e105 vsc: Defer firmware loading to avoid long probing time >>> 5f5d5f0df06b driver: ivsc: add intel ivsc driver >>> 0f4819dec533 Revert "gpio: Add support for Intel LJCA USB GPIO >>> driver" >> >> Thanks for your quick reply. >> >> I was missing understanding of ivsc when I wrote the mail yesterday. >> Got some basic understanding yesterday after I wrote, and big thanks >> for confirming it, and also thanks for your ipu_dev branch. Has just >> cloned it, and is building as I write. >> >> Just fyi, I was trying to hack something together yesterday, and got >> further, but not yet working. >> >> My hack was to combine the out-of-tree ivsc drivers and firmware from >> >> * https://github.com/intel/ivsc-firmware.git >> * https://github.com/intel/ivsc-driver.git >> >> Though noticed that I need some changes to the sensor driver so was >> also building all the drivers from ipu6-drivers (with minor changes >> to >> get_pages) as out-of-tree modules. >> >> * https://github.com/intel/ipu6-drivers.git >> >> Here I used everything beside media/pci/*.ko files. I could see the >> sensor and got further, but was missing the last. >> >> Looking forward to try your branch. Looks much cleaner, and would be >> nice to get working :) >> > > I got it to work on Dell XPS 9320. > With some minor changes compared to your guide in Documentation/admin- > guide/media/ipu6-isys.rst > > [root@xps-1 ]# uname -a > Linux xps-1 6.5.0-rc7-g7ebff51284d9 #1 SMP PREEMPT_DYNAMIC Mon Aug 21 > 09:02:20 CEST 2023 x86_64 GNU/Linux > > [root@xps-1 ]# media-ctl -d /dev/media0 -p | tail -n10 > > - entity 2149: ov01a10 16-0036 (1 pad, 1 link) > type V4L2 subdev subtype Sensor flags 0 > device node name /dev/v4l-subdev4 > pad0: Source > [fmt:SBGGR10_1X10/1280x800 field:none colorspace:raw > crop.bounds:(0,0)/1296x816 > crop:(8,8)/1280x800] > -> "Intel IPU6 CSI2 2":0 [] > > So i2c is 16-0036 - and we use it for setup like your guide. > > export MDEV=/dev/media0 > > media-ctl -d $MDEV -l "\"ov01a10 17-0036\":0 -> \"Intel IPU6 CSI2 > 2\":0[1]" > > media-ctl -d $MDEV -V "\"ov01a10 17-0036\":0 [fmt:SBGGR10/1280x800]" > media-ctl -d $MDEV -V "\"Intel IPU6 CSI2 2\":0 [fmt:SBGGR10/1280x800]" > media-ctl -d $MDEV -V "\"Intel IPU6 CSI2 2\":1 [fmt:SBGGR10/1280x800]" > > media-ctl -d $MDEV -l "\"ov01a10 17-0036\":0 -> \"Intel IPU6 CSI2 > 2\":0[1]" > media-ctl -d $MDEV -l "\"Intel IPU6 CSI2 2\":1 ->\"Intel IPU6 ISYS > Capture 0\":0[5]" > > Though yavta does not work in the way as described in the guide. > > [root@xps-1 ]# yavta --data-prefix -u -c10 -n5 -I -s 1280x800 -- > file=/tmp/frame-#.bin -f SBGGR10 /dev/video0 > Device /dev/video0 opened. > Device `ipu6' on `PCI:0000:00:05.0' (driver 'isys') supports video, > capture, with mplanes. > Video format set: SBGGR10 (30314742) 1280x800 field none, 1 planes: > * Stride 2560, buffer size 2050560 > Video format: SBGGR10 (30314742) 1280x800 field none, 1 planes: > * Stride 2560, buffer size 2050560 > Unable to request buffers: Invalid argument (22). Firstly, thanks for your work. I just noticed that we remove the userptr buffer support before, that means yavta '-u' will not be supported. So I think you can try to remove '-u' to see whether it can work. I will update the documentation in next version. For Dell XPS 9320, we still have some work to make IPU work with Intel VSC(upstreaming). My current hack on github is not offical. But it can help people on 9320 to verify the camera before everything ready. :) > > > So I changed to use v4l2-ctl > > [root@xps-1 ]# v4l2-ctl -d /dev/video0 --set-fmt-video > width=1280,height=800,pixelformat=BG10 --stream-mmap --stream-count=1 - > -stream-to=frame.bin > > With this I created raw data in BG10 format, and later used a small > python script with numpy and opencv to look at the data. > > #!/usr/bin/env python3 > # Demosaicing Bayer Raw image > > import cv2 > import numpy as np > > width = 1280 > height = 800 > > with open("frame.bin", "rb") as rawimg: > # Read the bayer data > data = np.fromfile(rawimg, np.uint16, width * height) > bayer = np.reshape(data, (height, width)) > > # Just a offset gain to be able to see something > for x in range(0, len(bayer)): > for y in range(0, len(bayer[0])): > bayer[x, y] = (bayer[x,y] << 8) > > rgb = cv2.cvtColor(bayer, cv2.COLOR_BayerBGGR2RGB) > > cv2.imshow('rgb', rgb) > cv2.waitKey() > cv2.destroyAllWindows() > > > Thanks for the help, and now we know what is needed to make it work on > top of yesterdays rc7 > > /Claus > -- Best regards, Bingbu Cao