blob: 17bb44c3f68ed9badc2cd4251effbaf1e8d739d7 [file] [log] [blame]
// Copyright 2017 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#pragma once
#include <zircon/types.h>
#include "a113-audio-device.h"
__BEGIN_CDECLS;
// DDR types. From A113G datasheet.
enum ddr_types {
LJ_8BITS,
LJ_16BITS,
RJ_16BITS,
LJ_32BITS,
RJ_32BITS,
};
// TODDR sources. From A113G datasheet.
enum toddr_src {
TDMIN_A,
TDMIN_B,
TDMIN_C,
SPDIFIN,
PDMIN,
NONE,
TDMIN_LB,
LOOPBACK,
};
void a113_audio_register_toddr(a113_audio_device_t* audio_device);
void a113_audio_unregister_toddr(a113_audio_device_t* audio_device);
void a113_toddr_set_buf(a113_audio_device_t* audio_device, uint32_t start,
uint32_t end);
void a113_toddr_set_intrpt(a113_audio_device_t* audio_device, uint32_t intrpt);
void a113_toddr_enable(a113_audio_device_t* audio_device, bool enable);
void a113_toddr_select_src(a113_audio_device_t* audio_device,
enum toddr_src src);
void a113_toddr_set_fifos(a113_audio_device_t* audio_device, uint32_t thresh);
void a113_toddr_set_format(a113_audio_device_t* audio_device, uint32_t type,
uint32_t msb, uint32_t lsb);
uint32_t a113_toddr_get_position(a113_audio_device_t* audio_device);
uint32_t a113_toddr_get_int_status(a113_audio_device_t* audio_device);
void a113_toddr_clear_interrupt(a113_audio_device_t* audio_device,
uint32_t interrupt_mask);
__END_CDECLS;