Thread (21 messages) 21 messages, 6 authors, 2011-08-24

Re: [beagleboard] Re: [PATCH v7 1/2] Add driver for Aptina (Micron) mt9p031 sensor.

From: CJ <hidden>
Date: 2011-08-24 21:39:41

On 24/08/11 21:12, Laurent Pinchart wrote:
On Wednesday 24 August 2011 03:17:39 CJ wrote:
quoted
On 23/08/11 19:47, Laurent Pinchart wrote:
quoted
On Tuesday 23 August 2011 05:47:20 CJ wrote:
quoted
On 22/08/11 22:15, Michael Jones wrote:
quoted
quoted
quoted
quoted
quoted
I am trying to get the mt9p031 working from nand with a ubifs file
system and I am having a few problems.

/dev/media0 is not present unless I run:
#mknod /dev/media0 c 251 0
#chown root:video /dev/media0

#media-ctl -p
Enumerating entities
media_open: Unable to enumerate entities for device /dev/media0
(Inappropriate ioctl for device)

With the same rig/files it works fine running from EXT4 on an SD
card. Any idea why this does not work on nand with ubifs?
Is the OMAP3 ISP driver loaded ? Has it probed the device
successfully ? Check the kernel log for OMAP3 ISP-related messages.
Here is the version running from SD card:
# dmesg | grep isp
[    0.265502] omap-iommu omap-iommu.0: isp registered
[    2.986541] omap3isp omap3isp: Revision 2.0 found
[    2.991577] omap-iommu omap-iommu.0: isp: version 1.1
[    2.997406] omap3isp omap3isp: hist: DMA channel = 0
[    3.006256] omap3isp omap3isp: isp_set_xclk(): cam_xclka set to
21600000 Hz
[    3.011932] omap3isp omap3isp: isp_set_xclk(): cam_xclka set to 0
Hz

    From NAND using UBIFS:
# dmesg | grep isp
[    3.457061] omap3isp omap3isp: Revision 2.0 found
[    3.462036] omap-iommu omap-iommu.0: isp: version 1.1
[    3.467620] omap3isp omap3isp: hist: DMA channel = 0
[    3.472564] omap3isp omap3isp: isp_set_xclk(): cam_xclka set to
21600000 Hz
[    3.478027] omap3isp omap3isp: isp_set_xclk(): cam_xclka set to 0
Hz

Seems to be missing:
omap-iommu omap-iommu.0: isp registered

Is that the issue? Why would this not work when running from NAND?
I'm not sure, either, but I had a similar problem before using
Laurent's patch below. IIRC, usually udev would create /dev/media0
from a cached list of /dev/*. Later modutils would come along and load
the modules in the proper order (iommu, then omap3-isp) and everybody
was happy. Occasionally, udev would fail to use the cached version of
/dev/, and look through /sys/devices to re-create the devices in
/dev/. When media0 was found, omap3-isp.ko would be loaded, but iommu
had not yet been, presumably because it doesn't have an entry in
/sys/devices/. So maybe udev is behaving differently for you on NAND
than it did on the card? Either way, as I said, using Laurent's patch
below did the job for me.
quoted
I'm not sure why it doesn't work from NAND, but the iommu2 module
needs to be loaded before the omap3-isp module. Alternatively you can
compile the iommu2 module in the kernel with
diff --git a/arch/arm/plat-omap/Kconfig b/arch/arm/plat-omap/Kconfig
index 49a4c75..3c87644 100644
--- a/arch/arm/plat-omap/Kconfig
+++ b/arch/arm/plat-omap/Kconfig
@@ -132,7 +132,7 @@ config OMAP_MBOX_KFIFO_SIZE

    	  module parameter).

    config OMAP_IOMMU

-       tristate
+       bool

    config OMAP_IOMMU_DEBUG

           tristate "Export OMAP IOMMU internals in DebugFS"
Thanks for the help!

For some reason dmesg does not read early kernel stuff when in UBIFS
from NAND.
So when I went back and had a look the line I thought was not there is
actually included.

[    0.276977] omap-iommu omap-iommu.0: isp registered

So I guess everything is loading fine.

I tried the patch and it didn't make a difference.

Regarding what Michael said /dev/media0 is not created by udev when boot
from NAND.
I tried creating it manually with:
#mknod /dev/media0 c 251 0
#chown root:video /dev/media0

But this does not work - outputs:

# media-ctl -r -l '"mt9p031 2-0048":0->"OMAP3 ISP CCDC":0[1], "OMAP3 ISP
CCDC":2->"OMAP3 ISP preview":0[1], "OMAP3 ISP preview":1->"OMAP3 ISP
resizer":0[1], "OMAP3 ISP resizer":1->"OMAP3 ISP resizer output":0[1]'
media_open: Unable to enumerate entities for device /dev/media0
(Inappropriate ioctl for device)

So is there a problem with udev?
There could be. What's the output of

ls /sys/class/video4linux
#ls /sys/class/video4linux
v4l-subdev0  v4l-subdev3  v4l-subdev6  video0       video3       video6
v4l-subdev1  v4l-subdev4  v4l-subdev7  video1       video4
v4l-subdev2  v4l-subdev5  v4l-subdev8  video2       video5
Devices are correctly registered with the Linux kernel. Does 'ls /dev/v4l-
subdev*' show the same entries ? If not you probably have a udev issue.
Slightly different..

# ls /dev/v4l-subdev*
/dev/v4l-subdev0  /dev/v4l-subdev3  /dev/v4l-subdev6
/dev/v4l-subdev1  /dev/v4l-subdev4  /dev/v4l-subdev7
/dev/v4l-subdev2  /dev/v4l-subdev5  /dev/v4l-subdev8

I probably should have said this earlier .. but I am using mdev not udev.
It does work fine with exactly the same system running from the card in 
EXT4.

Any other thoughts?

Cheers,
Chris
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help