Lines Matching refs:cmd

433 static inline u32 pmcmsptwi_cmd_to_reg(const struct pmcmsptwi_cmd *cmd)  in pmcmsptwi_cmd_to_reg()  argument
435 return ((cmd->type & 0x3) << 8) | in pmcmsptwi_cmd_to_reg()
436 (((cmd->write_len - 1) & 0x7) << 4) | in pmcmsptwi_cmd_to_reg()
437 ((cmd->read_len - 1) & 0x7); in pmcmsptwi_cmd_to_reg()
444 struct pmcmsptwi_cmd *cmd, in pmcmsptwi_xfer_cmd() argument
449 if ((cmd->type == MSP_TWI_CMD_WRITE && cmd->write_len == 0) || in pmcmsptwi_xfer_cmd()
450 (cmd->type == MSP_TWI_CMD_READ && cmd->read_len == 0) || in pmcmsptwi_xfer_cmd()
451 (cmd->type == MSP_TWI_CMD_WRITE_READ && in pmcmsptwi_xfer_cmd()
452 (cmd->read_len == 0 || cmd->write_len == 0))) { in pmcmsptwi_xfer_cmd()
461 "Setting address to 0x%04x\n", cmd->addr); in pmcmsptwi_xfer_cmd()
462 pmcmsptwi_writel(cmd->addr, data->iobase + MSP_TWI_ADD_REG_OFFSET); in pmcmsptwi_xfer_cmd()
464 if (cmd->type == MSP_TWI_CMD_WRITE || in pmcmsptwi_xfer_cmd()
465 cmd->type == MSP_TWI_CMD_WRITE_READ) { in pmcmsptwi_xfer_cmd()
466 u64 tmp = be64_to_cpup((__be64 *)cmd->write_data); in pmcmsptwi_xfer_cmd()
467 tmp >>= (MSP_MAX_BYTES_PER_RW - cmd->write_len) * 8; in pmcmsptwi_xfer_cmd()
471 if (cmd->write_len > 4) in pmcmsptwi_xfer_cmd()
476 retval = pmcmsptwi_do_xfer(pmcmsptwi_cmd_to_reg(cmd), data); in pmcmsptwi_xfer_cmd()
480 if (cmd->type == MSP_TWI_CMD_READ || in pmcmsptwi_xfer_cmd()
481 cmd->type == MSP_TWI_CMD_WRITE_READ) { in pmcmsptwi_xfer_cmd()
483 u64 rmsk = ~(0xffffffffffffffffLL << (cmd->read_len * 8)); in pmcmsptwi_xfer_cmd()
486 if (cmd->read_len > 4) in pmcmsptwi_xfer_cmd()
492 for (i = 0; i < cmd->read_len; i++) in pmcmsptwi_xfer_cmd()
493 cmd->read_data[i] = tmp >> i; in pmcmsptwi_xfer_cmd()
511 struct pmcmsptwi_cmd cmd; in pmcmsptwi_master_xfer() local
518 cmd.type = MSP_TWI_CMD_WRITE_READ; in pmcmsptwi_master_xfer()
519 cmd.write_len = msg->len; in pmcmsptwi_master_xfer()
520 cmd.write_data = msg->buf; in pmcmsptwi_master_xfer()
521 cmd.read_len = nextmsg->len; in pmcmsptwi_master_xfer()
522 cmd.read_data = nextmsg->buf; in pmcmsptwi_master_xfer()
524 cmd.type = MSP_TWI_CMD_READ; in pmcmsptwi_master_xfer()
525 cmd.read_len = msg->len; in pmcmsptwi_master_xfer()
526 cmd.read_data = msg->buf; in pmcmsptwi_master_xfer()
527 cmd.write_len = 0; in pmcmsptwi_master_xfer()
528 cmd.write_data = NULL; in pmcmsptwi_master_xfer()
530 cmd.type = MSP_TWI_CMD_WRITE; in pmcmsptwi_master_xfer()
531 cmd.read_len = 0; in pmcmsptwi_master_xfer()
532 cmd.read_data = NULL; in pmcmsptwi_master_xfer()
533 cmd.write_len = msg->len; in pmcmsptwi_master_xfer()
534 cmd.write_data = msg->buf; in pmcmsptwi_master_xfer()
542 cmd.addr = msg->addr; in pmcmsptwi_master_xfer()
555 ret = pmcmsptwi_xfer_cmd(&cmd, data); in pmcmsptwi_master_xfer()