Lines Matching defs:client
17 int i2c_slave_register(struct i2c_client *client, i2c_slave_cb_t slave_cb)
21 if (WARN(IS_ERR_OR_NULL(client) || !slave_cb, "insufficient data\n"))
24 if (!(client->flags & I2C_CLIENT_SLAVE))
25 dev_warn(&client->dev, "%s: client slave flag not set. You might see address collisions\n",
28 if (!(client->flags & I2C_CLIENT_TEN)) {
30 ret = i2c_check_7bit_addr_validity_strict(client->addr);
32 dev_err(&client->dev, "%s: invalid address\n", __func__);
37 if (!client->adapter->algo->reg_slave) {
38 dev_err(&client->dev, "%s: not supported by adapter\n", __func__);
42 client->slave_cb = slave_cb;
44 i2c_lock_bus(client->adapter, I2C_LOCK_ROOT_ADAPTER);
45 ret = client->adapter->algo->reg_slave(client);
46 i2c_unlock_bus(client->adapter, I2C_LOCK_ROOT_ADAPTER);
49 client->slave_cb = NULL;
50 dev_err(&client->dev, "%s: adapter returned error %d\n", __func__, ret);
57 int i2c_slave_unregister(struct i2c_client *client)
61 if (IS_ERR_OR_NULL(client))
64 if (!client->adapter->algo->unreg_slave) {
65 dev_err(&client->dev, "%s: not supported by adapter\n", __func__);
69 i2c_lock_bus(client->adapter, I2C_LOCK_ROOT_ADAPTER);
70 ret = client->adapter->algo->unreg_slave(client);
71 i2c_unlock_bus(client->adapter, I2C_LOCK_ROOT_ADAPTER);
74 client->slave_cb = NULL;
76 dev_err(&client->dev, "%s: adapter returned error %d\n", __func__, ret);