mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-06 08:47:44 -04:00
usb: aspeed-vhub: support test mode feature
Support aspeed usb vhub set feature to test mode. Signed-off-by: Neal Liu <neal_liu@aspeedtech.com> Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Link: https://lore.kernel.org/r/20211208100545.1441397-5-neal_liu@aspeedtech.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
d693bbd4cb
commit
aa9c2219f9
@@ -110,15 +110,26 @@ static int ast_vhub_dev_feature(struct ast_vhub_dev *d,
|
||||
u16 wIndex, u16 wValue,
|
||||
bool is_set)
|
||||
{
|
||||
u32 val;
|
||||
|
||||
DDBG(d, "%s_FEATURE(dev val=%02x)\n",
|
||||
is_set ? "SET" : "CLEAR", wValue);
|
||||
|
||||
if (wValue != USB_DEVICE_REMOTE_WAKEUP)
|
||||
return std_req_driver;
|
||||
if (wValue == USB_DEVICE_REMOTE_WAKEUP) {
|
||||
d->wakeup_en = is_set;
|
||||
return std_req_complete;
|
||||
}
|
||||
|
||||
d->wakeup_en = is_set;
|
||||
if (wValue == USB_DEVICE_TEST_MODE) {
|
||||
val = readl(d->vhub->regs + AST_VHUB_CTRL);
|
||||
val &= ~GENMASK(10, 8);
|
||||
val |= VHUB_CTRL_SET_TEST_MODE((wIndex >> 8) & 0x7);
|
||||
writel(val, d->vhub->regs + AST_VHUB_CTRL);
|
||||
|
||||
return std_req_complete;
|
||||
return std_req_complete;
|
||||
}
|
||||
|
||||
return std_req_driver;
|
||||
}
|
||||
|
||||
static int ast_vhub_ep_feature(struct ast_vhub_dev *d,
|
||||
|
||||
@@ -212,17 +212,28 @@ static int ast_vhub_hub_dev_feature(struct ast_vhub_ep *ep,
|
||||
u16 wIndex, u16 wValue,
|
||||
bool is_set)
|
||||
{
|
||||
u32 val;
|
||||
|
||||
EPDBG(ep, "%s_FEATURE(dev val=%02x)\n",
|
||||
is_set ? "SET" : "CLEAR", wValue);
|
||||
|
||||
if (wValue != USB_DEVICE_REMOTE_WAKEUP)
|
||||
return std_req_stall;
|
||||
if (wValue == USB_DEVICE_REMOTE_WAKEUP) {
|
||||
ep->vhub->wakeup_en = is_set;
|
||||
EPDBG(ep, "Hub remote wakeup %s\n",
|
||||
is_set ? "enabled" : "disabled");
|
||||
return std_req_complete;
|
||||
}
|
||||
|
||||
ep->vhub->wakeup_en = is_set;
|
||||
EPDBG(ep, "Hub remote wakeup %s\n",
|
||||
is_set ? "enabled" : "disabled");
|
||||
if (wValue == USB_DEVICE_TEST_MODE) {
|
||||
val = readl(ep->vhub->regs + AST_VHUB_CTRL);
|
||||
val &= ~GENMASK(10, 8);
|
||||
val |= VHUB_CTRL_SET_TEST_MODE((wIndex >> 8) & 0x7);
|
||||
writel(val, ep->vhub->regs + AST_VHUB_CTRL);
|
||||
|
||||
return std_req_complete;
|
||||
return std_req_complete;
|
||||
}
|
||||
|
||||
return std_req_stall;
|
||||
}
|
||||
|
||||
static int ast_vhub_hub_ep_feature(struct ast_vhub_ep *ep,
|
||||
|
||||
Reference in New Issue
Block a user