// 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 typedef struct { uint32_t ctl0; uint32_t ctl1; } aml_tdm_sclk_ctl_t; typedef enum { MCLK_A, MCLK_B, MCLK_C, MCLK_D, MCLK_E, MCLK_F } aml_tdm_mclk_t; typedef enum { TDM_OUT_A, TDM_OUT_B, TDM_OUT_C } aml_tdm_out_t; typedef enum { TDM_IN_A, TDM_IN_B, TDM_IN_C, TDM_IN_LB } aml_tdm_in_t; typedef struct { uint32_t ctl0; uint32_t ctl1; uint32_t start_addr; uint32_t finish_addr; uint32_t int_addr; uint32_t status1; uint32_t status2; uint32_t start_addr_b; uint32_t finish_addr_b; uint32_t reserved[7]; } aml_tdm_toddr_regs_t; typedef struct { uint32_t ctl0; uint32_t ctl1; uint32_t start_addr; uint32_t finish_addr; uint32_t int_addr; uint32_t status1; uint32_t status2; uint32_t start_addr_b; uint32_t finish_addr_b; uint32_t reserved[7]; } aml_tdm_frddr_regs_t; typedef struct { uint32_t ctl; uint32_t swap; uint32_t mask[4]; uint32_t stat; uint32_t mute_val; uint32_t mute[4]; uint32_t reserved[4]; } aml_tdm_tdmin_regs_t; typedef struct { uint32_t ctl0; uint32_t ctl1; uint32_t swap; uint32_t mask[4]; uint32_t stat; uint32_t gain[2]; uint32_t mute_val; uint32_t mute[4]; uint32_t mask_val; } aml_tdm_tdmout_regs_t; typedef volatile struct aml_tdm_regs { uint32_t clk_gate_en; uint32_t mclk_ctl[6]; //mclk control - a,b,c,d,e,f uint32_t reserved0[9]; aml_tdm_sclk_ctl_t sclk_ctl[6]; uint32_t reserved1[4]; uint32_t clk_tdmin_ctl[4]; //tdm in control - a,b,c,lb uint32_t clk_tdmout_ctl[3]; //tdm out control - a,b,c uint32_t clk_spdifin_ctl; uint32_t clk_spdifout_ctl; uint32_t clk_resample_ctl; uint32_t clk_locker_ctl; uint32_t clk_pdmin_ctl0; uint32_t clk_pdmin_ctl1; uint32_t reserved2[19]; aml_tdm_toddr_regs_t toddr[3]; aml_tdm_frddr_regs_t frddr[3]; uint32_t arb_ctl; uint32_t reserved3[15]; uint32_t lb_ctl0; uint32_t lb_ctl1; uint32_t reserved4[14]; aml_tdm_tdmin_regs_t tdmin[4]; uint32_t reserved5[64]; aml_tdm_tdmout_regs_t tdmout[3]; //TODO - still more regs, will add as needed } __PACKED aml_tdm_regs_t;