Lines Matching refs:rmi_i2c

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