xref: /linux/drivers/staging/media/atomisp/TODO (revision db10cb9b)
1Required firmware
2=================
3
4The atomisp driver requires the following firmware:
5
6- for BYT: /lib/firmware/shisp_2400b0_v21.bin
7
8  With a version of "irci_stable_candrpv_0415_20150423_1753" to check
9  the version run: "strings shisp_2400b0_v21.bin | head -n1", sha256sum:
10
11  3847b95fb9f1f8352c595ba7394d55b33176751372baae17f89aa483ec02a21b  shisp_2400b0_v21.bin
12
13  The shisp_2400b0_v21.bin file with this version can be found on
14  the Android factory images of various X86 Android tablets such as
15  e.g. the Chuwi Hi8 Pro.
16
17- for CHT: /lib/firmware/shisp_2401a0_v21.bin
18
19  With a version of "irci_stable_candrpv_0415_20150521_0458", sha256sum:
20
21  e89359f4e4934c410c83d525e283f34c5fcce9cb5caa75ad8a32d66d3842d95c  shisp_2401a0_v21.bin
22
23  This can be found here:
24  https://github.com/intel-aero/meta-intel-aero-base/blob/master/recipes-kernel/linux/linux-yocto/shisp_2401a0_v21.bin
25
26
27TODO
28====
29
301. Items which MUST be fixed before the driver can be moved out of staging:
31
32* The atomisp ov2680 and ov5693 sensor drivers bind to the same hw-ids as
33  the standard ov2680 and ov5693 drivers under drivers/media/i2c, which
34  conflicts. Drop the atomisp private ov2680 and ov5693 drivers:
35  * Port various ov2680 improvements from atomisp_ov2680.c to regular ov2680.c
36    and switch to regular ov2680 driver
37  * Make atomisp work with the regular ov5693 driver and drop atomisp_ov5693
38
39* Fix atomisp causing the whole machine to hang in its probe() error-exit
40  path taken in the firmware missing case
41
42* Remove/disable private IOCTLs
43
44* Remove/disable custom v4l2-ctrls
45
46* Remove custom sysfs files created by atomisp_drvfs.c
47
48* Remove abuse of priv field in various v4l2 userspace API structs
49
50* Without a 3A library the capture behaviour is not very good. To take a good
51  picture, the exposure/gain needs to be tuned using v4l2-ctl on the sensor
52  subdev. To fix this, support for the atomisp needs to be added to libcamera.
53
54  This MUST be done before moving the driver out of staging so that we can
55  still make changes to e.g. the mediactl topology if necessary for
56  libcamera integration. Since this would be a userspace API break, this
57  means that at least proof-of-concept libcamera integration needs to be
58  ready before moving the driver out of staging.
59
60
612. Items which SHOULD also be fixed eventually:
62
63* Remove VIDEO_ATOMISP_ISP2401, making the driver to auto-detect the
64  register address differences between ISP2400 and ISP2401
65
66* The driver is intended to drive the PCI exposed versions of the device.
67  It will not detect those devices enumerated via ACPI as a field of the
68  i915 GPU driver (only a problem on BYT).
69
70  There are some patches adding i915 GPU support floating at the Yocto's
71  Aero repository (so far, untested upstream).
72
73* Ensure that the driver will pass v4l2-compliance tests
74
75* Fix not all v4l2 apps working, e.g. cheese does not work
76
77* Get manufacturer's authorization to redistribute the binaries for
78  the firmware files
79
80* The atomisp code still has a lot of cruft which needs cleaning up
81
82
83Testing
84=======
85
86Since libcamera support is not available yet, the easiest way to test for
87now is using v4l2-ctl to select the input and gstreamer for streaming.
88
89To select the input run:
90
91v4l2-ctl -i <input>
92
93Where <input> is 0 (front cam) or 1 (back cam).
94
95The simplest gstreamer pipeline for testing running the sensor
96at its max resolution is:
97
98gst-launch-1.0 v4l2src ! videoconvert ! xvimagesink sync=false
99
100To select e.g 640x480 as resolution use:
101
102gst-launch-1.0 v4l2src ! video/x-raw,format=YV12,width=640,height=480 ! \
103               videoconvert ! xvimagesink sync=false
104
105And to show fps use:
106
107gst-launch-1.0 v4l2src ! video/x-raw,format=YV12,width=640,height=480 ! \
108               videoconvert ! fpsdisplaysink video-sink=xvimagesink sync=false
109
110Often the image will be over / under exposed. This can be fixed by using
111v4l2-ctl on the sensor subdev to tweak the exposure ctrl; or by using a GUI
112app for v4l2-controls which also supports subdev such as the Fedora patched
113gtk-v4l tool.
114