diff --git a/drivers/audio/aw88266a.c b/drivers/audio/aw88266a.c index 4041849a4a9..0cadde5b8ac 100644 --- a/drivers/audio/aw88266a.c +++ b/drivers/audio/aw88266a.c @@ -49,6 +49,7 @@ #define AW88266A_CHIPID (0x2013) #define AW88266A_SOFT_RESET (0x55aa) #define MAX_RETRIES 3 +#define AW88266A_SYSST_CHECK_MAX 10 #define ARRAY_SIZE(array) sizeof(array) / sizeof(array[0]) /**************************************************************************** @@ -216,72 +217,126 @@ static int aw88266a_release(FAR struct audio_lowerhalf_s *dev); static const unsigned char g_aw88266a_reg_access[AW88266A_REG_MAX] = { - [AW88266A_ID_REG] = (REG_RD_ACCESS), - [AW88266A_SYSST_REG] = (REG_RD_ACCESS), - [AW88266A_SYSINT_REG] = (REG_RD_ACCESS), - [AW88266A_SYSINTM_REG] = (REG_RD_ACCESS | REG_WR_ACCESS), - [AW88266A_SYSCTRL_REG] = (REG_RD_ACCESS | REG_WR_ACCESS), - [AW88266A_SYSCTRL2_REG] = (REG_RD_ACCESS | REG_WR_ACCESS), - [AW88266A_I2SCTRL_REG] = (REG_RD_ACCESS | REG_WR_ACCESS), - [AW88266A_I2SCFG1_REG] = (REG_RD_ACCESS | REG_WR_ACCESS), - [AW88266A_I2SCFG2_REG] = (REG_RD_ACCESS | REG_WR_ACCESS), - [AW88266A_HAGCCFG1_REG] = (REG_RD_ACCESS | REG_WR_ACCESS), - [AW88266A_HAGCCFG2_REG] = (REG_RD_ACCESS | REG_WR_ACCESS), - [AW88266A_HAGCCFG3_REG] = (REG_RD_ACCESS | REG_WR_ACCESS), - [AW88266A_HAGCCFG4_REG] = (REG_RD_ACCESS | REG_WR_ACCESS), - [AW88266A_HAGCCFG5_REG] = (REG_RD_ACCESS | REG_WR_ACCESS), - [AW88266A_HAGCCFG6_REG] = (REG_RD_ACCESS | REG_WR_ACCESS), - [AW88266A_HAGCCFG7_REG] = (REG_RD_ACCESS | REG_WR_ACCESS), - [AW88266A_HAGCST_REG] = (REG_RD_ACCESS), - [AW88266A_PRODID_REG] = (REG_RD_ACCESS), - [AW88266A_VBAT_REG] = (REG_RD_ACCESS), - [AW88266A_TEMP_REG] = (REG_RD_ACCESS), - [AW88266A_PVDD_REG] = (REG_RD_ACCESS), - [AW88266A_DBGCTRL_REG] = (REG_RD_ACCESS | REG_WR_ACCESS), - [AW88266A_I2SINT_REG] = (REG_RD_ACCESS), - [AW88266A_I2SCAPCNT_REG] = (REG_RD_ACCESS), - [AW88266A_CRCIN_REG] = (REG_RD_ACCESS | REG_WR_ACCESS), - [AW88266A_CRCOUT_REG] = (REG_RD_ACCESS), - [AW88266A_VSNCTRL1_REG] = (REG_RD_ACCESS | REG_WR_ACCESS), - [AW88266A_ISNCTRL1_REG] = (REG_RD_ACCESS | REG_WR_ACCESS), - [AW88266A_ISNCTRL2_REG] = (REG_RD_ACCESS | REG_WR_ACCESS), - [AW88266A_VTMCTRL1_REG] = (REG_RD_ACCESS | REG_WR_ACCESS), - [AW88266A_VTMCTRL2_REG] = (REG_RD_ACCESS | REG_WR_ACCESS), - [AW88266A_VTMCTRL3_REG] = (REG_RD_ACCESS | REG_WR_ACCESS), - [AW88266A_ISNDAT_REG] = (REG_RD_ACCESS), - [AW88266A_VSNDAT_REG] = (REG_RD_ACCESS), - [AW88266A_PWMCTRL_REG] = (REG_RD_ACCESS | REG_WR_ACCESS), - [AW88266A_PWMCTRL2_REG] = (REG_RD_ACCESS | REG_WR_ACCESS), - [AW88266A_BSTCTRL1_REG] = (REG_RD_ACCESS | REG_WR_ACCESS), - [AW88266A_BSTCTRL2_REG] = (REG_RD_ACCESS | REG_WR_ACCESS), - [AW88266A_BSTCTRL3_REG] = (REG_RD_ACCESS | REG_WR_ACCESS), - [AW88266A_BSTDBG1_REG] = (REG_RD_ACCESS | REG_WR_ACCESS), - [AW88266A_BSTDBG2_REG] = (REG_RD_ACCESS | REG_WR_ACCESS), - [AW88266A_BSTDBG3_REG] = (REG_RD_ACCESS | REG_WR_ACCESS), - [AW88266A_PLLCTRL1_REG] = (REG_RD_ACCESS | REG_WR_ACCESS), - [AW88266A_PLLCTRL2_REG] = (REG_RD_ACCESS | REG_WR_ACCESS), - [AW88266A_PLLCTRL3_REG] = (REG_RD_ACCESS | REG_WR_ACCESS), - [AW88266A_CDACTRL1_REG] = (REG_RD_ACCESS | REG_WR_ACCESS), - [AW88266A_CDACTRL2_REG] = (REG_RD_ACCESS | REG_WR_ACCESS), - [AW88266A_SADCCTRL_REG] = (REG_RD_ACCESS | REG_WR_ACCESS), - [AW88266A_TESTCTRL1_REG] = (REG_RD_ACCESS | REG_WR_ACCESS), - [AW88266A_TESTCTRL2_REG] = (REG_RD_ACCESS | REG_WR_ACCESS), - [AW88266A_EFCTRL1_REG] = (REG_RD_ACCESS | REG_WR_ACCESS), - [AW88266A_EFCTRL2_REG] = (REG_RD_ACCESS | REG_WR_ACCESS), - [AW88266A_EFWH_REG] = (REG_RD_ACCESS | REG_WR_ACCESS), - [AW88266A_EFWM2_REG] = (REG_RD_ACCESS | REG_WR_ACCESS), - [AW88266A_EFWM1_REG] = (REG_RD_ACCESS | REG_WR_ACCESS), - [AW88266A_EFWL_REG] = (REG_RD_ACCESS | REG_WR_ACCESS), - [AW88266A_EFRH_REG] = (REG_RD_ACCESS), - [AW88266A_EFRM2_REG] = (REG_RD_ACCESS), - [AW88266A_EFRM1_REG] = (REG_RD_ACCESS), - [AW88266A_EFRL_REG] = (REG_RD_ACCESS), - [AW88266A_TESTDET_REG] = (REG_RD_ACCESS), + [AW88266A_ID_REG] = (AW88266A_REG_RD_ACCESS), + [AW88266A_SYSST_REG] = (AW88266A_REG_RD_ACCESS), + [AW88266A_SYSINT_REG] = (AW88266A_REG_RD_ACCESS), + [AW88266A_SYSINTM_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_SYSCTRL_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_SYSCTRL2_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_I2SCTRL1_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_I2SCTRL2_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_DACCFG1_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_DACCFG2_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_DACCFG3_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_DACCFG4_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_DACCFG5_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_DACCFG6_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_DACCFG7_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_PWMCTRL_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_I2SCFG1_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_DBGCTRL_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_DACST_REG] = (AW88266A_REG_RD_ACCESS), + [AW88266A_VBAT_REG] = (AW88266A_REG_RD_ACCESS), + [AW88266A_TEMP_REG] = (AW88266A_REG_RD_ACCESS), + [AW88266A_PVDD_REG] = (AW88266A_REG_RD_ACCESS), + [AW88266A_ISNDAT_REG] = (AW88266A_REG_RD_ACCESS), + [AW88266A_VSNDAT_REG] = (AW88266A_REG_RD_ACCESS), + [AW88266A_I2SINT_REG] = (AW88266A_REG_RD_ACCESS), + [AW88266A_I2SCAPCNT_REG] = (AW88266A_REG_RD_ACCESS), + [AW88266A_ANASTA1_REG] = (AW88266A_REG_RD_ACCESS), + [AW88266A_ANASTA2_REG] = (AW88266A_REG_RD_ACCESS), + [AW88266A_ANASTA3_REG] = (AW88266A_REG_RD_ACCESS), + [AW88266A_TESTDET_REG] = (AW88266A_REG_RD_ACCESS), + [AW88266A_TESTIN_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_TESTOUT_REG] = (AW88266A_REG_RD_ACCESS), + [AW88266A_VSNTM1_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_VSNTM2_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_ISNCTRL1_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_PLLCTRL1_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_PLLCTRL2_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_PLLCTRL3_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_CDACTRL1_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_CDACTRL2_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_SADCCTRL1_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_BSTCTRL1_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_BSTCTRL2_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_BSTCTRL3_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_BSTCTRL4_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_BSTCTRL5_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_BSTCTRL6_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_DSMCFG1_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_DSMCFG2_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_DSMCFG3_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_DSMCFG4_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_DSMCFG5_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_DSMCFG6_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_DSMCFG7_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_DSMCFG8_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_TESTCTRL1_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_TESTCTRL2_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_EFCTRL1_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_EFCTRL2_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_EFWH_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_EFWM2_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_EFWM1_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_EFWL_REG] = (AW88266A_REG_RD_ACCESS | + AW88266A_REG_WR_ACCESS), + [AW88266A_EFRH_REG] = (AW88266A_REG_RD_ACCESS), + [AW88266A_EFRM2_REG] = (AW88266A_REG_RD_ACCESS), + [AW88266A_EFRM1_REG] = (AW88266A_REG_RD_ACCESS), + [AW88266A_EFRL_REG] = (AW88266A_REG_RD_ACCESS), + [AW88266A_TM_REG] = (AW88266A_REG_NONE_ACCESS), }; static const aw88266a_reg_cfg_t g_aw88266a_spk_cfg[] = { - {0x03, 0xfff}, + {0x03, 0xffff}, {0x04, 0xb240}, {0x05, 0x6007}, {0x06, 0x84e8}, @@ -400,7 +455,7 @@ static void aw88266a_run_pwd(FAR struct aw88266a_dev_s *priv, { aw88266a_write_reg_bit(priv, AW88266A_SYSCTRL_REG, AW88266A_PWDN_MASK, - AW88266A_PWDN_NORMAL_WORKING); + AW88266A_PWDN_WORKING_VALUE); } } @@ -430,10 +485,10 @@ static void aw88266a_set_channel(FAR struct aw88266a_dev_s *priv, } else { - reg_value = AW88266A_CHSEL_MONO_LR2_VALUE; + reg_value = AW88266A_CHSEL_MONO_VALUE; } - aw88266a_write_reg_bit(priv, AW88266A_I2SCTRL_REG, + aw88266a_write_reg_bit(priv, AW88266A_I2SCTRL1_REG, AW88266A_CHSEL_MASK, reg_value); } @@ -449,79 +504,67 @@ static void aw88266a_set_rate(FAR struct aw88266a_dev_s *priv, uint16_t rate) { uint16_t reg_value; - uint32_t cco_mux_value; switch (rate) { case 8000: { - reg_value = AW88266A_I2SSR_8KHZ_VALUE; - cco_mux_value = AW88266A_I2S_CCO_MUX_8_16_32KHZ_VALUE; + reg_value = AW88266A_I2SSR_8_KHZ_VALUE; } break; case 11000: { - reg_value = AW88266A_I2SSR_11P025KHZ_VALUE; - cco_mux_value = AW88266A_I2S_CCO_MUX_EXC_8_16_32KHZ_VALUE; + reg_value = AW88266A_I2SSR_11_KHZ_VALUE; } break; case 16000: { - reg_value = AW88266A_I2SSR_16KHZ_VALUE; - cco_mux_value = AW88266A_I2S_CCO_MUX_8_16_32KHZ_VALUE; + reg_value = AW88266A_I2SSR_16_KHZ_VALUE; } break; case 22000: { - reg_value = AW88266A_I2SSR_22P05KHZ_VALUE; - cco_mux_value = AW88266A_I2S_CCO_MUX_EXC_8_16_32KHZ_VALUE; + reg_value = AW88266A_I2SSR_22_KHZ_VALUE; } break; case 24000: { - reg_value = AW88266A_I2SSR_24KHZ_VALUE; - cco_mux_value = AW88266A_I2S_CCO_MUX_EXC_8_16_32KHZ_VALUE; + reg_value = AW88266A_I2SSR_24_KHZ_VALUE; } break; case 32000: { - reg_value = AW88266A_I2SSR_32KHZ_VALUE; - cco_mux_value = AW88266A_I2S_CCO_MUX_8_16_32KHZ_VALUE; + reg_value = AW88266A_I2SSR_32_KHZ_VALUE; } break; case 44000: { - reg_value = AW88266A_I2SSR_44P1KHZ_VALUE; - cco_mux_value = AW88266A_I2S_CCO_MUX_EXC_8_16_32KHZ_VALUE; + reg_value = AW88266A_I2SSR_44_KHZ_VALUE; } break; case 48000: { - reg_value = AW88266A_I2SSR_48KHZ_VALUE; - cco_mux_value = AW88266A_I2S_CCO_MUX_EXC_8_16_32KHZ_VALUE; + reg_value = AW88266A_I2SSR_48_KHZ_VALUE; } break; default: { - reg_value = AW88266A_I2SSR_48KHZ_VALUE; + reg_value = AW88266A_I2SSR_48_KHZ_VALUE; } break; } - aw88266a_write_reg_bit(priv, AW88266A_PLLCTRL1_REG, - AW88266A_I2S_CCO_MUX_MASK, cco_mux_value); - /* set rate */ - aw88266a_write_reg_bit(priv, AW88266A_I2SCTRL_REG, + aw88266a_write_reg_bit(priv, AW88266A_I2SCTRL1_REG, AW88266A_I2SSR_MASK, reg_value); } @@ -567,7 +610,7 @@ static void aw88266a_set_width(FAR struct aw88266a_dev_s *priv, /* set width */ - aw88266a_write_reg_bit(priv, AW88266A_I2SCTRL_REG, + aw88266a_write_reg_bit(priv, AW88266A_I2SCTRL1_REG, AW88266A_I2SFS_MASK, reg_value); } @@ -580,25 +623,25 @@ static void aw88266a_set_width(FAR struct aw88266a_dev_s *priv, ****************************************************************************/ static void aw88266a_set_blck(FAR struct aw88266a_dev_s *priv, - uint32_t bclk) + uint8_t bclk_factor) { uint16_t reg_value; - switch (bclk) + switch (bclk_factor) { - case 512000: + case 32: { reg_value = AW88266A_I2SBCK_32FS_VALUE; } break; - case 768000: + case 48: { reg_value = AW88266A_I2SBCK_48FS_VALUE; } break; - case 1024000: + case 64: { reg_value = AW88266A_I2SBCK_64FS_VALUE; } @@ -613,7 +656,7 @@ static void aw88266a_set_blck(FAR struct aw88266a_dev_s *priv, /* set fs */ - aw88266a_write_reg_bit(priv, AW88266A_I2SCTRL_REG, + aw88266a_write_reg_bit(priv, AW88266A_I2SCTRL1_REG, AW88266A_I2SBCK_MASK, reg_value); } @@ -669,13 +712,72 @@ static void aw88266a_dump_register(FAR struct aw88266a_dev_s *priv) for (i = 0; i < AW88266A_REG_MAX; i++) { - if (g_aw88266a_reg_access[i] & REG_RD_ACCESS) + if (g_aw88266a_reg_access[i] & AW88266A_REG_RD_ACCESS) { reg_val = aw88266a_read_reg(priv, i); } } } +/**************************************************************************** + * Name: aw88266a_pll_check + * + * Description: + * check aw88266a pll clock + * + ****************************************************************************/ + +static int aw88266a_pll_check(FAR struct aw88266a_dev_s *priv) +{ + int ret; + uint8_t i; + uint16_t reg_val; + + for (i = 0; i < AW88266A_SYSST_CHECK_MAX; i++) + { + reg_val = aw88266a_read_reg(priv, AW88266A_SYSST_REG); + if (((reg_val & (~AW88266A_SYSST_CHECK_MASK)) & + AW88266A_SYSST_CHECK) == AW88266A_SYSST_CHECK) + { + ret = OK; + break; + } + else + { + auderr("ERROR: check pll fail:cnt=%d reg_val=0x%04x\n\n", + i, reg_val); + ret = ERROR; + up_mdelay(2); + } + } + + return ret; +} + +/**************************************************************************** + * Name: aw88266a_run_amp + * + * Description: + * enable/disable aw88266a amp running status + * + ****************************************************************************/ + +static void aw88266a_run_amp(FAR struct aw88266a_dev_s *priv, bool status) +{ + if (status) + { + aw88266a_write_reg_bit(priv, AW88266A_SYSCTRL_REG, + AW88266A_AMPPD_MASK, + AW88266A_AMPPD_WORKING_VALUE); + } + else + { + aw88266a_write_reg_bit(priv, AW88266A_SYSCTRL_REG, + AW88266A_AMPPD_MASK, + AW88266A_AMPPD_POWER_DOWN_VALUE); + } +} + /**************************************************************************** * Name: aw88266a_set_gain * @@ -697,8 +799,8 @@ static int aw88266a_set_gain(FAR struct aw88266a_dev_s *priv, int gain) /* cal real gain */ - gain = (((gain / AW88266A_VOL_6DB_STEP) << 6) - + (gain % AW88266A_VOL_6DB_STEP)); + gain = (((gain / AW88266A_VOL_STEP_DB) << 6) + + (gain % AW88266A_VOL_STEP_DB)); /* get reg_val form real gain */ @@ -727,7 +829,7 @@ int aw88266a_get_gain(FAR struct aw88266a_dev_s *priv, FAR int *gain) reg_val = (reg_val & (~0xfc00)); *gain = AW88266A_GAIN_MAX - - ((reg_val >> 6) * AW88266A_VOL_6DB_STEP + (reg_val & 0x3f)); + ((reg_val >> 6) * AW88266A_VOL_STEP_DB + (reg_val & 0x3f)); return OK; } @@ -1033,9 +1135,7 @@ static int aw88266a_configure(FAR struct audio_lowerhalf_s *dev, aw88266a_set_channel(priv, priv->nchannels); aw88266a_set_rate(priv, priv->samprate); aw88266a_set_width(priv, priv->bpsamp); - aw88266a_set_blck(priv, priv->bclk); - - aw88266a_set_volume(priv, 100); + aw88266a_set_blck(priv, priv->lower->bclk_factor); } break; @@ -1063,6 +1163,7 @@ static int aw88266a_shutdown(FAR struct audio_lowerhalf_s *dev) FAR struct aw88266a_dev_s *priv = (FAR struct aw88266a_dev_s *)dev; aw88266a_run_mute(priv, true); + aw88266a_run_amp(priv, false); aw88266a_run_pwd(priv, true); audinfo("shutdown OK\n"); @@ -1085,6 +1186,20 @@ aw88266a_start(FAR struct audio_lowerhalf_s *dev, static int aw88266a_start(FAR struct audio_lowerhalf_s *dev) #endif { + FAR struct aw88266a_dev_s *priv = (FAR struct aw88266a_dev_s *)dev; + + aw88266a_run_pwd(priv, false); + + if (aw88266a_pll_check(priv) < 0) + { + auderr("ERROR: aw88266a pll check failed\n"); + } + + aw88266a_run_amp(priv, true); + aw88266a_run_mute(priv, false); + aw88266a_set_volume(priv, 100); + + audinfo("Return OK\n"); return OK; } @@ -1208,10 +1323,6 @@ aw88266a_reserve(FAR struct audio_lowerhalf_s *dev, FAR void **session) static int aw88266a_reserve(FAR struct audio_lowerhalf_s *dev) #endif { - FAR struct aw88266a_dev_s *priv = (FAR struct aw88266a_dev_s *)dev; - - aw88266a_run_pwd(priv, false); - aw88266a_run_mute(priv, false); audinfo("Reserve OK\n"); return OK; @@ -1276,6 +1387,10 @@ static void aw88266a_write_reg(FAR struct aw88266a_dev_s *priv, { auderr("ERROR: I2C_TRANSFER failed: %d\n", ret); } + else + { + break; + } audinfo("retries=%d regaddr=%02x\n", retries, regaddr); } diff --git a/drivers/audio/aw88266a.h b/drivers/audio/aw88266a.h index 85ebfa6f5c9..59a549d860b 100644 --- a/drivers/audio/aw88266a.h +++ b/drivers/audio/aw88266a.h @@ -26,55 +26,61 @@ ****************************************************************************/ /* registers list */ - #define AW88266A_ID_REG (0x00) #define AW88266A_SYSST_REG (0x01) #define AW88266A_SYSINT_REG (0x02) #define AW88266A_SYSINTM_REG (0x03) #define AW88266A_SYSCTRL_REG (0x04) #define AW88266A_SYSCTRL2_REG (0x05) -#define AW88266A_I2SCTRL_REG (0x06) -#define AW88266A_I2SCFG1_REG (0x07) -#define AW88266A_I2SCFG2_REG (0x08) -#define AW88266A_HAGCCFG1_REG (0x09) -#define AW88266A_HAGCCFG2_REG (0x0A) -#define AW88266A_HAGCCFG3_REG (0x0B) -#define AW88266A_HAGCCFG4_REG (0x0C) -#define AW88266A_HAGCCFG5_REG (0x0D) -#define AW88266A_HAGCCFG6_REG (0x0E) -#define AW88266A_HAGCCFG7_REG (0x0F) -#define AW88266A_HAGCST_REG (0x10) -#define AW88266A_PRODID_REG (0x11) -#define AW88266A_VBAT_REG (0x12) -#define AW88266A_TEMP_REG (0x13) -#define AW88266A_PVDD_REG (0x14) -#define AW88266A_DBGCTRL_REG (0x20) -#define AW88266A_I2SINT_REG (0x21) -#define AW88266A_I2SCAPCNT_REG (0x22) -#define AW88266A_CRCIN_REG (0x38) -#define AW88266A_CRCOUT_REG (0x39) -#define AW88266A_VSNCTRL1_REG (0x50) +#define AW88266A_I2SCTRL1_REG (0x06) +#define AW88266A_I2SCTRL2_REG (0x07) +#define AW88266A_DACCFG1_REG (0x08) +#define AW88266A_DACCFG2_REG (0x09) +#define AW88266A_DACCFG3_REG (0x0A) +#define AW88266A_DACCFG4_REG (0x0B) +#define AW88266A_DACCFG5_REG (0x0C) +#define AW88266A_DACCFG6_REG (0x0D) +#define AW88266A_DACCFG7_REG (0x0E) +#define AW88266A_PWMCTRL_REG (0x10) +#define AW88266A_I2SCFG1_REG (0x11) +#define AW88266A_DBGCTRL_REG (0x12) +#define AW88266A_DACST_REG (0x20) +#define AW88266A_VBAT_REG (0x21) +#define AW88266A_TEMP_REG (0x22) +#define AW88266A_PVDD_REG (0x23) +#define AW88266A_ISNDAT_REG (0x24) +#define AW88266A_VSNDAT_REG (0x25) +#define AW88266A_I2SINT_REG (0x26) +#define AW88266A_I2SCAPCNT_REG (0x27) +#define AW88266A_ANASTA1_REG (0x28) +#define AW88266A_ANASTA2_REG (0x29) +#define AW88266A_ANASTA3_REG (0x2A) +#define AW88266A_TESTDET_REG (0x2B) +#define AW88266A_TESTIN_REG (0x38) +#define AW88266A_TESTOUT_REG (0x39) +#define AW88266A_VSNTM1_REG (0x50) +#define AW88266A_VSNTM2_REG (0x51) #define AW88266A_ISNCTRL1_REG (0x52) -#define AW88266A_ISNCTRL2_REG (0x53) -#define AW88266A_VTMCTRL1_REG (0x54) -#define AW88266A_VTMCTRL2_REG (0x55) -#define AW88266A_VTMCTRL3_REG (0x56) -#define AW88266A_ISNDAT_REG (0x57) -#define AW88266A_VSNDAT_REG (0x58) -#define AW88266A_PWMCTRL_REG (0x59) -#define AW88266A_PWMCTRL2_REG (0x5A) +#define AW88266A_PLLCTRL1_REG (0x53) +#define AW88266A_PLLCTRL2_REG (0x54) +#define AW88266A_PLLCTRL3_REG (0x55) +#define AW88266A_CDACTRL1_REG (0x56) +#define AW88266A_CDACTRL2_REG (0x57) +#define AW88266A_SADCCTRL1_REG (0x58) #define AW88266A_BSTCTRL1_REG (0x60) #define AW88266A_BSTCTRL2_REG (0x61) #define AW88266A_BSTCTRL3_REG (0x62) -#define AW88266A_BSTDBG1_REG (0x63) -#define AW88266A_BSTDBG2_REG (0x64) -#define AW88266A_BSTDBG3_REG (0x65) -#define AW88266A_PLLCTRL1_REG (0x66) -#define AW88266A_PLLCTRL2_REG (0x67) -#define AW88266A_PLLCTRL3_REG (0x68) -#define AW88266A_CDACTRL1_REG (0x69) -#define AW88266A_CDACTRL2_REG (0x6A) -#define AW88266A_SADCCTRL_REG (0x6B) +#define AW88266A_BSTCTRL4_REG (0x63) +#define AW88266A_BSTCTRL5_REG (0x64) +#define AW88266A_BSTCTRL6_REG (0x65) +#define AW88266A_DSMCFG1_REG (0x66) +#define AW88266A_DSMCFG2_REG (0x67) +#define AW88266A_DSMCFG3_REG (0x68) +#define AW88266A_DSMCFG4_REG (0x69) +#define AW88266A_DSMCFG5_REG (0x6A) +#define AW88266A_DSMCFG6_REG (0x6B) +#define AW88266A_DSMCFG7_REG (0x6C) +#define AW88266A_DSMCFG8_REG (0x6D) #define AW88266A_TESTCTRL1_REG (0x70) #define AW88266A_TESTCTRL2_REG (0x71) #define AW88266A_EFCTRL1_REG (0x72) @@ -87,15 +93,14 @@ #define AW88266A_EFRM2_REG (0x79) #define AW88266A_EFRM1_REG (0x7A) #define AW88266A_EFRL_REG (0x7B) -#define AW88266A_TESTDET_REG (0x7C) +#define AW88266A_TM_REG (0x7C) #define AW88266A_REG_MAX (0x7D) -#define REG_NONE_ACCESS (0) -#define REG_RD_ACCESS (1 << 0) -#define REG_WR_ACCESS (1 << 1) +#define AW88266A_REG_NONE_ACCESS (0) +#define AW88266A_REG_RD_ACCESS (1 << 0) +#define AW88266A_REG_WR_ACCESS (1 << 1) #define AW88266A_GAIN_MAX (767) -#define AW88266A_VOL_6DB_STEP (6 * 8) /* detail information of registers begin * ID (0x00) detail @@ -107,13 +112,15 @@ #define AW88266A_IDCODE_MASK \ (~(((1 << AW88266A_IDCODE_BITS_LEN) - 1 ) << AW88266A_IDCODE_START_BIT)) -#define AW88266A_IDCODE_DEFAULT_VALUE (0x1852) +#define AW88266A_IDCODE_DEFAULT_VALUE (0x2013) #define AW88266A_IDCODE_DEFAULT \ (AW88266A_IDCODE_DEFAULT_VALUE << AW88266A_IDCODE_START_BIT) /* default value of ID (0x00) - * #define AW88266A_ID_DEFAULT (0x1852) - * SYSST (0x01) detail + * #define AW88266A_ID_DEFAULT (0x2013) + */ + +/* SYSST (0x01) detail * OVP2S bit 15 (SYSST 0x01) */ @@ -122,12 +129,13 @@ #define AW88266A_OVP2S_MASK \ (~(((1 << AW88266A_OVP2S_BITS_LEN) - 1) << AW88266A_OVP2S_START_BIT)) -#define AW88266A_OVP2S_NONE (0) -#define AW88266A_OVP2S_NONE_VALUE \ - (AW88266A_OVP2S_NONE << AW88266A_OVP2S_START_BIT) -#define AW88266A_OVP2S_TRIG (1) -#define AW88266A_OVP2S_TRIG_VALUE \ - (AW88266A_OVP2S_TRIG << AW88266A_OVP2S_START_BIT) +#define AW88266A_OVP2S_NORMAL (0) +#define AW88266A_OVP2S_NORMAL_VALUE \ + (AW88266A_OVP2S_NORMAL << AW88266A_OVP2S_START_BIT) + +#define AW88266A_OVP2S_OVP (1) +#define AW88266A_OVP2S_OVP_VALUE \ + (AW88266A_OVP2S_OVP << AW88266A_OVP2S_START_BIT) #define AW88266A_OVP2S_DEFAULT_VALUE (0) #define AW88266A_OVP2S_DEFAULT \ @@ -140,13 +148,13 @@ #define AW88266A_UVLS_MASK \ (~(((1 << AW88266A_UVLS_BITS_LEN) - 1) << AW88266A_UVLS_START_BIT)) -#define AW88266A_UVLS_VDD_ABOVE_2P8V (0) -#define AW88266A_UVLS_VDD_ABOVE_2P8V_VALUE \ - (AW88266A_UVLS_VDD_ABOVE_2P8V << AW88266A_UVLS_START_BIT) +#define AW88266A_UVLS_NORMAL (0) +#define AW88266A_UVLS_NORMAL_VALUE \ + (AW88266A_UVLS_NORMAL << AW88266A_UVLS_START_BIT) -#define AW88266A_UVLS_VDD_BELOW_2P8V (1) -#define AW88266A_UVLS_VDD_BELOW_2P8V_VALUE \ - (AW88266A_UVLS_VDD_BELOW_2P8V << AW88266A_UVLS_START_BIT) +#define AW88266A_UVLS_UVLO (1) +#define AW88266A_UVLS_UVLO_VALUE \ + (AW88266A_UVLS_UVLO << AW88266A_UVLS_START_BIT) #define AW88266A_UVLS_DEFAULT_VALUE (0) #define AW88266A_UVLS_DEFAULT \ @@ -177,12 +185,13 @@ #define AW88266A_BSTOCS_MASK \ (~(((1 << AW88266A_BSTOCS_BITS_LEN) - 1) << AW88266A_BSTOCS_START_BIT)) -#define AW88266A_BSTOCS_NONE (0) -#define AW88266A_BSTOCS_NONE_VALUE \ - (AW88266A_BSTOCS_NONE << AW88266A_BSTOCS_START_BIT) -#define AW88266A_BSTOCS_TRIG (1) -#define AW88266A_BSTOCS_TRIG_VALUE \ - (AW88266A_BSTOCS_TRIG << AW88266A_BSTOCS_START_BIT) +#define AW88266A_BSTOCS_NORMAL (0) +#define AW88266A_BSTOCS_NORMAL_VALUE \ + (AW88266A_BSTOCS_NORMAL << AW88266A_BSTOCS_START_BIT) + +#define AW88266A_BSTOCS_OVER_CURRENT (1) +#define AW88266A_BSTOCS_OVER_CURRENT_VALUE \ + (AW88266A_BSTOCS_OVER_CURRENT << AW88266A_BSTOCS_START_BIT) #define AW88266A_BSTOCS_DEFAULT_VALUE (0) #define AW88266A_BSTOCS_DEFAULT \ @@ -195,12 +204,13 @@ #define AW88266A_OVPS_MASK \ (~(((1 << AW88266A_OVPS_BITS_LEN) - 1) << AW88266A_OVPS_START_BIT)) -#define AW88266A_OVPS_NONE (0) -#define AW88266A_OVPS_NONE_VALUE \ - (AW88266A_OVPS_NONE << AW88266A_OVPS_START_BIT) -#define AW88266A_OVPS_TRIG (1) -#define AW88266A_OVPS_NONE_VALUE \ - (AW88266A_OVPS_NONE << AW88266A_OVPS_START_BIT) +#define AW88266A_OVPS_NORMAL (0) +#define AW88266A_OVPS_NORMAL_VALUE \ + (AW88266A_OVPS_NORMAL << AW88266A_OVPS_START_BIT) + +#define AW88266A_OVPS_OVP (1) +#define AW88266A_OVPS_OVP_VALUE \ + (AW88266A_OVPS_OVP << AW88266A_OVPS_START_BIT) #define AW88266A_OVPS_DEFAULT_VALUE (0) #define AW88266A_OVPS_DEFAULT \ @@ -242,25 +252,6 @@ #define AW88266A_SWS_DEFAULT \ (AW88266A_SWS_DEFAULT_VALUE << AW88266A_SWS_START_BIT) -/* CLIPS bit 7 (SYSST 0x01) */ - -#define AW88266A_CLIPS_START_BIT (7) -#define AW88266A_CLIPS_BITS_LEN (1) -#define AW88266A_CLIPS_MASK \ - (~(((1 << AW88266A_CLIPS_BITS_LEN) - 1) << AW88266A_CLIPS_START_BIT)) - -#define AW88266A_CLIPS_NOT_CLIPPING (0) -#define AW88266A_CLIPS_NOT_CLIPPING_VALUE \ - (AW88266A_CLIPS_NOT_CLIPPING << AW88266A_CLIPS_START_BIT) - -#define AW88266A_CLIPS_CLIPPING (1) -#define AW88266A_CLIPS_CLIPPING_VALUE \ - (AW88266A_CLIPS_CLIPPING << AW88266A_CLIPS_START_BIT) - -#define AW88266A_CLIPS_DEFAULT_VALUE (0) -#define AW88266A_CLIPS_DEFAULT \ - (AW88266A_CLIPS_DEFAULT_VALUE << AW88266A_CLIPS_START_BIT) - /* NOCLKS bit 5 (SYSST 0x01) */ #define AW88266A_NOCLKS_START_BIT (5) @@ -268,13 +259,13 @@ #define AW88266A_NOCLKS_MASK \ (~(((1 << AW88266A_NOCLKS_BITS_LEN) - 1) << AW88266A_NOCLKS_START_BIT)) -#define AW88266A_NOCLKS_NONE (0) -#define AW88266A_NOCLKS_NONE_VALUE \ - (AW88266A_NOCLKS_NONE << AW88266A_NOCLKS_START_BIT) +#define AW88266A_NOCLKS_CLOCK_OK (0) +#define AW88266A_NOCLKS_CLOCK_OK_VALUE \ + (AW88266A_NOCLKS_CLOCK_OK << AW88266A_NOCLKS_START_BIT) -#define AW88266A_NOCLKS_TRIG (1) -#define AW88266A_NOCLKS_TRIG_VALUE \ - (AW88266A_NOCLKS_NONE << AW88266A_NOCLKS_START_BIT) +#define AW88266A_NOCLKS_NO_CLOCK (1) +#define AW88266A_NOCLKS_NO_CLOCK_VALUE \ + (AW88266A_NOCLKS_NO_CLOCK << AW88266A_NOCLKS_START_BIT) #define AW88266A_NOCLKS_DEFAULT_VALUE (0) #define AW88266A_NOCLKS_DEFAULT \ @@ -287,12 +278,13 @@ #define AW88266A_CLKS_MASK \ (~(((1 << AW88266A_CLKS_BITS_LEN) - 1) << AW88266A_CLKS_START_BIT)) -#define AW88266A_CLKS_NONE (0) -#define AW88266A_CLKS_NONE_VALUE \ - (AW88266A_CLKS_NONE << AW88266A_CLKS_START_BIT) -#define AW88266A_CLKS_TRIG (1) -#define AW88266A_CLKS_TRIG_VALUE \ - (AW88266A_CLKS_TRIG << AW88266A_CLKS_START_BIT) +#define AW88266A_CLKS_NOT_STABLE (0) +#define AW88266A_CLKS_NOT_STABLE_VALUE \ + (AW88266A_CLKS_NOT_STABLE << AW88266A_CLKS_START_BIT) + +#define AW88266A_CLKS_STABLE (1) +#define AW88266A_CLKS_STABLE_VALUE \ + (AW88266A_CLKS_STABLE << AW88266A_CLKS_START_BIT) #define AW88266A_CLKS_DEFAULT_VALUE (0) #define AW88266A_CLKS_DEFAULT \ @@ -305,34 +297,37 @@ #define AW88266A_OCDS_MASK \ (~(((1 << AW88266A_OCDS_BITS_LEN) - 1) << AW88266A_OCDS_START_BIT)) -#define AW88266A_OCDS_NONE (0) -#define AW88266A_OCDS_NONE_VALUE \ - (AW88266A_OCDS_NONE << AW88266A_OCDS_START_BIT) -#define AW88266A_OCDS_TRIG (1) -#define AW88266A_OCDS_TRIG_VALUE \ - (AW88266A_OCDS_TRIG << AW88266A_OCDS_START_BIT) +#define AW88266A_OCDS_NORAML (0) +#define AW88266A_OCDS_NORAML_VALUE \ + (AW88266A_OCDS_NORAML << AW88266A_OCDS_START_BIT) + +#define AW88266A_OCDS_OC (1) +#define AW88266A_OCDS_OC_VALUE \ + (AW88266A_OCDS_OC << AW88266A_OCDS_START_BIT) #define AW88266A_OCDS_DEFAULT_VALUE (0) #define AW88266A_OCDS_DEFAULT \ (AW88266A_OCDS_DEFAULT_VALUE << AW88266A_OCDS_START_BIT) -/* CLIP_PRES bit 2 (SYSST 0x01) */ +/* UVL_DVDDS bit 2 (SYSST 0x01) */ -#define AW88266A_CLIP_PRES_START_BIT (2) -#define AW88266A_CLIP_PRES_BITS_LEN (1) -#define AW88266A_CLIP_PRES_MASK \ - (~(((1 << AW88266A_CLIP_PRES_BITS_LEN) - 1) << AW88266A_CLIP_PRES_START_BIT)) +#define AW88266A_UVL_DVDDS_START_BIT (2) +#define AW88266A_UVL_DVDDS_BITS_LEN (1) +#define AW88266A_UVL_DVDDS_MASK \ + (~(((1 << AW88266A_UVL_DVDDS_BITS_LEN) - 1) << \ + AW88266A_UVL_DVDDS_START_BIT)) -#define AW88266A_CLIP_PRES_NONE (0) -#define AW88266A_CLIP_PRES_NONE_VALUE \ - (AW88266A_CLIP_PRES_NONE << AW88266A_CLIP_PRES_START_BIT) -#define AW88266A_CLIP_PRES_TRIG (1) -#define AW88266A_CLIP_PRES_TRIG_VALUE \ - (AW88266A_CLIP_PRES_TRIG << AW88266A_CLIP_PRES_START_BIT) +#define AW88266A_UVL_DVDDS_NORMAL (0) +#define AW88266A_UVL_DVDDS_NORMAL_VALUE \ + (AW88266A_UVL_DVDDS_NORMAL << AW88266A_UVL_DVDDS_START_BIT) -#define AW88266A_CLIP_PRES_DEFAULT_VALUE (0) -#define AW88266A_CLIP_PRES_DEFAULT \ - (AW88266A_CLIP_PRES_DEFAULT_VALUE << AW88266A_CLIP_PRES_START_BIT) +#define AW88266A_UVL_DVDDS_UVLO (1) +#define AW88266A_UVL_DVDDS_UVLO_VALUE \ + (AW88266A_UVL_DVDDS_UVLO << AW88266A_UVL_DVDDS_START_BIT) + +#define AW88266A_UVL_DVDDS_DEFAULT_VALUE (0) +#define AW88266A_UVL_DVDDS_DEFAULT \ + (AW88266A_UVL_DVDDS_DEFAULT_VALUE << AW88266A_UVL_DVDDS_START_BIT) /* OTHS bit 1 (SYSST 0x01) */ @@ -341,12 +336,13 @@ #define AW88266A_OTHS_MASK \ (~(((1 << AW88266A_OTHS_BITS_LEN) - 1) << AW88266A_OTHS_START_BIT)) -#define AW88266A_OTHS_NONE (0) -#define AW88266A_OTHS_NONE_VALUE \ - (AW88266A_OTHS_NONE << AW88266A_OTHS_START_BIT) -#define AW88266A_OTHS_TRIG (1) -#define AW88266A_OTHS_TRIG_VALUE \ - (AW88266A_OTHS_TRIG << AW88266A_OTHS_START_BIT) +#define AW88266A_OTHS_NORMAL (0) +#define AW88266A_OTHS_NORMAL_VALUE \ + (AW88266A_OTHS_NORMAL << AW88266A_OTHS_START_BIT) + +#define AW88266A_OTHS_OT (1) +#define AW88266A_OTHS_OT_VALUE \ + (AW88266A_OTHS_OT << AW88266A_OTHS_START_BIT) #define AW88266A_OTHS_DEFAULT_VALUE (0) #define AW88266A_OTHS_DEFAULT \ @@ -371,30 +367,20 @@ (AW88266A_PLLS_DEFAULT_VALUE << AW88266A_PLLS_START_BIT) #define AW88266A_SYSST_CHECK_MASK \ - (~(AW88266A_UVLS_VDD_BELOW_2P8V_VALUE | \ - AW88266A_BSTOCS_TRIG_VALUE | \ + (~(AW88266A_UVLS_UVLO_VALUE | \ + AW88266A_BSTOCS_OVER_CURRENT_VALUE | \ AW88266A_BSTS_FINISHED_VALUE | \ AW88266A_SWS_SWITCHING_VALUE | \ - AW88266A_NOCLKS_TRIG_VALUE | \ - AW88266A_CLKS_TRIG_VALUE | \ - AW88266A_OCDS_TRIG_VALUE | \ - AW88266A_OTHS_TRIG_VALUE | \ + AW88266A_NOCLKS_NO_CLOCK_VALUE | \ + AW88266A_CLKS_STABLE_VALUE | \ + AW88266A_OCDS_OC_VALUE | \ + AW88266A_OTHS_OT_VALUE | \ AW88266A_PLLS_LOCKED_VALUE)) #define AW88266A_SYSST_CHECK \ - (AW88266A_CLKS_TRIG_VALUE | \ - AW88266A_PLLS_LOCKED_VALUE) - -#define AW88266A_IIS_CHECK_MASK \ - (~(AW88266A_UVLS_VDD_BELOW_2P8V_VALUE | \ - AW88266A_NOCLKS_TRIG_VALUE | \ - AW88266A_CLKS_TRIG_VALUE | \ - AW88266A_OCDS_TRIG_VALUE | \ - AW88266A_OTHS_TRIG_VALUE | \ - AW88266A_PLLS_LOCKED_VALUE)) - -#define AW88266A_IIS_CHECK \ - (AW88266A_CLKS_TRIG_VALUE | \ + (AW88266A_BSTS_FINISHED_VALUE | \ + AW88266A_SWS_SWITCHING_VALUE | \ + AW88266A_CLKS_STABLE_VALUE | \ AW88266A_PLLS_LOCKED_VALUE) /* default value of SYSST (0x01) @@ -478,17 +464,6 @@ #define AW88266A_SWI_DEFAULT \ (AW88266A_SWI_DEFAULT_VALUE << AW88266A_SWI_START_BIT) -/* CLIPI bit 7 (SYSINT 0x02) */ - -#define AW88266A_CLIPI_START_BIT (7) -#define AW88266A_CLIPI_BITS_LEN (1) -#define AW88266A_CLIPI_MASK \ - (~(((1 << AW88266A_CLIPI_BITS_LEN) - 1) << AW88266A_CLIPI_START_BIT)) - -#define AW88266A_CLIPI_DEFAULT_VALUE (0) -#define AW88266A_CLIPI_DEFAULT \ - (AW88266A_CLIPI_DEFAULT_VALUE << AW88266A_CLIPI_START_BIT) - /* NOCLKI bit 5 (SYSINT 0x02) */ #define AW88266A_NOCLKI_START_BIT (5) @@ -512,6 +487,7 @@ (AW88266A_CLKI_DEFAULT_VALUE << AW88266A_CLKI_START_BIT) /* OCDI bit 3 (SYSINT 0x02) */ + #define AW88266A_OCDI_START_BIT (3) #define AW88266A_OCDI_BITS_LEN (1) #define AW88266A_OCDI_MASK \ @@ -521,16 +497,17 @@ #define AW88266A_OCDI_DEFAULT \ (AW88266A_OCDI_DEFAULT_VALUE << AW88266A_OCDI_START_BIT) -/* CLIP_PREI bit 2 (SYSINT 0x02) */ +/* UVL_DVDDI bit 2 (SYSINT 0x02) */ -#define AW88266A_CLIP_PREI_START_BIT (2) -#define AW88266A_CLIP_PREI_BITS_LEN (1) -#define AW88266A_CLIP_PREI_MASK \ - (~(((1 << AW88266A_CLIP_PREI_BITS_LEN) - 1) << AW88266A_CLIP_PREI_START_BIT)) +#define AW88266A_UVL_DVDDI_START_BIT (2) +#define AW88266A_UVL_DVDDI_BITS_LEN (1) +#define AW88266A_UVL_DVDDI_MASK \ + (~((( 1<< AW88266A_UVL_DVDDI_BITS_LEN) - 1) << \ + AW88266A_UVL_DVDDI_START_BIT)) -#define AW88266A_CLIP_PREI_DEFAULT_VALUE (0) -#define AW88266A_CLIP_PREI_DEFAULT \ - (AW88266A_CLIP_PREI_DEFAULT_VALUE << AW88266A_CLIP_PREI_START_BIT) +#define AW88266A_UVL_DVDDI_DEFAULT_VALUE (0) +#define AW88266A_UVL_DVDDI_DEFAULT \ + (AW88266A_UVL_DVDDI_DEFAULT_VALUE << AW88266A_UVL_DVDDI_START_BIT) /* OTHI bit 1 (SYSINT 0x02) */ @@ -591,6 +568,17 @@ #define AW88266A_ADPM_DEFAULT \ (AW88266A_ADPM_DEFAULT_VALUE<