This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Linux/OMAP5432-EVM: ISS Camera Driver issue: L3 Standard Error: MASTER MPU TARGET ISS (Read): At Address: 0x00000074

Part Number: OMAP5432-EVM

Tool/software: Linux

Hello everyone,

We are using the kernel 4.1.28 as per "https://eewiki.net/display/linuxonarm/OMAP5432+uEVM

We have successfully port the omap4iss and 0v5640 driver of csi-2 camera on omap5432-uevm board.  now we are able to get the /dev/video0 node.

We have been modified the below files.

  1. ov5640.c [ov5640 sensor driver]
  2. iss.c [added support for node configuration]
  3. omap_hwmod_54xx_data.c [added iss hwmod configuration]
  4. omap5.dtsi,omap5-uevm.dts,omap54xx-clocks.dtsi [Added the csi-2 [iss] support for mipi camera[ov5640]]

        iss: iss@52000000 {
                    compatible = "ti,omap4-iss";
                    reg = <0x52000000 0x100>, /* top */
                          <0x52001000 0x170>, /* csi2_a_regs1 */
                          <0x52001170 0x020>, /* camerarx_core1 */
                          <0x52001400 0x170>, /* csi2_b_regs1 */
                          <0x52001570 0x020>, /* camerarx_core2 */
                          <0x52002000 0x200>, /* bte */
                          <0x52010000 0x0a0>, /* isp_sys1 */
                          <0x52010400 0x400>, /* isp_resizer */
                          <0x52010800 0x800>, /* isp_ipipe */
                          <0x52011000 0x200>, /* isp_isif */
                          <0x52011200 0x080>; /* isp_ipipeif */
                    reg-names = "top",
                                "csi2_a_regs1",
                                "camerarx_core1",
                                "csi2_b_regs1",
                                "camerarx_core2",
                                "bte",
                                "isp_sys1",
                                "isp_resizer",
                                "isp_ipipe",
                                "isp_isif",
                                "isp_ipipeif";
                    status = "ok";
                    ti,hwmods = "iss";
                    interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
                    clocks = <&ducati_clk_mux_ck>, <&iss_ctrlclk>;
                    clock-names = "iss_fck", "iss_ctrlclk";
                    dmas = <&sdma 9>, <&sdma 10>, <&sdma 12>, <&sdma 13>;
                    dma-names = "1", "2", "3", "4";
                };

        &i2c3 {
            pinctrl-names = "default";
            pinctrl-0 = <&i2c3_pins>;
            status = "ok";

            clock-frequency = <100000>;

            ov5640_1_camera: camera@3c {
                compatible = "omnivision,ov5640";
                status = "ok";
                reg = <0x3c>;

                pwdn-gpios = <&gpio1 13 GPIO_ACTIVE_HIGH>;    // gpio1_13 - power down
                reset-gpios = <&gpio8 2 GPIO_ACTIVE_LOW>;    // gpio8_226 - reset

                clocks = <&auxclk1_ck>;

                port {
                    ov5640_1_cam_ep: endpoint {
                        clock-lanes = <4>;
                        data-lanes = <0 1>;
                        remote-endpoint = <&csi2a_ep>;
                    };
                };
            };
        };


        &iss {
            status = "ok";

            pinctrl-names = "default";
            pinctrl-0 = <&iss_csi21_pins>;

            ports {
                port@0 {
                    reg = <0>;
                    csi2a_ep: endpoint {
                        remote-endpoint = <&ov5640_1_cam_ep>;
                        clock-lanes = <4>;
                        data-lanes = <0 1>;
                        crc = <0>;
                        lane-polarities = <0 0 0>;
                    };
                };
            };
        };

Now whenever we try to excess the /dev/video0 node for capture the image it show below error.

  179.114938] ------------[ cut here ]------------
