1508947_ja-JP

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

1508947_ja-JP

1508947_ja-JP

カメラセンサーOS02G10 MIPI CSI for IMX8MM

こんにちは、みんな。

OS02g10のドライバーは以下から入手しました:

https://github.com/Shaggy013/kernel-5.10

ドライバーをパッチとして追加しました。


私のデバイスツリーは次のようになっています。


            csi1_bridge: csi1_bridge@32e20000 {
                compatible = "fsl,imx8mm-csi", "fsl,imx8mq-csi", "fsl,imx6s-csi";
                reg = <0x32e20000 0x1000>;
                interrupts = ;
                clocks = <&clk IMX8MM_CLK_DISP_AXI_ROOT>,
                         <&clk IMX8MM_CLK_CSI1_ROOT>,
                         <&clk IMX8MM_CLK_DISP_APB_ROOT>;
                clock-names = "disp-axi", "csi_mclk", "disp_dcic";
                power-domains = <&dispmix_pd>;
                status = "disabled";
            };

            mipi_csi_1: mipi_csi@32e30000 {
                compatible = "fsl,imx8mm-mipi-csi";
                reg = <0x32e30000 0x1000>;
                interrupts = ;
                clock-frequency = <360000000>;
                clocks = <&clk IMX8MM_CLK_CSI1_CORE>,
                         <&clk IMX8MM_CLK_CSI1_PHY_REF>,
                         <&clk IMX8MM_CLK_DISP_AXI_ROOT>,
                         <&clk IMX8MM_CLK_DISP_APB_ROOT>;
                clock-names = "mipi_clk", "phy_clk", "disp_axi", "disp_apb";
                bus-width = <2>;
                resets = <&mipi_csi_resets>;
                power-domains = <&mipi_pd>;
                status = "disabled";
            };

    os02g10: os02g10@3c {
		compatible = "ovti,os02g10";
		reg = <0x3c>; // spec (manual) says that I2c addres is 0x3d 
        status = "okay";
		pinctrl-names = "rockchip,camera_default", "rockchip,camera_sleep";		
		pinctrl-0 = <&pinctrl_csi_pwdn>, <&pinctrl_csi_rst>, <&pinctrl_mux_oe>;
		pinctrl-1 = <&pinctrl_csi_pwdn>, <&pinctrl_csi_rst>, <&pinctrl_mux_oe>;
		csi_id = <0>;
        pwdn-gpios = <&gpio2 16 GPIO_ACTIVE_HIGH>;
        reset-gpios = <&gpio2 13 GPIO_ACTIVE_HIGH>;
        mux-gpios = <&gpio2 14 GPIO_ACTIVE_HIGH>;
		mclk = <24000000>;
		mclk_source = <0>;
		rockchip,camera-module-index = <1>;
		rockchip,camera-module-facing = "back";
		rockchip,camera-module-name = "OS02G10 camera";
		rockchip,camera-module-lens-name = "1//2.9 inch 15*";
		rockchip,camera-hdr-mode = <0>; // kernel-5.10\include\uapi\linux\rk-camera-module.h:307  (enum rkmodule_hdr_mode)
		mipi_csi;

		port {
			os02g10_ep: endpoint {
				remote-endpoint = <&mipi1_sensor_ep>;
			};
		};
    };
};

&csi1_bridge {
    fsl,mipi-mode;
	status = "okay";
	port {
		csi1_ep: endpoint {
			remote-endpoint = <&csi1_mipi_ep>;
		};
	};
};

&mipi_csi_1 {
	status = "okay";
	port {
        #address-cells = <1>;
        #size-cells = <0>;
            
		    mipi1_sensor_ep: endpoint@1 {
            reg = <1>;
			remote-endpoint = <&os02g10_ep>;
			data-lanes = <2>;
			csis-hs-settle = <13>;
			csis-clk-settle = <2>;
			csis-wclk;
            };
           
            csi1_mipi_ep: endpoint@2 {
            reg = <2>;
			remote-endpoint = <&csi1_ep>;
        };
	};
};

&clk {
    init-on-array = ;
};


カメラドライバーとmxc_mipi-csi.c用にプローブ機能を修正しました。mx6s-csi.c

以前はフォーマット一致エラーが2回発生しましたが、mx6s-csiに追加しました


{
.name		= "RAWRGB10 (SBGGR10)",
.fourcc	= V4L2_PIX_FMT_SBGGR10,
.pixelformat	= V4L2_PIX_FMT_SBGGR10,
.mbus_code	= MEDIA_BUS_FMT_SBGGR10_1X10,
.bpp		= 1,
}

