519
519
* cpia2_send_command
521
521
*****************************************************************************/
523
#define DIR(cmd) ((cmd->direction == TRANSFER_WRITE) ? "Write" : "Read")
524
#define BINDEX(cmd) (cmd->req_mode & 0x03)
522
526
int cpia2_send_command(struct camera_data *cam, struct cpia2_command *cmd)
531
if (cmd->direction == TRANSFER_WRITE) {
537
block_index = cmd->req_mode & 0x03;
539
533
switch (cmd->req_mode & 0x0c) {
540
534
case CAMERAACCESS_TYPE_RANDOM:
543
537
buffer = (u8 *) & cmd->buffer;
544
538
if (debugs_on & DEBUG_REG)
545
DBG("%s Random: Register block %s\n", dir,
546
block_name[block_index]);
539
DBG("%s Random: Register block %s\n", DIR(cmd),
540
block_name[BINDEX(cmd)]);
548
542
case CAMERAACCESS_TYPE_BLOCK:
549
543
count = cmd->reg_count;
550
544
start = cmd->start;
551
545
buffer = cmd->buffer.block_data;
552
546
if (debugs_on & DEBUG_REG)
553
DBG("%s Block: Register block %s\n", dir,
554
block_name[block_index]);
547
DBG("%s Block: Register block %s\n", DIR(cmd),
548
block_name[BINDEX(cmd)]);
556
550
case CAMERAACCESS_TYPE_MASK:
557
551
count = cmd->reg_count * sizeof(struct cpia2_reg_mask);
559
553
buffer = (u8 *) & cmd->buffer;
560
554
if (debugs_on & DEBUG_REG)
561
DBG("%s Mask: Register block %s\n", dir,
562
block_name[block_index]);
555
DBG("%s Mask: Register block %s\n", DIR(cmd),
556
block_name[BINDEX(cmd)]);
564
558
case CAMERAACCESS_TYPE_REPEAT: /* For patch blocks only */
565
559
count = cmd->reg_count;
566
560
start = cmd->start;
567
561
buffer = cmd->buffer.block_data;
568
562
if (debugs_on & DEBUG_REG)
569
DBG("%s Repeat: Register block %s\n", dir,
570
block_name[block_index]);
563
DBG("%s Repeat: Register block %s\n", DIR(cmd),
564
block_name[BINDEX(cmd)]);
573
567
LOG("%s: invalid request mode\n",__func__);
584
578
for (i = 0; i < cmd->reg_count; i++) {
585
579
if((cmd->req_mode & 0x0c) == CAMERAACCESS_TYPE_BLOCK)
586
580
KINFO("%s Block: [0x%02X] = 0x%02X\n",
587
dir, start + i, buffer[i]);
581
DIR(cmd), start + i, buffer[i]);
588
582
if((cmd->req_mode & 0x0c) == CAMERAACCESS_TYPE_RANDOM)
589
583
KINFO("%s Random: [0x%02X] = 0x%02X\n",
590
dir, cmd->buffer.registers[i].index,
584
DIR(cmd), cmd->buffer.registers[i].index,
591
585
cmd->buffer.registers[i].value);