1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
i2c_register_driver driver->driver.owner = owner; driver->driver.bus = &i2c_bus_type; driver_register(&driver->driver);
i2c_for_each_dev(driver, __process_new_driver); bus_for_each_dev(&i2c_bus_type, NULL, data, fn); while ((dev = next_device(&i)) && !error) error = fn(dev, data); __process_new_driver i2c_do_add_adapter(data, to_i2c_adapter(dev)); i2c_detect(adap, driver); if (!driver->detect || !address_list) return 0; for (i = 0; address_list[i] != I2C_CLIENT_END; i += 1) { temp_client->addr = address_list[i]; err = i2c_detect_address(temp_client, driver); info.addr = addr; err = driver->detect(temp_client, &info); client = i2c_new_device(adapter, &info); list_add_tail(&client->detected, &driver->clients); if (unlikely(err)) break; } driver->attach_adapter(adap)
|
近期评论