Lines Matching defs:rmi_i2c
62 static int rmi_set_page(struct rmi_i2c_xport *rmi_i2c, u8 page)
64 struct i2c_client *client = rmi_i2c->client;
75 rmi_i2c->page = page;
82 struct rmi_i2c_xport *rmi_i2c =
84 struct i2c_client *client = rmi_i2c->client;
88 mutex_lock(&rmi_i2c->page_mutex);
90 if (!rmi_i2c->tx_buf || rmi_i2c->tx_buf_size < tx_size) {
91 if (rmi_i2c->tx_buf)
92 devm_kfree(&client->dev, rmi_i2c->tx_buf);
93 rmi_i2c->tx_buf_size = tx_size + BUFFER_SIZE_INCREMENT;
94 rmi_i2c->tx_buf = devm_kzalloc(&client->dev,
95 rmi_i2c->tx_buf_size,
97 if (!rmi_i2c->tx_buf) {
98 rmi_i2c->tx_buf_size = 0;
104 rmi_i2c->tx_buf[0] = addr & 0xff;
105 memcpy(rmi_i2c->tx_buf + 1, buf, len);
107 if (RMI_I2C_PAGE(addr) != rmi_i2c->page) {
108 retval = rmi_set_page(rmi_i2c, RMI_I2C_PAGE(addr));
113 retval = i2c_master_send(client, rmi_i2c->tx_buf, tx_size);
124 mutex_unlock(&rmi_i2c->page_mutex);
131 struct rmi_i2c_xport *rmi_i2c =
133 struct i2c_client *client = rmi_i2c->client;
150 mutex_lock(&rmi_i2c->page_mutex);
152 if (RMI_I2C_PAGE(addr) != rmi_i2c->page) {
153 retval = rmi_set_page(rmi_i2c, RMI_I2C_PAGE(addr));
169 mutex_unlock(&rmi_i2c->page_mutex);
188 struct rmi_i2c_xport *rmi_i2c = data;
190 regulator_bulk_disable(ARRAY_SIZE(rmi_i2c->supplies),
191 rmi_i2c->supplies);
196 struct rmi_i2c_xport *rmi_i2c = data;
198 rmi_unregister_transport_device(&rmi_i2c->xport);
206 struct rmi_i2c_xport *rmi_i2c;
209 rmi_i2c = devm_kzalloc(&client->dev, sizeof(struct rmi_i2c_xport),
211 if (!rmi_i2c)
214 pdata = &rmi_i2c->xport.pdata;
230 rmi_i2c->supplies[0].supply = "vdd";
231 rmi_i2c->supplies[1].supply = "vio";
233 ARRAY_SIZE(rmi_i2c->supplies),
234 rmi_i2c->supplies);
238 error = regulator_bulk_enable(ARRAY_SIZE(rmi_i2c->supplies),
239 rmi_i2c->supplies);
245 rmi_i2c);
250 &rmi_i2c->startup_delay);
252 msleep(rmi_i2c->startup_delay);
254 rmi_i2c->client = client;
255 mutex_init(&rmi_i2c->page_mutex);
257 rmi_i2c->xport.dev = &client->dev;
258 rmi_i2c->xport.proto_name = "i2c";
259 rmi_i2c->xport.ops = &rmi_i2c_ops;
261 i2c_set_clientdata(client, rmi_i2c);
267 error = rmi_set_page(rmi_i2c, 0);
275 error = rmi_register_transport_device(&rmi_i2c->xport);
283 rmi_i2c);
293 struct rmi_i2c_xport *rmi_i2c = i2c_get_clientdata(client);
296 ret = rmi_driver_suspend(rmi_i2c->xport.rmi_dev, true);
300 regulator_bulk_disable(ARRAY_SIZE(rmi_i2c->supplies),
301 rmi_i2c->supplies);
309 struct rmi_i2c_xport *rmi_i2c = i2c_get_clientdata(client);
312 ret = regulator_bulk_enable(ARRAY_SIZE(rmi_i2c->supplies),
313 rmi_i2c->supplies);
317 msleep(rmi_i2c->startup_delay);
319 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);