blob: cc13812cb6e56ede7b9688be25c735e21921c246 [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
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;