static void read_reg(char *para) { char count=1; vout_reg_t reg; memcpy(®.addr,parse_para(para+1,&count),sizeof(unsigned int)); if (((*para) == 'm') || ((*para) == 'M')) { amlog_level(LOG_LEVEL_HIGH,"[0x%x] : 0x%x\r\n", CBUS_REG_ADDR(reg.addr), READ_MPEG_REG(reg.addr)); }else if (((*para) == 'p') || ((*para) == 'P')) { if (APB_REG_ADDR_VALID(reg.addr)) amlog_level(LOG_LEVEL_HIGH,"[0x%x] : 0x%x\r\n", APB_REG_ADDR(reg.addr), READ_APB_REG(reg.addr)); }else if (((*para) == 'h') || ((*para) == 'H')) { amlog_level(LOG_LEVEL_HIGH,"[0x%x] : 0x%x\r\n", AHB_REG_ADDR(reg.addr), READ_AHB_REG(reg.addr)); } }
static void write_reg(char *para) { char count=2; vout_reg_t reg; memcpy(®, parse_para(para+1,&count), sizeof(vout_reg_t)); if (((*para) == 'm') || ((*para) == 'M')){ WRITE_MPEG_REG(reg.addr,reg.value); amlog_level(LOG_LEVEL_HIGH,"[0x%x] = 0x%x 0x%x\r\n", CBUS_REG_ADDR(reg.addr), reg.value, READ_MPEG_REG(reg.addr)); } else if (((*para) == 'p') || ((*para) == 'P')) { if (APB_REG_ADDR_VALID(reg.addr)){ WRITE_APB_REG(reg.addr,reg.value); amlog_level(LOG_LEVEL_HIGH,"[0x%x] = 0x%x 0x%x\r\n", APB_REG_ADDR(reg.addr), reg.value, READ_APB_REG(reg.addr)); } } else if (((*para) == 'h') || ((*para) == 'H')) { WRITE_AHB_REG(reg.addr,reg.value); amlog_level(LOG_LEVEL_HIGH,"[0x%x] = 0x%x 0x%x\r\n", AHB_REG_ADDR(reg.addr), reg.value, READ_AHB_REG(reg.addr)); } }
void analog_switch(int flag) { int i; unsigned reg_value = 0; if (flag) { printf("analog on\n"); SET_CBUS_REG_MASK(AM_ANALOG_TOP_REG0, 1 << 1); // set 0x206e bit[1] 1 to power on top analog for (i = 0; i < ANALOG_COUNT; i++) { if (analog_regs[i].enable && (analog_regs[i].set_bits || analog_regs[i].clear_bits)) { if (analog_regs[i].enable == 1) { WRITE_CBUS_REG(analog_regs[i].reg_addr, analog_regs[i].reg_value); } else if (analog_regs[i].enable == 2) { WRITE_APB_REG(analog_regs[i].reg_addr, analog_regs[i].reg_value); } else if (analog_regs[i].enable == 3) { WRITE_AHB_REG(analog_regs[i].reg_addr, analog_regs[i].reg_value); } } } } else { printf("analog off\n"); for (i = 0; i < ANALOG_COUNT; i++) { if (analog_regs[i].enable && (analog_regs[i].set_bits || analog_regs[i].clear_bits)) { if (analog_regs[i].enable == 1) { analog_regs[i].reg_value = READ_CBUS_REG(analog_regs[i].reg_addr); printf("%s(0x%x):0x%x", analog_regs[i].name, CBUS_REG_ADDR(analog_regs[i].reg_addr), analog_regs[i].reg_value); if (analog_regs[i].clear_bits) { CLEAR_CBUS_REG_MASK(analog_regs[i].reg_addr, analog_regs[i].clear_bits); printf(" & ~0x%x", analog_regs[i].clear_bits); } if (analog_regs[i].set_bits) { SET_CBUS_REG_MASK(analog_regs[i].reg_addr, analog_regs[i].set_bits); printf(" | 0x%x", analog_regs[i].set_bits); } reg_value = READ_CBUS_REG(analog_regs[i].reg_addr); printf(" = 0x%x\n", reg_value); } else if (analog_regs[i].enable == 2) { analog_regs[i].reg_value = READ_APB_REG(analog_regs[i].reg_addr); printf("%s(0x%x):0x%x", analog_regs[i].name, APB_REG_ADDR(analog_regs[i].reg_addr), analog_regs[i].reg_value); if (analog_regs[i].clear_bits) { CLEAR_APB_REG_MASK(analog_regs[i].reg_addr, analog_regs[i].clear_bits); printf(" & ~0x%x", analog_regs[i].clear_bits); } if (analog_regs[i].set_bits) { SET_APB_REG_MASK(analog_regs[i].reg_addr, analog_regs[i].set_bits); printf(" | 0x%x", analog_regs[i].set_bits); } reg_value = READ_APB_REG(analog_regs[i].reg_addr); printf(" = 0x%x\n", reg_value); } else if (analog_regs[i].enable == 3) { analog_regs[i].reg_value = READ_AHB_REG(analog_regs[i].reg_addr); printf("%s(0x%x):0x%x", analog_regs[i].name, AHB_REG_ADDR(analog_regs[i].reg_addr), analog_regs[i].reg_value); if (analog_regs[i].clear_bits) { CLEAR_AHB_REG_MASK(analog_regs[i].reg_addr, analog_regs[i].clear_bits); printf(" & ~0x%x", analog_regs[i].clear_bits); } if (analog_regs[i].set_bits) { SET_AHB_REG_MASK(analog_regs[i].reg_addr, analog_regs[i].set_bits); printf(" | 0x%x", analog_regs[i].set_bits); } reg_value = READ_AHB_REG(analog_regs[i].reg_addr); printf(" = 0x%x\n", reg_value); } } } CLEAR_CBUS_REG_MASK(AM_ANALOG_TOP_REG0, 1 << 1); // set 0x206e bit[1] 0 to shutdown top analog } }