Lines Matching refs:client
20 int i2c_slave_register(struct i2c_client *client, i2c_slave_cb_t slave_cb)
24 if (WARN(IS_ERR_OR_NULL(client) || !slave_cb, "insufficient data\n"))
27 if (!(client->flags & I2C_CLIENT_SLAVE))
28 dev_warn(&client->dev, "%s: client slave flag not set. You might see address collisions\n",
31 if (!(client->flags & I2C_CLIENT_TEN)) {
33 ret = i2c_check_7bit_addr_validity_strict(client->addr);
35 dev_err(&client->dev, "%s: invalid address\n", __func__);
40 if (!client->adapter->algo->reg_slave) {
41 dev_err(&client->dev, "%s: not supported by adapter\n", __func__);
45 client->slave_cb = slave_cb;
47 i2c_lock_bus(client->adapter, I2C_LOCK_ROOT_ADAPTER);
48 ret = client->adapter->algo->reg_slave(client);
49 i2c_unlock_bus(client->adapter, I2C_LOCK_ROOT_ADAPTER);
52 client->slave_cb = NULL;
53 dev_err(&client->dev, "%s: adapter returned error %d\n", __func__, ret);
60 int i2c_slave_unregister(struct i2c_client *client)
64 if (IS_ERR_OR_NULL(client))
67 if (!client->adapter->algo->unreg_slave) {
68 dev_err(&client->dev, "%s: not supported by adapter\n", __func__);
72 i2c_lock_bus(client->adapter, I2C_LOCK_ROOT_ADAPTER);
73 ret = client->adapter->algo->unreg_slave(client);
74 i2c_unlock_bus(client->adapter, I2C_LOCK_ROOT_ADAPTER);
77 client->slave_cb = NULL;
79 dev_err(&client->dev, "%s: adapter returned error %d\n", __func__, ret);
85 int i2c_slave_event(struct i2c_client *client,
88 int ret = client->slave_cb(client, event, val);
91 trace_i2c_slave(client, event, val, ret);