そしてmxc_mipi-csi.cに追加されました


{
.code = MEDIA_BUS_FMT_SBGGR10_1X10,
.fmt_reg = MIPI_CSIS_ISPCFG_FMT_RAW10,
.data_alignment = 8,
 }


v4l2 APIは正常に動作し、エラーは発生しません。以下は画像を取得するためのコマンドです


v4l2-ctl -d /dev/video0 --verbose --set-fmt-video=width=1920,height=1080,pixelformat=BG10  --stream-mmap --stream-count=1 --stream-to=bb001.raw

そして、デバッグメッセージの結果


mxc_mipi-csi 32e30000.mipi_csi: in function: mipi_csis_s_power
os02g10 3-003c: in function: os02g10_s_power
os02g10 3-003c: in function: os02g10_runtime_resume
os02g10 3-003c: in function: __os02g10_power_on

os02g10 3-003c: OS02G10_REG_SOFTWARE_RESET
mxc_mipi-csi 32e30000.mipi_csi: in function: mipi_csis_clk_enable
mxc_mipi-csi 32e30000.mipi_csi: enable mipi_clk returns: 0
mxc_mipi-csi 32e30000.mipi_csi: enable phy_clk returns: 0
mxc_mipi-csi 32e30000.mipi_csi: enable disp_axi returns: 0
mxc_mipi-csi 32e30000.mipi_csi: enable disp_apb returns: 0

VIDIOC_QUERYCAP: ok
VIDIOC_G_FMT: ok

mxc_mipi-csi 32e30000.mipi_csi: in function: mipi_csis_enum_mbus_code
os02g10 3-003c: in function: os02g10_enum_mbus_code
mxc_mipi-csi 32e30000.mipi_csi: camera sensor format (media-bus-format.h): 0x3007
mxc_mipi-csi 32e30000.mipi_csi: supported format0 by mipi-csi driver:    0x2008
mxc_mipi-csi 32e30000.mipi_csi: supported format1 by mipi-csi driver:    0x2007
mxc_mipi-csi 32e30000.mipi_csi: supported format2 by mipi-csi driver:    0x3001
mxc_mipi-csi 32e30000.mipi_csi: supported format3 by mipi-csi driver:    0x3007
mx6s-csi 32e20000.csi1_bridge: in function: mx6s_vidioc_enum_fmt_vid_cap - format RAWRGB10 (SBGGR10)
mxc_mipi-csi 32e30000.mipi_csi: in function: mipi_csis_set_fmt

VIDIOC_S_FMT: ok
Format Video Capture:
        Width/Height      : 1920/1080

mxc_mipi-csi 32e30000.mipi_csi: in function: mipi_csis_enum_mbus_code
os02g10 3-003c: in function: os02g10_enum_mbus_code
mxc_mipi-csi 32e30000.mipi_csi: camera sensor format (media-bus-format.h): 0x3007
mxc_mipi-csi 32e30000.mipi_csi: supported format0 by mipi-csi driver:    0x2008
mxc_mipi-csi 32e30000.mipi_csi: supported format1 by mipi-csi driver:    0x2007
mxc_mipi-csi 32e30000.mipi_csi: supported format2 by mipi-csi driver:    0x3001
mxc_mipi-csi 32e30000.mipi_csi: supported format3 by mipi-csi driver:    0x3007
mx6s-csi 32e20000.csi1_bridge: in function: mx6s_vidioc_enum_fmt_vid_cap - format RAWRGB10 (SBGGR10)


        Pixel Format      : 'BG10' (10-bit Bayer BGBG/GRGR)
        Field             : None
        Bytes per Line    : 1920
        Size Image        : 2073600
        Colorspace        : sRGB
        Transfer Function : Default (maps to sRGB)
        YCbCr/HSV Encoding: ITU-R 601
        Quantization      : Full Range
        Flags:

