/*
 * Copyright (C) 2019 MediaTek Inc.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License 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 http://www.gnu.org/licenses/gpl-2.0.html for more details.
 */

#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/err.h>
#include <linux/device.h>

#include "rt5509.h"

#ifdef CONFIG_RT_REGMAP
/* ---------------------------------------------------------------------
 * Create RT5509 register map
 *
 * RT_REG_DECL(_addr, _reg_length, _reg_type, _mask_...)
 * @ _addr : reigster address
 * @ _reg_length : register byte length
 * @ _reg_type : reigster type (RT_NORMAL, RT_VOLATILE, RT_WBITS)
 * @ _mask : register write bits mask
 */

/* WBITS will and mask, to check the writable bits */
/* NORMAL ignore mask */
/* VOLATILE directly write through */
RT_REG_DECL(RT5509_REG_CHIPREV, 1, RT_VOLATILE, {0x00});
RT_REG_DECL(RT5509_REG_EVENTINFO, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_DMGFLAG, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_CHIPEN, 1, RT_VOLATILE, {0x3f});
RT_REG_DECL(RT5509_REG_AUDFMT, 1, RT_VOLATILE, {0x1f});
RT_REG_DECL(RT5509_REG_AUDSR, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_I2SSEL, 1, RT_VOLATILE, {0x0f});
RT_REG_DECL(RT5509_REG_I2SDOLRSEL, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_I2SDOSEL, 1, RT_VOLATILE, {0x03});
RT_REG_DECL(RT5509_REG_FUNCEN, 1, RT_VOLATILE, {0x7f});
RT_REG_DECL(RT5509_REG_CLIP_THR, 1, RT_VOLATILE, {0x07});
RT_REG_DECL(RT5509_REG_CLIP_CTRL, 1, RT_VOLATILE, {0xbf});
RT_REG_DECL(RT5509_REG_CLIP_SLOPE, 2, RT_VOLATILE, {0x03, 0xff});
RT_REG_DECL(RT5509_REG_CLIP_VOMIN, 2, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_CLIP_SIGMAX, 2, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_AMPCONF, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_DACRNKGAIN, 1, RT_VOLATILE, {0xcf});
RT_REG_DECL(RT5509_REG_SAMPOFFS, 1, RT_VOLATILE, {0x07});
RT_REG_DECL(RT5509_REG_SAMPCONF, 1, RT_VOLATILE, {0x7f});
RT_REG_DECL(RT5509_REG_DAGAIN, 2, RT_VOLATILE, {0x07, 0xff});
RT_REG_DECL(RT5509_REG_FFGAIN, 2, RT_VOLATILE, {0x03, 0xff});
RT_REG_DECL(RT5509_REG_VBATGAIN, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_RLDCOEF1, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_RLDCOEF2, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_BST_MODE, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_BST_TH1, 2, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_BST_TH2, 2, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_BST_TH3, 2, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_BST_CONF1, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_BST_SIG_GAIN, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_BST_CONF2, 1, RT_VOLATILE, {0xf3});
RT_REG_DECL(RT5509_REG_BST_CONF3, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_OCPOTPEN, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_IDAC1TST, 1, RT_VOLATILE, {0x7f});
RT_REG_DECL(RT5509_REG_IDAC2TST, 1, RT_VOLATILE, {0x7f});
RT_REG_DECL(RT5509_REG_IDAC3TST, 1, RT_VOLATILE, {0x7f});
RT_REG_DECL(RT5509_REG_IDACTSTEN, 1, RT_VOLATILE, {0x87});
RT_REG_DECL(RT5509_REG_CCMAX, 1, RT_VOLATILE, {0x7f});
RT_REG_DECL(RT5509_REG_OCPMAX, 1, RT_VOLATILE, {0x7f});
RT_REG_DECL(RT5509_REG_INTERRUPT, 2, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_INTRMASK, 2, RT_VOLATILE, {0x07, 0xff});
RT_REG_DECL(RT5509_REG_DEGLITCH, 2, RT_VOLATILE, {0x0F, 0xff});
RT_REG_DECL(RT5509_REG_SICRTNSTHACT, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_TIMEDET, 1, RT_VOLATILE, {0x3f});
RT_REG_DECL(RT5509_REG_TDELAY, 2, RT_VOLATILE, {0x01, 0xff});
RT_REG_DECL(RT5509_REG_TATKSEL, 1, RT_VOLATILE, {0x03});
RT_REG_DECL(RT5509_REG_TREL, 2, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_THOLDREL, 2, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_STHLMT, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_XTHLMT, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_STHALC, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_XTHALC, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_INITUDT, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_UDT, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_DNHALFT, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_ALCGAIN, 1, RT_VOLATILE, {0xf7});
RT_REG_DECL(RT5509_REG_ADAPTCONF, 1, RT_VOLATILE, {0x7f});
RT_REG_DECL(RT5509_REG_INITIMPLDMU, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_IMPLDMU, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_GPILOT, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_PILOTEN, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_PILOTNISENSE, 1, RT_VOLATILE, {0x7f});
RT_REG_DECL(RT5509_REG_ISENSEGAIN, 3, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_RAPP, 3, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_DCR_MAX, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_DCR_KD, 2, RT_VOLATILE, {0x07, 0xff});
RT_REG_DECL(RT5509_REG_DCR_KP, 2, RT_VOLATILE, {0x03, 0xff});
RT_REG_DECL(RT5509_REG_DCR_KI, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_INITDCRIDMU, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_DCRIDMU, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_CALIB_DCR, 3, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_CALIB_BL, 2, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_CALIB_CTRL, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_CALIB_REQ, 2, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_CALIB_GAIN, 2, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_CALIB_OUT0, 4, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_CALIB_OUT1, 4, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_XTHLMTDAM, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_RMAXDAM, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_TSCALEDAM, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_RECOVERT, 1, RT_VOLATILE, {0x0f});
RT_REG_DECL(RT5509_REG_SETRESFREQ, 2, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_GETRESFREQ, 2, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_VOLCTL, 1, RT_VOLATILE, {0x07});
RT_REG_DECL(RT5509_REG_VOLUME, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_CALIB_OUTX, 4, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_CALIB_OUTY, 4, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_BQ1, 20, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_BQ2, 20, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_BQ3, 20, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_BQ4, 20, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_BQ5, 20, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_BQ6, 20, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_BQ7, 20, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_BQ8, 20, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_BQ9, 20, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_BQ10, 20, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_VBBQ1, 20, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_VBBQ2, 20, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_VBBQ3, 20, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_VBBQ4, 20, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_VBBQ5, 20, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_VBBQ6, 20, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_VBBQ7, 20, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_VBBQ8, 20, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_VBBQ9, 20, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_VBFCN, 24, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_VBGAIN1, 4, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_VBGAIN2, 4, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_VBGAIN3, 4, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_VBGAIN4, 4, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_VBGAIN5, 4, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_VBGAIN6, 4, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_VBGAIN7, 4, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_VBGAIN8, 4, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_VBGAIN9, 4, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_VBGAIN10, 4, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_SLOPCONST, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_BWCOEFF, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_SWRESET, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_SPKGAIN, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_DSPKCONF1, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_DSPKCONF2, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_DSPKCONF3, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_DSPKCONF4, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_DSPKVMID, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_DSPKZCBOOST, 1, RT_VOLATILE, {0x1f});
RT_REG_DECL(RT5509_REG_ISENSE_CTRL, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_DIMADC, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_DSPKEN1, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_VBATDATA, 2, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_VTHRMDATA, 2, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_VBATSENSE, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_IDACTSTNINFO, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_IDACBOOST, 2, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_DSPKEN2, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_DSPKIBCONF1, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_DSPKIBCONF2, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_DSPKIBCONF3, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_DSPKCONF5, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_DSPKCONF6, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_OVPUVPCTRL, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_PLLCONF1, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_PLLCONF2, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_PLLCONF3, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_PLLCONF4, 1, RT_VOLATILE, {0x3f});
RT_REG_DECL(RT5509_REG_PLLINFO, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_PLLDIVISOR, 4, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_ZCCONF, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_DCADJ, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_I2CBCKLRCKCONF, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_TDEN, 1, RT_VOLATILE, {0x38});
RT_REG_DECL(RT5509_REG_ALPHACONF, 1, RT_VOLATILE, {0x3f});
RT_REG_DECL(RT5509_REG_SPKRPTSEL, 1, RT_VOLATILE, {0x3f});
RT_REG_DECL(RT5509_REG_SPKRPT, 3, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_NDELAY, 3, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_DELAYRES, 3, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_PHI1, 3, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_PHI2, 3, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_PHI3, 3, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_PHI4, 3, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_PHI5, 3, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_ADAPTB0, 3, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_ADAPTB1, 3, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_ADAPTB2, 3, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_ADAPTB3, 3, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_ADAPTB4, 3, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_ADAPTB5, 3, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_COEFSIERA, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_COEFHPF, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_MIMATC_CTRL, 1, RT_VOLATILE, {0x1f});
RT_REG_DECL(RT5509_REG_TDM_CTRL, 1, RT_VOLATILE, {0x3f});
RT_REG_DECL(RT5509_REG_ECO_CTRL, 1, RT_VOLATILE, {0x01});
RT_REG_DECL(RT5509_REG_BSTTM, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_ALCMINGAIN, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_RESVECO0, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_OTPCONF, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_OTPDIN, 3, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_VBG_TRIM, 1, RT_VOLATILE, {0x1f});
RT_REG_DECL(RT5509_REG_VTEMP_TRIM, 2, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_TCOEFF, 2, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_SPSCONF, 1, RT_VOLATILE, {0x87});
RT_REG_DECL(RT5509_REG_SPSTHR, 3, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_VTHERMBATEN, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_DBGADS, 2, RT_VOLATILE, {0x1f, 0x1f});
RT_REG_DECL(RT5509_REG_TESTDAC, 3, RT_VOLATILE, {0xcf, 0xff, 0xff});
RT_REG_DECL(RT5509_REG_SPKDCS, 2, RT_VOLATILE, {0x80, 0xff});
RT_REG_DECL(RT5509_REG_MSKFLAG, 1, RT_VOLATILE, {0x3f});
RT_REG_DECL(RT5509_REG_DRCMINGAIN, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_DRC_SEL, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_DRC_ATTACK, 16, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_DRC_PARAM, 7, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_DRCBQ1, 20, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_DRCBQ2, 20, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_DRCBQ3, 20, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_DRCBQ4, 20, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_DRCBQ5, 20, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_DRCBQ6, 20, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_DRCBQ7, 20, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_DRCBQ8, 20, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_DRCBQ9, 20, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_DRCBQ10, 20, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_DRCBQ11, 20, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_DRCBQ12, 20, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_DRCEN, 2, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_MTPFLOW1, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_MTPFLOW2, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_MTPFLOW3, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_MTPFLOW4, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_MTPFLOW5, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_MTPFLOW6, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_MTPFLOW7, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_MTPFLOW8, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_MTPFLOW9, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_MTPFLOWA, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_MTPFLOWB, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_MTPFLOWC, 2, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_MTPFLOWD, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_MTPFLOWE, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_MTPFLOWF, 3, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_TESTMODE1, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_RAMIND1, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_RAMIND2, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_SCANMODE, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_CLKEN1, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_CLKEN2, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_PADDRV, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_TESTMODE2, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_SLEWRATE1, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_SLEWRATE2, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_BIASRESISTOR, 2, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_SPKDRV, 2, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_BLOCKREF1, 2, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_BLOCKREF2, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_BIASCURRENT, 1, RT_VOLATILE, {});
RT_REG_DECL(RT5509_REG_BIASOPTION, 1, RT_VOLATILE, {});

