Re: atomisp kernel driver(s)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Em Sat, 2 May 2020 16:29:51 +0200
Patrik Gfeller <patrik.gfeller@xxxxxxxxx> escreveu:

> On Sat, 2 May 2020 11:34:14 +0200
> Mauro Carvalho Chehab <mchehab+huawei@xxxxxxxxxx> wrote:
> 
> > Em Sat, 2 May 2020 10:15:42 +0200
> > Patrik Gfeller <patrik.gfeller@xxxxxxxxx> escreveu:
> > 
> >  [...]  
> >  [...]  
> >   
> > > > Ok. Btw, there is a driver for Atomisp on an yocto tree:
> > > > 
> > > > 	https://github.com/intel-aero/meta-intel-aero.git
> > > > 
> > > > It got removed back in 2018, but if you checkout this changeset:
> > > > 
> > > > 	Merge: db1df368eb58 08f476112708
> > > > 	Author: Lucas De Marchi <lucas.demarchi@xxxxxxxxx>
> > > > 	Date:   Tue Apr 4 11:51:42 2017 -0700
> > > > 
> > > > 	    Merge pull request #70 from zehortigoza/jam
> > > >           
> > > 
> > > Cool, the code might give additional information.    
> > 
> > Yes. And, as it was released from Intel for a specific device,
> > it should very likely work for the model supported there (with
> > the Yocto 4.4 Kernel). So, it could be valuable to help identifying
> > if some of the cleanup patches would have broken something.
> > 
> > ON a quick look, it sounds that such build was is targeted for
> > ISP2401:
> > 
> > 	+++ b/drivers/media/pci/atomisp/Makefile
> > 	@@ -0,0 +1 @@
> > 	+obj-$(CONFIG_VIDEO_ATOMISP) += css2401a0_v21_build/
> >   
> > > I've also send a
> > > request regarding the firmware and HW documentation to the author and
> > > the engineers that signed the patch. The firmware in the patch has a
> > > different version string and the size is surprisingly a few MB bigger
> > > than the one I used for the first experiment.     
> > 
> > There are some vendors that generate a firmware together with a source
> > code. This could be the case here. That's my feeling when looking into
> > a file like:
> > 
> > 	drivers/staging/media/atomisp/pci/css_2401_system/spmem_dump.c
> > 
> > Which contains lots of addresses that it is different betwen 2401 and
> > 2400.
> > 
> > If so, using a different firmware version will likely cause at least
> > some parts of the driver to fail.
> > 
> > 
> >  [...]  
> >  [...]    
> > > 
> > > It looks a this firmware is for the 2400 variant; I could also not
> > > extract the irci version string. Thus I'll not try them for the moment
> > > to perform experiments.    
> > 
> > Ok.
> > 
> >  [...]    
> > > 
> > > It identifies itself as irci_stable_bw10p_0518_20150801_0537;     
> > 
> > Same year as what we had. Just a little older. Yeah, some things there
> > could work.  
> 
> Below the result from the test with
> irci_stable_bw10p_0518_20150801_0537 - looks like it loaded the
> firmare; I got an a message when the file was not present, or the
> version did not add up. I tried to cleanup the dmesg output a little
> (removed what was unrelated to atom-isp):

> [   10.089196] ------------[ cut here ]------------
> [   10.093225] WARNING: CPU: 1 PID: 503 at drivers/media/v4l2-core/v4l2-dev.c:885 __video_register_device+0x93e/0x1120 [videodev]

That's due to a change at the media core that added this test:

	/* the device_caps field MUST be set for all but subdevs */
	if (WARN_ON(type != VFL_TYPE_SUBDEV && !vdev->device_caps))
		return -EINVAL;

Added on this patch:

	commit 3c1350501c21db8e3b1a38d9e97db29694305c3b
	Author: Hans Verkuil <hverkuil-cisco@xxxxxxxxx>
	Date:   Tue Jul 23 04:21:25 2019 -0400

	    media: v4l2-dev/ioctl: require non-zero device_caps, verify sane querycap results
    
	    Now that all V4L2 drivers set device_caps in struct video_device, we can add
	    a check for this to ensure all future drivers fill this in.

Fixing it is simple. Just sent a patch.

> > I'm suspecting that, before being able of calling regulator_get(),
> > the code should use some match logic to get the regulators on this
> > board and call regulator_register().
> > 
> > Please run this command on your tablet:
> > 
> > 	$ sudo cat /sys/kernel/debug/regulator/supply_map
> > 
> > If this returns nothing - as I suspect - then calling regulator_get()
> > won't be doing anything.   
> 
> The statement to read the supply_map did return nothing, as you'd
> expected.

Ok. That explains why register_get() failed ;-)

If this time the probing part works, I guess the next step would
be to use some tools from https://git.linuxtv.org/v4l-utils.git/,
in order to test the stuff that doesn't depend on the sensors,
as, without the regulator settings, it won't be turned on.

The simplest test would be to run:

	$ v4l2-ctl --all -d /dev/video0

(and the same for the other /dev/video? nodes created by the driver)

-

A more complete test would be to run v4l2-compliance (without
enabling streaming), but let's first check if v4l2-ctl won't
hit any Kernel bugs.

Thanks,
Mauro



[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux