//1,i2c 设备注册:
static struct i2c_board_info i2c2_devices[] = {
{
I2C_BOARD_INFO("lt8912", 0x48), //设备名,匹配驱动的name,i2c设备地址7bit
},
};
//i2c设备一般在板级代码中注册
static void msm8916_add_i2c_deivces(void)
{
i2c_register_board_info(2/*那个i2c总线,i2c-2*/, i2c2_devices, ARRAY_SIZE(i2c2_devices));
}
//2,i2c驱动注册
#include <linux/i2c.h>
static const struct i2c_device_id lt8912_id[] = {
{ "lt8912", 0 }, //匹配i2c client名为lt8912的设备
{ }
};
//MODULE_DEVICE_TABLE(i2c, lt8912_id);
static int lt8912_i2c_probe(struct i2c_client * client, const struct i2c_device_id * device_id) //现行通用的与对应设备进行绑定的接口函数
{
printk("lt8912_i2c_probe----------------\n");
//s32 i2c_smbus_read_byte_data(const struct i2c_client *client, u8 command);
//s32 i2c_smbus_write_byte_data(const struct i2c_client *client, u8 command, u8 value);
return 0;
}
static int lt8912_i2c_remove(struct i2c_client * client) //现行通用与对应设备进行解绑的接口函数
{
printk("lt8912_i2c_remove--------------\n");
return 0;
}
static struct i2c_driver lt8912_driver = {
.driver = {
.name = "lt8912,do not probe by this", //probe不靠这个名字
.owner = THIS_MODULE,
},
.probe = lt8912_i2c_probe, //组装设备匹配时候的匹配动作
.remove = lt8912_i2c_remove, //组装设备移除接口
.id_table = lt8912_id, //制定匹配设备列表
};
module_i2c_driver(lt8912_driver);