打印
[技术问答]

I2C bus 添加 设备问题求教,感激不尽!!!

[复制链接]
2348|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gstatham|  楼主 | 2016-11-3 12:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
平台是nuc972,现在的问题是I2c bus 上面添加设备无效,卡了好几天,希望大神来解决,跪谢。

I2C 总线1  连接的是 音频设备NAU8822

现在8822的驱动是ok的,要在I2C bus 1上添加这个设备,添加方法如下,在这个文件里面添加Dev.c (arch\arm\mach-nuc970)  

    #ifdef CONFIG_I2C_BUS_NUC970_P1
    //port 1
    /* I2C clients */ 下面这个结构体是新建的,并且nau8822 名称和 8822 driver 里面是对应的,设备ID 也是正确的
    static struct i2c_board_info __initdata nuc970_i2c_clients1[] =
    {
    #ifdef CONFIG_SND_SOC_NAU8822
            {I2C_BOARD_INFO("nau8822", 0x1a),},
    #endif
    };,


    static struct nuc970_platform_i2c nuc970_i2c1_data = {
            .bus_num = 1,
            .bus_freq = 100000,
    };

    static struct resource nuc970_i2c_p1_resource[] = {
            [0] = {
                    .start = NUC970_PA_I2C1,
                    .end   = NUC970_PA_I2C1+ NUC970_SZ_I2C1 - 1,
                    .flags = IORESOURCE_MEM,
            },
            [1] = {
                    .start = IRQ_I2C1,
                    .end   = IRQ_I2C1,
                    .flags = IORESOURCE_IRQ,
            }

    };

    struct platform_device nuc970_device_i2c1 = {
            .name                  = "nuc970-i2c1",
            .id                  = -1,
            .num_resources          = ARRAY_SIZE(nuc970_i2c_p1_resource),
            .resource          = nuc970_i2c_p1_resource,
            .dev = {
                    .platform_data = &nuc970_i2c1_data,
                }
    };
    #endif

复制代码

下面是注册那个client
// 注册的第一个参数 是 Busnum,也是对的

    #ifdef CONFIG_I2C_BUS_NUC970_P1
        i2c_register_board_info(1, nuc970_i2c_clients1, sizeof(nuc970_i2c_clients1)/sizeof(struct i2c_board_info));
    #endif

复制代码

8822driver  nau8822.c 里面的driver struct


    static struct i2c_driver nau8822_i2c_driver = {
            .driver = {
                    .name = "nau8822",
                    .owner = THIS_MODULE,
            },
            .probe =    nau8822_i2c_probe,
            .remove =   nau8822_i2c_remove,
            .id_table = nau8822_i2c_id,
    };



这是i2c tools的测试结果

/mnt/i2c # ./i2cdetect -l
i2c-0   i2c             nuc970-i2c0                             I2C adapter
i2c-1   i2c             nuc970-i2c1                             I2C adapter
/mnt/i2c # ./i2cdetect -y 0
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- 3d -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --                        
/mnt/i2c # ./i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          nuc970-i2c1 nuc970-i2c1: cannot get bus (error -110)
沙发
gstatham|  楼主 | 2016-11-4 00:29 | 只看该作者
给自己顶一下

使用特权

评论回复
板凳
玛尼玛尼哄| | 2016-11-4 20:49 | 只看该作者
nuc972的BSP开发包有吗,提供一下

使用特权

评论回复
地板
天灵灵地灵灵| | 2016-11-4 21:39 | 只看该作者
网上没找到这个资料,好几个人在找这个,楼主看似有啊,分享分享。

使用特权

评论回复
5
huangcunxiake| | 2016-11-5 18:30 | 只看该作者
搞不到这个资料,没法帮你弄。。。你这从哪儿弄的啊,百度都没找到。

使用特权

评论回复
6
dongnanxibei| | 2016-11-7 18:44 | 只看该作者
这个一般只挂一个设备用,多了就有点复杂了。

使用特权

评论回复
7
zhuomuniao110| | 2016-11-7 23:01 | 只看该作者
需要确定设备的地址,应该每个设备都有一个地址码的。

使用特权

评论回复
8
烟熏味的菠萝包| | 2016-11-15 10:16 | 只看该作者
鹏哥,我也碰到了,怎么解决的

使用特权

评论回复
9
643757107| | 2016-11-15 12:40 | 只看该作者
没用功这个,是不是跑Linux的,跑系统的怎么玩

使用特权

评论回复
10
Lbb121358| | 2019-9-16 14:39 | 只看该作者
楼主,现在的这个问题怎么解决的呢,请教一下

使用特权

评论回复
11
zhuomuniao110| | 2019-9-16 20:56 | 只看该作者
这是分享经验还是提问

使用特权

评论回复
12
Lbb121358| | 2019-9-17 10:13 | 只看该作者
zhuomuniao110 发表于 2019-9-16 20:56
这是分享经验还是提问

在提问,我也被卡住了

使用特权

评论回复
13
Lbb121358| | 2019-9-17 10:58 | 只看该作者
$./i2cset  -f -y 0 0x0a 0x00 0xff
Error: Write failed
$./i2cget -f -y 0 0x0a 0x00
Error: Read failed

使用特权

评论回复
14
小灵通2018| | 2019-9-17 11:21 | 只看该作者
意思是挂1个设备正常,挂2个失败?

使用特权

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

本版积分规则

1

主题

2

帖子

1

粉丝