[  179.114963] WARNING: CPU: 0 PID: 700 at drivers/bus/omap_l3_noc.c:147 l3_interrupt_handler+0x274/0x38c()
[  179.114973] 44000000.ocp:L3 Standard Error: MASTER MPU TARGET ISS (Read): At Address: 0x00000074 : Data Access in Supervisor mode during Functional access
[  179.114980] Modules linked in: smsc95xx usbnet bnep bluetooth snd_soc_omap_abe_twl6040 snd_soc_twl6040 omap4_keypad matrix_keymap ehci_omap ehci_hcd dwc3_omap gpio_pca953x spi_omap2_mcspi ov5640 snd_soc_omap_mcbsp snd_soc_omapo
[  179.115077] CPU: 0 PID: 700 Comm: ffmpeg Tainted: G        W       4.1.38-armv7-lpae-x4 #30
[  179.115085] Hardware name: Generic OMAP5 (Flattened Device Tree)
[  179.115106] [<c0031d58>] (unwind_backtrace) from [<c002c104>] (show_stack+0x20/0x24)
[  179.115122] [<c002c104>] (show_stack) from [<c09c8c0c>] (dump_stack+0x9c/0xb0)
[  179.115138] [<c09c8c0c>] (dump_stack) from [<c006065c>] (warn_slowpath_common+0x94/0xc4)
[  179.115150] [<c006065c>] (warn_slowpath_common) from [<c00606cc>] (warn_slowpath_fmt+0x40/0x48)
[  179.115165] [<c00606cc>] (warn_slowpath_fmt) from [<c0563300>] (l3_interrupt_handler+0x274/0x38c)
[  179.115183] [<c0563300>] (l3_interrupt_handler) from [<c00b85d4>] (handle_irq_event_percpu+0xbc/0x258)
[  179.115197] [<c00b85d4>] (handle_irq_event_percpu) from [<c00b87c4>] (handle_irq_event+0x54/0x74)
[  179.115209] [<c00b87c4>] (handle_irq_event) from [<c00bb7fc>] (handle_fasteoi_irq+0xbc/0x190)
[  179.115221] [<c00bb7fc>] (handle_fasteoi_irq) from [<c00b7b6c>] (generic_handle_irq+0x3c/0x4c)
[  179.115234] [<c00b7b6c>] (generic_handle_irq) from [<c00b7e78>] (__handle_domain_irq+0x6c/0xc4)
[  179.115246] [<c00b7e78>] (__handle_domain_irq) from [<c0009618>] (gic_handle_irq+0x34/0x70)
[  179.115259] [<c0009618>] (gic_handle_irq) from [<c09cebc0>] (__irq_svc+0x40/0x54)
[  179.115266] Exception stack(0xed157cc8 to 0xed157d10)
[  179.115275] 7cc0:                   00000000 600f0013 00000031 f00bc000 ed450010 ed4503a0
[  179.115284] 7ce0: c0eed594 ed53cc40 ed7d3640 00000000 00000000 ed157d2c ed157cd8 ed157d10
[  179.115291] 7d00: c084bf88 c08396dc 600f0013 ffffffff
[  179.115305] [<c09cebc0>] (__irq_svc) from [<c08396dc>] (omap4iss_get+0xc8/0x190)
[  179.115319] [<c08396dc>] (omap4iss_get) from [<c0841714>] (iss_video_open+0x58/0x150)
[  179.115334] [<c0841714>] (iss_video_open) from [<c07a3068>] (v4l2_open+0xac/0x110)
[  179.115349] [<c07a3068>] (v4l2_open) from [<c01c2e70>] (chrdev_open+0xe0/0x1a0)
[  179.115363] [<c01c2e70>] (chrdev_open) from [<c01bc4bc>] (do_dentry_open+0x1d4/0x324)
[  179.115377] [<c01bc4bc>] (do_dentry_open) from [<c01bd764>] (vfs_open+0x70/0x78)
[  179.115391] [<c01bd764>] (vfs_open) from [<c01cb31c>] (do_last+0x63c/0xe68)
[  179.115405] [<c01cb31c>] (do_last) from [<c01cdb9c>] (path_openat+0x90/0x64c)
[  179.115417] [<c01cdb9c>] (path_openat) from [<c01cee5c>] (do_filp_open+0x3c/0x98)
[  179.115428] [<c01cee5c>] (do_filp_open) from [<c01bdabc>] (do_sys_open+0x118/0x1dc)
[  179.115440] [<c01bdabc>] (do_sys_open) from [<c01bdba8>] (SyS_open+0x28/0x2c)
[  179.115454] [<c01bdba8>] (SyS_open) from [<c0027fa0>] (ret_fast_syscall+0x0/0x3c)
[  179.115462] ---[ end trace 9aaf2ff4593ece44 ]---
[  179.115478] ------------[ cut here ]------------
[  179.115490] WARNING: CPU: 0 PID: 700 at drivers/bus/omap_l3_noc.c:147 l3_interrupt_handler+0x274/0x38c()
[  179.115498] 44000000.ocp:L3 Standard Error: MASTER MPU TARGET ISS (Read): At Address: 0x00010028 : Data Access in Supervisor mode during Functional access
[  179.115504] Modules linked in: smsc95xx usbnet bnep bluetooth snd_soc_omap_abe_twl6040 snd_soc_twl6040 omap4_keypad matrix_keymap ehci_omap ehci_hcd dwc3_omap gpio_pca953x spi_omap2_mcspi ov5640 snd_soc_omap_mcbsp snd_soc_omapo
[  179.115588] CPU: 0 PID: 700 Comm: ffmpeg Tainted: G        W       4.1.38-armv7-lpae-x4 #30
[  179.115595] Hardware name: Generic OMAP5 (Flattened Device Tree)
[  179.115609] [<c0031d58>] (unwind_backtrace) from [<c002c104>] (show_stack+0x20/0x24)
[  179.115621] [<c002c104>] (show_stack) from [<c09c8c0c>] (dump_stack+0x9c/0xb0)
[  179.115634] [<c09c8c0c>] (dump_stack) from [<c006065c>] (warn_slowpath_common+0x94/0xc4)
[  179.115645] [<c006065c>] (warn_slowpath_common) from [<c00606cc>] (warn_slowpath_fmt+0x40/0x48)
[  179.115659] [<c00606cc>] (warn_slowpath_fmt) from [<c0563300>] (l3_interrupt_handler+0x274/0x38c)
[  179.115672] [<c0563300>] (l3_interrupt_handler) from [<c00b85d4>] (handle_irq_event_percpu+0xbc/0x258)
[  179.115685] [<c00b85d4>] (handle_irq_event_percpu) from [<c00b87c4>] (handle_irq_event+0x54/0x74)
[  179.115696] [<c00b87c4>] (handle_irq_event) from [<c00bb7fc>] (handle_fasteoi_irq+0xbc/0x190)
[  179.115707] [<c00bb7fc>] (handle_fasteoi_irq) from [<c00b7b6c>] (generic_handle_irq+0x3c/0x4c)
[  179.115719] [<c00b7b6c>] (generic_handle_irq) from [<c00b7e78>] (__handle_domain_irq+0x6c/0xc4)
[  179.115730] [<c00b7e78>] (__handle_domain_irq) from [<c0009618>] (gic_handle_irq+0x34/0x70)
[  179.115741] [<c0009618>] (gic_handle_irq) from [<c09cebc0>] (__irq_svc+0x40/0x54)
[  179.115747] Exception stack(0xed157cc8 to 0xed157d10)
[  179.115756] 7cc0:                   00000000 600f0013 800c8001 f00ea000 ed450010 ed4503a0
[  179.115764] 7ce0: c0eed594 ed53cc40 ed7d3640 00000000 00000000 ed157d2c ed157cd8 ed157d10
[  179.115772] 7d00: c084bf88 c0839730 600f0013 ffffffff
[  179.115784] [<c09cebc0>] (__irq_svc) from [<c0839730>] (omap4iss_get+0x11c/0x190)
[  179.115796] [<c0839730>] (omap4iss_get) from [<c0841714>] (iss_video_open+0x58/0x150)
[  179.115809] [<c0841714>] (iss_video_open) from [<c07a3068>] (v4l2_open+0xac/0x110)
[  179.115821] [<c07a3068>] (v4l2_open) from [<c01c2e70>] (chrdev_open+0xe0/0x1a0)
[  179.115833] [<c01c2e70>] (chrdev_open) from [<c01bc4bc>] (do_dentry_open+0x1d4/0x324)
[  179.115846] [<c01bc4bc>] (do_dentry_open) from [<c01bd764>] (vfs_open+0x70/0x78)
[  179.115858] [<c01bd764>] (vfs_open) from [<c01cb31c>] (do_last+0x63c/0xe68)
[  179.115871] [<c01cb31c>] (do_last) from [<c01cdb9c>] (path_openat+0x90/0x64c)
[  179.115882] [<c01cdb9c>] (path_openat) from [<c01cee5c>] (do_filp_open+0x3c/0x98)
[  179.115893] [<c01cee5c>] (do_filp_open) from [<c01bdabc>] (do_sys_open+0x118/0x1dc)
[  179.115905] [<c01bdabc>] (do_sys_open) from [<c01bdba8>] (SyS_open+0x28/0x2c)
[  179.115918] [<c01bdba8>] (SyS_open) from [<c0027fa0>] (ret_fast_syscall+0x0/0x3c)
[  179.115925] ---[ end trace 9aaf2ff4593ece45 ]---
[  179.120659] ------------[ cut here ]------------
[  179.120675] WARNING: CPU: 0 PID: 700 at drivers/bus/omap_l3_noc.c:147 l3_interrupt_handler+0x274/0x38c()
[  179.120683] 44000000.ocp:L3 Standard Error: MASTER MPU TARGET ISS (Read): At Address: 0x00010030 : Data Access in Supervisor mode during Functional access
[  179.120689] Modules linked in: smsc95xx usbnet bnep bluetooth snd_soc_omap_abe_twl6040 snd_soc_twl6040 omap4_keypad matrix_keymap ehci_omap ehci_hcd dwc3_omap gpio_pca953x spi_omap2_mcspi ov5640 snd_soc_omap_mcbsp snd_soc_omapo
[  179.120775] CPU: 0 PID: 700 Comm: ffmpeg Tainted: G        W       4.1.38-armv7-lpae-x4 #30
[  179.120782] Hardware name: Generic OMAP5 (Flattened Device Tree)
[  179.120797] [<c0031d58>] (unwind_backtrace) from [<c002c104>] (show_stack+0x20/0x24)
[  179.120811] [<c002c104>] (show_stack) from [<c09c8c0c>] (dump_stack+0x9c/0xb0)
[  179.120824] [<c09c8c0c>] (dump_stack) from [<c006065c>] (warn_slowpath_common+0x94/0xc4)
[  179.120836] [<c006065c>] (warn_slowpath_common) from [<c00606cc>] (warn_slowpath_fmt+0x40/0x48)
[  179.120850] [<c00606cc>] (warn_slowpath_fmt) from [<c0563300>] (l3_interrupt_handler+0x274/0x38c)
[  179.120863] [<c0563300>] (l3_interrupt_handler) from [<c00b85d4>] (handle_irq_event_percpu+0xbc/0x258)
[  179.120876] [<c00b85d4>] (handle_irq_event_percpu) from [<c00b87c4>] (handle_irq_event+0x54/0x74)
[  179.120887] [<c00b87c4>] (handle_irq_event) from [<c00bb7fc>] (handle_fasteoi_irq+0xbc/0x190)
[  179.120898] [<c00bb7fc>] (handle_fasteoi_irq) from [<c00b7b6c>] (generic_handle_irq+0x3c/0x4c)
[  179.120911] [<c00b7b6c>] (generic_handle_irq) from [<c00b7e78>] (__handle_domain_irq+0x6c/0xc4)
[  179.120922] [<c00b7e78>] (__handle_domain_irq) from [<c0009618>] (gic_handle_irq+0x34/0x70)
[  179.120933] [<c0009618>] (gic_handle_irq) from [<c09cebc0>] (__irq_svc+0x40/0x54)
[  179.120939] Exception stack(0xed157e68 to 0xed157eb0)
[  179.120948] 7e60:                   ed53cc40 00000080 ffffffff 00000000 ed53cc40 ed4503a0
[  179.120956] 7e80: ed53cc40 00000000 00000000 ee166618 00000008 ed157ec4 ed157ec8 ed157eb0
[  179.120964] 7ea0: c0839868 c084d974 a0030013 ffffffff
[  179.120978] [<c09cebc0>] (__irq_svc) from [<c084d974>] (clk_disable+0x18/0x40)
[  179.120991] [<c084d974>] (clk_disable) from [<c0839868>] (omap4iss_put+0xc4/0xf4)
[  179.121003] [<c0839868>] (omap4iss_put) from [<c084160c>] (iss_video_release+0x68/0x70)
[  179.121017] [<c084160c>] (iss_video_release) from [<c07a2f80>] (v4l2_release+0x48/0x84)
[  179.121029] [<c07a2f80>] (v4l2_release) from [<c01bfd74>] (__fput+0x94/0x1ec)
[  179.121039] [<c01bfd74>] (__fput) from [<c01bff3c>] (____fput+0x18/0x1c)
[  179.121051] [<c01bff3c>] (____fput) from [<c007d490>] (task_work_run+0xc0/0xf8)
[  179.121062] [<c007d490>] (task_work_run) from [<c002b960>] (do_work_pending+0xa4/0xc4)
[  179.121074] [<c002b960>] (do_work_pending) from [<c0027fec>] (work_pending+0xc/0x20)


