Hi, I'm in the same place, I found that the system freezes when I send a VIDIOC_STREAMON ioctl, but I don't know how can I debug the kernel. I'm doing the same in v3.18 with same results: All the consoles blocked and only an info message, like this. [ 367.701660] INFO: rcu_sched self-detected stall on CPU { 0} (t=2100 jiffies g=6237 c=6236 q=138) Does anyone know something about what happens? Carlos S. 2014-11-18 12:41 GMT+01:00 Carlos Sanmartín Bustos <carsanbu@xxxxxxxxx>: > Hi all, > > I have one question about capture with the OMAP3ISP. > I'm trying to capture images with the MT0V034 sensor included in the > IGEP Cam Bird with the IGEPv2 board. I'm using the 3.17 mainline > kernel with some modifications to register the sensor and configure > the pin muxes. > The sensor is registering correctly and I can configure the media > pipeline, but when I try to capture with Yavta all the system freezes > when Yavta try to queue the buffers, then the sensor is throwing data > by the parallel port, I can see this, but ISP seems don't get nothing. > > This is the patch I wrote for this: > > diff --git a/arch/arm/boot/dts/omap3-igep.dtsi > b/arch/arm/boot/dts/omap3-igep.dtsi > index e2d163b..a184af9 100644 > --- a/arch/arm/boot/dts/omap3-igep.dtsi > +++ b/arch/arm/boot/dts/omap3-igep.dtsi > @@ -159,7 +159,7 @@ > &i2c2 { > pinctrl-names = "default"; > pinctrl-0 = <&i2c2_pins>; > - clock-frequency = <400000>; > + clock-frequency = <50000>; > }; > > &i2c3 { > diff --git a/arch/arm/boot/dts/omap3-igep0020.dts > b/arch/arm/boot/dts/omap3-igep0020.dts > index b22caaa..47128b2 100644 > --- a/arch/arm/boot/dts/omap3-igep0020.dts > +++ b/arch/arm/boot/dts/omap3-igep0020.dts > @@ -109,6 +109,7 @@ > pinctrl-0 = < > &tfp410_pins > &dss_dpi_pins > + &cam_pins > >; > > tfp410_pins: pinmux_tfp410_pins { > @@ -117,6 +118,31 @@ > >; > }; > > + cam_pins: pinmux_cam_pins { > + pinctrl-single,pins = < > + OMAP3_CORE1_IOPAD(0x210c, PIN_INPUT | > MUX_MODE0) /* cam_hs.cam_hs */ > + OMAP3_CORE1_IOPAD(0x210e, PIN_INPUT | > MUX_MODE0) /* cam_vs.cam_vs */ > + OMAP3_CORE1_IOPAD(0x2110, PIN_OUTPUT| > MUX_MODE0) /* cam_xclka.cam_xclka */ > + OMAP3_CORE1_IOPAD(0x2112, PIN_INPUT | > MUX_MODE0) /* cam_pclk.cam_pclk */ > + OMAP3_CORE1_IOPAD(0x2114, PIN_INPUT | > MUX_MODE4) /* cam_fld.gpio98 */ > + OMAP3_CORE1_IOPAD(0x2116, PIN_INPUT | > MUX_MODE0) /* cam_d0.cam_d0 */ > + OMAP3_CORE1_IOPAD(0x2118, PIN_INPUT | > MUX_MODE0) /* cam_d1.cam_d1 */ > + OMAP3_CORE1_IOPAD(0x211a, PIN_INPUT | > MUX_MODE0) /* cam_d2.cam_d2 */ > + OMAP3_CORE1_IOPAD(0x211c, PIN_INPUT | > MUX_MODE0) /* cam_d3.cam_d3 */ > + OMAP3_CORE1_IOPAD(0x211e, PIN_INPUT | > MUX_MODE0) /* cam_d4.cam_d4 */ > + OMAP3_CORE1_IOPAD(0x2120, PIN_INPUT | > MUX_MODE0) /* cam_d5.cam_d5 */ > + OMAP3_CORE1_IOPAD(0x2122, PIN_INPUT | > MUX_MODE0) /* cam_d6.cam_d6 */ > + OMAP3_CORE1_IOPAD(0x2124, PIN_INPUT | > MUX_MODE0) /* cam_d7.cam_d7 */ > + OMAP3_CORE1_IOPAD(0x2126, PIN_INPUT | > MUX_MODE0) /* cam_d8.cam_d8 */ > + OMAP3_CORE1_IOPAD(0x2128, PIN_INPUT | > MUX_MODE0) /* cam_d9.cam_d9 */ > + OMAP3_CORE1_IOPAD(0x212a, PIN_INPUT | > MUX_MODE0) /* cam_d10.cam_d10 */ > + OMAP3_CORE1_IOPAD(0x212c, PIN_INPUT | > MUX_MODE0) /* cam_d11.cam_d11 */ > + OMAP3_CORE1_IOPAD(0x212e, PIN_INPUT | > MUX_MODE4) /* cam_xclkb.gpio111 */ > + OMAP3_CORE1_IOPAD(0x2130, PIN_INPUT | > MUX_MODE0) /* cam_wen.cam_wen */ > + OMAP3_CORE1_IOPAD(0x2132, PIN_INPUT | > MUX_MODE0) /* cam_strobe.cam_strobe */ > + >; > + }; > + > dss_dpi_pins: pinmux_dss_dpi_pins { > pinctrl-single,pins = < > 0x0a4 (PIN_OUTPUT | MUX_MODE0) /* dss_pclk.dss_pclk */ > diff --git a/arch/arm/mach-omap2/pdata-quirks.c > b/arch/arm/mach-omap2/pdata-quirks.c > index c95346c..cf4bd2d 100644 > --- a/arch/arm/mach-omap2/pdata-quirks.c > +++ b/arch/arm/mach-omap2/pdata-quirks.c > @@ -10,17 +10,25 @@ > #include <linux/clk.h> > #include <linux/davinci_emac.h> > #include <linux/gpio.h> > +#include <linux/i2c.h> > #include <linux/init.h> > #include <linux/kernel.h> > #include <linux/of_platform.h> > +#include <linux/regulator/fixed.h> > +#include <linux/regulator/machine.h> > #include <linux/wl12xx.h> > > +#include <media/mt9v032.h> > +#include <media/omap3isp.h> > + > #include <linux/platform_data/pinctrl-single.h> > #include <linux/platform_data/iommu-omap.h> > > #include "am35xx.h" > #include "common.h" > #include "common-board-devices.h" > +#include "devices.h" > #include "dss-common.h" > #include "control.h" > #include "omap_device.h" > @@ -35,6 +42,61 @@ struct pdata_init { > struct of_dev_auxdata omap_auxdata_lookup[]; > static struct twl4030_gpio_platform_data twl_gpio_auxdata; > > +static struct regulator_consumer_supply igep00x0_dummy_supplies[] = { > + REGULATOR_SUPPLY("vaa", "1-005c"), > +}; > + > +static const s64 mt9v032_link_freqs[] = { > + 13000000, > + 26600000, > + 27000000, > + 0, > +}; > + > +static struct mt9v032_platform_data mt9v032_pdata = { > + .link_freqs = mt9v032_link_freqs, > + .link_def_freq = 13000000, > +}; > + > +static struct i2c_board_info mt9v032_i2c_device = { > + I2C_BOARD_INFO("mt9v032", 0xb8 >> 1), > + .platform_data = &mt9v032_pdata, > +}; > + > +static struct isp_subdev_i2c_board_info mt9v032_board_info[] = { > + { > + .board_info = &mt9v032_i2c_device, > + .i2c_adapter_id = 1, > + }, > + { NULL, 0, }, > +}; > + > + > +static struct isp_v4l2_subdevs_group igep00x0_camera_subdevs[] = { > + { > + .subdevs = mt9v032_board_info, > + .interface = ISP_INTERFACE_PARALLEL, > + .bus = { > + .parallel = { > + .data_lane_shift = ISP_LANE_SHIFT_0, > + /* Sample on falling edge */ > + .clk_pol = 1, > + } > + }, > + }, > + { }, > +}; > + > +static struct isp_platform_data igep00x0_isp_pdata = { > + .xclks = { > + [0] = { > + .dev_id = "1-005c", > + }, > + }, > + .subdevs = igep00x0_camera_subdevs, > +}; > + > + > #if IS_ENABLED(CONFIG_WL12XX) > > static struct wl12xx_platform_data wl12xx __initdata; > @@ -141,6 +203,12 @@ static void __init omap3_sbc_t3530_legacy_init(void) > > static void __init omap3_igep0020_legacy_init(void) > { > + clk_add_alias(NULL, "1-005c", "cam_xclka", NULL); > + > + regulator_register_fixed(0, igep00x0_dummy_supplies, > + ARRAY_SIZE(igep00x0_dummy_supplies)); > + > + omap3_init_camera(&igep00x0_isp_pdata); > } > > And in runtime I test with this pipeline: > > Media controller API version 0.0.0 > > > > Media device information > > ------------------------ > > driver omap3isp > > model TI OMAP3 ISP > > serial > > bus info > > hw revision 0xf0 > > driver version 0.0.0 > > > > Device topology > > - entity 1: OMAP3 ISP CCP2 (2 pads, 2 links) > > type V4L2 subdev subtype Unknown flags 0 > > device node name /dev/v4l-subdev0 > > pad0: Sink > > [fmt:SGRBG10/4096x4096] > > <- "OMAP3 ISP CCP2 input":0 [] > > pad1: Source > > [fmt:SGRBG10/4096x4096] > > -> "OMAP3 ISP CCDC":0 [] > > > > - entity 2: OMAP3 ISP CCP2 input (1 pad, 1 link) > > type Node subtype V4L flags 0 > > device node name /dev/video0 > > pad0: Source > > -> "OMAP3 ISP CCP2":0 [] > > > > - entity 3: OMAP3 ISP CSI2a (2 pads, 2 links) > > type V4L2 subdev subtype Unknown flags 0 > > device node name /dev/v4l-subdev1 > > pad0: Sink > > [fmt:SGRBG10/4096x4096] > > pad1: Source > > [fmt:SGRBG10/4096x4096] > > -> "OMAP3 ISP CSI2a output":0 [] > > -> "OMAP3 ISP CCDC":0 [] > > > > - entity 4: OMAP3 ISP CSI2a output (1 pad, 1 link) > > type Node subtype V4L flags 0 > > device node name /dev/video1 > > pad0: Sink > > <- "OMAP3 ISP CSI2a":1 [] > > > > - entity 5: OMAP3 ISP CCDC (3 pads, 9 links) > > type V4L2 subdev subtype Unknown flags 0 > > device node name /dev/v4l-subdev2 > > pad0: Sink > > [fmt:SGRBG10/752x480] > > <- "OMAP3 ISP CCP2":1 [] > > <- "OMAP3 ISP CSI2a":1 [] > > <- "mt9v032 1-005c":0 [ENABLED] > > pad1: Source > > [fmt:SGRBG10/752x480 > > crop.bounds:(0,0)/752x480 > > crop:(0,0)/752x480] > > -> "OMAP3 ISP CCDC output":0 [] > > -> "OMAP3 ISP resizer":0 [] > > pad2: Source > > [fmt:SGRBG10/752x479] > > -> "OMAP3 ISP preview":0 [ENABLED] > > -> "OMAP3 ISP AEWB":0 [ENABLED,IMMUTABLE] > > -> "OMAP3 ISP AF":0 [ENABLED,IMMUTABLE] > > -> "OMAP3 ISP histogram":0 [ENABLED,IMMUTABLE] > > > > - entity 6: OMAP3 ISP CCDC output (1 pad, 1 link) > > type Node subtype V4L flags 0 > > device node name /dev/video2 > > pad0: Sink > > <- "OMAP3 ISP CCDC":1 [] > > > > - entity 7: OMAP3 ISP preview (2 pads, 4 links) > > type V4L2 subdev subtype Unknown flags 0 > > device node name /dev/v4l-subdev3 > > pad0: Sink > > [fmt:SGRBG10/752x479 > > crop.bounds:(10,4)/734x471 > > crop:(10,4)/734x471] > > <- "OMAP3 ISP CCDC":2 [ENABLED] > > <- "OMAP3 ISP preview input":0 [] > > pad1: Source > > [fmt:UYVY/734x471] > > -> "OMAP3 ISP preview output":0 [ENABLED] > > -> "OMAP3 ISP resizer":0 [] > > > > - entity 8: OMAP3 ISP preview input (1 pad, 1 link) > > type Node subtype V4L flags 0 > > device node name /dev/video3 > > pad0: Source > > -> "OMAP3 ISP preview":0 [] > > > > - entity 9: OMAP3 ISP preview output (1 pad, 1 link) > > type Node subtype V4L flags 0 > > device node name /dev/video4 > > pad0: Sink > > <- "OMAP3 ISP preview":1 [ENABLED] > > > > - entity 10: OMAP3 ISP resizer (2 pads, 4 links) > > type V4L2 subdev subtype Unknown flags 0 > > device node name /dev/v4l-subdev4 > > pad0: Sink > > [fmt:YUYV/4095x4095 > > crop.bounds:(4,6)/4086x4082 > > crop:(4,6)/4086x4082] > > <- "OMAP3 ISP CCDC":1 [] > > <- "OMAP3 ISP preview":1 [] > > <- "OMAP3 ISP resizer input":0 [] > > pad1: Source > > [fmt:YUYV/4096x4095] > > -> "OMAP3 ISP resizer output":0 [] > > > > - entity 11: OMAP3 ISP resizer input (1 pad, 1 link) > > type Node subtype V4L flags 0 > > device node name /dev/video5 > > pad0: Source > > -> "OMAP3 ISP resizer":0 [] > > > > - entity 12: OMAP3 ISP resizer output (1 pad, 1 link) > > type Node subtype V4L flags 1 > > device node name /dev/video6 > > pad0: Sink > > <- "OMAP3 ISP resizer":1 [] > > > > - entity 13: OMAP3 ISP AEWB (1 pad, 1 link) > > type V4L2 subdev subtype Unknown flags 0 > > device node name /dev/v4l-subdev5 > > pad0: Sink > > <- "OMAP3 ISP CCDC":2 [ENABLED,IMMUTABLE] > > > > - entity 14: OMAP3 ISP AF (1 pad, 1 link) > > type V4L2 subdev subtype Unknown flags 0 > > device node name /dev/v4l-subdev6 > > pad0: Sink > > <- "OMAP3 ISP CCDC":2 [ENABLED,IMMUTABLE] > > > > - entity 15: OMAP3 ISP histogram (1 pad, 1 link) > > type V4L2 subdev subtype Unknown flags 0 > > device node name /dev/v4l-subdev7 > > pad0: Sink > > <- "OMAP3 ISP CCDC":2 [ENABLED,IMMUTABLE] > > > > - entity 16: mt9v032 1-005c (1 pad, 1 link) > > type V4L2 subdev subtype Unknown flags 0 > > device node name /dev/v4l-subdev8 > > pad0: Source > > [fmt:SGRBG10/752x480 > > crop:(1,5)/752x480] > > -> "OMAP3 ISP CCDC":0 [ENABLED] > > Have you some idea about what is not working? I think it's something > in OMAP3 ISP but I can't find the reason. > > Thanks, > > Carlos S. -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html