static const rt_register_map_t rt5509_regmap[] = {
	RT_REG(RT5509_REG_CHIPREV),
	RT_REG(RT5509_REG_EVENTINFO),
	RT_REG(RT5509_REG_DMGFLAG),
	RT_REG(RT5509_REG_CHIPEN),
	RT_REG(RT5509_REG_AUDFMT),
	RT_REG(RT5509_REG_AUDSR),
	RT_REG(RT5509_REG_I2SSEL),
	RT_REG(RT5509_REG_I2SDOLRSEL),
	RT_REG(RT5509_REG_I2SDOSEL),
	RT_REG(RT5509_REG_FUNCEN),
	RT_REG(RT5509_REG_CLIP_THR),
	RT_REG(RT5509_REG_CLIP_CTRL),
	RT_REG(RT5509_REG_CLIP_SLOPE),
	RT_REG(RT5509_REG_CLIP_VOMIN),
	RT_REG(RT5509_REG_CLIP_SIGMAX),
	RT_REG(RT5509_REG_AMPCONF),
	RT_REG(RT5509_REG_DACRNKGAIN),
	RT_REG(RT5509_REG_SAMPOFFS),
	RT_REG(RT5509_REG_SAMPCONF),
	RT_REG(RT5509_REG_DAGAIN),
	RT_REG(RT5509_REG_FFGAIN),
	RT_REG(RT5509_REG_VBATGAIN),
	RT_REG(RT5509_REG_RLDCOEF1),
	RT_REG(RT5509_REG_RLDCOEF2),
	RT_REG(RT5509_REG_BST_MODE),
	RT_REG(RT5509_REG_BST_TH1),
	RT_REG(RT5509_REG_BST_TH2),
	RT_REG(RT5509_REG_BST_TH3),
	RT_REG(RT5509_REG_BST_CONF1),
	RT_REG(RT5509_REG_BST_SIG_GAIN),
	RT_REG(RT5509_REG_BST_CONF2),
	RT_REG(RT5509_REG_BST_CONF3),
	RT_REG(RT5509_REG_OCPOTPEN),
	RT_REG(RT5509_REG_IDAC1TST),
	RT_REG(RT5509_REG_IDAC2TST),
	RT_REG(RT5509_REG_IDAC3TST),
	RT_REG(RT5509_REG_IDACTSTEN),
	RT_REG(RT5509_REG_CCMAX),
	RT_REG(RT5509_REG_OCPMAX),
	RT_REG(RT5509_REG_INTERRUPT),
	RT_REG(RT5509_REG_INTRMASK),
	RT_REG(RT5509_REG_DEGLITCH),
	RT_REG(RT5509_REG_SICRTNSTHACT),
	RT_REG(RT5509_REG_TIMEDET),
	RT_REG(RT5509_REG_TDELAY),
	RT_REG(RT5509_REG_TATKSEL),
	RT_REG(RT5509_REG_TREL),
	RT_REG(RT5509_REG_THOLDREL),
	RT_REG(RT5509_REG_STHLMT),
	RT_REG(RT5509_REG_XTHLMT),
	RT_REG(RT5509_REG_STHALC),
	RT_REG(RT5509_REG_XTHALC),
	RT_REG(RT5509_REG_INITUDT),
	RT_REG(RT5509_REG_UDT),
	RT_REG(RT5509_REG_DNHALFT),
	RT_REG(RT5509_REG_ALCGAIN),
	RT_REG(RT5509_REG_ADAPTCONF),
	RT_REG(RT5509_REG_INITIMPLDMU),
	RT_REG(RT5509_REG_IMPLDMU),
	RT_REG(RT5509_REG_GPILOT),
	RT_REG(RT5509_REG_PILOTEN),
	RT_REG(RT5509_REG_PILOTNISENSE),
	RT_REG(RT5509_REG_ISENSEGAIN),
	RT_REG(RT5509_REG_RAPP),
	RT_REG(RT5509_REG_DCR_MAX),
	RT_REG(RT5509_REG_DCR_KD),
	RT_REG(RT5509_REG_DCR_KP),
	RT_REG(RT5509_REG_DCR_KI),
	RT_REG(RT5509_REG_INITDCRIDMU),
	RT_REG(RT5509_REG_DCRIDMU),
	RT_REG(RT5509_REG_CALIB_DCR),
	RT_REG(RT5509_REG_CALIB_BL),
	RT_REG(RT5509_REG_CALIB_CTRL),
	RT_REG(RT5509_REG_CALIB_REQ),
	RT_REG(RT5509_REG_CALIB_GAIN),
	RT_REG(RT5509_REG_CALIB_OUT0),
	RT_REG(RT5509_REG_CALIB_OUT1),
	RT_REG(RT5509_REG_XTHLMTDAM),
	RT_REG(RT5509_REG_RMAXDAM),
	RT_REG(RT5509_REG_TSCALEDAM),
	RT_REG(RT5509_REG_RECOVERT),
	RT_REG(RT5509_REG_SETRESFREQ),
	RT_REG(RT5509_REG_GETRESFREQ),
	RT_REG(RT5509_REG_VOLCTL),
	RT_REG(RT5509_REG_VOLUME),
	RT_REG(RT5509_REG_CALIB_OUTX),
	RT_REG(RT5509_REG_CALIB_OUTY),
	RT_REG(RT5509_REG_BQ1),
	RT_REG(RT5509_REG_BQ2),
	RT_REG(RT5509_REG_BQ3),
	RT_REG(RT5509_REG_BQ4),
	RT_REG(RT5509_REG_BQ5),
	RT_REG(RT5509_REG_BQ6),
	RT_REG(RT5509_REG_BQ7),
	RT_REG(RT5509_REG_BQ8),
	RT_REG(RT5509_REG_BQ9),
	RT_REG(RT5509_REG_BQ10),
	RT_REG(RT5509_REG_VBBQ1),
	RT_REG(RT5509_REG_VBBQ2),
	RT_REG(RT5509_REG_VBBQ3),
	RT_REG(RT5509_REG_VBBQ4),
	RT_REG(RT5509_REG_VBBQ5),
	RT_REG(RT5509_REG_VBBQ6),
	RT_REG(RT5509_REG_VBBQ7),
	RT_REG(RT5509_REG_VBBQ8),
	RT_REG(RT5509_REG_VBBQ9),
	RT_REG(RT5509_REG_VBFCN),
	RT_REG(RT5509_REG_VBGAIN1),
	RT_REG(RT5509_REG_VBGAIN2),
	RT_REG(RT5509_REG_VBGAIN3),
	RT_REG(RT5509_REG_VBGAIN4),
	RT_REG(RT5509_REG_VBGAIN5),
	RT_REG(RT5509_REG_VBGAIN6),
	RT_REG(RT5509_REG_VBGAIN7),
	RT_REG(RT5509_REG_VBGAIN8),
	RT_REG(RT5509_REG_VBGAIN9),
	RT_REG(RT5509_REG_VBGAIN10),
	RT_REG(RT5509_REG_SLOPCONST),
	RT_REG(RT5509_REG_BWCOEFF),
	RT_REG(RT5509_REG_SWRESET),
	RT_REG(RT5509_REG_SPKGAIN),
	RT_REG(RT5509_REG_DSPKCONF1),
	RT_REG(RT5509_REG_DSPKCONF2),
	RT_REG(RT5509_REG_DSPKCONF3),
	RT_REG(RT5509_REG_DSPKCONF4),
	RT_REG(RT5509_REG_DSPKVMID),
	RT_REG(RT5509_REG_DSPKZCBOOST),
	RT_REG(RT5509_REG_ISENSE_CTRL),
	RT_REG(RT5509_REG_DIMADC),
	RT_REG(RT5509_REG_DSPKEN1),
	RT_REG(RT5509_REG_VBATDATA),
	RT_REG(RT5509_REG_VTHRMDATA),
	RT_REG(RT5509_REG_VBATSENSE),
	RT_REG(RT5509_REG_IDACTSTNINFO),
	RT_REG(RT5509_REG_IDACBOOST),
	RT_REG(RT5509_REG_DSPKEN2),
	RT_REG(RT5509_REG_DSPKIBCONF1),
	RT_REG(RT5509_REG_DSPKIBCONF2),
	RT_REG(RT5509_REG_DSPKIBCONF3),
	RT_REG(RT5509_REG_DSPKCONF5),
	RT_REG(RT5509_REG_DSPKCONF6),
	RT_REG(RT5509_REG_OVPUVPCTRL),
	RT_REG(RT5509_REG_PLLCONF1),
	RT_REG(RT5509_REG_PLLCONF2),
	RT_REG(RT5509_REG_PLLCONF3),
	RT_REG(RT5509_REG_PLLCONF4),
	RT_REG(RT5509_REG_PLLINFO),
	RT_REG(RT5509_REG_PLLDIVISOR),
	RT_REG(RT5509_REG_ZCCONF),
	RT_REG(RT5509_REG_DCADJ),
	RT_REG(RT5509_REG_I2CBCKLRCKCONF),
	RT_REG(RT5509_REG_TDEN),
	RT_REG(RT5509_REG_ALPHACONF),
	RT_REG(RT5509_REG_SPKRPTSEL),
	RT_REG(RT5509_REG_SPKRPT),
	RT_REG(RT5509_REG_NDELAY),
	RT_REG(RT5509_REG_DELAYRES),
	RT_REG(RT5509_REG_PHI1),
	RT_REG(RT5509_REG_PHI2),
	RT_REG(RT5509_REG_PHI3),
	RT_REG(RT5509_REG_PHI4),
	RT_REG(RT5509_REG_PHI5),
	RT_REG(RT5509_REG_ADAPTB0),
	RT_REG(RT5509_REG_ADAPTB1),
	RT_REG(RT5509_REG_ADAPTB2),
	RT_REG(RT5509_REG_ADAPTB3),
	RT_REG(RT5509_REG_ADAPTB4),
	RT_REG(RT5509_REG_ADAPTB5),
	RT_REG(RT5509_REG_COEFSIERA),
	RT_REG(RT5509_REG_COEFHPF),
	RT_REG(RT5509_REG_MIMATC_CTRL),
	RT_REG(RT5509_REG_TDM_CTRL),
	RT_REG(RT5509_REG_ECO_CTRL),
	RT_REG(RT5509_REG_BSTTM),
	RT_REG(RT5509_REG_ALCMINGAIN),
	RT_REG(RT5509_REG_RESVECO0),
	RT_REG(RT5509_REG_OTPCONF),
	RT_REG(RT5509_REG_OTPDIN),
	RT_REG(RT5509_REG_VBG_TRIM),
	RT_REG(RT5509_REG_VTEMP_TRIM),
	RT_REG(RT5509_REG_TCOEFF),
	RT_REG(RT5509_REG_SPSCONF),
	RT_REG(RT5509_REG_SPSTHR),
	RT_REG(RT5509_REG_VTHERMBATEN),
	RT_REG(RT5509_REG_DBGADS),
	RT_REG(RT5509_REG_TESTDAC),
	RT_REG(RT5509_REG_SPKDCS),
	RT_REG(RT5509_REG_MSKFLAG),
	RT_REG(RT5509_REG_DRCMINGAIN),
	RT_REG(RT5509_REG_DRC_SEL),
	RT_REG(RT5509_REG_DRC_ATTACK),
	RT_REG(RT5509_REG_DRC_PARAM),
	RT_REG(RT5509_REG_DRCBQ1),
	RT_REG(RT5509_REG_DRCBQ2),
	RT_REG(RT5509_REG_DRCBQ3),
	RT_REG(RT5509_REG_DRCBQ4),
	RT_REG(RT5509_REG_DRCBQ5),
	RT_REG(RT5509_REG_DRCBQ6),
	RT_REG(RT5509_REG_DRCBQ7),
	RT_REG(RT5509_REG_DRCBQ8),
	RT_REG(RT5509_REG_DRCBQ9),
	RT_REG(RT5509_REG_DRCBQ10),
	RT_REG(RT5509_REG_DRCBQ11),
	RT_REG(RT5509_REG_DRCBQ12),
	RT_REG(RT5509_REG_DRCEN),
	RT_REG(RT5509_REG_MTPFLOW1),
	RT_REG(RT5509_REG_MTPFLOW2),
	RT_REG(RT5509_REG_MTPFLOW3),
	RT_REG(RT5509_REG_MTPFLOW4),
	RT_REG(RT5509_REG_MTPFLOW5),
	RT_REG(RT5509_REG_MTPFLOW6),
	RT_REG(RT5509_REG_MTPFLOW7),
	RT_REG(RT5509_REG_MTPFLOW8),
	RT_REG(RT5509_REG_MTPFLOW9),
	RT_REG(RT5509_REG_MTPFLOWA),
	RT_REG(RT5509_REG_MTPFLOWB),
	RT_REG(RT5509_REG_MTPFLOWC),
	RT_REG(RT5509_REG_MTPFLOWD),
	RT_REG(RT5509_REG_MTPFLOWE),
	RT_REG(RT5509_REG_MTPFLOWF),
	RT_REG(RT5509_REG_TESTMODE1),
	RT_REG(RT5509_REG_RAMIND1),
	RT_REG(RT5509_REG_RAMIND2),
	RT_REG(RT5509_REG_SCANMODE),
	RT_REG(RT5509_REG_CLKEN1),
	RT_REG(RT5509_REG_CLKEN2),
	RT_REG(RT5509_REG_PADDRV),
	RT_REG(RT5509_REG_TESTMODE2),
	RT_REG(RT5509_REG_SLEWRATE1),
	RT_REG(RT5509_REG_SLEWRATE2),
	RT_REG(RT5509_REG_BIASRESISTOR),
	RT_REG(RT5509_REG_SPKDRV),
	RT_REG(RT5509_REG_BLOCKREF1),
	RT_REG(RT5509_REG_BLOCKREF2),
	RT_REG(RT5509_REG_BIASCURRENT),
	RT_REG(RT5509_REG_BIASOPTION),
};
#define REGISTER_NUM ARRAY_SIZE(rt5509_regmap)

