Lines Matching defs:adap
135 static int get_scl_gpio_value(struct i2c_adapter *adap)
137 return gpiod_get_value_cansleep(adap->bus_recovery_info->scl_gpiod);
140 static void set_scl_gpio_value(struct i2c_adapter *adap, int val)
142 gpiod_set_value_cansleep(adap->bus_recovery_info->scl_gpiod, val);
145 static int get_sda_gpio_value(struct i2c_adapter *adap)
147 return gpiod_get_value_cansleep(adap->bus_recovery_info->sda_gpiod);
150 static void set_sda_gpio_value(struct i2c_adapter *adap, int val)
152 gpiod_set_value_cansleep(adap->bus_recovery_info->sda_gpiod, val);
155 static int i2c_generic_bus_free(struct i2c_adapter *adap)
157 struct i2c_bus_recovery_info *bri = adap->bus_recovery_info;
161 ret = bri->get_bus_free(adap);
163 ret = bri->get_sda(adap);
179 int i2c_generic_scl_recovery(struct i2c_adapter *adap)
181 struct i2c_bus_recovery_info *bri = adap->bus_recovery_info;
185 bri->prepare_recovery(adap);
196 bri->set_scl(adap, scl);
199 bri->set_sda(adap, scl);
208 if (!bri->get_scl(adap)) {
209 dev_err(&adap->dev,
217 bri->set_scl(adap, scl);
227 bri->set_sda(adap, scl);
231 ret = i2c_generic_bus_free(adap);
242 bri->unprepare_recovery(adap);
250 int i2c_recover_bus(struct i2c_adapter *adap)
252 if (!adap->bus_recovery_info)
255 dev_dbg(&adap->dev, "Trying i2c bus recovery\n");
256 return adap->bus_recovery_info->recover_bus(adap);
260 static void i2c_gpio_init_pinctrl_recovery(struct i2c_adapter *adap)
262 struct i2c_bus_recovery_info *bri = adap->bus_recovery_info;
263 struct device *dev = &adap->dev;
305 static int i2c_gpio_init_generic_recovery(struct i2c_adapter *adap)
307 struct i2c_bus_recovery_info *bri = adap->bus_recovery_info;
308 struct device *dev = &adap->dev;
373 static int i2c_gpio_init_recovery(struct i2c_adapter *adap)
375 i2c_gpio_init_pinctrl_recovery(adap);
376 return i2c_gpio_init_generic_recovery(adap);
379 static int i2c_init_recovery(struct i2c_adapter *adap)
381 struct i2c_bus_recovery_info *bri = adap->bus_recovery_info;
387 if (i2c_gpio_init_recovery(adap) == -EPROBE_DEFER)
419 dev_printk(err_level, &adap->dev, "Not using recovery: %s\n", err_str);
420 adap->bus_recovery_info = NULL;
427 struct i2c_adapter *adap = client->adapter;
430 if (!adap->host_notify_domain)
436 irq = irq_create_mapping(adap->host_notify_domain, client->addr);
809 static void i2c_dev_set_name(struct i2c_adapter *adap,
825 dev_set_name(&client->dev, "%d-%04x", i2c_adapter_id(adap),
857 * @adap: the adapter managing the device
872 i2c_new_client_device(struct i2c_adapter *adap, struct i2c_board_info const *info)
881 client->adapter = adap;
896 dev_err(&adap->dev, "Invalid %d-bit I2C address 0x%02hx\n",
902 status = i2c_check_addr_busy(adap, i2c_encode_flags_to_addr(client));
912 i2c_dev_set_name(adap, client, info);
917 dev_err(&adap->dev,
928 dev_dbg(&adap->dev, "client [%s] registered with bus id %s\n",
939 dev_err(&adap->dev,
1112 struct i2c_adapter *adap = to_i2c_adapter(dev);
1113 complete(&adap->dev_released);
1144 struct i2c_adapter *adap = to_i2c_adapter(dev);
1184 client = i2c_new_client_device(adap, &info);
1189 mutex_lock(&adap->userspace_clients_lock);
1190 list_add_tail(&client->detected, &adap->userspace_clients);
1191 mutex_unlock(&adap->userspace_clients_lock);
1212 struct i2c_adapter *adap = to_i2c_adapter(dev);
1231 mutex_lock_nested(&adap->userspace_clients_lock,
1232 i2c_adapter_depth(adap));
1233 list_for_each_entry_safe(client, next, &adap->userspace_clients,
1245 mutex_unlock(&adap->userspace_clients_lock);
1306 struct i2c_adapter *adap)
1309 i2c_detect(adap, driver);
1325 static void i2c_host_notify_irq_teardown(struct i2c_adapter *adap)
1327 struct irq_domain *domain = adap->host_notify_domain;
1337 adap->host_notify_domain = NULL;
1353 static int i2c_setup_host_notify_irq_domain(struct i2c_adapter *adap)
1357 if (!i2c_check_functionality(adap, I2C_FUNC_SMBUS_HOST_NOTIFY))
1360 domain = irq_domain_create_linear(adap->dev.parent->fwnode,
1362 &i2c_host_notify_irq_ops, adap);
1366 adap->host_notify_domain = domain;
1374 * @adap: the adapter
1381 int i2c_handle_smbus_host_notify(struct i2c_adapter *adap, unsigned short addr)
1385 if (!adap)
1388 irq = irq_find_mapping(adap->host_notify_domain, addr);
1398 static int i2c_register_adapter(struct i2c_adapter *adap)
1409 if (WARN(!adap->name[0], "i2c adapter has no name"))
1412 if (!adap->algo) {
1413 pr_err("adapter '%s': no algo supplied!\n", adap->name);
1417 if (!adap->lock_ops)
1418 adap->lock_ops = &i2c_adapter_lock_ops;
1420 adap->locked_flags = 0;
1421 rt_mutex_init(&adap->bus_lock);
1422 rt_mutex_init(&adap->mux_lock);
1423 mutex_init(&adap->userspace_clients_lock);
1424 INIT_LIST_HEAD(&adap->userspace_clients);
1427 if (adap->timeout == 0)
1428 adap->timeout = HZ;
1431 res = i2c_setup_host_notify_irq_domain(adap);
1434 adap->name, res);
1438 dev_set_name(&adap->dev, "i2c-%d", adap->nr);
1439 adap->dev.bus = &i2c_bus_type;
1440 adap->dev.type = &i2c_adapter_type;
1441 res = device_register(&adap->dev);
1443 pr_err("adapter '%s': can't register device (%d)\n", adap->name, res);
1447 res = of_i2c_setup_smbus_alert(adap);
1451 pm_runtime_no_callbacks(&adap->dev);
1452 pm_suspend_ignore_children(&adap->dev, true);
1453 pm_runtime_enable(&adap->dev);
1455 res = i2c_init_recovery(adap);
1459 dev_dbg(&adap->dev, "adapter [%s] registered\n", adap->name);
1462 res = class_compat_create_link(i2c_adapter_compat_class, &adap->dev,
1463 adap->dev.parent);
1465 dev_warn(&adap->dev,
1470 of_i2c_register_devices(adap);
1471 i2c_acpi_install_space_handler(adap);
1472 i2c_acpi_register_devices(adap);
1474 if (adap->nr < __i2c_first_dynamic_bus_num)
1475 i2c_scan_static_board_info(adap);
1479 bus_for_each_drv(&i2c_bus_type, NULL, adap, __process_new_adapter);
1485 init_completion(&adap->dev_released);
1486 device_unregister(&adap->dev);
1487 wait_for_completion(&adap->dev_released);
1490 idr_remove(&i2c_adapter_idr, adap->nr);
1497 * @adap: the adapter to register (with adap->nr initialized)
1502 static int __i2c_add_numbered_adapter(struct i2c_adapter *adap)
1507 id = idr_alloc(&i2c_adapter_idr, adap, adap->nr, adap->nr + 1, GFP_KERNEL);
1512 return i2c_register_adapter(adap);
1526 * in adap->nr, and the specified adapter became available for clients.
1557 * @adap: the adapter to register (with adap->nr initialized)
1573 * clients using the bus number provided in adap->nr. Also, the table
1578 int i2c_add_numbered_adapter(struct i2c_adapter *adap)
1580 if (adap->nr == -1) /* -1 means dynamically assign bus id */
1581 return i2c_add_adapter(adap);
1583 return __i2c_add_numbered_adapter(adap);
1627 * @adap: the adapter being unregistered
1633 void i2c_del_adapter(struct i2c_adapter *adap)
1640 found = idr_find(&i2c_adapter_idr, adap->nr);
1642 if (found != adap) {
1643 pr_debug("attempting to delete unregistered adapter [%s]\n", adap->name);
1647 i2c_acpi_remove_space_handler(adap);
1650 bus_for_each_drv(&i2c_bus_type, NULL, adap,
1655 mutex_lock_nested(&adap->userspace_clients_lock,
1656 i2c_adapter_depth(adap));
1657 list_for_each_entry_safe(client, next, &adap->userspace_clients,
1659 dev_dbg(&adap->dev, "Removing %s at 0x%x\n", client->name,
1664 mutex_unlock(&adap->userspace_clients_lock);
1671 device_for_each_child(&adap->dev, NULL, __unregister_client);
1672 device_for_each_child(&adap->dev, NULL, __unregister_dummy);
1675 class_compat_remove_link(i2c_adapter_compat_class, &adap->dev,
1676 adap->dev.parent);
1680 dev_dbg(&adap->dev, "adapter [%s] unregistered\n", adap->name);
1682 pm_runtime_disable(&adap->dev);
1684 i2c_host_notify_irq_teardown(adap);
1693 init_completion(&adap->dev_released);
1694 device_unregister(&adap->dev);
1695 wait_for_completion(&adap->dev_released);
1699 idr_remove(&i2c_adapter_idr, adap->nr);
1704 memset(&adap->dev, 0, sizeof(adap->dev));
1861 void i2c_clients_command(struct i2c_adapter *adap, unsigned int cmd, void *arg)
1867 device_for_each_child(&adap->dev, &cmd_arg, i2c_cmd);
1944 static int i2c_quirk_error(struct i2c_adapter *adap, struct i2c_msg *msg, char *err_msg)
1946 dev_err_ratelimited(&adap->dev, "adapter quirk: %s (addr 0x%04x, size %u, %s)\n",
1952 static int i2c_check_for_quirks(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
1954 const struct i2c_adapter_quirks *q = adap->quirks;
1964 return i2c_quirk_error(adap, &msgs[0], "1st comb msg must be write");
1967 return i2c_quirk_error(adap, &msgs[1], "2nd comb msg must be read");
1970 return i2c_quirk_error(adap, &msgs[0], "comb msg only to same addr");
1973 return i2c_quirk_error(adap, &msgs[0], "msg too long");
1976 return i2c_quirk_error(adap, &msgs[1], "msg too long");
1983 return i2c_quirk_error(adap, &msgs[0], "too many messages");
1990 return i2c_quirk_error(adap, &msgs[i], "msg too long");
1993 return i2c_quirk_error(adap, &msgs[i], "no zero length");
1996 return i2c_quirk_error(adap, &msgs[i], "msg too long");
1999 return i2c_quirk_error(adap, &msgs[i], "no zero length");
2008 * @adap: Handle to I2C bus
2018 int __i2c_transfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
2023 if (!adap->algo->master_xfer) {
2024 dev_dbg(&adap->dev, "I2C level transfers not supported\n");
2031 ret = __i2c_check_suspended(adap);
2035 if (adap->quirks && i2c_check_for_quirks(adap, msgs, num))
2047 trace_i2c_read(adap, &msgs[i], i);
2049 trace_i2c_write(adap, &msgs[i], i);
2054 for (ret = 0, try = 0; try <= adap->retries; try++) {
2055 if (i2c_in_atomic_xfer_mode() && adap->algo->master_xfer_atomic)
2056 ret = adap->algo->master_xfer_atomic(adap, msgs, num);
2058 ret = adap->algo->master_xfer(adap, msgs, num);
2062 if (time_after(jiffies, orig_jiffies + adap->timeout))
2070 trace_i2c_reply(adap, &msgs[i], i);
2071 trace_i2c_result(adap, num, ret);
2080 * @adap: Handle to I2C bus
2090 int i2c_transfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
2110 ret = __i2c_lock_bus_helper(adap);
2114 ret = __i2c_transfer(adap, msgs, num);
2115 i2c_unlock_bus(adap, I2C_LOCK_SEGMENT);
2162 struct i2c_adapter *adap = client->adapter;
2166 if (!i2c_check_functionality(adap, I2C_FUNC_SMBUS_READ_I2C_BLOCK))
2170 ret = i2c_smbus_xfer(adap, I2C_ADDR_DEVICE_ID, 0,
2201 static int i2c_default_probe(struct i2c_adapter *adap, unsigned short addr)
2207 if (addr == 0x73 && (adap->class & I2C_CLASS_HWMON)
2208 && i2c_check_functionality(adap, I2C_FUNC_SMBUS_READ_BYTE_DATA))
2209 err = i2c_smbus_xfer(adap, addr, 0, I2C_SMBUS_READ, 0,
2214 && i2c_check_functionality(adap, I2C_FUNC_SMBUS_QUICK))
2215 err = i2c_smbus_xfer(adap, addr, 0, I2C_SMBUS_WRITE, 0,
2217 else if (i2c_check_functionality(adap, I2C_FUNC_SMBUS_READ_BYTE))
2218 err = i2c_smbus_xfer(adap, addr, 0, I2C_SMBUS_READ, 0,
2221 dev_warn(&adap->dev, "No suitable probing method supported for address 0x%02X\n",
2334 int i2c_probe_func_quick_read(struct i2c_adapter *adap, unsigned short addr)
2336 return i2c_smbus_xfer(adap, addr, 0, I2C_SMBUS_READ, 0,
2342 i2c_new_scanned_device(struct i2c_adapter *adap,
2345 int (*probe)(struct i2c_adapter *adap, unsigned short addr))
2355 dev_warn(&adap->dev, "Invalid 7-bit address 0x%02x\n",
2361 if (i2c_check_addr_busy(adap, addr_list[i])) {
2362 dev_dbg(&adap->dev,
2369 if (probe(adap, addr_list[i]))
2374 dev_dbg(&adap->dev, "Probing failed, no device found\n");
2379 return i2c_new_client_device(adap, info);
2403 void i2c_put_adapter(struct i2c_adapter *adap)
2405 if (!adap)
2408 module_put(adap->owner);
2409 /* Should be last, otherwise we risk use-after-free with 'adap' */
2410 put_device(&adap->dev);