void debug_respond() { uint8_t dummy8; uint16_t dummy16; uint8_t spdif_reg; switch (inputBuffer[0]) { case 'd': spdif_dumpRegisters(); break; case 'i': dummy8 = (uint8_t)getparam(0); //spdif_selectChannel(dummy8); selectInputChannel(dummy8); printf("CH#%d\n", dummy8); break; case 's': spdif_reg = (uint8_t)getparam(0); dummy8 = (uint8_t)getparam(1); spdif_write(spdif_reg, dummy8); printf("CS8416:%02x=%02x\n", spdif_reg, dummy8); break; case 'S': decodeAndPrintStatus(); break; case 'r': sound_reset(); break; case 'p': ad1955_write(AD1955_REG00 | _BV(AD1955_R0_POWERDOWN)); break; case 'P': _delay_ms(500); ad1955_write(AD1955_REG00 | 0); // all defaults ad1955_write(AD1955_LEFTVOL | 0b1111111111111100); ad1955_write(AD1955_RIGHTVOL | 0b1111111111111100); _delay_ms(500); break; case 'D': dummy16 = getparam(0); printf("DAC<-%04x", dummy16); ad1955_write(dummy16); break; default: printf("?\n"); break; } _delay_ms(500); }
static void start_DMA(ice1712 *card) { uint16 size = card->buffer_size * MAX_DAC; write_mt_uint8(card, MT_PROF_PB_CONTROL, 0); write_mt_uint32(card, MT_PROF_PB_DMA_BASE_ADDRESS, (uint32)card->phys_addr_pb); write_mt_uint16(card, MT_PROF_PB_DMA_COUNT_ADDRESS, (size * SWAPPING_BUFFERS) - 1); //We want interrupt only from playback write_mt_uint16(card, MT_PROF_PB_DMA_TERM_COUNT, size - 1); TRACE("SIZE DMA PLAYBACK %#x\n", size); size = card->buffer_size * MAX_ADC; write_mt_uint32(card, MT_PROF_REC_DMA_BASE_ADDRESS, (uint32)card->phys_addr_rec); write_mt_uint16(card, MT_PROF_REC_DMA_COUNT_ADDRESS, (size * SWAPPING_BUFFERS) - 1); //We do not want any interrupt from the record write_mt_uint16(card, MT_PROF_REC_DMA_TERM_COUNT, 0); TRACE("SIZE DMA RECORD %#x\n", size); //Enable output AND Input from Analog CODEC switch (card->product) { //TODO: find correct value for all card case ICE1712_SUBDEVICE_DELTA66: case ICE1712_SUBDEVICE_DELTA44: case ICE1712_SUBDEVICE_AUDIOPHILE_2496: case ICE1712_SUBDEVICE_DELTADIO2496: case ICE1712_SUBDEVICE_DELTA410: case ICE1712_SUBDEVICE_DELTA1010LT: case ICE1712_SUBDEVICE_DELTA1010: codec_write(card, AK45xx_CLOCK_FORMAT_REGISTER, 0x69); codec_write(card, AK45xx_RESET_REGISTER, 0x03); break; case ICE1712_SUBDEVICE_VX442: // ak45xx_write_gpio(ice, reg_addr, data, VX442_CODEC_CS_0); // ak45xx_write_gpio(ice, reg_addr, data, VX442_CODEC_CS_1); break; } //Set Data Format for SPDif codec switch (card->product) { //TODO: find correct value for all card case ICE1712_SUBDEVICE_DELTA1010: break; case ICE1712_SUBDEVICE_DELTADIO2496: break; case ICE1712_SUBDEVICE_DELTA66: case ICE1712_SUBDEVICE_DELTA44: // ak45xx_write_gpio(ice, reg_addr, data, DELTA66_CODEC_CS_0); // ak45xx_write_gpio(ice, reg_addr, data, DELTA66_CODEC_CS_1); break; case ICE1712_SUBDEVICE_AUDIOPHILE_2496: spdif_write(card, CS84xx_SERIAL_INPUT_FORMAT_REG, 0x85); spdif_write(card, CS84xx_SERIAL_OUTPUT_FORMAT_REG, 0x85); // spdif_write(card, CS84xx_SERIAL_OUTPUT_FORMAT_REG, 0x41); break; case ICE1712_SUBDEVICE_DELTA410: break; case ICE1712_SUBDEVICE_DELTA1010LT: // ak45xx_write_gpio(ice, reg_addr, data, DELTA1010LT_CODEC_CS_0); // ak45xx_write_gpio(ice, reg_addr, data, DELTA1010LT_CODEC_CS_1); // ak45xx_write_gpio(ice, reg_addr, data, DELTA1010LT_CODEC_CS_2); // ak45xx_write_gpio(ice, reg_addr, data, DELTA1010LT_CODEC_CS_3); break; case ICE1712_SUBDEVICE_VX442: // ak45xx_write_gpio(ice, reg_addr, data, VX442_CODEC_CS_0); // ak45xx_write_gpio(ice, reg_addr, data, VX442_CODEC_CS_1); break; } card->buffer = 1; write_mt_uint8(card, MT_PROF_PB_CONTROL, 5); }