| công cụ tìm kiếm bảng dữ liệu linh kiện điện tử |
|
UM0851 bảng dữ liệu(PDF) 83 Page - STMicroelectronics |
|
|
|||||||||||||||||||||||||||||
UM0851 bảng dữ liệu(HTML) 83 Page - STMicroelectronics |
|
83 / 245 page ![]() UM0851 Communication device drivers Doc ID 16604 Rev 2 83/245 This function is responsible for creating a struct i2c_client structure that will be registered with the I2C core. The I2C core uses that structure as an individual I2C chip device. To create this structure, the eeprom_detect() function is used: struct i2c_client *new_client; struct eeprom_data *data; int err = 0; if (!(data = kzalloc(sizeof(struct eeprom_data), GFP_KERNEL))) { err = -ENOMEM; goto exit; } new_client = &data->client; memset(data->data, 0xff, EEPROM_SIZE); i2c_set_clientdata(new_client, data); new_client->addr = address; new_client->adapter = adapter; new_client->driver = &eeprom_driver; new_client->flags = 0; strlcpy(new_client->name, "eeprom", I2C_NAME_SIZE); First, the struct i2c_client and a separate local data structure (called struct eeprom_data) are created. After the memory is allocated successfully, some fields in the struct i2c_client are set to point to this specific device and this specific driver. Notably, the addr, adapter and driver variables must be initialized. The name of the struct i2c_client also must be set in order to be displayed properly in the sysfs tree for this I2C device. After the struct i2c_client is initialized, it must be registered with the I2C core. This is done with a call to the i2c_attach_client() function /* Tell the I2C layer a new client has arrived */ if ((err = i2c_attach_client(new_client))) goto exit_kfree; When this function returns, with no errors reported, the I2C chip device is set up properly in the kernel. For creating sysfs tree structure sysfs_create_bin_file(&new_client->dev.kobj, &eeprom_attr); In the Linux 2.6 kernel, all I2C chip devices and adapters show up in the sysfs filesystem. I2C chip devices can be found at /sys/bus/i2c/devices, listed by their adapter address and chip address. For example, the eeprom_driver loaded on a machine might produce the following sysfs tree structure. $ tree /sys/bus/i2c/ /sys/bus/i2c/ |-- devices | |-- 0-0050 ->../../devices/platform/spear_i2c.6/i2c-0/0-0050 | |-- 0-0051 -> ../../../devices/platform/spear_i2c.6/i2c-0/0-0051 | |-- 0-0052 -> ../../../devices/platform/spear_i2c.6/i2c-0/0-0052 | `-- 0-0053 -> ../../../devices/platform/spear_i2c.6/i2c-0/0-0053 `-- drivers |-- i2c_adapter `-- eeprom | |-- 0-0050 -> ../../../devices/platform/spear_i2c.6/i2c-0/0-0050 | |-- 0-0051 -> ../../../devices/platform/spear_i2c.6/i2c-0/0-0051 | |-- 0-0052 -> ../../../devices/platform/spear_i2c.6/i2c-0/0-0052 | `-- 0-0053 -> ../../../devices/platform/spear_i2c.6/i2c-0/0-0053 |
|
Link URL |
| Cho đến nay ALLDATASHEET có giúp ích cho doanh nghiệp của bạn hay không? [ DONATE ] |
Alldatasheet là | Quảng cáo | Liên lạc với chúng tôi | Chính sách bảo mật | Liên kết đến bảng dữ liệu | Trao đổi link | Tìm kiếm theo nhà sản xuất All Rights Reserved©Alldatasheet.com |
| Russian : Alldatasheetru.com | Korean : Alldatasheet.co.kr | Spanish : Alldatasheet.es | French : Alldatasheet.fr | Italian : Alldatasheetit.com Portuguese : Alldatasheetpt.com | Polish : Alldatasheet.pl | Vietnamese : Alldatasheet.vn Indian : Alldatasheet.in | Mexican : Alldatasheet.com.mx | British : Alldatasheet.co.uk | New Zealand : Alldatasheet.co.nz |
|
Family Site : ic2ic.com |
icmetro.com |