From e5c6e8f44b12b84c0f4cf057ebaf2554df503818 Mon Sep 17 00:00:00 2001 From: Jan200101 Date: Sat, 9 Mar 2024 20:06:56 +0100 Subject: kernel 6.7.9 AMD SFH sensitivity patch --- SOURCES/0001-bump-the-sensitivity-of-AMD-SFH.patch | 450 +++++++++++++++++++++ SPECS/kernel.spec | 9 +- 2 files changed, 458 insertions(+), 1 deletion(-) create mode 100644 SOURCES/0001-bump-the-sensitivity-of-AMD-SFH.patch diff --git a/SOURCES/0001-bump-the-sensitivity-of-AMD-SFH.patch b/SOURCES/0001-bump-the-sensitivity-of-AMD-SFH.patch new file mode 100644 index 0000000..3a18987 --- /dev/null +++ b/SOURCES/0001-bump-the-sensitivity-of-AMD-SFH.patch @@ -0,0 +1,450 @@ +From 34423c936dd27c7f836823d3dfc0041607946ba0 Mon Sep 17 00:00:00 2001 +From: Jan200101 +Date: Sat, 9 Mar 2024 20:00:58 +0100 +Subject: [PATCH] bump the sensitivity of AMD SFH + +Bumps the sensitivity of AMD sfh gyro and accelerometers by removing the division +operation and rebasing the units in the hid descriptor. +This helps with the gyro deadzone of the Legion Go. Should not affect existing +devices. + +Since most of the magic happens in firmware thej SFH 1.0 HID report descriptor is left untouched. + +Co-authored-by: antheas +Signed-off-by: Jan200101 +--- + drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_desc.c | 29 +- + .../sfh1_1/amd_sfh_hid_report_desc1_1.h | 344 ++++++++++++++++++ + 2 files changed, 359 insertions(+), 14 deletions(-) + create mode 100644 drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_hid_report_desc1_1.h + +diff --git a/drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_desc.c b/drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_desc.c +index 8a037de08e92..9426320a4a9c 100644 +--- a/drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_desc.c ++++ b/drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_desc.c +@@ -13,6 +13,7 @@ + #include "amd_sfh_interface.h" + #include "../hid_descriptor/amd_sfh_hid_desc.h" + #include "../hid_descriptor/amd_sfh_hid_report_desc.h" ++#include "amd_sfh_hid_report_desc1_1.h" + + #define SENSOR_PROP_REPORTING_STATE_ALL_EVENTS_ENUM 0x41 + #define SENSOR_PROP_POWER_STATE_D0_FULL_POWER_ENUM 0x51 +@@ -30,14 +31,14 @@ static int get_report_desc(int sensor_idx, u8 *rep_desc) + { + switch (sensor_idx) { + case ACCEL_IDX: /* accelerometer */ +- memset(rep_desc, 0, sizeof(accel3_report_descriptor)); +- memcpy(rep_desc, accel3_report_descriptor, +- sizeof(accel3_report_descriptor)); ++ memset(rep_desc, 0, sizeof(accel3_report_descriptor1_1)); ++ memcpy(rep_desc, accel3_report_descriptor1_1, ++ sizeof(accel3_report_descriptor1_1)); + break; + case GYRO_IDX: /* gyroscope */ +- memset(rep_desc, 0, sizeof(gyro3_report_descriptor)); +- memcpy(rep_desc, gyro3_report_descriptor, +- sizeof(gyro3_report_descriptor)); ++ memset(rep_desc, 0, sizeof(gyro3_report_descriptor1_1)); ++ memcpy(rep_desc, gyro3_report_descriptor1_1, ++ sizeof(gyro3_report_descriptor1_1)); + break; + case MAG_IDX: /* magnetometer */ + memset(rep_desc, 0, sizeof(comp3_report_descriptor)); +@@ -201,9 +202,9 @@ static u8 get_input_rep(u8 current_index, int sensor_idx, int report_id, + OFFSET_SENSOR_DATA_DEFAULT; + memcpy_fromio(&accel_data, sensoraddr, sizeof(struct sfh_accel_data)); + get_common_inputs(&acc_input.common_property, report_id); +- acc_input.in_accel_x_value = float_to_int(accel_data.acceldata.x) / 100; +- acc_input.in_accel_y_value = float_to_int(accel_data.acceldata.y) / 100; +- acc_input.in_accel_z_value = float_to_int(accel_data.acceldata.z) / 100; ++ acc_input.in_accel_x_value = float_to_int(accel_data.acceldata.x); ++ acc_input.in_accel_y_value = float_to_int(accel_data.acceldata.y); ++ acc_input.in_accel_z_value = float_to_int(accel_data.acceldata.z); + memcpy(input_report, &acc_input, sizeof(acc_input)); + report_size = sizeof(acc_input); + break; +@@ -212,9 +213,9 @@ static u8 get_input_rep(u8 current_index, int sensor_idx, int report_id, + OFFSET_SENSOR_DATA_DEFAULT; + memcpy_fromio(&gyro_data, sensoraddr, sizeof(struct sfh_gyro_data)); + get_common_inputs(&gyro_input.common_property, report_id); +- gyro_input.in_angel_x_value = float_to_int(gyro_data.gyrodata.x) / 1000; +- gyro_input.in_angel_y_value = float_to_int(gyro_data.gyrodata.y) / 1000; +- gyro_input.in_angel_z_value = float_to_int(gyro_data.gyrodata.z) / 1000; ++ gyro_input.in_angel_x_value = float_to_int(gyro_data.gyrodata.x); ++ gyro_input.in_angel_y_value = float_to_int(gyro_data.gyrodata.y); ++ gyro_input.in_angel_z_value = float_to_int(gyro_data.gyrodata.z); + memcpy(input_report, &gyro_input, sizeof(gyro_input)); + report_size = sizeof(gyro_input); + break; +@@ -264,7 +265,7 @@ static u32 get_desc_size(int sensor_idx, int descriptor_name) + case ACCEL_IDX: + switch (descriptor_name) { + case descr_size: +- return sizeof(accel3_report_descriptor); ++ return sizeof(accel3_report_descriptor1_1); + case input_size: + return sizeof(struct accel3_input_report); + case feature_size: +@@ -274,7 +275,7 @@ static u32 get_desc_size(int sensor_idx, int descriptor_name) + case GYRO_IDX: + switch (descriptor_name) { + case descr_size: +- return sizeof(gyro3_report_descriptor); ++ return sizeof(gyro3_report_descriptor1_1); + case input_size: + return sizeof(struct gyro_input_report); + case feature_size: +diff --git a/drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_hid_report_desc1_1.h b/drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_hid_report_desc1_1.h +new file mode 100644 +index 000000000000..f54ae5be3d58 +--- /dev/null ++++ b/drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_hid_report_desc1_1.h +@@ -0,0 +1,344 @@ ++/* SPDX-License-Identifier: GPL-2.0-or-later */ ++/* ++ * HID descriptor structures 1_1 copy ++ * Modified for better accuracy ++ * Copyright 2020-2021 Advanced Micro Devices, Inc. ++ * Authors: Nehal Bakulchandra Shah ++ * Sandeep Singh ++ * Basavaraj Natikar ++ */ ++ ++#ifndef AMD_SFH_HID_REPORT_DESCRIPTOR1_1_H ++#define AMD_SFH_HID_REPORT_DESCRIPTOR1_1_H ++ ++// Accelerometer 3D Sensor ++static const u8 accel3_report_descriptor1_1[] = { ++0x05, 0x20, /* Usage page */ ++0x09, 0x73, /* Motion type Accel 3D */ ++0xA1, 0x00, /* HID Collection (Physical) */ ++ ++//feature reports(xmit/receive) ++0x85, 1, /* HID Report ID */ ++0x05, 0x20, /* HID usage page sensor */ ++0x0A, 0x09, 0x03, /* Sensor property and sensor connection type */ ++0x15, 0, /* HID logical MIN_8(0) */ ++0x25, 2, /* HID logical MAX_8(2) */ ++0x75, 8, /* HID report size(8) */ ++0x95, 1, /* HID report count(1) */ ++0xA1, 0x02, /* HID collection (logical) */ ++0x0A, 0x30, 0x08, /* Sensor property connection type intergated sel*/ ++0x0A, 0x31, 0x08, /* Sensor property connection type attached sel */ ++0x0A, 0x32, 0x08, /* Sensor property connection type external sel */ ++0xB1, 0x00, /* HID feature (Data_Arr_Abs) */ ++0xC0, /* HID end collection */ ++0x0A, 0x16, 0x03, /* HID usage sensor property reporting state */ ++0x15, 0, /* HID logical Min_8(0) */ ++0x25, 5, /* HID logical Max_8(5) */ ++0x75, 8, /* HID report size(8) */ ++0x95, 1, /* HID report count(1) */ ++0xA1, 0x02, /* HID collection(logical) */ ++0x0A, 0x40, 0x08, /* Sensor property report state no events sel */ ++0x0A, 0x41, 0x08, /* Sensor property report state all events sel */ ++0x0A, 0x42, 0x08, /* Sensor property report state threshold events sel */ ++0x0A, 0x43, 0x08, /* Sensor property report state no events wake sel */ ++0x0A, 0x44, 0x08, /* Sensor property report state all events wake sel */ ++0x0A, 0x45, 0x08, /* Sensor property report state threshold events wake sel */ ++0xB1, 0x00, /* HID feature (Data_Arr_Abs) */ ++0xC0, /* HID end collection */ ++0x0A, 0x19, 0x03, /* HID usage sensor property power state */ ++0x15, 0, /* HID logical Min_8(0) */ ++0x25, 5, /* HID logical Max_8(5) */ ++0x75, 8, /* HID report size(8) */ ++0x95, 1, /* HID report count(1) */ ++0xA1, 0x02, /* HID collection(logical) */ ++0x0A, 0x50, 0x08, /* Sensor property power state undefined sel */ ++0x0A, 0x51, 0x08, /* Sensor property power state D0 full power sel */ ++0x0A, 0x52, 0x08, /* Sensor property power state D1 low power sel */ ++0x0A, 0x53, 0x08, /* Sensor property power state D2 standby with wake sel */ ++0x0A, 0x54, 0x08, /* Sensor property power state D3 sleep with wake sel */ ++0x0A, 0x55, 0x08, /* Sensor property power state D4 power off sel */ ++0xB1, 0x00, /* HID feature (Data_Arr_Abs) */ ++0xC0, /* HID end collection */ ++0x0A, 0x01, 0x02, /* HID usage sensor state */ ++0x15, 0, /* HID logical Min_8(0) */ ++0x25, 6, /* HID logical Max_8(6) */ ++0x75, 8, /* HID report size(8) */ ++0x95, 1, /* HID report count(1) */ ++0xA1, 0x02, /* HID collection(logical) */ ++0x0A, 0x00, 0x08, /* HID usage sensor state unknown sel */ ++0x0A, 0x01, 0x08, /* HID usage sensor state ready sel */ ++0x0A, 0x02, 0x08, /* HID usage sensor state not available sel */ ++0x0A, 0x03, 0x08, /* HID usage sensor state no data sel */ ++0x0A, 0x04, 0x08, /* HID usage sensor state initializing sel */ ++0x0A, 0x05, 0x08, /* HID usage sensor state access denied sel */ ++0x0A, 0x06, 0x08, /* HID usage sensor state error sel */ ++0xB1, 0x00, /* HID feature (Data_Arr_Abs) */ ++0xC0, /* HID end collection */ ++0x0A, 0x0E, 0x03, /* HID usage sensor property report interval */ ++0x15, 0, /* HID logical Min_8(0) */ ++0x27, 0xFF, 0xFF, 0xFF, 0xFF, /* HID logical Max_32 */ ++ ++0x75, 32, /* HID report size(32) */ ++0x95, 1, /* HID report count(1) */ ++0x55, 0, /* HID unit exponent(0) */ ++0xB1, 0x02, /* HID feature (Data_Arr_Abs) */ ++0x0A, 0x52, 0x14, /* Sensor data motion accel and mod change sensitivity ABS) */ ++ ++0x15, 0, /* HID logical Min_8(0) */ ++0x26, 0xFF, 0xFF, /* HID logical Max_16(0xFF,0xFF) */ ++ ++0x75, 16, /* HID report size(16) */ ++0x95, 1, /* HID report count(1) */ ++0x55, 0x0E, /* HID unit exponent(0x0E) */ ++0xB1, 0x02, /* HID feature (Data_Arr_Abs) */ ++0x0A, 0x52, 0x24, /* HID usage sensor data (motion accel and mod max) */ ++ ++0x16, 0x01, 0x80, /* HID logical Min_16(0x01,0x80) */ ++ ++0x26, 0xFF, 0x7F, /* HID logical Max_16(0xFF,0x7F) */ ++ ++0x75, 16, /* HID report size(16) */ ++0x95, 1, /* HID report count(1) */ ++0x55, 0x0E, /* HID unit exponent(0x0E) */ ++0xB1, 0x02, /* HID feature (Data_Arr_Abs) */ ++0x0A, 0x52, 0x34, /* HID usage sensor data (motion accel and mod min) */ ++ ++0x16, 0x01, 0x80, /* HID logical Min_16(0x01,0x80) */ ++ ++0x26, 0xFF, 0x7F, /* HID logical Max_16(0xFF,0x7F) */ ++ ++0x75, 16, /* HID report size(16) */ ++0x95, 1, /* HID report count(1) */ ++0x55, 0x0E, /* HID unit exponent(0x0E) */ ++0xB1, 0x02, /* HID feature (Data_Arr_Abs) */ ++ ++//input report (transmit) ++0x05, 0x20, /* HID usage page sensors */ ++0x0A, 0x01, 0x02, /* HID usage sensor state */ ++0x15, 0, /* HID logical Min_8(0) */ ++0x25, 6, /* HID logical Max_8(6) */ ++0x75, 8, /* HID report size(8) */ ++0x95, 1, /* HID report count (1) */ ++0xA1, 0x02, /* HID end collection (logical) */ ++0x0A, 0x00, 0x08, /* HID usage sensor state unknown sel */ ++0x0A, 0x01, 0x08, /* HID usage sensor state ready sel */ ++0x0A, 0x02, 0x08, /* HID usage sensor state not available sel */ ++0x0A, 0x03, 0x08, /* HID usage sensor state no data sel */ ++0x0A, 0x04, 0x08, /* HID usage sensor state initializing sel */ ++0x0A, 0x05, 0x08, /* HID usage sensor state access denied sel */ ++0x0A, 0x06, 0x08, /* HID usage sensor state error sel */ ++0X81, 0x00, /* HID Input (Data_Arr_Abs) */ ++0xC0, /* HID end collection */ ++0x0A, 0x02, 0x02, /* HID usage sensor event */ ++0x15, 0, /* HID logical Min_8(0) */ ++0x25, 5, /* HID logical Max_8(5) */ ++0x75, 8, /* HID report size(8) */ ++0x95, 1, /* HID report count (1) */ ++0xA1, 0x02, /* HID end collection (logical) */ ++0x0A, 0x10, 0x08, /* HID usage sensor event unknown sel */ ++0x0A, 0x11, 0x08, /* HID usage sensor event state changed sel */ ++0x0A, 0x12, 0x08, /* HID usage sensor event property changed sel */ ++0x0A, 0x13, 0x08, /* HID usage sensor event data updated sel */ ++0x0A, 0x14, 0x08, /* HID usage sensor event poll response sel */ ++0x0A, 0x15, 0x08, /* HID usage sensor event change sensitivity sel */ ++0X81, 0x00, /* HID Input (Data_Arr_Abs) */ ++0xC0, /* HID end collection */ ++0x0A, 0x53, 0x04, /* HID usage sensor data motion Acceleration X axis */ ++0x17, 0x00, 0x00, 0x01, 0x80, /* HID logical Min_32 */ ++ ++0x27, 0xFF, 0xff, 0XFF, 0XFF, /* HID logical Max_32 */ ++ ++0x75, 32, /* HID report size(32) */ ++0x95, 1, /* HID report count (1) */ ++0x55, 0x0C, /* HID unit exponent(0x0C) modified */ ++0X81, 0x02, /* HID Input (Data_Arr_Abs) */ ++0x0A, 0x54, 0x04, /* HID usage sensor data motion Acceleration Y axis */ ++0x17, 0X00, 0X00, 0x01, 0x80, /* HID logical Min_32 */ ++ ++0x27, 0xFF, 0xFF, 0XFF, 0XFF, /* HID logical Max_32 */ ++ ++0x75, 32, /* HID report size(32) */ ++0x95, 1, /* HID report count (1) */ ++0x55, 0x0C, /* HID unit exponent(0x0C) modified */ ++0X81, 0x02, /* HID Input (Data_Arr_Abs) */ ++0x0A, 0x55, 0x04, /* HID usage sensor data motion Acceleration Z axis */ ++0x17, 0X00, 0X00, 0x01, 0x80, /* HID logical Min_32 */ ++ ++0x27, 0XFF, 0XFF, 0xFF, 0x7F, /* HID logical Max_32 */ ++ ++0x75, 32, /* HID report size(32) */ ++0x95, 1, /* HID report count (1) */ ++0x55, 0x0C, /* HID unit exponent(0x0C) modified */ ++0X81, 0x02, /* HID Input (Data_Arr_Abs) */ ++ ++0x0A, 0x51, 0x04, /* HID usage sensor data motion state */ ++0x15, 0, /* HID logical Min_8(0) False = Still*/ ++0x25, 1, /* HID logical Min_8(1) True = In motion */ ++0x75, 8, /* HID report size(8) */ ++0x95, 1, /* HID report count (1) */ ++0X81, 0x02, /* HID Input (Data_Arr_Abs) */ ++0xC0 /* HID end collection */ ++}; ++ ++static const u8 gyro3_report_descriptor1_1[] = { ++0x05, 0x20, /* Usage page */ ++0x09, 0x76, /* Motion type Gyro3D */ ++0xA1, 0x00, /* HID Collection (Physical) */ ++ ++0x85, 2, /* HID Report ID */ ++0x05, 0x20, /* HID usage page sensor */ ++0x0A, 0x09, 0x03, /* Sensor property and sensor connection type */ ++0x15, 0, /* HID logical MIN_8(0) */ ++0x25, 2, /* HID logical MAX_8(2) */ ++0x75, 8, /* HID report size(8) */ ++0x95, 1, /* HID report count(1) */ ++0xA1, 0x02, /* HID collection (logical) */ ++0x0A, 0x30, 0x08, /* Sensor property connection type intergated sel */ ++0x0A, 0x31, 0x08, /* Sensor property connection type attached sel */ ++0x0A, 0x32, 0x08, /* Sensor property connection type external sel */ ++0xB1, 0x00, /* HID feature (Data_Arr_Abs) */ ++0xC0, /* HID end collection */ ++0x0A, 0x16, 0x03, /* HID usage sensor property reporting state */ ++0x15, 0, /* HID logical Min_8(0) */ ++0x25, 5, /* HID logical Max_8(5) */ ++0x75, 8, /* HID report size(8) */ ++0x95, 1, /* HID report count(1) */ ++0xA1, 0x02, /* HID collection(logical) */ ++0x0A, 0x40, 0x08, /* Sensor reporting state no events sel */ ++0x0A, 0x41, 0x08, /* Sensor reporting state all events sel */ ++0x0A, 0x42, 0x08, /* Sensor reporting state threshold events sel */ ++0x0A, 0x43, 0x08, /* Sensor reporting state no events wake sel */ ++0x0A, 0x44, 0x08, /* Sensor reporting state all events wake sel */ ++0x0A, 0x45, 0x08, /* Sensor reporting state threshold events wake sel */ ++0xB1, 0x00, /* HID feature (Data_Arr_Abs) */ ++0xC0, /* HID end collection */ ++0x0A, 0x19, 0x03, /* HID usage sensor property power state */ ++0x15, 0, /* HID logical Min_8(0) */ ++0x25, 5, /* HID logical Max_8(5) */ ++0x75, 8, /* HID report size(8) */ ++0x95, 1, /* HID report count(1) */ ++0xA1, 0x02, /* HID collection(logical) */ ++0x0A, 0x50, 0x08, /* Sensor power state undefined sel */ ++0x0A, 0x51, 0x08, /* Sensor power state D0 full power sel */ ++0x0A, 0x52, 0x08, /* Sensor power state D1 low power sel */ ++0x0A, 0x53, 0x08, /* Sensor power state D2 standby with wake sel */ ++0x0A, 0x54, 0x08, /* Sensor power state D3 sleep with wake sel */ ++0x0A, 0x55, 0x08, /* Sensor power state D4 power off sel */ ++0xB1, 0x00, /* HID feature (Data_Arr_Abs) */ ++0xC0, /* HID end collection */ ++0x0A, 0x01, 0x02, /* HID usage sensor state */ ++0x15, 0, /* HID logical Min_8(0) */ ++0x25, 6, /* HID logical Max_8(6) */ ++0x75, 8, /* HID report size(8) */ ++0x95, 1, /* HID report count(1) */ ++0xA1, 0x02, /* HID collection(logical) */ ++0x0A, 0x00, 0x08, /* HID usage sensor state unknown sel */ ++0x0A, 0x01, 0x08, /* HID usage sensor state ready sel */ ++0x0A, 0x02, 0x08, /* HID usage sensor state not available sel */ ++0x0A, 0x03, 0x08, /* HID usage sensor state no data sel */ ++0x0A, 0x04, 0x08, /* HID usage sensor state initializing sel */ ++0x0A, 0x05, 0x08, /* HID usage sensor state access denied sel */ ++0x0A, 0x06, 0x08, /* HID usage sensor state error sel */ ++0xB1, 0x00, /* HID feature (Data_Arr_Abs) */ ++0xC0, /* HID end collection */ ++0x0A, 0x0E, 0x03, /* HID usage sensor property report interval */ ++0x15, 0, /* HID logical Min_8(0) */ ++0x27, 0xFF, 0xFF, 0xFF, 0xFF, /* HID logical Max_32 */ ++ ++0x75, 32, /* HID report size(32) */ ++0x95, 1, /* HID report count(1) */ ++0x55, 0, /* HID unit exponent(0) */ ++0xB1, 0x02, /* HID feature (Data_Arr_Abs) */ ++0x0A, 0x56, 0x14, /* Angular velocity and mod change sensitivity ABS)*/ ++ ++0x15, 0, /* HID logical Min_8(0) */ ++0x26, 0xFF, 0xFF, /* HID logical Max_16(0xFF,0xFF) */ ++ ++0x75, 16, /* HID report size(16) */ ++0x95, 1, /* HID report count(1) */ ++0x55, 0x0E, /* HID unit exponent(0x0E) */ ++0xB1, 0x02, /* HID feature (Data_Arr_Abs) */ ++0x0A, 0x56, 0x24, /* Sensor data (motion angular velocity and mod max) */ ++ ++0x16, 0x01, 0x80, /* HID logical Min_16(0x01,0x80) */ ++ ++0x26, 0xFF, 0x7F, /* HID logical Max_16(0xFF,0x7F) */ ++ ++0x75, 16, /* HID report size(16) */ ++0x95, 1, /* HID report count(1) */ ++0x55, 0x0E, /* HID unit exponent(0x0E) */ ++0xB1, 0x02, /* HID feature (Data_Arr_Abs) */ ++0x0A, 0x56, 0x34, /* HID usage sensor data (motion accel and mod min) */ ++ ++0x16, 0x01, 0x80, /* HID logical Min_16(0x01,0x80) */ ++ ++0x26, 0xFF, 0x7F, /* HID logical Max_16(0xFF,0x7F) */ ++ ++0x75, 16, /* HID report size(16) */ ++0x95, 1, /* HID report count(1) */ ++0x55, 0x0E, /* HID unit exponent(0x0E) */ ++0xB1, 0x02, /* HID feature (Data_Arr_Abs) */ ++ ++//Input reports(transmit) ++0x05, 0x20, /* HID usage page sensors */ ++0x0A, 0x01, 0x02, /* HID usage sensor state */ ++0x15, 0, /* HID logical Min_8(0) */ ++0x25, 6, /* HID logical Max_8(6) */ ++0x75, 8, /* HID report size(8) */ ++0x95, 1, /* HID report count (1) */ ++0xA1, 0x02, /* HID end collection (logical) */ ++0x0A, 0x00, 0x08, /* HID usage sensor state unknown sel */ ++0x0A, 0x01, 0x08, /* HID usage sensor state ready sel */ ++0x0A, 0x02, 0x08, /* HID usage sensor state not available sel */ ++0x0A, 0x03, 0x08, /* HID usage sensor state no data sel */ ++0x0A, 0x04, 0x08, /* HID usage sensor state initializing sel */ ++0x0A, 0x05, 0x08, /* HID usage sensor state access denied sel */ ++0x0A, 0x06, 0x08, /* HID usage sensor state error sel */ ++0X81, 0x00, /* HID Input (Data_Arr_Abs) */ ++0xC0, /* HID end collection */ ++0x0A, 0x02, 0x02, /* HID usage sensor event */ ++0x15, 0, /* HID logical Min_8(0) */ ++0x25, 5, /* HID logical Max_8(5) */ ++0x75, 8, /* HID report size(8) */ ++0x95, 1, /* HID report count (1) */ ++0xA1, 0x02, /* HID end collection (logical) */ ++0x0A, 0x10, 0x08, /* HID usage sensor event unknown sel */ ++0x0A, 0x11, 0x08, /* HID usage sensor event state changed sel */ ++0x0A, 0x12, 0x08, /* HID usage sensor event property changed sel */ ++0x0A, 0x13, 0x08, /* HID usage sensor event data updated sel */ ++0x0A, 0x14, 0x08, /* HID usage sensor event poll response sel */ ++0x0A, 0x15, 0x08, /* HID usage sensor event change sensitivity sel */ ++0X81, 0x00, /* HID Input (Data_Arr_Abs) */ ++0xC0, /* HID end collection */ ++0x0A, 0x57, 0x04, /* Sensor data motion Angular velocity X axis */ ++0x17, 0x00, 0x00, 0x01, 0x80, /* HID logical Min_32 */ ++ ++0x27, 0xFF, 0xFF, 0xFF, 0x7F, /* HID logical Max_32 */ ++ ++0x75, 32, /* HID report size(32) */ ++0x95, 1, /* HID report count (1) */ ++0x55, 0x0B, /* HID unit exponent(0x0B) modified */ ++0X81, 0x02, /* HID Input (Data_Arr_Abs) */ ++0x0A, 0x58, 0x04, /* Sensor data motion Angular velocity Y axis */ ++0x17, 0x00, 0x00, 0x01, 0x80, /* HID logical Min_32 */ ++ ++0x27, 0xFF, 0xFF, 0xFF, 0x7F, /* HID logical Max_32 */ ++ ++0x75, 32, /* HID report size(32) */ ++0x95, 1, /* HID report count (1) */ ++0x55, 0x0B, /* HID unit exponent(0x0B) modified */ ++0X81, 0x02, /* HID Input (Data_Arr_Abs) */ ++0x0A, 0x59, 0x04, /* Sensor data motion Angular velocity Z axis */ ++0x17, 0x00, 0x00, 0x01, 0x80, /* HID logical Min_32 */ ++ ++0x27, 0xFF, 0xFF, 0xFF, 0x7F, /* HID logical Max_32 */ ++ ++0x75, 32, /* HID report size(32) */ ++0x95, 1, /* HID report count (1) */ ++0x55, 0x0B, /* HID unit exponent(0x0B) modified */ ++0X81, 0x02, /* HID Input (Data_Arr_Abs) */ ++ ++0xC0, /* HID end collection */ ++}; ++ ++#endif +-- +2.44.0 + diff --git a/SPECS/kernel.spec b/SPECS/kernel.spec index 737df97..20e21ea 100644 --- a/SPECS/kernel.spec +++ b/SPECS/kernel.spec @@ -169,7 +169,7 @@ Summary: The Linux kernel # This is needed to do merge window version magic %define patchlevel 7 # This allows pkg_release to have configurable %%{?dist} tag -%define specrelease 201%{?buildid}%{?dist} +%define specrelease 202%{?buildid}%{?dist} # This defines the kabi tarball version %define kabiversion 6.7.9 @@ -1010,6 +1010,8 @@ Patch303: lenovo-legion-laptop.patch # workaround for i915 getting stuck during async page flips on Nvidia PRIME systems Patch308: 0001-drm-i915-quirks-disable-async-flipping-on-specific-d.patch Patch309: 0002-drm-i915-add-kernel-parameter-to-disable-async-page-.patch +# improve AMD SFH 1.1 gyro and accel sensitivity +Patch324: 0001-bump-the-sensitivity-of-AMD-SFH.patch # ROG Ally Patch315: rog-ally-audio-fix.patch Patch317: ROG-ALLY-NCT6775-PLATFORM.patch @@ -1878,6 +1880,8 @@ ApplyOptionalPatch lenovo-legion-laptop.patch # workaround for i915 getting stuck during async page flips on Nvidia PRIME systems ApplyOptionalPatch 0001-drm-i915-quirks-disable-async-flipping-on-specific-d.patch ApplyOptionalPatch 0002-drm-i915-add-kernel-parameter-to-disable-async-page-.patch +# improve AMD SFH 1.1 gyro and accel sensitivity +ApplyOptionalPatch 0001-bump-the-sensitivity-of-AMD-SFH.patch # ROG Ally ApplyOptionalPatch rog-ally-audio-fix.patch ApplyOptionalPatch ROG-ALLY-NCT6775-PLATFORM.patch @@ -3994,6 +3998,9 @@ fi\ # # %changelog +* Sat Mar 09 2024 Jan200101 - 6.7.9-202.fsync +- kernel-fsync v6.7.9 AMD SFH sensitivity patch + * Sat Mar 09 2024 Jan200101 - 6.7.9-201.fsync - kernel-fsync v6.7.9 -- cgit v1.2.3