Lines Matching refs:msg

60 static u8 i2c_smbus_msg_pec(u8 pec, struct i2c_msg *msg)  in i2c_smbus_msg_pec()  argument
63 u8 addr = i2c_8bit_addr_from_msg(msg); in i2c_smbus_msg_pec()
67 return i2c_smbus_pec(pec, msg->buf, msg->len); in i2c_smbus_msg_pec()
71 static inline void i2c_smbus_add_pec(struct i2c_msg *msg) in i2c_smbus_add_pec() argument
73 msg->buf[msg->len] = i2c_smbus_msg_pec(0, msg); in i2c_smbus_add_pec()
74 msg->len++; in i2c_smbus_add_pec()
82 static int i2c_smbus_check_pec(u8 cpec, struct i2c_msg *msg) in i2c_smbus_check_pec() argument
84 u8 rpec = msg->buf[--msg->len]; in i2c_smbus_check_pec()
85 cpec = i2c_smbus_msg_pec(cpec, msg); in i2c_smbus_check_pec()
302 static void i2c_smbus_try_get_dmabuf(struct i2c_msg *msg, u8 init_val) in i2c_smbus_try_get_dmabuf() argument
304 bool is_read = msg->flags & I2C_M_RD; in i2c_smbus_try_get_dmabuf()
311 msg->buf = dma_buf; in i2c_smbus_try_get_dmabuf()
312 msg->flags |= I2C_M_DMA_SAFE; in i2c_smbus_try_get_dmabuf()
315 msg->buf[0] = init_val; in i2c_smbus_try_get_dmabuf()
338 struct i2c_msg msg[2] = { in i2c_smbus_xfer_emulated() local
357 msg[0].len = 0; in i2c_smbus_xfer_emulated()
359 msg[0].flags = flags | (read_write == I2C_SMBUS_READ ? in i2c_smbus_xfer_emulated()
366 msg[0].flags = I2C_M_RD | flags; in i2c_smbus_xfer_emulated()
372 msg[1].len = 1; in i2c_smbus_xfer_emulated()
374 msg[0].len = 2; in i2c_smbus_xfer_emulated()
380 msg[1].len = 2; in i2c_smbus_xfer_emulated()
382 msg[0].len = 3; in i2c_smbus_xfer_emulated()
390 msg[0].len = 3; in i2c_smbus_xfer_emulated()
391 msg[1].len = 2; in i2c_smbus_xfer_emulated()
397 msg[1].flags |= I2C_M_RECV_LEN; in i2c_smbus_xfer_emulated()
398 msg[1].len = 1; /* block length will be added by in i2c_smbus_xfer_emulated()
400 i2c_smbus_try_get_dmabuf(&msg[1], 0); in i2c_smbus_xfer_emulated()
402 msg[0].len = data->block[0] + 2; in i2c_smbus_xfer_emulated()
403 if (msg[0].len > I2C_SMBUS_BLOCK_MAX + 2) { in i2c_smbus_xfer_emulated()
410 i2c_smbus_try_get_dmabuf(&msg[0], command); in i2c_smbus_xfer_emulated()
411 memcpy(msg[0].buf + 1, data->block, msg[0].len - 1); in i2c_smbus_xfer_emulated()
424 msg[0].len = data->block[0] + 2; in i2c_smbus_xfer_emulated()
425 i2c_smbus_try_get_dmabuf(&msg[0], command); in i2c_smbus_xfer_emulated()
426 memcpy(msg[0].buf + 1, data->block, msg[0].len - 1); in i2c_smbus_xfer_emulated()
428 msg[1].flags |= I2C_M_RECV_LEN; in i2c_smbus_xfer_emulated()
429 msg[1].len = 1; /* block length will be added by in i2c_smbus_xfer_emulated()
431 i2c_smbus_try_get_dmabuf(&msg[1], 0); in i2c_smbus_xfer_emulated()
442 msg[1].len = data->block[0]; in i2c_smbus_xfer_emulated()
443 i2c_smbus_try_get_dmabuf(&msg[1], 0); in i2c_smbus_xfer_emulated()
445 msg[0].len = data->block[0] + 1; in i2c_smbus_xfer_emulated()
447 i2c_smbus_try_get_dmabuf(&msg[0], command); in i2c_smbus_xfer_emulated()
448 memcpy(msg[0].buf + 1, data->block + 1, data->block[0]); in i2c_smbus_xfer_emulated()
458 if (!(msg[0].flags & I2C_M_RD)) { in i2c_smbus_xfer_emulated()
460 i2c_smbus_add_pec(&msg[0]); in i2c_smbus_xfer_emulated()
462 partial_pec = i2c_smbus_msg_pec(0, &msg[0]); in i2c_smbus_xfer_emulated()
465 if (msg[nmsgs - 1].flags & I2C_M_RD) in i2c_smbus_xfer_emulated()
466 msg[nmsgs - 1].len++; in i2c_smbus_xfer_emulated()
469 status = __i2c_transfer(adapter, msg, nmsgs); in i2c_smbus_xfer_emulated()
479 if (wants_pec && (msg[nmsgs - 1].flags & I2C_M_RD)) { in i2c_smbus_xfer_emulated()
480 status = i2c_smbus_check_pec(partial_pec, &msg[nmsgs - 1]); in i2c_smbus_xfer_emulated()
498 memcpy(data->block + 1, msg[1].buf, data->block[0]); in i2c_smbus_xfer_emulated()
502 if (msg[1].buf[0] > I2C_SMBUS_BLOCK_MAX) { in i2c_smbus_xfer_emulated()
505 msg[1].buf[0]); in i2c_smbus_xfer_emulated()
509 memcpy(data->block, msg[1].buf, msg[1].buf[0] + 1); in i2c_smbus_xfer_emulated()
514 if (msg[0].flags & I2C_M_DMA_SAFE) in i2c_smbus_xfer_emulated()
515 kfree(msg[0].buf); in i2c_smbus_xfer_emulated()
516 if (msg[1].flags & I2C_M_DMA_SAFE) in i2c_smbus_xfer_emulated()
517 kfree(msg[1].buf); in i2c_smbus_xfer_emulated()