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