Merge branch 'for-5.17/core' into for-linus
[linux-2.6-microblaze.git] / include / linux / hid.h
index aaf89a8..7487b05 100644 (file)
@@ -241,6 +241,7 @@ struct hid_item {
 #define HID_DG_TOUCH           0x000d0033
 #define HID_DG_UNTOUCH         0x000d0034
 #define HID_DG_TAP             0x000d0035
+#define HID_DG_TRANSDUCER_INDEX        0x000d0038
 #define HID_DG_TABLETFUNCTIONKEY       0x000d0039
 #define HID_DG_PROGRAMCHANGEKEY        0x000d003a
 #define HID_DG_BATTERYSTRENGTH 0x000d003b
@@ -253,6 +254,15 @@ struct hid_item {
 #define HID_DG_BARRELSWITCH    0x000d0044
 #define HID_DG_ERASER          0x000d0045
 #define HID_DG_TABLETPICK      0x000d0046
+#define HID_DG_PEN_COLOR                       0x000d005c
+#define HID_DG_PEN_LINE_WIDTH                  0x000d005e
+#define HID_DG_PEN_LINE_STYLE                  0x000d0070
+#define HID_DG_PEN_LINE_STYLE_INK              0x000d0072
+#define HID_DG_PEN_LINE_STYLE_PENCIL           0x000d0073
+#define HID_DG_PEN_LINE_STYLE_HIGHLIGHTER      0x000d0074
+#define HID_DG_PEN_LINE_STYLE_CHISEL_MARKER    0x000d0075
+#define HID_DG_PEN_LINE_STYLE_BRUSH            0x000d0076
+#define HID_DG_PEN_LINE_STYLE_NO_PREFERENCE    0x000d0077
 
 #define HID_CP_CONSUMERCONTROL 0x000c0001
 #define HID_CP_NUMERICKEYPAD   0x000c0002
@@ -349,6 +359,8 @@ struct hid_item {
 /* BIT(9) reserved for backward compatibility, was NO_INIT_INPUT_REPORTS */
 #define HID_QUIRK_ALWAYS_POLL                  BIT(10)
 #define HID_QUIRK_INPUT_PER_APP                        BIT(11)
+#define HID_QUIRK_X_INVERT                     BIT(12)
+#define HID_QUIRK_Y_INVERT                     BIT(13)
 #define HID_QUIRK_SKIP_OUTPUT_REPORTS          BIT(16)
 #define HID_QUIRK_SKIP_OUTPUT_REPORT_ID                BIT(17)
 #define HID_QUIRK_NO_OUTPUT_REPORTS_ON_INTR_EP BIT(18)
@@ -894,7 +906,6 @@ extern void hidinput_disconnect(struct hid_device *);
 
 int hid_set_field(struct hid_field *, unsigned, __s32);
 int hid_input_report(struct hid_device *, int type, u8 *, u32, int);
-int hidinput_find_field(struct hid_device *hid, unsigned int type, unsigned int code, struct hid_field **field);
 struct hid_field *hidinput_get_led_field(struct hid_device *hid);
 unsigned int hidinput_count_leds(struct hid_device *hid);
 __s32 hidinput_calc_abs_res(const struct hid_field *field, __u16 code);
@@ -928,6 +939,16 @@ s32 hid_snto32(__u32 value, unsigned n);
 __u32 hid_field_extract(const struct hid_device *hid, __u8 *report,
                     unsigned offset, unsigned n);
 
+#ifdef CONFIG_PM
+int hid_driver_suspend(struct hid_device *hdev, pm_message_t state);
+int hid_driver_reset_resume(struct hid_device *hdev);
+int hid_driver_resume(struct hid_device *hdev);
+#else
+static inline int hid_driver_suspend(struct hid_device *hdev, pm_message_t state) { return 0; }
+static inline int hid_driver_reset_resume(struct hid_device *hdev) { return 0; }
+static inline int hid_driver_resume(struct hid_device *hdev) { return 0; }
+#endif
+
 /**
  * hid_device_io_start - enable HID input during probe, remove
  *
@@ -1005,6 +1026,10 @@ static inline void hid_map_usage(struct hid_input *hidinput,
                bmap = input->ledbit;
                limit = LED_MAX;
                break;
+       case EV_MSC:
+               bmap = input->mscbit;
+               limit = MSC_MAX;
+               break;
        }
 
        if (unlikely(c > limit || !bmap)) {
@@ -1061,6 +1086,12 @@ int __must_check hid_hw_start(struct hid_device *hdev,
 void hid_hw_stop(struct hid_device *hdev);
 int __must_check hid_hw_open(struct hid_device *hdev);
 void hid_hw_close(struct hid_device *hdev);
+void hid_hw_request(struct hid_device *hdev,
+                   struct hid_report *report, int reqtype);
+int hid_hw_raw_request(struct hid_device *hdev,
+                      unsigned char reportnum, __u8 *buf,
+                      size_t len, unsigned char rtype, int reqtype);
+int hid_hw_output_report(struct hid_device *hdev, __u8 *buf, size_t len);
 
 /**
  * hid_hw_power - requests underlying HW to go into given power mode
@@ -1078,68 +1109,6 @@ static inline int hid_hw_power(struct hid_device *hdev, int level)
 }
 
 
-/**
- * hid_hw_request - send report request to device
- *
- * @hdev: hid device
- * @report: report to send
- * @reqtype: hid request type
- */
-static inline void hid_hw_request(struct hid_device *hdev,
-                                 struct hid_report *report, int reqtype)
-{
-       if (hdev->ll_driver->request)
-               return hdev->ll_driver->request(hdev, report, reqtype);
-
-       __hid_request(hdev, report, reqtype);
-}
-
-/**
- * hid_hw_raw_request - send report request to device
- *
- * @hdev: hid device
- * @reportnum: report ID
- * @buf: in/out data to transfer
- * @len: length of buf
- * @rtype: HID report type
- * @reqtype: HID_REQ_GET_REPORT or HID_REQ_SET_REPORT
- *
- * Return: count of data transferred, negative if error
- *
- * Same behavior as hid_hw_request, but with raw buffers instead.
- */
-static inline int hid_hw_raw_request(struct hid_device *hdev,
-                                 unsigned char reportnum, __u8 *buf,
-                                 size_t len, unsigned char rtype, int reqtype)
-{
-       if (len < 1 || len > HID_MAX_BUFFER_SIZE || !buf)
-               return -EINVAL;
-
-       return hdev->ll_driver->raw_request(hdev, reportnum, buf, len,
-                                                   rtype, reqtype);
-}
-
-/**
- * hid_hw_output_report - send output report to device
- *
- * @hdev: hid device
- * @buf: raw data to transfer
- * @len: length of buf
- *
- * Return: count of data transferred, negative if error
- */
-static inline int hid_hw_output_report(struct hid_device *hdev, __u8 *buf,
-                                       size_t len)
-{
-       if (len < 1 || len > HID_MAX_BUFFER_SIZE || !buf)
-               return -EINVAL;
-
-       if (hdev->ll_driver->output_report)
-               return hdev->ll_driver->output_report(hdev, buf, len);
-
-       return -ENOSYS;
-}
-
 /**
  * hid_hw_idle - send idle request to device
  *