I.MX6 ov5640 camera

简介: /************************************************************************ *  I.MX6 ov5640 camera * 说明: * 记录ov5640摄像头的设备注册方式。
/************************************************************************
 *                       I.MX6 ov5640 camera
 * 说明:
 *     记录ov5640摄像头的设备注册方式。
 *
 *                                      2016-6-8 深圳 南山平山村 曾剑锋
 ***********************************************************************/

一、设备注册:
    cat arch/arm/mach-mx6/board-mx6q_sabresd.c
        ......
        static void mx6q_csi0_io_init(void)
        {
            if (cpu_is_mx6q())
                mxc_iomux_v3_setup_multiple_pads(mx6q_sabresd_csi0_sensor_pads,
                    ARRAY_SIZE(mx6q_sabresd_csi0_sensor_pads));
            else if (cpu_is_mx6dl())
                mxc_iomux_v3_setup_multiple_pads(mx6dl_sabresd_csi0_sensor_pads,
                    ARRAY_SIZE(mx6dl_sabresd_csi0_sensor_pads));

            /* Camera reset */
            gpio_request(SABRESD_CSI0_RST, "cam-reset");
            gpio_direction_output(SABRESD_CSI0_RST, 1);

            /* Camera power down */
            gpio_request(SABRESD_CSI0_PWN, "cam-pwdn");
            gpio_direction_output(SABRESD_CSI0_PWN, 1);
            msleep(5);
            gpio_set_value(SABRESD_CSI0_PWN, 0);
            msleep(5);
            gpio_set_value(SABRESD_CSI0_RST, 0);
            msleep(1);
            gpio_set_value(SABRESD_CSI0_RST, 1);
            msleep(5);
            gpio_set_value(SABRESD_CSI0_PWN, 1);

            /* For MX6Q:
             * GPR1 bit19 and bit20 meaning:
             * Bit19:       0 - Enable mipi to IPU1 CSI0
             *                      virtual channel is fixed to 0
             *              1 - Enable parallel interface to IPU1 CSI0
             * Bit20:       0 - Enable mipi to IPU2 CSI1
             *                      virtual channel is fixed to 3
             *              1 - Enable parallel interface to IPU2 CSI1
             * IPU1 CSI1 directly connect to mipi csi2,
             *      virtual channel is fixed to 1
             * IPU2 CSI0 directly connect to mipi csi2,
             *      virtual channel is fixed to 2
             *
             * For MX6DL:
             * GPR13 bit 0-2 IPU_CSI0_MUX
             *   000 MIPI_CSI0
             *   100 IPU CSI0
             */
            if (cpu_is_mx6q())
                mxc_iomux_set_gpr_register(1, 19, 1, 1);
            else if (cpu_is_mx6dl())
                mxc_iomux_set_gpr_register(13, 0, 3, 4);
        }
        ......
        static void mx6q_mipi_sensor_io_init(void)
        {
            if (cpu_is_mx6q())
                mxc_iomux_v3_setup_multiple_pads(mx6q_sabresd_mipi_sensor_pads,
                    ARRAY_SIZE(mx6q_sabresd_mipi_sensor_pads));
            else if (cpu_is_mx6dl())
                mxc_iomux_v3_setup_multiple_pads(mx6dl_sabresd_mipi_sensor_pads,
                    ARRAY_SIZE(mx6dl_sabresd_mipi_sensor_pads));

            /* Camera reset */
            gpio_request(SABRESD_MIPICSI_RST, "cam-reset");
            gpio_direction_output(SABRESD_MIPICSI_RST, 1);

            /* Camera power down */
            gpio_request(SABRESD_MIPICSI_PWN, "cam-pwdn");
            gpio_direction_output(SABRESD_MIPICSI_PWN, 1);
            msleep(5);
            gpio_set_value(SABRESD_MIPICSI_PWN, 0);
            msleep(5);
            gpio_set_value(SABRESD_MIPICSI_RST, 0);
            msleep(1);
            gpio_set_value(SABRESD_MIPICSI_RST, 1);
            msleep(5);
            gpio_set_value(SABRESD_MIPICSI_PWN, 1);

            /*for mx6dl, mipi virtual channel 1 connect to csi 1*/
            if (cpu_is_mx6dl())
                mxc_iomux_set_gpr_register(13, 3, 3, 1);
        }
        ......
        static struct fsl_mxc_camera_platform_data mipi_csi2_data = {
            .mclk = 24000000,
            .mclk_source = 0,
            .csi = 1,
            .io_init = mx6q_mipi_sensor_io_init,
            .pwdn = mx6q_mipi_powerdown,
        };
        ......
        static struct fsl_mxc_camera_platform_data camera_data = {
            .mclk = 24000000,
            .mclk_source = 0,
            .csi = 0,
            .io_init = mx6q_csi0_io_init,
            .pwdn = mx6q_csi0_cam_powerdown,
        };
        ......
        static struct i2c_board_info mxc_i2c0_board_info[] __initdata = {
            ......
            {
                I2C_BOARD_INFO("ov564x", 0x3c),
                .platform_data = (void *)&camera_data,
            },
            ......
        }
        ......
        static struct i2c_board_info mxc_i2c2_board_info[] __initdata = {
            ......
            {
                I2C_BOARD_INFO("ov5640_mipi", 0x3c),
                .platform_data = (void *)&mipi_csi2_data,
            },
            ......
        }
        ......
            
