Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1138084
  • 博文数量: 241
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 2279
  • 用 户 组: 普通用户
  • 注册时间: 2012-11-27 19:53
个人简介

JustForFun

文章分类

全部博文(241)

文章存档

2023年(8)

2022年(2)

2021年(3)

2020年(30)

2019年(11)

2018年(27)

2017年(54)

2016年(83)

2015年(23)

我的朋友

分类: LINUX

2017-09-27 17:39:23

drivers/i2c/i2c-dev.c处驱动为用户空间驱动i2c方法。
查看名字 # cat /sys/class/i2c-dev/i2c-0/name
hisi_i2c         可以通过这个名字来查找到设备源码
drivers/i2c/busses/i2c-hisilicon.c:#define HI_I2C       "hisi_i2c"
///////////////////////////////////////////////////////////////////////////////
drivers/i2c/busses/i2c-hisilicon.c
#define HI_I2C    "hisi_i2c"




///////////////////////////
drivers/i2c/busses/i2c-hisilicon.c
module_init(hi_i2c_module_init);
static int __init hi_i2c_module_init(void)
{
    int ret;

//device和driver放在了同一个文件里面来了,三星可不是这么搞得,海思为何这么搞???
    ret = platform_add_devices(hi_i2c_devices, ARRAY_SIZE(hi_i2c_devices));
    if (ret) {
        hi_err("i2c device register failed!\n");
        return ret;
    }

    ret = platform_driver_register(&hi_i2c_driver);
     return ret;
}
///////////////////////////////////////////////////////////////
//这里就是板级别设备信息
drivers/i2c/busses/i2c-hisilicon.c
static struct platform_device *hi_i2c_devices[] __initdata = {
#ifdef CONFIG_HI_I2C0
    &hi_i2c0_device,
#endif
#ifdef CONFIG_HI_I2C1
    &hi_i2c1_device,
#endif
};

//////////////////////////////////////////////////////////////////////////////////
//这里就是板级别设备信息device
drivers/i2c/busses/i2c-hisilicon.c
#ifdef CONFIG_HI_I2C0
static struct resource hi_i2c0_resources[] = {
    [0] = {
        .start          = CONFIG_HI_I2C0_IO_BASE,
        .end            = CONFIG_HI_I2C0_IO_BASE
            + CONFIG_HI_I2C0_IO_SIZE  - 1,
        .flags          = IORESOURCE_MEM,
    },
};

struct hi_platform_i2c hi_i2c0_platform_data = {
    .clk_limit    = CONFIG_HI_I2C0_CLK_LIMIT,
    .i2c_class    = I2C_CLASS_DDC,
};

struct platform_device hi_i2c0_device = {
    .name        = HI_I2C,
    .id        = 0,
    .resource    = hi_i2c0_resources,
    .num_resources    = ARRAY_SIZE(hi_i2c0_resources),
    .dev        = {
        .platform_data    = &hi_i2c0_platform_data,
    }
};
#endif
/////////////////////////////////////////////////////////////////////////////
这里是驱动driver
drivers/i2c/busses/i2c-hisilicon.c
static struct platform_driver hi_i2c_driver = {
    .probe        = hi_i2c_probe,
    .remove        = hi_i2c_remove,
    .suspend    = hi_i2c_suspend,
    .resume        = hi_i2c_resume,
    .driver        = {
        .owner    = THIS_MODULE,
        .name    = HI_I2C,
    },
};
阅读(1529) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~