@@ -1162,20 +1162,25 @@ static int macaudio_late_probe(struct snd_soc_card *card)
11621162 return 0 ;
11631163}
11641164
1165- #define CHECK (call , pattern , value ) \
1166- { \
1167- int ret = call(card, pattern, value); \
1168- if (ret < 1 && (please_blow_up_my_speakers < 2)) { \
1169- dev_err(card->dev, "%s on '%s': %d\n", #call, pattern, ret); \
1170- return ret; \
1171- } \
1172- dev_dbg(card->dev, "%s on '%s': %d hits\n", #call, pattern, ret); \
1165+ #define CHECK (call , pattern , value , min ) \
1166+ { \
1167+ int ret = call(card, pattern, value); \
1168+ int err = (ret >= 0 && ret < min) ? -ERANGE : ret; \
1169+ if (err < 0) { \
1170+ dev_err(card->dev, "%s on '%s': %d\n", #call, pattern, \
1171+ ret); \
1172+ if (please_blow_up_my_speakers < 2) \
1173+ return err; \
1174+ } else { \
1175+ dev_dbg(card->dev, "%s on '%s': %d hits\n", #call, \
1176+ pattern, ret); \
1177+ } \
11731178 }
11741179
11751180#define CHECK_CONCAT (call , suffix , value ) \
11761181 { \
11771182 snprintf(buf, sizeof(buf), "%s%s", prefix, suffix); \
1178- CHECK(call, buf, value); \
1183+ CHECK(call, buf, value, 1 ); \
11791184 }
11801185
11811186static int macaudio_set_speaker (struct snd_soc_card * card , const char * prefix , bool tweeter )
@@ -1248,16 +1253,16 @@ static int macaudio_fixup_controls(struct snd_soc_card *card)
12481253 return please_blow_up_my_speakers >= 2 ? 0 : - EINVAL ;
12491254 case SPKR_1W :
12501255 case SPKR_2W :
1251- CHECK (macaudio_set_speaker , "* " , false);
1256+ CHECK (macaudio_set_speaker , "* " , false, 0 );
12521257 break ;
12531258 case SPKR_1W1T :
1254- CHECK (macaudio_set_speaker , "* Tweeter " , true);
1255- CHECK (macaudio_set_speaker , "* Woofer " , false);
1259+ CHECK (macaudio_set_speaker , "* Tweeter " , true, 0 );
1260+ CHECK (macaudio_set_speaker , "* Woofer " , false, 0 );
12561261 break ;
12571262 case SPKR_2W1T :
1258- CHECK (macaudio_set_speaker , "* Tweeter " , true);
1259- CHECK (macaudio_set_speaker , "* Woofer 1 " , false);
1260- CHECK (macaudio_set_speaker , "* Woofer 2 " , false);
1263+ CHECK (macaudio_set_speaker , "* Tweeter " , true, 0 );
1264+ CHECK (macaudio_set_speaker , "* Woofer 1 " , false, 0 );
1265+ CHECK (macaudio_set_speaker , "* Woofer 2 " , false, 0 );
12611266 break ;
12621267 }
12631268
0 commit comments