Merge "asoc: bolero: Add support for bolero codec" into audio-drivers.lnx.3.0

This commit is contained in:
Linux Build Service Account 2018-06-06 15:43:40 -07:00 committed by Gerrit - the friendly Code Review server
commit 184c49be26
7 changed files with 3167 additions and 0 deletions

View file

@ -0,0 +1,445 @@
/* Copyright (c) 2018, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include <linux/of_platform.h>
#include <linux/module.h>
#include <linux/io.h>
#include <linux/init.h>
#include <linux/platform_device.h>
#include <linux/printk.h>
#include <linux/delay.h>
#include <linux/kernel.h>
#include "bolero_cdc.h"
#include "internal.h"
static struct snd_soc_codec_driver bolero;
static void bolero_ahb_write_device(char __iomem *io_base,
u16 reg, u8 value)
{
u32 temp = (u32)(value) & 0x000000FF;
iowrite32(temp, io_base + reg);
}
static void bolero_ahb_read_device(char __iomem *io_base,
u16 reg, u8 *value)
{
u32 temp;
temp = ioread32(io_base + reg);
*value = (u8)temp;
}
static int __bolero_reg_read(struct bolero_priv *priv,
u16 macro_id, u16 reg, u8 *val)
{
int ret = -EINVAL;
if (!priv->macro_params[macro_id].mclk_fn) {
dev_dbg_ratelimited(priv->dev,
"%s: mclk_fn not init for macro-id-%d\n",
__func__, macro_id);
return ret;
}
ret = priv->macro_params[macro_id].mclk_fn(
priv->macro_params[macro_id].dev, true);
if (ret) {
dev_dbg_ratelimited(priv->dev,
"%s: clock enable failed\n", __func__);
return ret;
}
bolero_ahb_read_device(
priv->macro_params[macro_id].io_base, reg, val);
priv->macro_params[macro_id].mclk_fn(
priv->macro_params[macro_id].dev, false);
return ret;
}
static int __bolero_reg_write(struct bolero_priv *priv,
u16 macro_id, u16 reg, u8 val)
{
int ret = -EINVAL;
if (!priv->macro_params[macro_id].mclk_fn) {
dev_dbg_ratelimited(priv->dev,
"%s: mclk_fn not init for macro-id-%d\n",
__func__, macro_id);
return ret;
}
ret = priv->macro_params[macro_id].mclk_fn(
priv->macro_params[macro_id].dev, true);
if (ret) {
dev_dbg_ratelimited(priv->dev,
"%s: clock enable failed\n", __func__);
return ret;
}
bolero_ahb_write_device(
priv->macro_params[macro_id].io_base, reg, val);
priv->macro_params[macro_id].mclk_fn(
priv->macro_params[macro_id].dev, false);
return ret;
}
static bool bolero_is_valid_macro_dev(struct device *dev)
{
if (of_device_is_compatible(dev->parent->of_node, "qcom,bolero-codec"))
return true;
return false;
}
static bool bolero_is_valid_codec_dev(struct device *dev)
{
if (of_device_is_compatible(dev->of_node, "qcom,bolero-codec"))
return true;
return false;
}
/**
* bolero_get_device_ptr - Get child or macro device ptr
*
* @dev: bolero device ptr.
* @macro_id: ID of macro calling this API.
*
* Returns dev ptr on success or NULL on error.
*/
struct device *bolero_get_device_ptr(struct device *dev, u16 macro_id)
{
struct bolero_priv *priv;
if (!dev) {
pr_err("%s: dev is null\n", __func__);
return NULL;
}
if (!bolero_is_valid_codec_dev(dev)) {
pr_err("%s: invalid codec\n", __func__);
return NULL;
}
priv = dev_get_drvdata(dev);
if (!priv || (macro_id >= MAX_MACRO)) {
dev_err(dev, "%s: priv is null or invalid macro\n", __func__);
return NULL;
}
return priv->macro_params[macro_id].dev;
}
EXPORT_SYMBOL(bolero_get_device_ptr);
static int bolero_copy_dais_from_macro(struct bolero_priv *priv)
{
struct snd_soc_dai_driver *dai_ptr;
u16 macro_idx;
/* memcpy into bolero_dais all macro dais */
if (!priv->bolero_dais)
priv->bolero_dais = devm_kzalloc(priv->dev,
priv->num_dais *
sizeof(
struct snd_soc_dai_driver),
GFP_KERNEL);
if (!priv->bolero_dais)
return -ENOMEM;
dai_ptr = priv->bolero_dais;
for (macro_idx = START_MACRO; macro_idx < MAX_MACRO; macro_idx++) {
if (priv->macro_params[macro_idx].dai_ptr) {
memcpy(dai_ptr,
priv->macro_params[macro_idx].dai_ptr,
priv->macro_params[macro_idx].num_dais *
sizeof(struct snd_soc_dai_driver));
dai_ptr += priv->macro_params[macro_idx].num_dais;
}
}
return 0;
}
/**
* bolero_register_macro - Registers macro to bolero
*
* @dev: macro device ptr.
* @macro_id: ID of macro calling this API.
* @ops: macro params to register.
*
* Returns 0 on success or -EINVAL on error.
*/
int bolero_register_macro(struct device *dev, u16 macro_id,
struct macro_ops *ops)
{
struct bolero_priv *priv;
int ret = -EINVAL;
if (!dev || !ops) {
pr_err("%s: dev or ops is null\n", __func__);
return -EINVAL;
}
if (!bolero_is_valid_macro_dev(dev)) {
dev_err(dev, "%s: child device for macro:%d not added yet\n",
__func__, macro_id);
return -EINVAL;
}
priv = dev_get_drvdata(dev->parent);
if (!priv || (macro_id >= MAX_MACRO)) {
dev_err(dev, "%s: priv is null or invalid macro\n", __func__);
return -EINVAL;
}
priv->macro_params[macro_id].init = ops->init;
priv->macro_params[macro_id].exit = ops->exit;
priv->macro_params[macro_id].io_base = ops->io_base;
priv->macro_params[macro_id].num_dais = ops->num_dais;
priv->macro_params[macro_id].dai_ptr = ops->dai_ptr;
priv->macro_params[macro_id].mclk_fn = ops->mclk_fn;
priv->macro_params[macro_id].dev = dev;
priv->num_dais += ops->num_dais;
priv->num_macros_registered++;
priv->macros_supported[macro_id] = true;
if (priv->num_macros_registered == priv->child_num) {
ret = bolero_copy_dais_from_macro(priv);
if (ret < 0) {
dev_err(dev, "%s: copy_dais failed\n", __func__);
return ret;
}
ret = snd_soc_register_codec(dev->parent, &bolero,
priv->bolero_dais, priv->num_dais);
if (ret < 0) {
dev_err(dev, "%s: register codec failed\n", __func__);
return ret;
}
}
return 0;
}
EXPORT_SYMBOL(bolero_register_macro);
/**
* bolero_unregister_macro - De-Register macro from bolero
*
* @dev: macro device ptr.
* @macro_id: ID of macro calling this API.
*
*/
void bolero_unregister_macro(struct device *dev, u16 macro_id)
{
struct bolero_priv *priv;
if (!dev) {
pr_err("%s: dev is null\n", __func__);
return;
}
if (!bolero_is_valid_macro_dev(dev)) {
dev_err(dev, "%s: macro:%d not in valid registered macro-list\n",
__func__, macro_id);
return;
}
priv = dev_get_drvdata(dev->parent);
if (!priv || (macro_id >= MAX_MACRO)) {
dev_err(dev, "%s: priv is null or invalid macro\n", __func__);
return;
}
priv->macro_params[macro_id].init = NULL;
priv->macro_params[macro_id].num_dais = 0;
priv->macro_params[macro_id].dai_ptr = NULL;
priv->macro_params[macro_id].mclk_fn = NULL;
priv->macro_params[macro_id].dev = NULL;
priv->num_dais -= priv->macro_params[macro_id].num_dais;
priv->num_macros_registered--;
/* UNREGISTER CODEC HERE */
if (priv->child_num - 1 == priv->num_macros_registered)
snd_soc_unregister_codec(dev->parent);
}
EXPORT_SYMBOL(bolero_unregister_macro);
static int bolero_soc_codec_probe(struct snd_soc_codec *codec)
{
struct bolero_priv *priv = dev_get_drvdata(codec->dev);
int macro_idx, ret = 0;
/* call init for supported macros */
for (macro_idx = START_MACRO; macro_idx < MAX_MACRO; macro_idx++) {
if (priv->macro_params[macro_idx].init) {
ret = priv->macro_params[macro_idx].init(codec);
if (ret < 0) {
dev_err(codec->dev,
"%s: init for macro %d failed\n",
__func__, macro_idx);
goto err;
}
}
}
priv->codec = codec;
dev_dbg(codec->dev, "%s: bolero soc codec probe success\n", __func__);
err:
return ret;
}
static int bolero_soc_codec_remove(struct snd_soc_codec *codec)
{
struct bolero_priv *priv = dev_get_drvdata(codec->dev);
int macro_idx;
/* call exit for supported macros */
for (macro_idx = START_MACRO; macro_idx < MAX_MACRO; macro_idx++)
if (priv->macro_params[macro_idx].exit)
priv->macro_params[macro_idx].exit(codec);
return 0;
}
static struct regmap *bolero_get_regmap(struct device *dev)
{
struct bolero_priv *priv = dev_get_drvdata(dev);
return priv->regmap;
}
static struct snd_soc_codec_driver bolero = {
.probe = bolero_soc_codec_probe,
.remove = bolero_soc_codec_remove,
.get_regmap = bolero_get_regmap,
};
static void bolero_add_child_devices(struct work_struct *work)
{
struct bolero_priv *priv;
struct platform_device *pdev;
struct device_node *node;
int ret, i, cnt = 0;
priv = container_of(work, struct bolero_priv,
bolero_add_child_devices_work);
if (!priv) {
pr_err("%s: Memory for bolero priv does not exist\n",
__func__);
return;
}
if (!priv->dev->of_node) {
dev_err(priv->dev, "%s: DT node for bolero does not exist\n",
__func__);
return;
}
for_each_child_of_node(priv->dev->of_node, node) {
pdev = platform_device_alloc(node->name, -1);
if (!pdev) {
dev_err(priv->dev, "%s: pdev memory alloc failed\n",
__func__);
ret = -ENOMEM;
goto fail_pdev_add;
}
pdev->dev.parent = priv->dev;
pdev->dev.of_node = node;
ret = platform_device_add(pdev);
if (ret) {
dev_err(priv->dev,
"%s: Cannot add platform device\n",
__func__);
goto fail_pdev_add;
}
priv->pdev_child_devices[cnt] = pdev;
cnt++;
}
return;
fail_pdev_add:
for (i = cnt; i > 0; i--)
platform_device_put(priv->pdev_child_devices[i - 1]);
err:
return;
}
static int bolero_probe(struct platform_device *pdev)
{
struct bolero_priv *priv;
u32 num_macros = 0;
int ret;
priv = devm_kzalloc(&pdev->dev, sizeof(struct bolero_priv),
GFP_KERNEL);
if (!priv)
return -ENOMEM;
ret = of_property_read_u32(pdev->dev.of_node, "qcom,num-macros",
&num_macros);
if (ret) {
dev_err(&pdev->dev,
"%s:num-macros property not found\n",
__func__);
return ret;
}
priv->child_num = num_macros;
if (priv->child_num > MAX_MACRO) {
dev_err(&pdev->dev,
"%s:child_num(%d) > MAX_MACRO(%d) than supported\n",
__func__, priv->child_num, MAX_MACRO);
return -EINVAL;
}
priv->va_without_decimation = of_property_read_bool(pdev->dev.of_node,
"qcom,va-without-decimation");
if (priv->va_without_decimation)
bolero_reg_access[VA_MACRO] = bolero_va_top_reg_access;
priv->dev = &pdev->dev;
priv->regmap = bolero_regmap_init(priv->dev,
&bolero_regmap_config);
if (IS_ERR_OR_NULL((void *)(priv->regmap))) {
dev_err(&pdev->dev, "%s:regmap init failed\n", __func__);
return -EINVAL;
}
priv->read_dev = __bolero_reg_read;
priv->write_dev = __bolero_reg_write;
dev_set_drvdata(&pdev->dev, priv);
mutex_init(&priv->io_lock);
INIT_WORK(&priv->bolero_add_child_devices_work,
bolero_add_child_devices);
schedule_work(&priv->bolero_add_child_devices_work);
return 0;
}
static int bolero_remove(struct platform_device *pdev)
{
struct bolero_priv *priv = dev_get_drvdata(&pdev->dev);
u16 i;
for (i = priv->child_num; i > 0; i--)
platform_device_unregister(priv->pdev_child_devices[i - 1]);
mutex_destroy(&priv->io_lock);
return 0;
}
static const struct of_device_id bolero_dt_match[] = {
{.compatible = "qcom,bolero-codec"},
{}
};
MODULE_DEVICE_TABLE(of, bolero_dt_match);
static struct platform_driver bolero_drv = {
.driver = {
.name = "bolero-codec",
.owner = THIS_MODULE,
.of_match_table = bolero_dt_match,
},
.probe = bolero_probe,
.remove = bolero_remove,
};
module_platform_driver(bolero_drv);
MODULE_DESCRIPTION("Bolero driver");
MODULE_LICENSE("GPL v2");

View file

@ -0,0 +1,61 @@
/* Copyright (c) 2018, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#ifndef BOLERO_CDC_H
#define BOLERO_CDC_H
#include <sound/soc.h>
#include <linux/regmap.h>
enum {
START_MACRO,
TX_MACRO = START_MACRO,
RX_MACRO,
WSA_MACRO,
VA_MACRO,
MAX_MACRO
};
struct macro_ops {
int (*init)(struct snd_soc_codec *codec);
int (*exit)(struct snd_soc_codec *codec);
u16 num_dais;
struct device *dev;
struct snd_soc_dai_driver *dai_ptr;
int (*mclk_fn)(struct device *dev, bool enable);
char __iomem *io_base;
};
#if IS_ENABLED(CONFIG_SND_SOC_BOLERO)
int bolero_register_macro(struct device *dev, u16 macro_id,
struct macro_ops *ops);
void bolero_unregister_macro(struct device *dev, u16 macro_id);
struct device *bolero_get_device_ptr(struct device *dev, u16 macro_id);
#else
static inline int bolero_register_macro(struct device *dev,
u16 macro_id,
struct macro_ops *ops)
{
return 0;
}
static inline void bolero_unregister_macro(struct device *dev, u16 macro_id)
{
}
static inline struct device *bolero_get_device_ptr(struct device *dev,
u16 macro_id)
{
return NULL;
}
#endif /* CONFIG_SND_SOC_BOLERO */
#endif /* BOLERO_CDC_H */

View file

