Lines Matching refs:dev
95 static int i2c_device_match(struct device *dev, struct device_driver *drv)
97 struct i2c_client *client = i2c_verify_client(dev);
106 if (acpi_driver_match_device(dev, drv))
118 static int i2c_device_uevent(struct device *dev, struct kobj_uevent_env *env)
120 struct i2c_client *client = to_i2c_client(dev);
123 rc = of_device_uevent_modalias(dev, env);
127 rc = acpi_device_uevent_modalias(dev, env);
209 dev_err(&adap->dev,
255 dev_dbg(&adap->dev, "Trying i2c bus recovery\n");
263 struct device *dev = &adap->dev;
280 dev_dbg(dev, PINCTRL_STATE_DEFAULT " state not found for GPIO recovery\n");
290 dev_dbg(dev, "no gpio or recovery state found for GPIO recovery\n");
297 dev_info(dev, "using pinctrl states for GPIO recovery");
308 struct device *dev = &adap->dev;
331 gpiod = devm_gpiod_get(dev, "scl", GPIOD_OUT_HIGH_OPEN_DRAIN);
339 dev_info(dev, "using generic GPIOs for recovery\n");
351 gpiod = devm_gpiod_get(dev, "sda", GPIOD_IN);
419 dev_printk(err_level, &adap->dev, "Not using recovery: %s\n", err_str);
441 static int i2c_device_probe(struct device *dev)
443 struct i2c_client *client = i2c_verify_client(dev);
456 dev_dbg(dev, "Using Host Notify IRQ\n");
458 pm_runtime_get_sync(&client->adapter->dev);
460 } else if (dev->of_node) {
461 irq = of_irq_get_byname(dev->of_node, "irq");
463 irq = of_irq_get(dev->of_node, 0);
464 } else if (ACPI_COMPANION(dev)) {
478 driver = to_i2c_driver(dev->driver);
485 !acpi_driver_match_device(dev, dev->driver) &&
486 !i2c_of_match_device(dev->driver->of_match_table, client)) {
494 wakeirq = of_irq_get_byname(dev->of_node, "wakeup");
500 device_init_wakeup(&client->dev, true);
503 status = dev_pm_set_dedicated_wake_irq(dev, wakeirq);
505 status = dev_pm_set_wake_irq(dev, client->irq);
510 dev_warn(&client->dev, "failed to set up wakeup irq\n");
513 dev_dbg(dev, "probe\n");
515 status = of_clk_set_defaults(dev->of_node, false);
519 status = dev_pm_domain_attach(&client->dev, true);
541 dev_pm_domain_detach(&client->dev, true);
543 dev_pm_clear_wake_irq(&client->dev);
544 device_init_wakeup(&client->dev, false);
547 pm_runtime_put_sync(&client->adapter->dev);
552 static int i2c_device_remove(struct device *dev)
554 struct i2c_client *client = i2c_verify_client(dev);
558 if (!client || !dev->driver)
561 driver = to_i2c_driver(dev->driver);
563 dev_dbg(dev, "remove\n");
567 dev_pm_domain_detach(&client->dev, true);
569 dev_pm_clear_wake_irq(&client->dev);
570 device_init_wakeup(&client->dev, false);
574 pm_runtime_put(&client->adapter->dev);
579 static void i2c_device_shutdown(struct device *dev)
581 struct i2c_client *client = i2c_verify_client(dev);
584 if (!client || !dev->driver)
586 driver = to_i2c_driver(dev->driver);
593 static void i2c_client_dev_release(struct device *dev)
595 kfree(to_i2c_client(dev));
599 name_show(struct device *dev, struct device_attribute *attr, char *buf)
601 return sprintf(buf, "%s\n", dev->type == &i2c_client_type ?
602 to_i2c_client(dev)->name : to_i2c_adapter(dev)->name);
607 modalias_show(struct device *dev, struct device_attribute *attr, char *buf)
609 struct i2c_client *client = to_i2c_client(dev);
612 len = of_device_modalias(dev, buf, PAGE_SIZE);
616 len = acpi_device_modalias(dev, buf, PAGE_SIZE -1);
651 * @dev: device, probably from some driver model iterator
658 struct i2c_client *i2c_verify_client(struct device *dev)
660 return (dev->type == &i2c_client_type)
661 ? to_i2c_client(dev)
719 static int __i2c_check_addr_busy(struct device *dev, void *addrp)
721 struct i2c_client *client = i2c_verify_client(dev);
735 result = device_for_each_child(&adapter->dev, &addr,
745 static int i2c_check_mux_children(struct device *dev, void *addrp)
749 if (dev->type == &i2c_adapter_type)
750 result = device_for_each_child(dev, addrp,
753 result = __i2c_check_addr_busy(dev, addrp);
767 result = device_for_each_child(&adapter->dev, &addr,
813 struct acpi_device *adev = ACPI_COMPANION(&client->dev);
816 dev_set_name(&client->dev, "i2c-%s", info->dev_name);
821 dev_set_name(&client->dev, "i2c-%s", acpi_dev_name(adev));
825 dev_set_name(&client->dev, "%d-%04x", i2c_adapter_id(adap),
883 client->dev.platform_data = info->platform_data;
896 dev_err(&adap->dev, "Invalid %d-bit I2C address 0x%02hx\n",
906 client->dev.parent = &client->adapter->dev;
907 client->dev.bus = &i2c_bus_type;
908 client->dev.type = &i2c_client_type;
909 client->dev.of_node = of_node_get(info->of_node);
910 client->dev.fwnode = info->fwnode;
915 status = device_add_properties(&client->dev, info->properties);
917 dev_err(&adap->dev,
924 status = device_register(&client->dev);
928 dev_dbg(&adap->dev, "client [%s] registered with bus id %s\n",
929 client->name, dev_name(&client->dev));
935 device_remove_properties(&client->dev);
939 dev_err(&adap->dev,
958 if (client->dev.of_node) {
959 of_node_clear_flag(client->dev.of_node, OF_POPULATED);
960 of_node_put(client->dev.of_node);
963 if (ACPI_COMPANION(&client->dev))
964 acpi_device_clear_enumerated(ACPI_COMPANION(&client->dev));
965 device_unregister(&client->dev);
1025 static void devm_i2c_release_dummy(struct device *dev, void *res)
1034 * @dev: device the managed resource is bound to
1042 struct i2c_client *devm_i2c_new_dummy_device(struct device *dev,
1058 devres_add(dev, dr);
1091 struct device_node *np = client->dev.of_node;
1101 dev_dbg(&client->adapter->dev, "Address for %s : 0x%x\n", name, addr);
1110 static void i2c_adapter_dev_release(struct device *dev)
1112 struct i2c_adapter *adap = to_i2c_adapter(dev);
1141 new_device_store(struct device *dev, struct device_attribute *attr,
1144 struct i2c_adapter *adap = to_i2c_adapter(dev);
1154 dev_err(dev, "%s: Missing parameters\n", "new_device");
1158 dev_err(dev, "%s: Invalid device name\n", "new_device");
1166 dev_err(dev, "%s: Can't parse I2C address\n", "new_device");
1170 dev_err(dev, "%s: Extra parameters\n", "new_device");
1192 dev_info(dev, "%s: Instantiated device %s at 0x%02hx\n", "new_device",
1209 delete_device_store(struct device *dev, struct device_attribute *attr,
1212 struct i2c_adapter *adap = to_i2c_adapter(dev);
1221 dev_err(dev, "%s: Can't parse I2C address\n", "delete_device");
1225 dev_err(dev, "%s: Extra parameters\n", "delete_device");
1236 dev_info(dev, "%s: Deleting device %s at 0x%02hx\n",
1248 dev_err(dev, "%s: Can't find device in list\n",
1271 * @dev: device, probably from some driver model iterator
1278 struct i2c_adapter *i2c_verify_adapter(struct device *dev)
1280 return (dev->type == &i2c_adapter_type)
1281 ? to_i2c_adapter(dev)
1298 dev_err(&adapter->dev,
1360 domain = irq_domain_create_linear(adap->dev.parent->fwnode,
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);
1451 pm_runtime_no_callbacks(&adap->dev);
1452 pm_suspend_ignore_children(&adap->dev, true);
1453 pm_runtime_enable(&adap->dev);
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,
1486 device_unregister(&adap->dev);
1531 struct device *dev = &adapter->dev;
1534 if (dev->of_node) {
1535 id = of_alias_get_id(dev->of_node, "i2c");
1596 dev_dbg(&adapter->dev, "Removing %s at 0x%x\n",
1604 static int __unregister_client(struct device *dev, void *dummy)
1606 struct i2c_client *client = i2c_verify_client(dev);
1612 static int __unregister_dummy(struct device *dev, void *dummy)
1614 struct i2c_client *client = i2c_verify_client(dev);
1659 dev_dbg(&adap->dev, "Removing %s at 0x%x\n", client->name,
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);
1694 device_unregister(&adap->dev);
1704 memset(&adap->dev, 0, sizeof(adap->dev));
1708 static void i2c_parse_timing(struct device *dev, char *prop_name, u32 *cur_val_p,
1713 ret = device_property_read_u32(dev, prop_name, cur_val_p);
1717 dev_dbg(dev, "%s: %u\n", prop_name, *cur_val_p);
1722 * @dev: The device to scan for I2C timing properties
1736 void i2c_parse_fw_timings(struct device *dev, struct i2c_timings *t, bool use_defaults)
1741 i2c_parse_timing(dev, "clock-frequency", &t->bus_freq_hz,
1746 i2c_parse_timing(dev, "i2c-scl-rising-time-ns", &t->scl_rise_ns, d, u);
1749 i2c_parse_timing(dev, "i2c-scl-falling-time-ns", &t->scl_fall_ns, d, u);
1751 i2c_parse_timing(dev, "i2c-scl-internal-delay-ns",
1753 i2c_parse_timing(dev, "i2c-sda-falling-time-ns", &t->sda_fall_ns,
1755 i2c_parse_timing(dev, "i2c-sda-hold-time-ns", &t->sda_hold_ns, 0, u);
1756 i2c_parse_timing(dev, "i2c-digital-filter-width-ns",
1758 i2c_parse_timing(dev, "i2c-analog-filter-cutoff-frequency",
1765 int i2c_for_each_dev(void *data, int (*fn)(struct device *dev, void *data))
1777 static int __process_new_driver(struct device *dev, void *data)
1779 if (dev->type != &i2c_adapter_type)
1781 return i2c_do_add_adapter(data, to_i2c_adapter(dev));
1818 static int __process_removed_driver(struct device *dev, void *data)
1820 if (dev->type == &i2c_adapter_type)
1821 i2c_do_del_adapter(data, to_i2c_adapter(dev));
1846 static int i2c_cmd(struct device *dev, void *_arg)
1848 struct i2c_client *client = i2c_verify_client(dev);
1852 if (!client || !client->dev.driver)
1855 driver = to_i2c_driver(client->dev.driver);
1867 device_for_each_child(&adap->dev, &cmd_arg, i2c_cmd);
1946 dev_err_ratelimited(&adap->dev, "adapter quirk: %s (addr 0x%04x, size %u, %s)\n",
2024 dev_dbg(&adap->dev, "I2C level transfers not supported\n");
2221 dev_warn(&adap->dev, "No suitable probing method supported for address 0x%02X\n",
2240 dev_warn(&adapter->dev, "Invalid probe address 0x%02x\n",
2265 dev_err(&adapter->dev,
2273 dev_warn(&adapter->dev,
2279 dev_dbg(&adapter->dev, "Creating %s at 0x%02x\n",
2285 dev_err(&adapter->dev, "Failed creating %s at 0x%02x\n",
2303 dev_dbg(&adapter->dev,
2321 dev_dbg(&adapter->dev,
2355 dev_warn(&adap->dev, "Invalid 7-bit address 0x%02x\n",
2362 dev_dbg(&adap->dev,
2374 dev_dbg(&adap->dev, "Probing failed, no device found\n");
2393 get_device(&adapter->dev);
2410 put_device(&adap->dev);