blob: c22328300dbe9e756c87e6db77907376807d7d81 [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.
// Thin layer that writes/reads to audio registers in the EE_AUDIO block and
// the PDM block.
#pragma once
__BEGIN_CDECLS;
#include <ddk/device.h>
#include <ddk/mmio-buffer.h>
#include <ddk/platform-defs.h>
#include <ddk/protocol/platform/device.h>
#include "a113-audio-regs.h"
typedef struct a113_audio_device {
pdev_protocol_t pdev;
mmio_buffer_t ee_audio_mmio;
mmio_buffer_t pdm_mmio;
zx_handle_t pdm_irq;
zx_handle_t bti;
} a113_audio_device_t;
zx_status_t a113_audio_device_init(a113_audio_device_t* audio_device,
zx_device_t* parent);
uint32_t a113_ee_audio_read(a113_audio_device_t* audio_device, uint32_t reg);
void a113_ee_audio_write(a113_audio_device_t* audio_device, uint32_t reg, uint32_t value);
void a113_ee_audio_update_bits(a113_audio_device_t* audio_device, uint32_t reg,
uint32_t mask, uint32_t value);
uint32_t a113_pdm_read(a113_audio_device_t* audio_device, uint32_t reg);
void a113_pdm_write(a113_audio_device_t* audio_device, uint32_t reg, uint32_t val);
void a113_pdm_update_bits(a113_audio_device_t* audio_device, uint32_t reg,
uint32_t mask, uint32_t val);
__END_CDECLS;