]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
HID: bpf: drop use of Logical|Physical|UsageRange
authorBenjamin Tissoires <bentiss@kernel.org>
Thu, 17 Oct 2024 16:35:00 +0000 (18:35 +0200)
committerBenjamin Tissoires <bentiss@kernel.org>
Fri, 18 Oct 2024 12:37:33 +0000 (14:37 +0200)
Replace with individual Minimum/Maximum calls to match the HID report
descriptor - HID doesn't have a Range field. Abstracting this is good
for hand-written descriptors but almost all tools will output min/max
instead so let's stick with that.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Acked-by: Jiri Kosina <jkosina@suse.com>
Link: https://patch.msgid.link/20241017-import_bpf_6-13-v2-3-6a7acb89a97f@kernel.org
Signed-off-by: Benjamin Tissoires <bentiss@kernel.org>
drivers/hid/bpf/progs/Huion__Dial-2.bpf.c
drivers/hid/bpf/progs/Huion__Inspiroy-2-S.bpf.c
drivers/hid/bpf/progs/hid_report_helpers.h

index 2411dec6db08b684c6e24c73ab4d509300424768..9670e5ef8d54f0058260294ef99bc65e7e312472 100644 (file)
@@ -214,7 +214,8 @@ static const __u8 fixed_rdesc_pad[] = {
        CollectionApplication(
                // -- Byte 0 in report
                ReportId(PAD_REPORT_ID)
-               LogicalRange_i8(0, 1)
+               LogicalMaximum_i8(0)
+               LogicalMaximum_i8(1)
                UsagePage_Digitizers
                Usage_Dig_TabletFunctionKeys
                CollectionPhysical(
@@ -234,14 +235,17 @@ static const __u8 fixed_rdesc_pad[] = {
                        Input(Var|Abs)
                        // Byte 4 in report is the dial
                        Usage_GD_Wheel
-                       LogicalRange_i8(-1, 1)
+                       LogicalMinimum_i8(-1)
+                       LogicalMaximum_i8(1)
                        ReportCount(1)
                        ReportSize(8)
                        Input(Var|Rel)
                        // Byte 5 is the button state
                        UsagePage_Button
-                       UsageRange_i8(0x01, 0x8)
-                       LogicalRange_i8(0x0, 0x1)
+                       UsageMinimum_i8(0x01)
+                       UsageMaximum_i8(0x08)
+                       LogicalMinimum_i8(0x0)
+                       LogicalMaximum_i8(0x1)
                        ReportCount(7)
                        ReportSize(1)
                        Input(Var|Abs)
@@ -265,7 +269,8 @@ static const __u8 fixed_rdesc_pen[] = {
                        Usage_Dig_TipSwitch
                        Usage_Dig_BarrelSwitch
                        Usage_Dig_SecondaryBarrelSwitch // maps eraser to BTN_STYLUS2
-                       LogicalRange_i8(0, 1)
+                       LogicalMinimum_i8(0)
+                       LogicalMaximum_i8(1)
                        ReportSize(1)
                        ReportCount(3)
                        Input(Var|Abs)
@@ -280,22 +285,28 @@ static const __u8 fixed_rdesc_pen[] = {
                                UsagePage_GenericDesktop
                                Unit(cm)
                                UnitExponent(-1)
-                               PhysicalRange_i16(0, 266)
-                               LogicalRange_i16(0, 32767)
+                               PhysicalMinimum_i16(0)
+                               PhysicalMaximum_i16(266)
+                               LogicalMinimum_i16(0)
+                               LogicalMaximum_i16(32767)
                                Usage_GD_X
                                Input(Var|Abs) // Bytes 2+3
-                               PhysicalRange_i16(0, 166)
-                               LogicalRange_i16(0, 32767)
+                               PhysicalMinimum_i16(0)
+                               PhysicalMaximum_i16(166)
+                               LogicalMinimum_i16(0)
+                               LogicalMaximum_i16(32767)
                                Usage_GD_Y
                                Input(Var|Abs) // Bytes 4+5
                        )
                        UsagePage_Digitizers
                        Usage_Dig_TipPressure
-                       LogicalRange_i16(0, 8191)
+                       LogicalMinimum_i16(0)
+                       LogicalMaximum_i16(8191)
                        Input(Var|Abs) // Byte 6+7
                        ReportSize(8)
                        ReportCount(2)
-                       LogicalRange_i8(-60, 60)
+                       LogicalMinimum_i8(-60)
+                       LogicalMaximum_i8(60)
                        Usage_Dig_XTilt
                        Usage_Dig_YTilt
                        Input(Var|Abs) // Byte 8+9
@@ -313,7 +324,8 @@ static const __u8 fixed_rdesc_vendor[] = {
                Usage_Dig_Pen
                CollectionPhysical(
                        // Byte 1 are the buttons
-                       LogicalRange_i8(0, 1)
+                       LogicalMinimum_i8(0)
+                       LogicalMaximum_i8(1)
                        ReportSize(1)
                        Usage_Dig_TipSwitch
                        Usage_Dig_BarrelSwitch
@@ -333,25 +345,31 @@ static const __u8 fixed_rdesc_vendor[] = {
                                UnitExponent(-1)
                                // Note: reported logical range differs
                                // from the pen report ID for x and y
-                               LogicalRange_i16(0, 53340)
-                               PhysicalRange_i16(0, 266)
+                               LogicalMinimum_i16(0)
+                               LogicalMaximum_i16(53340)
+                               PhysicalMinimum_i16(0)
+                               PhysicalMaximum_i16(266)
                                // Bytes 2/3 in report
                                Usage_GD_X
                                Input(Var|Abs)
-                               LogicalRange_i16(0, 33340)
-                               PhysicalRange_i16(0, 166)
+                               LogicalMinimum_i16(0)
+                               LogicalMaximum_i16(33340)
+                               PhysicalMinimum_i16(0)
+                               PhysicalMaximum_i16(166)
                                // Bytes 4/5 in report
                                Usage_GD_Y
                                Input(Var|Abs)
                        )
                        // Bytes 6/7 in report
-                       LogicalRange_i16(0, 8191)
+                       LogicalMinimum_i16(0)
+                       LogicalMaximum_i16(8191)
                        Usage_Dig_TipPressure
                        Input(Var|Abs)
                        // Bytes 8/9 in report
                        ReportCount(1) // Padding
                        Input(Const)
-                       LogicalRange_i8(-60, 60)
+                       LogicalMinimum_i8(-60)
+                       LogicalMaximum_i8(60)
                        // Byte 10 in report
                        Usage_Dig_XTilt
                        // Byte 11 in report
@@ -366,7 +384,8 @@ static const __u8 fixed_rdesc_vendor[] = {
        CollectionApplication(
                // Byte 0
                ReportId(PAD_REPORT_ID)
-               LogicalRange_i8(0, 1)
+               LogicalMinimum_i8(0)
+               LogicalMaximum_i8(1)
                UsagePage_Digitizers
                Usage_Dig_TabletFunctionKeys
                CollectionPhysical(
@@ -386,15 +405,18 @@ static const __u8 fixed_rdesc_vendor[] = {
                        Input(Var|Abs)
                        // Byte 4 is the button state
                        UsagePage_Button
-                       UsageRange_i8(0x01, 0x8)
-                       LogicalRange_i8(0x0, 0x1)
+                       UsageMinimum_i8(0x1)
+                       UsageMaximum_i8(0x8)
+                       LogicalMinimum_i8(0x0)
+                       LogicalMaximum_i8(0x1)
                        ReportCount(8)
                        ReportSize(1)
                        Input(Var|Abs)
                        // Byte 5 is the top dial
                        UsagePage_GenericDesktop
                        Usage_GD_Wheel
-                       LogicalRange_i8(-1, 1)
+                       LogicalMinimum_i8(-1)
+                       LogicalMaximum_i8(1)
                        ReportCount(1)
                        ReportSize(8)
                        Input(Var|Rel)
index b09b80132368b6c504a61e1965263bdaaac67fb0..13f64fb49800b16f6d4d48c378f065fcdf51202a 100644 (file)
@@ -170,7 +170,8 @@ static const __u8 fixed_rdesc_pad[] = {
        CollectionApplication(
                // -- Byte 0 in report
                ReportId(PAD_REPORT_ID)
-               LogicalRange_i8(0, 1)
+               LogicalMinimum_i8(0)
+               LogicalMaximum_i8(1)
                UsagePage_Digitizers
                Usage_Dig_TabletFunctionKeys
                CollectionPhysical(
@@ -190,14 +191,17 @@ static const __u8 fixed_rdesc_pad[] = {
                        Input(Var|Abs)
                        // Byte 4 in report is the wheel
                        Usage_GD_Wheel
-                       LogicalRange_i8(-1, 1)
+                       LogicalMinimum_i8(-1)
+                       LogicalMaximum_i8(1)
                        ReportCount(1)
                        ReportSize(8)
                        Input(Var|Rel)
                        // Byte 5 is the button state
                        UsagePage_Button
-                       UsageRange_i8(0x01, 0x6)
-                       LogicalRange_i8(0x01, 0x6)
+                       UsageMinimum_i8(0x1)
+                       UsageMaximum_i8(0x6)
+                       LogicalMinimum_i8(0x1)
+                       LogicalMaximum_i8(0x6)
                        ReportCount(1)
                        ReportSize(8)
                        Input(Arr|Abs)
@@ -219,7 +223,8 @@ static const __u8 fixed_rdesc_pen[] = {
                        Usage_Dig_TipSwitch
                        Usage_Dig_BarrelSwitch
                        Usage_Dig_SecondaryBarrelSwitch // maps eraser to BTN_STYLUS2
-                       LogicalRange_i8(0, 1)
+                       LogicalMinimum_i8(0)
+                       LogicalMaximum_i8(1)
                        ReportSize(1)
                        ReportCount(3)
                        Input(Var|Abs)
@@ -234,18 +239,23 @@ static const __u8 fixed_rdesc_pen[] = {
                                UsagePage_GenericDesktop
                                Unit(cm)
                                UnitExponent(-1)
-                               PhysicalRange_i16(0, 160)
-                               LogicalRange_i16(0, 32767)
+                               PhysicalMinimum_i16(0)
+                               PhysicalMaximum_i16(160)
+                               LogicalMinimum_i16(0)
+                               LogicalMaximum_i16(32767)
                                Usage_GD_X
                                Input(Var|Abs) // Bytes 2+3
-                               PhysicalRange_i16(0, 100)
-                               LogicalRange_i16(0, 32767)
+                               PhysicalMinimum_i16(0)
+                               PhysicalMaximum_i16(100)
+                               LogicalMinimum_i16(0)
+                               LogicalMaximum_i16(32767)
                                Usage_GD_Y
                                Input(Var|Abs) // Bytes 4+5
                        )
                        UsagePage_Digitizers
                        Usage_Dig_TipPressure
-                       LogicalRange_i16(0, 8191)
+                       LogicalMinimum_i16(0)
+                       LogicalMaximum_i16(8191)
                        Input(Var|Abs) // Byte 6+7
                        // Two bytes padding so we don't need to change the report at all
                        ReportSize(8)
@@ -265,7 +275,8 @@ static const __u8 fixed_rdesc_vendor[] = {
                Usage_Dig_Pen
                CollectionPhysical(
                        // Byte 1 are the buttons
-                       LogicalRange_i8(0, 1)
+                       LogicalMinimum_i8(0)
+                       LogicalMaximum_i8(1)
                        ReportSize(1)
                        Usage_Dig_TipSwitch
                        Usage_Dig_BarrelSwitch
@@ -285,19 +296,24 @@ static const __u8 fixed_rdesc_vendor[] = {
                                UnitExponent(-1)
                                // Note: reported logical range differs
                                // from the pen report ID for x and y
-                               LogicalRange_i16(0, 32000)
-                               PhysicalRange_i16(0, 160)
+                               LogicalMinimum_i16(0)
+                               LogicalMaximum_i16(32000)
+                               PhysicalMinimum_i16(0)
+                               PhysicalMaximum_i16(160)
                                // Bytes 2/3 in report
                                Usage_GD_X
                                Input(Var|Abs)
-                               LogicalRange_i16(0, 20000)
-                               PhysicalRange_i16(0, 100)
+                               LogicalMinimum_i16(0)
+                               LogicalMaximum_i16(20000)
+                               PhysicalMinimum_i16(0)
+                               PhysicalMaximum_i16(100)
                                // Bytes 4/5 in report
                                Usage_GD_Y
                                Input(Var|Abs)
                        )
                        // Bytes 6/7 in report
-                       LogicalRange_i16(0, 8192)
+                       LogicalMinimum_i16(0)
+                       LogicalMaximum_i16(8192)
                        Usage_Dig_TipPressure
                        Input(Var|Abs)
                )
@@ -307,7 +323,8 @@ static const __u8 fixed_rdesc_vendor[] = {
        CollectionApplication(
                // Byte 0
                ReportId(PAD_REPORT_ID)
-               LogicalRange_i8(0, 1)
+               LogicalMinimum_i8(0)
+               LogicalMaximum_i8(1)
                UsagePage_Digitizers
                Usage_Dig_TabletFunctionKeys
                CollectionPhysical(
@@ -327,8 +344,10 @@ static const __u8 fixed_rdesc_vendor[] = {
                        Input(Var|Abs)
                        // Byte 4 is the button state
                        UsagePage_Button
-                       UsageRange_i8(0x01, 0x6)
-                       LogicalRange_i8(0x0, 0x1)
+                       UsageMinimum_i8(0x1)
+                       UsageMaximum_i8(0x6)
+                       LogicalMinimum_i8(0x0)
+                       LogicalMaximum_i8(0x1)
                        ReportCount(6)
                        ReportSize(1)
                        Input(Var|Abs)
@@ -337,7 +356,8 @@ static const __u8 fixed_rdesc_vendor[] = {
                        // Byte 5 is the wheel
                        UsagePage_GenericDesktop
                        Usage_GD_Wheel
-                       LogicalRange_i8(-1, 1)
+                       LogicalMinimum_i8(-1)
+                       LogicalMaximum_i8(1)
                        ReportCount(1)
                        ReportSize(8)
                        Input(Var|Rel)
index 0aa1df438eebac72a64cc3fa24aa2fd28b952d1d..9b2a48e4a311b39ca20e7d9819beef8fb70315a6 100644 (file)
@@ -52,7 +52,8 @@
  *     Usage_GD_Keyboard
  *     CollectionApplication(     ← Open the collection
  *         ReportId(3)
- *         LogicalRange_i8(0, 1)
+ *         LogicalMinimum_i8(0)
+ *         LogicalMaximum_i8(1)
  *         // other fields
  *     )                          ← End EndCollection
  *
 #define Arr            0x0
 #define Abs            0x0
 #define Rel            0x4
+#define Null           0x40
+#define Buff           0x0100
 
 /* Use like this: Input(Var|Abs) */
 #define Input(i_)                      0x081, i8(i_),
 #define Output(i_)                     0x091, i8(i_),
 #define Feature(i_)                    0x0b1, i8(i_),
 
+#define Input_i16(i_)                  0x082, LE16(i_),
+#define Output_i16(i_)                 0x092, LE16(i_),
+#define Feature_i16(i_)                        0x0b2, LE16(i_),
+
 #define ReportId(id_)                  0x85, i8(id_),
 #define ReportSize(sz_)                        0x75, i8(sz_),
 #define ReportCount(cnt_)              0x95, i8(cnt_),
 
-#define LogicalRange_i8(min_, max_)    0x15, i8(min_), 0x25, i8(max_),
-#define LogicalRange_i16(min_, max_)   0x16, LE16(min_), 0x26, LE16(max_),
-#define LogicalRange_i32(min_, max_)   0x17, LE32(min_), 0x27, LE32(max_),
+#define LogicalMinimum_i8(min_)                0x15, i8(min_),
+#define LogicalMinimum_i16(min_)       0x16, LE16(min_),
+#define LogicalMinimum_i32(min_)       0x17, LE32(min_),
+
+#define LogicalMaximum_i8(max_)                0x25, i8(max_),
+#define LogicalMaximum_i16(max_)       0x26, LE16(max_),
+#define LogicalMaximum_i32(max_)       0x27, LE32(max_),
+
+#define PhysicalMinimum_i8(min_)       0x35, i8(min_),
+#define PhysicalMinimum_i16(min_)      0x36, LE16(min_),
+#define PhysicalMinimum_i32(min_)      0x37, LE32(min_),
+
+#define PhysicalMaximum_i8(max_)       0x45, i8(max_),
+#define PhysicalMaximum_i16(max_)      0x46, LE16(max_),
+#define PhysicalMaximum_i32(max_)      0x47, LE32(max_),
 
-#define PhysicalRange_i8(min_, max_)   0x35, i8(min_), 0x45, i8(max_),
-#define PhysicalRange_i16(min_, max_)  0x36, LE16(min_), 0x46, LE16(max_),
-#define PhysicalRange_i32(min_, max_)  0x37, LE32(min_), 0x47, LE32(max_),
+#define UsageMinimum_i8(min_)          0x19, i8(min_),
+#define UsageMinimum_i16(min_)         0x1a, LE16(min_),
 
-#define UsageRange_i8(min_, max_)      0x19, i8(min_), 0x29, i8(max_),
-#define UsageRange_i16(min_, max_)     0x1a, LE16(min_), 0x2a, LE16(max_),
+#define UsageMaximum_i8(max_)          0x29, i8(max_),
+#define UsageMaximum_i16(max_)         0x2a, LE16(max_),
 
 #define UsagePage_i8(p_)               0x05, i8(p_),
 #define UsagePage_i16(p_)              0x06, LE16(p_),