The 'tmode' is ctrl->wIndex, changing it as the real test mode value for register assignment.
Cc: stable@vger.kernel.org Fixes: 7733f6c32e36 ("usb: cdns3: Add Cadence USB3 DRD Driver") Reviewed-by: Jun Li jun.li@nxp.com Signed-off-by: Peter Chen peter.chen@nxp.com --- drivers/usb/cdns3/ep0.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/usb/cdns3/ep0.c b/drivers/usb/cdns3/ep0.c index 2465a84e8fee..74a1ff5000ba 100644 --- a/drivers/usb/cdns3/ep0.c +++ b/drivers/usb/cdns3/ep0.c @@ -327,7 +327,8 @@ static int cdns3_ep0_feature_handle_device(struct cdns3_device *priv_dev, if (!set || (tmode & 0xff) != 0) return -EINVAL;
- switch (tmode >> 8) { + tmode >>= 8; + switch (tmode) { case TEST_J: case TEST_K: case TEST_SE0_NAK:
Hi,
Reviewed-by: Pawel Laszczak pawell@cadence.com
The 'tmode' is ctrl->wIndex, changing it as the real test mode value for register assignment.
Cc: stable@vger.kernel.org Fixes: 7733f6c32e36 ("usb: cdns3: Add Cadence USB3 DRD Driver") Reviewed-by: Jun Li jun.li@nxp.com Signed-off-by: Peter Chen peter.chen@nxp.com
drivers/usb/cdns3/ep0.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/usb/cdns3/ep0.c b/drivers/usb/cdns3/ep0.c index 2465a84e8fee..74a1ff5000ba 100644 --- a/drivers/usb/cdns3/ep0.c +++ b/drivers/usb/cdns3/ep0.c @@ -327,7 +327,8 @@ static int cdns3_ep0_feature_handle_device(struct cdns3_device *priv_dev, if (!set || (tmode & 0xff) != 0) return -EINVAL;
switch (tmode >> 8) {
tmode >>= 8;
switch (tmode) {
For me it's looks the same, but it's ok.
case TEST_J: case TEST_K: case TEST_SE0_NAK:
-- 2.17.1
diff --git a/drivers/usb/cdns3/ep0.c b/drivers/usb/cdns3/ep0.c index 2465a84e8fee..74a1ff5000ba 100644 --- a/drivers/usb/cdns3/ep0.c +++ b/drivers/usb/cdns3/ep0.c @@ -327,7 +327,8 @@ static int cdns3_ep0_feature_handle_device(struct
cdns3_device *priv_dev,
if (!set || (tmode & 0xff) != 0) return -EINVAL;
switch (tmode >> 8) {
tmode >>= 8;
switch (tmode) {
For me it's looks the same, but it's ok.
Pawel, please check the coming code, it uses tmode to set the register which is incorrect before shift. (line 336)
328 tmode >>= 8; 329 switch (tmode) { 330 case TEST_J: 331 case TEST_K: 332 case TEST_SE0_NAK: 333 case TEST_PACKET: 334 cdns3_set_register_bit(&priv_dev->regs->usb_cmd, 335 USB_CMD_STMODE | 336 USB_STS_TMODE_SEL(tmode - 1)); 337 break;
Peter
diff --git a/drivers/usb/cdns3/ep0.c b/drivers/usb/cdns3/ep0.c index 2465a84e8fee..74a1ff5000ba 100644 --- a/drivers/usb/cdns3/ep0.c +++ b/drivers/usb/cdns3/ep0.c @@ -327,7 +327,8 @@ static int cdns3_ep0_feature_handle_device(struct
cdns3_device *priv_dev,
if (!set || (tmode & 0xff) != 0) return -EINVAL;
switch (tmode >> 8) {
tmode >>= 8;
switch (tmode) {
For me it's looks the same, but it's ok.
Pawel, please check the coming code, it uses tmode to set the register which is incorrect before shift. (line 336)
Rigth, thanks for clarification.
328 tmode >>= 8; 329 switch (tmode) { 330 case TEST_J: 331 case TEST_K: 332 case TEST_SE0_NAK: 333 case TEST_PACKET: 334 cdns3_set_register_bit(&priv_dev->regs->usb_cmd, 335 USB_CMD_STMODE | 336 USB_STS_TMODE_SEL(tmode - 1)); 337 break;
Peter
linux-stable-mirror@lists.linaro.org