打印
[i.MX]

imx6dl上添加adv7180 请大神指教 在线等!

[复制链接]
3343|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ruofeng1008|  楼主 | 2016-1-5 09:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 ruofeng1008 于 2016-1-5 09:25 编辑

版本是4.4.2  

board-imx6q_sabresd.c添加代码如下:
static void adv7180_pwdn(int pwdn)
{
        if (pwdn)
                gpio_set_value(SABRESD_CSI1_PWN, 1);
        else
                gpio_set_value(SABRESD_CSI1_PWN, 0);
}

static void mx6q_csi1_io_init(void)
{
        if (cpu_is_mx6q())
                mxc_iomux_v3_setup_multiple_pads(mx6q_sabresd_csi1_sensor_pads,
                        ARRAY_SIZE(mx6q_sabresd_csi1_sensor_pads));
        else if (cpu_is_mx6dl())
                mxc_iomux_v3_setup_multiple_pads(mx6dl_sabresd_csi1_sensor_pads,
                        ARRAY_SIZE(mx6dl_sabresd_csi1_sensor_pads));

        if (cpu_is_mx6q())
                mxc_iomux_set_gpr_register(1, 20, 1, 1);//by ruofeng
                //mxc_iomux_set_gpr_register(1, 19, 1, 1);
        else if (cpu_is_mx6dl())
                //mxc_iomux_set_gpr_register(13, 0, 3, 4);
                mxc_iomux_set_gpr_register(13, 3, 3, 4);
}

/*static struct fsl_mxc_tvin_platform_data adv7180_data = {
    .dvddio_reg    = NULL,
    .dvdd_reg    = NULL,
    .avdd_reg    = NULL,
    .pvdd_reg    = NULL,
    .pwdn        = adv7180_pwdn,
    .reset        = NULL,
    .cvbs        = true,
    .io_init    = mx6q_csi1_io_init,
};*/

static struct fsl_mxc_camera_platform_data adv7180_data = {
        .mclk = 24000000,
        .mclk_source = 0,
        .csi = 1,
        .io_init = mx6q_csi1_io_init,
        .pwdn = adv7180_pwdn,
};

static struct i2c_board_info mxc_i2c2_board_info[] __initdata = {
                         .....
#ifdef MYDEBUG
        {
                I2C_BOARD_INFO("adv7180", 0x21),
                .platform_data = (void *)&adv7180_data,
        },
#endif
};


static struct fsl_mxc_capture_platform_data capture_data[] = {
        {
                .csi = 0,
                .ipu = 0,
                .mclk_source = 0,
                .is_mipi = 0,
        }, {
                .csi = 1,
                .ipu = 0,
                .mclk_source = 0,
                .is_mipi = 1,
        },
#ifdef MYDEBUG
        {
                .csi = 1,
                .ipu = 1,
                .mclk_source = 0,
                .is_mipi = 0,
        },
#endif
};
static void __init mx6_sabresd_board_init(void)
{           ....

        imx6q_add_v4l2_capture(0, &capture_data[0]);
        imx6q_add_v4l2_capture(1, &capture_data[1]);
#ifdef MYDEBUG
        imx6q_add_v4l2_capture(2, &capture_data[2]);
#endif
           ....
}

启动后出现段错误,也不知道哪加错了,新手请指教


相关帖子

沙发
kris_fei| | 2016-1-5 09:39 | 只看该作者
你给的是driver的code,问的是segament fault的error,不是oops?
log也贴出来吧

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
ruofeng1008 + 1
板凳
ruofeng1008|  楼主 | 2016-1-5 09:47 | 只看该作者
kris_fei 发表于 2016-1-5 09:39
你给的是driver的code,问的是segament fault的error,不是oops?
log也贴出来吧



不知道哪错了  麻烦帮看看是不是有什么地方改错改漏了

LOG信息.pdf

304.06 KB

log信息

使用特权

评论回复
地板
ruofeng1008|  楼主 | 2016-1-5 10:45 | 只看该作者
kris_fei 发表于 2016-1-5 09:39
你给的是driver的code,问的是segament fault的error,不是oops?
log也贴出来吧

Internal error: Oops: 17 [#1] PREEMPT SMP
Modules linked in:
CPU: 0    Not tainted  (3.0.35 #49)
PC is at _ipu_get+0x4/0x24


我用gdb调试,定位出错误在:
Breakpoint 1 at 0xc048e404: file drivers/mxc/ipu3/ipu_common.c, line 217.


其中:ipu_common.c  line 217.
void _ipu_get(struct ipu_soc *ipu)
{
        int ret;
        ret = clk_enable(ipu->ipu_clk);
        if (ret < 0)
                BUG();
}


难道说我的时钟配置错误了吗  还是什么?

使用特权

评论回复
5
mini1986| | 2016-1-5 10:49 | 只看该作者
没搞过这个,关注一下,学习学习......

使用特权

评论回复
6
kris_fei| | 2016-1-5 13:29 | 只看该作者
本帖最后由 kris_fei 于 2016-1-6 09:47 编辑

仿照csi0的初始化顺序添加下看看,是不是哪里有漏掉了。

使用特权

评论回复
7
ruofeng1008|  楼主 | 2016-1-6 10:36 | 只看该作者
本帖最后由 ruofeng1008 于 2016-1-7 14:18 编辑
kris_fei 发表于 2016-1-5 13:29
仿照csi0的初始化顺序添加下看看,是不是哪里有漏掉了。

没有漏,imx6DL是只支持一个IPU的,电路应该出错了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

31

帖子

2

粉丝