mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 23:24:38 +00:00
eth/r8152: reset bmu after disabling Tx/Rx
Reset bmu after disabling Tx/Rx. This is used to clear the FIFO of Tx/Rx. The remained data may be transferred after Tx/Rx is re-enabled. And it results in garbage data. Signed-off-by: Hayes Wang <hayeswang@realtek.com>
This commit is contained in:
parent
23e333a5c0
commit
d74a76234f
2 changed files with 20 additions and 1 deletions
|
@ -568,6 +568,17 @@ static void r8153_power_cut_en(struct r8152 *tp, bool enable)
|
|||
ocp_write_word(tp, MCU_TYPE_USB, USB_MISC_0, ocp_data);
|
||||
}
|
||||
|
||||
static void rtl_reset_bmu(struct r8152 *tp)
|
||||
{
|
||||
u8 ocp_data;
|
||||
|
||||
ocp_data = ocp_read_byte(tp, MCU_TYPE_USB, USB_BMU_RESET);
|
||||
ocp_data &= ~(BMU_RESET_EP_IN | BMU_RESET_EP_OUT);
|
||||
ocp_write_byte(tp, MCU_TYPE_USB, USB_BMU_RESET, ocp_data);
|
||||
ocp_data |= BMU_RESET_EP_IN | BMU_RESET_EP_OUT;
|
||||
ocp_write_byte(tp, MCU_TYPE_USB, USB_BMU_RESET, ocp_data);
|
||||
}
|
||||
|
||||
static int r8152_read_mac(struct r8152 *tp, unsigned char *macaddr)
|
||||
{
|
||||
int ret;
|
||||
|
@ -786,6 +797,7 @@ static void r8153_first_init(struct r8152 *tp)
|
|||
r8153_hw_phy_cfg(tp);
|
||||
|
||||
rtl8152_nic_reset(tp);
|
||||
rtl_reset_bmu(tp);
|
||||
|
||||
ocp_data = ocp_read_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL);
|
||||
ocp_data &= ~NOW_IS_OOB;
|
||||
|
@ -832,6 +844,7 @@ static void r8153_enter_oob(struct r8152 *tp)
|
|||
ocp_write_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL, ocp_data);
|
||||
|
||||
rtl_disable(tp);
|
||||
rtl_reset_bmu(tp);
|
||||
|
||||
rtl8152_reinit_ll(tp);
|
||||
|
||||
|
@ -873,6 +886,7 @@ static void rtl8153_disable(struct r8152 *tp)
|
|||
{
|
||||
r8153_disable_aldps(tp);
|
||||
rtl_disable(tp);
|
||||
rtl_reset_bmu(tp);
|
||||
}
|
||||
|
||||
static int rtl8152_set_speed(struct r8152 *tp, u8 autoneg, u16 speed, u8 duplex)
|
||||
|
|
|
@ -89,9 +89,10 @@
|
|||
#define USB_TX_DMA 0xd434
|
||||
#define USB_TOLERANCE 0xd490
|
||||
#define USB_LPM_CTRL 0xd41a
|
||||
#define USB_BMU_RESET 0xd4b0
|
||||
#define USB_UPS_CTRL 0xd800
|
||||
#define USB_MISC_0 0xd81a
|
||||
#define USB_POWER_CUT 0xd80a
|
||||
#define USB_MISC_0 0xd81a
|
||||
#define USB_AFE_CTRL2 0xd824
|
||||
#define USB_WDT11_CTRL 0xe43c
|
||||
#define USB_BP_BA 0xfc26
|
||||
|
@ -324,6 +325,10 @@
|
|||
#define TEST_MODE_DISABLE 0x00000001
|
||||
#define TX_SIZE_ADJUST1 0x00000100
|
||||
|
||||
/* USB_BMU_RESET */
|
||||
#define BMU_RESET_EP_IN 0x01
|
||||
#define BMU_RESET_EP_OUT 0x02
|
||||
|
||||
/* USB_UPS_CTRL */
|
||||
#define POWER_CUT 0x0100
|
||||
|
||||
|
|
Loading…
Reference in a new issue