@@ -1043,6 +1043,7 @@ static int nau8824_hw_params(struct snd_pcm_substream *substream,
1043
1043
struct snd_soc_component * component = dai -> component ;
1044
1044
struct nau8824 * nau8824 = snd_soc_component_get_drvdata (component );
1045
1045
unsigned int val_len = 0 , osr , ctrl_val , bclk_fs , bclk_div ;
1046
+ int err = - EINVAL ;
1046
1047
1047
1048
nau8824_sema_acquire (nau8824 , HZ );
1048
1049
@@ -1059,7 +1060,7 @@ static int nau8824_hw_params(struct snd_pcm_substream *substream,
1059
1060
osr &= NAU8824_DAC_OVERSAMPLE_MASK ;
1060
1061
if (nau8824_clock_check (nau8824 , substream -> stream ,
1061
1062
nau8824 -> fs , osr ))
1062
- return - EINVAL ;
1063
+ goto error ;
1063
1064
regmap_update_bits (nau8824 -> regmap , NAU8824_REG_CLK_DIVIDER ,
1064
1065
NAU8824_CLK_DAC_SRC_MASK ,
1065
1066
osr_dac_sel [osr ].clk_src << NAU8824_CLK_DAC_SRC_SFT );
@@ -1069,7 +1070,7 @@ static int nau8824_hw_params(struct snd_pcm_substream *substream,
1069
1070
osr &= NAU8824_ADC_SYNC_DOWN_MASK ;
1070
1071
if (nau8824_clock_check (nau8824 , substream -> stream ,
1071
1072
nau8824 -> fs , osr ))
1072
- return - EINVAL ;
1073
+ goto error ;
1073
1074
regmap_update_bits (nau8824 -> regmap , NAU8824_REG_CLK_DIVIDER ,
1074
1075
NAU8824_CLK_ADC_SRC_MASK ,
1075
1076
osr_adc_sel [osr ].clk_src << NAU8824_CLK_ADC_SRC_SFT );
@@ -1090,7 +1091,7 @@ static int nau8824_hw_params(struct snd_pcm_substream *substream,
1090
1091
else if (bclk_fs <= 256 )
1091
1092
bclk_div = 0 ;
1092
1093
else
1093
- return - EINVAL ;
1094
+ goto error ;
1094
1095
regmap_update_bits (nau8824 -> regmap ,
1095
1096
NAU8824_REG_PORT0_I2S_PCM_CTRL_2 ,
1096
1097
NAU8824_I2S_LRC_DIV_MASK | NAU8824_I2S_BLK_DIV_MASK ,
@@ -1111,15 +1112,17 @@ static int nau8824_hw_params(struct snd_pcm_substream *substream,
1111
1112
val_len |= NAU8824_I2S_DL_32 ;
1112
1113
break ;
1113
1114
default :
1114
- return - EINVAL ;
1115
+ goto error ;
1115
1116
}
1116
1117
1117
1118
regmap_update_bits (nau8824 -> regmap , NAU8824_REG_PORT0_I2S_PCM_CTRL_1 ,
1118
1119
NAU8824_I2S_DL_MASK , val_len );
1120
+ err = 0 ;
1119
1121
1122
+ error :
1120
1123
nau8824_sema_release (nau8824 );
1121
1124
1122
- return 0 ;
1125
+ return err ;
1123
1126
}
1124
1127
1125
1128
static int nau8824_set_fmt (struct snd_soc_dai * dai , unsigned int fmt )
@@ -1128,8 +1131,6 @@ static int nau8824_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
1128
1131
struct nau8824 * nau8824 = snd_soc_component_get_drvdata (component );
1129
1132
unsigned int ctrl1_val = 0 , ctrl2_val = 0 ;
1130
1133
1131
- nau8824_sema_acquire (nau8824 , HZ );
1132
-
1133
1134
switch (fmt & SND_SOC_DAIFMT_MASTER_MASK ) {
1134
1135
case SND_SOC_DAIFMT_CBM_CFM :
1135
1136
ctrl2_val |= NAU8824_I2S_MS_MASTER ;
@@ -1171,6 +1172,8 @@ static int nau8824_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
1171
1172
return - EINVAL ;
1172
1173
}
1173
1174
1175
+ nau8824_sema_acquire (nau8824 , HZ );
1176
+
1174
1177
regmap_update_bits (nau8824 -> regmap , NAU8824_REG_PORT0_I2S_PCM_CTRL_1 ,
1175
1178
NAU8824_I2S_DF_MASK | NAU8824_I2S_BP_MASK |
1176
1179
NAU8824_I2S_PCMB_EN , ctrl1_val );
0 commit comments