@ -0,0 +1,840 @@
/* Copyright (c) 2018, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#ifndef _BOLERO_CDC_REGISTERS_H
#define _BOLERO_CDC_REGISTERS_H
#define TX_START_OFFSET 0x0000
#define BOLERO_CDC_TX_CLK_RST_CTRL_MCLK_CONTROL (TX_START_OFFSET + 0x0000)
#define BOLERO_CDC_TX_CLK_RST_CTRL_FS_CNT_CONTROL (TX_START_OFFSET + 0x0004)
#define BOLERO_CDC_TX_CLK_RST_CTRL_SWR_CONTROL (TX_START_OFFSET + 0x0008)
#define BOLERO_CDC_TX_TOP_CSR_TOP_CFG0 (TX_START_OFFSET + 0x0080)
#define BOLERO_CDC_TX_TOP_CSR_ANC_CFG (TX_START_OFFSET + 0x0084)
#define BOLERO_CDC_TX_TOP_CSR_SWR_CTRL (TX_START_OFFSET + 0x0088)
#define BOLERO_CDC_TX_TOP_CSR_FREQ_MCLK (TX_START_OFFSET + 0x0090)
#define BOLERO_CDC_TX_TOP_CSR_DEBUG_BUS (TX_START_OFFSET + 0x0094)
#define BOLERO_CDC_TX_TOP_CSR_DEBUG_EN (TX_START_OFFSET + 0x0098)
#define BOLERO_CDC_TX_TOP_CSR_TX_I2S_CTL (TX_START_OFFSET + 0x00A4)
#define BOLERO_CDC_TX_TOP_CSR_I2S_CLK (TX_START_OFFSET + 0x00A8)
#define BOLERO_CDC_TX_TOP_CSR_I2S_RESET (TX_START_OFFSET + 0x00AC)
#define BOLERO_CDC_TX_TOP_CSR_SWR_DMIC0_CTL (TX_START_OFFSET + 0x00C0)
#define BOLERO_CDC_TX_TOP_CSR_SWR_DMIC1_CTL (TX_START_OFFSET + 0x00C4)
#define BOLERO_CDC_TX_TOP_CSR_SWR_DMIC2_CTL (TX_START_OFFSET + 0x00C8)
#define BOLERO_CDC_TX_TOP_CSR_SWR_DMIC3_CTL (TX_START_OFFSET + 0x00CC)
#define BOLERO_CDC_TX_TOP_CSR_SWR_AMIC0_CTL (TX_START_OFFSET + 0x00D0)
#define BOLERO_CDC_TX_TOP_CSR_SWR_AMIC1_CTL (TX_START_OFFSET + 0x00D4)
#define BOLERO_CDC_TX_INP_MUX_ADC_MUX0_CFG0 (TX_START_OFFSET + 0x0100)
#define BOLERO_CDC_TX_INP_MUX_ADC_MUX0_CFG1 (TX_START_OFFSET + 0x0104)
#define BOLERO_CDC_TX_INP_MUX_ADC_MUX1_CFG0 (TX_START_OFFSET + 0x0108)
#define BOLERO_CDC_TX_INP_MUX_ADC_MUX1_CFG1 (TX_START_OFFSET + 0x010C)
#define BOLERO_CDC_TX_INP_MUX_ADC_MUX2_CFG0 (TX_START_OFFSET + 0x0110)
#define BOLERO_CDC_TX_INP_MUX_ADC_MUX2_CFG1 (TX_START_OFFSET + 0x0114)
#define BOLERO_CDC_TX_INP_MUX_ADC_MUX3_CFG0 (TX_START_OFFSET + 0x0118)
#define BOLERO_CDC_TX_INP_MUX_ADC_MUX3_CFG1 (TX_START_OFFSET + 0x011C)
#define BOLERO_CDC_TX_INP_MUX_ADC_MUX4_CFG0 (TX_START_OFFSET + 0x0120)
#define BOLERO_CDC_TX_INP_MUX_ADC_MUX4_CFG1 (TX_START_OFFSET + 0x0124)
#define BOLERO_CDC_TX_INP_MUX_ADC_MUX5_CFG0 (TX_START_OFFSET + 0x0128)
#define BOLERO_CDC_TX_INP_MUX_ADC_MUX5_CFG1 (TX_START_OFFSET + 0x012C)
#define BOLERO_CDC_TX_INP_MUX_ADC_MUX6_CFG0 (TX_START_OFFSET + 0x0130)
#define BOLERO_CDC_TX_INP_MUX_ADC_MUX6_CFG1 (TX_START_OFFSET + 0x0134)
#define BOLERO_CDC_TX_INP_MUX_ADC_MUX7_CFG0 (TX_START_OFFSET + 0x0138)
#define BOLERO_CDC_TX_INP_MUX_ADC_MUX7_CFG1 (TX_START_OFFSET + 0x013C)
#define BOLERO_CDC_TX_ANC0_CLK_RESET_CTL (TX_START_OFFSET + 0x0200)
#define BOLERO_CDC_TX_ANC0_MODE_1_CTL (TX_START_OFFSET + 0x0204)
#define BOLERO_CDC_TX_ANC0_MODE_2_CTL (TX_START_OFFSET + 0x0208)
#define BOLERO_CDC_TX_ANC0_FF_SHIFT (TX_START_OFFSET + 0x020C)
#define BOLERO_CDC_TX_ANC0_FB_SHIFT (TX_START_OFFSET + 0x0210)
#define BOLERO_CDC_TX_ANC0_LPF_FF_A_CTL (TX_START_OFFSET + 0x0214)
#define BOLERO_CDC_TX_ANC0_LPF_FF_B_CTL (TX_START_OFFSET + 0x0218)
#define BOLERO_CDC_TX_ANC0_LPF_FB_CTL (TX_START_OFFSET + 0x021C)
#define BOLERO_CDC_TX_ANC0_SMLPF_CTL (TX_START_OFFSET + 0x0220)
#define BOLERO_CDC_TX_ANC0_DCFLT_SHIFT_CTL (TX_START_OFFSET + 0x0224)
#define BOLERO_CDC_TX_ANC0_IIR_ADAPT_CTL (TX_START_OFFSET + 0x0228)
#define BOLERO_CDC_TX_ANC0_IIR_COEFF_1_CTL (TX_START_OFFSET + 0x022C)
#define BOLERO_CDC_TX_ANC0_IIR_COEFF_2_CTL (TX_START_OFFSET + 0x0230)
#define BOLERO_CDC_TX_ANC0_FF_A_GAIN_CTL (TX_START_OFFSET + 0x0234)
#define BOLERO_CDC_TX_ANC0_FF_B_GAIN_CTL (TX_START_OFFSET + 0x0238)
#define BOLERO_CDC_TX_ANC0_FB_GAIN_CTL (TX_START_OFFSET + 0x023C)
#define BOLERO_CDC_TX0_TX_PATH_CTL (TX_START_OFFSET + 0x0400)
#define BOLERO_CDC_TX0_TX_PATH_CFG0 (TX_START_OFFSET + 0x0404)
#define BOLERO_CDC_TX0_TX_PATH_CFG1 (TX_START_OFFSET + 0x0408)
#define BOLERO_CDC_TX0_TX_VOL_CTL (TX_START_OFFSET + 0x040C)
#define BOLERO_CDC_TX0_TX_PATH_SEC0 (TX_START_OFFSET + 0x0410)
#define BOLERO_CDC_TX0_TX_PATH_SEC1 (TX_START_OFFSET + 0x0414)
#define BOLERO_CDC_TX0_TX_PATH_SEC2 (TX_START_OFFSET + 0x0418)
#define BOLERO_CDC_TX0_TX_PATH_SEC3 (TX_START_OFFSET + 0x041C)
#define BOLERO_CDC_TX0_TX_PATH_SEC4 (TX_START_OFFSET + 0x0420)
#define BOLERO_CDC_TX0_TX_PATH_SEC5 (TX_START_OFFSET + 0x0424)
#define BOLERO_CDC_TX0_TX_PATH_SEC6 (TX_START_OFFSET + 0x0428)
#define BOLERO_CDC_TX0_TX_PATH_SEC7 (TX_START_OFFSET + 0x042C)
#define BOLERO_CDC_TX1_TX_PATH_CTL (TX_START_OFFSET + 0x0480)
#define BOLERO_CDC_TX1_TX_PATH_CFG0 (TX_START_OFFSET + 0x0484)
#define BOLERO_CDC_TX1_TX_PATH_CFG1 (TX_START_OFFSET + 0x0488)
#define BOLERO_CDC_TX1_TX_VOL_CTL (TX_START_OFFSET + 0x048C)
#define BOLERO_CDC_TX1_TX_PATH_SEC0 (TX_START_OFFSET + 0x0490)
#define BOLERO_CDC_TX1_TX_PATH_SEC1 (TX_START_OFFSET + 0x0494)
#define BOLERO_CDC_TX1_TX_PATH_SEC2 (TX_START_OFFSET + 0x0498)
#define BOLERO_CDC_TX1_TX_PATH_SEC3 (TX_START_OFFSET + 0x049C)
#define BOLERO_CDC_TX1_TX_PATH_SEC4 (TX_START_OFFSET + 0x04A0)
#define BOLERO_CDC_TX1_TX_PATH_SEC5 (TX_START_OFFSET + 0x04A4)
#define BOLERO_CDC_TX1_TX_PATH_SEC6 (TX_START_OFFSET + 0x04A8)
#define BOLERO_CDC_TX2_TX_PATH_CTL (TX_START_OFFSET + 0x0500)
#define BOLERO_CDC_TX2_TX_PATH_CFG0 (TX_START_OFFSET + 0x0504)
#define BOLERO_CDC_TX2_TX_PATH_CFG1 (TX_START_OFFSET + 0x0508)
#define BOLERO_CDC_TX2_TX_VOL_CTL (TX_START_OFFSET + 0x050C)
#define BOLERO_CDC_TX2_TX_PATH_SEC0 (TX_START_OFFSET + 0x0510)
#define BOLERO_CDC_TX2_TX_PATH_SEC1 (TX_START_OFFSET + 0x0514)
#define BOLERO_CDC_TX2_TX_PATH_SEC2 (TX_START_OFFSET + 0x0518)
#define BOLERO_CDC_TX2_TX_PATH_SEC3 (TX_START_OFFSET + 0x051C)
#define BOLERO_CDC_TX2_TX_PATH_SEC4 (TX_START_OFFSET + 0x0520)
#define BOLERO_CDC_TX2_TX_PATH_SEC5 (TX_START_OFFSET + 0x0524)
#define BOLERO_CDC_TX2_TX_PATH_SEC6 (TX_START_OFFSET + 0x0528)
#define BOLERO_CDC_TX3_TX_PATH_CTL (TX_START_OFFSET + 0x0580)
#define BOLERO_CDC_TX3_TX_PATH_CFG0 (TX_START_OFFSET + 0x0584)
#define BOLERO_CDC_TX3_TX_PATH_CFG1 (TX_START_OFFSET + 0x0588)
#define BOLERO_CDC_TX3_TX_VOL_CTL (TX_START_OFFSET + 0x058C)
#define BOLERO_CDC_TX3_TX_PATH_SEC0 (TX_START_OFFSET + 0x0590)
#define BOLERO_CDC_TX3_TX_PATH_SEC1 (TX_START_OFFSET + 0x0594)
#define BOLERO_CDC_TX3_TX_PATH_SEC2 (TX_START_OFFSET + 0x0598)
#define BOLERO_CDC_TX3_TX_PATH_SEC3 (TX_START_OFFSET + 0x059C)
#define BOLERO_CDC_TX3_TX_PATH_SEC4 (TX_START_OFFSET + 0x05A0)
#define BOLERO_CDC_TX3_TX_PATH_SEC5 (TX_START_OFFSET + 0x05A4)
#define BOLERO_CDC_TX3_TX_PATH_SEC6 (TX_START_OFFSET + 0x05A8)
#define BOLERO_CDC_TX4_TX_PATH_CTL (TX_START_OFFSET + 0x0600)
#define BOLERO_CDC_TX4_TX_PATH_CFG0 (TX_START_OFFSET + 0x0604)
#define BOLERO_CDC_TX4_TX_PATH_CFG1 (TX_START_OFFSET + 0x0608)
#define BOLERO_CDC_TX4_TX_VOL_CTL (TX_START_OFFSET + 0x060C)
#define BOLERO_CDC_TX4_TX_PATH_SEC0 (TX_START_OFFSET + 0x0610)
#define BOLERO_CDC_TX4_TX_PATH_SEC1 (TX_START_OFFSET + 0x0614)
#define BOLERO_CDC_TX4_TX_PATH_SEC2 (TX_START_OFFSET + 0x0618)
#define BOLERO_CDC_TX4_TX_PATH_SEC3 (TX_START_OFFSET + 0x061C)
#define BOLERO_CDC_TX4_TX_PATH_SEC4 (TX_START_OFFSET + 0x0620)
#define BOLERO_CDC_TX4_TX_PATH_SEC5 (TX_START_OFFSET + 0x0624)
#define BOLERO_CDC_TX4_TX_PATH_SEC6 (TX_START_OFFSET + 0x0628)
#define BOLERO_CDC_TX5_TX_PATH_CTL (TX_START_OFFSET + 0x0680)
#define BOLERO_CDC_TX5_TX_PATH_CFG0 (TX_START_OFFSET + 0x0684)
#define BOLERO_CDC_TX5_TX_PATH_CFG1 (TX_START_OFFSET + 0x0688)
#define BOLERO_CDC_TX5_TX_VOL_CTL (TX_START_OFFSET + 0x068C)
#define BOLERO_CDC_TX5_TX_PATH_SEC0 (TX_START_OFFSET + 0x0690)
#define BOLERO_CDC_TX5_TX_PATH_SEC1 (TX_START_OFFSET + 0x0694)
#define BOLERO_CDC_TX5_TX_PATH_SEC2 (TX_START_OFFSET + 0x0698)
#define BOLERO_CDC_TX5_TX_PATH_SEC3 (TX_START_OFFSET + 0x069C)
#define BOLERO_CDC_TX5_TX_PATH_SEC4 (TX_START_OFFSET + 0x06A0)
#define BOLERO_CDC_TX5_TX_PATH_SEC5 (TX_START_OFFSET + 0x06A4)
#define BOLERO_CDC_TX5_TX_PATH_SEC6 (TX_START_OFFSET + 0x06A8)
#define BOLERO_CDC_TX6_TX_PATH_CTL (TX_START_OFFSET + 0x0700)
#define BOLERO_CDC_TX6_TX_PATH_CFG0 (TX_START_OFFSET + 0x0704)
#define BOLERO_CDC_TX6_TX_PATH_CFG1 (TX_START_OFFSET + 0x0708)
#define BOLERO_CDC_TX6_TX_VOL_CTL (TX_START_OFFSET + 0x070C)
#define BOLERO_CDC_TX6_TX_PATH_SEC0 (TX_START_OFFSET + 0x0710)
#define BOLERO_CDC_TX6_TX_PATH_SEC1 (TX_START_OFFSET + 0x0714)
#define BOLERO_CDC_TX6_TX_PATH_SEC2 (TX_START_OFFSET + 0x0718)
#define BOLERO_CDC_TX6_TX_PATH_SEC3 (TX_START_OFFSET + 0x071C)
#define BOLERO_CDC_TX6_TX_PATH_SEC4 (TX_START_OFFSET + 0x0720)
#define BOLERO_CDC_TX6_TX_PATH_SEC5 (TX_START_OFFSET + 0x0724)
#define BOLERO_CDC_TX6_TX_PATH_SEC6 (TX_START_OFFSET + 0x0728)
#define BOLERO_CDC_TX7_TX_PATH_CTL (TX_START_OFFSET + 0x0780)
#define BOLERO_CDC_TX7_TX_PATH_CFG0 (TX_START_OFFSET + 0x0784)
#define BOLERO_CDC_TX7_TX_PATH_CFG1 (TX_START_OFFSET + 0x0788)
#define BOLERO_CDC_TX7_TX_VOL_CTL (TX_START_OFFSET + 0x078C)
#define BOLERO_CDC_TX7_TX_PATH_SEC0 (TX_START_OFFSET + 0x0790)
#define BOLERO_CDC_TX7_TX_PATH_SEC1 (TX_START_OFFSET + 0x0794)
#define BOLERO_CDC_TX7_TX_PATH_SEC2 (TX_START_OFFSET + 0x0798)
#define BOLERO_CDC_TX7_TX_PATH_SEC3 (TX_START_OFFSET + 0x079C)
#define BOLERO_CDC_TX7_TX_PATH_SEC4 (TX_START_OFFSET + 0x07A0)
#define BOLERO_CDC_TX7_TX_PATH_SEC5 (TX_START_OFFSET + 0x07A4)
#define BOLERO_CDC_TX7_TX_PATH_SEC6 (TX_START_OFFSET + 0x07A8)
#define TX_MAX_OFFSET (TX_START_OFFSET + 0x07A8)
#define BOLERO_CDC_TX_MACRO_MAX 0x1EB /* 7A8/4 = 1EA + 1 */
#define RX_START_OFFSET 0x1000
#define BOLERO_CDC_RX_TOP_TOP_CFG0 (RX_START_OFFSET + 0x0000)
#define BOLERO_CDC_RX_TOP_SWR_CTRL (RX_START_OFFSET + 0x0008)
#define BOLERO_CDC_RX_TOP_DEBUG (RX_START_OFFSET + 0x000C)
#define BOLERO_CDC_RX_TOP_DEBUG_BUS (RX_START_OFFSET + 0x0010)
#define BOLERO_CDC_RX_TOP_DEBUG_EN0 (RX_START_OFFSET + 0x0014)
#define BOLERO_CDC_RX_TOP_DEBUG_EN1 (RX_START_OFFSET + 0x0018)
#define BOLERO_CDC_RX_TOP_DEBUG_EN2 (RX_START_OFFSET + 0x001C)
#define BOLERO_CDC_RX_TOP_HPHL_COMP_WR_LSB (RX_START_OFFSET + 0x0020)
#define BOLERO_CDC_RX_TOP_HPHL_COMP_WR_MSB (RX_START_OFFSET + 0x0024)
#define BOLERO_CDC_RX_TOP_HPHL_COMP_LUT (RX_START_OFFSET + 0x0028)
#define BOLERO_CDC_RX_TOP_HPHL_COMP_RD_LSB (RX_START_OFFSET + 0x002C)
#define BOLERO_CDC_RX_TOP_HPHL_COMP_RD_MSB (RX_START_OFFSET + 0x0030)
#define BOLERO_CDC_RX_TOP_HPHR_COMP_WR_LSB (RX_START_OFFSET + 0x0034)
#define BOLERO_CDC_RX_TOP_HPHR_COMP_WR_MSB (RX_START_OFFSET + 0x0038)
#define BOLERO_CDC_RX_TOP_HPHR_COMP_LUT (RX_START_OFFSET + 0x003C)
#define BOLERO_CDC_RX_TOP_HPHR_COMP_RD_LSB (RX_START_OFFSET + 0x0040)
#define BOLERO_CDC_RX_TOP_HPHR_COMP_RD_MSB (RX_START_OFFSET + 0x0044)
#define BOLERO_CDC_RX_TOP_DSD0_DEBUG_CFG0 (RX_START_OFFSET + 0x0070)
#define BOLERO_CDC_RX_TOP_DSD0_DEBUG_CFG1 (RX_START_OFFSET + 0x0074)
#define BOLERO_CDC_RX_TOP_DSD0_DEBUG_CFG2 (RX_START_OFFSET + 0x0078)
#define BOLERO_CDC_RX_TOP_DSD0_DEBUG_CFG3 (RX_START_OFFSET + 0x007C)
#define BOLERO_CDC_RX_TOP_DSD1_DEBUG_CFG0 (RX_START_OFFSET + 0x0080)
#define BOLERO_CDC_RX_TOP_DSD1_DEBUG_CFG1 (RX_START_OFFSET + 0x0084)
#define BOLERO_CDC_RX_TOP_DSD1_DEBUG_CFG2 (RX_START_OFFSET + 0x0088)
#define BOLERO_CDC_RX_TOP_DSD1_DEBUG_CFG3 (RX_START_OFFSET + 0x008C)
#define BOLERO_CDC_RX_TOP_RX_I2S_CTL (RX_START_OFFSET + 0x0090)
#define BOLERO_CDC_RX_TOP_TX_I2S2_CTL (RX_START_OFFSET + 0x0094)
#define BOLERO_CDC_RX_TOP_I2S_CLK (RX_START_OFFSET + 0x0098)
#define BOLERO_CDC_RX_TOP_I2S_RESET (RX_START_OFFSET + 0x009C)
#define BOLERO_CDC_RX_TOP_I2S_MUX (RX_START_OFFSET + 0x00A0)
#define BOLERO_CDC_RX_CLK_RST_CTRL_MCLK_CONTROL (RX_START_OFFSET + 0x0100)
#define BOLERO_CDC_RX_CLK_RST_CTRL_FS_CNT_CONTROL \
(RX_START_OFFSET + 0x0104)
#define BOLERO_CDC_RX_CLK_RST_CTRL_SWR_CONTROL (RX_START_OFFSET + 0x0108)
#define BOLERO_CDC_RX_CLK_RST_CTRL_DSD_CONTROL (RX_START_OFFSET + 0x010C)
#define BOLERO_CDC_RX_CLK_RST_CTRL_ASRC_SHARE_CONTROL \
(RX_START_OFFSET + 0x0110)
#define BOLERO_CDC_RX_SOFTCLIP_CRC (RX_START_OFFSET + 0x0140)
#define BOLERO_CDC_RX_SOFTCLIP_SOFTCLIP_CTRL (RX_START_OFFSET + 0x0144)
#define BOLERO_CDC_RX_INP_MUX_RX_INT0_CFG0 (RX_START_OFFSET + 0x0180)
#define BOLERO_CDC_RX_INP_MUX_RX_INT0_CFG1 (RX_START_OFFSET + 0x0184)
#define BOLERO_CDC_RX_INP_MUX_RX_INT1_CFG0 (RX_START_OFFSET + 0x0188)
#define BOLERO_CDC_RX_INP_MUX_RX_INT1_CFG1 (RX_START_OFFSET + 0x018C)
#define BOLERO_CDC_RX_INP_MUX_RX_INT2_CFG0 (RX_START_OFFSET + 0x0190)
#define BOLERO_CDC_RX_INP_MUX_RX_INT2_CFG1 (RX_START_OFFSET + 0x0194)
#define BOLERO_CDC_RX_INP_MUX_RX_MIX_CFG4 (RX_START_OFFSET + 0x0198)
#define BOLERO_CDC_RX_INP_MUX_RX_MIX_CFG5 (RX_START_OFFSET + 0x019C)
#define BOLERO_CDC_RX_INP_MUX_SIDETONE_SRC_CFG0 (RX_START_OFFSET + 0x01A0)
#define BOLERO_CDC_RX_CLSH_CRC (RX_START_OFFSET + 0x0200)
#define BOLERO_CDC_RX_CLSH_DLY_CTRL (RX_START_OFFSET + 0x0204)
#define BOLERO_CDC_RX_CLSH_DECAY_CTRL (RX_START_OFFSET + 0x0208)
#define BOLERO_CDC_RX_CLSH_HPH_V_PA (RX_START_OFFSET + 0x020C)
#define BOLERO_CDC_RX_CLSH_EAR_V_PA (RX_START_OFFSET + 0x0210)
#define BOLERO_CDC_RX_CLSH_HPH_V_HD (RX_START_OFFSET + 0x0214)
#define BOLERO_CDC_RX_CLSH_EAR_V_HD (RX_START_OFFSET + 0x0218)
#define BOLERO_CDC_RX_CLSH_K1_MSB (RX_START_OFFSET + 0x021C)
#define BOLERO_CDC_RX_CLSH_K1_LSB (RX_START_OFFSET + 0x0220)
#define BOLERO_CDC_RX_CLSH_K2_MSB (RX_START_OFFSET + 0x0224)
#define BOLERO_CDC_RX_CLSH_K2_LSB (RX_START_OFFSET + 0x0228)
#define BOLERO_CDC_RX_CLSH_IDLE_CTRL (RX_START_OFFSET + 0x022C)
#define BOLERO_CDC_RX_CLSH_IDLE_HPH (RX_START_OFFSET + 0x0230)
#define BOLERO_CDC_RX_CLSH_IDLE_EAR (RX_START_OFFSET + 0x0234)
#define BOLERO_CDC_RX_CLSH_TEST0 (RX_START_OFFSET + 0x0238)
#define BOLERO_CDC_RX_CLSH_TEST1 (RX_START_OFFSET + 0x023C)
#define BOLERO_CDC_RX_CLSH_OVR_VREF (RX_START_OFFSET + 0x0240)
#define BOLERO_CDC_RX_CLSH_CLSG_CTL (RX_START_OFFSET + 0x0244)
#define BOLERO_CDC_RX_CLSH_CLSG_CFG1 (RX_START_OFFSET + 0x0248)
#define BOLERO_CDC_RX_CLSH_CLSG_CFG2 (RX_START_OFFSET + 0x024C)
#define BOLERO_CDC_RX_BCL_VBAT_PATH_CTL (RX_START_OFFSET + 0x0280)
#define BOLERO_CDC_RX_BCL_VBAT_CFG (RX_START_OFFSET + 0x0284)
#define BOLERO_CDC_RX_BCL_VBAT_ADC_CAL1 (RX_START_OFFSET + 0x0288)
#define BOLERO_CDC_RX_BCL_VBAT_ADC_CAL2 (RX_START_OFFSET + 0x028C)
#define BOLERO_CDC_RX_BCL_VBAT_ADC_CAL3 (RX_START_OFFSET + 0x0290)
#define BOLERO_CDC_RX_BCL_VBAT_PK_EST1 (RX_START_OFFSET + 0x0294)
#define BOLERO_CDC_RX_BCL_VBAT_PK_EST2 (RX_START_OFFSET + 0x0298)
#define BOLERO_CDC_RX_BCL_VBAT_PK_EST3 (RX_START_OFFSET + 0x029C)
#define BOLERO_CDC_RX_BCL_VBAT_RF_PROC1 (RX_START_OFFSET + 0x02A0)
#define BOLERO_CDC_RX_BCL_VBAT_RF_PROC2 (RX_START_OFFSET + 0x02A4)
#define BOLERO_CDC_RX_BCL_VBAT_TAC1 (RX_START_OFFSET + 0x02A8)
#define BOLERO_CDC_RX_BCL_VBAT_TAC2 (RX_START_OFFSET + 0x02AC)
#define BOLERO_CDC_RX_BCL_VBAT_TAC3 (RX_START_OFFSET + 0x02B0)
#define BOLERO_CDC_RX_BCL_VBAT_TAC4 (RX_START_OFFSET + 0x02B4)
#define BOLERO_CDC_RX_BCL_VBAT_GAIN_UPD1 (RX_START_OFFSET + 0x02B8)
#define BOLERO_CDC_RX_BCL_VBAT_GAIN_UPD2 (RX_START_OFFSET + 0x02BC)
#define BOLERO_CDC_RX_BCL_VBAT_GAIN_UPD3 (RX_START_OFFSET + 0x02C0)
#define BOLERO_CDC_RX_BCL_VBAT_GAIN_UPD4 (RX_START_OFFSET + 0x02C4)
#define BOLERO_CDC_RX_BCL_VBAT_GAIN_UPD5 (RX_START_OFFSET + 0x02C8)
#define BOLERO_CDC_RX_BCL_VBAT_DEBUG1 (RX_START_OFFSET + 0x02CC)
#define BOLERO_CDC_RX_BCL_VBAT_GAIN_UPD_MON (RX_START_OFFSET + 0x02D0)
#define BOLERO_CDC_RX_BCL_VBAT_GAIN_MON_VAL (RX_START_OFFSET + 0x02D4)
#define BOLERO_CDC_RX_BCL_VBAT_BAN (RX_START_OFFSET + 0x02D8)
#define BOLERO_CDC_RX_BCL_VBAT_BCL_GAIN_UPD1 (RX_START_OFFSET + 0x02DC)
#define BOLERO_CDC_RX_BCL_VBAT_BCL_GAIN_UPD2 (RX_START_OFFSET + 0x02E0)
#define BOLERO_CDC_RX_BCL_VBAT_BCL_GAIN_UPD3 (RX_START_OFFSET + 0x02E4)
#define BOLERO_CDC_RX_BCL_VBAT_BCL_GAIN_UPD4 (RX_START_OFFSET + 0x02E8)
#define BOLERO_CDC_RX_BCL_VBAT_BCL_GAIN_UPD5 (RX_START_OFFSET + 0x02EC)
#define BOLERO_CDC_RX_BCL_VBAT_BCL_GAIN_UPD6 (RX_START_OFFSET + 0x02F0)
#define BOLERO_CDC_RX_BCL_VBAT_BCL_GAIN_UPD7 (RX_START_OFFSET + 0x02F4)
#define BOLERO_CDC_RX_BCL_VBAT_BCL_GAIN_UPD8 (RX_START_OFFSET + 0x02F8)
#define BOLERO_CDC_RX_BCL_VBAT_BCL_GAIN_UPD9 (RX_START_OFFSET + 0x02FC)
#define BOLERO_CDC_RX_BCL_VBAT_ATTN1 (RX_START_OFFSET + 0x0300)
#define BOLERO_CDC_RX_BCL_VBAT_ATTN2 (RX_START_OFFSET + 0x0304)
#define BOLERO_CDC_RX_BCL_VBAT_ATTN3 (RX_START_OFFSET + 0x0308)
#define BOLERO_CDC_RX_BCL_VBAT_DECODE_CTL1 (RX_START_OFFSET + 0x030C)
#define BOLERO_CDC_RX_BCL_VBAT_DECODE_CTL2 (RX_START_OFFSET + 0x0310)
#define BOLERO_CDC_RX_BCL_VBAT_DECODE_CFG1 (RX_START_OFFSET + 0x0314)
#define BOLERO_CDC_RX_BCL_VBAT_DECODE_CFG2 (RX_START_OFFSET + 0x0318)
#define BOLERO_CDC_RX_BCL_VBAT_DECODE_CFG3 (RX_START_OFFSET + 0x031C)
#define BOLERO_CDC_RX_BCL_VBAT_DECODE_CFG4 (RX_START_OFFSET + 0x0320)
#define BOLERO_CDC_RX_BCL_VBAT_DECODE_ST (RX_START_OFFSET + 0x0324)
#define BOLERO_CDC_RX_INTR_CTRL_CFG (RX_START_OFFSET + 0x0340)
#define BOLERO_CDC_RX_INTR_CTRL_CLR_COMMIT (RX_START_OFFSET + 0x0344)
#define BOLERO_CDC_RX_INTR_CTRL_PIN1_MASK0 (RX_START_OFFSET + 0x0360)
#define BOLERO_CDC_RX_INTR_CTRL_PIN1_STATUS0 (RX_START_OFFSET + 0x0368)
#define BOLERO_CDC_RX_INTR_CTRL_PIN1_CLEAR0 (RX_START_OFFSET + 0x0370)
#define BOLERO_CDC_RX_INTR_CTRL_PIN2_MASK0 (RX_START_OFFSET + 0x0380)
#define BOLERO_CDC_RX_INTR_CTRL_PIN2_STATUS0 (RX_START_OFFSET + 0x0388)
#define BOLERO_CDC_RX_INTR_CTRL_PIN2_CLEAR0 (RX_START_OFFSET + 0x0390)
#define BOLERO_CDC_RX_INTR_CTRL_LEVEL0 (RX_START_OFFSET + 0x03C0)
#define BOLERO_CDC_RX_INTR_CTRL_BYPASS0 (RX_START_OFFSET + 0x03C8)
#define BOLERO_CDC_RX_INTR_CTRL_SET0 (RX_START_OFFSET + 0x03D0)
#define BOLERO_CDC_RX_RX0_RX_PATH_CTL (RX_START_OFFSET + 0x0400)
#define BOLERO_CDC_RX_RX0_RX_PATH_CFG0 (RX_START_OFFSET + 0x0404)
#define BOLERO_CDC_RX_RX0_RX_PATH_CFG1 (RX_START_OFFSET + 0x0408)
#define BOLERO_CDC_RX_RX0_RX_PATH_CFG2 (RX_START_OFFSET + 0x040C)
#define BOLERO_CDC_RX_RX0_RX_PATH_CFG3 (RX_START_OFFSET + 0x0410)
#define BOLERO_CDC_RX_RX0_RX_VOL_CTL (RX_START_OFFSET + 0x0414)
#define BOLERO_CDC_RX_RX0_RX_PATH_MIX_CTL (RX_START_OFFSET + 0x0418)
#define BOLERO_CDC_RX_RX0_RX_PATH_MIX_CFG (RX_START_OFFSET + 0x041C)
#define BOLERO_CDC_RX_RX0_RX_VOL_MIX_CTL (RX_START_OFFSET + 0x0420)
#define BOLERO_CDC_RX_RX0_RX_PATH_SEC1 (RX_START_OFFSET + 0x0424)
#define BOLERO_CDC_RX_RX0_RX_PATH_SEC2 (RX_START_OFFSET + 0x0428)
#define BOLERO_CDC_RX_RX0_RX_PATH_SEC3 (RX_START_OFFSET + 0x042C)
#define BOLERO_CDC_RX_RX0_RX_PATH_SEC4 (RX_START_OFFSET + 0x0430)
#define BOLERO_CDC_RX_RX0_RX_PATH_SEC7 (RX_START_OFFSET + 0x0434)
#define BOLERO_CDC_RX_RX0_RX_PATH_MIX_SEC0 (RX_START_OFFSET + 0x0438)
#define BOLERO_CDC_RX_RX0_RX_PATH_MIX_SEC1 (RX_START_OFFSET + 0x043C)
#define BOLERO_CDC_RX_RX0_RX_PATH_DSM_CTL (RX_START_OFFSET + 0x0440)
#define BOLERO_CDC_RX_RX0_RX_PATH_DSM_DATA1 (RX_START_OFFSET + 0x0444)
#define BOLERO_CDC_RX_RX0_RX_PATH_DSM_DATA2 (RX_START_OFFSET + 0x0448)
#define BOLERO_CDC_RX_RX0_RX_PATH_DSM_DATA3 (RX_START_OFFSET + 0x044C)
#define BOLERO_CDC_RX_RX0_RX_PATH_DSM_DATA4 (RX_START_OFFSET + 0x0450)
#define BOLERO_CDC_RX_RX0_RX_PATH_DSM_DATA5 (RX_START_OFFSET + 0x0454)
#define BOLERO_CDC_RX_RX0_RX_PATH_DSM_DATA6 (RX_START_OFFSET + 0x0458)
#define BOLERO_CDC_RX_RX1_RX_PATH_CTL (RX_START_OFFSET + 0x0480)
#define BOLERO_CDC_RX_RX1_RX_PATH_CFG0 (RX_START_OFFSET + 0x0484)
#define BOLERO_CDC_RX_RX1_RX_PATH_CFG1 (RX_START_OFFSET + 0x0488)
#define BOLERO_CDC_RX_RX1_RX_PATH_CFG2 (RX_START_OFFSET + 0x048C)
#define BOLERO_CDC_RX_RX1_RX_PATH_CFG3 (RX_START_OFFSET + 0x0490)
#define BOLERO_CDC_RX_RX1_RX_VOL_CTL (RX_START_OFFSET + 0x0494)
#define BOLERO_CDC_RX_RX1_RX_PATH_MIX_CTL (RX_START_OFFSET + 0x0498)
#define BOLERO_CDC_RX_RX1_RX_PATH_MIX_CFG (RX_START_OFFSET + 0x049C)
#define BOLERO_CDC_RX_RX1_RX_VOL_MIX_CTL (RX_START_OFFSET + 0x04A0)
#define BOLERO_CDC_RX_RX1_RX_PATH_SEC1 (RX_START_OFFSET + 0x04A4)
#define BOLERO_CDC_RX_RX1_RX_PATH_SEC2 (RX_START_OFFSET + 0x04A8)
#define BOLERO_CDC_RX_RX1_RX_PATH_SEC3 (RX_START_OFFSET + 0x04AC)
#define BOLERO_CDC_RX_RX1_RX_PATH_SEC4 (RX_START_OFFSET + 0x04B0)
#define BOLERO_CDC_RX_RX1_RX_PATH_SEC7 (RX_START_OFFSET + 0x04B4)
#define BOLERO_CDC_RX_RX1_RX_PATH_MIX_SEC0 (RX_START_OFFSET + 0x04B8)
#define BOLERO_CDC_RX_RX1_RX_PATH_MIX_SEC1 (RX_START_OFFSET + 0x04BC)
#define BOLERO_CDC_RX_RX1_RX_PATH_DSM_CTL (RX_START_OFFSET + 0x04C0)
#define BOLERO_CDC_RX_RX1_RX_PATH_DSM_DATA1 (RX_START_OFFSET + 0x04C4)
#define BOLERO_CDC_RX_RX1_RX_PATH_DSM_DATA2 (RX_START_OFFSET + 0x04C8)
#define BOLERO_CDC_RX_RX1_RX_PATH_DSM_DATA3 (RX_START_OFFSET + 0x04CC)
#define BOLERO_CDC_RX_RX1_RX_PATH_DSM_DATA4 (RX_START_OFFSET + 0x04D0)
#define BOLERO_CDC_RX_RX1_RX_PATH_DSM_DATA5 (RX_START_OFFSET + 0x04D4)
#define BOLERO_CDC_RX_RX1_RX_PATH_DSM_DATA6 (RX_START_OFFSET + 0x04D8)
#define BOLERO_CDC_RX_RX2_RX_PATH_CTL (RX_START_OFFSET + 0x0500)
#define BOLERO_CDC_RX_RX2_RX_PATH_CFG0 (RX_START_OFFSET + 0x0504)
#define BOLERO_CDC_RX_RX2_RX_PATH_CFG1 (RX_START_OFFSET + 0x0508)
#define BOLERO_CDC_RX_RX2_RX_PATH_CFG2 (RX_START_OFFSET + 0x050C)
#define BOLERO_CDC_RX_RX2_RX_PATH_CFG3 (RX_START_OFFSET + 0x0510)
#define BOLERO_CDC_RX_RX2_RX_VOL_CTL (RX_START_OFFSET + 0x0514)
#define BOLERO_CDC_RX_RX2_RX_PATH_MIX_CTL (RX_START_OFFSET + 0x0518)
#define BOLERO_CDC_RX_RX2_RX_PATH_MIX_CFG (RX_START_OFFSET + 0x051C)
#define BOLERO_CDC_RX_RX2_RX_VOL_MIX_CTL (RX_START_OFFSET + 0x0520)
#define BOLERO_CDC_RX_RX2_RX_PATH_SEC0 (RX_START_OFFSET + 0x0524)
#define BOLERO_CDC_RX_RX2_RX_PATH_SEC1 (RX_START_OFFSET + 0x0528)
#define BOLERO_CDC_RX_RX2_RX_PATH_SEC2 (RX_START_OFFSET + 0x052C)
#define BOLERO_CDC_RX_RX2_RX_PATH_SEC3 (RX_START_OFFSET + 0x0530)
#define BOLERO_CDC_RX_RX2_RX_PATH_SEC4 (RX_START_OFFSET + 0x0534)
#define BOLERO_CDC_RX_RX2_RX_PATH_SEC5 (RX_START_OFFSET + 0x0538)
#define BOLERO_CDC_RX_RX2_RX_PATH_SEC6 (RX_START_OFFSET + 0x053C)
#define BOLERO_CDC_RX_RX2_RX_PATH_SEC7 (RX_START_OFFSET + 0x0540)
#define BOLERO_CDC_RX_RX2_RX_PATH_MIX_SEC0 (RX_START_OFFSET + 0x0544)
#define BOLERO_CDC_RX_RX2_RX_PATH_MIX_SEC1 (RX_START_OFFSET + 0x0548)
#define BOLERO_CDC_RX_RX2_RX_PATH_DSM_CTL (RX_START_OFFSET + 0x054C)
#define BOLERO_CDC_RX_IDLE_DETECT_PATH_CTL (RX_START_OFFSET + 0x0780)
#define BOLERO_CDC_RX_IDLE_DETECT_CFG0 (RX_START_OFFSET + 0x0784)
#define BOLERO_CDC_RX_IDLE_DETECT_CFG1 (RX_START_OFFSET + 0x0788)
#define BOLERO_CDC_RX_IDLE_DETECT_CFG2 (RX_START_OFFSET + 0x078C)
#define BOLERO_CDC_RX_IDLE_DETECT_CFG3 (RX_START_OFFSET + 0x0790)
#define BOLERO_CDC_RX_COMPANDER0_CTL0 (RX_START_OFFSET + 0x0800)
#define BOLERO_CDC_RX_COMPANDER0_CTL1 (RX_START_OFFSET + 0x0804)
#define BOLERO_CDC_RX_COMPANDER0_CTL2 (RX_START_OFFSET + 0x0808)
#define BOLERO_CDC_RX_COMPANDER0_CTL3 (RX_START_OFFSET + 0x080C)
#define BOLERO_CDC_RX_COMPANDER0_CTL4 (RX_START_OFFSET + 0x0810)
#define BOLERO_CDC_RX_COMPANDER0_CTL5 (RX_START_OFFSET + 0x0814)
#define BOLERO_CDC_RX_COMPANDER0_CTL6 (RX_START_OFFSET + 0x0818)
#define BOLERO_CDC_RX_COMPANDER0_CTL7 (RX_START_OFFSET + 0x081C)
#define BOLERO_CDC_RX_COMPANDER1_CTL0 (RX_START_OFFSET + 0x0840)
#define BOLERO_CDC_RX_COMPANDER1_CTL1 (RX_START_OFFSET + 0x0844)
#define BOLERO_CDC_RX_COMPANDER1_CTL2 (RX_START_OFFSET + 0x0848)
#define BOLERO_CDC_RX_COMPANDER1_CTL3 (RX_START_OFFSET + 0x084C)
#define BOLERO_CDC_RX_COMPANDER1_CTL4 (RX_START_OFFSET + 0x0850)
#define BOLERO_CDC_RX_COMPANDER1_CTL5 (RX_START_OFFSET + 0x0854)
#define BOLERO_CDC_RX_COMPANDER1_CTL6 (RX_START_OFFSET + 0x0858)
#define BOLERO_CDC_RX_COMPANDER1_CTL7 (RX_START_OFFSET + 0x085C)
#define BOLERO_CDC_RX_SIDETONE_IIR0_IIR_PATH_CTL \
(RX_START_OFFSET + 0x0A00)
#define BOLERO_CDC_RX_SIDETONE_IIR0_IIR_GAIN_B1_CTL \
(RX_START_OFFSET + 0x0A04)
#define BOLERO_CDC_RX_SIDETONE_IIR0_IIR_GAIN_B2_CTL \
(RX_START_OFFSET + 0x0A08)
#define BOLERO_CDC_RX_SIDETONE_IIR0_IIR_GAIN_B3_CTL \
(RX_START_OFFSET + 0x0A0C)
#define BOLERO_CDC_RX_SIDETONE_IIR0_IIR_GAIN_B4_CTL \
(RX_START_OFFSET + 0x0A10)
#define BOLERO_CDC_RX_SIDETONE_IIR0_IIR_GAIN_B5_CTL \
(RX_START_OFFSET + 0x0A14)
#define BOLERO_CDC_RX_SIDETONE_IIR0_IIR_GAIN_B6_CTL \
(RX_START_OFFSET + 0x0A18)
#define BOLERO_CDC_RX_SIDETONE_IIR0_IIR_GAIN_B7_CTL \
(RX_START_OFFSET + 0x0A1C)
#define BOLERO_CDC_RX_SIDETONE_IIR0_IIR_GAIN_B8_CTL \
(RX_START_OFFSET + 0x0A20)
#define BOLERO_CDC_RX_SIDETONE_IIR0_IIR_CTL (RX_START_OFFSET + 0x0A24)
#define BOLERO_CDC_RX_SIDETONE_IIR0_IIR_GAIN_TIMER_CTL \
(RX_START_OFFSET + 0x0A28)
#define BOLERO_CDC_RX_SIDETONE_IIR0_IIR_COEF_B1_CTL \
(RX_START_OFFSET + 0x0A2C)
#define BOLERO_CDC_RX_SIDETONE_IIR0_IIR_COEF_B2_CTL \
(RX_START_OFFSET + 0x0A30)
#define BOLERO_CDC_RX_SIDETONE_IIR1_IIR_PATH_CTL \
(RX_START_OFFSET + 0x0A80)
#define BOLERO_CDC_RX_SIDETONE_IIR1_IIR_GAIN_B1_CTL \
(RX_START_OFFSET + 0x0A84)
#define BOLERO_CDC_RX_SIDETONE_IIR1_IIR_GAIN_B2_CTL \
(RX_START_OFFSET + 0x0A88)
#define BOLERO_CDC_RX_SIDETONE_IIR1_IIR_GAIN_B3_CTL \
(RX_START_OFFSET + 0x0A8C)
#define BOLERO_CDC_RX_SIDETONE_IIR1_IIR_GAIN_B4_CTL \
(RX_START_OFFSET + 0x0A90)
#define BOLERO_CDC_RX_SIDETONE_IIR1_IIR_GAIN_B5_CTL \
(RX_START_OFFSET + 0x0A94)
#define BOLERO_CDC_RX_SIDETONE_IIR1_IIR_GAIN_B6_CTL \
(RX_START_OFFSET + 0x0A98)
#define BOLERO_CDC_RX_SIDETONE_IIR1_IIR_GAIN_B7_CTL \
(RX_START_OFFSET + 0x0A9C)
#define BOLERO_CDC_RX_SIDETONE_IIR1_IIR_GAIN_B8_CTL \
(RX_START_OFFSET + 0x0AA0)
#define BOLERO_CDC_RX_SIDETONE_IIR1_IIR_CTL (RX_START_OFFSET + 0x0AA4)
#define BOLERO_CDC_RX_SIDETONE_IIR1_IIR_GAIN_TIMER_CTL \
(RX_START_OFFSET + 0x0AA8)
#define BOLERO_CDC_RX_SIDETONE_IIR1_IIR_COEF_B1_CTL \
(RX_START_OFFSET + 0x0AAC)
#define BOLERO_CDC_RX_SIDETONE_IIR1_IIR_COEF_B2_CTL \
(RX_START_OFFSET + 0x0AB0)
#define BOLERO_CDC_RX_IIR_INP_MUX_IIR0_MIX_CFG0 (RX_START_OFFSET + 0x0B00)
#define BOLERO_CDC_RX_IIR_INP_MUX_IIR0_MIX_CFG1 (RX_START_OFFSET + 0x0B04)
#define BOLERO_CDC_RX_IIR_INP_MUX_IIR0_MIX_CFG2 (RX_START_OFFSET + 0x0B08)
#define BOLERO_CDC_RX_IIR_INP_MUX_IIR0_MIX_CFG3 (RX_START_OFFSET + 0x0B0C)
#define BOLERO_CDC_RX_IIR_INP_MUX_IIR1_MIX_CFG0 (RX_START_OFFSET + 0x0B10)
#define BOLERO_CDC_RX_IIR_INP_MUX_IIR1_MIX_CFG1 (RX_START_OFFSET + 0x0B14)
#define BOLERO_CDC_RX_IIR_INP_MUX_IIR1_MIX_CFG2 (RX_START_OFFSET + 0x0B18)
#define BOLERO_CDC_RX_IIR_INP_MUX_IIR1_MIX_CFG3 (RX_START_OFFSET + 0x0B1C)
#define BOLERO_CDC_RX_SIDETONE_SRC0_ST_SRC_PATH_CTL \
(RX_START_OFFSET + 0x0B40)
#define BOLERO_CDC_RX_SIDETONE_SRC0_ST_SRC_PATH_CFG1 \
(RX_START_OFFSET + 0x0B44)
#define BOLERO_CDC_RX_SIDETONE_SRC1_ST_SRC_PATH_CTL \
(RX_START_OFFSET + 0x0B50)
#define BOLERO_CDC_RX_SIDETONE_SRC1_ST_SRC_PATH_CFG1 \
(RX_START_OFFSET + 0x0B54)
#define BOLERO_CDC_RX_EC_REF_HQ0_EC_REF_HQ_PATH_CTL \
(RX_START_OFFSET + 0x0C00)
#define BOLERO_CDC_RX_EC_REF_HQ0_EC_REF_HQ_CFG0 (RX_START_OFFSET + 0x0C04)
#define BOLERO_CDC_RX_EC_REF_HQ1_EC_REF_HQ_PATH_CTL \
(RX_START_OFFSET + 0x0C40)
#define BOLERO_CDC_RX_EC_REF_HQ1_EC_REF_HQ_CFG0 (RX_START_OFFSET + 0x0C44)
#define BOLERO_CDC_RX_EC_REF_HQ2_EC_REF_HQ_PATH_CTL \
(RX_START_OFFSET + 0x0C80)
#define BOLERO_CDC_RX_EC_REF_HQ2_EC_REF_HQ_CFG0 (RX_START_OFFSET + 0x0C84)
#define BOLERO_CDC_RX_EC_ASRC0_CLK_RST_CTL (RX_START_OFFSET + 0x0D00)
#define BOLERO_CDC_RX_EC_ASRC0_CTL0 (RX_START_OFFSET + 0x0D04)
#define BOLERO_CDC_RX_EC_ASRC0_CTL1 (RX_START_OFFSET + 0x0D08)
#define BOLERO_CDC_RX_EC_ASRC0_FIFO_CTL (RX_START_OFFSET + 0x0D0C)
#define BOLERO_CDC_RX_EC_ASRC0_STATUS_FMIN_CNTR_LSB \
(RX_START_OFFSET + 0x0D10)
#define BOLERO_CDC_RX_EC_ASRC0_STATUS_FMIN_CNTR_MSB \
(RX_START_OFFSET + 0x0D14)
#define BOLERO_CDC_RX_EC_ASRC0_STATUS_FMAX_CNTR_LSB \
(RX_START_OFFSET + 0x0D18)
#define BOLERO_CDC_RX_EC_ASRC0_STATUS_FMAX_CNTR_MSB \
(RX_START_OFFSET + 0x0D1C)
#define BOLERO_CDC_RX_EC_ASRC0_STATUS_FIFO (RX_START_OFFSET + 0x0D20)
#define BOLERO_CDC_RX_EC_ASRC1_CLK_RST_CTL (RX_START_OFFSET + 0x0D40)
#define BOLERO_CDC_RX_EC_ASRC1_CTL0 (RX_START_OFFSET + 0x0D44)
#define BOLERO_CDC_RX_EC_ASRC1_CTL1 (RX_START_OFFSET + 0x0D48)
#define BOLERO_CDC_RX_EC_ASRC1_FIFO_CTL (RX_START_OFFSET + 0x0D4C)
#define BOLERO_CDC_RX_EC_ASRC1_STATUS_FMIN_CNTR_LSB \
(RX_START_OFFSET + 0x0D50)
#define BOLERO_CDC_RX_EC_ASRC1_STATUS_FMIN_CNTR_MSB \
(RX_START_OFFSET + 0x0D54)
#define BOLERO_CDC_RX_EC_ASRC1_STATUS_FMAX_CNTR_LSB \
(RX_START_OFFSET + 0x0D58)
#define BOLERO_CDC_RX_EC_ASRC1_STATUS_FMAX_CNTR_MSB \
(RX_START_OFFSET + 0x0D5C)
#define BOLERO_CDC_RX_EC_ASRC1_STATUS_FIFO (RX_START_OFFSET + 0x0D60)
#define BOLERO_CDC_RX_EC_ASRC2_CLK_RST_CTL (RX_START_OFFSET + 0x0D80)
#define BOLERO_CDC_RX_EC_ASRC2_CTL0 (RX_START_OFFSET + 0x0D84)
#define BOLERO_CDC_RX_EC_ASRC2_CTL1 (RX_START_OFFSET + 0x0D88)
#define BOLERO_CDC_RX_EC_ASRC2_FIFO_CTL (RX_START_OFFSET + 0x0D8C)
#define BOLERO_CDC_RX_EC_ASRC2_STATUS_FMIN_CNTR_LSB \
(RX_START_OFFSET + 0x0D90)
#define BOLERO_CDC_RX_EC_ASRC2_STATUS_FMIN_CNTR_MSB \
(RX_START_OFFSET + 0x0D94)
#define BOLERO_CDC_RX_EC_ASRC2_STATUS_FMAX_CNTR_LSB \
(RX_START_OFFSET + 0x0D98)
#define BOLERO_CDC_RX_EC_ASRC2_STATUS_FMAX_CNTR_MSB \
(RX_START_OFFSET + 0x0D9C)
#define BOLERO_CDC_RX_EC_ASRC2_STATUS_FIFO (RX_START_OFFSET + 0x0DA0)
#define BOLERO_CDC_RX_DSD0_PATH_CTL (RX_START_OFFSET + 0x0F00)
#define BOLERO_CDC_RX_DSD0_CFG0 (RX_START_OFFSET + 0x0F04)
#define BOLERO_CDC_RX_DSD0_CFG1 (RX_START_OFFSET + 0x0F08)
#define BOLERO_CDC_RX_DSD0_CFG2 (RX_START_OFFSET + 0x0F0C)
#define BOLERO_CDC_RX_DSD1_PATH_CTL (RX_START_OFFSET + 0x0F80)
#define BOLERO_CDC_RX_DSD1_CFG0 (RX_START_OFFSET + 0x0F84)
#define BOLERO_CDC_RX_DSD1_CFG1 (RX_START_OFFSET + 0x0F88)
#define BOLERO_CDC_RX_DSD1_CFG2 (RX_START_OFFSET + 0x0F8C)
#define RX_MAX_OFFSET (RX_START_OFFSET + 0x0F8C)
#define BOLERO_CDC_RX_MACRO_MAX 0x3E4 /* F8C/4 = 3E3 + 1 */
/* WSA - macro#2 */
#define WSA_START_OFFSET 0x2000
#define BOLERO_CDC_WSA_CLK_RST_CTRL_MCLK_CONTROL \
(WSA_START_OFFSET + 0x0000)
#define BOLERO_CDC_WSA_CLK_RST_CTRL_FS_CNT_CONTROL \
(WSA_START_OFFSET + 0x0004)
#define BOLERO_CDC_WSA_CLK_RST_CTRL_SWR_CONTROL (WSA_START_OFFSET + 0x0008)
#define BOLERO_CDC_WSA_TOP_TOP_CFG0 (WSA_START_OFFSET + 0x0080)
#define BOLERO_CDC_WSA_TOP_TOP_CFG1 (WSA_START_OFFSET + 0x0084)
#define BOLERO_CDC_WSA_TOP_FREQ_MCLK (WSA_START_OFFSET + 0x0088)
#define BOLERO_CDC_WSA_TOP_DEBUG_BUS_SEL (WSA_START_OFFSET + 0x008C)
#define BOLERO_CDC_WSA_TOP_DEBUG_EN0 (WSA_START_OFFSET + 0x0090)
#define BOLERO_CDC_WSA_TOP_DEBUG_EN1 (WSA_START_OFFSET + 0x0094)
#define BOLERO_CDC_WSA_TOP_DEBUG_DSM_LB (WSA_START_OFFSET + 0x0098)
#define BOLERO_CDC_WSA_TOP_RX_I2S_CTL (WSA_START_OFFSET + 0x009C)
#define BOLERO_CDC_WSA_TOP_TX_I2S_CTL (WSA_START_OFFSET + 0x00A0)
#define BOLERO_CDC_WSA_TOP_I2S_CLK (WSA_START_OFFSET + 0x00A4)
#define BOLERO_CDC_WSA_TOP_I2S_RESET (WSA_START_OFFSET + 0x00A8)
#define BOLERO_CDC_WSA_RX_INP_MUX_RX_INT0_CFG0 (WSA_START_OFFSET + 0x0100)
#define BOLERO_CDC_WSA_RX_INP_MUX_RX_INT0_CFG1 (WSA_START_OFFSET + 0x0104)
#define BOLERO_CDC_WSA_RX_INP_MUX_RX_INT1_CFG0 (WSA_START_OFFSET + 0x0108)
#define BOLERO_CDC_WSA_RX_INP_MUX_RX_INT1_CFG1 (WSA_START_OFFSET + 0x010C)
#define BOLERO_CDC_WSA_RX_INP_MUX_RX_MIX_CFG0 (WSA_START_OFFSET + 0x0110)
#define BOLERO_CDC_WSA_RX_INP_MUX_RX_EC_CFG0 (WSA_START_OFFSET + 0x0114)
#define BOLERO_CDC_WSA_RX_INP_MUX_SOFTCLIP_CFG0 (WSA_START_OFFSET + 0x0118)
/* VBAT registers */
#define BOLERO_CDC_WSA_VBAT_BCL_VBAT_PATH_CTL (WSA_START_OFFSET + 0x0180)
#define BOLERO_CDC_WSA_VBAT_BCL_VBAT_CFG (WSA_START_OFFSET + 0x0184)
#define BOLERO_CDC_WSA_VBAT_BCL_VBAT_ADC_CAL1 (WSA_START_OFFSET + 0x0188)
#define BOLERO_CDC_WSA_VBAT_BCL_VBAT_ADC_CAL2 (WSA_START_OFFSET + 0x018C)
#define BOLERO_CDC_WSA_VBAT_BCL_VBAT_ADC_CAL3 (WSA_START_OFFSET + 0x0190)
#define BOLERO_CDC_WSA_VBAT_BCL_VBAT_PK_EST1 (WSA_START_OFFSET + 0x0194)
#define BOLERO_CDC_WSA_VBAT_BCL_VBAT_PK_EST2 (WSA_START_OFFSET + 0x0198)
#define BOLERO_CDC_WSA_VBAT_BCL_VBAT_PK_EST3 (WSA_START_OFFSET + 0x019C)
#define BOLERO_CDC_WSA_VBAT_BCL_VBAT_RF_PROC1 (WSA_START_OFFSET + 0x01A0)
#define BOLERO_CDC_WSA_VBAT_BCL_VBAT_RF_PROC2 (WSA_START_OFFSET + 0x01A4)
#define BOLERO_CDC_WSA_VBAT_BCL_VBAT_TAC1 (WSA_START_OFFSET + 0x01A8)
#define BOLERO_CDC_WSA_VBAT_BCL_VBAT_TAC2 (WSA_START_OFFSET + 0x01AC)
#define BOLERO_CDC_WSA_VBAT_BCL_VBAT_TAC3 (WSA_START_OFFSET + 0x01B0)
#define BOLERO_CDC_WSA_VBAT_BCL_VBAT_TAC4 (WSA_START_OFFSET + 0x01B4)
#define BOLERO_CDC_WSA_VBAT_BCL_VBAT_GAIN_UPD1 (WSA_START_OFFSET + 0x01B8)
#define BOLERO_CDC_WSA_VBAT_BCL_VBAT_GAIN_UPD2 (WSA_START_OFFSET + 0x01BC)
#define BOLERO_CDC_WSA_VBAT_BCL_VBAT_GAIN_UPD3 (WSA_START_OFFSET + 0x01C0)
#define BOLERO_CDC_WSA_VBAT_BCL_VBAT_GAIN_UPD4 (WSA_START_OFFSET + 0x01C4)
#define BOLERO_CDC_WSA_VBAT_BCL_VBAT_GAIN_UPD5 (WSA_START_OFFSET + 0x01C8)
#define BOLERO_CDC_WSA_VBAT_BCL_VBAT_DEBUG1 (WSA_START_OFFSET + 0x01CC)
#define BOLERO_CDC_WSA_VBAT_BCL_VBAT_GAIN_UPD_MON \
(WSA_START_OFFSET + 0x01D0)
#define BOLERO_CDC_WSA_VBAT_BCL_VBAT_GAIN_MON_VAL \
(WSA_START_OFFSET + 0x01D4)
#define BOLERO_CDC_WSA_VBAT_BCL_VBAT_BAN (WSA_START_OFFSET + 0x01D8)
#define BOLERO_CDC_WSA_VBAT_BCL_VBAT_BCL_GAIN_UPD1 \
(WSA_START_OFFSET + 0x01DC)
#define BOLERO_CDC_WSA_VBAT_BCL_VBAT_BCL_GAIN_UPD2 \
(WSA_START_OFFSET + 0x01E0)
#define BOLERO_CDC_WSA_VBAT_BCL_VBAT_BCL_GAIN_UPD3 \
(WSA_START_OFFSET + 0x01E4)
#define BOLERO_CDC_WSA_VBAT_BCL_VBAT_BCL_GAIN_UPD4 \
(WSA_START_OFFSET + 0x01E8)
#define BOLERO_CDC_WSA_VBAT_BCL_VBAT_BCL_GAIN_UPD5 \
(WSA_START_OFFSET + 0x01EC)
#define BOLERO_CDC_WSA_VBAT_BCL_VBAT_BCL_GAIN_UPD6 \
(WSA_START_OFFSET + 0x01F0)
#define BOLERO_CDC_WSA_VBAT_BCL_VBAT_BCL_GAIN_UPD7 \
(WSA_START_OFFSET + 0x01F4)
#define BOLERO_CDC_WSA_VBAT_BCL_VBAT_BCL_GAIN_UPD8 \
(WSA_START_OFFSET + 0x01F8)
#define BOLERO_CDC_WSA_VBAT_BCL_VBAT_BCL_GAIN_UPD9 \
(WSA_START_OFFSET + 0x01FC)
#define BOLERO_CDC_WSA_VBAT_BCL_VBAT_BCL_ATTN1 (WSA_START_OFFSET + 0x0200)
#define BOLERO_CDC_WSA_VBAT_BCL_VBAT_BCL_ATTN2 (WSA_START_OFFSET + 0x0204)
#define BOLERO_CDC_WSA_VBAT_BCL_VBAT_BCL_ATTN3 (WSA_START_OFFSET + 0x0208)
#define BOLERO_CDC_WSA_VBAT_BCL_VBAT_DECODE_CTL1 \
(WSA_START_OFFSET + 0x020C)
#define BOLERO_CDC_WSA_VBAT_BCL_VBAT_DECODE_CTL2 \
(WSA_START_OFFSET + 0x0210)
#define BOLERO_CDC_WSA_VBAT_BCL_VBAT_DECODE_CFG1 \
(WSA_START_OFFSET + 0x0214)
#define BOLERO_CDC_WSA_VBAT_BCL_VBAT_DECODE_CFG2 \
(WSA_START_OFFSET + 0x0218)
#define BOLERO_CDC_WSA_VBAT_BCL_VBAT_DECODE_CFG3 \
(WSA_START_OFFSET + 0x021C)
#define BOLERO_CDC_WSA_VBAT_BCL_VBAT_DECODE_CFG4 \
(WSA_START_OFFSET + 0x0220)
#define BOLERO_CDC_WSA_VBAT_BCL_VBAT_DECODE_ST (WSA_START_OFFSET + 0x0224)
#define BOLERO_CDC_WSA_TX0_SPKR_PROT_PATH_CTL (WSA_START_OFFSET + 0x0244)
#define BOLERO_CDC_WSA_TX0_SPKR_PROT_PATH_CFG0 (WSA_START_OFFSET + 0x0248)
#define BOLERO_CDC_WSA_TX1_SPKR_PROT_PATH_CTL (WSA_START_OFFSET + 0x0264)
#define BOLERO_CDC_WSA_TX1_SPKR_PROT_PATH_CFG0 (WSA_START_OFFSET + 0x0268)
#define BOLERO_CDC_WSA_TX2_SPKR_PROT_PATH_CTL (WSA_START_OFFSET + 0x0284)
#define BOLERO_CDC_WSA_TX2_SPKR_PROT_PATH_CFG0 (WSA_START_OFFSET + 0x0288)
#define BOLERO_CDC_WSA_TX3_SPKR_PROT_PATH_CTL (WSA_START_OFFSET + 0x02A4)
#define BOLERO_CDC_WSA_TX3_SPKR_PROT_PATH_CFG0 (WSA_START_OFFSET + 0x02A8)
#define BOLERO_CDC_WSA_INTR_CTRL_CFG (WSA_START_OFFSET + 0x0340)
#define BOLERO_CDC_WSA_INTR_CTRL_CLR_COMMIT (WSA_START_OFFSET + 0x0344)
#define BOLERO_CDC_WSA_INTR_CTRL_PIN1_MASK0 (WSA_START_OFFSET + 0x0360)
#define BOLERO_CDC_WSA_INTR_CTRL_PIN1_STATUS0 (WSA_START_OFFSET + 0x0368)
#define BOLERO_CDC_WSA_INTR_CTRL_PIN1_CLEAR0 (WSA_START_OFFSET + 0x0370)
#define BOLERO_CDC_WSA_INTR_CTRL_PIN2_MASK0 (WSA_START_OFFSET + 0x0380)
#define BOLERO_CDC_WSA_INTR_CTRL_PIN2_STATUS0 (WSA_START_OFFSET + 0x0388)
#define BOLERO_CDC_WSA_INTR_CTRL_PIN2_CLEAR0 (WSA_START_OFFSET + 0x0390)
#define BOLERO_CDC_WSA_INTR_CTRL_LEVEL0 (WSA_START_OFFSET + 0x03C0)
#define BOLERO_CDC_WSA_INTR_CTRL_BYPASS0 (WSA_START_OFFSET + 0x03C8)
#define BOLERO_CDC_WSA_INTR_CTRL_SET0 (WSA_START_OFFSET + 0x03D0)
#define BOLERO_CDC_WSA_RX0_RX_PATH_CTL (WSA_START_OFFSET + 0x0400)
#define BOLERO_CDC_WSA_RX0_RX_PATH_CFG0 (WSA_START_OFFSET + 0x0404)
#define BOLERO_CDC_WSA_RX0_RX_PATH_CFG1 (WSA_START_OFFSET + 0x0408)
#define BOLERO_CDC_WSA_RX0_RX_PATH_CFG2 (WSA_START_OFFSET + 0x040C)
#define BOLERO_CDC_WSA_RX0_RX_PATH_CFG3 (WSA_START_OFFSET + 0x0410)
#define BOLERO_CDC_WSA_RX0_RX_VOL_CTL (WSA_START_OFFSET + 0x0414)
#define BOLERO_CDC_WSA_RX0_RX_PATH_MIX_CTL (WSA_START_OFFSET + 0x0418)
#define BOLERO_CDC_WSA_RX0_RX_PATH_MIX_CFG (WSA_START_OFFSET + 0x041C)
#define BOLERO_CDC_WSA_RX0_RX_VOL_MIX_CTL (WSA_START_OFFSET + 0x0420)
#define BOLERO_CDC_WSA_RX0_RX_PATH_SEC0 (WSA_START_OFFSET + 0x0424)
#define BOLERO_CDC_WSA_RX0_RX_PATH_SEC1 (WSA_START_OFFSET + 0x0428)
#define BOLERO_CDC_WSA_RX0_RX_PATH_SEC2 (WSA_START_OFFSET + 0x042C)
#define BOLERO_CDC_WSA_RX0_RX_PATH_SEC3 (WSA_START_OFFSET + 0x0430)
#define BOLERO_CDC_WSA_RX0_RX_PATH_SEC5 (WSA_START_OFFSET + 0x0438)
#define BOLERO_CDC_WSA_RX0_RX_PATH_SEC6 (WSA_START_OFFSET + 0x043C)
#define BOLERO_CDC_WSA_RX0_RX_PATH_SEC7 (WSA_START_OFFSET + 0x0440)
#define BOLERO_CDC_WSA_RX0_RX_PATH_MIX_SEC0 (WSA_START_OFFSET + 0x0444)
#define BOLERO_CDC_WSA_RX0_RX_PATH_MIX_SEC1 (WSA_START_OFFSET + 0x0448)
#define BOLERO_CDC_WSA_RX0_RX_PATH_DSMDEM_CTL (WSA_START_OFFSET + 0x044C)
#define BOLERO_CDC_WSA_RX1_RX_PATH_CTL (WSA_START_OFFSET + 0x0480)
#define BOLERO_CDC_WSA_RX1_RX_PATH_CFG0 (WSA_START_OFFSET + 0x0484)
#define BOLERO_CDC_WSA_RX1_RX_PATH_CFG1 (WSA_START_OFFSET + 0x0488)
#define BOLERO_CDC_WSA_RX1_RX_PATH_CFG2 (WSA_START_OFFSET + 0x048C)
#define BOLERO_CDC_WSA_RX1_RX_PATH_CFG3 (WSA_START_OFFSET + 0x0490)
#define BOLERO_CDC_WSA_RX1_RX_VOL_CTL (WSA_START_OFFSET + 0x0494)
#define BOLERO_CDC_WSA_RX1_RX_PATH_MIX_CTL (WSA_START_OFFSET + 0x0498)
#define BOLERO_CDC_WSA_RX1_RX_PATH_MIX_CFG (WSA_START_OFFSET + 0x049C)
#define BOLERO_CDC_WSA_RX1_RX_VOL_MIX_CTL (WSA_START_OFFSET + 0x04A0)
#define BOLERO_CDC_WSA_RX1_RX_PATH_SEC0 (WSA_START_OFFSET + 0x04A4)
#define BOLERO_CDC_WSA_RX1_RX_PATH_SEC1 (WSA_START_OFFSET + 0x04A8)
#define BOLERO_CDC_WSA_RX1_RX_PATH_SEC2 (WSA_START_OFFSET + 0x04AC)
#define BOLERO_CDC_WSA_RX1_RX_PATH_SEC3 (WSA_START_OFFSET + 0x04B0)
#define BOLERO_CDC_WSA_RX1_RX_PATH_SEC5 (WSA_START_OFFSET + 0x04B8)
#define BOLERO_CDC_WSA_RX1_RX_PATH_SEC6 (WSA_START_OFFSET + 0x04BC)
#define BOLERO_CDC_WSA_RX1_RX_PATH_SEC7 (WSA_START_OFFSET + 0x04C0)
#define BOLERO_CDC_WSA_RX1_RX_PATH_MIX_SEC0 (WSA_START_OFFSET + 0x04C4)
#define BOLERO_CDC_WSA_RX1_RX_PATH_MIX_SEC1 (WSA_START_OFFSET + 0x04C8)
#define BOLERO_CDC_WSA_RX1_RX_PATH_DSMDEM_CTL (WSA_START_OFFSET + 0x04CC)
#define BOLERO_CDC_WSA_BOOST0_BOOST_PATH_CTL (WSA_START_OFFSET + 0x0500)
#define BOLERO_CDC_WSA_BOOST0_BOOST_CTL (WSA_START_OFFSET + 0x0504)
#define BOLERO_CDC_WSA_BOOST0_BOOST_CFG1 (WSA_START_OFFSET + 0x0508)
#define BOLERO_CDC_WSA_BOOST0_BOOST_CFG2 (WSA_START_OFFSET + 0x050C)
#define BOLERO_CDC_WSA_BOOST1_BOOST_PATH_CTL (WSA_START_OFFSET + 0x0540)
#define BOLERO_CDC_WSA_BOOST1_BOOST_CTL (WSA_START_OFFSET + 0x0544)
#define BOLERO_CDC_WSA_BOOST1_BOOST_CFG1 (WSA_START_OFFSET + 0x0548)
#define BOLERO_CDC_WSA_BOOST1_BOOST_CFG2 (WSA_START_OFFSET + 0x054C)
#define BOLERO_CDC_WSA_COMPANDER0_CTL0 (WSA_START_OFFSET + 0x0580)
#define BOLERO_CDC_WSA_COMPANDER0_CTL1 (WSA_START_OFFSET + 0x0584)
#define BOLERO_CDC_WSA_COMPANDER0_CTL2 (WSA_START_OFFSET + 0x0588)
#define BOLERO_CDC_WSA_COMPANDER0_CTL3 (WSA_START_OFFSET + 0x058C)
#define BOLERO_CDC_WSA_COMPANDER0_CTL4 (WSA_START_OFFSET + 0x0590)
#define BOLERO_CDC_WSA_COMPANDER0_CTL5 (WSA_START_OFFSET + 0x0594)
#define BOLERO_CDC_WSA_COMPANDER0_CTL6 (WSA_START_OFFSET + 0x0598)
#define BOLERO_CDC_WSA_COMPANDER0_CTL7 (WSA_START_OFFSET + 0x059C)
#define BOLERO_CDC_WSA_COMPANDER1_CTL0 (WSA_START_OFFSET + 0x05C0)
#define BOLERO_CDC_WSA_COMPANDER1_CTL1 (WSA_START_OFFSET + 0x05C4)
#define BOLERO_CDC_WSA_COMPANDER1_CTL2 (WSA_START_OFFSET + 0x05C8)
#define BOLERO_CDC_WSA_COMPANDER1_CTL3 (WSA_START_OFFSET + 0x05CC)
#define BOLERO_CDC_WSA_COMPANDER1_CTL4 (WSA_START_OFFSET + 0x05D0)
#define BOLERO_CDC_WSA_COMPANDER1_CTL5 (WSA_START_OFFSET + 0x05D4)
#define BOLERO_CDC_WSA_COMPANDER1_CTL6 (WSA_START_OFFSET + 0x05D8)
#define BOLERO_CDC_WSA_COMPANDER1_CTL7 (WSA_START_OFFSET + 0x05DC)
#define BOLERO_CDC_WSA_SOFTCLIP0_CRC (WSA_START_OFFSET + 0x0600)
#define BOLERO_CDC_WSA_SOFTCLIP0_SOFTCLIP_CTRL (WSA_START_OFFSET + 0x0604)
#define BOLERO_CDC_WSA_SOFTCLIP1_CRC (WSA_START_OFFSET + 0x0640)
#define BOLERO_CDC_WSA_SOFTCLIP1_SOFTCLIP_CTRL (WSA_START_OFFSET + 0x0644)
#define BOLERO_CDC_WSA_EC_HQ0_EC_REF_HQ_PATH_CTL \
(WSA_START_OFFSET + 0x0680)
#define BOLERO_CDC_WSA_EC_HQ0_EC_REF_HQ_CFG0 (WSA_START_OFFSET + 0x0684)
#define BOLERO_CDC_WSA_EC_HQ1_EC_REF_HQ_PATH_CTL \
(WSA_START_OFFSET + 0x06C0)
#define BOLERO_CDC_WSA_EC_HQ1_EC_REF_HQ_CFG0 (WSA_START_OFFSET + 0x06C4)
#define BOLERO_CDC_WSA_SPLINE_ASRC0_CLK_RST_CTL (WSA_START_OFFSET + 0x0700)
#define BOLERO_CDC_WSA_SPLINE_ASRC0_CTL0 (WSA_START_OFFSET + 0x0704)
#define BOLERO_CDC_WSA_SPLINE_ASRC0_CTL1 (WSA_START_OFFSET + 0x0708)
#define BOLERO_CDC_WSA_SPLINE_ASRC0_FIFO_CTL (WSA_START_OFFSET + 0x070C)
#define BOLERO_CDC_WSA_SPLINE_ASRC0_STATUS_FMIN_CNTR_LSB \
(WSA_START_OFFSET + 0x0710)
#define BOLERO_CDC_WSA_SPLINE_ASRC0_STATUS_FMIN_CNTR_MSB \
(WSA_START_OFFSET + 0x0714)
#define BOLERO_CDC_WSA_SPLINE_ASRC0_STATUS_FMAX_CNTR_LSB \
(WSA_START_OFFSET + 0x0718)
#define BOLERO_CDC_WSA_SPLINE_ASRC0_STATUS_FMAX_CNTR_MSB \
(WSA_START_OFFSET + 0x071C)
#define BOLERO_CDC_WSA_SPLINE_ASRC0_STATUS_FIFO (WSA_START_OFFSET + 0x0720)
#define BOLERO_CDC_WSA_SPLINE_ASRC1_CLK_RST_CTL (WSA_START_OFFSET + 0x0740)
#define BOLERO_CDC_WSA_SPLINE_ASRC1_CTL0 (WSA_START_OFFSET + 0x0744)
#define BOLERO_CDC_WSA_SPLINE_ASRC1_CTL1 (WSA_START_OFFSET + 0x0748)
#define BOLERO_CDC_WSA_SPLINE_ASRC1_FIFO_CTL (WSA_START_OFFSET + 0x074C)
#define BOLERO_CDC_WSA_SPLINE_ASRC1_STATUS_FMIN_CNTR_LSB \
(WSA_START_OFFSET + 0x0750)
#define BOLERO_CDC_WSA_SPLINE_ASRC1_STATUS_FMIN_CNTR_MSB \
(WSA_START_OFFSET + 0x0754)
#define BOLERO_CDC_WSA_SPLINE_ASRC1_STATUS_FMAX_CNTR_LSB \
(WSA_START_OFFSET + 0x0758)
#define BOLERO_CDC_WSA_SPLINE_ASRC1_STATUS_FMAX_CNTR_MSB \
(WSA_START_OFFSET + 0x075C)
#define BOLERO_CDC_WSA_SPLINE_ASRC1_STATUS_FIFO (WSA_START_OFFSET + 0x0760)
#define WSA_MAX_OFFSET (WSA_START_OFFSET + 0x0760)
#define BOLERO_CDC_WSA_MACRO_MAX 0x1D9 /* 0x760/4 = 0x1D8 + 1 registers */
/* VA macro registers */
#define VA_START_OFFSET 0x3000
#define BOLERO_CDC_VA_CLK_RST_CTRL_MCLK_CONTROL (VA_START_OFFSET + 0x0000)
#define BOLERO_CDC_VA_CLK_RST_CTRL_FS_CNT_CONTROL \
(VA_START_OFFSET + 0x0004)
#define BOLERO_CDC_VA_TOP_CSR_TOP_CFG0 (VA_START_OFFSET + 0x0080)
#define BOLERO_CDC_VA_TOP_CSR_DMIC0_CTL (VA_START_OFFSET + 0x0084)
#define BOLERO_CDC_VA_TOP_CSR_DMIC1_CTL (VA_START_OFFSET + 0x0088)
#define BOLERO_CDC_VA_TOP_CSR_DMIC2_CTL (VA_START_OFFSET + 0x008C)
#define BOLERO_CDC_VA_TOP_CSR_DMIC3_CTL (VA_START_OFFSET + 0x0090)
#define BOLERO_CDC_VA_TOP_CSR_DMIC_CFG (VA_START_OFFSET + 0x0094)
#define BOLERO_CDC_VA_TOP_CSR_DEBUG_BUS (VA_START_OFFSET + 0x009C)
#define BOLERO_CDC_VA_TOP_CSR_DEBUG_EN (VA_START_OFFSET + 0x00A0)
#define BOLERO_CDC_VA_TOP_CSR_TX_I2S_CTL (VA_START_OFFSET + 0x00A4)
#define BOLERO_CDC_VA_TOP_CSR_I2S_CLK (VA_START_OFFSET + 0x00A8)
#define BOLERO_CDC_VA_TOP_CSR_I2S_RESET (VA_START_OFFSET + 0x00AC)
#define BOLERO_CDC_VA_TOP_CSR_CORE_ID_0 (VA_START_OFFSET + 0x00C0)
#define BOLERO_CDC_VA_TOP_CSR_CORE_ID_1 (VA_START_OFFSET + 0x00C4)
#define BOLERO_CDC_VA_TOP_CSR_CORE_ID_2 (VA_START_OFFSET + 0x00C8)
#define BOLERO_CDC_VA_TOP_CSR_CORE_ID_3 (VA_START_OFFSET + 0x00CC)
#define VA_TOP_MAX_OFFSET (VA_START_OFFSET + 0x00CC)
#define BOLERO_CDC_VA_MACRO_TOP_MAX 0x34 /* 0x0CC/4 = 0x33 + 1 = 0x34 */
#define BOLERO_CDC_VA_INP_MUX_ADC_MUX0_CFG0 (VA_START_OFFSET + 0x0100)
#define BOLERO_CDC_VA_INP_MUX_ADC_MUX0_CFG1 (VA_START_OFFSET + 0x0104)
#define BOLERO_CDC_VA_INP_MUX_ADC_MUX1_CFG0 (VA_START_OFFSET + 0x0108)
#define BOLERO_CDC_VA_INP_MUX_ADC_MUX1_CFG1 (VA_START_OFFSET + 0x010C)
#define BOLERO_CDC_VA_INP_MUX_ADC_MUX2_CFG0 (VA_START_OFFSET + 0x0110)
#define BOLERO_CDC_VA_INP_MUX_ADC_MUX2_CFG1 (VA_START_OFFSET + 0x0114)
#define BOLERO_CDC_VA_INP_MUX_ADC_MUX3_CFG0 (VA_START_OFFSET + 0x0118)
#define BOLERO_CDC_VA_INP_MUX_ADC_MUX3_CFG1 (VA_START_OFFSET + 0x011C)
#define BOLERO_CDC_VA_INP_MUX_ADC_MUX4_CFG0 (VA_START_OFFSET + 0x0120)
#define BOLERO_CDC_VA_INP_MUX_ADC_MUX4_CFG1 (VA_START_OFFSET + 0x0124)
#define BOLERO_CDC_VA_INP_MUX_ADC_MUX5_CFG0 (VA_START_OFFSET + 0x0128)
#define BOLERO_CDC_VA_INP_MUX_ADC_MUX5_CFG1 (VA_START_OFFSET + 0x012C)
#define BOLERO_CDC_VA_INP_MUX_ADC_MUX6_CFG0 (VA_START_OFFSET + 0x0130)
#define BOLERO_CDC_VA_INP_MUX_ADC_MUX6_CFG1 (VA_START_OFFSET + 0x0134)
#define BOLERO_CDC_VA_INP_MUX_ADC_MUX7_CFG0 (VA_START_OFFSET + 0x0138)
#define BOLERO_CDC_VA_INP_MUX_ADC_MUX7_CFG1 (VA_START_OFFSET + 0x013C)
#define BOLERO_CDC_VA_TX0_TX_PATH_CTL (VA_START_OFFSET + 0x0400)
#define BOLERO_CDC_VA_TX0_TX_PATH_CFG0 (VA_START_OFFSET + 0x0404)
#define BOLERO_CDC_VA_TX0_TX_PATH_CFG1 (VA_START_OFFSET + 0x0408)
#define BOLERO_CDC_VA_TX0_TX_VOL_CTL (VA_START_OFFSET + 0x040C)
#define BOLERO_CDC_VA_TX0_TX_PATH_SEC0 (VA_START_OFFSET + 0x0410)
#define BOLERO_CDC_VA_TX0_TX_PATH_SEC1 (VA_START_OFFSET + 0x0414)
#define BOLERO_CDC_VA_TX0_TX_PATH_SEC2 (VA_START_OFFSET + 0x0418)
#define BOLERO_CDC_VA_TX0_TX_PATH_SEC3 (VA_START_OFFSET + 0x041C)
#define BOLERO_CDC_VA_TX0_TX_PATH_SEC4 (VA_START_OFFSET + 0x0420)
#define BOLERO_CDC_VA_TX0_TX_PATH_SEC5 (VA_START_OFFSET + 0x0424)
#define BOLERO_CDC_VA_TX0_TX_PATH_SEC6 (VA_START_OFFSET + 0x0428)
#define BOLERO_CDC_VA_TX0_TX_PATH_SEC7 (VA_START_OFFSET + 0x042C)
#define BOLERO_CDC_VA_TX1_TX_PATH_CTL (VA_START_OFFSET + 0x0480)
#define BOLERO_CDC_VA_TX1_TX_PATH_CFG0 (VA_START_OFFSET + 0x0484)
#define BOLERO_CDC_VA_TX1_TX_PATH_CFG1 (VA_START_OFFSET + 0x0488)
#define BOLERO_CDC_VA_TX1_TX_VOL_CTL (VA_START_OFFSET + 0x048C)
#define BOLERO_CDC_VA_TX1_TX_PATH_SEC0 (VA_START_OFFSET + 0x0490)
#define BOLERO_CDC_VA_TX1_TX_PATH_SEC1 (VA_START_OFFSET + 0x0494)
#define BOLERO_CDC_VA_TX1_TX_PATH_SEC2 (VA_START_OFFSET + 0x0498)
#define BOLERO_CDC_VA_TX1_TX_PATH_SEC3 (VA_START_OFFSET + 0x049C)
#define BOLERO_CDC_VA_TX1_TX_PATH_SEC4 (VA_START_OFFSET + 0x04A0)
#define BOLERO_CDC_VA_TX1_TX_PATH_SEC5 (VA_START_OFFSET + 0x04A4)
#define BOLERO_CDC_VA_TX1_TX_PATH_SEC6 (VA_START_OFFSET + 0x04A8)
#define BOLERO_CDC_VA_TX2_TX_PATH_CTL (VA_START_OFFSET + 0x0500)
#define BOLERO_CDC_VA_TX2_TX_PATH_CFG0 (VA_START_OFFSET + 0x0504)
#define BOLERO_CDC_VA_TX2_TX_PATH_CFG1 (VA_START_OFFSET + 0x0508)
#define BOLERO_CDC_VA_TX2_TX_VOL_CTL (VA_START_OFFSET + 0x050C)
#define BOLERO_CDC_VA_TX2_TX_PATH_SEC0 (VA_START_OFFSET + 0x0510)
#define BOLERO_CDC_VA_TX2_TX_PATH_SEC1 (VA_START_OFFSET + 0x0514)
#define BOLERO_CDC_VA_TX2_TX_PATH_SEC2 (VA_START_OFFSET + 0x0518)
#define BOLERO_CDC_VA_TX2_TX_PATH_SEC3 (VA_START_OFFSET + 0x051C)
#define BOLERO_CDC_VA_TX2_TX_PATH_SEC4 (VA_START_OFFSET + 0x0520)
#define BOLERO_CDC_VA_TX2_TX_PATH_SEC5 (VA_START_OFFSET + 0x0524)
#define BOLERO_CDC_VA_TX2_TX_PATH_SEC6 (VA_START_OFFSET + 0x0528)
#define BOLERO_CDC_VA_TX3_TX_PATH_CTL (VA_START_OFFSET + 0x0580)
#define BOLERO_CDC_VA_TX3_TX_PATH_CFG0 (VA_START_OFFSET + 0x0584)
#define BOLERO_CDC_VA_TX3_TX_PATH_CFG1 (VA_START_OFFSET + 0x0588)
#define BOLERO_CDC_VA_TX3_TX_VOL_CTL (VA_START_OFFSET + 0x058C)
#define BOLERO_CDC_VA_TX3_TX_PATH_SEC0 (VA_START_OFFSET + 0x0590)
#define BOLERO_CDC_VA_TX3_TX_PATH_SEC1 (VA_START_OFFSET + 0x0594)
#define BOLERO_CDC_VA_TX3_TX_PATH_SEC2 (VA_START_OFFSET + 0x0598)
#define BOLERO_CDC_VA_TX3_TX_PATH_SEC3 (VA_START_OFFSET + 0x059C)
#define BOLERO_CDC_VA_TX3_TX_PATH_SEC4 (VA_START_OFFSET + 0x05A0)
#define BOLERO_CDC_VA_TX3_TX_PATH_SEC5 (VA_START_OFFSET + 0x05A4)
#define BOLERO_CDC_VA_TX3_TX_PATH_SEC6 (VA_START_OFFSET + 0x05A8)
#define BOLERO_CDC_VA_TX4_TX_PATH_CTL (VA_START_OFFSET + 0x0600)
#define BOLERO_CDC_VA_TX4_TX_PATH_CFG0 (VA_START_OFFSET + 0x0604)
#define BOLERO_CDC_VA_TX4_TX_PATH_CFG1 (VA_START_OFFSET + 0x0608)
#define BOLERO_CDC_VA_TX4_TX_VOL_CTL (VA_START_OFFSET + 0x060C)
#define BOLERO_CDC_VA_TX4_TX_PATH_SEC0 (VA_START_OFFSET + 0x0610)
#define BOLERO_CDC_VA_TX4_TX_PATH_SEC1 (VA_START_OFFSET + 0x0614)
#define BOLERO_CDC_VA_TX4_TX_PATH_SEC2 (VA_START_OFFSET + 0x0618)
#define BOLERO_CDC_VA_TX4_TX_PATH_SEC3 (VA_START_OFFSET + 0x061C)
#define BOLERO_CDC_VA_TX4_TX_PATH_SEC4 (VA_START_OFFSET + 0x0620)
#define BOLERO_CDC_VA_TX4_TX_PATH_SEC5 (VA_START_OFFSET + 0x0624)
#define BOLERO_CDC_VA_TX4_TX_PATH_SEC6 (VA_START_OFFSET + 0x0628)
#define BOLERO_CDC_VA_TX5_TX_PATH_CTL (VA_START_OFFSET + 0x0680)
#define BOLERO_CDC_VA_TX5_TX_PATH_CFG0 (VA_START_OFFSET + 0x0684)
#define BOLERO_CDC_VA_TX5_TX_PATH_CFG1 (VA_START_OFFSET + 0x0688)
#define BOLERO_CDC_VA_TX5_TX_VOL_CTL (VA_START_OFFSET + 0x068C)
#define BOLERO_CDC_VA_TX5_TX_PATH_SEC0 (VA_START_OFFSET + 0x0690)
#define BOLERO_CDC_VA_TX5_TX_PATH_SEC1 (VA_START_OFFSET + 0x0694)
#define BOLERO_CDC_VA_TX5_TX_PATH_SEC2 (VA_START_OFFSET + 0x0698)
#define BOLERO_CDC_VA_TX5_TX_PATH_SEC3 (VA_START_OFFSET + 0x069C)
#define BOLERO_CDC_VA_TX5_TX_PATH_SEC4 (VA_START_OFFSET + 0x06A0)
#define BOLERO_CDC_VA_TX5_TX_PATH_SEC5 (VA_START_OFFSET + 0x06A4)
#define BOLERO_CDC_VA_TX5_TX_PATH_SEC6 (VA_START_OFFSET + 0x06A8)
#define BOLERO_CDC_VA_TX6_TX_PATH_CTL (VA_START_OFFSET + 0x0700)
#define BOLERO_CDC_VA_TX6_TX_PATH_CFG0 (VA_START_OFFSET + 0x0704)
#define BOLERO_CDC_VA_TX6_TX_PATH_CFG1 (VA_START_OFFSET + 0x0708)
#define BOLERO_CDC_VA_TX6_TX_VOL_CTL (VA_START_OFFSET + 0x070C)
#define BOLERO_CDC_VA_TX6_TX_PATH_SEC0 (VA_START_OFFSET + 0x0710)
#define BOLERO_CDC_VA_TX6_TX_PATH_SEC1 (VA_START_OFFSET + 0x0714)
#define BOLERO_CDC_VA_TX6_TX_PATH_SEC2 (VA_START_OFFSET + 0x0718)
#define BOLERO_CDC_VA_TX6_TX_PATH_SEC3 (VA_START_OFFSET + 0x071C)
#define BOLERO_CDC_VA_TX6_TX_PATH_SEC4 (VA_START_OFFSET + 0x0720)
#define BOLERO_CDC_VA_TX6_TX_PATH_SEC5 (VA_START_OFFSET + 0x0724)
#define BOLERO_CDC_VA_TX6_TX_PATH_SEC6 (VA_START_OFFSET + 0x0728)
#define BOLERO_CDC_VA_TX7_TX_PATH_CTL (VA_START_OFFSET + 0x0780)
#define BOLERO_CDC_VA_TX7_TX_PATH_CFG0 (VA_START_OFFSET + 0x0784)
#define BOLERO_CDC_VA_TX7_TX_PATH_CFG1 (VA_START_OFFSET + 0x0788)
#define BOLERO_CDC_VA_TX7_TX_VOL_CTL (VA_START_OFFSET + 0x078C)
#define BOLERO_CDC_VA_TX7_TX_PATH_SEC0 (VA_START_OFFSET + 0x0790)
#define BOLERO_CDC_VA_TX7_TX_PATH_SEC1 (VA_START_OFFSET + 0x0794)
#define BOLERO_CDC_VA_TX7_TX_PATH_SEC2 (VA_START_OFFSET + 0x0798)
#define BOLERO_CDC_VA_TX7_TX_PATH_SEC3 (VA_START_OFFSET + 0x079C)
#define BOLERO_CDC_VA_TX7_TX_PATH_SEC4 (VA_START_OFFSET + 0x07A0)
#define BOLERO_CDC_VA_TX7_TX_PATH_SEC5 (VA_START_OFFSET + 0x07A4)
#define BOLERO_CDC_VA_TX7_TX_PATH_SEC6 (VA_START_OFFSET + 0x07A8)
#define VA_MAX_OFFSET (VA_START_OFFSET + 0x07A8)
#define BOLERO_CDC_VA_MACRO_MAX 0x1EB /* 7A8/4 = 1EA + 1 = 1EB */
#define BOLERO_CDC_MAX_REGISTER VA_MAX_OFFSET
#define BOLERO_REG(reg) (((reg) & 0x0FFF)/4)
#endif

