From fabf2cdfbbc88b2914fc5648d6aea4c02cde4bba Mon Sep 17 00:00:00 2001
From: Franklyn Tackitt <git@frank.af>
Date: Fri, 2 Aug 2024 11:00:18 -0700
Subject: [PATCH] Add steamdeck control fix from
 https://github.com/shiiion/dolphin/pull/159

---
 net.retrodeck.retrodeck.yml                   |  2 +
 .../primehack/Steam-Deck-Control-Fix.patch    | 37 +++++++++++++++++++
 2 files changed, 39 insertions(+)
 create mode 100644 rd-submodules/primehack/Steam-Deck-Control-Fix.patch

diff --git a/net.retrodeck.retrodeck.yml b/net.retrodeck.retrodeck.yml
index c3006599..3970c52b 100644
--- a/net.retrodeck.retrodeck.yml
+++ b/net.retrodeck.retrodeck.yml
@@ -924,6 +924,8 @@ modules:
        # has leftover files from a previous non-flatpak install
       - type: patch
         path: rd-submodules/primehack/detectflatpak.patch
+      - type: patch
+        path: Steam-Deck-Control-Fix.patch
        # version strings must match exactly for online multiplayer
       - type: patch
         path: rd-submodules/primehack/nodirtyversion.patch
diff --git a/rd-submodules/primehack/Steam-Deck-Control-Fix.patch b/rd-submodules/primehack/Steam-Deck-Control-Fix.patch
new file mode 100644
index 00000000..daf6271f
--- /dev/null
+++ b/rd-submodules/primehack/Steam-Deck-Control-Fix.patch
@@ -0,0 +1,37 @@
+From ed3bf410c016ac9f84e7362101f1d831f16dc430 Mon Sep 17 00:00:00 2001
+From: Vicki Pfau <vi@endrift.com>
+Date: Tue, 9 Jan 2024 20:49:38 -0800
+Subject: [PATCH] Steam Deck: Pad out feature report to 64 bytes
+
+Also update the names of the setting post-Steam Deck commits to SDL
+
+Fixes https://bugs.dolphin-emu.org/issues/13412
+---
+ .../ControllerInterface/SteamDeck/SteamDeck.cpp            | 7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
+
+diff --git a/Source/Core/InputCommon/ControllerInterface/SteamDeck/SteamDeck.cpp b/Source/Core/InputCommon/ControllerInterface/SteamDeck/SteamDeck.cpp
+index 0a0dc88387..87504f77b8 100644
+--- a/Source/Core/InputCommon/ControllerInterface/SteamDeck/SteamDeck.cpp
++++ b/Source/Core/InputCommon/ControllerInterface/SteamDeck/SteamDeck.cpp
+@@ -288,14 +288,13 @@ void Device::UpdateInput()
+   if (++m_gyro_reenable == 250)
+   {
+     m_gyro_reenable = 0;
+-    // Using names from Valve's contribution to SDL for the Steam Controller
+-    // (and assuming this has not changed for the Deck), this packet decodes as:
++    // Using names from Valve's contribution to SDL this packet decodes as:
+     // 0x00 = report ID
+     // 0x87 = ID_SET_SETTINGS_VALUES
+     // 0x03 = payload length
+-    // 0x30 = SETTING_GYRO_MODE
++    // 0x30 = SETTING_IMU_MODE
+     // 0x18 0x00 = SETTING_GYRO_MODE_SEND_RAW_ACCEL | SETTING_GYRO_MODE_SEND_RAW_GYRO
+-    const unsigned char pkt[] = {0x00, 0x87, 0x03, 0x30, 0x18, 0x00};
++    const unsigned char pkt[65] = {0x00, 0x87, 0x03, 0x30, 0x18, 0x00};
+     hid_send_feature_report(m_device, pkt, sizeof(pkt));
+   }
+ 
+-- 
+2.45.2
+