Lines Matching refs:cmd
431 static inline u32 pmcmsptwi_cmd_to_reg(const struct pmcmsptwi_cmd *cmd) in pmcmsptwi_cmd_to_reg() argument
433 return ((cmd->type & 0x3) << 8) | in pmcmsptwi_cmd_to_reg()
434 (((cmd->write_len - 1) & 0x7) << 4) | in pmcmsptwi_cmd_to_reg()
435 ((cmd->read_len - 1) & 0x7); in pmcmsptwi_cmd_to_reg()
442 struct pmcmsptwi_cmd *cmd, in pmcmsptwi_xfer_cmd() argument
449 "Setting address to 0x%04x\n", cmd->addr); in pmcmsptwi_xfer_cmd()
450 pmcmsptwi_writel(cmd->addr, data->iobase + MSP_TWI_ADD_REG_OFFSET); in pmcmsptwi_xfer_cmd()
452 if (cmd->type == MSP_TWI_CMD_WRITE || in pmcmsptwi_xfer_cmd()
453 cmd->type == MSP_TWI_CMD_WRITE_READ) { in pmcmsptwi_xfer_cmd()
454 u64 tmp = be64_to_cpup((__be64 *)cmd->write_data); in pmcmsptwi_xfer_cmd()
455 tmp >>= (MSP_MAX_BYTES_PER_RW - cmd->write_len) * 8; in pmcmsptwi_xfer_cmd()
459 if (cmd->write_len > 4) in pmcmsptwi_xfer_cmd()
464 retval = pmcmsptwi_do_xfer(pmcmsptwi_cmd_to_reg(cmd), data); in pmcmsptwi_xfer_cmd()
468 if (cmd->type == MSP_TWI_CMD_READ || in pmcmsptwi_xfer_cmd()
469 cmd->type == MSP_TWI_CMD_WRITE_READ) { in pmcmsptwi_xfer_cmd()
471 u64 rmsk = ~(0xffffffffffffffffLL << (cmd->read_len * 8)); in pmcmsptwi_xfer_cmd()
474 if (cmd->read_len > 4) in pmcmsptwi_xfer_cmd()
480 for (i = 0; i < cmd->read_len; i++) in pmcmsptwi_xfer_cmd()
481 cmd->read_data[i] = tmp >> i; in pmcmsptwi_xfer_cmd()
499 struct pmcmsptwi_cmd cmd; in pmcmsptwi_master_xfer() local
506 cmd.type = MSP_TWI_CMD_WRITE_READ; in pmcmsptwi_master_xfer()
507 cmd.write_len = msg->len; in pmcmsptwi_master_xfer()
508 cmd.write_data = msg->buf; in pmcmsptwi_master_xfer()
509 cmd.read_len = nextmsg->len; in pmcmsptwi_master_xfer()
510 cmd.read_data = nextmsg->buf; in pmcmsptwi_master_xfer()
512 cmd.type = MSP_TWI_CMD_READ; in pmcmsptwi_master_xfer()
513 cmd.read_len = msg->len; in pmcmsptwi_master_xfer()
514 cmd.read_data = msg->buf; in pmcmsptwi_master_xfer()
515 cmd.write_len = 0; in pmcmsptwi_master_xfer()
516 cmd.write_data = NULL; in pmcmsptwi_master_xfer()
518 cmd.type = MSP_TWI_CMD_WRITE; in pmcmsptwi_master_xfer()
519 cmd.read_len = 0; in pmcmsptwi_master_xfer()
520 cmd.read_data = NULL; in pmcmsptwi_master_xfer()
521 cmd.write_len = msg->len; in pmcmsptwi_master_xfer()
522 cmd.write_data = msg->buf; in pmcmsptwi_master_xfer()
525 cmd.addr = msg->addr; in pmcmsptwi_master_xfer()
538 ret = pmcmsptwi_xfer_cmd(&cmd, data); in pmcmsptwi_master_xfer()