View file

@ -0,0 +1,811 @@
/* Copyright (c) 2018, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include <linux/regmap.h>
#include "bolero_cdc.h"
#include "internal.h"
static const struct reg_default bolero_defaults[] = {
/* TX Macro */
{ BOLERO_CDC_TX_CLK_RST_CTRL_MCLK_CONTROL, 0x00 },
{ BOLERO_CDC_TX_CLK_RST_CTRL_FS_CNT_CONTROL, 0x00 },
{ BOLERO_CDC_TX_CLK_RST_CTRL_SWR_CONTROL, 0x00},
{ BOLERO_CDC_TX_TOP_CSR_TOP_CFG0, 0x00},
{ BOLERO_CDC_TX_TOP_CSR_ANC_CFG, 0x00},
{ BOLERO_CDC_TX_TOP_CSR_SWR_CTRL, 0x00},
{ BOLERO_CDC_TX_TOP_CSR_FREQ_MCLK, 0x00},
{ BOLERO_CDC_TX_TOP_CSR_DEBUG_BUS, 0x00},
{ BOLERO_CDC_TX_TOP_CSR_DEBUG_EN, 0x00},
{ BOLERO_CDC_TX_TOP_CSR_TX_I2S_CTL, 0x0C},
{ BOLERO_CDC_TX_TOP_CSR_I2S_CLK, 0x00},
{ BOLERO_CDC_TX_TOP_CSR_I2S_RESET, 0x00},
{ BOLERO_CDC_TX_TOP_CSR_SWR_DMIC0_CTL, 0x00},
{ BOLERO_CDC_TX_TOP_CSR_SWR_DMIC1_CTL, 0x00},
{ BOLERO_CDC_TX_TOP_CSR_SWR_DMIC2_CTL, 0x00},
{ BOLERO_CDC_TX_TOP_CSR_SWR_DMIC3_CTL, 0x00},
{ BOLERO_CDC_TX_TOP_CSR_SWR_AMIC0_CTL, 0x00},
{ BOLERO_CDC_TX_TOP_CSR_SWR_AMIC1_CTL, 0x00},
{ BOLERO_CDC_TX_INP_MUX_ADC_MUX0_CFG0, 0x00},
{ BOLERO_CDC_TX_INP_MUX_ADC_MUX0_CFG1, 0x00},
{ BOLERO_CDC_TX_INP_MUX_ADC_MUX1_CFG0, 0x00},
{ BOLERO_CDC_TX_INP_MUX_ADC_MUX1_CFG1, 0x00},
{ BOLERO_CDC_TX_INP_MUX_ADC_MUX2_CFG0, 0x00},
{ BOLERO_CDC_TX_INP_MUX_ADC_MUX2_CFG1, 0x00},
{ BOLERO_CDC_TX_INP_MUX_ADC_MUX3_CFG0, 0x00},
{ BOLERO_CDC_TX_INP_MUX_ADC_MUX3_CFG1, 0x00},
{ BOLERO_CDC_TX_INP_MUX_ADC_MUX4_CFG0, 0x00},
{ BOLERO_CDC_TX_INP_MUX_ADC_MUX4_CFG1, 0x00},
{ BOLERO_CDC_TX_INP_MUX_ADC_MUX5_CFG0, 0x00},
{ BOLERO_CDC_TX_INP_MUX_ADC_MUX5_CFG1, 0x00},
{ BOLERO_CDC_TX_INP_MUX_ADC_MUX6_CFG0, 0x00},
{ BOLERO_CDC_TX_INP_MUX_ADC_MUX6_CFG1, 0x00},
{ BOLERO_CDC_TX_INP_MUX_ADC_MUX7_CFG0, 0x00},
{ BOLERO_CDC_TX_INP_MUX_ADC_MUX7_CFG1, 0x00},
{ BOLERO_CDC_TX_ANC0_CLK_RESET_CTL, 0x00},
{ BOLERO_CDC_TX_ANC0_MODE_1_CTL, 0x00},
{ BOLERO_CDC_TX_ANC0_MODE_2_CTL, 0x00},
{ BOLERO_CDC_TX_ANC0_FF_SHIFT, 0x00},
{ BOLERO_CDC_TX_ANC0_FB_SHIFT, 0x00},
{ BOLERO_CDC_TX_ANC0_LPF_FF_A_CTL, 0x00},
{ BOLERO_CDC_TX_ANC0_LPF_FF_B_CTL, 0x00},
{ BOLERO_CDC_TX_ANC0_LPF_FB_CTL, 0x00},
{ BOLERO_CDC_TX_ANC0_SMLPF_CTL, 0x00},
{ BOLERO_CDC_TX_ANC0_DCFLT_SHIFT_CTL, 0x00},
{ BOLERO_CDC_TX_ANC0_IIR_ADAPT_CTL, 0x00},
{ BOLERO_CDC_TX_ANC0_IIR_COEFF_1_CTL, 0x00},
{ BOLERO_CDC_TX_ANC0_IIR_COEFF_2_CTL, 0x00},
{ BOLERO_CDC_TX_ANC0_FF_A_GAIN_CTL, 0x00},
{ BOLERO_CDC_TX_ANC0_FF_B_GAIN_CTL, 0x00},
{ BOLERO_CDC_TX_ANC0_FB_GAIN_CTL, 0x00},
{ BOLERO_CDC_TX0_TX_PATH_CTL, 0x04},
{ BOLERO_CDC_TX0_TX_PATH_CFG0, 0x10},
{ BOLERO_CDC_TX0_TX_PATH_CFG1, 0x0B},
{ BOLERO_CDC_TX0_TX_VOL_CTL, 0x00},
{ BOLERO_CDC_TX0_TX_PATH_SEC0, 0x00},
{ BOLERO_CDC_TX0_TX_PATH_SEC1, 0x00},
{ BOLERO_CDC_TX0_TX_PATH_SEC2, 0x01},
{ BOLERO_CDC_TX0_TX_PATH_SEC3, 0x3C},
{ BOLERO_CDC_TX0_TX_PATH_SEC4, 0x20},
{ BOLERO_CDC_TX0_TX_PATH_SEC5, 0x00},
{ BOLERO_CDC_TX0_TX_PATH_SEC6, 0x00},
{ BOLERO_CDC_TX0_TX_PATH_SEC7, 0x25},
{ BOLERO_CDC_TX1_TX_PATH_CTL, 0x04},
{ BOLERO_CDC_TX1_TX_PATH_CFG0, 0x10},
{ BOLERO_CDC_TX1_TX_PATH_CFG1, 0x0B},
{ BOLERO_CDC_TX1_TX_VOL_CTL, 0x00},
{ BOLERO_CDC_TX1_TX_PATH_SEC0, 0x00},
{ BOLERO_CDC_TX1_TX_PATH_SEC1, 0x00},
{ BOLERO_CDC_TX1_TX_PATH_SEC2, 0x01},
{ BOLERO_CDC_TX1_TX_PATH_SEC3, 0x3C},
{ BOLERO_CDC_TX1_TX_PATH_SEC4, 0x20},
{ BOLERO_CDC_TX1_TX_PATH_SEC5, 0x00},
{ BOLERO_CDC_TX1_TX_PATH_SEC6, 0x00},
{ BOLERO_CDC_TX2_TX_PATH_CTL, 0x04},
{ BOLERO_CDC_TX2_TX_PATH_CFG0, 0x10},
{ BOLERO_CDC_TX2_TX_PATH_CFG1, 0x0B},
{ BOLERO_CDC_TX2_TX_VOL_CTL, 0x00},
{ BOLERO_CDC_TX2_TX_PATH_SEC0, 0x00},
{ BOLERO_CDC_TX2_TX_PATH_SEC1, 0x00},
{ BOLERO_CDC_TX2_TX_PATH_SEC2, 0x01},
{ BOLERO_CDC_TX2_TX_PATH_SEC3, 0x3C},
{ BOLERO_CDC_TX2_TX_PATH_SEC4, 0x20},
{ BOLERO_CDC_TX2_TX_PATH_SEC5, 0x00},
{ BOLERO_CDC_TX2_TX_PATH_SEC6, 0x00},
{ BOLERO_CDC_TX3_TX_PATH_CTL, 0x04},
{ BOLERO_CDC_TX3_TX_PATH_CFG0, 0x10},
{ BOLERO_CDC_TX3_TX_PATH_CFG1, 0x0B},
{ BOLERO_CDC_TX3_TX_VOL_CTL, 0x00},
{ BOLERO_CDC_TX3_TX_PATH_SEC0, 0x00},
{ BOLERO_CDC_TX3_TX_PATH_SEC1, 0x00},
{ BOLERO_CDC_TX3_TX_PATH_SEC2, 0x01},
{ BOLERO_CDC_TX3_TX_PATH_SEC3, 0x3C},
{ BOLERO_CDC_TX3_TX_PATH_SEC4, 0x20},
{ BOLERO_CDC_TX3_TX_PATH_SEC5, 0x00},
{ BOLERO_CDC_TX3_TX_PATH_SEC6, 0x00},
{ BOLERO_CDC_TX4_TX_PATH_CTL, 0x04},
{ BOLERO_CDC_TX4_TX_PATH_CFG0, 0x10},
{ BOLERO_CDC_TX4_TX_PATH_CFG1, 0x0B},
{ BOLERO_CDC_TX4_TX_VOL_CTL, 0x00},
{ BOLERO_CDC_TX4_TX_PATH_SEC0, 0x00},
{ BOLERO_CDC_TX4_TX_PATH_SEC1, 0x00},
{ BOLERO_CDC_TX4_TX_PATH_SEC2, 0x01},
{ BOLERO_CDC_TX4_TX_PATH_SEC3, 0x3C},
{ BOLERO_CDC_TX4_TX_PATH_SEC4, 0x20},
{ BOLERO_CDC_TX4_TX_PATH_SEC5, 0x00},
{ BOLERO_CDC_TX4_TX_PATH_SEC6, 0x00},
{ BOLERO_CDC_TX5_TX_PATH_CTL, 0x04},
{ BOLERO_CDC_TX5_TX_PATH_CFG0, 0x10},
{ BOLERO_CDC_TX5_TX_PATH_CFG1, 0x0B},
{ BOLERO_CDC_TX5_TX_VOL_CTL, 0x00},
{ BOLERO_CDC_TX5_TX_PATH_SEC0, 0x00},
{ BOLERO_CDC_TX5_TX_PATH_SEC1, 0x00},
{ BOLERO_CDC_TX5_TX_PATH_SEC2, 0x01},
{ BOLERO_CDC_TX5_TX_PATH_SEC3, 0x3C},
{ BOLERO_CDC_TX5_TX_PATH_SEC4, 0x20},
{ BOLERO_CDC_TX5_TX_PATH_SEC5, 0x00},
{ BOLERO_CDC_TX5_TX_PATH_SEC6, 0x00},
{ BOLERO_CDC_TX6_TX_PATH_CTL, 0x04},
{ BOLERO_CDC_TX6_TX_PATH_CFG0, 0x10},
{ BOLERO_CDC_TX6_TX_PATH_CFG1, 0x0B},
{ BOLERO_CDC_TX6_TX_VOL_CTL, 0x00},
{ BOLERO_CDC_TX6_TX_PATH_SEC0, 0x00},
{ BOLERO_CDC_TX6_TX_PATH_SEC1, 0x00},
{ BOLERO_CDC_TX6_TX_PATH_SEC2, 0x01},
{ BOLERO_CDC_TX6_TX_PATH_SEC3, 0x3C},
{ BOLERO_CDC_TX6_TX_PATH_SEC4, 0x20},
{ BOLERO_CDC_TX6_TX_PATH_SEC5, 0x00},
{ BOLERO_CDC_TX6_TX_PATH_SEC6, 0x00},
{ BOLERO_CDC_TX7_TX_PATH_CTL, 0x04},
{ BOLERO_CDC_TX7_TX_PATH_CFG0, 0x10},
{ BOLERO_CDC_TX7_TX_PATH_CFG1, 0x0B},
{ BOLERO_CDC_TX7_TX_VOL_CTL, 0x00},
{ BOLERO_CDC_TX7_TX_PATH_SEC0, 0x00},
{ BOLERO_CDC_TX7_TX_PATH_SEC1, 0x00},
{ BOLERO_CDC_TX7_TX_PATH_SEC2, 0x01},
{ BOLERO_CDC_TX7_TX_PATH_SEC3, 0x3C},
{ BOLERO_CDC_TX7_TX_PATH_SEC4, 0x20},
{ BOLERO_CDC_TX7_TX_PATH_SEC5, 0x00},
{ BOLERO_CDC_TX7_TX_PATH_SEC6, 0x00},
/* RX Macro */
{ BOLERO_CDC_RX_TOP_TOP_CFG0, 0x00},
{ BOLERO_CDC_RX_TOP_SWR_CTRL, 0x00},
{ BOLERO_CDC_RX_TOP_DEBUG, 0x00},
{ BOLERO_CDC_RX_TOP_DEBUG_BUS, 0x00},
{ BOLERO_CDC_RX_TOP_DEBUG_EN0, 0x00},
{ BOLERO_CDC_RX_TOP_DEBUG_EN1, 0x00},
{ BOLERO_CDC_RX_TOP_DEBUG_EN2, 0x00},
{ BOLERO_CDC_RX_TOP_HPHL_COMP_WR_LSB, 0x00},
{ BOLERO_CDC_RX_TOP_HPHL_COMP_WR_MSB, 0x00},
{ BOLERO_CDC_RX_TOP_HPHL_COMP_LUT, 0x00},
{ BOLERO_CDC_RX_TOP_HPHL_COMP_RD_LSB, 0x00},
{ BOLERO_CDC_RX_TOP_HPHL_COMP_RD_MSB, 0x00},
{ BOLERO_CDC_RX_TOP_HPHR_COMP_WR_LSB, 0x00},
{ BOLERO_CDC_RX_TOP_HPHR_COMP_WR_MSB, 0x00},
{ BOLERO_CDC_RX_TOP_HPHR_COMP_LUT, 0x00},
{ BOLERO_CDC_RX_TOP_HPHR_COMP_RD_LSB, 0x00},
{ BOLERO_CDC_RX_TOP_HPHR_COMP_RD_MSB, 0x00},
{ BOLERO_CDC_RX_TOP_DSD0_DEBUG_CFG0, 0x11},
{ BOLERO_CDC_RX_TOP_DSD0_DEBUG_CFG1, 0x20},
{ BOLERO_CDC_RX_TOP_DSD0_DEBUG_CFG2, 0x00},
{ BOLERO_CDC_RX_TOP_DSD0_DEBUG_CFG3, 0x00},
{ BOLERO_CDC_RX_TOP_DSD1_DEBUG_CFG0, 0x11},
{ BOLERO_CDC_RX_TOP_DSD1_DEBUG_CFG1, 0x20},
{ BOLERO_CDC_RX_TOP_DSD1_DEBUG_CFG2, 0x00},
{ BOLERO_CDC_RX_TOP_DSD1_DEBUG_CFG3, 0x00},
{ BOLERO_CDC_RX_TOP_RX_I2S_CTL, 0x0C},
{ BOLERO_CDC_RX_TOP_TX_I2S2_CTL, 0x0C},
{ BOLERO_CDC_RX_TOP_I2S_CLK, 0x0C},
{ BOLERO_CDC_RX_TOP_I2S_RESET, 0x00},
{ BOLERO_CDC_RX_TOP_I2S_MUX, 0x00},
{ BOLERO_CDC_RX_CLK_RST_CTRL_MCLK_CONTROL, 0x00},
{ BOLERO_CDC_RX_CLK_RST_CTRL_FS_CNT_CONTROL, 0x00},
{ BOLERO_CDC_RX_CLK_RST_CTRL_SWR_CONTROL, 0x00},
{ BOLERO_CDC_RX_CLK_RST_CTRL_DSD_CONTROL, 0x00},
{ BOLERO_CDC_RX_CLK_RST_CTRL_ASRC_SHARE_CONTROL, 0x08},
{ BOLERO_CDC_RX_SOFTCLIP_CRC, 0x00},
{ BOLERO_CDC_RX_SOFTCLIP_SOFTCLIP_CTRL, 0x38},
{ BOLERO_CDC_RX_INP_MUX_RX_INT0_CFG0, 0x00},
{ BOLERO_CDC_RX_INP_MUX_RX_INT0_CFG1, 0x00},
{ BOLERO_CDC_RX_INP_MUX_RX_INT1_CFG0, 0x00},
{ BOLERO_CDC_RX_INP_MUX_RX_INT1_CFG1, 0x00},
{ BOLERO_CDC_RX_INP_MUX_RX_INT2_CFG0, 0x00},
{ BOLERO_CDC_RX_INP_MUX_RX_INT2_CFG1, 0x00},
{ BOLERO_CDC_RX_INP_MUX_RX_MIX_CFG4, 0x00},
{ BOLERO_CDC_RX_INP_MUX_RX_MIX_CFG5, 0x00},
{ BOLERO_CDC_RX_INP_MUX_SIDETONE_SRC_CFG0, 0x00},
{ BOLERO_CDC_RX_CLSH_CRC, 0x00},
{ BOLERO_CDC_RX_CLSH_DLY_CTRL, 0x03},
{ BOLERO_CDC_RX_CLSH_DECAY_CTRL, 0x02},
{ BOLERO_CDC_RX_CLSH_HPH_V_PA, 0x1C},
{ BOLERO_CDC_RX_CLSH_EAR_V_PA, 0x39},
{ BOLERO_CDC_RX_CLSH_HPH_V_HD, 0x0C},
{ BOLERO_CDC_RX_CLSH_EAR_V_HD, 0x0C},
{ BOLERO_CDC_RX_CLSH_K1_MSB, 0x01},
{ BOLERO_CDC_RX_CLSH_K1_LSB, 0x00},
{ BOLERO_CDC_RX_CLSH_K2_MSB, 0x00},
{ BOLERO_CDC_RX_CLSH_K2_LSB, 0x80},
{ BOLERO_CDC_RX_CLSH_IDLE_CTRL, 0x00},
{ BOLERO_CDC_RX_CLSH_IDLE_HPH, 0x00},
{ BOLERO_CDC_RX_CLSH_IDLE_EAR, 0x00},
{ BOLERO_CDC_RX_CLSH_TEST0, 0x07},
{ BOLERO_CDC_RX_CLSH_TEST1, 0x00},
{ BOLERO_CDC_RX_CLSH_OVR_VREF, 0x00},
{ BOLERO_CDC_RX_CLSH_CLSG_CTL, 0x02},
{ BOLERO_CDC_RX_CLSH_CLSG_CFG1, 0x9A},
{ BOLERO_CDC_RX_CLSH_CLSG_CFG2, 0x10},
{ BOLERO_CDC_RX_BCL_VBAT_PATH_CTL, 0x00},
{ BOLERO_CDC_RX_BCL_VBAT_CFG, 0x10},
{ BOLERO_CDC_RX_BCL_VBAT_ADC_CAL1, 0x00},
{ BOLERO_CDC_RX_BCL_VBAT_ADC_CAL2, 0x00},
{ BOLERO_CDC_RX_BCL_VBAT_ADC_CAL3, 0x04},
{ BOLERO_CDC_RX_BCL_VBAT_PK_EST1, 0xE0},
{ BOLERO_CDC_RX_BCL_VBAT_PK_EST2, 0x01},
{ BOLERO_CDC_RX_BCL_VBAT_PK_EST3, 0x40},
{ BOLERO_CDC_RX_BCL_VBAT_RF_PROC1, 0x2A},
{ BOLERO_CDC_RX_BCL_VBAT_RF_PROC1, 0x00},
{ BOLERO_CDC_RX_BCL_VBAT_TAC1, 0x00},
{ BOLERO_CDC_RX_BCL_VBAT_TAC2, 0x18},
{ BOLERO_CDC_RX_BCL_VBAT_TAC3, 0x18},
{ BOLERO_CDC_RX_BCL_VBAT_TAC4, 0x03},
{ BOLERO_CDC_RX_BCL_VBAT_GAIN_UPD1, 0x01},
{ BOLERO_CDC_RX_BCL_VBAT_GAIN_UPD2, 0x00},
{ BOLERO_CDC_RX_BCL_VBAT_GAIN_UPD3, 0x00},
{ BOLERO_CDC_RX_BCL_VBAT_GAIN_UPD4, 0x64},
{ BOLERO_CDC_RX_BCL_VBAT_GAIN_UPD5, 0x01},
{ BOLERO_CDC_RX_BCL_VBAT_DEBUG1, 0x00},
{ BOLERO_CDC_RX_BCL_VBAT_GAIN_UPD_MON, 0x00},
{ BOLERO_CDC_RX_BCL_VBAT_GAIN_MON_VAL, 0x00},
{ BOLERO_CDC_RX_BCL_VBAT_BAN, 0x0C},
{ BOLERO_CDC_RX_BCL_VBAT_BCL_GAIN_UPD1, 0x00},
{ BOLERO_CDC_RX_BCL_VBAT_BCL_GAIN_UPD2, 0x77},
{ BOLERO_CDC_RX_BCL_VBAT_BCL_GAIN_UPD3, 0x01},
{ BOLERO_CDC_RX_BCL_VBAT_BCL_GAIN_UPD4, 0x00},
{ BOLERO_CDC_RX_BCL_VBAT_BCL_GAIN_UPD5, 0x4B},
{ BOLERO_CDC_RX_BCL_VBAT_BCL_GAIN_UPD6, 0x00},
{ BOLERO_CDC_RX_BCL_VBAT_BCL_GAIN_UPD7, 0x01},
{ BOLERO_CDC_RX_BCL_VBAT_BCL_GAIN_UPD8, 0x00},
{ BOLERO_CDC_RX_BCL_VBAT_BCL_GAIN_UPD9, 0x00},
{ BOLERO_CDC_RX_BCL_VBAT_ATTN1, 0x04},
{ BOLERO_CDC_RX_BCL_VBAT_ATTN2, 0x08},
{ BOLERO_CDC_RX_BCL_VBAT_ATTN3, 0x0C},
{ BOLERO_CDC_RX_BCL_VBAT_DECODE_CTL1, 0xE0},
{ BOLERO_CDC_RX_BCL_VBAT_DECODE_CTL2, 0x00},
{ BOLERO_CDC_RX_BCL_VBAT_DECODE_CFG1, 0x00},
{ BOLERO_CDC_RX_BCL_VBAT_DECODE_CFG2, 0x00},
{ BOLERO_CDC_RX_BCL_VBAT_DECODE_CFG3, 0x00},
{ BOLERO_CDC_RX_BCL_VBAT_DECODE_CFG4, 0x00},
{ BOLERO_CDC_RX_BCL_VBAT_DECODE_ST, 0x00},
{ BOLERO_CDC_RX_INTR_CTRL_CFG, 0x00},
{ BOLERO_CDC_RX_INTR_CTRL_CLR_COMMIT, 0x00},
{ BOLERO_CDC_RX_INTR_CTRL_PIN1_MASK0, 0xFF},
{ BOLERO_CDC_RX_INTR_CTRL_PIN1_STATUS0, 0x00},
{ BOLERO_CDC_RX_INTR_CTRL_PIN1_CLEAR0, 0x00},
{ BOLERO_CDC_RX_INTR_CTRL_PIN2_MASK0, 0xFF},
{ BOLERO_CDC_RX_INTR_CTRL_PIN2_STATUS0, 0x00},
{ BOLERO_CDC_RX_INTR_CTRL_PIN2_CLEAR0, 0x00},
{ BOLERO_CDC_RX_INTR_CTRL_LEVEL0, 0x00},
{ BOLERO_CDC_RX_INTR_CTRL_BYPASS0, 0x00},
{ BOLERO_CDC_RX_INTR_CTRL_SET0, 0x00},
{ BOLERO_CDC_RX_RX0_RX_PATH_CTL, 0x04},
{ BOLERO_CDC_RX_RX0_RX_PATH_CFG0, 0x00},
{ BOLERO_CDC_RX_RX0_RX_PATH_CFG1, 0x64},
{ BOLERO_CDC_RX_RX0_RX_PATH_CFG2, 0x8F},
{ BOLERO_CDC_RX_RX0_RX_PATH_CFG3, 0x00},
{ BOLERO_CDC_RX_RX0_RX_VOL_CTL, 0x00},
{ BOLERO_CDC_RX_RX0_RX_PATH_MIX_CTL, 0x04},
{ BOLERO_CDC_RX_RX0_RX_PATH_MIX_CFG, 0x7E},
{ BOLERO_CDC_RX_RX0_RX_VOL_MIX_CTL, 0x00},
{ BOLERO_CDC_RX_RX0_RX_PATH_SEC1, 0x08},
{ BOLERO_CDC_RX_RX0_RX_PATH_SEC2, 0x00},
{ BOLERO_CDC_RX_RX0_RX_PATH_SEC3, 0x00},
{ BOLERO_CDC_RX_RX0_RX_PATH_SEC4, 0x00},
{ BOLERO_CDC_RX_RX0_RX_PATH_SEC7, 0x00},
{ BOLERO_CDC_RX_RX0_RX_PATH_MIX_SEC0, 0x08},
{ BOLERO_CDC_RX_RX0_RX_PATH_MIX_SEC1, 0x00},
{ BOLERO_CDC_RX_RX0_RX_PATH_DSM_CTL, 0x08},
{ BOLERO_CDC_RX_RX0_RX_PATH_DSM_DATA1, 0x00},
{ BOLERO_CDC_RX_RX0_RX_PATH_DSM_DATA2, 0x00},
{ BOLERO_CDC_RX_RX0_RX_PATH_DSM_DATA3, 0x00},
{ BOLERO_CDC_RX_RX0_RX_PATH_DSM_DATA4, 0x55},
{ BOLERO_CDC_RX_RX0_RX_PATH_DSM_DATA5, 0x55},
{ BOLERO_CDC_RX_RX0_RX_PATH_DSM_DATA6, 0x55},
{ BOLERO_CDC_RX_RX1_RX_PATH_CTL, 0x04},
{ BOLERO_CDC_RX_RX1_RX_PATH_CFG0, 0x00},
{ BOLERO_CDC_RX_RX1_RX_PATH_CFG1, 0x64},
{ BOLERO_CDC_RX_RX1_RX_PATH_CFG2, 0x8F},
{ BOLERO_CDC_RX_RX1_RX_PATH_CFG3, 0x00},
{ BOLERO_CDC_RX_RX1_RX_VOL_CTL, 0x00},
{ BOLERO_CDC_RX_RX1_RX_PATH_MIX_CTL, 0x04},
{ BOLERO_CDC_RX_RX1_RX_PATH_MIX_CFG, 0x7E},
{ BOLERO_CDC_RX_RX1_RX_VOL_MIX_CTL, 0x00},
{ BOLERO_CDC_RX_RX1_RX_PATH_SEC1, 0x08},
{ BOLERO_CDC_RX_RX1_RX_PATH_SEC2, 0x00},
{ BOLERO_CDC_RX_RX1_RX_PATH_SEC3, 0x00},
{ BOLERO_CDC_RX_RX1_RX_PATH_SEC4, 0x00},
{ BOLERO_CDC_RX_RX1_RX_PATH_SEC7, 0x00},
{ BOLERO_CDC_RX_RX1_RX_PATH_MIX_SEC0, 0x08},
{ BOLERO_CDC_RX_RX1_RX_PATH_MIX_SEC1, 0x00},
{ BOLERO_CDC_RX_RX1_RX_PATH_DSM_CTL, 0x08},
{ BOLERO_CDC_RX_RX1_RX_PATH_DSM_DATA1, 0x00},
{ BOLERO_CDC_RX_RX1_RX_PATH_DSM_DATA2, 0x00},
{ BOLERO_CDC_RX_RX1_RX_PATH_DSM_DATA3, 0x00},
{ BOLERO_CDC_RX_RX1_RX_PATH_DSM_DATA4, 0x55},
{ BOLERO_CDC_RX_RX1_RX_PATH_DSM_DATA5, 0x55},
{ BOLERO_CDC_RX_RX1_RX_PATH_DSM_DATA6, 0x55},
{ BOLERO_CDC_RX_RX2_RX_PATH_CTL, 0x04},
{ BOLERO_CDC_RX_RX2_RX_PATH_CFG0, 0x00},
{ BOLERO_CDC_RX_RX2_RX_PATH_CFG1, 0x64},
{ BOLERO_CDC_RX_RX2_RX_PATH_CFG2, 0x8F},
{ BOLERO_CDC_RX_RX2_RX_PATH_CFG3, 0x00},
{ BOLERO_CDC_RX_RX2_RX_VOL_CTL, 0x00},
{ BOLERO_CDC_RX_RX2_RX_PATH_MIX_CTL, 0x04},
{ BOLERO_CDC_RX_RX2_RX_PATH_MIX_CFG, 0x7E},
{ BOLERO_CDC_RX_RX2_RX_VOL_MIX_CTL, 0x00},
{ BOLERO_CDC_RX_RX2_RX_PATH_SEC0, 0x04},
{ BOLERO_CDC_RX_RX2_RX_PATH_SEC1, 0x08},
{ BOLERO_CDC_RX_RX2_RX_PATH_SEC2, 0x00},
{ BOLERO_CDC_RX_RX2_RX_PATH_SEC3, 0x00},
{ BOLERO_CDC_RX_RX2_RX_PATH_SEC4, 0x00},
{ BOLERO_CDC_RX_RX2_RX_PATH_SEC5, 0x00},
{ BOLERO_CDC_RX_RX2_RX_PATH_SEC6, 0x00},
{ BOLERO_CDC_RX_RX2_RX_PATH_SEC7, 0x00},
{ BOLERO_CDC_RX_RX2_RX_PATH_MIX_SEC0, 0x08},
{ BOLERO_CDC_RX_RX2_RX_PATH_MIX_SEC1, 0x00},
{ BOLERO_CDC_RX_RX2_RX_PATH_DSM_CTL, 0x00},
{ BOLERO_CDC_RX_IDLE_DETECT_PATH_CTL, 0x00},
{ BOLERO_CDC_RX_IDLE_DETECT_CFG0, 0x07},
{ BOLERO_CDC_RX_IDLE_DETECT_CFG1, 0x3C},
{ BOLERO_CDC_RX_IDLE_DETECT_CFG2, 0x00},
{ BOLERO_CDC_RX_IDLE_DETECT_CFG3, 0x00},
{ BOLERO_CDC_RX_COMPANDER0_CTL0, 0x60},
{ BOLERO_CDC_RX_COMPANDER0_CTL1, 0xDB},
{ BOLERO_CDC_RX_COMPANDER0_CTL2, 0xFF},
{ BOLERO_CDC_RX_COMPANDER0_CTL3, 0x35},
{ BOLERO_CDC_RX_COMPANDER0_CTL4, 0xFF},
{ BOLERO_CDC_RX_COMPANDER0_CTL5, 0x00},
{ BOLERO_CDC_RX_COMPANDER0_CTL6, 0x01},
{ BOLERO_CDC_RX_COMPANDER0_CTL7, 0x28},
{ BOLERO_CDC_RX_COMPANDER1_CTL0, 0x60},
{ BOLERO_CDC_RX_COMPANDER1_CTL1, 0xDB},
{ BOLERO_CDC_RX_COMPANDER1_CTL2, 0xFF},
{ BOLERO_CDC_RX_COMPANDER1_CTL3, 0x35},
{ BOLERO_CDC_RX_COMPANDER1_CTL4, 0xFF},
{ BOLERO_CDC_RX_COMPANDER1_CTL5, 0x00},
{ BOLERO_CDC_RX_COMPANDER1_CTL6, 0x01},
{ BOLERO_CDC_RX_COMPANDER1_CTL7, 0x28},
{ BOLERO_CDC_RX_SIDETONE_IIR0_IIR_PATH_CTL, 0x00},
{ BOLERO_CDC_RX_SIDETONE_IIR0_IIR_GAIN_B1_CTL, 0x00},
{ BOLERO_CDC_RX_SIDETONE_IIR0_IIR_GAIN_B2_CTL, 0x00},
{ BOLERO_CDC_RX_SIDETONE_IIR0_IIR_GAIN_B3_CTL, 0x00},
{ BOLERO_CDC_RX_SIDETONE_IIR0_IIR_GAIN_B4_CTL, 0x00},
{ BOLERO_CDC_RX_SIDETONE_IIR0_IIR_GAIN_B5_CTL, 0x00},
{ BOLERO_CDC_RX_SIDETONE_IIR0_IIR_GAIN_B6_CTL, 0x00},
{ BOLERO_CDC_RX_SIDETONE_IIR0_IIR_GAIN_B7_CTL, 0x00},
{ BOLERO_CDC_RX_SIDETONE_IIR0_IIR_GAIN_B8_CTL, 0x00},
{ BOLERO_CDC_RX_SIDETONE_IIR0_IIR_CTL, 0x40},
{ BOLERO_CDC_RX_SIDETONE_IIR0_IIR_GAIN_TIMER_CTL, 0x00},
{ BOLERO_CDC_RX_SIDETONE_IIR0_IIR_COEF_B1_CTL, 0x00},
{ BOLERO_CDC_RX_SIDETONE_IIR0_IIR_COEF_B2_CTL, 0x00},
{ BOLERO_CDC_RX_SIDETONE_IIR1_IIR_PATH_CTL, 0x00},
{ BOLERO_CDC_RX_SIDETONE_IIR1_IIR_GAIN_B1_CTL, 0x00},
{ BOLERO_CDC_RX_SIDETONE_IIR1_IIR_GAIN_B2_CTL, 0x00},
{ BOLERO_CDC_RX_SIDETONE_IIR1_IIR_GAIN_B3_CTL, 0x00},
{ BOLERO_CDC_RX_SIDETONE_IIR1_IIR_GAIN_B4_CTL, 0x00},
{ BOLERO_CDC_RX_SIDETONE_IIR1_IIR_GAIN_B5_CTL, 0x00},
{ BOLERO_CDC_RX_SIDETONE_IIR1_IIR_GAIN_B6_CTL, 0x00},
{ BOLERO_CDC_RX_SIDETONE_IIR1_IIR_GAIN_B7_CTL, 0x00},
{ BOLERO_CDC_RX_SIDETONE_IIR1_IIR_GAIN_B8_CTL, 0x00},
{ BOLERO_CDC_RX_SIDETONE_IIR1_IIR_CTL, 0x40},
{ BOLERO_CDC_RX_SIDETONE_IIR1_IIR_GAIN_TIMER_CTL, 0x00},
{ BOLERO_CDC_RX_SIDETONE_IIR1_IIR_COEF_B1_CTL, 0x00},
{ BOLERO_CDC_RX_SIDETONE_IIR1_IIR_COEF_B2_CTL, 0x00},
{ BOLERO_CDC_RX_IIR_INP_MUX_IIR0_MIX_CFG0, 0x00},
{ BOLERO_CDC_RX_IIR_INP_MUX_IIR0_MIX_CFG1, 0x00},
{ BOLERO_CDC_RX_IIR_INP_MUX_IIR0_MIX_CFG2, 0x00},
{ BOLERO_CDC_RX_IIR_INP_MUX_IIR0_MIX_CFG3, 0x00},
{ BOLERO_CDC_RX_IIR_INP_MUX_IIR1_MIX_CFG0, 0x00},
{ BOLERO_CDC_RX_IIR_INP_MUX_IIR1_MIX_CFG1, 0x00},
{ BOLERO_CDC_RX_IIR_INP_MUX_IIR1_MIX_CFG2, 0x00},
{ BOLERO_CDC_RX_IIR_INP_MUX_IIR1_MIX_CFG3, 0x00},
{ BOLERO_CDC_RX_SIDETONE_SRC0_ST_SRC_PATH_CTL, 0x04},
{ BOLERO_CDC_RX_SIDETONE_SRC0_ST_SRC_PATH_CFG1, 0x00},
{ BOLERO_CDC_RX_SIDETONE_SRC1_ST_SRC_PATH_CTL, 0x04},
{ BOLERO_CDC_RX_SIDETONE_SRC1_ST_SRC_PATH_CFG1, 0x00},
{ BOLERO_CDC_RX_EC_REF_HQ0_EC_REF_HQ_PATH_CTL, 0x00},
{ BOLERO_CDC_RX_EC_REF_HQ0_EC_REF_HQ_CFG0, 0x01},
{ BOLERO_CDC_RX_EC_REF_HQ1_EC_REF_HQ_PATH_CTL, 0x00},
{ BOLERO_CDC_RX_EC_REF_HQ1_EC_REF_HQ_CFG0, 0x01},
{ BOLERO_CDC_RX_EC_REF_HQ2_EC_REF_HQ_PATH_CTL, 0x00},
{ BOLERO_CDC_RX_EC_REF_HQ2_EC_REF_HQ_CFG0, 0x01},
{ BOLERO_CDC_RX_EC_ASRC0_CLK_RST_CTL, 0x00},
{ BOLERO_CDC_RX_EC_ASRC0_CTL0, 0x00},
{ BOLERO_CDC_RX_EC_ASRC0_CTL1, 0x00},
{ BOLERO_CDC_RX_EC_ASRC0_FIFO_CTL, 0xA8},
{ BOLERO_CDC_RX_EC_ASRC0_STATUS_FMIN_CNTR_LSB, 0x00},
{ BOLERO_CDC_RX_EC_ASRC0_STATUS_FMIN_CNTR_MSB, 0x00},
{ BOLERO_CDC_RX_EC_ASRC0_STATUS_FMAX_CNTR_LSB, 0x00},
{ BOLERO_CDC_RX_EC_ASRC0_STATUS_FMAX_CNTR_MSB, 0x00},
{ BOLERO_CDC_RX_EC_ASRC0_STATUS_FIFO, 0x00},
{ BOLERO_CDC_RX_EC_ASRC1_CLK_RST_CTL, 0x00},
{ BOLERO_CDC_RX_EC_ASRC1_CTL0, 0x00},
{ BOLERO_CDC_RX_EC_ASRC1_CTL1, 0x00},
{ BOLERO_CDC_RX_EC_ASRC1_FIFO_CTL, 0xA8},
{ BOLERO_CDC_RX_EC_ASRC1_STATUS_FMIN_CNTR_LSB, 0x00},
{ BOLERO_CDC_RX_EC_ASRC1_STATUS_FMIN_CNTR_MSB, 0x00},
{ BOLERO_CDC_RX_EC_ASRC1_STATUS_FMAX_CNTR_LSB, 0x00},
{ BOLERO_CDC_RX_EC_ASRC1_STATUS_FMAX_CNTR_MSB, 0x00},
{ BOLERO_CDC_RX_EC_ASRC1_STATUS_FIFO, 0x00},
{ BOLERO_CDC_RX_EC_ASRC2_CLK_RST_CTL, 0x00},
{ BOLERO_CDC_RX_EC_ASRC2_CTL0, 0x00},
{ BOLERO_CDC_RX_EC_ASRC2_CTL1, 0x00},
{ BOLERO_CDC_RX_EC_ASRC2_FIFO_CTL, 0xA8},
{ BOLERO_CDC_RX_EC_ASRC2_STATUS_FMIN_CNTR_LSB, 0x00},
{ BOLERO_CDC_RX_EC_ASRC2_STATUS_FMIN_CNTR_MSB, 0x00},
{ BOLERO_CDC_RX_EC_ASRC2_STATUS_FMAX_CNTR_LSB, 0x00},
{ BOLERO_CDC_RX_EC_ASRC2_STATUS_FMAX_CNTR_MSB, 0x00},
{ BOLERO_CDC_RX_EC_ASRC2_STATUS_FIFO, 0x00},
{ BOLERO_CDC_RX_DSD0_PATH_CTL, 0x00},
{ BOLERO_CDC_RX_DSD0_CFG0, 0x00},
{ BOLERO_CDC_RX_DSD0_CFG1, 0x62},
{ BOLERO_CDC_RX_DSD0_CFG2, 0x96},
{ BOLERO_CDC_RX_DSD1_PATH_CTL, 0x00},
{ BOLERO_CDC_RX_DSD1_CFG0, 0x00},
{ BOLERO_CDC_RX_DSD1_CFG1, 0x62},
{ BOLERO_CDC_RX_DSD1_CFG2, 0x96},
/* WSA Macro */
{ BOLERO_CDC_WSA_CLK_RST_CTRL_MCLK_CONTROL, 0x00},
{ BOLERO_CDC_WSA_CLK_RST_CTRL_FS_CNT_CONTROL, 0x00},
{ BOLERO_CDC_WSA_CLK_RST_CTRL_SWR_CONTROL, 0x00},
{ BOLERO_CDC_WSA_TOP_TOP_CFG0, 0x00},
{ BOLERO_CDC_WSA_TOP_TOP_CFG1, 0x00},
{ BOLERO_CDC_WSA_TOP_FREQ_MCLK, 0x00},
{ BOLERO_CDC_WSA_TOP_DEBUG_BUS_SEL, 0x00},
{ BOLERO_CDC_WSA_TOP_DEBUG_EN0, 0x00},
{ BOLERO_CDC_WSA_TOP_DEBUG_EN1, 0x00},
{ BOLERO_CDC_WSA_TOP_DEBUG_DSM_LB, 0x88},
{ BOLERO_CDC_WSA_TOP_RX_I2S_CTL, 0x0C},
{ BOLERO_CDC_WSA_TOP_TX_I2S_CTL, 0x0C},
{ BOLERO_CDC_WSA_TOP_I2S_CLK, 0x02},
{ BOLERO_CDC_WSA_TOP_I2S_RESET, 0x00},
{ BOLERO_CDC_WSA_RX_INP_MUX_RX_INT0_CFG0, 0x00},
{ BOLERO_CDC_WSA_RX_INP_MUX_RX_INT0_CFG1, 0x00},
{ BOLERO_CDC_WSA_RX_INP_MUX_RX_INT1_CFG0, 0x00},
{ BOLERO_CDC_WSA_RX_INP_MUX_RX_INT1_CFG1, 0x00},
{ BOLERO_CDC_WSA_RX_INP_MUX_RX_MIX_CFG0, 0x00},
{ BOLERO_CDC_WSA_RX_INP_MUX_RX_EC_CFG0, 0x00},
{ BOLERO_CDC_WSA_RX_INP_MUX_SOFTCLIP_CFG0, 0x00},
{ BOLERO_CDC_WSA_VBAT_BCL_VBAT_PATH_CTL, 0x00},
{ BOLERO_CDC_WSA_VBAT_BCL_VBAT_CFG, 0x10},
{ BOLERO_CDC_WSA_VBAT_BCL_VBAT_ADC_CAL1, 0x00},
{ BOLERO_CDC_WSA_VBAT_BCL_VBAT_ADC_CAL2, 0x00},
{ BOLERO_CDC_WSA_VBAT_BCL_VBAT_ADC_CAL3, 0x04},
{ BOLERO_CDC_WSA_VBAT_BCL_VBAT_PK_EST1, 0xE0},
{ BOLERO_CDC_WSA_VBAT_BCL_VBAT_PK_EST2, 0x01},
{ BOLERO_CDC_WSA_VBAT_BCL_VBAT_PK_EST3, 0x40},
{ BOLERO_CDC_WSA_VBAT_BCL_VBAT_RF_PROC1, 0x2A},
{ BOLERO_CDC_WSA_VBAT_BCL_VBAT_RF_PROC2, 0x00},
{ BOLERO_CDC_WSA_VBAT_BCL_VBAT_TAC1, 0x00},
{ BOLERO_CDC_WSA_VBAT_BCL_VBAT_TAC2, 0x18},
{ BOLERO_CDC_WSA_VBAT_BCL_VBAT_TAC3, 0x18},
{ BOLERO_CDC_WSA_VBAT_BCL_VBAT_TAC4, 0x03},
{ BOLERO_CDC_WSA_VBAT_BCL_VBAT_GAIN_UPD1, 0x01},
{ BOLERO_CDC_WSA_VBAT_BCL_VBAT_GAIN_UPD2, 0x00},
{ BOLERO_CDC_WSA_VBAT_BCL_VBAT_GAIN_UPD3, 0x00},
{ BOLERO_CDC_WSA_VBAT_BCL_VBAT_GAIN_UPD4, 0x64},
{ BOLERO_CDC_WSA_VBAT_BCL_VBAT_GAIN_UPD5, 0x01},
{ BOLERO_CDC_WSA_VBAT_BCL_VBAT_DEBUG1, 0x00},
{ BOLERO_CDC_WSA_VBAT_BCL_VBAT_GAIN_UPD_MON, 0x00},
{ BOLERO_CDC_WSA_VBAT_BCL_VBAT_GAIN_MON_VAL, 0x00},
{ BOLERO_CDC_WSA_VBAT_BCL_VBAT_BAN, 0x0C},
{ BOLERO_CDC_WSA_VBAT_BCL_VBAT_BCL_GAIN_UPD1, 0x00},
{ BOLERO_CDC_WSA_VBAT_BCL_VBAT_BCL_GAIN_UPD2, 0x77},
{ BOLERO_CDC_WSA_VBAT_BCL_VBAT_BCL_GAIN_UPD3, 0x01},
{ BOLERO_CDC_WSA_VBAT_BCL_VBAT_BCL_GAIN_UPD4, 0x00},
{ BOLERO_CDC_WSA_VBAT_BCL_VBAT_BCL_GAIN_UPD5, 0x4B},
{ BOLERO_CDC_WSA_VBAT_BCL_VBAT_BCL_GAIN_UPD6, 0x00},
{ BOLERO_CDC_WSA_VBAT_BCL_VBAT_BCL_GAIN_UPD7, 0x01},
{ BOLERO_CDC_WSA_VBAT_BCL_VBAT_BCL_GAIN_UPD8, 0x00},
{ BOLERO_CDC_WSA_VBAT_BCL_VBAT_BCL_GAIN_UPD9, 0x00},
{ BOLERO_CDC_WSA_VBAT_BCL_VBAT_BCL_ATTN1, 0x04},
{ BOLERO_CDC_WSA_VBAT_BCL_VBAT_BCL_ATTN2, 0x08},
{ BOLERO_CDC_WSA_VBAT_BCL_VBAT_BCL_ATTN3, 0x0C},
{ BOLERO_CDC_WSA_VBAT_BCL_VBAT_DECODE_CTL1, 0xE0},
{ BOLERO_CDC_WSA_VBAT_BCL_VBAT_DECODE_CTL2, 0x00},
{ BOLERO_CDC_WSA_VBAT_BCL_VBAT_DECODE_CFG1, 0x00},
{ BOLERO_CDC_WSA_VBAT_BCL_VBAT_DECODE_CFG2, 0x00},
{ BOLERO_CDC_WSA_VBAT_BCL_VBAT_DECODE_CFG3, 0x00},
{ BOLERO_CDC_WSA_VBAT_BCL_VBAT_DECODE_CFG4, 0x00},
{ BOLERO_CDC_WSA_VBAT_BCL_VBAT_DECODE_ST, 0x00},
{ BOLERO_CDC_WSA_TX0_SPKR_PROT_PATH_CTL, 0x02},
{ BOLERO_CDC_WSA_TX0_SPKR_PROT_PATH_CFG0, 0x00},
{ BOLERO_CDC_WSA_TX1_SPKR_PROT_PATH_CTL, 0x02},
{ BOLERO_CDC_WSA_TX1_SPKR_PROT_PATH_CFG0, 0x00},
{ BOLERO_CDC_WSA_TX2_SPKR_PROT_PATH_CTL, 0x02},
{ BOLERO_CDC_WSA_TX2_SPKR_PROT_PATH_CFG0, 0x00},
{ BOLERO_CDC_WSA_TX3_SPKR_PROT_PATH_CTL, 0x02},
{ BOLERO_CDC_WSA_TX3_SPKR_PROT_PATH_CFG0, 0x00},
{ BOLERO_CDC_WSA_INTR_CTRL_CFG, 0x00},
{ BOLERO_CDC_WSA_INTR_CTRL_CLR_COMMIT, 0x00},
{ BOLERO_CDC_WSA_INTR_CTRL_PIN1_MASK0, 0xFF},
{ BOLERO_CDC_WSA_INTR_CTRL_PIN1_STATUS0, 0x00},
{ BOLERO_CDC_WSA_INTR_CTRL_PIN1_CLEAR0, 0x00},
{ BOLERO_CDC_WSA_INTR_CTRL_PIN2_MASK0, 0xFF},
{ BOLERO_CDC_WSA_INTR_CTRL_PIN2_STATUS0, 0x00},
{ BOLERO_CDC_WSA_INTR_CTRL_PIN2_CLEAR0, 0x00},
{ BOLERO_CDC_WSA_INTR_CTRL_LEVEL0, 0x00},
{ BOLERO_CDC_WSA_INTR_CTRL_BYPASS0, 0x00},
{ BOLERO_CDC_WSA_INTR_CTRL_SET0, 0x00},
{ BOLERO_CDC_WSA_RX0_RX_PATH_CTL, 0x04},
{ BOLERO_CDC_WSA_RX0_RX_PATH_CFG0, 0x00},
{ BOLERO_CDC_WSA_RX0_RX_PATH_CFG1, 0x64},
{ BOLERO_CDC_WSA_RX0_RX_PATH_CFG2, 0x8F},
{ BOLERO_CDC_WSA_RX0_RX_PATH_CFG3, 0x00},
{ BOLERO_CDC_WSA_RX0_RX_VOL_CTL, 0x00},
{ BOLERO_CDC_WSA_RX0_RX_PATH_MIX_CTL, 0x04},
{ BOLERO_CDC_WSA_RX0_RX_PATH_MIX_CFG, 0x7E},
{ BOLERO_CDC_WSA_RX0_RX_VOL_MIX_CTL, 0x00},
{ BOLERO_CDC_WSA_RX0_RX_PATH_SEC0, 0x04},
{ BOLERO_CDC_WSA_RX0_RX_PATH_SEC1, 0x08},
{ BOLERO_CDC_WSA_RX0_RX_PATH_SEC2, 0x00},
{ BOLERO_CDC_WSA_RX0_RX_PATH_SEC3, 0x00},
{ BOLERO_CDC_WSA_RX0_RX_PATH_SEC5, 0x00},
{ BOLERO_CDC_WSA_RX0_RX_PATH_SEC6, 0x00},
{ BOLERO_CDC_WSA_RX0_RX_PATH_SEC7, 0x00},
{ BOLERO_CDC_WSA_RX0_RX_PATH_MIX_SEC0, 0x08},
{ BOLERO_CDC_WSA_RX0_RX_PATH_MIX_SEC1, 0x00},
{ BOLERO_CDC_WSA_RX0_RX_PATH_DSMDEM_CTL, 0x00},
{ BOLERO_CDC_WSA_RX1_RX_PATH_CFG0, 0x00},
{ BOLERO_CDC_WSA_RX1_RX_PATH_CFG1, 0x64},
{ BOLERO_CDC_WSA_RX1_RX_PATH_CFG2, 0x8F},
{ BOLERO_CDC_WSA_RX1_RX_PATH_CFG3, 0x00},
{ BOLERO_CDC_WSA_RX1_RX_VOL_CTL, 0x00},
{ BOLERO_CDC_WSA_RX1_RX_PATH_MIX_CTL, 0x04},
{ BOLERO_CDC_WSA_RX1_RX_PATH_MIX_CFG, 0x7E},
{ BOLERO_CDC_WSA_RX1_RX_VOL_MIX_CTL, 0x00},
{ BOLERO_CDC_WSA_RX1_RX_PATH_SEC0, 0x04},
{ BOLERO_CDC_WSA_RX1_RX_PATH_SEC1, 0x08},
{ BOLERO_CDC_WSA_RX1_RX_PATH_SEC2, 0x00},
{ BOLERO_CDC_WSA_RX1_RX_PATH_SEC3, 0x00},
{ BOLERO_CDC_WSA_RX1_RX_PATH_SEC5, 0x00},
{ BOLERO_CDC_WSA_RX1_RX_PATH_SEC6, 0x00},
{ BOLERO_CDC_WSA_RX1_RX_PATH_SEC7, 0x00},
{ BOLERO_CDC_WSA_RX1_RX_PATH_MIX_SEC0, 0x08},
{ BOLERO_CDC_WSA_RX1_RX_PATH_MIX_SEC1, 0x00},
{ BOLERO_CDC_WSA_RX1_RX_PATH_DSMDEM_CTL, 0x00},
{ BOLERO_CDC_WSA_BOOST0_BOOST_PATH_CTL, 0x00},
{ BOLERO_CDC_WSA_BOOST0_BOOST_CTL, 0xD0},
{ BOLERO_CDC_WSA_BOOST0_BOOST_CFG1, 0x89},
{ BOLERO_CDC_WSA_BOOST0_BOOST_CFG2, 0x04},
{ BOLERO_CDC_WSA_BOOST1_BOOST_PATH_CTL, 0x00},
{ BOLERO_CDC_WSA_BOOST1_BOOST_CTL, 0xD0},
{ BOLERO_CDC_WSA_BOOST1_BOOST_CFG1, 0x89},
{ BOLERO_CDC_WSA_BOOST1_BOOST_CFG2, 0x04},
{ BOLERO_CDC_WSA_COMPANDER0_CTL0, 0x60},
{ BOLERO_CDC_WSA_COMPANDER0_CTL1, 0xDB},
{ BOLERO_CDC_WSA_COMPANDER0_CTL2, 0xFF},
{ BOLERO_CDC_WSA_COMPANDER0_CTL3, 0x35},
{ BOLERO_CDC_WSA_COMPANDER0_CTL4, 0xFF},
{ BOLERO_CDC_WSA_COMPANDER0_CTL5, 0x00},
{ BOLERO_CDC_WSA_COMPANDER0_CTL6, 0x01},
{ BOLERO_CDC_WSA_COMPANDER0_CTL7, 0x28},
{ BOLERO_CDC_WSA_COMPANDER1_CTL0, 0x60},
{ BOLERO_CDC_WSA_COMPANDER1_CTL1, 0xDB},
{ BOLERO_CDC_WSA_COMPANDER1_CTL2, 0xFF},
{ BOLERO_CDC_WSA_COMPANDER1_CTL3, 0x35},
{ BOLERO_CDC_WSA_COMPANDER1_CTL4, 0xFF},
{ BOLERO_CDC_WSA_COMPANDER1_CTL5, 0x00},
{ BOLERO_CDC_WSA_COMPANDER1_CTL6, 0x01},
{ BOLERO_CDC_WSA_COMPANDER1_CTL7, 0x28},
{ BOLERO_CDC_WSA_SOFTCLIP0_CRC, 0x00},
{ BOLERO_CDC_WSA_SOFTCLIP0_SOFTCLIP_CTRL, 0x38},
{ BOLERO_CDC_WSA_SOFTCLIP1_CRC, 0x00},
{ BOLERO_CDC_WSA_SOFTCLIP1_SOFTCLIP_CTRL, 0x38},
{ BOLERO_CDC_WSA_EC_HQ0_EC_REF_HQ_PATH_CTL, 0x00},
{ BOLERO_CDC_WSA_EC_HQ0_EC_REF_HQ_CFG0, 0x01},
{ BOLERO_CDC_WSA_EC_HQ1_EC_REF_HQ_PATH_CTL, 0x00},
{ BOLERO_CDC_WSA_EC_HQ1_EC_REF_HQ_CFG0, 0x01},
{ BOLERO_CDC_WSA_SPLINE_ASRC0_CLK_RST_CTL, 0x00},
{ BOLERO_CDC_WSA_SPLINE_ASRC0_CTL0, 0x00},
{ BOLERO_CDC_WSA_SPLINE_ASRC0_CTL1, 0x00},
{ BOLERO_CDC_WSA_SPLINE_ASRC0_FIFO_CTL, 0xA8},
{ BOLERO_CDC_WSA_SPLINE_ASRC0_STATUS_FMIN_CNTR_LSB, 0x00},
{ BOLERO_CDC_WSA_SPLINE_ASRC0_STATUS_FMIN_CNTR_MSB, 0x00},
{ BOLERO_CDC_WSA_SPLINE_ASRC0_STATUS_FMAX_CNTR_LSB, 0x00},
{ BOLERO_CDC_WSA_SPLINE_ASRC0_STATUS_FMAX_CNTR_MSB, 0x00},
{ BOLERO_CDC_WSA_SPLINE_ASRC0_STATUS_FIFO, 0x00},
{ BOLERO_CDC_WSA_SPLINE_ASRC1_CLK_RST_CTL, 0x00},
{ BOLERO_CDC_WSA_SPLINE_ASRC1_CTL0, 0x00},
{ BOLERO_CDC_WSA_SPLINE_ASRC1_CTL1, 0x00},
{ BOLERO_CDC_WSA_SPLINE_ASRC1_FIFO_CTL, 0xA8},
{ BOLERO_CDC_WSA_SPLINE_ASRC1_STATUS_FMIN_CNTR_LSB, 0x00},
{ BOLERO_CDC_WSA_SPLINE_ASRC1_STATUS_FMIN_CNTR_MSB, 0x00},
{ BOLERO_CDC_WSA_SPLINE_ASRC1_STATUS_FMAX_CNTR_LSB, 0x00},
{ BOLERO_CDC_WSA_SPLINE_ASRC1_STATUS_FMAX_CNTR_MSB, 0x00},
{ BOLERO_CDC_WSA_SPLINE_ASRC1_STATUS_FIFO, 0x00},
/* VA macro */
{ BOLERO_CDC_VA_CLK_RST_CTRL_MCLK_CONTROL, 0x00},
{ BOLERO_CDC_VA_CLK_RST_CTRL_FS_CNT_CONTROL, 0x00},
{ BOLERO_CDC_VA_TOP_CSR_TOP_CFG0, 0x00},
{ BOLERO_CDC_VA_TOP_CSR_DMIC0_CTL, 0x00},
{ BOLERO_CDC_VA_TOP_CSR_DMIC1_CTL, 0x00},
{ BOLERO_CDC_VA_TOP_CSR_DMIC2_CTL, 0x00},
{ BOLERO_CDC_VA_TOP_CSR_DMIC3_CTL, 0x00},
{ BOLERO_CDC_VA_TOP_CSR_DMIC_CFG, 0x80},
{ BOLERO_CDC_VA_TOP_CSR_DEBUG_BUS, 0x00},
{ BOLERO_CDC_VA_TOP_CSR_DEBUG_EN, 0x00},
{ BOLERO_CDC_VA_TOP_CSR_TX_I2S_CTL, 0x0C},
{ BOLERO_CDC_VA_TOP_CSR_I2S_CLK, 0x00},
{ BOLERO_CDC_VA_TOP_CSR_I2S_RESET, 0x00},
{ BOLERO_CDC_VA_TOP_CSR_CORE_ID_0, 0x00},
{ BOLERO_CDC_VA_TOP_CSR_CORE_ID_1, 0x00},
{ BOLERO_CDC_VA_TOP_CSR_CORE_ID_2, 0x00},
{ BOLERO_CDC_VA_TOP_CSR_CORE_ID_3, 0x00},
/* VA core */
{ BOLERO_CDC_VA_INP_MUX_ADC_MUX0_CFG0, 0x00},
{ BOLERO_CDC_VA_INP_MUX_ADC_MUX0_CFG1, 0x00},
{ BOLERO_CDC_VA_INP_MUX_ADC_MUX1_CFG0, 0x00},
{ BOLERO_CDC_VA_INP_MUX_ADC_MUX1_CFG1, 0x00},
{ BOLERO_CDC_VA_INP_MUX_ADC_MUX2_CFG0, 0x00},
{ BOLERO_CDC_VA_INP_MUX_ADC_MUX2_CFG1, 0x00},
{ BOLERO_CDC_VA_INP_MUX_ADC_MUX3_CFG0, 0x00},
{ BOLERO_CDC_VA_INP_MUX_ADC_MUX3_CFG1, 0x00},
{ BOLERO_CDC_VA_INP_MUX_ADC_MUX4_CFG0, 0x00},
{ BOLERO_CDC_VA_INP_MUX_ADC_MUX4_CFG1, 0x00},
{ BOLERO_CDC_VA_INP_MUX_ADC_MUX5_CFG0, 0x00},
{ BOLERO_CDC_VA_INP_MUX_ADC_MUX5_CFG1, 0x00},
{ BOLERO_CDC_VA_INP_MUX_ADC_MUX6_CFG0, 0x00},
{ BOLERO_CDC_VA_INP_MUX_ADC_MUX6_CFG1, 0x00},
{ BOLERO_CDC_VA_INP_MUX_ADC_MUX7_CFG0, 0x00},
{ BOLERO_CDC_VA_INP_MUX_ADC_MUX7_CFG1, 0x00},
{ BOLERO_CDC_VA_TX0_TX_PATH_CTL, 0x04},
{ BOLERO_CDC_VA_TX0_TX_PATH_CFG0, 0x10},
{ BOLERO_CDC_VA_TX0_TX_PATH_CFG1, 0x0B},
{ BOLERO_CDC_VA_TX0_TX_VOL_CTL, 0x00},
{ BOLERO_CDC_VA_TX0_TX_PATH_SEC0, 0x00},
{ BOLERO_CDC_VA_TX0_TX_PATH_SEC1, 0x00},
{ BOLERO_CDC_VA_TX0_TX_PATH_SEC2, 0x01},
{ BOLERO_CDC_VA_TX0_TX_PATH_SEC3, 0x3C},
{ BOLERO_CDC_VA_TX0_TX_PATH_SEC4, 0x20},
{ BOLERO_CDC_VA_TX0_TX_PATH_SEC5, 0x00},
{ BOLERO_CDC_VA_TX0_TX_PATH_SEC6, 0x00},
{ BOLERO_CDC_VA_TX0_TX_PATH_SEC7, 0x25},
{ BOLERO_CDC_VA_TX1_TX_PATH_CTL, 0x04},
{ BOLERO_CDC_VA_TX1_TX_PATH_CFG0, 0x10},
{ BOLERO_CDC_VA_TX1_TX_PATH_CFG1, 0x0B},
{ BOLERO_CDC_VA_TX1_TX_VOL_CTL, 0x00},
{ BOLERO_CDC_VA_TX1_TX_PATH_SEC0, 0x00},
{ BOLERO_CDC_VA_TX1_TX_PATH_SEC1, 0x00},
{ BOLERO_CDC_VA_TX1_TX_PATH_SEC2, 0x01},
{ BOLERO_CDC_VA_TX1_TX_PATH_SEC3, 0x3C},
{ BOLERO_CDC_VA_TX1_TX_PATH_SEC4, 0x20},
{ BOLERO_CDC_VA_TX1_TX_PATH_SEC5, 0x00},
{ BOLERO_CDC_VA_TX1_TX_PATH_SEC6, 0x00},
{ BOLERO_CDC_VA_TX2_TX_PATH_CTL, 0x04},
{ BOLERO_CDC_VA_TX2_TX_PATH_CFG0, 0x10},
{ BOLERO_CDC_VA_TX2_TX_PATH_CFG1, 0x0B},
{ BOLERO_CDC_VA_TX2_TX_VOL_CTL, 0x00},
{ BOLERO_CDC_VA_TX2_TX_PATH_SEC0, 0x00},
{ BOLERO_CDC_VA_TX2_TX_PATH_SEC1, 0x00},
{ BOLERO_CDC_VA_TX2_TX_PATH_SEC2, 0x01},
{ BOLERO_CDC_VA_TX2_TX_PATH_SEC3, 0x3C},
{ BOLERO_CDC_VA_TX2_TX_PATH_SEC4, 0x20},
{ BOLERO_CDC_VA_TX2_TX_PATH_SEC5, 0x00},
{ BOLERO_CDC_VA_TX2_TX_PATH_SEC6, 0x00},
{ BOLERO_CDC_VA_TX3_TX_PATH_CTL, 0x04},
{ BOLERO_CDC_VA_TX3_TX_PATH_CFG0, 0x10},
{ BOLERO_CDC_VA_TX3_TX_PATH_CFG1, 0x0B},
{ BOLERO_CDC_VA_TX3_TX_VOL_CTL, 0x00},
{ BOLERO_CDC_VA_TX3_TX_PATH_SEC0, 0x00},
{ BOLERO_CDC_VA_TX3_TX_PATH_SEC1, 0x00},
{ BOLERO_CDC_VA_TX3_TX_PATH_SEC2, 0x01},
{ BOLERO_CDC_VA_TX3_TX_PATH_SEC3, 0x3C},
{ BOLERO_CDC_VA_TX3_TX_PATH_SEC4, 0x20},
{ BOLERO_CDC_VA_TX3_TX_PATH_SEC5, 0x00},
{ BOLERO_CDC_VA_TX3_TX_PATH_SEC6, 0x00},
{ BOLERO_CDC_VA_TX4_TX_PATH_CTL, 0x04},
{ BOLERO_CDC_VA_TX4_TX_PATH_CFG0, 0x10},
{ BOLERO_CDC_VA_TX4_TX_PATH_CFG1, 0x0B},
{ BOLERO_CDC_VA_TX4_TX_VOL_CTL, 0x00},
{ BOLERO_CDC_VA_TX4_TX_PATH_SEC0, 0x00},
{ BOLERO_CDC_VA_TX4_TX_PATH_SEC1, 0x00},
{ BOLERO_CDC_VA_TX4_TX_PATH_SEC2, 0x01},
{ BOLERO_CDC_VA_TX4_TX_PATH_SEC3, 0x3C},
{ BOLERO_CDC_VA_TX4_TX_PATH_SEC4, 0x20},
{ BOLERO_CDC_VA_TX4_TX_PATH_SEC5, 0x00},
{ BOLERO_CDC_VA_TX4_TX_PATH_SEC6, 0x00},
{ BOLERO_CDC_VA_TX5_TX_PATH_CTL, 0x04},
{ BOLERO_CDC_VA_TX5_TX_PATH_CFG0, 0x10},
{ BOLERO_CDC_VA_TX5_TX_PATH_CFG1, 0x0B},
{ BOLERO_CDC_VA_TX5_TX_VOL_CTL, 0x00},
{ BOLERO_CDC_VA_TX5_TX_PATH_SEC0, 0x00},
{ BOLERO_CDC_VA_TX5_TX_PATH_SEC1, 0x00},
{ BOLERO_CDC_VA_TX5_TX_PATH_SEC2, 0x01},
{ BOLERO_CDC_VA_TX5_TX_PATH_SEC3, 0x3C},
{ BOLERO_CDC_VA_TX5_TX_PATH_SEC4, 0x20},
{ BOLERO_CDC_VA_TX5_TX_PATH_SEC5, 0x00},
{ BOLERO_CDC_VA_TX5_TX_PATH_SEC6, 0x00},
{ BOLERO_CDC_VA_TX6_TX_PATH_CTL, 0x04},
{ BOLERO_CDC_VA_TX6_TX_PATH_CFG0, 0x10},
{ BOLERO_CDC_VA_TX6_TX_PATH_CFG1, 0x0B},
{ BOLERO_CDC_VA_TX6_TX_VOL_CTL, 0x00},
{ BOLERO_CDC_VA_TX6_TX_PATH_SEC0, 0x00},
{ BOLERO_CDC_VA_TX6_TX_PATH_SEC1, 0x00},
{ BOLERO_CDC_VA_TX6_TX_PATH_SEC2, 0x01},
{ BOLERO_CDC_VA_TX6_TX_PATH_SEC3, 0x3C},
{ BOLERO_CDC_VA_TX6_TX_PATH_SEC4, 0x20},
{ BOLERO_CDC_VA_TX6_TX_PATH_SEC5, 0x00},
{ BOLERO_CDC_VA_TX6_TX_PATH_SEC6, 0x00},
{ BOLERO_CDC_VA_TX7_TX_PATH_CTL, 0x04},
{ BOLERO_CDC_VA_TX7_TX_PATH_CFG0, 0x10},
{ BOLERO_CDC_VA_TX7_TX_PATH_CFG1, 0x0B},
{ BOLERO_CDC_VA_TX7_TX_VOL_CTL, 0x00},
{ BOLERO_CDC_VA_TX7_TX_PATH_SEC0, 0x00},
{ BOLERO_CDC_VA_TX7_TX_PATH_SEC1, 0x00},
{ BOLERO_CDC_VA_TX7_TX_PATH_SEC2, 0x01},
{ BOLERO_CDC_VA_TX7_TX_PATH_SEC3, 0x3C},
{ BOLERO_CDC_VA_TX7_TX_PATH_SEC4, 0x20},
{ BOLERO_CDC_VA_TX7_TX_PATH_SEC5, 0x00},
{ BOLERO_CDC_VA_TX7_TX_PATH_SEC6, 0x00},
};
static bool bolero_is_readable_register(struct device *dev,
unsigned int reg)
{
struct bolero_priv *priv = dev_get_drvdata(dev);
u16 reg_offset;
int macro_id;
u8 *reg_tbl = NULL;
if (!priv)
return false;
macro_id = bolero_get_macro_id(priv->va_without_decimation,
reg);
if (macro_id < 0 || !priv->macros_supported[macro_id])
return false;
reg_tbl = bolero_reg_access[macro_id];
reg_offset = reg - macro_id_base_offset[macro_id];
if (reg_tbl)
return (reg_tbl[reg_offset] & RD_REG);
return false;
}
static bool bolero_is_writeable_register(struct device *dev,
unsigned int reg)
{
struct bolero_priv *priv = dev_get_drvdata(dev);
u16 reg_offset;
int macro_id;
const u8 *reg_tbl = NULL;
if (!priv)
return false;
macro_id = bolero_get_macro_id(priv->va_without_decimation,
reg);
if (macro_id < 0 || !priv->macros_supported[macro_id])
return false;
reg_tbl = bolero_reg_access[macro_id];
reg_offset = reg - macro_id_base_offset[macro_id];
if (reg_tbl)
return (reg_tbl[reg_offset] & WR_REG);
return false;
}
static bool bolero_is_volatile_register(struct device *dev,
unsigned int reg)
{
return true;
}
const struct regmap_config bolero_regmap_config = {
.reg_bits = 16,
.val_bits = 8,
.reg_stride = 4,
.cache_type = REGCACHE_RBTREE,
.reg_defaults = bolero_defaults,
.num_reg_defaults = ARRAY_SIZE(bolero_defaults),
.max_register = BOLERO_CDC_MAX_REGISTER,
.writeable_reg = bolero_is_writeable_register,
.volatile_reg = bolero_is_volatile_register,
.readable_reg = bolero_is_readable_register,
};

