Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 010665b4 authored by Pawel Laszczak's avatar Pawel Laszczak Committed by Felipe Balbi
Browse files

usb: common: Patch simplify usb_decode_set_clear_feature function.



Patch adds usb_decode_test_mode and usb_decode_device_feature functions,
which allow to make more readable and simplify the
usb_decode_set_clear_feature function.

Signed-off-by: default avatarPawel Laszczak <pawell@cadence.com>
Signed-off-by: default avatarFelipe Balbi <felipe.balbi@linux.intel.com>
parent 91f255a2
Loading
Loading
Loading
Loading
+43 −46
Original line number Diff line number Diff line
@@ -30,58 +30,55 @@ static void usb_decode_get_status(__u8 bRequestType, __u16 wIndex,
	}
}

static void usb_decode_set_clear_feature(__u8 bRequestType, __u8 bRequest,
					 __u16 wValue, __u16 wIndex,
					 char *str, size_t size)
static const char *usb_decode_device_feature(u16 wValue)
{
	switch (bRequestType & USB_RECIP_MASK) {
	case USB_RECIP_DEVICE:
		snprintf(str, size, "%s Device Feature(%s%s)",
			 bRequest == USB_REQ_CLEAR_FEATURE ? "Clear" : "Set",
			 ({char *s;
	switch (wValue) {
	case USB_DEVICE_SELF_POWERED:
					s = "Self Powered";
					break;
		return "Self Powered";
	case USB_DEVICE_REMOTE_WAKEUP:
					s = "Remote Wakeup";
					break;
		return "Remote Wakeup";
	case USB_DEVICE_TEST_MODE:
					s = "Test Mode";
					break;
		return "Test Mode";
	case USB_DEVICE_U1_ENABLE:
					s = "U1 Enable";
					break;
		return "U1 Enable";
	case USB_DEVICE_U2_ENABLE:
					s = "U2 Enable";
					break;
		return "U2 Enable";
	case USB_DEVICE_LTM_ENABLE:
					s = "LTM Enable";
					break;
		return "LTM Enable";
	default:
					s = "UNKNOWN";
				} s; }),
			 wValue == USB_DEVICE_TEST_MODE ?
			 ({ char *s;
		return "UNKNOWN";
	}
}

static const char *usb_decode_test_mode(u16 wIndex)
{
	switch (wIndex) {
	case TEST_J:
					s = ": TEST_J";
					break;
		return ": TEST_J";
	case TEST_K:
					s = ": TEST_K";
					break;
		return ": TEST_K";
	case TEST_SE0_NAK:
					s = ": TEST_SE0_NAK";
					break;
		return ": TEST_SE0_NAK";
	case TEST_PACKET:
					s = ": TEST_PACKET";
					break;
		return ": TEST_PACKET";
	case TEST_FORCE_EN:
					s = ": TEST_FORCE_EN";
					break;
		return ": TEST_FORCE_EN";
	default:
					s = ": UNKNOWN";
				} s; }) : "");
		return ": UNKNOWN";
	}
}

static void usb_decode_set_clear_feature(__u8 bRequestType,
					 __u8 bRequest, __u16 wValue,
					 __u16 wIndex, char *str, size_t size)
{
	switch (bRequestType & USB_RECIP_MASK) {
	case USB_RECIP_DEVICE:
		snprintf(str, size, "%s Device Feature(%s%s)",
			 bRequest == USB_REQ_CLEAR_FEATURE ? "Clear" : "Set",
			 usb_decode_device_feature(wValue),
			 wValue == USB_DEVICE_TEST_MODE ?
			 usb_decode_test_mode(wIndex) : "");
		break;
	case USB_RECIP_INTERFACE:
		snprintf(str, size, "%s Interface Feature(%s)",