Lines Matching defs:rmi_i2c
58 static int rmi_set_page(struct rmi_i2c_xport *rmi_i2c, u8 page)
60 struct i2c_client *client = rmi_i2c->client;
71 rmi_i2c->page = page;
78 struct rmi_i2c_xport *rmi_i2c =
80 struct i2c_client *client = rmi_i2c->client;
84 mutex_lock(&rmi_i2c->page_mutex);
86 if (!rmi_i2c->tx_buf || rmi_i2c->tx_buf_size < tx_size) {
87 if (rmi_i2c->tx_buf)
88 devm_kfree(&client->dev, rmi_i2c->tx_buf);
89 rmi_i2c->tx_buf_size = tx_size + BUFFER_SIZE_INCREMENT;
90 rmi_i2c->tx_buf = devm_kzalloc(&client->dev,
91 rmi_i2c->tx_buf_size,
93 if (!rmi_i2c->tx_buf) {
94 rmi_i2c->tx_buf_size = 0;
100 rmi_i2c->tx_buf[0] = addr & 0xff;
101 memcpy(rmi_i2c->tx_buf + 1, buf, len);
103 if (RMI_I2C_PAGE(addr) != rmi_i2c->page) {
104 retval = rmi_set_page(rmi_i2c, RMI_I2C_PAGE(addr));
109 retval = i2c_master_send(client, rmi_i2c->tx_buf, tx_size);
120 mutex_unlock(&rmi_i2c->page_mutex);
127 struct rmi_i2c_xport *rmi_i2c =
129 struct i2c_client *client = rmi_i2c->client;
146 mutex_lock(&rmi_i2c->page_mutex);
148 if (RMI_I2C_PAGE(addr) != rmi_i2c->page) {
149 retval = rmi_set_page(rmi_i2c, RMI_I2C_PAGE(addr));
165 mutex_unlock(&rmi_i2c->page_mutex);
184 struct rmi_i2c_xport *rmi_i2c = data;
186 regulator_bulk_disable(ARRAY_SIZE(rmi_i2c->supplies),
187 rmi_i2c->supplies);
192 struct rmi_i2c_xport *rmi_i2c = data;
194 rmi_unregister_transport_device(&rmi_i2c->xport);
203 struct rmi_i2c_xport *rmi_i2c;
206 rmi_i2c = devm_kzalloc(&client->dev, sizeof(struct rmi_i2c_xport),
208 if (!rmi_i2c)
211 pdata = &rmi_i2c->xport.pdata;
227 rmi_i2c->supplies[0].supply = "vdd";
228 rmi_i2c->supplies[1].supply = "vio";
230 ARRAY_SIZE(rmi_i2c->supplies),
231 rmi_i2c->supplies);
235 error = regulator_bulk_enable(ARRAY_SIZE(rmi_i2c->supplies),
236 rmi_i2c->supplies);
242 rmi_i2c);
247 &rmi_i2c->startup_delay);
249 msleep(rmi_i2c->startup_delay);
251 rmi_i2c->client = client;
252 mutex_init(&rmi_i2c->page_mutex);
254 rmi_i2c->xport.dev = &client->dev;
255 rmi_i2c->xport.proto_name = "i2c";
256 rmi_i2c->xport.ops = &rmi_i2c_ops;
258 i2c_set_clientdata(client, rmi_i2c);
264 error = rmi_set_page(rmi_i2c, 0);
272 error = rmi_register_transport_device(&rmi_i2c->xport);
280 rmi_i2c);
291 struct rmi_i2c_xport *rmi_i2c = i2c_get_clientdata(client);
294 ret = rmi_driver_suspend(rmi_i2c->xport.rmi_dev, true);
298 regulator_bulk_disable(ARRAY_SIZE(rmi_i2c->supplies),
299 rmi_i2c->supplies);
307 struct rmi_i2c_xport *rmi_i2c = i2c_get_clientdata(client);
310 ret = regulator_bulk_enable(ARRAY_SIZE(rmi_i2c->supplies),
311 rmi_i2c->supplies);
315 msleep(rmi_i2c->startup_delay);
317 ret = rmi_driver_resume(rmi_i2c->xport.rmi_dev, true);
329 struct rmi_i2c_xport *rmi_i2c = i2c_get_clientdata(client);
332 ret = rmi_driver_suspend(rmi_i2c->xport.rmi_dev, false);
336 regulator_bulk_disable(ARRAY_SIZE(rmi_i2c->supplies),
337 rmi_i2c->supplies);
345 struct rmi_i2c_xport *rmi_i2c = i2c_get_clientdata(client);
348 ret = regulator_bulk_enable(ARRAY_SIZE(rmi_i2c->supplies),
349 rmi_i2c->supplies);
353 msleep(rmi_i2c->startup_delay);
355 ret = rmi_driver_resume(rmi_i2c->xport.rmi_dev, false);