Browse Source

greybus: audio: Avoid reporting spurious button events

Now jack-button are registered to snd framework based on capabilities
populated by codec module's topology data. Thus, valid ids for button
events can also vary for different modules. This patch modifies existing
button reporting mechanism to avoid reporting spurious button events for
invalid button ids.

Signed-off-by: Vaibhav Agarwal <vaibhav.agarwal@linaro.org>
Reviewed-by: Mark Greer <mgreer@animalcreek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Vaibhav Agarwal 9 years ago
parent
commit
6a57ddc97a
1 changed files with 8 additions and 5 deletions
  1. 8 5
      drivers/staging/greybus/audio_module.c

+ 8 - 5
drivers/staging/greybus/audio_module.c

@@ -92,24 +92,27 @@ static int gbaudio_request_button(struct gbaudio_module_info *module,
 	}
 	}
 
 
 	report = module->button_status & module->button_mask;
 	report = module->button_status & module->button_mask;
+	soc_button_id = 0;
 
 
 	switch (req->button_id) {
 	switch (req->button_id) {
 	case 1:
 	case 1:
-		soc_button_id = SND_JACK_BTN_0;
+		soc_button_id = SND_JACK_BTN_0 & module->button_mask;
 		break;
 		break;
 
 
 	case 2:
 	case 2:
-		soc_button_id = SND_JACK_BTN_1;
+		soc_button_id = SND_JACK_BTN_1 & module->button_mask;
 		break;
 		break;
 
 
 	case 3:
 	case 3:
-		soc_button_id = SND_JACK_BTN_2;
+		soc_button_id = SND_JACK_BTN_2 & module->button_mask;
 		break;
 		break;
 
 
 	case 4:
 	case 4:
-		soc_button_id = SND_JACK_BTN_3;
+		soc_button_id = SND_JACK_BTN_3 & module->button_mask;
 		break;
 		break;
-	default:
+	}
+
+	if (!soc_button_id) {
 		dev_err_ratelimited(module->dev,
 		dev_err_ratelimited(module->dev,
 				    "Invalid button request received\n");
 				    "Invalid button request received\n");
 		return -EINVAL;
 		return -EINVAL;