驅動13 i2c裝置驅動程式

2022-08-03 01:03:11 字數 1959 閱讀 7693

1 分析i2c裝置的識別過程

i2c_add_driver

i2c_register_driver

driver->driver.bus = &i2c_bus_type;

driver_register(&driver->driver);

list_for_each_entry(adapter, &adapters, list) ;

12static unsigned short normal_addr = ; /*

位址值是7位

*/13

/*改為0x60的話, 由於不存在裝置位址為0x60的裝置, 所以at24cxx_detect不被呼叫

*/14

15static unsigned short force_addr = ;

16static unsigned short * forces =;

1718

static

struct i2c_client_address_data addr_data =;

2425

static

struct

i2c_driver at24cxx_driver;

2627

28static

intmajor;

29static

struct

class *cls;

30struct i2c_client *at24cxx_client;

3132

static ssize_t at24cxx_read(struct file *file, char __user *buf, size_t size, loff_t *offset)

3368

else

69return -eio;70}

7172

static ssize_t at24cxx_write(struct file *file, const

char __user *buf, size_t size, loff_t *offset)

7398

99100

static

struct file_operations at24cxx_fops =;

105106

static

int at24cxx_detect(struct i2c_adapter *adapter, int address, int

kind)

107125

126static

int at24cxx_attach(struct i2c_adapter *adapter)

127130

131static

int at24cxx_detach(struct i2c_client *client)

132143

144145

/*1. 分配乙個i2c_driver結構體

*/146

/*2. 設定i2c_driver結構體

*/147

static

struct i2c_driver at24cxx_driver =,

151 .attach_adapter =at24cxx_attach,

152 .detach_client =at24cxx_detach,

153};

154155

static

int at24cxx_init(void

)156

160161

static

void at24cxx_exit(void

)162

165166

module_init(at24cxx_init);

167module_exit(at24cxx_exit);

168169 module_license("

gpl");

i2c裝置驅動程式

I2C裝置驅動程式

i2c裝置驅動程式框架 1.分配乙個i2c driver結構體 2.設定 attach adapter 它直接呼叫 i2c probe adap,裝置位址,發現這個裝置後要呼叫的函式 detach client 解除安裝這個驅動後,如果之前發現能夠支援的裝置,則呼叫它來清理 3.註冊 i2c add...

i2c驅動程式

使用者空間 使用者應用程式 核心空間 sys,dev i2c客戶驅動程式 硬體 i2c裝置 i2c控制器 資料結構 i2c driver include linux i2c.h 代表乙個i2c驅動程式 i2c client address data include linux i2c.h i2c客戶...

linux裝置驅動程式 字元裝置驅動程式

先留個 有一起學習驅動程式的加qq295699450 字元裝置驅動 這篇比較惱火。載入成功,但是讀不出來資料,有知道怎麼回事的,留個言,一起討論下 資料結構 struct scull mem struct scull dev dev 整個驅動程式 如下 include include include...