Lines Matching refs:adap
211 static void acpi_i2c_register_devices(struct i2c_adapter *adap) in acpi_i2c_register_devices() argument
215 if (!has_acpi_companion(&adap->dev)) in acpi_i2c_register_devices()
221 adap, NULL); in acpi_i2c_register_devices()
223 dev_warn(&adap->dev, "failed to enumerate I2C slaves\n"); in acpi_i2c_register_devices()
227 static inline void acpi_i2c_register_devices(struct i2c_adapter *adap) { } in acpi_i2c_register_devices() argument
545 static int get_scl_gpio_value(struct i2c_adapter *adap) in get_scl_gpio_value() argument
547 return gpio_get_value(adap->bus_recovery_info->scl_gpio); in get_scl_gpio_value()
550 static void set_scl_gpio_value(struct i2c_adapter *adap, int val) in set_scl_gpio_value() argument
552 gpio_set_value(adap->bus_recovery_info->scl_gpio, val); in set_scl_gpio_value()
555 static int get_sda_gpio_value(struct i2c_adapter *adap) in get_sda_gpio_value() argument
557 return gpio_get_value(adap->bus_recovery_info->sda_gpio); in get_sda_gpio_value()
560 static int i2c_get_gpios_for_recovery(struct i2c_adapter *adap) in i2c_get_gpios_for_recovery() argument
562 struct i2c_bus_recovery_info *bri = adap->bus_recovery_info; in i2c_get_gpios_for_recovery()
563 struct device *dev = &adap->dev; in i2c_get_gpios_for_recovery()
585 static void i2c_put_gpios_for_recovery(struct i2c_adapter *adap) in i2c_put_gpios_for_recovery() argument
587 struct i2c_bus_recovery_info *bri = adap->bus_recovery_info; in i2c_put_gpios_for_recovery()
603 static int i2c_generic_recovery(struct i2c_adapter *adap) in i2c_generic_recovery() argument
605 struct i2c_bus_recovery_info *bri = adap->bus_recovery_info; in i2c_generic_recovery()
609 bri->prepare_recovery(adap); in i2c_generic_recovery()
611 bri->set_scl(adap, val); in i2c_generic_recovery()
620 if (bri->get_sda && bri->get_sda(adap)) in i2c_generic_recovery()
623 if (!bri->get_scl(adap)) { in i2c_generic_recovery()
624 dev_err(&adap->dev, in i2c_generic_recovery()
632 bri->set_scl(adap, val); in i2c_generic_recovery()
637 bri->unprepare_recovery(adap); in i2c_generic_recovery()
642 int i2c_generic_scl_recovery(struct i2c_adapter *adap) in i2c_generic_scl_recovery() argument
644 return i2c_generic_recovery(adap); in i2c_generic_scl_recovery()
648 int i2c_generic_gpio_recovery(struct i2c_adapter *adap) in i2c_generic_gpio_recovery() argument
652 ret = i2c_get_gpios_for_recovery(adap); in i2c_generic_gpio_recovery()
656 ret = i2c_generic_recovery(adap); in i2c_generic_gpio_recovery()
657 i2c_put_gpios_for_recovery(adap); in i2c_generic_gpio_recovery()
663 int i2c_recover_bus(struct i2c_adapter *adap) in i2c_recover_bus() argument
665 if (!adap->bus_recovery_info) in i2c_recover_bus()
668 dev_dbg(&adap->dev, "Trying i2c bus recovery\n"); in i2c_recover_bus()
669 return adap->bus_recovery_info->recover_bus(adap); in i2c_recover_bus()
1004 static void i2c_dev_set_name(struct i2c_adapter *adap, in i2c_dev_set_name() argument
1014 dev_set_name(&client->dev, "%d-%04x", i2c_adapter_id(adap), in i2c_dev_set_name()
1035 i2c_new_device(struct i2c_adapter *adap, struct i2c_board_info const *info) in i2c_new_device() argument
1044 client->adapter = adap; in i2c_new_device()
1059 dev_err(&adap->dev, "Invalid %d-bit I2C address 0x%02hx\n", in i2c_new_device()
1065 status = i2c_check_addr_busy(adap, i2c_encode_flags_to_addr(client)); in i2c_new_device()
1075 i2c_dev_set_name(adap, client); in i2c_new_device()
1080 dev_dbg(&adap->dev, "client [%s] registered with bus id %s\n", in i2c_new_device()
1086 dev_err(&adap->dev, "Failed to register i2c client %s at 0x%02x " in i2c_new_device()
1166 struct i2c_adapter *adap = to_i2c_adapter(dev); in i2c_adapter_dev_release() local
1167 complete(&adap->dev_released); in i2c_adapter_dev_release()
1200 struct i2c_adapter *adap = to_i2c_adapter(dev); in i2c_sysfs_new_device() local
1240 client = i2c_new_device(adap, &info); in i2c_sysfs_new_device()
1245 mutex_lock(&adap->userspace_clients_lock); in i2c_sysfs_new_device()
1246 list_add_tail(&client->detected, &adap->userspace_clients); in i2c_sysfs_new_device()
1247 mutex_unlock(&adap->userspace_clients_lock); in i2c_sysfs_new_device()
1268 struct i2c_adapter *adap = to_i2c_adapter(dev); in i2c_sysfs_delete_device() local
1287 mutex_lock_nested(&adap->userspace_clients_lock, in i2c_sysfs_delete_device()
1288 i2c_adapter_depth(adap)); in i2c_sysfs_delete_device()
1289 list_for_each_entry_safe(client, next, &adap->userspace_clients, in i2c_sysfs_delete_device()
1301 mutex_unlock(&adap->userspace_clients_lock); in i2c_sysfs_delete_device()
1365 static struct i2c_client *of_i2c_register_device(struct i2c_adapter *adap, in of_i2c_register_device() argument
1375 dev_dbg(&adap->dev, "of_i2c: register %s\n", node->full_name); in of_i2c_register_device()
1378 dev_err(&adap->dev, "of_i2c: modalias failure on %s\n", in of_i2c_register_device()
1385 dev_err(&adap->dev, "of_i2c: invalid reg on %s\n", in of_i2c_register_device()
1402 dev_err(&adap->dev, "of_i2c: invalid addr=%x on %s\n", in of_i2c_register_device()
1414 result = i2c_new_device(adap, &info); in of_i2c_register_device()
1416 dev_err(&adap->dev, "of_i2c: Failure registering %s\n", in of_i2c_register_device()
1424 static void of_i2c_register_devices(struct i2c_adapter *adap) in of_i2c_register_devices() argument
1429 if (!adap->dev.of_node) in of_i2c_register_devices()
1432 dev_dbg(&adap->dev, "of_i2c: walking child nodes\n"); in of_i2c_register_devices()
1434 for_each_available_child_of_node(adap->dev.of_node, node) { in of_i2c_register_devices()
1437 of_i2c_register_device(adap, node); in of_i2c_register_devices()
1500 static void of_i2c_register_devices(struct i2c_adapter *adap) { } in of_i2c_register_devices() argument
1504 struct i2c_adapter *adap) in i2c_do_add_adapter() argument
1507 i2c_detect(adap, driver); in i2c_do_add_adapter()
1511 dev_warn(&adap->dev, "%s: attach_adapter method is deprecated\n", in i2c_do_add_adapter()
1513 dev_warn(&adap->dev, "Please use another way to instantiate " in i2c_do_add_adapter()
1516 driver->attach_adapter(adap); in i2c_do_add_adapter()
1526 static int i2c_register_adapter(struct i2c_adapter *adap) in i2c_register_adapter() argument
1537 if (unlikely(adap->name[0] == '\0')) { in i2c_register_adapter()
1542 if (unlikely(!adap->algo)) { in i2c_register_adapter()
1544 "no algo!\n", adap->name); in i2c_register_adapter()
1548 rt_mutex_init(&adap->bus_lock); in i2c_register_adapter()
1549 mutex_init(&adap->userspace_clients_lock); in i2c_register_adapter()
1550 INIT_LIST_HEAD(&adap->userspace_clients); in i2c_register_adapter()
1553 if (adap->timeout == 0) in i2c_register_adapter()
1554 adap->timeout = HZ; in i2c_register_adapter()
1556 dev_set_name(&adap->dev, "i2c-%d", adap->nr); in i2c_register_adapter()
1557 adap->dev.bus = &i2c_bus_type; in i2c_register_adapter()
1558 adap->dev.type = &i2c_adapter_type; in i2c_register_adapter()
1559 res = device_register(&adap->dev); in i2c_register_adapter()
1563 dev_dbg(&adap->dev, "adapter [%s] registered\n", adap->name); in i2c_register_adapter()
1565 pm_runtime_no_callbacks(&adap->dev); in i2c_register_adapter()
1568 res = class_compat_create_link(i2c_adapter_compat_class, &adap->dev, in i2c_register_adapter()
1569 adap->dev.parent); in i2c_register_adapter()
1571 dev_warn(&adap->dev, in i2c_register_adapter()
1576 if (adap->bus_recovery_info) { in i2c_register_adapter()
1577 struct i2c_bus_recovery_info *bri = adap->bus_recovery_info; in i2c_register_adapter()
1580 dev_err(&adap->dev, "No recover_bus() found, not using recovery\n"); in i2c_register_adapter()
1581 adap->bus_recovery_info = NULL; in i2c_register_adapter()
1588 dev_err(&adap->dev, "Invalid SCL gpio, not using recovery\n"); in i2c_register_adapter()
1589 adap->bus_recovery_info = NULL; in i2c_register_adapter()
1602 dev_err(&adap->dev, "No {get|set}_gpio() found, not using recovery\n"); in i2c_register_adapter()
1603 adap->bus_recovery_info = NULL; in i2c_register_adapter()
1609 of_i2c_register_devices(adap); in i2c_register_adapter()
1610 acpi_i2c_register_devices(adap); in i2c_register_adapter()
1611 acpi_i2c_install_space_handler(adap); in i2c_register_adapter()
1613 if (adap->nr < __i2c_first_dynamic_bus_num) in i2c_register_adapter()
1614 i2c_scan_static_board_info(adap); in i2c_register_adapter()
1618 bus_for_each_drv(&i2c_bus_type, NULL, adap, __process_new_adapter); in i2c_register_adapter()
1625 idr_remove(&i2c_adapter_idr, adap->nr); in i2c_register_adapter()
1637 static int __i2c_add_numbered_adapter(struct i2c_adapter *adap) in __i2c_add_numbered_adapter() argument
1642 id = idr_alloc(&i2c_adapter_idr, adap, adap->nr, adap->nr + 1, in __i2c_add_numbered_adapter()
1648 return i2c_register_adapter(adap); in __i2c_add_numbered_adapter()
1714 int i2c_add_numbered_adapter(struct i2c_adapter *adap) in i2c_add_numbered_adapter() argument
1716 if (adap->nr == -1) /* -1 means dynamically assign bus id */ in i2c_add_numbered_adapter()
1717 return i2c_add_adapter(adap); in i2c_add_numbered_adapter()
1719 return __i2c_add_numbered_adapter(adap); in i2c_add_numbered_adapter()
1770 void i2c_del_adapter(struct i2c_adapter *adap) in i2c_del_adapter() argument
1777 found = idr_find(&i2c_adapter_idr, adap->nr); in i2c_del_adapter()
1779 if (found != adap) { in i2c_del_adapter()
1781 "adapter [%s]\n", adap->name); in i2c_del_adapter()
1785 acpi_i2c_remove_space_handler(adap); in i2c_del_adapter()
1788 bus_for_each_drv(&i2c_bus_type, NULL, adap, in i2c_del_adapter()
1793 mutex_lock_nested(&adap->userspace_clients_lock, in i2c_del_adapter()
1794 i2c_adapter_depth(adap)); in i2c_del_adapter()
1795 list_for_each_entry_safe(client, next, &adap->userspace_clients, in i2c_del_adapter()
1797 dev_dbg(&adap->dev, "Removing %s at 0x%x\n", client->name, in i2c_del_adapter()
1802 mutex_unlock(&adap->userspace_clients_lock); in i2c_del_adapter()
1809 device_for_each_child(&adap->dev, NULL, __unregister_client); in i2c_del_adapter()
1810 device_for_each_child(&adap->dev, NULL, __unregister_dummy); in i2c_del_adapter()
1813 class_compat_remove_link(i2c_adapter_compat_class, &adap->dev, in i2c_del_adapter()
1814 adap->dev.parent); in i2c_del_adapter()
1818 dev_dbg(&adap->dev, "adapter [%s] unregistered\n", adap->name); in i2c_del_adapter()
1827 init_completion(&adap->dev_released); in i2c_del_adapter()
1828 device_unregister(&adap->dev); in i2c_del_adapter()
1829 wait_for_completion(&adap->dev_released); in i2c_del_adapter()
1833 idr_remove(&i2c_adapter_idr, adap->nr); in i2c_del_adapter()
1838 memset(&adap->dev, 0, sizeof(adap->dev)); in i2c_del_adapter()
1972 void i2c_clients_command(struct i2c_adapter *adap, unsigned int cmd, void *arg) in i2c_clients_command() argument
1978 device_for_each_child(&adap->dev, &cmd_arg, i2c_cmd); in i2c_clients_command()
1987 struct i2c_adapter *adap; in of_i2c_notify() local
1992 adap = of_find_i2c_adapter_by_node(rd->dn->parent); in of_i2c_notify()
1993 if (adap == NULL) in of_i2c_notify()
1997 put_device(&adap->dev); in of_i2c_notify()
2001 client = of_i2c_register_device(adap, rd->dn); in of_i2c_notify()
2002 put_device(&adap->dev); in of_i2c_notify()
2102 static int i2c_quirk_error(struct i2c_adapter *adap, struct i2c_msg *msg, char *err_msg) in i2c_quirk_error() argument
2104 dev_err_ratelimited(&adap->dev, "adapter quirk: %s (addr 0x%04x, size %u, %s)\n", in i2c_quirk_error()
2110 static int i2c_check_for_quirks(struct i2c_adapter *adap, struct i2c_msg *msgs, int num) in i2c_check_for_quirks() argument
2112 const struct i2c_adapter_quirks *q = adap->quirks; in i2c_check_for_quirks()
2122 return i2c_quirk_error(adap, &msgs[0], "1st comb msg must be write"); in i2c_check_for_quirks()
2125 return i2c_quirk_error(adap, &msgs[1], "2nd comb msg must be read"); in i2c_check_for_quirks()
2128 return i2c_quirk_error(adap, &msgs[0], "comb msg only to same addr"); in i2c_check_for_quirks()
2131 return i2c_quirk_error(adap, &msgs[0], "msg too long"); in i2c_check_for_quirks()
2134 return i2c_quirk_error(adap, &msgs[1], "msg too long"); in i2c_check_for_quirks()
2141 return i2c_quirk_error(adap, &msgs[0], "too many messages"); in i2c_check_for_quirks()
2148 return i2c_quirk_error(adap, &msgs[i], "msg too long"); in i2c_check_for_quirks()
2151 return i2c_quirk_error(adap, &msgs[i], "msg too long"); in i2c_check_for_quirks()
2170 int __i2c_transfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num) in __i2c_transfer() argument
2175 if (adap->quirks && i2c_check_for_quirks(adap, msgs, num)) in __i2c_transfer()
2186 trace_i2c_read(adap, &msgs[i], i); in __i2c_transfer()
2188 trace_i2c_write(adap, &msgs[i], i); in __i2c_transfer()
2193 for (ret = 0, try = 0; try <= adap->retries; try++) { in __i2c_transfer()
2194 ret = adap->algo->master_xfer(adap, msgs, num); in __i2c_transfer()
2197 if (time_after(jiffies, orig_jiffies + adap->timeout)) in __i2c_transfer()
2205 trace_i2c_reply(adap, &msgs[i], i); in __i2c_transfer()
2206 trace_i2c_result(adap, i, ret); in __i2c_transfer()
2225 int i2c_transfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num) in i2c_transfer() argument
2246 if (adap->algo->master_xfer) { in i2c_transfer()
2249 dev_dbg(&adap->dev, "master_xfer[%d] %c, addr=0x%02x, " in i2c_transfer()
2257 ret = i2c_trylock_adapter(adap); in i2c_transfer()
2262 i2c_lock_adapter(adap); in i2c_transfer()
2265 ret = __i2c_transfer(adap, msgs, num); in i2c_transfer()
2266 i2c_unlock_adapter(adap); in i2c_transfer()
2270 dev_dbg(&adap->dev, "I2C level transfers not supported\n"); in i2c_transfer()
2287 struct i2c_adapter *adap = client->adapter; in i2c_master_send() local
2295 ret = i2c_transfer(adap, &msg, 1); in i2c_master_send()
2315 struct i2c_adapter *adap = client->adapter; in i2c_master_recv() local
2325 ret = i2c_transfer(adap, &msg, 1); in i2c_master_recv()
2353 static int i2c_default_probe(struct i2c_adapter *adap, unsigned short addr) in i2c_default_probe() argument
2359 if (addr == 0x73 && (adap->class & I2C_CLASS_HWMON) in i2c_default_probe()
2360 && i2c_check_functionality(adap, I2C_FUNC_SMBUS_READ_BYTE_DATA)) in i2c_default_probe()
2361 err = i2c_smbus_xfer(adap, addr, 0, I2C_SMBUS_READ, 0, in i2c_default_probe()
2366 && i2c_check_functionality(adap, I2C_FUNC_SMBUS_QUICK)) in i2c_default_probe()
2367 err = i2c_smbus_xfer(adap, addr, 0, I2C_SMBUS_WRITE, 0, in i2c_default_probe()
2369 else if (i2c_check_functionality(adap, I2C_FUNC_SMBUS_READ_BYTE)) in i2c_default_probe()
2370 err = i2c_smbus_xfer(adap, addr, 0, I2C_SMBUS_READ, 0, in i2c_default_probe()
2373 dev_warn(&adap->dev, "No suitable probing method supported for address 0x%02X\n", in i2c_default_probe()
2487 int i2c_probe_func_quick_read(struct i2c_adapter *adap, unsigned short addr) in i2c_probe_func_quick_read() argument
2489 return i2c_smbus_xfer(adap, addr, 0, I2C_SMBUS_READ, 0, in i2c_probe_func_quick_read()
2495 i2c_new_probed_device(struct i2c_adapter *adap, in i2c_new_probed_device() argument
2508 dev_warn(&adap->dev, "Invalid 7-bit address " in i2c_new_probed_device()
2514 if (i2c_check_addr_busy(adap, addr_list[i])) { in i2c_new_probed_device()
2515 dev_dbg(&adap->dev, "Address 0x%02x already in " in i2c_new_probed_device()
2521 if (probe(adap, addr_list[i])) in i2c_new_probed_device()
2526 dev_dbg(&adap->dev, "Probing failed, no device found\n"); in i2c_new_probed_device()
2531 return i2c_new_device(adap, info); in i2c_new_probed_device()
2555 void i2c_put_adapter(struct i2c_adapter *adap) in i2c_put_adapter() argument
2557 if (!adap) in i2c_put_adapter()
2560 put_device(&adap->dev); in i2c_put_adapter()
2561 module_put(adap->owner); in i2c_put_adapter()