forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-05-11 04dd17822334871b23ea2862f7798fb0e0007777
kernel/drivers/usb/gadget/usbstring.c
....@@ -65,3 +65,27 @@
6565 return buf [0];
6666 }
6767 EXPORT_SYMBOL_GPL(usb_gadget_get_string);
68
+
69
+/**
70
+ * usb_validate_langid - validate usb language identifiers
71
+ * @langid: usb language identifier
72
+ *
73
+ * Returns true for valid language identifier, otherwise false.
74
+ */
75
+bool usb_validate_langid(u16 langid)
76
+{
77
+ u16 primary_lang = langid & 0x3ff; /* bit [9:0] */
78
+ u16 sub_lang = langid >> 10; /* bit [15:10] */
79
+
80
+ switch (primary_lang) {
81
+ case 0:
82
+ case 0x62 ... 0xfe:
83
+ case 0x100 ... 0x3ff:
84
+ return false;
85
+ }
86
+ if (!sub_lang)
87
+ return false;
88
+
89
+ return true;
90
+}
91
+EXPORT_SYMBOL_GPL(usb_validate_langid);