So Please provide us the support for solve above issue.


Thanks & Best Regards;

omap5.dtsi.txt
Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/*
* Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
* Based on "omap4.dtsi"
*/
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/pinctrl/omap.h>
#include "skeleton.dtsi"
/ {
#address-cells = <1>;
#size-cells = <1>;
compatible = "ti,omap5";
interrupt-parent = <&wakeupgen>;
aliases {
i2c0 = &i2c1;
i2c1 = &i2c2;
i2c2 = &i2c3;
i2c3 = &i2c4;
i2c4 = &i2c5;
serial0 = &uart1;
serial1 = &uart2;
serial2 = &uart3;
serial3 = &uart4;
serial4 = &uart5;
serial5 = &uart6;
};
cpus {
#address-cells = <1>;
#size-cells = <0>;
cpu0: cpu@0 {
device_type = "cpu";
compatible = "arm,cortex-a15";
reg = <0x0>;
operating-points = <
/* kHz uV */
1000000 1060000
1500000 1250000
>;
clocks = <&dpll_mpu_ck>;
clock-names = "cpu";
clock-latency = <300000>; /* From omap-cpufreq driver */
/* cooling options */
cooling-min-level = <0>;
cooling-max-level = <2>;
#cooling-cells = <2>; /* min followed by max */
};
cpu@1 {
device_type = "cpu";
compatible = "arm,cortex-a15";
reg = <0x1>;
};
};
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
omap5-uevm.dts.txt
Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/*
* Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
/dts-v1/;
#include "omap5.dtsi"
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
/ {
model = "TI OMAP5 uEVM board";
compatible = "ti,omap5-uevm", "ti,omap5";
memory {
device_type = "memory";
reg = <0x80000000 0x7F000000>; /* 2032 MB */
};
aliases {
display0 = &hdmi0;
};
vmmcsd_fixed: fixedregulator-mmcsd {
compatible = "regulator-fixed";
regulator-name = "vmmcsd_fixed";
regulator-min-microvolt = <3000000>;
regulator-max-microvolt = <3000000>;
};
mmc3_pwrseq: sdhci0_pwrseq {
compatible = "mmc-pwrseq-simple";
clocks = <&clk32kgaudio>;
clock-names = "ext_clock";
};
vmmcsdio_fixed: fixedregulator-mmcsdio {
compatible = "regulator-fixed";
regulator-name = "vmmcsdio_fixed";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
gpio = <&gpio5 12 GPIO_ACTIVE_HIGH>; /* gpio140 WLAN_EN */
enable-active-high;
startup-delay-us = <70000>;
pinctrl-names = "default";
pinctrl-0 = <&wlan_pins>;
};
/* HS USB Host PHY on PORT 2 */
hsusb2_phy: hsusb2_phy {
compatible = "usb-nop-xceiv";
reset-gpios = <&gpio3 16 GPIO_ACTIVE_LOW>; /* gpio3_80 HUB_NRESET */
clocks = <&auxclk1_ck>;
clock-names = "main_clk";
clock-frequency = <19200000>;
};
/* HS USB Host PHY on PORT 3 */
hsusb3_phy: hsusb3_phy {
compatible = "usb-nop-xceiv";
reset-gpios = <&gpio3 15 GPIO_ACTIVE_LOW>; /* gpio3_79 ETH_NRESET */
};
leds {
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
omap54xx-clocks.dtsi.txt
Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/*
* Device Tree Source for OMAP5 clock data
*
* Copyright (C) 2013 Texas Instruments, Inc.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
&cm_core_aon_clocks {
pad_clks_src_ck: pad_clks_src_ck {
#clock-cells = <0>;
compatible = "fixed-clock";
clock-frequency = <12000000>;
};
dpll_core_m5x2_ck: dpll_core_m5x2_ck {
#clock-cells = <0>;
compatible = "ti,divider-clock";
clocks = <&dpll_core_x2_ck>;
ti,max-div = <31>;
ti,autoidle-shift = <8>;
reg = <0x013c>;
ti,index-starts-at-one;
ti,invert-autoidle-bit;
};
div_core_ck: div_core_ck {
#clock-cells = <0>;
compatible = "ti,divider-clock";
clocks = <&dpll_core_m5x2_ck>;
reg = <0x0100>;
ti,max-div = <2>;
};
pad_clks_ck: pad_clks_ck {
#clock-cells = <0>;
compatible = "ti,gate-clock";
clocks = <&pad_clks_src_ck>;
ti,bit-shift = <8>;
reg = <0x0108>;
};
secure_32k_clk_src_ck: secure_32k_clk_src_ck {
#clock-cells = <0>;
compatible = "fixed-clock";
clock-frequency = <32768>;
};
slimbus_src_clk: slimbus_src_clk {
#clock-cells = <0>;
compatible = "fixed-clock";
clock-frequency = <12000000>;
};
slimbus_clk: slimbus_clk {
#clock-cells = <0>;
compatible = "ti,gate-clock";
clocks = <&slimbus_src_clk>;
ti,bit-shift = <10>;
reg = <0x0108>;
};
sys_32k_ck: sys_32k_ck {
#clock-cells = <0>;
compatible = "fixed-clock";
clock-frequency = <32768>;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
omap_hwmod_54xx_data.c
ov5640.c
Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/*
* OmniVision OV5640 sensor driver
*
* Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation version 2.
*
* This program is distributed "as is" WITHOUT ANY WARRANTY of any
* kind, whether express or implied; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include <linux/slab.h>
#include <linux/i2c.h>
#include <linux/log2.h>
#include <linux/delay.h>
#include <linux/module.h>
#include <linux/of_device.h>
#include <linux/of_gpio.h>
#include <linux/gpio.h>
#include <linux/clk.h>
#include <linux/regulator/consumer.h>
#include <media/v4l2-device.h>
#include <media/v4l2-subdev.h>
#include <media/v4l2-ctrls.h>
#include <uapi/linux/videodev2.h>
#include <uapi/linux/v4l2-mediabus.h>
#include <uapi/linux/media-bus-format.h>
#include "ov5640.h"
//#define MEDIA_ENT_T_V4L2_SUBDEV_SENSOR 0x00020001
static struct ov5640_platform_data ov5640_devtype = {
.reg_avdd = NULL,
.reg_dovdd = NULL,
.pre_poweron = NULL,
.post_poweroff = NULL
};
static struct of_device_id ov5640_dt_ids[] = {
{ .compatible = "omnivision,ov5640", .data = &ov5640_devtype, },
{ }
};
MODULE_DEVICE_TABLE(of, ov5640_dt_ids);
static const struct i2c_device_id ov5640_i2c_id_table[] = {
{ "ov5640", (kernel_ulong_t)&ov5640_devtype, },
{ }
};
MODULE_DEVICE_TABLE(i2c, ov5640_i2c_id_table);
struct ov5640_timing_cfg {
u16 x_addr_start;
u16 y_addr_start;
u16 x_addr_end;
u16 y_addr_end;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Nikunj Patel

  • Hello everyone;

    We have been use the omapconf tool to check the register details. please find the more details as below.

    1)omapconf show prcm cam


    OMAPCONF (rev 1.73-nogit built Mon Jun 12 15:26:28 UTC 2017)

    HW Platform:
    Generic OMAP5 (Flattened Device Tree)
    OMAP5432 ES2.0 GP Device (STANDARD performance (1.5GHz))
    TWL6035 ES1.0 (EPROM rev0.0)
    TWL6040 ES1.2

    SW Build Details:
    Build:
    Version: Ubuntu 16.04.3 LTS
    Kernel:
    Version: 4.1.38-armv7-lpae-x4
    Author: nikunj.patel.369@ci5lub061309
    Toolchain: gcc version 4.9.4 20151028 (prerelease) (Linaro GCC 4.9-2016.02)
    Type: #31 SMP
    Date: Tue Dec 5 15:16:06 IST 2017

    |----------------------------------------------------------------|
    | CAM Power Domain Configuration                     |
    |----------------------------------------------------------------|
    | Power State | Current | Target | Last |
    |----------------------------------|---------|---------|---------|
    | Domain | ON | OFF | OFF |
    | Logic     | ON |         |         |
    | Memory |       |         |         |
    | MEM      | ON |        |         |
    |----------------------------------------------------------------|
    | Ongoing Power Transition? | NO |
    |----------------------------------------------------------------|

    |----------------------------------------------------------------|
    | CAM Clock Domain Configuration |
    |--------------------------------------|-------------------------|
    | Clock State Transition control | HW-Auto |
    | CAM_L3_GIFCLK                   | Gated |
    | CAM_BOOST_GCLK              | Running |
    | FDIF_GCLK                             | Gated |
    | CSI_PHY_GFCLK                   | Gated |
    | CAM_GCLK                             | Gated |
    |----------------------------------------------------------------|

    |------------------------------------------------------------------------|
    | FDIF Module Configuration |
    |----------------------------------|-------------------------------------|
    | Source Clock                               | FDIF_GFCLK |
    | Source Clock Rate                      | 128.000MHz |
    | Mode                                           | Disabled (NO ACCESS) |
    | Idle Status                                   | Disabled (NO ACCESS) |
    | Standby Status                            | In Standby |
    | FDIF_CLK Ratio                          | FDIF_CLK = FUNC_128M_CLK / 1 |
    | Context                                        | Lost |
    |------------------------------------------------------------------------|

    |------------------------------------------------------------------------|
    | ISS Module Configuration |
    |----------------------------------|-------------------------------------|
    | Source Clock                      | CORE_ISS_MAIN_CLK |
    | Source Clock Rate             | 303.908MHz |
    | Mode                                  | Enabled (EXPLICITLY) |
    | Idle Status                          | OCP-ONLY Idle |
    | Standby Status                   | In Standby |
    | Optional functional clock     | Disabled |
    | Context                               | Retained |
    |------------------------------------------------------------------------|

    |------------------------------------------------------------------------|
    | CAL Module Configuration |
    |----------------------------------|-------------------------------------|
    | Source Clock                                  | CAM_L3_GICLK |
    | Source Clock Rate                         | 265.919MHz |
    | Mode                                              | Disabled (NO ACCESS) |
    | Idle Status                                      | Disabled (NO ACCESS) |
    | Standby Status                               | Not Available (does not exist) |
    | Context                                           | Lost |
    |------------------------------------------------------------------------|

    2) omapconf dump prcm cam


    OMAPCONF (rev 1.73-nogit built Mon Jun 12 15:26:28 UTC 2017)

    HW Platform:
    Generic OMAP5 (Flattened Device Tree)
    OMAP5432 ES2.0 GP Device (STANDARD performance (1.5GHz))
    TWL6035 ES1.0 (EPROM rev0.0)
    TWL6040 ES1.2

    SW Build Details:
    Build:
    Version: Ubuntu 16.04.3 LTS
    Kernel:
    Version: 4.1.38-armv7-lpae-x4
    Author: nikunj.patel.369@ci5lub061309
    Toolchain: gcc version 4.9.4 20151028 (prerelease) (Linaro GCC 4.9-2016.02)
    Type: #31 SMP
    Date: Tue Dec 5 15:16:06 IST 2017

    |-------------------------------------------------|
    | PRM CAM Reg. Name | Reg. Address | Reg. Value |
    |-------------------------------------------------|
    | PM_CAM_PWRSTCTRL    | 0x4AE07300 | 0x00030000 |
    | PM_CAM_PWRSTST         | 0x4AE07304 | 0x00000037 |
    | RM_CAM_ISS_CONTEXT | 0x4AE07324 | 0x00000000 |
    | RM_CAM_FDIF_CONTEXT | 0x4AE0732C | 0x00000101 |
    | RM_CAM_CAL_CONTEXT | 0x4AE07334 | 0x00000101 |
    |-------------------------------------------------|

    |---------------------------------------------------|
    | CM CORE CAM Reg. Name | Reg. Address | Reg. Value |
    |---------------------------------------------------|
    | CM_CAM_CLKSTCTRL    | 0x4A009300 | 0x00000803 |
    | CM_CAM_STATICDEP     | 0x4A009304 | 0x00000040 |
    | CM_CAM_DYNAMICDEP | 0x4A009308 | 0x00000000 |
    | CM_CAM_ISS_CLKCTRL | 0x4A009320 | 0x00060002 |
    | CM_CAM_FDIF_CLKCTRL | 0x4A009328 | 0x00070000 |
    | CM_CAM_CAL_CLKCTRL | 0x4A009330 | 0x00030000 |
    |---------------------------------------------------|

    3) read all the camera address:

    CONTROL_CAMERA_RX
    root@arm:~# omapconf read 0x4A002E08
    00C01806

    CONTROL_CORE_PAD0_CSIPORTA_LANE0X_PAD1_CSIPORTA_LANE0Y
    root@arm:~# omapconf read 0x4A002958
    01000100

    CONTROL_CORE_PAD0_CSIPORTA_LANE0X_PAD1_CSIPORTA_LANE1Y
    root@arm:~# omapconf read 0x4A00295C
    01000100

    CONTROL_CORE_PAD0_CSIPORTA_LANE0X_PAD1_CSIPORTA_LANE2Y
    root@arm:~# omapconf read 0x4A002960
    010F010F

    CONTROL_CORE_PAD0_CSIPORTA_LANE0X_PAD1_CSIPORTA_LANE3Y
    root@arm:~# omapconf read 0x4A002964
    010F010F

    CONTROL_CORE_PAD0_CSIPORTA_LANE0X_PAD1_CSIPORTA_LANE4Y
    root@arm:~# omapconf read 0x4A002968
    01000100

    CSI2_SYSCONFIG
    root@arm:~# omapconf read 0x52001010
    [ 701.984338] Unhandled fault: asynchronous external abort (0x1211) at 0x00000000
    [ 701.991679] pgd = eba39080
    [ 701.994396] [00000000] *pgd=aa498003, *pmd=fd876003

    CSI2_SYSSTATUS:
    root@arm:~# omapconf read 0x52001014
    [ 758.164385] Unhandled fault: asynchronous external abort (0x1211) at 0x00000000
    [ 758.171724] pgd = ebb23400
    [ 758.174440] [00000000] *pgd=aa61f003, *pmd=fd8e8003

    CSI2_IRQSTATUS:
    root@arm:~# omapconf read 0x52001018
    [ 1015.164323] Unhandled fault: asynchronous external abort (0x1211) at 0x00000000
    [ 1015.171664] pgd = ed733e40
    [ 1015.174380] [00000000] *pgd=aa605003, *pmd=fd876003

    CSI2_IRQENABLE:
    root@arm:~# omapconf read 0x5200101c
    [ 1043.294261] Unhandled fault: asynchronous external abort (0x1211) at 0x00000000
    [ 1043.301602] pgd = ebbfb240
    [ 1043.304317] [00000000] *pgd=ad69f003, *pmd=fd833003

    CSI2_CTRL:
    root@arm:~# omapconf read 0x52001040
    [ 1097.784331] Unhandled fault: asynchronous external abort (0x1211) at 0x00000000
    [ 1097.791671] pgd = eba39e00
    [ 1097.794387] [00000000] *pgd=aa466003, *pmd=fd8e8003

    CSI2_DBG_H:
    root@arm:~# omapconf read 0x52001044
    [ 1129.944272] Unhandled fault: asynchronous external abort (0x1211) at 0x00000000
    [ 1129.951613] pgd = ebb232c0
    [ 1129.954330] [00000000] *pgd=aba1d003, *pmd=fd964003

    CSI2_COMPLEXIO_CFG:
    root@arm:~# omapconf read 0x52001050
    [ 1163.674228] Unhandled fault: asynchronous external abort (0x1211) at 0x00000000
    [ 1163.681568] pgd = ed733780
    [ 1163.684283] [00000000] *pgd=ad644003, *pmd=fd856003

    CSI2_COMPLEXIO_IRQSTATUS:
    root@arm:~# omapconf read 0x52001054
    [ 1196.354264] Unhandled fault: asynchronous external abort (0x1211) at 0x00000000
    [ 1196.361605] pgd = ea5e5680
    [ 1196.364320] [00000000] *pgd=aa44c003, *pmd=fd8a6003

    CSI2_SHORT_PACKET:
    root@arm:~# omapconf read 0x5200105c
    [ 1232.894285] Unhandled fault: asynchronous external abort (0x1211) at 0x00000000
    [ 1232.901625] pgd = ea4b2280
    [ 1232.904341] [00000000] *pgd=ab98b003, *pmd=fd8a1003

    CSI2_COMPLEXIO_IRQENABLE:
    root@arm:~# omapconf read 0x52001060
    [ 1274.474353] Unhandled fault: asynchronous external abort (0x1211) at 0x00000000
    [ 1274.481694] pgd = ed733c40
    [ 1274.484410] [00000000] *pgd=aa4e0003, *pmd=ab831003, *pte=00000000

    CSI2_DBG_P:
    root@arm:~# omapconf read 0x52001068
    [ 1304.714342] Unhandled fault: asynchronous external abort (0x1211) at 0x00000000
    [ 1304.721683] pgd = ea4b2900
    [ 1304.724398] [00000000] *pgd=aa5e4003, *pmd=ab97c003, *pte=00000000

    CSI2_TIMING:
    root@arm:~# omapconf read 0x5200106c
    [ 1349.124260] Unhandled fault: asynchronous external abort (0x1211) at 0x00000000
    [ 1349.131600] pgd = ed487940
    [ 1349.134316] [00000000] *pgd=aa5e8003, *pmd=aba78003, *pte=00000000

    CSI2_CTX_CTRL1(0):
    root@arm:~# omapconf read 0x52001070
    [ 1387.874334] Unhandled fault: asynchronous external abort (0x1211) at 0x00000000
    [ 1387.881674] pgd = ed7331c0
    [ 1387.884390] [00000000] *pgd=aa528003, *pmd=fd966003

    CSI2_CTX_CTRL2(0):
    root@arm:~# omapconf read 0x52001074
    [ 1419.294319] Unhandled fault: asynchronous external abort (0x1211) at 0x00000000
    [ 1419.301660] pgd = eba1cc40
    [ 1419.304375] [00000000] *pgd=abb28003, *pmd=fd8d3003

    CSI2_CTX_DAT_OFST(0):
    root@arm:~# omapconf read 0x52001078
    [ 1447.404312] Unhandled fault: asynchronous external abort (0x1211) at 0x00000000
    [ 1447.411653] pgd = ed686980
    [ 1447.414370] [00000000] *pgd=aa48d003, *pmd=fd924003

    CSI2_CTX_PING_ADDR(0):
    root@arm:~# omapconf read 0x5200107c
    [ 1483.634280] Unhandled fault: asynchronous external abort (0x1211) at 0x00000000
    [ 1483.641620] pgd = eb841440
    [ 1483.644337] [00000000] *pgd=aa504003, *pmd=fd921003

    CSI2_CTX_PONG_ADDR(0):
    root@arm:~# omapconf read 0x52001080
    [ 1508.834269] Unhandled fault: asynchronous external abort (0x1211) at 0x00000000
    [ 1508.841610] pgd = eba397c0
    [ 1508.844327] [00000000] *pgd=abb5a003, *pmd=fd857003

    CSI2_CTX_IRQENABLE(0):
    root@arm:~# omapconf read 0x52001084
    [ 1540.003942] Unhandled fault: asynchronous external abort (0x1211) at 0x00000000
    [ 1540.011339] pgd = eba1c2c0
    [ 1540.014057] [00000000] *pgd=ad73f003, *pmd=fd8a1003

    CSI2_CTX_IRQSTATUS(0):
    root@arm:~# omapconf read 0x52001088
    [ 1558.994299] Unhandled fault: asynchronous external abort (0x1211) at 0x00000000
    [ 1559.001639] pgd = ea5e9f80
    [ 1559.004355] [00000000] *pgd=aa5dc003, *pmd=fd966003

    We are able to 0x4xxxxxxx address but not able to read the 0x52xxxxxx.

    Thanks & Best Regards;
    Nikunj Patel

  • gentle reminder;

    Thanks & Best regards;
    Nikunj Patel
  • Hi Nikunj,

    can you check if any of the following can help you to debug the L3 Standard Error:
    e2e.ti.com/.../1544554
    e2e.ti.com/.../1312241

    Regards,
    Yordan
  • Thanks Yordan;
    I check the above two links but still we didn't find anything related to the camera stuff of OMA5432.

    Also i have mention the output of "cat /proc/iomem" command.

    root@arm:~# cat /proc/iomem

    40122000-401220fe : mpu
    40124000-401240fe : mpu
    40132000-4013207e : mpu
    40138000-4013807f : /ocp/timer@40138000
    4013a000-4013a07f : /ocp/timer@4013a000
    4013c000-4013c07f : /ocp/timer@4013c000
    4013e000-4013e07f : /ocp/timer@4013e000
    40300000-4031ffff : 40300000.ocmcram
    44000000-44001fff : /ocp
    44800000-44802fff : /ocp
    45000000-45003fff : /ocp
    48020000-4802001f : serial
    48032000-4803207f : /ocp/timer@48032000
    48034000-4803407f : /ocp/timer@48034000
    48036000-4803607f : /ocp/timer@48036000
    4803e000-4803e07f : /ocp/timer@4803e000
    48051000-480511ff : /ocp/gpio@48051000
    48053000-480531ff : /ocp/gpio@48053000
    48055000-480551ff : /ocp/gpio@48055000
    48057000-480571ff : /ocp/gpio@48057000
    48059000-480591ff : /ocp/gpio@48059000
    4805b000-4805b1ff : /ocp/gpio@4805b000
    4805d000-4805d1ff : /ocp/gpio@4805d000
    48060000-480600ff : /ocp/i2c@48060000
    48066000-4806601f : serial
    48068000-4806801f : serial
    4806a000-4806a01f : serial
    4806c000-4806c01f : serial
    4806e000-4806e01f : serial
    48070000-480700ff : /ocp/i2c@48070000
    48072000-480720ff : /ocp/i2c@48072000
    4807a000-4807a0ff : /ocp/i2c@4807a000
    4807c000-4807c0ff : /ocp/i2c@4807c000
    48086000-4808607f : /ocp/timer@48086000
    48088000-4808807f : /ocp/timer@48088000
    48098100-480982ff : /ocp/spi@48098000
    4809a100-4809a2ff : /ocp/spi@4809a000
    4809c000-4809c3ff : /ocp/mmc@4809c000
    480ad000-480ad3ff : /ocp/mmc@480ad000
    480b4000-480b43ff : /ocp/mmc@480b4000
    480b8100-480b82ff : /ocp/spi@480b8000
    480ba100-480ba2ff : /ocp/spi@480ba000
    4a0021e0-4a0021eb : /ocp/bandgap@4a0021e0
    4a00232c-4a002337 : /ocp/bandgap@4a0021e0
    4a002380-4a0023ab : /ocp/bandgap@4a0021e0
    4a0023c0-4a0023fb : /ocp/bandgap@4a0021e0
    4a002840-4a0029f5 : pinctrl-single
    4a020000-4a02ffff : /ocp/omap_dwc3@4a020000
    4a03c100-4a03ffff : /ocp/omap_dwc3@4a020000/dwc3@4a030000
    4a056000-4a056fff : omap_dma_system.0
    4a056000-4a056fff : /ocp/dma-controller@4a056000
    4a062000-4a062fff : /ocp/usbhstll@4a062000
    4a064000-4a0647ff : /ocp/usbhshost@4a064000
    4a064c00-4a064fff : /ocp/usbhshost@4a064000/ehci@4a064c00
    4a066000-4a0660ff : /ocp/mmu@4a066000
    4a080000-4a08001f : /ocp/ocp2scp@4a080000
    4a084c00-4a084c3f : pll_ctrl
    4a090000-4a09001f : /ocp/ocp2scp@4a090000
    4a096800-4a09683f : pll_ctrl
    4a0f4000-4a0f41ff : /ocp/mailbox@4a0f4000
    4a140000-4a1410ff : /ocp/sata@4a141100
    4ae07cdc-4ae07ce3 : base-address
    4ae07ce4-4ae07ceb : base-address
    4ae0c314-4ae0c317 : ldo-address
    4ae0c318-4ae0c31b : ldo-address
    4ae0c840-4ae0c87b : pinctrl-single
    4ae10000-4ae101ff : /ocp/gpio@4ae10000
    4ae14000-4ae1407f : /ocp/wdt@4ae14000
    50000000-50000fff : /ocp/gpmc@50000000
    55082000-550820ff : /ocp/mmu@55082000
    58040000-580401ff : wp
    58040200-5804027f : pll
    58040300-5804037f : phy
    58060000-58078fff : core
    80000000-fedfffff : System RAM
    80008000-812fffff : Kernel code
    81500000-8170059f : Kernel data

  • Hello everyone;

    We are using the 5MP OV5640 sensor.

    can anyone confirm that the below dts changes are correct for oma5432 soc?

    iss: iss@52000000 {
    compatible = "ti,omap4-iss";
    reg = <0x52000000 0x100>, /* top */
    <0x52001000 0x170>, /* csi2_a_regs1 */
    <0x52001170 0x020>, /* camerarx_core1 */
    <0x52001400 0x170>, /* csi2_b_regs1 */
    <0x52001570 0x020>, /* camerarx_core2 */
    <0x52002000 0x200>, /* bte */
    <0x52010000 0x0a0>, /* isp_sys1 */
    <0x52010400 0x400>, /* isp_resizer */
    <0x52010800 0x800>, /* isp_ipipe */
    <0x52011000 0x200>, /* isp_isif */
    <0x52011200 0x080>; /* isp_ipipeif */
    reg-names = "top",
    "csi2_a_regs1",
    "camerarx_core1",
    "csi2_b_regs1",
    "camerarx_core2",
    "bte",
    "isp_sys1",
    "isp_resizer",
    "isp_ipipe",
    "isp_isif",
    "isp_ipipeif";
    status = "ok";
    ti,hwmods = "iss";
    interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
    clocks = <&ducati_clk_mux_ck>, <&iss_ctrlclk>;
    clock-names = "iss_fck", "iss_ctrlclk";
    dmas = <&sdma 9>, <&sdma 10>, <&sdma 12>, <&sdma 13>;
    dma-names = "1", "2", "3", "4";
    };

    &i2c3 {
    pinctrl-names = "default";
    pinctrl-0 = <&i2c3_pins>;
    status = "ok";

    clock-frequency = <100000>;

    ov5640_1_camera: camera@3c {
    compatible = "omnivision,ov5640";
    status = "ok";
    reg = <0x3c>;

    pwdn-gpios = <&gpio1 13 GPIO_ACTIVE_HIGH>; // gpio1_13 - power down
    reset-gpios = <&gpio8 2 GPIO_ACTIVE_LOW>; // gpio8_226 - reset

    clocks = <&auxclk1_ck>;

    port {
    ov5640_1_cam_ep: endpoint {
    clock-lanes = <4>;
    data-lanes = <0 1>;
    remote-endpoint = <&csi2a_ep>;
    };
    };
    };
    };


    &iss {
    status = "ok";

    pinctrl-names = "default";
    pinctrl-0 = <&iss_csi21_pins>;

    ports {
    port@0 {
    reg = <0>;
    csi2a_ep: endpoint {
    remote-endpoint = <&ov5640_1_cam_ep>;
    clock-lanes = <4>;
    data-lanes = <0 1>;
    crc = <0>;
    lane-polarities = <0 0 0>;
    };
    };
    };
    };


    Thanks & Best Regards;
    Nikunj Patel