mxc_mipi-csi 32e30000.mipi_csi: in function: mipi_csis_s_stream
mxc_mipi-csi 32e30000.mipi_csi: in function: mipi_csis_clear_counters
mxc_mipi-csi 32e30000.mipi_csi: in function: mipi_csis_start_stream
mxc_mipi-csi 32e30000.mipi_csi: in function: mipi_csis_sw_reset: REG CMN_CTRL 0x32E30004 = 0x00004000
mxc_mipi-csi 32e30000.mipi_csi: in function: mipi_csis_set_params
mxc_mipi-csi 32e30000.mipi_csi: in function: __mipi_csis_set_format
mxc_mipi-csi.0: fmt: 0x3007, 1920 x 1080
mxc_mipi-csi 32e30000.mipi_csi: in function: __mipi_csis_set_format: REG ISPRESOL_CH0 0x32E30044 = 0x04380780
mxc_mipi-csi 32e30000.mipi_csi: in function: mipi_csis_set_hsync_settle: REG DPHYCTRL 0x32E30024=0x0d800000
mxc_mipi-csi 32e30000.mipi_csi: in function: mipi_csis_set_params: REG CMN_CTRL 0x32E30004 = 0x00004104
mxc_mipi-csi 32e30000.mipi_csi: in function: mipi_csis_system_enable: REG CMN_CTRL 0x32E30004=0x00004105

VIDIOC_REQBUFS returned 0 (Success)
VIDIOC_QUERYBUF returned 0 (Success)
VIDIOC_QUERYBUF returned 0 (Success)
VIDIOC_QUERYBUF returned 0 (Success)
VIDIOC_QUERYBUF returned 0 (Success)
VIDIOC_QBUF returned 0 (Success)
VIDIOC_QBUF returned 0 (Success)
VIDIOC_QBUF returned 0 (Success)
VIDIOC_QBUF returned 0 (Success)

mxc_mipi-csi 32e30000.mipi_csi: in function: mipi_csis_system_enable: REG DPHYCTRL 0x32E30024=0x0d800007
mxc_mipi-csi 32e30000.mipi_csi: in function: mipi_csis_enable_interrupts: REG CSIS_INTMSK 0x32E30010 = 0xf00fffff
mxc_mipi-csi.0: --- mipi_csis_start_stream ---
mxc_mipi-csi.0: 0x04 CMM CTRL : 0x00004105
mxc_mipi-csi.0: 0x08 CLK CTRL : 0x000f0000
mxc_mipi-csi.0: 0x10 INT MASK0: 0xf00fffff
mxc_mipi-csi.0: 0x14 INT SRC0 : 0x00000000
mxc_mipi-csi.0: 0x18 INT MASK1: 0x00000000
mxc_mipi-csi.0: 0x1c INT SRC1 : 0x00000000
mxc_mipi-csi.0: 0x20 PHY STAT : 0x000000f1
mxc_mipi-csi.0: 0x24 PHY CTRL : 0x0d800007
mxc_mipi-csi.0: 0x30 PHY M/S-L: 0x000001f4
mxc_mipi-csi.0: 0x34 PHY M/S-H: 0x00000000
mxc_mipi-csi.0: 0x38 PHY S-CTL: 0x00000000
mxc_mipi-csi.0: 0x3C PHY S-CTH: 0x00000000
mxc_mipi-csi.0: 0x40 ISP CONF : 0x000000ac
mxc_mipi-csi.0: 0x44 ISP RESOL: 0x04380780
mxc_mipi-csi.0: 0x48 ISP SYNC : 0x04380780
os02g10 3-003c: in function: os02g10_s_stream
os02g10 3-003c: in function: __os02g10_start_stream
os02g10 3-003c: in function: __os02g10_start_stream  __v4l2_ctrl_handler_setup returns: 0
os02g10 3-003c: in function: os02g10_s_stream: unlock_and_return

               VIDIOC_STREAMON returned 0 (Success)


その後は何も起こらず、ただ待って待つだけで何も起こらない。

20MHzオシロスコープではMIPI DATAおよびMIPI CLKラインのトラフィックを観測できません。(帯域幅が低いのは承知していますが、データ回線であれば何らかの変化が見られるはずです。しかし、全く反応がありません。)

clkノードが正しいかどうか確信が持てません。クロック名によるmipi_csiクロックと一致する&clkノードがない可能性もあります。どなたか使用経験のある方はいらっしゃいますか?

どうすればいいでしょうか?


i.MX 8M | i.MX 8M Mini | i.MX 8M NanoRe: Camera sensor os02g10 MIPI CSI for IMX8MM

こんにちは、Linuxのアップストリームドライバーを使えます。
私たちはこれをi.mx8MPベースのDebixプラットフォームでテストしました。
こちらがドライバです
https://web.git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=263d0fa1d46ac1ae2...

こちらが当社のDTです

https://web.git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=a4d0f0c88ae818531...


--
ルトヴィイ
シリコンシグナルズ

Re: Camera sensor os02g10 MIPI CSI for IMX8MM

うまくいきました。
.bpp2でなければならない
しかし主な問題はハードウェアにあった

标记 (1)
无评分
版本历史
最后更新:
1 周之前
更新人: