Update the signature of init function to include whether the device is am: 3e7b35ee18 am: 43e0dd5936 am: 234cb4857b am: 1d90247bb1 am: e5ef2a3f04 am: 984f2f2d43 am: 34b5501c04 am: db5579e341

Original change: https://googleplex-android-review.googlesource.com/c/platform/hardware/libhardware/+/12308134

Change-Id: I0aa34ac2347044a6f9bead9d679b341a7424446d
diff --git a/Android.bp b/Android.bp
index 0b340a1..3ac123e 100644
--- a/Android.bp
+++ b/Android.bp
@@ -29,6 +29,7 @@
         },
     },
     min_sdk_version: "29",
+    host_supported: true,
 
 }
 
diff --git a/METADATA b/METADATA
new file mode 100644
index 0000000..d97975c
--- /dev/null
+++ b/METADATA
@@ -0,0 +1,3 @@
+third_party {
+  license_type: NOTICE
+}
diff --git a/include/hardware/audio_alsaops.h b/include/hardware/audio_alsaops.h
index 6a17a35..476c311 100644
--- a/include/hardware/audio_alsaops.h
+++ b/include/hardware/audio_alsaops.h
@@ -60,7 +60,7 @@
     case AUDIO_FORMAT_PCM_FLOAT:  /* there is no equivalent for float */
     default:
         LOG_ALWAYS_FATAL("pcm_format_from_audio_format: invalid audio format %#x", format);
-        return 0;
+        return PCM_FORMAT_INVALID;  /* doesn't get here, assert called above */
     }
 }
 
@@ -94,7 +94,7 @@
 #endif
     default:
         LOG_ALWAYS_FATAL("audio_format_from_pcm_format: invalid pcm format %#x", format);
-        return 0;
+        return AUDIO_FORMAT_INVALID;  /* doesn't get here, assert called above */
     }
 }
 
diff --git a/modules/input/evdev/Android.bp b/modules/input/evdev/Android.bp
index 26e711f..bcd563f 100644
--- a/modules/input/evdev/Android.bp
+++ b/modules/input/evdev/Android.bp
@@ -27,6 +27,7 @@
         "SwitchInputMapper.cpp",
     ],
 
+    header_libs: ["jni_headers"],
     shared_libs: [
         "libhardware_legacy",
         "liblog",
diff --git a/modules/input/evdev/SwitchInputMapper.cpp b/modules/input/evdev/SwitchInputMapper.cpp
index 1b2e749..028fc72 100644
--- a/modules/input/evdev/SwitchInputMapper.cpp
+++ b/modules/input/evdev/SwitchInputMapper.cpp
@@ -49,9 +49,9 @@
     {SW_LINEIN_INSERT, INPUT_USAGE_SWITCH_UNKNOWN},
     {SW_MUTE_DEVICE, INPUT_USAGE_SWITCH_UNKNOWN},
     {SW_PEN_INSERTED, INPUT_USAGE_SWITCH_UNKNOWN},
-    {SW_HPHL_OVERCURRENT, INPUT_USAGE_SWITCH_UNKNOWN},
-    {SW_HPHR_OVERCURRENT, INPUT_USAGE_SWITCH_UNKNOWN},
-    {SW_UNSUPPORT_INSERT, INPUT_USAGE_SWITCH_UNKNOWN},
+    {SW_MACHINE_COVER, INPUT_USAGE_SWITCH_UNKNOWN},
+    {0x11 /* unused */, INPUT_USAGE_SWITCH_UNKNOWN},
+    {0x12 /* unused */, INPUT_USAGE_SWITCH_UNKNOWN},
     {0x13 /* unused */, INPUT_USAGE_SWITCH_UNKNOWN},
     {0x14 /* unused */, INPUT_USAGE_SWITCH_UNKNOWN},
     {0x15 /* unused */, INPUT_USAGE_SWITCH_UNKNOWN},
@@ -59,9 +59,21 @@
     {0x17 /* unused */, INPUT_USAGE_SWITCH_UNKNOWN},
     {0x18 /* unused */, INPUT_USAGE_SWITCH_UNKNOWN},
     {0x19 /* unused */, INPUT_USAGE_SWITCH_UNKNOWN},
-    {SW_MAX, INPUT_USAGE_SWITCH_UNKNOWN},
+    {0x1a /* unused */, INPUT_USAGE_SWITCH_UNKNOWN},
+    {0x1b /* unused */, INPUT_USAGE_SWITCH_UNKNOWN},
+    {0x1c /* unused */, INPUT_USAGE_SWITCH_UNKNOWN},
+    {0x1d /* unused */, INPUT_USAGE_SWITCH_UNKNOWN},
+    {0x1e /* unused */, INPUT_USAGE_SWITCH_UNKNOWN},
+    {0x1f /* unused */, INPUT_USAGE_SWITCH_UNKNOWN},
+    {0x20 /* unused */, INPUT_USAGE_SWITCH_UNKNOWN},
 };
 
+static_assert(SW_MAX == SW_MACHINE_COVER, "SW_MAX is not SW_MACHINE_COVER");
+
+// This is the max value that any kernel has ever used. The v5.4 kernels
+// increased SW_MAX to 0x20, while v5.8 decreased the value to 0x10.
+static constexpr int32_t kMaxNumInputCodes = 0x21;
+
 SwitchInputMapper::SwitchInputMapper()
     : InputMapper() {
     // If this gets larger than 64, then the mSwitchValues and mUpdatedSwitchMask
@@ -71,9 +83,9 @@
 
 bool SwitchInputMapper::configureInputReport(InputDeviceNode* devNode,
         InputReportDefinition* report) {
-    InputUsage usages[SW_CNT];
+    InputUsage usages[kMaxNumInputCodes];
     int numUsages = 0;
-    for (int32_t i = 0; i < SW_CNT; ++i) {
+    for (int32_t i = 0; i < kMaxNumInputCodes; ++i) {
         if (devNode->hasSwitch(codeMap[i].scancode)) {
             usages[numUsages++] = codeMap[i].usage;
         }
@@ -105,7 +117,7 @@
 
 void SwitchInputMapper::processSwitch(int32_t switchCode, int32_t switchValue) {
     ALOGV("processing switch event. code=%" PRId32 ", value=%" PRId32, switchCode, switchValue);
-    if (switchCode >= 0 && switchCode < SW_CNT) {
+    if (switchCode >= 0 && switchCode < kMaxNumInputCodes) {
         if (switchValue) {
             mSwitchValues.markBit(switchCode);
         } else {