mirror of https://gitee.com/openkylin/linux.git
r8152: fix the checking of the usb speed
When the usb speed of the RTL8152 is not high speed, the USB_DEV_STAT[2:1] should be equal to [0 1]. That is, the STAT_SPEED_FULL should be equal to 2. There is a easy way to check the usb speed by the speed field of the struct usb_device. Use it to replace the original metheod. Signed-off-by: Hayes Wang <hayeswang@realtek.com> Spotted-by: Andrey Utkin <andrey.krieger.utkin@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
e62f77579c
commit
a3cc465d95
|
@ -282,7 +282,7 @@
|
|||
/* USB_DEV_STAT */
|
||||
#define STAT_SPEED_MASK 0x0006
|
||||
#define STAT_SPEED_HIGH 0x0000
|
||||
#define STAT_SPEED_FULL 0x0001
|
||||
#define STAT_SPEED_FULL 0x0002
|
||||
|
||||
/* USB_TX_AGG */
|
||||
#define TX_AGG_MAX_THRESHOLD 0x03
|
||||
|
@ -2292,9 +2292,8 @@ static void r8152b_exit_oob(struct r8152 *tp)
|
|||
/* rx share fifo credit full threshold */
|
||||
ocp_write_dword(tp, MCU_TYPE_PLA, PLA_RXFIFO_CTRL0, RXFIFO_THR1_NORMAL);
|
||||
|
||||
ocp_data = ocp_read_word(tp, MCU_TYPE_USB, USB_DEV_STAT);
|
||||
ocp_data &= STAT_SPEED_MASK;
|
||||
if (ocp_data == STAT_SPEED_FULL) {
|
||||
if (tp->udev->speed == USB_SPEED_FULL ||
|
||||
tp->udev->speed == USB_SPEED_LOW) {
|
||||
/* rx share fifo credit near full threshold */
|
||||
ocp_write_dword(tp, MCU_TYPE_PLA, PLA_RXFIFO_CTRL1,
|
||||
RXFIFO_THR2_FULL);
|
||||
|
|
Loading…
Reference in New Issue