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.
14enum 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.
23enum toddr_src {
24    TDMIN_A,
25    TDMIN_B,
26    TDMIN_C,
27    SPDIFIN,
28    PDMIN,
29    NONE,
30    TDMIN_LB,
31    LOOPBACK,
32};
33
34void a113_audio_register_toddr(a113_audio_device_t* audio_device);
35void a113_audio_unregister_toddr(a113_audio_device_t* audio_device);
36
37void a113_toddr_set_buf(a113_audio_device_t* audio_device, uint32_t start,
38                        uint32_t end);
39void a113_toddr_set_intrpt(a113_audio_device_t* audio_device, uint32_t intrpt);
40void a113_toddr_enable(a113_audio_device_t* audio_device, bool enable);
41void a113_toddr_select_src(a113_audio_device_t* audio_device,
42                           enum toddr_src src);
43void a113_toddr_set_fifos(a113_audio_device_t* audio_device, uint32_t thresh);
44void a113_toddr_set_format(a113_audio_device_t* audio_device, uint32_t type,
45                           uint32_t msb, uint32_t lsb);
46
47uint32_t a113_toddr_get_position(a113_audio_device_t* audio_device);
48uint32_t a113_toddr_get_int_status(a113_audio_device_t* audio_device);
49
50void a113_toddr_clear_interrupt(a113_audio_device_t* audio_device,
51                                uint32_t interrupt_mask);
52
53__END_CDECLS;
54