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// Thin layer that writes/reads to audio registers in the EE_AUDIO block and 6// the PDM block. 7 8#pragma once 9 10__BEGIN_CDECLS; 11 12#include <ddk/device.h> 13#include <ddk/mmio-buffer.h> 14#include <ddk/protocol/platform-defs.h> 15#include <ddk/protocol/platform-device.h> 16 17#include "a113-audio-regs.h" 18 19typedef struct a113_audio_device { 20 platform_device_protocol_t pdev; 21 mmio_buffer_t ee_audio_mmio; 22 mmio_buffer_t pdm_mmio; 23 24 zx_handle_t pdm_irq; 25 zx_handle_t bti; 26} a113_audio_device_t; 27 28zx_status_t a113_audio_device_init(a113_audio_device_t* audio_device, 29 zx_device_t* parent); 30 31uint32_t a113_ee_audio_read(a113_audio_device_t* audio_device, uint32_t reg); 32void a113_ee_audio_write(a113_audio_device_t* audio_device, uint32_t reg, uint32_t value); 33void a113_ee_audio_update_bits(a113_audio_device_t* audio_device, uint32_t reg, 34 uint32_t mask, uint32_t value); 35 36uint32_t a113_pdm_read(a113_audio_device_t* audio_device, uint32_t reg); 37void a113_pdm_write(a113_audio_device_t* audio_device, uint32_t reg, uint32_t val); 38void a113_pdm_update_bits(a113_audio_device_t* audio_device, uint32_t reg, 39 uint32_t mask, uint32_t val); 40__END_CDECLS; 41