1 // Copyright 2017 The Fuchsia Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #pragma once 6 7 #include <zircon/types.h> 8 9 #include "a113-audio-device.h" 10 11 __BEGIN_CDECLS; 12 13 // DDR types. From A113G datasheet. 14 enum ddr_types { 15 LJ_8BITS, 16 LJ_16BITS, 17 RJ_16BITS, 18 LJ_32BITS, 19 RJ_32BITS, 20 }; 21 22 // TODDR sources. From A113G datasheet. 23 enum toddr_src { 24 TDMIN_A, 25 TDMIN_B, 26 TDMIN_C, 27 SPDIFIN, 28 PDMIN, 29 NONE, 30 TDMIN_LB, 31 LOOPBACK, 32 }; 33 34 void a113_audio_register_toddr(a113_audio_device_t* audio_device); 35 void a113_audio_unregister_toddr(a113_audio_device_t* audio_device); 36 37 void a113_toddr_set_buf(a113_audio_device_t* audio_device, uint32_t start, 38 uint32_t end); 39 void a113_toddr_set_intrpt(a113_audio_device_t* audio_device, uint32_t intrpt); 40 void a113_toddr_enable(a113_audio_device_t* audio_device, bool enable); 41 void a113_toddr_select_src(a113_audio_device_t* audio_device, 42 enum toddr_src src); 43 void a113_toddr_set_fifos(a113_audio_device_t* audio_device, uint32_t thresh); 44 void a113_toddr_set_format(a113_audio_device_t* audio_device, uint32_t type, 45 uint32_t msb, uint32_t lsb); 46 47 uint32_t a113_toddr_get_position(a113_audio_device_t* audio_device); 48 uint32_t a113_toddr_get_int_status(a113_audio_device_t* audio_device); 49 50 void a113_toddr_clear_interrupt(a113_audio_device_t* audio_device, 51 uint32_t interrupt_mask); 52 53 __END_CDECLS; 54