static struct rt_regmap_properties rt5509_regmap_props = {
	.register_num = REGISTER_NUM,
	.rm = rt5509_regmap,
	.rt_regmap_mode = RT_MULTI_BYTE | RT_CACHE_DISABLE | RT_DBG_SPECIAL,
	.aliases = "rt5509",
};

#if RT5509_SIMULATE_DEVICE
int rt5509_calculate_offset(int reg)
{
	int i = 0;
	int offset = 0;
	int ret = -EINVAL;

	for (i = 0; i < REGISTER_NUM; i++,
		offset += (rt5509_regmap[i]->size)) {
		if (rt5509_regmap[i]->addr == reg) {
			ret = offset;
			break;
		}
	}
	return ret;
}
EXPORT_SYMBOL(rt5509_calculate_offset);

int rt5509_calculate_total_size(void)
{
	int i = 0;
	int ret = 0;

	for (i = 0; i < REGISTER_NUM; i++)
		ret += rt5509_regmap[i]->size;
	return ret;
}
EXPORT_SYMBOL(rt5509_calculate_total_size);
#endif /* #if RT5509_SIMULATE_DEVICE */
#endif /* #ifdef CONFIG_RT_REGMAP */

/* ---------------------------------------------------------------------
 * RT5509 register map related function
 *
 */
struct rt_regmap_device *rt5509_regmap_register(
	struct rt_regmap_fops *regmap_ops,
	struct device *parent, void *client, void *drvdata)
{
#ifdef CONFIG_RT_REGMAP
	rt5509_regmap_props.name = kasprintf(GFP_KERNEL,
		"rt5509.%s", dev_name(parent));
	return rt_regmap_device_register(
		&rt5509_regmap_props, regmap_ops, parent, client, drvdata);
#else
	return 0;
#endif /* #ifdef CONFIG_RT_REGMAP */
}
EXPORT_SYMBOL_GPL(rt5509_regmap_register);