二、dmesg信息查看:
    root@android:/ # dmesg | grep 5640
    <6>camera ov5640 is found
    <6>camera ov5640_mipi is found
    root@android:/ # 

 

目录
相关文章
|
编解码 安全 Android开发
低功耗蓝牙LE Audio Profile 详细介绍
2019年底,蓝牙官方组织SIG发布了蓝牙5.2版本的核心协议,其中增加了一个重要的特性---LE Audio。蓝牙的应用协议都是从应用层到物理层完整包含的协议,LE Audio也不例外。但蓝牙5.2核心协议仅仅定义了蓝牙LE的链路层传输Audio的方式,上层协议以及完整的LE Audio规范迟迟未出,近日,蓝牙官方组织释放了LE Audio较为完整的规范文档。
低功耗蓝牙LE Audio Profile 详细介绍
|
10月前
|
网络架构
WIFI的AP(Access Point)和STA(Station)指什么
WIFI的AP(Access Point)和STA(Station)指什么
316 0
|
11月前
|
网络协议 中间件 C语言
STM32 Cube mx 安装
STM32 Cube mx 安装
83 0
|
网络架构
关于canon mx538无线连接的问题
其实也不能算真正解决了问题,只是大概有了个方向故障:工厂搬家,将原先的华为AP都移到新厂了,老厂用着几个家用路由器临时用,问题来了,一台canon mx538连接到无线,却始终无法获取IP地址之前也有一台同样的打印机也是这个毛病,自己鼓捣了很久,重装驱动什么的都没用,售后也无能为力,只能送修,检查后说是换主板,还挺贵,想想还是重买了个。
1479 0
|
传感器 测试技术
触摸屏(TP)奕力IC 测试技术---Sensor Test
文章转载地址:http://baijiahao.baidu.com/s?id=1576311209994050951&wfr=spider&for=pc
3654 0
|
编解码 内存技术 C语言
I.MX6 FFmpeg 录制视频
/************************************************************************* * I.MX6 FFmpeg 录制视频 * 说明: * 通过FFmpeg录制视频是很正常的事,测试一下。
1086 0
|
Linux
I.MX6 USB Camera
/************************************************************************* * I.MX6 USB Camera * 说明: * 今天购买了个USB Camera,用来测试一下驱动。
857 0
|
Linux SoC
I.MX6 mfgtool2-android-mx6q-sabresd-emmc.vbs hacking
/******************************************************************** *   I.MX6 mfgtool2-android-mx6q-sabresd-emmc.vbs hacking * 说明: * 以前用的mfgtool2是直接执行MfgTool2.exe就行了,现在的NXP将其封 * 装在vbs文件内,这是左栋告诉我的,这里记录一下命令行参数的本质。
1037 0
我的本子hp dv6 7301 tx
http://support.hp.com/cn-zh/product/HP%20ENVY%20dv6-7300%20Notebook%20PC%20series/5330549/model/5344160/videos?jumpid=reg_r1002_cnzh_s-001_title_r0001...
851 0