void audiohw_set_frequency(int fsel) { int reg_val; reg_val = tsc2100_readreg(CONTROL_PAGE2, TSAC1_ADDRESS); reg_val &= ~(0x07<<3); switch(fsel) { case HW_FREQ_8: reg_val |= (0x06<<3); break; case HW_FREQ_11: reg_val |= (0x04<<3); break; case HW_FREQ_22: reg_val |= (0x02<<3); break; case HW_FREQ_44: default: break; } tsc2100_writereg(CONTROL_PAGE2, TSAC1_ADDRESS, reg_val); }
void audiohw_init(void) { short val = tsc2100_readreg(TSAC4_PAGE, TSAC4_ADDRESS); /* disable DAC PGA soft-stepping */ val |= TSAC4_DASTDP; tsc2100_writereg(TSAC4_PAGE, TSAC4_ADDRESS, val); }
static void audiohw_mute(bool mute) { short vol = tsc2100_readreg(TSDACGAIN_PAGE, TSDACGAIN_ADDRESS); /* left mute bit == 1<<15 right mute bit == 1<<7 */ if (mute) { vol |= (1<<15)|(1<<7); } else { vol &= ~((1<<15)|(1<<7)); } is_muted = mute; tsc2100_writereg(TSDACGAIN_PAGE, TSDACGAIN_ADDRESS, vol); }
void tsc2100_read_data(void) { int page = 0, address = 0; unsigned int i; unsigned short command = 0x8000|(page << 11)|(address << 5); unsigned char out[] = {command >> 8, command & 0xff}; unsigned char *p_adc_data=(unsigned char *)&adc_data; adc_status|=tsc2100_readreg(TSSTAT_PAGE, TSSTAT_ADDRESS); spi_block_transfer(SPI_target_TSC2100, out, sizeof(out), (char *)adc_data, sizeof(adc_data)); for(i=0; i<sizeof(adc_data); i+=2) adc_data[i>>1]=(short)(p_adc_data[i]<<8|p_adc_data[i+1]); }
void tsc2100_keyclick(void) { // 1100 0100 0001 0000 //short val = 0xC410; tsc2100_writereg(TSAC2_PAGE, TSAC2_ADDRESS, tsc2100_readreg(TSAC2_PAGE, TSAC2_ADDRESS)&0x8000); }