Add power supply support for the PS3 remote controller

Signed-off-by: Frederic Jacob <[email protected]>

---
 drivers/hid/hid-sony.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/drivers/hid/hid-sony.c b/drivers/hid/hid-sony.c
index 9b8db0e..b78e149 100644
--- a/drivers/hid/hid-sony.c
+++ b/drivers/hid/hid-sony.c
@@ -61,7 +61,8 @@
                                DUALSHOCK4_CONTROLLER | MOTION_CONTROLLER |\
                                NAVIGATION_CONTROLLER)
 #define SONY_BATTERY_SUPPORT (SIXAXIS_CONTROLLER | DUALSHOCK4_CONTROLLER |\
-                               MOTION_CONTROLLER_BT | NAVIGATION_CONTROLLER)
+                               MOTION_CONTROLLER_BT | NAVIGATION_CONTROLLER |\
+                               PS3REMOTE)
 #define SONY_FF_SUPPORT (SIXAXIS_CONTROLLER | DUALSHOCK4_CONTROLLER |\
                                MOTION_CONTROLLER)

@@ -1177,7 +1178,12 @@ static void sixaxis_parse_report(struct sony_sc *sc, 
__u8 *rd, int size)
         * It does not report the actual level while charging so it
         * is set to 100% while charging is in progress.
         */
-       offset = (sc->quirks & MOTION_CONTROLLER) ? 12 : 30;
+       if (sc->quirks & MOTION_CONTROLLER)
+               offset = 12;
+       else if (sc->quirks & PS3REMOTE)
+               offset = 11;
+       else
+               offset = 30;

        if (rd[offset] >= 0xee) {
                battery_capacity = 100;
@@ -1301,6 +1307,9 @@ static int sony_raw_event(struct hid_device *hdev, struct 
hid_report *report,
        } else if ((sc->quirks & NAVIGATION_CONTROLLER) && rd[0] == 0x01 &&
                        size == 49) {
                sixaxis_parse_report(sc, rd, size);
+       } else if ((sc->quirks & PS3REMOTE) && rd[0] == 0x01 &&
+                       size == 12) {
+               sixaxis_parse_report(sc, rd, size);
        } else if (((sc->quirks & DUALSHOCK4_CONTROLLER_USB) && rd[0] == 0x01 &&
                        size == 64) || ((sc->quirks & DUALSHOCK4_CONTROLLER_BT)
                        && rd[0] == 0x11 && size == 78)) {
--
2.5.0

Reply via email to