sst: report correct jack event
authorLu Guanqun <guanqun.lu@intel.com>
Fri, 8 Jul 2011 08:59:10 +0000 (09:59 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 8 Jul 2011 21:02:24 +0000 (14:02 -0700)
The status of jack event is compared bitwise:

[in sound/core/jack.c:snd_jack_report()]
for (i = 0; i < ARRAY_SIZE(jack_switch_types); i++) {
int testbit = 1 << i;
if (jack->type & testbit)
input_report_switch(jack->input_dev,
    jack_switch_types[i],
    status & testbit);
}

So in order to report the correct events, 3 should be passed instead of 1.

Signed-off-by: Lu Guanqun <guanqun.lu@intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/intel_sst/intelmid_v2_control.c

index 000378a..46ab55e 100644 (file)
@@ -1090,7 +1090,7 @@ static void nc_pmic_irq_cb(void *cb_data, u8 intsts)
        if (intsts & 0x1) {
                pr_debug("SST DBG:MAD headset detected\n");
                /* send headset detect/undetect */
-               present = (value == 0x1) ? 1 : 0;
+               present = (value == 0x1) ? 3 : 0;
                jack_event_flag = 1;
                mjack->jack.type = SND_JACK_HEADSET;
                hp_automute(SND_JACK_HEADSET, present);