Draft: Use mainline camera drivers
Closed
requested to merge martin.kepplinger/linux-next:imx7_updates_20210802_mr into pureos/byzantium
Due to an influx of spam, we have had to impose restrictions on new accounts. Please see this page for instructions on how to get full permissions. Sorry for the inconvenience.
Fixes #289 (closed) Fixes https://source.puri.sm/Librem5/linux-next/-/issues/339
this switches our whole camera driver stack to use as much mainline drivers as possible.
this MR will be part of all pureos/5.15* releases automatically too
how to test:
selfie cam
#!/bin/bash
WIDTH=1632
HEIGHT=1224
SKIP=10
media-ctl -d "platform:30a90000.csi" --set-v4l2 "'csi':0 [fmt:SGBRG10/${WIDTH}x${HEIGHT} colorspace:raw]"
media-ctl -d "platform:30a90000.csi" --set-v4l2 "'imx8mq-mipi-csi2 30a70000.csi':0 [fmt:SGBRG10/${WIDTH}x${HEIGHT} colorspace:raw]"
media-ctl -d "platform:30a90000.csi" --set-v4l2 "'hi846 2-0020':0 [fmt:SGBRG10/${WIDTH}x${HEIGHT} colorspace:raw]"
media-ctl -d "platform:30a90000.csi" -l "'hi846 2-0020':0 -> 'imx8mq-mipi-csi2 30a70000.csi':0 [1]"
v4l2-ctl -d "/dev/v4l/by-path/platform-30a90000.csi-video-index0" --set-fmt-video=width=${WIDTH},height=${HEIGHT},pixelformat=GB16 --stream-mmap --stream-to=$WIDTH.raw --stream-skip=$SKIP --stream-count=1
./debayer10.py $WIDTH.raw $WIDTH $HEIGHT $WIDTH.png
rear cam
#!/bin/bash
WIDTH=1052
HEIGHT=780
SKIP=10
media-ctl -d "platform:30b80000.csi" --set-v4l2 "'csi':0 [fmt:SGRBG8/${WIDTH}x${HEIGHT} colorspace:raw]"
media-ctl -d "platform:30b80000.csi" --set-v4l2 "'imx8mq-mipi-csi2 30b60000.csi':0 [fmt:SGRBG8/${WIDTH}x${HEIGHT} colorspace:raw]"
media-ctl -d "platform:30b80000.csi" --set-v4l2 "'s5k3l6xx 3-002d':0 [fmt:SGRBG8/${WIDTH}x${HEIGHT} colorspace:raw]"
media-ctl -d "platform:30b80000.csi" -l "'s5k3l6xx 3-002d':0 -> 'imx8mq-mipi-csi2 30b60000.csi':0 [1]"
v4l2-ctl -d "/dev/v4l/by-path/platform-30b80000.csi-video-index0" --set-fmt-video=width=${WIDTH},height=${HEIGHT},pixelformat=GRBG --stream-mmap --stream-to=$WIDTH.raw --stream-skip=$SKIP --stream-count=1
for the devkit (this MR configures a different sensor driver for it) I haven't tested much, but this can be a starting point:
#!/bin/bash
WIDTH=640
HEIGHT=480
SKIP=10
media-ctl -d "platform:30a90000.csi" --set-v4l2 "'csi':0 [fmt:UYVY8_2X8/${WIDTH}x${HEIGHT} colorspace:srgb]"
media-ctl -d "platform:30a90000.csi" --set-v4l2 "'imx8mq-mipi-csi2 30a70000.csi':0 [fmt:UYVY8_2X8/${WIDTH}x${HEIGHT} colorspace:srgb]"
media-ctl -d "platform:30a90000.csi" --set-v4l2 "'ov5640 2-003c':0 [fmt:UYVY8_2X8/${WIDTH}x${HEIGHT} colorspace:srgb]"
# setup by drivers
#media-ctl -d "platform:30a90000.csi" -l "'hi846 2-0020':0 -> 'imx8mq-mipi-csi2 30a70000.csi':0 [1]"
v4l2-ctl -d "/dev/v4l/by-path/platform-30a90000.csi-video-index0" --set-fmt-video=width=${WIDTH},height=${HEIGHT},pixelformat=UYVY --stream-mmap --stream-to=$WIDTH.raw --stream-skip=$SKIP --stream-count=1
[ 505.078647] v4l2_get_link_freq: Link frequency estimated using pixel rate: result might be inaccurate
[ 505.078664] v4l2_get_link_freq: Consider implementing support for V4L2_CID_LINK_FREQ in the transmitter driver
[ 505.078673] imx8mq-mipi-csi2 30a70000.csi: esc clk rate: 66666667
[ 505.078686] imx8mq-mipi-csi2 30a70000.csi: lane rate 491443200 Ths_settle 128 hs_settle 8
for the devkit camera, we have https://source.puri.sm/Librem5/linux-next/-/issues/35
we want to have a patch for megapixels so that it works with these drivers, see https://source.puri.sm/Librem5/megapixels/-/issues/13 and this MR should help developing that. (A megapixels .ini file that only includes the seflie cam would be OK for first tests).
but for merging this, we need