Lines Matching refs:ljca_i2c
63 static int ljca_i2c_init(struct ljca_i2c_dev *ljca_i2c, u8 id) in ljca_i2c_init() argument
66 (struct ljca_i2c_rw_packet *)ljca_i2c->obuf; in ljca_i2c_init()
73 ret = ljca_transfer(ljca_i2c->ljca, LJCA_I2C_INIT, (u8 *)w_packet, in ljca_i2c_init()
79 static int ljca_i2c_start(struct ljca_i2c_dev *ljca_i2c, u8 target_addr, in ljca_i2c_start() argument
83 (struct ljca_i2c_rw_packet *)ljca_i2c->obuf; in ljca_i2c_start()
85 (struct ljca_i2c_rw_packet *)ljca_i2c->ibuf; in ljca_i2c_start()
89 w_packet->id = ljca_i2c->i2c_info->id; in ljca_i2c_start()
93 ret = ljca_transfer(ljca_i2c->ljca, LJCA_I2C_START, (u8 *)w_packet, in ljca_i2c_start()
101 dev_dbg(&ljca_i2c->adap.dev, in ljca_i2c_start()
110 static void ljca_i2c_stop(struct ljca_i2c_dev *ljca_i2c) in ljca_i2c_stop() argument
113 (struct ljca_i2c_rw_packet *)ljca_i2c->obuf; in ljca_i2c_stop()
115 (struct ljca_i2c_rw_packet *)ljca_i2c->ibuf; in ljca_i2c_stop()
119 w_packet->id = ljca_i2c->i2c_info->id; in ljca_i2c_stop()
123 ret = ljca_transfer(ljca_i2c->ljca, LJCA_I2C_STOP, (u8 *)w_packet, in ljca_i2c_stop()
127 dev_dbg(&ljca_i2c->adap.dev, in ljca_i2c_stop()
135 dev_dbg(&ljca_i2c->adap.dev, in ljca_i2c_stop()
140 static int ljca_i2c_pure_read(struct ljca_i2c_dev *ljca_i2c, u8 *data, u8 len) in ljca_i2c_pure_read() argument
143 (struct ljca_i2c_rw_packet *)ljca_i2c->obuf; in ljca_i2c_pure_read()
145 (struct ljca_i2c_rw_packet *)ljca_i2c->ibuf; in ljca_i2c_pure_read()
149 w_packet->id = ljca_i2c->i2c_info->id; in ljca_i2c_pure_read()
153 ret = ljca_transfer(ljca_i2c->ljca, LJCA_I2C_READ, (u8 *)w_packet, in ljca_i2c_pure_read()
161 dev_dbg(&ljca_i2c->adap.dev, in ljca_i2c_pure_read()
172 static int ljca_i2c_read(struct ljca_i2c_dev *ljca_i2c, u8 target_addr, u8 *data, in ljca_i2c_read() argument
177 ret = ljca_i2c_start(ljca_i2c, target_addr, LJCA_I2C_READ_XFER_TYPE); in ljca_i2c_read()
179 ret = ljca_i2c_pure_read(ljca_i2c, data, len); in ljca_i2c_read()
181 ljca_i2c_stop(ljca_i2c); in ljca_i2c_read()
186 static int ljca_i2c_pure_write(struct ljca_i2c_dev *ljca_i2c, u8 *data, u8 len) in ljca_i2c_pure_write() argument
189 (struct ljca_i2c_rw_packet *)ljca_i2c->obuf; in ljca_i2c_pure_write()
191 (struct ljca_i2c_rw_packet *)ljca_i2c->ibuf; in ljca_i2c_pure_write()
195 w_packet->id = ljca_i2c->i2c_info->id; in ljca_i2c_pure_write()
199 ret = ljca_transfer(ljca_i2c->ljca, LJCA_I2C_WRITE, (u8 *)w_packet, in ljca_i2c_pure_write()
207 dev_dbg(&ljca_i2c->adap.dev, in ljca_i2c_pure_write()
216 static int ljca_i2c_write(struct ljca_i2c_dev *ljca_i2c, u8 target_addr, in ljca_i2c_write() argument
221 ret = ljca_i2c_start(ljca_i2c, target_addr, LJCA_I2C_WRITE_XFER_TYPE); in ljca_i2c_write()
223 ret = ljca_i2c_pure_write(ljca_i2c, data, len); in ljca_i2c_write()
225 ljca_i2c_stop(ljca_i2c); in ljca_i2c_write()
233 struct ljca_i2c_dev *ljca_i2c; in ljca_i2c_xfer() local
237 ljca_i2c = i2c_get_adapdata(adapter); in ljca_i2c_xfer()
238 if (!ljca_i2c) in ljca_i2c_xfer()
244 ret = ljca_i2c_read(ljca_i2c, cur_msg->addr, in ljca_i2c_xfer()
247 ret = ljca_i2c_write(ljca_i2c, cur_msg->addr, in ljca_i2c_xfer()
277 struct ljca_i2c_dev *ljca_i2c; in ljca_i2c_probe() local
280 ljca_i2c = devm_kzalloc(&auxdev->dev, sizeof(*ljca_i2c), GFP_KERNEL); in ljca_i2c_probe()
281 if (!ljca_i2c) in ljca_i2c_probe()
284 ljca_i2c->ljca = ljca; in ljca_i2c_probe()
285 ljca_i2c->i2c_info = dev_get_platdata(&auxdev->dev); in ljca_i2c_probe()
287 ljca_i2c->adap.owner = THIS_MODULE; in ljca_i2c_probe()
288 ljca_i2c->adap.class = I2C_CLASS_HWMON; in ljca_i2c_probe()
289 ljca_i2c->adap.algo = &ljca_i2c_algo; in ljca_i2c_probe()
290 ljca_i2c->adap.quirks = &ljca_i2c_quirks; in ljca_i2c_probe()
291 ljca_i2c->adap.dev.parent = &auxdev->dev; in ljca_i2c_probe()
293 snprintf(ljca_i2c->adap.name, sizeof(ljca_i2c->adap.name), "%s-%s-%d", in ljca_i2c_probe()
295 ljca_i2c->i2c_info->id); in ljca_i2c_probe()
297 device_set_node(&ljca_i2c->adap.dev, dev_fwnode(&auxdev->dev)); in ljca_i2c_probe()
299 i2c_set_adapdata(&ljca_i2c->adap, ljca_i2c); in ljca_i2c_probe()
300 auxiliary_set_drvdata(auxdev, ljca_i2c); in ljca_i2c_probe()
302 ret = ljca_i2c_init(ljca_i2c, ljca_i2c->i2c_info->id); in ljca_i2c_probe()
306 ljca_i2c->i2c_info->id); in ljca_i2c_probe()
308 ret = devm_i2c_add_adapter(&auxdev->dev, &ljca_i2c->adap); in ljca_i2c_probe()
312 if (has_acpi_companion(&ljca_i2c->adap.dev)) in ljca_i2c_probe()
313 acpi_dev_clear_dependencies(ACPI_COMPANION(&ljca_i2c->adap.dev)); in ljca_i2c_probe()
320 struct ljca_i2c_dev *ljca_i2c = auxiliary_get_drvdata(auxdev); in ljca_i2c_remove() local
322 i2c_del_adapter(&ljca_i2c->adap); in ljca_i2c_remove()