Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 51f975f0 authored by nadlabak's avatar nadlabak Committed by Michael Gernoth
Browse files

Add Motorola EMU audio dock jack sensing support

Don't route to dock output just because the device is docked.
Let the actual jack presence to control it.

Change-Id: I4066d08b1aa58ead39aad9410b9dd71624776187
parent aedba1fa
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.os.Looper;
import android.os.Message;
import android.os.PowerManager;
import android.os.PowerManager.WakeLock;
import android.os.SystemProperties;
import android.os.UEventObserver;
import android.util.Slog;
import android.media.AudioManager;
@@ -66,6 +67,7 @@ final class WiredAccessoryManager implements WiredAccessoryCallbacks {

    private static final String NAME_H2W = "h2w";
    private static final String NAME_USB_AUDIO = "usb_audio";
    private static final String NAME_EMU_AUDIO = "semu_audio";
    private static final String NAME_SAMSUNG_USB_AUDIO = "dock";
    private static final String NAME_HDMI_AUDIO = "hdmi_audio";
    private static final String NAME_HDMI = "hdmi";
@@ -386,6 +388,12 @@ final class WiredAccessoryManager implements WiredAccessoryCallbacks {
                Slog.w(TAG, "This kernel does not have usb audio support");
            }

            // Monitor Motorola EMU audio jack
            uei = new UEventInfo(NAME_EMU_AUDIO, BIT_USB_HEADSET_ANLG, 0, 0);
            if (uei.checkSwitchExists()) {
                retVal.add(uei);
            }

            // Monitor Samsung USB audio
            uei = new UEventInfo(NAME_SAMSUNG_USB_AUDIO, BIT_USB_HEADSET_DGTL,
                                 BIT_USB_HEADSET_ANLG, 0);
@@ -425,6 +433,13 @@ final class WiredAccessoryManager implements WiredAccessoryCallbacks {
            try {
                String devPath = event.get("DEVPATH");
                String name = event.get("SWITCH_NAME");
                if (SystemProperties.getBoolean("tcmd.whisper", false) &&
                        (name.equals("CAR") || name.equals("DESK"))) {
                    // Motorola dock - ignore this event and don't change
                    // the audio routing just because we're docked.
                    // Let only the dock emu audio jack sensing do that.
                    return;
                }
                int state = validateSwitchState(Integer.parseInt(event.get("SWITCH_STATE")));
                synchronized (mLock) {
                    updateStateLocked(devPath, name, state);