View file

@ -0,0 +1,768 @@
/*
* Copyright (c) 2018 The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include <linux/types.h>
#include "bolero_cdc.h"
#include "internal.h"
u8 bolero_tx_reg_access[BOLERO_CDC_TX_MACRO_MAX] = {
[BOLERO_REG(BOLERO_CDC_TX_CLK_RST_CTRL_MCLK_CONTROL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_CLK_RST_CTRL_FS_CNT_CONTROL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_CLK_RST_CTRL_SWR_CONTROL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_TOP_CSR_TOP_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_TOP_CSR_ANC_CFG)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_TOP_CSR_SWR_CTRL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_TOP_CSR_FREQ_MCLK)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_TOP_CSR_DEBUG_BUS)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_TOP_CSR_DEBUG_EN)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_TOP_CSR_TX_I2S_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_TOP_CSR_I2S_CLK)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_TOP_CSR_I2S_RESET)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_TOP_CSR_SWR_DMIC0_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_TOP_CSR_SWR_DMIC1_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_TOP_CSR_SWR_DMIC2_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_TOP_CSR_SWR_DMIC3_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_TOP_CSR_SWR_AMIC0_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_TOP_CSR_SWR_AMIC1_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_ANC0_CLK_RESET_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_ANC0_MODE_1_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_ANC0_MODE_2_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_ANC0_FF_SHIFT)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_ANC0_FB_SHIFT)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_ANC0_LPF_FF_A_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_ANC0_LPF_FF_B_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_ANC0_LPF_FB_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_ANC0_SMLPF_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_ANC0_DCFLT_SHIFT_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_ANC0_IIR_ADAPT_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_ANC0_IIR_COEFF_1_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_ANC0_IIR_COEFF_2_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_ANC0_FF_A_GAIN_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_ANC0_FF_B_GAIN_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_ANC0_FB_GAIN_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_INP_MUX_ADC_MUX0_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_INP_MUX_ADC_MUX0_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_INP_MUX_ADC_MUX1_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_INP_MUX_ADC_MUX1_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_INP_MUX_ADC_MUX2_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_INP_MUX_ADC_MUX2_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_INP_MUX_ADC_MUX3_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_INP_MUX_ADC_MUX3_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_INP_MUX_ADC_MUX4_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_INP_MUX_ADC_MUX4_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_INP_MUX_ADC_MUX5_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_INP_MUX_ADC_MUX5_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_INP_MUX_ADC_MUX6_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_INP_MUX_ADC_MUX6_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_INP_MUX_ADC_MUX7_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX_INP_MUX_ADC_MUX7_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX0_TX_PATH_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX0_TX_PATH_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX0_TX_PATH_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX0_TX_VOL_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX0_TX_PATH_SEC0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX0_TX_PATH_SEC1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX0_TX_PATH_SEC2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX0_TX_PATH_SEC3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX0_TX_PATH_SEC4)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX0_TX_PATH_SEC5)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX0_TX_PATH_SEC6)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX0_TX_PATH_SEC7)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX1_TX_PATH_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX1_TX_PATH_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX1_TX_PATH_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX1_TX_VOL_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX1_TX_PATH_SEC0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX1_TX_PATH_SEC1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX1_TX_PATH_SEC2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX1_TX_PATH_SEC3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX1_TX_PATH_SEC4)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX1_TX_PATH_SEC5)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX1_TX_PATH_SEC6)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX2_TX_PATH_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX2_TX_PATH_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX2_TX_PATH_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX2_TX_VOL_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX2_TX_PATH_SEC0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX2_TX_PATH_SEC1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX2_TX_PATH_SEC2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX2_TX_PATH_SEC3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX2_TX_PATH_SEC4)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX2_TX_PATH_SEC5)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX2_TX_PATH_SEC6)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX3_TX_PATH_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX3_TX_PATH_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX3_TX_PATH_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX3_TX_VOL_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX3_TX_PATH_SEC0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX3_TX_PATH_SEC1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX3_TX_PATH_SEC2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX3_TX_PATH_SEC3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX3_TX_PATH_SEC4)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX3_TX_PATH_SEC5)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX3_TX_PATH_SEC6)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX4_TX_PATH_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX4_TX_PATH_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX4_TX_PATH_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX4_TX_VOL_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX4_TX_PATH_SEC0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX4_TX_PATH_SEC1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX4_TX_PATH_SEC2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX4_TX_PATH_SEC3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX4_TX_PATH_SEC4)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX4_TX_PATH_SEC5)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX4_TX_PATH_SEC6)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX5_TX_PATH_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX5_TX_PATH_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX5_TX_PATH_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX5_TX_VOL_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX5_TX_PATH_SEC0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX5_TX_PATH_SEC1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX5_TX_PATH_SEC2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX5_TX_PATH_SEC3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX5_TX_PATH_SEC4)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX5_TX_PATH_SEC5)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX5_TX_PATH_SEC6)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX6_TX_PATH_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX6_TX_PATH_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX6_TX_PATH_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX6_TX_VOL_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX6_TX_PATH_SEC0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX6_TX_PATH_SEC1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX6_TX_PATH_SEC2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX6_TX_PATH_SEC3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX6_TX_PATH_SEC4)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX6_TX_PATH_SEC5)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX6_TX_PATH_SEC6)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX7_TX_PATH_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX7_TX_PATH_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX7_TX_PATH_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX7_TX_VOL_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX7_TX_PATH_SEC0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX7_TX_PATH_SEC1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX7_TX_PATH_SEC2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX7_TX_PATH_SEC3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX7_TX_PATH_SEC4)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX7_TX_PATH_SEC5)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_TX7_TX_PATH_SEC6)] = RD_WR_REG,
};
u8 bolero_rx_reg_access[BOLERO_CDC_RX_MACRO_MAX] = {
[BOLERO_REG(BOLERO_CDC_RX_TOP_TOP_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_TOP_SWR_CTRL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_TOP_DEBUG)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_TOP_DEBUG_BUS)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_TOP_DEBUG_EN0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_TOP_DEBUG_EN1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_TOP_DEBUG_EN2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_TOP_HPHL_COMP_WR_LSB)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_TOP_HPHL_COMP_WR_MSB)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_TOP_HPHL_COMP_LUT)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_TOP_HPHL_COMP_RD_LSB)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_RX_TOP_HPHL_COMP_RD_MSB)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_RX_TOP_HPHR_COMP_WR_LSB)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_TOP_HPHR_COMP_WR_MSB)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_TOP_HPHR_COMP_LUT)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_TOP_HPHR_COMP_RD_LSB)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_RX_TOP_HPHR_COMP_RD_MSB)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_RX_TOP_DSD0_DEBUG_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_TOP_DSD0_DEBUG_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_TOP_DSD0_DEBUG_CFG2)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_RX_TOP_DSD0_DEBUG_CFG3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_TOP_DSD1_DEBUG_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_TOP_DSD1_DEBUG_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_TOP_DSD1_DEBUG_CFG2)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_RX_TOP_DSD1_DEBUG_CFG3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_TOP_RX_I2S_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_TOP_TX_I2S2_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_TOP_I2S_CLK)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_TOP_I2S_RESET)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_TOP_I2S_MUX)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_CLK_RST_CTRL_MCLK_CONTROL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_CLK_RST_CTRL_FS_CNT_CONTROL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_CLK_RST_CTRL_SWR_CONTROL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_CLK_RST_CTRL_DSD_CONTROL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_CLK_RST_CTRL_ASRC_SHARE_CONTROL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_SOFTCLIP_CRC)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_SOFTCLIP_SOFTCLIP_CTRL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_INP_MUX_RX_INT0_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_INP_MUX_RX_INT0_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_INP_MUX_RX_INT1_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_INP_MUX_RX_INT1_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_INP_MUX_RX_INT2_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_INP_MUX_RX_INT2_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_INP_MUX_RX_MIX_CFG4)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_INP_MUX_RX_MIX_CFG5)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_INP_MUX_SIDETONE_SRC_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_CLSH_CRC)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_CLSH_DLY_CTRL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_CLSH_DECAY_CTRL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_CLSH_HPH_V_PA)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_CLSH_EAR_V_PA)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_CLSH_HPH_V_HD)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_CLSH_EAR_V_HD)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_CLSH_K1_MSB)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_CLSH_K1_LSB)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_CLSH_K2_MSB)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_CLSH_K2_LSB)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_CLSH_IDLE_CTRL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_CLSH_IDLE_HPH)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_CLSH_IDLE_EAR)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_CLSH_TEST0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_CLSH_TEST1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_CLSH_OVR_VREF)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_CLSH_CLSG_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_CLSH_CLSG_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_CLSH_CLSG_CFG2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_BCL_VBAT_PATH_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_BCL_VBAT_CFG)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_BCL_VBAT_ADC_CAL1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_BCL_VBAT_ADC_CAL2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_BCL_VBAT_ADC_CAL3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_BCL_VBAT_PK_EST1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_BCL_VBAT_PK_EST2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_BCL_VBAT_PK_EST3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_BCL_VBAT_RF_PROC1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_BCL_VBAT_RF_PROC2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_BCL_VBAT_TAC1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_BCL_VBAT_TAC2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_BCL_VBAT_TAC3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_BCL_VBAT_TAC4)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_BCL_VBAT_GAIN_UPD1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_BCL_VBAT_GAIN_UPD2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_BCL_VBAT_GAIN_UPD3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_BCL_VBAT_GAIN_UPD4)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_BCL_VBAT_GAIN_UPD5)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_BCL_VBAT_DEBUG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_BCL_VBAT_GAIN_UPD_MON)] = WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_BCL_VBAT_GAIN_MON_VAL)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_RX_BCL_VBAT_BAN)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_BCL_VBAT_BCL_GAIN_UPD1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_BCL_VBAT_BCL_GAIN_UPD2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_BCL_VBAT_BCL_GAIN_UPD3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_BCL_VBAT_BCL_GAIN_UPD4)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_BCL_VBAT_BCL_GAIN_UPD5)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_BCL_VBAT_BCL_GAIN_UPD6)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_BCL_VBAT_BCL_GAIN_UPD7)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_BCL_VBAT_BCL_GAIN_UPD8)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_BCL_VBAT_BCL_GAIN_UPD9)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_BCL_VBAT_ATTN1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_BCL_VBAT_ATTN2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_BCL_VBAT_ATTN3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_BCL_VBAT_DECODE_CTL1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_BCL_VBAT_DECODE_CTL2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_BCL_VBAT_DECODE_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_BCL_VBAT_DECODE_CFG2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_BCL_VBAT_DECODE_CFG3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_BCL_VBAT_DECODE_CFG4)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_BCL_VBAT_DECODE_ST)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_RX_INTR_CTRL_CFG)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_INTR_CTRL_CLR_COMMIT)] = WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_INTR_CTRL_PIN1_MASK0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_INTR_CTRL_PIN1_STATUS0)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_RX_INTR_CTRL_PIN1_CLEAR0)] = WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_INTR_CTRL_PIN2_MASK0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_INTR_CTRL_PIN2_STATUS0)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_RX_INTR_CTRL_PIN2_CLEAR0)] = WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_INTR_CTRL_LEVEL0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_INTR_CTRL_BYPASS0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_INTR_CTRL_SET0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX0_RX_PATH_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX0_RX_PATH_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX0_RX_PATH_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX0_RX_PATH_CFG2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX0_RX_PATH_CFG3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX0_RX_VOL_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX0_RX_PATH_MIX_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX0_RX_PATH_MIX_CFG)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX0_RX_VOL_MIX_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX0_RX_PATH_SEC1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX0_RX_PATH_SEC2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX0_RX_PATH_SEC3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX0_RX_PATH_SEC4)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX0_RX_PATH_SEC7)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX0_RX_PATH_MIX_SEC0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX0_RX_PATH_MIX_SEC1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX0_RX_PATH_DSM_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX0_RX_PATH_DSM_DATA1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX0_RX_PATH_DSM_DATA2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX0_RX_PATH_DSM_DATA3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX0_RX_PATH_DSM_DATA4)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX0_RX_PATH_DSM_DATA5)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX0_RX_PATH_DSM_DATA6)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX1_RX_PATH_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX1_RX_PATH_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX1_RX_PATH_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX1_RX_PATH_CFG2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX1_RX_PATH_CFG3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX1_RX_VOL_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX1_RX_PATH_MIX_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX1_RX_PATH_MIX_CFG)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX1_RX_VOL_MIX_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX1_RX_PATH_SEC1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX1_RX_PATH_SEC2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX1_RX_PATH_SEC3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX1_RX_PATH_SEC4)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX1_RX_PATH_SEC7)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX1_RX_PATH_MIX_SEC0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX1_RX_PATH_MIX_SEC1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX1_RX_PATH_DSM_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX1_RX_PATH_DSM_DATA1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX1_RX_PATH_DSM_DATA2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX1_RX_PATH_DSM_DATA3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX1_RX_PATH_DSM_DATA4)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX1_RX_PATH_DSM_DATA5)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX1_RX_PATH_DSM_DATA6)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX2_RX_PATH_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX2_RX_PATH_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX2_RX_PATH_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX2_RX_PATH_CFG2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX2_RX_PATH_CFG3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX2_RX_VOL_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX2_RX_PATH_MIX_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX2_RX_PATH_MIX_CFG)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX2_RX_VOL_MIX_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX2_RX_PATH_SEC0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX2_RX_PATH_SEC1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX2_RX_PATH_SEC2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX2_RX_PATH_SEC3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX2_RX_PATH_SEC4)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX2_RX_PATH_SEC5)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX2_RX_PATH_SEC6)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX2_RX_PATH_SEC7)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX2_RX_PATH_MIX_SEC0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX2_RX_PATH_MIX_SEC1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_RX2_RX_PATH_DSM_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_IDLE_DETECT_PATH_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_IDLE_DETECT_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_IDLE_DETECT_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_IDLE_DETECT_CFG2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_IDLE_DETECT_CFG3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_COMPANDER0_CTL0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_COMPANDER0_CTL1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_COMPANDER0_CTL2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_COMPANDER0_CTL3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_COMPANDER0_CTL4)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_COMPANDER0_CTL5)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_COMPANDER0_CTL6)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_RX_COMPANDER0_CTL7)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_COMPANDER1_CTL0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_COMPANDER1_CTL1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_COMPANDER1_CTL2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_COMPANDER1_CTL3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_COMPANDER1_CTL4)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_COMPANDER1_CTL5)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_COMPANDER1_CTL6)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_RX_COMPANDER1_CTL7)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_SIDETONE_IIR0_IIR_PATH_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_SIDETONE_IIR0_IIR_GAIN_B1_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_SIDETONE_IIR0_IIR_GAIN_B2_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_SIDETONE_IIR0_IIR_GAIN_B3_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_SIDETONE_IIR0_IIR_GAIN_B4_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_SIDETONE_IIR0_IIR_GAIN_B5_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_SIDETONE_IIR0_IIR_GAIN_B6_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_SIDETONE_IIR0_IIR_GAIN_B7_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_SIDETONE_IIR0_IIR_GAIN_B8_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_SIDETONE_IIR0_IIR_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_SIDETONE_IIR0_IIR_GAIN_TIMER_CTL)] =
RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_SIDETONE_IIR0_IIR_COEF_B1_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_SIDETONE_IIR0_IIR_COEF_B2_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_SIDETONE_IIR1_IIR_PATH_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_SIDETONE_IIR1_IIR_GAIN_B1_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_SIDETONE_IIR1_IIR_GAIN_B2_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_SIDETONE_IIR1_IIR_GAIN_B3_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_SIDETONE_IIR1_IIR_GAIN_B4_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_SIDETONE_IIR1_IIR_GAIN_B5_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_SIDETONE_IIR1_IIR_GAIN_B6_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_SIDETONE_IIR1_IIR_GAIN_B7_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_SIDETONE_IIR1_IIR_GAIN_B8_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_SIDETONE_IIR1_IIR_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_SIDETONE_IIR1_IIR_GAIN_TIMER_CTL)] =
RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_SIDETONE_IIR1_IIR_COEF_B1_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_SIDETONE_IIR1_IIR_COEF_B2_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_IIR_INP_MUX_IIR0_MIX_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_IIR_INP_MUX_IIR0_MIX_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_IIR_INP_MUX_IIR0_MIX_CFG2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_IIR_INP_MUX_IIR0_MIX_CFG3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_IIR_INP_MUX_IIR1_MIX_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_IIR_INP_MUX_IIR1_MIX_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_IIR_INP_MUX_IIR1_MIX_CFG2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_IIR_INP_MUX_IIR1_MIX_CFG3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_SIDETONE_SRC0_ST_SRC_PATH_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_SIDETONE_SRC0_ST_SRC_PATH_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_SIDETONE_SRC1_ST_SRC_PATH_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_SIDETONE_SRC1_ST_SRC_PATH_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_EC_REF_HQ0_EC_REF_HQ_PATH_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_EC_REF_HQ0_EC_REF_HQ_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_EC_REF_HQ1_EC_REF_HQ_PATH_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_EC_REF_HQ1_EC_REF_HQ_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_EC_REF_HQ2_EC_REF_HQ_PATH_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_EC_REF_HQ2_EC_REF_HQ_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_EC_ASRC0_CLK_RST_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_EC_ASRC0_CTL0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_EC_ASRC0_CTL1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_EC_ASRC0_FIFO_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_EC_ASRC0_STATUS_FMIN_CNTR_LSB)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_RX_EC_ASRC0_STATUS_FMIN_CNTR_MSB)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_RX_EC_ASRC0_STATUS_FMAX_CNTR_LSB)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_RX_EC_ASRC0_STATUS_FMAX_CNTR_MSB)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_RX_EC_ASRC0_STATUS_FIFO)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_RX_EC_ASRC1_CLK_RST_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_EC_ASRC1_CTL0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_EC_ASRC1_CTL1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_EC_ASRC1_FIFO_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_EC_ASRC1_STATUS_FMIN_CNTR_LSB)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_RX_EC_ASRC1_STATUS_FMIN_CNTR_MSB)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_RX_EC_ASRC1_STATUS_FMAX_CNTR_LSB)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_RX_EC_ASRC1_STATUS_FMAX_CNTR_MSB)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_RX_EC_ASRC1_STATUS_FIFO)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_RX_EC_ASRC2_CLK_RST_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_EC_ASRC2_CTL0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_EC_ASRC2_CTL1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_EC_ASRC2_FIFO_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_EC_ASRC2_STATUS_FMIN_CNTR_LSB)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_RX_EC_ASRC2_STATUS_FMIN_CNTR_MSB)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_RX_EC_ASRC2_STATUS_FMAX_CNTR_LSB)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_RX_EC_ASRC2_STATUS_FMAX_CNTR_MSB)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_RX_EC_ASRC2_STATUS_FIFO)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_RX_DSD0_PATH_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_DSD0_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_DSD0_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_DSD0_CFG2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_DSD1_PATH_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_DSD1_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_DSD1_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_RX_DSD1_CFG2)] = RD_WR_REG,
};
u8 bolero_va_reg_access[BOLERO_CDC_VA_MACRO_MAX] = {
[BOLERO_REG(BOLERO_CDC_VA_CLK_RST_CTRL_MCLK_CONTROL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_CLK_RST_CTRL_FS_CNT_CONTROL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TOP_CSR_TOP_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TOP_CSR_DMIC0_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TOP_CSR_DMIC1_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TOP_CSR_DMIC2_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TOP_CSR_DMIC3_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TOP_CSR_DMIC_CFG)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TOP_CSR_DEBUG_BUS)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TOP_CSR_DEBUG_EN)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TOP_CSR_TX_I2S_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TOP_CSR_I2S_CLK)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TOP_CSR_I2S_RESET)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TOP_CSR_CORE_ID_0)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_VA_TOP_CSR_CORE_ID_1)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_VA_TOP_CSR_CORE_ID_2)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_VA_TOP_CSR_CORE_ID_3)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_VA_INP_MUX_ADC_MUX0_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_INP_MUX_ADC_MUX0_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_INP_MUX_ADC_MUX1_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_INP_MUX_ADC_MUX1_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_INP_MUX_ADC_MUX2_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_INP_MUX_ADC_MUX2_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_INP_MUX_ADC_MUX3_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_INP_MUX_ADC_MUX3_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_INP_MUX_ADC_MUX4_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_INP_MUX_ADC_MUX4_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_INP_MUX_ADC_MUX5_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_INP_MUX_ADC_MUX5_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_INP_MUX_ADC_MUX6_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_INP_MUX_ADC_MUX6_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_INP_MUX_ADC_MUX7_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_INP_MUX_ADC_MUX7_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX0_TX_PATH_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX0_TX_PATH_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX0_TX_PATH_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX0_TX_VOL_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX0_TX_PATH_SEC0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX0_TX_PATH_SEC1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX0_TX_PATH_SEC2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX0_TX_PATH_SEC3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX0_TX_PATH_SEC4)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX0_TX_PATH_SEC5)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX0_TX_PATH_SEC6)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX0_TX_PATH_SEC7)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX1_TX_PATH_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX1_TX_PATH_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX1_TX_PATH_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX1_TX_VOL_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX1_TX_PATH_SEC0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX1_TX_PATH_SEC1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX1_TX_PATH_SEC2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX1_TX_PATH_SEC3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX1_TX_PATH_SEC4)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX1_TX_PATH_SEC5)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX1_TX_PATH_SEC6)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX2_TX_PATH_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX2_TX_PATH_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX2_TX_PATH_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX2_TX_VOL_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX2_TX_PATH_SEC0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX2_TX_PATH_SEC1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX2_TX_PATH_SEC2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX2_TX_PATH_SEC3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX2_TX_PATH_SEC4)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX2_TX_PATH_SEC5)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX2_TX_PATH_SEC6)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX3_TX_PATH_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX3_TX_PATH_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX3_TX_PATH_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX3_TX_VOL_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX3_TX_PATH_SEC0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX3_TX_PATH_SEC1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX3_TX_PATH_SEC2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX3_TX_PATH_SEC3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX3_TX_PATH_SEC4)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX3_TX_PATH_SEC5)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX3_TX_PATH_SEC6)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX4_TX_PATH_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX4_TX_PATH_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX4_TX_PATH_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX4_TX_VOL_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX4_TX_PATH_SEC0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX4_TX_PATH_SEC1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX4_TX_PATH_SEC2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX4_TX_PATH_SEC3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX4_TX_PATH_SEC4)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX4_TX_PATH_SEC5)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX4_TX_PATH_SEC6)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX5_TX_PATH_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX5_TX_PATH_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX5_TX_PATH_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX5_TX_VOL_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX5_TX_PATH_SEC0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX5_TX_PATH_SEC1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX5_TX_PATH_SEC2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX5_TX_PATH_SEC3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX5_TX_PATH_SEC4)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX5_TX_PATH_SEC5)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX5_TX_PATH_SEC6)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX6_TX_PATH_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX6_TX_PATH_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX6_TX_PATH_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX6_TX_VOL_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX6_TX_PATH_SEC0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX6_TX_PATH_SEC1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX6_TX_PATH_SEC2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX6_TX_PATH_SEC3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX6_TX_PATH_SEC4)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX6_TX_PATH_SEC5)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX6_TX_PATH_SEC6)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX7_TX_PATH_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX7_TX_PATH_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX7_TX_PATH_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX7_TX_VOL_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX7_TX_PATH_SEC0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX7_TX_PATH_SEC1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX7_TX_PATH_SEC2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX7_TX_PATH_SEC3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX7_TX_PATH_SEC4)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX7_TX_PATH_SEC5)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TX7_TX_PATH_SEC6)] = RD_WR_REG,
};
u8 bolero_va_top_reg_access[BOLERO_CDC_VA_MACRO_TOP_MAX] = {
[BOLERO_REG(BOLERO_CDC_VA_CLK_RST_CTRL_MCLK_CONTROL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_CLK_RST_CTRL_FS_CNT_CONTROL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TOP_CSR_TOP_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TOP_CSR_DMIC0_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TOP_CSR_DMIC1_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TOP_CSR_DMIC_CFG)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TOP_CSR_DEBUG_BUS)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TOP_CSR_DEBUG_EN)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_VA_TOP_CSR_CORE_ID_0)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_VA_TOP_CSR_CORE_ID_1)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_VA_TOP_CSR_CORE_ID_2)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_VA_TOP_CSR_CORE_ID_3)] = RD_REG,
};
u8 bolero_wsa_reg_access[BOLERO_CDC_WSA_MACRO_MAX] = {
[BOLERO_REG(BOLERO_CDC_WSA_CLK_RST_CTRL_MCLK_CONTROL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_CLK_RST_CTRL_FS_CNT_CONTROL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_CLK_RST_CTRL_SWR_CONTROL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_TOP_TOP_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_TOP_TOP_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_TOP_FREQ_MCLK)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_TOP_DEBUG_BUS_SEL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_TOP_DEBUG_EN0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_TOP_DEBUG_EN1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_TOP_DEBUG_DSM_LB)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_TOP_RX_I2S_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_TOP_TX_I2S_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_TOP_I2S_CLK)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_TOP_I2S_RESET)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_RX_INP_MUX_RX_INT0_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_RX_INP_MUX_RX_INT0_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_RX_INP_MUX_RX_INT1_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_RX_INP_MUX_RX_INT1_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_RX_INP_MUX_RX_MIX_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_RX_INP_MUX_RX_EC_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_RX_INP_MUX_SOFTCLIP_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_VBAT_BCL_VBAT_PATH_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_VBAT_BCL_VBAT_CFG)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_VBAT_BCL_VBAT_ADC_CAL1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_VBAT_BCL_VBAT_ADC_CAL2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_VBAT_BCL_VBAT_ADC_CAL3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_VBAT_BCL_VBAT_PK_EST1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_VBAT_BCL_VBAT_PK_EST2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_VBAT_BCL_VBAT_PK_EST3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_VBAT_BCL_VBAT_RF_PROC1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_VBAT_BCL_VBAT_RF_PROC2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_VBAT_BCL_VBAT_TAC1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_VBAT_BCL_VBAT_TAC2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_VBAT_BCL_VBAT_TAC3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_VBAT_BCL_VBAT_TAC4)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_VBAT_BCL_VBAT_GAIN_UPD1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_VBAT_BCL_VBAT_GAIN_UPD2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_VBAT_BCL_VBAT_GAIN_UPD3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_VBAT_BCL_VBAT_GAIN_UPD4)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_VBAT_BCL_VBAT_GAIN_UPD5)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_VBAT_BCL_VBAT_DEBUG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_VBAT_BCL_VBAT_GAIN_UPD_MON)] = WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_VBAT_BCL_VBAT_GAIN_MON_VAL)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_WSA_VBAT_BCL_VBAT_BAN)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_VBAT_BCL_VBAT_BCL_GAIN_UPD1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_VBAT_BCL_VBAT_BCL_GAIN_UPD2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_VBAT_BCL_VBAT_BCL_GAIN_UPD3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_VBAT_BCL_VBAT_BCL_GAIN_UPD4)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_VBAT_BCL_VBAT_BCL_GAIN_UPD5)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_VBAT_BCL_VBAT_BCL_GAIN_UPD6)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_VBAT_BCL_VBAT_BCL_GAIN_UPD7)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_VBAT_BCL_VBAT_BCL_GAIN_UPD8)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_VBAT_BCL_VBAT_BCL_GAIN_UPD9)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_VBAT_BCL_VBAT_BCL_ATTN1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_VBAT_BCL_VBAT_BCL_ATTN2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_VBAT_BCL_VBAT_BCL_ATTN3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_VBAT_BCL_VBAT_DECODE_CTL1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_VBAT_BCL_VBAT_DECODE_CTL2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_VBAT_BCL_VBAT_DECODE_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_VBAT_BCL_VBAT_DECODE_CFG2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_VBAT_BCL_VBAT_DECODE_CFG3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_VBAT_BCL_VBAT_DECODE_CFG4)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_VBAT_BCL_VBAT_DECODE_ST)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_WSA_TX0_SPKR_PROT_PATH_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_TX0_SPKR_PROT_PATH_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_TX1_SPKR_PROT_PATH_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_TX1_SPKR_PROT_PATH_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_TX2_SPKR_PROT_PATH_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_TX2_SPKR_PROT_PATH_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_TX3_SPKR_PROT_PATH_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_TX3_SPKR_PROT_PATH_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_INTR_CTRL_CFG)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_INTR_CTRL_CLR_COMMIT)] = WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_INTR_CTRL_PIN1_MASK0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_INTR_CTRL_PIN1_STATUS0)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_WSA_INTR_CTRL_PIN1_CLEAR0)] = WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_INTR_CTRL_PIN2_MASK0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_INTR_CTRL_PIN2_STATUS0)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_WSA_INTR_CTRL_PIN2_CLEAR0)] = WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_INTR_CTRL_LEVEL0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_INTR_CTRL_BYPASS0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_INTR_CTRL_SET0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_RX0_RX_PATH_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_RX0_RX_PATH_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_RX0_RX_PATH_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_RX0_RX_PATH_CFG2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_RX0_RX_PATH_CFG3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_RX0_RX_VOL_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_RX0_RX_PATH_MIX_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_RX0_RX_PATH_MIX_CFG)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_RX0_RX_VOL_MIX_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_RX0_RX_PATH_SEC0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_RX0_RX_PATH_SEC1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_RX0_RX_PATH_SEC2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_RX0_RX_PATH_SEC3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_RX0_RX_PATH_SEC5)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_RX0_RX_PATH_SEC6)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_RX0_RX_PATH_SEC7)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_RX0_RX_PATH_MIX_SEC0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_RX0_RX_PATH_MIX_SEC1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_RX0_RX_PATH_DSMDEM_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_RX1_RX_PATH_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_RX1_RX_PATH_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_RX1_RX_PATH_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_RX1_RX_PATH_CFG2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_RX1_RX_PATH_CFG3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_RX1_RX_VOL_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_RX1_RX_PATH_MIX_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_RX1_RX_PATH_MIX_CFG)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_RX1_RX_VOL_MIX_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_RX1_RX_PATH_SEC0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_RX1_RX_PATH_SEC1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_RX1_RX_PATH_SEC2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_RX1_RX_PATH_SEC3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_RX1_RX_PATH_SEC5)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_RX1_RX_PATH_SEC6)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_RX1_RX_PATH_SEC7)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_RX1_RX_PATH_MIX_SEC0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_RX1_RX_PATH_MIX_SEC1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_RX1_RX_PATH_DSMDEM_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_BOOST0_BOOST_PATH_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_BOOST0_BOOST_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_BOOST0_BOOST_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_BOOST0_BOOST_CFG2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_BOOST1_BOOST_PATH_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_BOOST1_BOOST_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_BOOST1_BOOST_CFG1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_BOOST1_BOOST_CFG2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_COMPANDER0_CTL0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_COMPANDER0_CTL1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_COMPANDER0_CTL2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_COMPANDER0_CTL3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_COMPANDER0_CTL4)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_COMPANDER0_CTL5)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_COMPANDER0_CTL6)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_WSA_COMPANDER0_CTL7)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_COMPANDER1_CTL0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_COMPANDER1_CTL1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_COMPANDER1_CTL2)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_COMPANDER1_CTL3)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_COMPANDER1_CTL4)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_COMPANDER1_CTL5)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_COMPANDER1_CTL6)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_WSA_COMPANDER1_CTL7)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_SOFTCLIP0_CRC)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_SOFTCLIP0_SOFTCLIP_CTRL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_SOFTCLIP1_CRC)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_SOFTCLIP1_SOFTCLIP_CTRL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_EC_HQ0_EC_REF_HQ_PATH_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_EC_HQ0_EC_REF_HQ_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_EC_HQ1_EC_REF_HQ_PATH_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_EC_HQ1_EC_REF_HQ_CFG0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_SPLINE_ASRC0_CLK_RST_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_SPLINE_ASRC0_CTL0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_SPLINE_ASRC0_CTL1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_SPLINE_ASRC0_FIFO_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_SPLINE_ASRC0_STATUS_FMIN_CNTR_LSB)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_WSA_SPLINE_ASRC0_STATUS_FMIN_CNTR_MSB)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_WSA_SPLINE_ASRC0_STATUS_FMAX_CNTR_LSB)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_WSA_SPLINE_ASRC0_STATUS_FMAX_CNTR_MSB)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_WSA_SPLINE_ASRC0_STATUS_FIFO)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_WSA_SPLINE_ASRC1_CLK_RST_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_SPLINE_ASRC1_CTL0)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_SPLINE_ASRC1_CTL1)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_SPLINE_ASRC1_FIFO_CTL)] = RD_WR_REG,
[BOLERO_REG(BOLERO_CDC_WSA_SPLINE_ASRC1_STATUS_FMIN_CNTR_LSB)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_WSA_SPLINE_ASRC1_STATUS_FMIN_CNTR_MSB)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_WSA_SPLINE_ASRC1_STATUS_FMAX_CNTR_LSB)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_WSA_SPLINE_ASRC1_STATUS_FMAX_CNTR_MSB)] = RD_REG,
[BOLERO_REG(BOLERO_CDC_WSA_SPLINE_ASRC1_STATUS_FIFO)] = RD_REG,
};
u8 *bolero_reg_access[MAX_MACRO] = {
[TX_MACRO] = bolero_tx_reg_access,
[RX_MACRO] = bolero_rx_reg_access,
[WSA_MACRO] = bolero_wsa_reg_access,
[VA_MACRO] = bolero_va_reg_access,
};

View file

@ -0,0 +1,186 @@
/* Copyright (c) 2018, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include <linux/kernel.h>
#include <linux/regmap.h>
#include "bolero_cdc.h"
#include "internal.h"
#define REG_BYTES 2
#define VAL_BYTES 1
const u16 macro_id_base_offset[MAX_MACRO] = {
TX_START_OFFSET,
RX_START_OFFSET,
WSA_START_OFFSET,
VA_START_OFFSET,
};
int bolero_get_macro_id(bool va_no_dec_flag, u16 reg)
{
if (reg >= TX_START_OFFSET
&& reg <= TX_MAX_OFFSET)
return TX_MACRO;
if (reg >= RX_START_OFFSET
&& reg <= RX_MAX_OFFSET)
return RX_MACRO;
if (reg >= WSA_START_OFFSET
&& reg <= WSA_MAX_OFFSET)
return WSA_MACRO;
if (!va_no_dec_flag &&
(reg >= VA_START_OFFSET &&
reg <= VA_MAX_OFFSET))
return VA_MACRO;
if (va_no_dec_flag &&
(reg >= VA_START_OFFSET &&
reg <= VA_TOP_MAX_OFFSET))
return VA_MACRO;
return -EINVAL;
}
static int regmap_bus_read(void *context, const void *reg, size_t reg_size,
void *val, size_t val_size)
{
struct device *dev = context;
struct bolero_priv *priv = dev_get_drvdata(dev);
u16 *reg_p;
u16 __reg;
int macro_id, i;
u8 temp = 0;
int ret = -EINVAL;
if (!priv) {
dev_err(dev, "%s: priv is NULL\n", __func__);
return ret;
}
if (!reg || !val) {
dev_err(dev, "%s: reg or val is NULL\n", __func__);
return ret;
}
if (reg_size != REG_BYTES) {
dev_err(dev, "%s: register size %zd bytes, not supported\n",
__func__, reg_size);
return ret;
}
reg_p = (u16 *)reg;
macro_id = bolero_get_macro_id(priv->va_without_decimation,
reg_p[0]);
if (macro_id < 0 || !priv->macros_supported[macro_id]) {
dev_err_ratelimited(dev,
"%s: Unsupported macro %d or reg 0x%x is invalid\n",
__func__, macro_id, reg_p[0]);
return ret;
}
mutex_lock(&priv->io_lock);
for (i = 0; i < val_size; i++) {
__reg = reg_p[i] - macro_id_base_offset[macro_id];
ret = priv->read_dev(priv, macro_id, __reg, &temp);
if (ret < 0) {
dev_err_ratelimited(dev,
"%s: Codec read failed (%d), reg: 0x%x, size:%zd\n",
__func__, ret, reg_p[i], val_size);
break;
}
((u8 *)val)[i] = temp;
dev_dbg(dev, "%s: Read 0x%02x from reg 0x%x\n",
__func__, temp, reg_p[i]);
}
mutex_unlock(&priv->io_lock);
return ret;
}
static int regmap_bus_gather_write(void *context,
const void *reg, size_t reg_size,
const void *val, size_t val_size)
{
struct device *dev = context;
struct bolero_priv *priv = dev_get_drvdata(dev);
u16 *reg_p;
u16 __reg;
int macro_id, i;
int ret = -EINVAL;
if (!priv) {
dev_err(dev, "%s: priv is NULL\n", __func__);
return ret;
}
if (!reg || !val) {
dev_err(dev, "%s: reg or val is NULL\n", __func__);
return ret;
}
if (reg_size != REG_BYTES) {
dev_err(dev, "%s: register size %zd bytes, not supported\n",
__func__, reg_size);
return ret;
}
reg_p = (u16 *)reg;
macro_id = bolero_get_macro_id(priv->va_without_decimation,
reg_p[0]);
if (macro_id < 0 || !priv->macros_supported[macro_id]) {
dev_err_ratelimited(dev,
"%s: Unsupported macro-id %d or reg 0x%x is invalid\n",
__func__, macro_id, reg_p[0]);
return ret;
}
mutex_lock(&priv->io_lock);
for (i = 0; i < val_size; i++) {
__reg = reg_p[i] - macro_id_base_offset[macro_id];
ret = priv->write_dev(priv, macro_id, __reg, ((u8 *)val)[i]);
if (ret < 0) {
dev_err_ratelimited(dev,
"%s: Codec write failed (%d), reg:0x%x, size:%zd\n",
__func__, ret, reg_p[i], val_size);
break;
}
dev_dbg(dev, "Write %02x to reg 0x%x\n", ((u8 *)val)[i],
reg_p[i]);
}
mutex_unlock(&priv->io_lock);
return ret;
}
static int regmap_bus_write(void *context, const void *data, size_t count)
{
struct device *dev = context;
struct bolero_priv *priv = dev_get_drvdata(dev);
if (!priv)
return -EINVAL;
if (count < REG_BYTES) {
dev_err(dev, "%s: count %zd bytes < %d, not supported\n",
__func__, count, REG_BYTES);
return -EINVAL;
}
return regmap_bus_gather_write(context, data, REG_BYTES,
data + REG_BYTES,
count - REG_BYTES);
}
static struct regmap_bus regmap_bus_config = {
.write = regmap_bus_write,
.gather_write = regmap_bus_gather_write,
.read = regmap_bus_read,
.reg_format_endian_default = REGMAP_ENDIAN_NATIVE,
.val_format_endian_default = REGMAP_ENDIAN_NATIVE,
};
struct regmap *bolero_regmap_init(struct device *dev,
const struct regmap_config *config)
{
return devm_regmap_init(dev, &regmap_bus_config, dev, config);
}

View file

@ -0,0 +1,56 @@
/* Copyright (c) 2018, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#ifndef _BOLERO_INTERNAL_H
#define _BOLERO_INTERNAL_H
#include "bolero_cdc_registers.h"
enum {
REG_NO_ACCESS,
RD_REG,
WR_REG,
RD_WR_REG
};
struct bolero_priv {
struct device *dev;
struct snd_soc_codec *codec;
struct regmap *regmap;
struct mutex io_lock;
bool va_without_decimation;
bool macros_supported[MAX_MACRO];
struct macro_ops macro_params[MAX_MACRO];
struct snd_soc_dai_driver *bolero_dais;
u16 num_dais;
u16 num_macros_registered;
u16 child_num;
struct platform_device *pdev_child_devices[MAX_MACRO];
struct work_struct bolero_add_child_devices_work;
int (*read_dev)(struct bolero_priv *priv,
u16 macro_id, u16 reg, u8 *val);
int (*write_dev)(struct bolero_priv *priv,
u16 macro_id, u16 reg, u8 val);
};
struct regmap *bolero_regmap_init(struct device *dev,
const struct regmap_config *config);
int bolero_get_macro_id(bool va_no_dec_flag, u16 reg);
extern const struct regmap_config bolero_regmap_config;
extern u8 *bolero_reg_access[MAX_MACRO];
extern u8 bolero_va_top_reg_access[BOLERO_CDC_VA_MACRO_TOP_MAX];
extern const u16 macro_id_base_offset[MAX_MACRO];
#endif