[Letux-kernel] [Gta04-owner] On camera driver

H. Nikolaus Schaller hns at goldelico.com
Tue Aug 9 19:22:49 CEST 2016


Hi Andrey,

> Am 09.08.2016 um 17:02 schrieb Andrey Utkin <andrey_utkin at fastmail.com>:
> 
> On Tue, Aug 09, 2016 at 04:07:09PM +0200, H. Nikolaus Schaller wrote:
>>> Thanks for sharing.
>>> The only way I can help now is to mainline your patches to ov9650
>>> driver. BTW are they complete, i.e. does the driver from
>>> work/hns/video/ov9655 do all expected things?
>> 
>> No, not at all. It just probes successfully.
> 
> Ok, so show me the logs of v4l2-compliance or anything, whenever you
> have time for it.

I hace checked and the v42l-utils of debian also include the compliance tool.
Nice!

Here is what it says w/o running any media-ctl before:

root at letux:~# v4l2-compliance 
Driver Info:
        Driver name   : ispvideo
        Card type     : OMAP3 ISP CCP2 input
        Bus info      : media
        Driver version: 4.8.0
        Capabilities  : 0x84200003
                Video Capture
                Video Output
                Streaming
                Extended Pix Format
                Device Capabilities
        Device Caps   : 0x04200002
                Video Output
                Streaming
                Extended Pix Format

Compliance test for device /dev/video0 (not using libv4l2):

Required ioctls:
                fail: v4l2-compliance.cpp(306): missing bus_info prefix ('media')
        test VIDIOC_QUERYCAP: FAIL

Allow for multiple opens:
        test second video open: OK
                fail: v4l2-compliance.cpp(306): missing bus_info prefix ('media')
        test VIDIOC_QUERYCAP: FAIL
        test VIDIOC_G/S_PRIORITY: OK

Debug ioctls:
        test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
        test VIDIOC_LOG_STATUS: OK (Not Supported)

Input ioctls:
        test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
        test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
        test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
        test VIDIOC_ENUMAUDIO: OK (Not Supported)
        test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
        test VIDIOC_G/S_AUDIO: OK (Not Supported)
        Inputs: 0 Audio Inputs: 0 Tuners: 0

Output ioctls:
        test VIDIOC_G/S_MODULATOR: OK (Not Supported)
        test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
        test VIDIOC_ENUMAUDOUT: OK (Not Supported)
        test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
        test VIDIOC_G/S_AUDOUT: OK (Not Supported)
        Outputs: 0 Audio Outputs: 0 Modulators: 0

Input/Output configuration ioctls:
        test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
        test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
        test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
        test VIDIOC_G/S_EDID: OK (Not Supported)

        Control ioctls:
                test VIDIOC_QUERYCTRL/MENU: OK (Not Supported)
                test VIDIOC_G/S_CTRL: OK (Not Supported)
                test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
                test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
                test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
                Standard Controls: 0 Private Controls: 0

        Format ioctls:
                fail: v4l2-test-formats.cpp(287): Video Output cap set, but no Video Output formats defined
                test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: FAIL
                fail: v4l2-test-formats.cpp(1065): out->timeperframe.numerator == 0 || out->timeperframe.denominator == 0
                test VIDIOC_G/S_PARM: FAIL
                test VIDIOC_G_FBUF: OK (Not Supported)
                fail: v4l2-test-formats.cpp(411): !pix.width || !pix.height
                test VIDIOC_G_FMT: FAIL
                test VIDIOC_TRY_FMT: OK (Not Supported)
                test VIDIOC_S_FMT: OK (Not Supported)
                test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)

        Codec ioctls:
                test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
                test VIDIOC_G_ENC_INDEX: OK (Not Supported)
                test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)

        Buffer ioctls:
                test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
                test VIDIOC_EXPBUF: OK (Not Supported)


Total: 38, Succeeded: 33, Failed: 5, Warnings: 0
root at letux:~# root at letux:~#  media-ctl -V '"ov9655 2-0030":0 [UYVY2X8 1280x1024]'
Failed to enumerate /dev/media0 (-2)
root at letux:~# ls -l /dev/media*
ls: cannot access /dev/media*: No such file or directory
root at letux:~#  cat /sys/bus/i2c/devices/1-0030/uevent 
DRIVER=OV9650
OF_NAME=ov9655
OF_FULLNAME=/ocp/i2c at 48072000/ov9655 at 30
OF_COMPATIBLE_0=ovti,ov9655
OF_COMPATIBLE_N=1
MODALIAS=i2c:ov9655
root at letux:/sys/bus/i2c/devices# 

So it is probed successfully on I2C but there is no /dev/media (if that is what should be looked for here)

> 
>> Hm. Running a GTA04 permanently on ssh is a little tricky. As soon
>> as you poweroff it does not reboot automatically. And if you damage
>> the SD card contents (a kernel panic during boot) it won't boot to USB
>> without manually reflashing the SD card. So it needs supervision which
>> I can't provide.
> 
> So "emergency reboot" like this doesn't reboot either?
> 
> sync
> echo s > /proc/sysrq-trigger
> sleep 1
> echo b > /proc/sysrq-trigger

How should that work if it does not boot up to an USB interface? How can
we remotely issue such commands?

I mean the case that you did write a new uImage on the /boot partition
or kernel module to /lib/modules over your ssh connection and then you do
a reboot. But the uImage or some kernel module is broken now. Then
there is some oops on the console log but you can't remotely remove
the battery or press the power-on button for 10 seconds to shut off the PMIC.

> 
> Also I guess NFS-based rootfs would avoid corruption concerns. But I
> don't know if it's possible.

No, there is no networking available before Linux is up and running.

BR,
Nikolaus



More information about the Letux-kernel mailing list