All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH u-boot] eth/r8152: update the firmware
@ 2020-06-01  8:42 Hayes Wang
  2020-06-01 16:45 ` Marek Vasut
  0 siblings, 1 reply; 8+ messages in thread
From: Hayes Wang @ 2020-06-01  8:42 UTC (permalink / raw)
  To: u-boot

Update the firmware to improve compatibility for none-intel USB
host controller.

Signed-off-by: Hayes Wang <hayeswang@realtek.com>
---
 drivers/usb/eth/r8152.h    |   8 +
 drivers/usb/eth/r8152_fw.c | 481 ++++++++++++++++++++-----------------
 2 files changed, 265 insertions(+), 224 deletions(-)

diff --git a/drivers/usb/eth/r8152.h b/drivers/usb/eth/r8152.h
index c7f62b8b3e..10e0da8eb1 100644
--- a/drivers/usb/eth/r8152.h
+++ b/drivers/usb/eth/r8152.h
@@ -25,6 +25,7 @@
 #define PLA_BDC_CR		0xd1a0
 #define PLA_TEREDO_TIMER	0xd2cc
 #define PLA_REALWOW_TIMER	0xd2e8
+#define PLA_EXTRA_STATUS	0xd398
 #define PLA_LEDSEL		0xdd90
 #define PLA_LED_FEATURE		0xdd92
 #define PLA_PHYAR		0xde00
@@ -76,6 +77,7 @@
 #define USB_DEV_STAT		0xb808
 #define USB_CONNECT_TIMER	0xcbf8
 #define USB_BURST_SIZE		0xcfc0
+#define USB_FW_FIX_EN1		0xcfcc
 #define USB_USB_CTRL		0xd406
 #define USB_PHY_CTRL		0xd408
 #define USB_TX_AGG		0xd40a
@@ -285,6 +287,9 @@
 /* PLA_BOOT_CTRL */
 #define AUTOLOAD_DONE		0x0002
 
+/* PLA_EXTRA_STATUS */
+#define U3P3_CHECK_EN		BIT(7)
+
 /* USB_USB2PHY */
 #define USB2PHY_SUSPEND		0x0001
 #define USB2PHY_L1		0x0002
@@ -304,6 +309,9 @@
 #define STAT_SPEED_HIGH		0x0000
 #define STAT_SPEED_FULL		0x0002
 
+/* USB_FW_FIX_EN1 */
+#define FW_IP_RESET_EN		BIT(9)
+
 /* USB_TX_AGG */
 #define TX_AGG_MAX_THRESHOLD	0x03
 
diff --git a/drivers/usb/eth/r8152_fw.c b/drivers/usb/eth/r8152_fw.c
index 3ebbd533cc..f953b0384b 100644
--- a/drivers/usb/eth/r8152_fw.c
+++ b/drivers/usb/eth/r8152_fw.c
@@ -293,7 +293,7 @@ static u8 r8152b_pla_patch_a2[] = {
 	0x00, 0xbe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
 
 static u16 r8152b_pla_patch_a2_bp[] = {
-	0xfc28, 0x8000, 0xfc28, 0x17a5, 0xfc2a, 0x13ad,
+	0xfc26, 0x8000, 0xfc28, 0x17a5, 0xfc2a, 0x13ad,
 	0xfc2c, 0x184d, 0xfc2e, 0x01e1 };
 
 static u16 r8153_ram_code_a[] = {
@@ -321,181 +321,150 @@ static u16 r8153_ram_code_a[] = {
 	0xB438, 0x3591, 0xB436, 0xB820, 0xB438, 0x0210 };
 
 static u8 r8153_usb_patch_c[] = {
-	0x08, 0xe0, 0x0a, 0xe0, 0x14, 0xe0, 0x2e, 0xe0,
-	0x37, 0xe0, 0x3e, 0xe0, 0x6d, 0xe0, 0x78, 0xe0,
+	0x08, 0xe0, 0x0a, 0xe0, 0x14, 0xe0, 0x58, 0xe0,
+	0x64, 0xe0, 0x79, 0xe0, 0xab, 0xe0, 0xb6, 0xe0,
 	0x02, 0xc5, 0x00, 0xbd, 0x38, 0x3b, 0xdb, 0x49,
 	0x04, 0xf1, 0x06, 0xc3, 0x00, 0xbb, 0x5a, 0x02,
 	0x05, 0xc4, 0x03, 0xc3, 0x00, 0xbb, 0xa4, 0x04,
-	0x7e, 0x02, 0x30, 0xd4, 0x30, 0x18, 0x18, 0xc1,
-	0x0c, 0xe8, 0x17, 0xc6, 0xc7, 0x65, 0xd0, 0x49,
+	0x7e, 0x02, 0x30, 0xd4, 0x65, 0xc6, 0x66, 0x61,
+	0x92, 0x49, 0x12, 0xf1, 0x3e, 0xc0, 0x02, 0x61,
+	0x97, 0x49, 0x05, 0xf0, 0x3c, 0xc0, 0x00, 0x61,
+	0x90, 0x49, 0x0a, 0xf1, 0xca, 0x63, 0xb0, 0x49,
+	0x09, 0xf1, 0xb1, 0x49, 0x05, 0xf0, 0x32, 0xc0,
+	0x00, 0x71, 0x9e, 0x49, 0x03, 0xf1, 0xb0, 0x48,
+	0x05, 0xe0, 0x30, 0x48, 0xda, 0x61, 0x10, 0x48,
+	0xda, 0x89, 0x4a, 0xc6, 0xc0, 0x60, 0x85, 0x49,
+	0x03, 0xf0, 0x31, 0x48, 0x04, 0xe0, 0xb1, 0x48,
+	0xb2, 0x48, 0x0f, 0xe0, 0x30, 0x18, 0x1b, 0xc1,
+	0x0f, 0xe8, 0x1a, 0xc6, 0xc7, 0x65, 0xd0, 0x49,
 	0x05, 0xf0, 0x32, 0x48, 0x02, 0xc2, 0x00, 0xba,
 	0x3e, 0x16, 0x02, 0xc2, 0x00, 0xba, 0x48, 0x16,
-	0x02, 0xb4, 0x09, 0xc2, 0x40, 0x99, 0x0e, 0x48,
-	0x42, 0x98, 0x42, 0x70, 0x8e, 0x49, 0xfe, 0xf1,
-	0x02, 0xb0, 0x80, 0xff, 0xc0, 0xd4, 0xe4, 0x40,
-	0x20, 0xd4, 0xb0, 0x49, 0x04, 0xf0, 0x30, 0x18,
-	0x06, 0xc1, 0xef, 0xef, 0xfa, 0xc7, 0x02, 0xc0,
-	0x00, 0xb8, 0xd0, 0x10, 0xe4, 0x4b, 0x07, 0xc3,
-	0x70, 0x61, 0x12, 0x48, 0x70, 0x89, 0x02, 0xc3,
-	0x00, 0xbb, 0x9c, 0x15, 0x20, 0xd4, 0x2b, 0xc5,
-	0xa0, 0x77, 0x00, 0x1c, 0xa0, 0x9c, 0x28, 0xc5,
-	0xa0, 0x64, 0xc0, 0x48, 0xc1, 0x48, 0xc2, 0x48,
-	0xa0, 0x8c, 0xb1, 0x64, 0xc0, 0x48, 0xb1, 0x8c,
-	0x20, 0xc5, 0xa0, 0x64, 0x40, 0x48, 0x41, 0x48,
-	0xc2, 0x48, 0xa0, 0x8c, 0x19, 0xc5, 0xa4, 0x64,
-	0x44, 0x48, 0xa4, 0x8c, 0xb1, 0x64, 0x40, 0x48,
-	0xb1, 0x8c, 0x14, 0xc4, 0x80, 0x73, 0x13, 0xc4,
-	0x82, 0x9b, 0x11, 0x1b, 0x80, 0x9b, 0x0c, 0xc5,
-	0xa0, 0x64, 0x40, 0x48, 0x41, 0x48, 0x42, 0x48,
-	0xa0, 0x8c, 0x05, 0xc5, 0xa0, 0x9f, 0x02, 0xc5,
-	0x00, 0xbd, 0x6c, 0x3a, 0x1e, 0xfc, 0x10, 0xd8,
-	0x86, 0xd4, 0xf8, 0xcb, 0x20, 0xe4, 0x0a, 0xc0,
-	0x16, 0x61, 0x91, 0x48, 0x16, 0x89, 0x07, 0xc0,
-	0x11, 0x19, 0x0c, 0x89, 0x02, 0xc1, 0x00, 0xb9,
-	0x02, 0x06, 0x00, 0xd4, 0x40, 0xb4, 0xfe, 0xc0,
-	0x16, 0x61, 0x91, 0x48, 0x16, 0x89, 0xfb, 0xc0,
-	0x11, 0x19, 0x0c, 0x89, 0x02, 0xc1, 0x00, 0xb9,
-	0xd2, 0x05, 0x00, 0x00 };
+	0x02, 0xc2, 0x00, 0xba, 0x4a, 0x16, 0x02, 0xb4,
+	0x09, 0xc2, 0x40, 0x99, 0x0e, 0x48, 0x42, 0x98,
+	0x42, 0x70, 0x8e, 0x49, 0xfe, 0xf1, 0x02, 0xb0,
+	0x80, 0xff, 0xc0, 0xd4, 0xe4, 0x40, 0x20, 0xd4,
+	0xca, 0xcf, 0x00, 0xcf, 0x3c, 0xe4, 0x0c, 0xc0,
+	0x00, 0x63, 0xb5, 0x49, 0x09, 0xc0, 0x30, 0x18,
+	0x06, 0xc1, 0xea, 0xef, 0xf5, 0xc7, 0x02, 0xc0,
+	0x00, 0xb8, 0xd0, 0x10, 0xe4, 0x4b, 0x00, 0xd8,
+	0x14, 0xc3, 0x60, 0x61, 0x90, 0x49, 0x06, 0xf0,
+	0x11, 0xc3, 0x70, 0x61, 0x12, 0x48, 0x70, 0x89,
+	0x08, 0xe0, 0x0a, 0xc6, 0xd4, 0x61, 0x93, 0x48,
+	0xd4, 0x89, 0x02, 0xc1, 0x00, 0xb9, 0x72, 0x17,
+	0x02, 0xc1, 0x00, 0xb9, 0x9c, 0x15, 0x00, 0xd8,
+	0xef, 0xcf, 0x20, 0xd4, 0x30, 0x18, 0xe7, 0xc1,
+	0xcb, 0xef, 0x2b, 0xc5, 0xa0, 0x77, 0x00, 0x1c,
+	0xa0, 0x9c, 0x28, 0xc5, 0xa0, 0x64, 0xc0, 0x48,
+	0xc1, 0x48, 0xc2, 0x48, 0xa0, 0x8c, 0xb1, 0x64,
+	0xc0, 0x48, 0xb1, 0x8c, 0x20, 0xc5, 0xa0, 0x64,
+	0x40, 0x48, 0x41, 0x48, 0xc2, 0x48, 0xa0, 0x8c,
+	0x19, 0xc5, 0xa4, 0x64, 0x44, 0x48, 0xa4, 0x8c,
+	0xb1, 0x64, 0x40, 0x48, 0xb1, 0x8c, 0x14, 0xc4,
+	0x80, 0x73, 0x13, 0xc4, 0x82, 0x9b, 0x11, 0x1b,
+	0x80, 0x9b, 0x0c, 0xc5, 0xa0, 0x64, 0x40, 0x48,
+	0x41, 0x48, 0x42, 0x48, 0xa0, 0x8c, 0x05, 0xc5,
+	0xa0, 0x9f, 0x02, 0xc5, 0x00, 0xbd, 0x6c, 0x3a,
+	0x1e, 0xfc, 0x10, 0xd8, 0x86, 0xd4, 0xf8, 0xcb,
+	0x20, 0xe4, 0x0a, 0xc0, 0x16, 0x61, 0x91, 0x48,
+	0x16, 0x89, 0x07, 0xc0, 0x11, 0x19, 0x0c, 0x89,
+	0x02, 0xc1, 0x00, 0xb9, 0x02, 0x06, 0x00, 0xd4,
+	0x40, 0xb4, 0xfe, 0xc0, 0x16, 0x61, 0x91, 0x48,
+	0x16, 0x89, 0xfb, 0xc0, 0x11, 0x19, 0x0c, 0x89,
+	0x02, 0xc1, 0x00, 0xb9, 0xd2, 0x05, 0x00, 0x00 };
 
 static u16 r8153_usb_patch_c_bp[] = {
-	0xfc26, 0xa000, 0xfc28, 0x3b34, 0xfc2a, 0x027c, 0xfc2c, 0x162c,
-	0xfc2e, 0x10ce, 0xfc30, 0x0000, 0xfc32, 0x3a28, 0xfc34, 0x05f8,
-	0xfc36, 0x05c8 };
+	0xfc26, 0xa000, 0xfc28, 0x3b34, 0xfc2a, 0x027c, 0xfc2c, 0x15de,
+	0xfc2e, 0x10ce, 0xfc30, 0x1adc, 0xfc32, 0x3a28, 0xfc34, 0x05f8,
+	0xfc36, 0x05c8, 0xfc38, 0x00f3 };
 
 static u8 r8153_pla_patch_c[] = {
-	0x08, 0xe0, 0xea, 0xe0, 0xf2, 0xe0, 0x04, 0xe1,
-	0x06, 0xe1, 0x08, 0xe1, 0x40, 0xe1, 0xf1, 0xe1,
-	0x14, 0xc2, 0x40, 0x73, 0xba, 0x48, 0x40, 0x9b,
-	0x11, 0xc2, 0x40, 0x73, 0xb0, 0x49, 0x17, 0xf0,
-	0xbf, 0x49, 0x03, 0xf1, 0x09, 0xc5, 0x00, 0xbd,
-	0xb1, 0x49, 0x11, 0xf0, 0xb1, 0x48, 0x40, 0x9b,
-	0x02, 0xc2, 0x00, 0xba, 0xde, 0x18, 0x00, 0xe0,
-	0x1e, 0xfc, 0xbc, 0xc0, 0xf0, 0xc0, 0xde, 0xe8,
-	0x00, 0x80, 0x00, 0x20, 0x2c, 0x75, 0xd4, 0x49,
-	0x12, 0xf1, 0x32, 0xe0, 0xf8, 0xc2, 0x46, 0x71,
-	0xf7, 0xc2, 0x40, 0x73, 0xbe, 0x49, 0x03, 0xf1,
-	0xf5, 0xc7, 0x02, 0xe0, 0xf2, 0xc7, 0x4f, 0x30,
-	0x26, 0x62, 0xa1, 0x49, 0xf0, 0xf1, 0x22, 0x72,
-	0xa0, 0x49, 0xed, 0xf1, 0x25, 0x25, 0x18, 0x1f,
-	0x97, 0x30, 0x91, 0x30, 0x36, 0x9a, 0x2c, 0x75,
-	0x3c, 0xc3, 0x60, 0x73, 0xb1, 0x49, 0x0d, 0xf1,
-	0xdc, 0x21, 0xbc, 0x25, 0x30, 0xc6, 0xc0, 0x77,
-	0x04, 0x13, 0x21, 0xf0, 0x03, 0x13, 0x22, 0xf0,
-	0x02, 0x13, 0x23, 0xf0, 0x01, 0x13, 0x24, 0xf0,
-	0x08, 0x13, 0x08, 0xf1, 0x2e, 0x73, 0xba, 0x21,
-	0xbd, 0x25, 0x05, 0x13, 0x03, 0xf1, 0x24, 0xc5,
-	0x00, 0xbd, 0xd4, 0x49, 0x03, 0xf1, 0x1c, 0xc5,
-	0x00, 0xbd, 0xc4, 0xc6, 0xc6, 0x67, 0x2e, 0x75,
-	0xd7, 0x22, 0xdd, 0x26, 0x05, 0x15, 0x1b, 0xf0,
-	0x14, 0xc6, 0x00, 0xbe, 0x13, 0xc5, 0x00, 0xbd,
-	0x12, 0xc5, 0x00, 0xbd, 0xf1, 0x49, 0xfb, 0xf1,
-	0xef, 0xe7, 0xf4, 0x49, 0xfa, 0xf1, 0xec, 0xe7,
-	0xf3, 0x49, 0xf7, 0xf1, 0xe9, 0xe7, 0xf2, 0x49,
-	0xf4, 0xf1, 0xe6, 0xe7, 0xb6, 0xc0, 0x50, 0x14,
-	0x90, 0x13, 0xbc, 0x13, 0xf2, 0x14, 0x00, 0xa0,
-	0xa0, 0xd1, 0x00, 0x00, 0xc0, 0x75, 0xd0, 0x49,
-	0x46, 0xf0, 0x26, 0x72, 0xa7, 0x49, 0x43, 0xf0,
-	0x22, 0x72, 0x25, 0x25, 0x20, 0x1f, 0x97, 0x30,
-	0x91, 0x30, 0x40, 0x73, 0xf3, 0xc4, 0x1c, 0x40,
-	0x04, 0xf0, 0xd7, 0x49, 0x05, 0xf1, 0x37, 0xe0,
-	0x53, 0x48, 0xc0, 0x9d, 0x08, 0x02, 0x40, 0x66,
-	0x64, 0x27, 0x06, 0x16, 0x30, 0xf1, 0x46, 0x63,
-	0x3b, 0x13, 0x2d, 0xf1, 0x34, 0x9b, 0x18, 0x1b,
-	0x93, 0x30, 0x2b, 0xc3, 0x10, 0x1c, 0x2b, 0xe8,
-	0x01, 0x14, 0x25, 0xf1, 0x00, 0x1d, 0x26, 0x1a,
-	0x8a, 0x30, 0x22, 0x73, 0xb5, 0x25, 0x0e, 0x0b,
-	0x00, 0x1c, 0x2c, 0xe8, 0x1f, 0xc7, 0x27, 0x40,
-	0x1a, 0xf1, 0x38, 0xe8, 0x32, 0x1f, 0x8f, 0x30,
-	0x08, 0x1b, 0x24, 0xe8, 0x36, 0x72, 0x46, 0x77,
-	0x00, 0x17, 0x0d, 0xf0, 0x13, 0xc3, 0x1f, 0x40,
-	0x03, 0xf1, 0x00, 0x1f, 0x46, 0x9f, 0x44, 0x77,
-	0x9f, 0x44, 0x5f, 0x44, 0x17, 0xe8, 0x0a, 0xc7,
-	0x27, 0x40, 0x05, 0xf1, 0x02, 0xc3, 0x00, 0xbb,
-	0xbe, 0x1a, 0x74, 0x14, 0xff, 0xc7, 0x00, 0xbf,
-	0xb8, 0xcd, 0xff, 0xff, 0x02, 0x0c, 0x54, 0xa5,
-	0xdc, 0xa5, 0x2f, 0x40, 0x05, 0xf1, 0x00, 0x14,
-	0xfa, 0xf1, 0x01, 0x1c, 0x02, 0xe0, 0x00, 0x1c,
-	0x80, 0xff, 0xb0, 0x49, 0x04, 0xf0, 0x01, 0x0b,
-	0xd3, 0xa1, 0x03, 0xe0, 0x02, 0x0b, 0xd3, 0xa5,
-	0x27, 0x31, 0x20, 0x37, 0x02, 0x0b, 0xd3, 0xa5,
-	0x27, 0x31, 0x20, 0x37, 0x00, 0x13, 0xfb, 0xf1,
-	0x80, 0xff, 0x22, 0x73, 0xb5, 0x25, 0x18, 0x1e,
-	0xde, 0x30, 0xd9, 0x30, 0x64, 0x72, 0x11, 0x1e,
-	0x68, 0x23, 0x16, 0x31, 0x80, 0xff, 0x08, 0xc2,
-	0x40, 0x73, 0x3a, 0x48, 0x40, 0x9b, 0x06, 0xff,
-	0x02, 0xc6, 0x00, 0xbe, 0xcc, 0x17, 0x1e, 0xfc,
-	0x2c, 0x75, 0xdc, 0x21, 0xbc, 0x25, 0x04, 0x13,
-	0x0b, 0xf0, 0x03, 0x13, 0x09, 0xf0, 0x02, 0x13,
-	0x07, 0xf0, 0x01, 0x13, 0x05, 0xf0, 0x08, 0x13,
-	0x03, 0xf0, 0x04, 0xc3, 0x00, 0xbb, 0x03, 0xc3,
-	0x00, 0xbb, 0x50, 0x17, 0x3a, 0x17, 0x02, 0xc6,
-	0x00, 0xbe, 0x00, 0x00, 0x02, 0xc6, 0x00, 0xbe,
-	0x00, 0x00, 0x33, 0xc5, 0xa0, 0x74, 0xc0, 0x49,
-	0x1f, 0xf0, 0x30, 0xc5, 0xa0, 0x73, 0x00, 0x13,
-	0x04, 0xf1, 0xa2, 0x73, 0x00, 0x13, 0x14, 0xf0,
-	0x28, 0xc5, 0xa0, 0x74, 0xc8, 0x49, 0x1b, 0xf1,
-	0x26, 0xc5, 0xa0, 0x76, 0xa2, 0x74, 0x01, 0x06,
-	0x20, 0x37, 0xa0, 0x9e, 0xa2, 0x9c, 0x1e, 0xc5,
-	0xa2, 0x73, 0x23, 0x40, 0x10, 0xf8, 0x04, 0xf3,
-	0xa0, 0x73, 0x33, 0x40, 0x0c, 0xf8, 0x15, 0xc5,
-	0xa0, 0x74, 0x41, 0x48, 0xa0, 0x9c, 0x14, 0xc5,
-	0xa0, 0x76, 0x62, 0x48, 0xe0, 0x48, 0xa0, 0x9e,
-	0x10, 0xc6, 0x00, 0xbe, 0x0a, 0xc5, 0xa0, 0x74,
-	0x48, 0x48, 0xa0, 0x9c, 0x0b, 0xc5, 0x20, 0x1e,
-	0xa0, 0x9e, 0xe5, 0x48, 0xa0, 0x9e, 0xf0, 0xe7,
-	0xbc, 0xc0, 0xc8, 0xd2, 0xcc, 0xd2, 0x28, 0xe4,
-	0xfa, 0x01, 0xf0, 0xc0, 0x18, 0x89, 0x00, 0x1d,
-	0x43, 0xc3, 0x62, 0x62, 0xa0, 0x49, 0x06, 0xf0,
-	0x41, 0xc0, 0x02, 0x71, 0x60, 0x99, 0x3f, 0xc1,
-	0x03, 0xe0, 0x3c, 0xc0, 0x3d, 0xc1, 0x02, 0x99,
-	0x00, 0x61, 0x67, 0x11, 0x3d, 0xf1, 0x69, 0x33,
-	0x34, 0xc0, 0x28, 0x40, 0xf7, 0xf1, 0x35, 0xc0,
-	0x00, 0x19, 0x81, 0x1b, 0x89, 0xe8, 0x32, 0xc0,
-	0x04, 0x1a, 0x84, 0x1b, 0x85, 0xe8, 0x7a, 0xe8,
-	0xa3, 0x49, 0xfe, 0xf0, 0x2c, 0xc0, 0x76, 0xe8,
-	0xa1, 0x48, 0x29, 0xc0, 0x84, 0x1b, 0x7c, 0xe8,
-	0x00, 0x1d, 0x69, 0x33, 0x00, 0x1e, 0x01, 0x06,
-	0xff, 0x18, 0x30, 0x40, 0xfd, 0xf1, 0x7f, 0xc0,
-	0x00, 0x76, 0x2e, 0x40, 0xf7, 0xf1, 0x21, 0x48,
-	0x1a, 0xc0, 0x84, 0x1b, 0x6d, 0xe8, 0x76, 0xc0,
-	0x61, 0xe8, 0xa1, 0x49, 0xfd, 0xf0, 0x12, 0xc0,
-	0x00, 0x1a, 0x84, 0x1b, 0x65, 0xe8, 0x5a, 0xe8,
-	0xa5, 0x49, 0xfe, 0xf0, 0x0a, 0xc0, 0x01, 0x19,
-	0x81, 0x1b, 0x5e, 0xe8, 0x48, 0xe0, 0x8c, 0xd3,
-	0xb8, 0x0b, 0x50, 0xe8, 0x83, 0x00, 0x82, 0x00,
-	0x20, 0xb4, 0x10, 0xd8, 0x84, 0xd4, 0xfa, 0xc0,
-	0x00, 0x61, 0x9c, 0x20, 0x9c, 0x24, 0x06, 0x11,
-	0x06, 0xf1, 0x5d, 0xc0, 0x00, 0x61, 0x11, 0x48,
-	0x00, 0x89, 0x35, 0xe0, 0x00, 0x11, 0x02, 0xf1,
-	0x03, 0xe0, 0x04, 0x11, 0x06, 0xf1, 0x53, 0xc0,
-	0x00, 0x61, 0x92, 0x48, 0x00, 0x89, 0x2b, 0xe0,
-	0x05, 0x11, 0x08, 0xf1, 0x4c, 0xc0, 0x00, 0x61,
-	0x91, 0x49, 0x04, 0xf0, 0x91, 0x48, 0x00, 0x89,
-	0x11, 0xe0, 0xdc, 0xc0, 0x00, 0x61, 0x98, 0x20,
-	0x98, 0x24, 0x25, 0x11, 0x1c, 0xf1, 0x40, 0xc0,
-	0x25, 0xe8, 0x95, 0x49, 0x18, 0xf0, 0xd2, 0xc0,
-	0x00, 0x61, 0x98, 0x20, 0x98, 0x24, 0x25, 0x11,
-	0x12, 0xf1, 0x35, 0xc0, 0x00, 0x61, 0x92, 0x49,
-	0x0e, 0xf1, 0x12, 0x48, 0x00, 0x89, 0x2d, 0xc0,
-	0x00, 0x19, 0x00, 0x89, 0x2b, 0xc0, 0x01, 0x89,
-	0x27, 0xc0, 0x10, 0xe8, 0x25, 0xc0, 0x12, 0x48,
-	0x81, 0x1b, 0x16, 0xe8, 0xb9, 0xc3, 0x62, 0x62,
-	0xa0, 0x49, 0x05, 0xf0, 0xb5, 0xc3, 0x60, 0x71,
-	0xb5, 0xc0, 0x02, 0x99, 0x02, 0xc0, 0x00, 0xb8,
-	0xd6, 0x07, 0x13, 0xc4, 0x84, 0x98, 0x00, 0x1b,
-	0x86, 0x8b, 0x86, 0x73, 0xbf, 0x49, 0xfe, 0xf1,
-	0x80, 0x71, 0x82, 0x72, 0x80, 0xff, 0x09, 0xc4,
-	0x84, 0x98, 0x80, 0x99, 0x82, 0x9a, 0x86, 0x8b,
-	0x86, 0x73, 0xbf, 0x49, 0xfe, 0xf1, 0x80, 0xff,
-	0x08, 0xea, 0x10, 0xd4, 0x88, 0xd3, 0x30, 0xd4,
-	0x10, 0xc0, 0x12, 0xe8, 0x8a, 0xd3, 0x00, 0xd8,
-	0x02, 0xc0, 0x00, 0xb8, 0xe0, 0x08, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
+	0x5d, 0xe0, 0x07, 0xe0, 0x0f, 0xe0, 0x5a, 0xe0,
+	0x59, 0xe0, 0x1f, 0xe0, 0x57, 0xe0, 0x3e, 0xe1,
+	0x08, 0xc2, 0x40, 0x73, 0x3a, 0x48, 0x40, 0x9b,
+	0x06, 0xff, 0x02, 0xc6, 0x00, 0xbe, 0xcc, 0x17,
+	0x1e, 0xfc, 0x2c, 0x75, 0xdc, 0x21, 0xbc, 0x25,
+	0x04, 0x13, 0x0b, 0xf0, 0x03, 0x13, 0x09, 0xf0,
+	0x02, 0x13, 0x07, 0xf0, 0x01, 0x13, 0x05, 0xf0,
+	0x08, 0x13, 0x03, 0xf0, 0x04, 0xc3, 0x00, 0xbb,
+	0x03, 0xc3, 0x00, 0xbb, 0x50, 0x17, 0x3a, 0x17,
+	0x33, 0xc5, 0xa0, 0x74, 0xc0, 0x49, 0x1f, 0xf0,
+	0x30, 0xc5, 0xa0, 0x73, 0x00, 0x13, 0x04, 0xf1,
+	0xa2, 0x73, 0x00, 0x13, 0x14, 0xf0, 0x28, 0xc5,
+	0xa0, 0x74, 0xc8, 0x49, 0x1b, 0xf1, 0x26, 0xc5,
+	0xa0, 0x76, 0xa2, 0x74, 0x01, 0x06, 0x20, 0x37,
+	0xa0, 0x9e, 0xa2, 0x9c, 0x1e, 0xc5, 0xa2, 0x73,
+	0x23, 0x40, 0x10, 0xf8, 0x04, 0xf3, 0xa0, 0x73,
+	0x33, 0x40, 0x0c, 0xf8, 0x15, 0xc5, 0xa0, 0x74,
+	0x41, 0x48, 0xa0, 0x9c, 0x14, 0xc5, 0xa0, 0x76,
+	0x62, 0x48, 0xe0, 0x48, 0xa0, 0x9e, 0x10, 0xc6,
+	0x00, 0xbe, 0x0a, 0xc5, 0xa0, 0x74, 0x48, 0x48,
+	0xa0, 0x9c, 0x0b, 0xc5, 0x20, 0x1e, 0xa0, 0x9e,
+	0xe5, 0x48, 0xa0, 0x9e, 0xf0, 0xe7, 0xbc, 0xc0,
+	0xc8, 0xd2, 0xcc, 0xd2, 0x28, 0xe4, 0xfa, 0x01,
+	0xf0, 0xc0, 0x18, 0x89, 0x74, 0xc0, 0xcd, 0xe8,
+	0x80, 0x76, 0x00, 0x1d, 0x6e, 0xc3, 0x66, 0x62,
+	0xa0, 0x49, 0x06, 0xf0, 0x64, 0xc0, 0x02, 0x71,
+	0x60, 0x99, 0x62, 0xc1, 0x03, 0xe0, 0x5f, 0xc0,
+	0x60, 0xc1, 0x02, 0x99, 0x00, 0x61, 0x0f, 0x1b,
+	0x59, 0x41, 0x03, 0x13, 0x18, 0xf1, 0xe4, 0x49,
+	0x20, 0xf1, 0xe5, 0x49, 0x1e, 0xf0, 0x59, 0xc6,
+	0xd0, 0x73, 0xb7, 0x49, 0x08, 0xf0, 0x01, 0x0b,
+	0x80, 0x13, 0x03, 0xf0, 0xd0, 0x8b, 0x03, 0xe0,
+	0x3f, 0x48, 0xd0, 0x9b, 0x51, 0xc0, 0x10, 0x1a,
+	0x84, 0x1b, 0xb1, 0xe8, 0x4b, 0xc2, 0x40, 0x63,
+	0x30, 0x48, 0x0a, 0xe0, 0xe5, 0x49, 0x09, 0xf0,
+	0x47, 0xc0, 0x00, 0x1a, 0x84, 0x1b, 0xa7, 0xe8,
+	0x41, 0xc2, 0x40, 0x63, 0xb0, 0x48, 0x40, 0x8b,
+	0x67, 0x11, 0x3f, 0xf1, 0x69, 0x33, 0x32, 0xc0,
+	0x28, 0x40, 0xd2, 0xf1, 0x33, 0xc0, 0x00, 0x19,
+	0x81, 0x1b, 0x99, 0xe8, 0x30, 0xc0, 0x04, 0x1a,
+	0x84, 0x1b, 0x95, 0xe8, 0x8a, 0xe8, 0xa3, 0x49,
+	0xfe, 0xf0, 0x2a, 0xc0, 0x86, 0xe8, 0xa1, 0x48,
+	0x84, 0x1b, 0x8d, 0xe8, 0x00, 0x1d, 0x69, 0x33,
+	0x00, 0x1e, 0x01, 0x06, 0xff, 0x18, 0x30, 0x40,
+	0xfd, 0xf1, 0x1f, 0xc0, 0x00, 0x76, 0x2e, 0x40,
+	0xf7, 0xf1, 0x21, 0x48, 0x19, 0xc0, 0x84, 0x1b,
+	0x7e, 0xe8, 0x74, 0x08, 0x72, 0xe8, 0xa1, 0x49,
+	0xfd, 0xf0, 0x11, 0xc0, 0x00, 0x1a, 0x84, 0x1b,
+	0x76, 0xe8, 0x6b, 0xe8, 0xa5, 0x49, 0xfe, 0xf0,
+	0x09, 0xc0, 0x01, 0x19, 0x81, 0x1b, 0x6f, 0xe8,
+	0x5a, 0xe0, 0xb8, 0x0b, 0x50, 0xe8, 0x83, 0x00,
+	0x82, 0x00, 0x20, 0xb4, 0x10, 0xd8, 0x84, 0xd4,
+	0x88, 0xd3, 0x10, 0xe0, 0x00, 0xd8, 0x24, 0xd4,
+	0xf9, 0xc0, 0x57, 0xe8, 0x48, 0x33, 0xf3, 0xc0,
+	0x00, 0x61, 0x6a, 0xc0, 0x47, 0x11, 0x03, 0xf0,
+	0x57, 0x11, 0x05, 0xf1, 0x00, 0x61, 0x17, 0x48,
+	0x00, 0x89, 0x41, 0xe0, 0x9c, 0x20, 0x9c, 0x24,
+	0xd0, 0x49, 0x09, 0xf0, 0x04, 0x11, 0x07, 0xf1,
+	0x00, 0x61, 0x97, 0x49, 0x38, 0xf0, 0x97, 0x48,
+	0x00, 0x89, 0x2b, 0xe0, 0x00, 0x11, 0x05, 0xf1,
+	0x00, 0x61, 0x92, 0x48, 0x00, 0x89, 0x2f, 0xe0,
+	0x06, 0x11, 0x05, 0xf1, 0x00, 0x61, 0x11, 0x48,
+	0x00, 0x89, 0x29, 0xe0, 0x05, 0x11, 0x0f, 0xf1,
+	0x00, 0x61, 0x93, 0x49, 0x1a, 0xf1, 0x91, 0x49,
+	0x0a, 0xf0, 0x91, 0x48, 0x00, 0x89, 0x0f, 0xe0,
+	0xc6, 0xc0, 0x00, 0x61, 0x98, 0x20, 0x98, 0x24,
+	0x25, 0x11, 0x80, 0xff, 0xfa, 0xef, 0x17, 0xf1,
+	0x38, 0xc0, 0x1f, 0xe8, 0x95, 0x49, 0x13, 0xf0,
+	0xf4, 0xef, 0x11, 0xf1, 0x31, 0xc0, 0x00, 0x61,
+	0x92, 0x49, 0x0d, 0xf1, 0x12, 0x48, 0x00, 0x89,
+	0x29, 0xc0, 0x00, 0x19, 0x00, 0x89, 0x27, 0xc0,
+	0x01, 0x89, 0x23, 0xc0, 0x0e, 0xe8, 0x12, 0x48,
+	0x81, 0x1b, 0x15, 0xe8, 0xae, 0xc3, 0x66, 0x62,
+	0xa0, 0x49, 0x04, 0xf0, 0x64, 0x71, 0xa3, 0xc0,
+	0x02, 0x99, 0x02, 0xc0, 0x00, 0xb8, 0xd6, 0x07,
+	0x13, 0xc4, 0x84, 0x98, 0x00, 0x1b, 0x86, 0x8b,
+	0x86, 0x73, 0xbf, 0x49, 0xfe, 0xf1, 0x80, 0x71,
+	0x82, 0x72, 0x80, 0xff, 0x09, 0xc4, 0x84, 0x98,
+	0x80, 0x99, 0x82, 0x9a, 0x86, 0x8b, 0x86, 0x73,
+	0xbf, 0x49, 0xfe, 0xf1, 0x80, 0xff, 0x08, 0xea,
+	0x30, 0xd4, 0x10, 0xc0, 0x12, 0xe8, 0x8a, 0xd3,
+	0x00, 0xd8, 0x02, 0xc6, 0x00, 0xbe, 0xe0, 0x08 };
 
 static u16 r8153_pla_patch_c_bp[] = {
 	0xfc26, 0x8000, 0xfc28, 0x1306, 0xfc2a, 0x17ca, 0xfc2c, 0x171e,
 	0xfc2e, 0x0000, 0xfc30, 0x0000, 0xfc32, 0x01b4, 0xfc34, 0x07d4,
-	0xfc36, 0x0894, 0xfc38, 0x00e7 };
+	0xfc36, 0x0894, 0xfc38, 0x00e6 };
 
 static u16 r8153_ram_code_bc[] = {
 	0xB436, 0xB820, 0xB438, 0x0290, 0xB436, 0xA012, 0xB438, 0x0000,
@@ -560,7 +529,7 @@ static u16 r8153_usb_patch_b_bp[] = {
 
 static u8 r8153_pla_patch_b[] = {
 	0x08, 0xe0, 0xea, 0xe0, 0xf2, 0xe0, 0x04, 0xe1,
-	0x09, 0xe1, 0x0e, 0xe1, 0x46, 0xe1, 0xf3, 0xe1,
+	0x09, 0xe1, 0x0e, 0xe1, 0x46, 0xe1, 0xf7, 0xe1,
 	0x14, 0xc2, 0x40, 0x73, 0xba, 0x48, 0x40, 0x9b,
 	0x11, 0xc2, 0x40, 0x73, 0xb0, 0x49, 0x17, 0xf0,
 	0xbf, 0x49, 0x03, 0xf1, 0x09, 0xc5, 0x00, 0xbd,
@@ -642,51 +611,51 @@ static u8 r8153_pla_patch_b[] = {
 	0x0b, 0xc5, 0x20, 0x1e, 0xa0, 0x9e, 0xe5, 0x48,
 	0xa0, 0x9e, 0xf0, 0xe7, 0xbc, 0xc0, 0xc8, 0xd2,
 	0xcc, 0xd2, 0x28, 0xe4, 0xe6, 0x01, 0xf0, 0xc0,
-	0x18, 0x89, 0x00, 0x1d, 0x3c, 0xc3, 0x60, 0x71,
+	0x18, 0x89, 0x00, 0x1d, 0x3c, 0xc3, 0x64, 0x71,
 	0x3c, 0xc0, 0x02, 0x99, 0x00, 0x61, 0x67, 0x11,
 	0x3c, 0xf1, 0x69, 0x33, 0x35, 0xc0, 0x28, 0x40,
 	0xf6, 0xf1, 0x34, 0xc0, 0x00, 0x19, 0x81, 0x1b,
-	0x8c, 0xe8, 0x31, 0xc0, 0x04, 0x1a, 0x84, 0x1b,
-	0x88, 0xe8, 0x7d, 0xe8, 0xa3, 0x49, 0xfe, 0xf0,
-	0x2b, 0xc0, 0x79, 0xe8, 0xa1, 0x48, 0x28, 0xc0,
-	0x84, 0x1b, 0x7f, 0xe8, 0x00, 0x1d, 0x69, 0x33,
+	0x91, 0xe8, 0x31, 0xc0, 0x04, 0x1a, 0x84, 0x1b,
+	0x8d, 0xe8, 0x82, 0xe8, 0xa3, 0x49, 0xfe, 0xf0,
+	0x2b, 0xc0, 0x7e, 0xe8, 0xa1, 0x48, 0x28, 0xc0,
+	0x84, 0x1b, 0x84, 0xe8, 0x00, 0x1d, 0x69, 0x33,
 	0x00, 0x1e, 0x01, 0x06, 0xff, 0x18, 0x30, 0x40,
-	0xfd, 0xf1, 0x18, 0xc0, 0x00, 0x76, 0x2e, 0x40,
+	0xfd, 0xf1, 0x19, 0xc0, 0x00, 0x76, 0x2e, 0x40,
 	0xf7, 0xf1, 0x21, 0x48, 0x19, 0xc0, 0x84, 0x1b,
-	0x70, 0xe8, 0x79, 0xc0, 0x64, 0xe8, 0xa1, 0x49,
+	0x75, 0xe8, 0x10, 0xc0, 0x69, 0xe8, 0xa1, 0x49,
 	0xfd, 0xf0, 0x11, 0xc0, 0x00, 0x1a, 0x84, 0x1b,
-	0x68, 0xe8, 0x5d, 0xe8, 0xa5, 0x49, 0xfe, 0xf0,
-	0x09, 0xc0, 0x01, 0x19, 0x81, 0x1b, 0x61, 0xe8,
-	0x4f, 0xe0, 0x88, 0xd3, 0x8c, 0xd3, 0xb8, 0x0b,
+	0x6d, 0xe8, 0x62, 0xe8, 0xa5, 0x49, 0xfe, 0xf0,
+	0x09, 0xc0, 0x01, 0x19, 0x81, 0x1b, 0x66, 0xe8,
+	0x54, 0xe0, 0x10, 0xd4, 0x88, 0xd3, 0xb8, 0x0b,
 	0x50, 0xe8, 0x20, 0xb4, 0x10, 0xd8, 0x84, 0xd4,
-	0xfc, 0xc0, 0x00, 0x61, 0x9c, 0x20, 0x9c, 0x24,
-	0x06, 0x11, 0x06, 0xf1, 0x60, 0xc0, 0x00, 0x61,
-	0x11, 0x48, 0x00, 0x89, 0x3d, 0xe0, 0x00, 0x11,
-	0x02, 0xf1, 0x03, 0xe0, 0x04, 0x11, 0x06, 0xf1,
-	0x56, 0xc0, 0x00, 0x61, 0x92, 0x48, 0x00, 0x89,
-	0x33, 0xe0, 0x05, 0x11, 0x08, 0xf1, 0x4f, 0xc0,
-	0x00, 0x61, 0x91, 0x49, 0x04, 0xf0, 0x91, 0x48,
-	0x00, 0x89, 0x11, 0xe0, 0xde, 0xc0, 0x00, 0x61,
-	0x98, 0x20, 0x98, 0x24, 0x25, 0x11, 0x24, 0xf1,
-	0x45, 0xc0, 0x29, 0xe8, 0x95, 0x49, 0x20, 0xf0,
-	0xd4, 0xc0, 0x00, 0x61, 0x98, 0x20, 0x98, 0x24,
-	0x25, 0x11, 0x1a, 0xf1, 0x38, 0xc0, 0x00, 0x61,
-	0x92, 0x49, 0x16, 0xf1, 0x12, 0x48, 0x00, 0x89,
-	0x30, 0xc0, 0x00, 0x19, 0x00, 0x89, 0x2e, 0xc0,
-	0x01, 0x89, 0x2e, 0xc0, 0x04, 0x19, 0x81, 0x1b,
-	0x1c, 0xe8, 0x2b, 0xc0, 0x14, 0x19, 0x81, 0x1b,
-	0x18, 0xe8, 0x22, 0xc0, 0x0c, 0xe8, 0x20, 0xc0,
-	0x12, 0x48, 0x81, 0x1b, 0x12, 0xe8, 0xb3, 0xc3,
-	0x62, 0x71, 0xb3, 0xc0, 0x02, 0x99, 0x02, 0xc0,
-	0x00, 0xb8, 0x96, 0x07, 0x13, 0xc4, 0x84, 0x98,
-	0x00, 0x1b, 0x86, 0x8b, 0x86, 0x73, 0xbf, 0x49,
-	0xfe, 0xf1, 0x80, 0x71, 0x82, 0x72, 0x80, 0xff,
-	0x09, 0xc4, 0x84, 0x98, 0x80, 0x99, 0x82, 0x9a,
-	0x86, 0x8b, 0x86, 0x73, 0xbf, 0x49, 0xfe, 0xf1,
-	0x80, 0xff, 0x08, 0xea, 0x10, 0xd4, 0x30, 0xd4,
+	0xfd, 0xc0, 0x52, 0xe8, 0x48, 0x33, 0xf9, 0xc0,
+	0x00, 0x61, 0x9c, 0x20, 0x9c, 0x24, 0xd0, 0x49,
+	0x04, 0xf0, 0x04, 0x11, 0x02, 0xf1, 0x03, 0xe0,
+	0x00, 0x11, 0x06, 0xf1, 0x5c, 0xc0, 0x00, 0x61,
+	0x92, 0x48, 0x00, 0x89, 0x3a, 0xe0, 0x06, 0x11,
+	0x06, 0xf1, 0x55, 0xc0, 0x00, 0x61, 0x11, 0x48,
+	0x00, 0x89, 0x33, 0xe0, 0x05, 0x11, 0x08, 0xf1,
+	0x4e, 0xc0, 0x00, 0x61, 0x91, 0x49, 0x04, 0xf0,
+	0x91, 0x48, 0x00, 0x89, 0x11, 0xe0, 0xd9, 0xc0,
+	0x00, 0x61, 0x98, 0x20, 0x98, 0x24, 0x25, 0x11,
+	0x24, 0xf1, 0x44, 0xc0, 0x29, 0xe8, 0x95, 0x49,
+	0x20, 0xf0, 0xcf, 0xc0, 0x00, 0x61, 0x98, 0x20,
+	0x98, 0x24, 0x25, 0x11, 0x1a, 0xf1, 0x37, 0xc0,
+	0x00, 0x61, 0x92, 0x49, 0x16, 0xf1, 0x12, 0x48,
+	0x00, 0x89, 0x2f, 0xc0, 0x00, 0x19, 0x00, 0x89,
+	0x2d, 0xc0, 0x01, 0x89, 0x2d, 0xc0, 0x04, 0x19,
+	0x81, 0x1b, 0x1c, 0xe8, 0x2a, 0xc0, 0x14, 0x19,
+	0x81, 0x1b, 0x18, 0xe8, 0x21, 0xc0, 0x0c, 0xe8,
+	0x1f, 0xc0, 0x12, 0x48, 0x81, 0x1b, 0x12, 0xe8,
+	0xae, 0xc3, 0x66, 0x71, 0xae, 0xc0, 0x02, 0x99,
+	0x02, 0xc0, 0x00, 0xb8, 0x96, 0x07, 0x13, 0xc4,
+	0x84, 0x98, 0x00, 0x1b, 0x86, 0x8b, 0x86, 0x73,
+	0xbf, 0x49, 0xfe, 0xf1, 0x80, 0x71, 0x82, 0x72,
+	0x80, 0xff, 0x09, 0xc4, 0x84, 0x98, 0x80, 0x99,
+	0x82, 0x9a, 0x86, 0x8b, 0x86, 0x73, 0xbf, 0x49,
+	0xfe, 0xf1, 0x80, 0xff, 0x08, 0xea, 0x30, 0xd4,
 	0x10, 0xc0, 0x12, 0xe8, 0x8a, 0xd3, 0x28, 0xe4,
-	0x2c, 0xe4, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
+	0x2c, 0xe4, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x00 };
 
 static u16 r8153_pla_patch_b_bp[] = {
 	0xfc26, 0x8000, 0xfc28, 0x1154, 0xfc2a, 0x1606, 0xfc2c, 0x155a,
@@ -694,33 +663,71 @@ static u16 r8153_pla_patch_b_bp[] = {
 	0xfc36, 0x0000, 0xfc38, 0x007f };
 
 static u16 r8153_ram_code_d[] = {
-	0xa436, 0xb820, 0xa438, 0x0290, 0xa436, 0xa012, 0xa438, 0x0000,
-	0xa436, 0xa014, 0xa438, 0x2c04, 0xb438, 0x2c07, 0xb438, 0x2c07,
-	0xb438, 0x2c07, 0xb438, 0xa240, 0xb438, 0xa104, 0xb438, 0x2944,
-	0xa436, 0xa01a, 0xa438, 0x0000, 0xa436, 0xa006, 0xa438, 0x0fff,
-	0xa436, 0xa004, 0xa438, 0x0fff, 0xa436, 0xa002, 0xa438, 0x0fff,
-	0xa436, 0xa000, 0xa438, 0x1943, 0xa436, 0xb820, 0xa438, 0x0210 };
+	0xB436, 0xB820, 0xB438, 0x0290, 0xB436, 0xA012, 0xB438, 0x0000,
+	0xB436, 0xA014, 0xB438, 0x2c04, 0xB438, 0x2c07, 0xB438, 0x2c07,
+	0xB438, 0x2c07, 0xB438, 0xa240, 0xB438, 0xa104, 0xB438, 0x2944,
+	0xB436, 0xA01A, 0xB438, 0x0000, 0xB436, 0xA006, 0xB438, 0x0fff,
+	0xB436, 0xA004, 0xB438, 0x0fff, 0xB436, 0xA002, 0xB438, 0x0fff,
+	0xB436, 0xA000, 0xB438, 0x1943, 0xB436, 0xB820, 0xB438, 0x0210 };
 
 static u8 usb_patch_d[] = {
-	0x08, 0xe0, 0x0a, 0xe0, 0x0c, 0xe0, 0x1f, 0xe0,
-	0x28, 0xe0, 0x2a, 0xe0, 0x2c, 0xe0, 0x2e, 0xe0,
-	0x02, 0xc5, 0x00, 0xbd, 0x00, 0x00, 0x02, 0xc3,
-	0x00, 0xbb, 0x00, 0x00, 0x30, 0x18, 0x11, 0xc1,
-	0x05, 0xe8, 0x10, 0xc6, 0x02, 0xc2, 0x00, 0xba,
-	0x94, 0x17, 0x02, 0xb4, 0x09, 0xc2, 0x40, 0x99,
-	0x0e, 0x48, 0x42, 0x98, 0x42, 0x70, 0x8e, 0x49,
-	0xfe, 0xf1, 0x02, 0xb0, 0x80, 0xff, 0xc0, 0xd4,
-	0xe4, 0x40, 0x20, 0xd4, 0xb0, 0x49, 0x04, 0xf0,
-	0x30, 0x18, 0x06, 0xc1, 0xef, 0xef, 0xfa, 0xc7,
-	0x02, 0xc0, 0x00, 0xb8, 0x38, 0x12, 0xe4, 0x4b,
-	0x02, 0xc3, 0x00, 0xbb, 0x00, 0x00, 0x02, 0xc5,
-	0x00, 0xbd, 0x00, 0x00, 0x02, 0xc1, 0x00, 0xb9,
-	0x00, 0x00, 0x02, 0xc1, 0x00, 0xb9, 0x00, 0x00 };
+	0x08, 0xe0, 0x0e, 0xe0, 0x11, 0xe0, 0x24, 0xe0,
+	0x2b, 0xe0, 0x33, 0xe0, 0x3a, 0xe0, 0x3c, 0xe0,
+	0x1e, 0xc3, 0x70, 0x61, 0x12, 0x48, 0x70, 0x89,
+	0x02, 0xc3, 0x00, 0xbb, 0x02, 0x17, 0x32, 0x19,
+	0x02, 0xc3, 0x00, 0xbb, 0x44, 0x14, 0x30, 0x18,
+	0x11, 0xc1, 0x05, 0xe8, 0x10, 0xc6, 0x02, 0xc2,
+	0x00, 0xba, 0x94, 0x17, 0x02, 0xb4, 0x09, 0xc2,
+	0x40, 0x99, 0x0e, 0x48, 0x42, 0x98, 0x42, 0x70,
+	0x8e, 0x49, 0xfe, 0xf1, 0x02, 0xb0, 0x80, 0xff,
+	0xc0, 0xd4, 0xe4, 0x40, 0x20, 0xd4, 0x30, 0x18,
+	0x06, 0xc1, 0xf1, 0xef, 0xfc, 0xc7, 0x02, 0xc0,
+	0x00, 0xb8, 0x38, 0x12, 0xe4, 0x4b, 0x0c, 0x61,
+	0x92, 0x48, 0x93, 0x48, 0x95, 0x48, 0x96, 0x48,
+	0x0c, 0x89, 0x02, 0xc0, 0x00, 0xb8, 0x0e, 0x06,
+	0x30, 0x18, 0xf5, 0xc1, 0xe0, 0xef, 0x04, 0xc5,
+	0x02, 0xc4, 0x00, 0xbc, 0x76, 0x3c, 0x1e, 0xfc,
+	0x02, 0xc6, 0x00, 0xbe, 0x00, 0x00, 0x02, 0xc6,
+	0x00, 0xbe, 0x00, 0x00 };
 
 static u16 r8153_usb_patch_d_bp[] = {
-	0xfc26, 0xa000, 0xfc28, 0x0000, 0xfc2a, 0x0000, 0xfc2c, 0x1792,
-	0xfc2e, 0x1236, 0xfc30, 0x0000, 0xfc32, 0x0000, 0xfc34, 0x0000,
-	0xfc36, 0x0000, 0xfc38, 0x000c };
+	0xfc26, 0xa000, 0xfc28, 0x16de, 0xfc2a, 0x1442, 0xfc2c, 0x1792,
+	0xfc2e, 0x1236, 0xfc30, 0x0606, 0xfc32, 0x3c74, 0xfc34, 0x0000,
+	0xfc36, 0x0000, 0xfc38, 0x003e };
+
+static u8 pla_patch_d[] = {
+	0x03, 0xe0, 0x16, 0xe0, 0x30, 0xe0, 0x12, 0xc2,
+	0x40, 0x73, 0xb0, 0x49, 0x08, 0xf0, 0xb8, 0x49,
+	0x06, 0xf0, 0xb8, 0x48, 0x40, 0x9b, 0x0b, 0xc2,
+	0x40, 0x76, 0x05, 0xe0, 0x02, 0x61, 0x02, 0xc3,
+	0x00, 0xbb, 0x54, 0x08, 0x02, 0xc3, 0x00, 0xbb,
+	0x64, 0x08, 0x98, 0xd3, 0x1e, 0xfc, 0xfe, 0xc0,
+	0x02, 0x62, 0xa0, 0x48, 0x02, 0x8a, 0x00, 0x72,
+	0xa0, 0x49, 0x11, 0xf0, 0x13, 0xc1, 0x20, 0x62,
+	0x2e, 0x21, 0x2f, 0x25, 0x00, 0x71, 0x9f, 0x24,
+	0x0a, 0x40, 0x09, 0xf0, 0x00, 0x71, 0x18, 0x48,
+	0xa0, 0x49, 0x03, 0xf1, 0x9f, 0x48, 0x02, 0xe0,
+	0x1f, 0x48, 0x00, 0x99, 0x02, 0xc2, 0x00, 0xba,
+	0xac, 0x0c, 0x08, 0xe9, 0x36, 0xc0, 0x00, 0x61,
+	0x9c, 0x20, 0x9c, 0x24, 0x33, 0xc0, 0x07, 0x11,
+	0x05, 0xf1, 0x00, 0x61, 0x17, 0x48, 0x00, 0x89,
+	0x0d, 0xe0, 0x04, 0x11, 0x0b, 0xf1, 0x00, 0x61,
+	0x97, 0x49, 0x08, 0xf0, 0x97, 0x48, 0x00, 0x89,
+	0x23, 0xc0, 0x0e, 0xe8, 0x12, 0x48, 0x81, 0x1b,
+	0x15, 0xe8, 0x1f, 0xc0, 0x00, 0x61, 0x67, 0x11,
+	0x04, 0xf0, 0x02, 0xc0, 0x00, 0xb8, 0x42, 0x09,
+	0x02, 0xc0, 0x00, 0xb8, 0x90, 0x08, 0x13, 0xc4,
+	0x84, 0x98, 0x00, 0x1b, 0x86, 0x8b, 0x86, 0x73,
+	0xbf, 0x49, 0xfe, 0xf1, 0x80, 0x71, 0x82, 0x72,
+	0x80, 0xff, 0x09, 0xc4, 0x84, 0x98, 0x80, 0x99,
+	0x82, 0x9a, 0x86, 0x8b, 0x86, 0x73, 0xbf, 0x49,
+	0xfe, 0xf1, 0x80, 0xff, 0x08, 0xea, 0x30, 0xd4,
+	0x50, 0xe8, 0x8a, 0xd3 };
+
+static u16 r8153_pla_patch_d_bp[] = {
+	0xfc26, 0x8000, 0xfc28, 0x0852, 0xfc2a, 0x0c92, 0xfc2c, 0x088c,
+	0xfc2e, 0x0000, 0xfc30, 0x0000, 0xfc32, 0x0000, 0xfc34, 0x0000,
+	0xfc36, 0x0000, 0xfc38, 0x0007 };
 
 static void rtl_clear_bp(struct r8152 *tp)
 {
@@ -956,10 +963,19 @@ void r8153_firmware(struct r8152 *tp)
 
 		ocp_write_word(tp, MCU_TYPE_PLA, 0xd388, 0x08ca);
 
+		ocp_write_word(tp, MCU_TYPE_PLA, PLA_EXTRA_STATUS,
+			       U3P3_CHECK_EN | 4);
+
 		ocp_data = ocp_read_word(tp, MCU_TYPE_USB, 0xcfca);
 		ocp_data |= 0x4000;
 		ocp_write_word(tp, MCU_TYPE_USB, 0xcfca, ocp_data);
+
+		ocp_data = ocp_read_byte(tp, MCU_TYPE_USB, USB_USB2PHY);
+		ocp_data |= USB2PHY_L1 | USB2PHY_SUSPEND;
+		ocp_write_byte(tp, MCU_TYPE_USB, USB_USB2PHY, ocp_data);
 	} else if (tp->version == RTL_VER_06) {
+		u32 ocp_data;
+
 		r8153_pre_ram_code(tp, 0x7002);
 
 		for (i = 0; i < ARRAY_SIZE(r8153_ram_code_d); i += 2)
@@ -979,5 +995,22 @@ void r8153_firmware(struct r8152 *tp)
 			ocp_write_word(tp, MCU_TYPE_USB,
 				       r8153_usb_patch_d_bp[i],
 				       r8153_usb_patch_d_bp[i+1]);
+
+		ocp_write_word(tp, MCU_TYPE_PLA, PLA_BP_EN, 0x0000);
+		generic_ocp_write(tp, 0xf800, 0xff, sizeof(pla_patch_d),
+				  pla_patch_d, MCU_TYPE_PLA);
+
+		for (i = 0; i < ARRAY_SIZE(r8153_pla_patch_d_bp); i += 2)
+			ocp_write_word(tp, MCU_TYPE_PLA,
+				       r8153_pla_patch_d_bp[i],
+				       r8153_pla_patch_d_bp[i + 1]);
+
+		ocp_data = ocp_read_byte(tp, MCU_TYPE_USB, USB_USB2PHY);
+		ocp_data |= USB2PHY_L1 | USB2PHY_SUSPEND;
+		ocp_write_byte(tp, MCU_TYPE_USB, USB_USB2PHY, ocp_data);
+
+		ocp_data = ocp_read_word(tp, MCU_TYPE_USB, USB_FW_FIX_EN1);
+		ocp_data |= FW_IP_RESET_EN;
+		ocp_write_word(tp, MCU_TYPE_USB, USB_FW_FIX_EN1, ocp_data);
 	}
 }
-- 
2.21.1

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH u-boot] eth/r8152: update the firmware
  2020-06-01  8:42 [PATCH u-boot] eth/r8152: update the firmware Hayes Wang
@ 2020-06-01 16:45 ` Marek Vasut
  2020-06-02  3:17   ` Hayes Wang
  0 siblings, 1 reply; 8+ messages in thread
From: Marek Vasut @ 2020-06-01 16:45 UTC (permalink / raw)
  To: u-boot

On 6/1/20 10:42 AM, Hayes Wang wrote:
> Update the firmware to improve compatibility for none-intel USB
> host controller.

Can you be more specific about the problem you are fixing here ?
What is the problem ?

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH u-boot] eth/r8152: update the firmware
  2020-06-01 16:45 ` Marek Vasut
@ 2020-06-02  3:17   ` Hayes Wang
  2020-06-02 11:02     ` Marek Vasut
  0 siblings, 1 reply; 8+ messages in thread
From: Hayes Wang @ 2020-06-02  3:17 UTC (permalink / raw)
  To: u-boot

Marek Vasut [mailto:marex at denx.de]
> Sent: Tuesday, June 02, 2020 12:46 AM
> > Update the firmware to improve compatibility for none-intel USB
> > host controller.
> 
> Can you be more specific about the problem you are fixing here ?
> What is the problem ?

There is low probability that the device may be lost when rebooting.
Should I submit v2 to reword the commit message?

Best Regards,
Hayes

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH u-boot] eth/r8152: update the firmware
  2020-06-02  3:17   ` Hayes Wang
@ 2020-06-02 11:02     ` Marek Vasut
  2020-06-02 11:48       ` Hayes Wang
  0 siblings, 1 reply; 8+ messages in thread
From: Marek Vasut @ 2020-06-02 11:02 UTC (permalink / raw)
  To: u-boot

On 6/2/20 5:17 AM, Hayes Wang wrote:
> Marek Vasut [mailto:marex at denx.de]
>> Sent: Tuesday, June 02, 2020 12:46 AM
>>> Update the firmware to improve compatibility for none-intel USB
>>> host controller.
>>
>> Can you be more specific about the problem you are fixing here ?
>> What is the problem ?
> 
> There is low probability that the device may be lost when rebooting.
> Should I submit v2 to reword the commit message?

Lost how ?

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH u-boot] eth/r8152: update the firmware
  2020-06-02 11:02     ` Marek Vasut
@ 2020-06-02 11:48       ` Hayes Wang
  2020-06-02 11:58         ` Marek Vasut
  0 siblings, 1 reply; 8+ messages in thread
From: Hayes Wang @ 2020-06-02 11:48 UTC (permalink / raw)
  To: u-boot

Marek Vasut [mailto:marex at denx.de]
> Sent: Tuesday, June 02, 2020 7:02 PM
[...]
> >> Can you be more specific about the problem you are fixing here ?
> >> What is the problem ?
> >
> > There is low probability that the device may be lost when rebooting.
> > Should I submit v2 to reword the commit message?
> 
> Lost how ?

USB enumeration may fail. The device would be at wrong state.
I don't know detail about the hardware behavior.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH u-boot] eth/r8152: update the firmware
  2020-06-02 11:48       ` Hayes Wang
@ 2020-06-02 11:58         ` Marek Vasut
  2020-06-04  3:45           ` Hayes Wang
  0 siblings, 1 reply; 8+ messages in thread
From: Marek Vasut @ 2020-06-02 11:58 UTC (permalink / raw)
  To: u-boot

On 6/2/20 1:48 PM, Hayes Wang wrote:
> Marek Vasut [mailto:marex at denx.de]
>> Sent: Tuesday, June 02, 2020 7:02 PM
> [...]
>>>> Can you be more specific about the problem you are fixing here ?
>>>> What is the problem ?
>>>
>>> There is low probability that the device may be lost when rebooting.
>>> Should I submit v2 to reword the commit message?
>>
>> Lost how ?
> 
> USB enumeration may fail. The device would be at wrong state.
> I don't know detail about the hardware behavior.

Is there any chance you can ask someone ? It would be real helpful to
know the details of the problem, in case someone runs into it, they
would know what is going on.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH u-boot] eth/r8152: update the firmware
  2020-06-02 11:58         ` Marek Vasut
@ 2020-06-04  3:45           ` Hayes Wang
  2020-06-04 20:12             ` Marek Vasut
  0 siblings, 1 reply; 8+ messages in thread
From: Hayes Wang @ 2020-06-04  3:45 UTC (permalink / raw)
  To: u-boot

Marek Vasut [mailto:marex at denx.de]
> Sent: Tuesday, June 02, 2020 7:59 PM
[...]
> >>>> Can you be more specific about the problem you are fixing here ?
> >>>> What is the problem ?
> >>>
> >>> There is low probability that the device may be lost when rebooting.
> >>> Should I submit v2 to reword the commit message?
> >>
> >> Lost how ?
> >
> > USB enumeration may fail. The device would be at wrong state.
> > I don't know detail about the hardware behavior.
> 
> Is there any chance you can ask someone ? It would be real helpful to
> know the details of the problem, in case someone runs into it, they
> would know what is going on.

I get the following information.

1.
Our device has auto-installed driver feature - via switch CD-ROM/NIC
mode. But in some corner cases, it would switch to CD-ROM unexpected.
This issue results in Lan Function Disabled.

2.
While USB PHY transits to P3 from P0 due to the absent of transmitter
control, it would issues undefined signal to its? link partner.
Some Down Stream Port misidentify the undefined signal as wakeup
signal. So the link state will not keep in suspend even the system
is idle.

Best Regards,
Hayes

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH u-boot] eth/r8152: update the firmware
  2020-06-04  3:45           ` Hayes Wang
@ 2020-06-04 20:12             ` Marek Vasut
  0 siblings, 0 replies; 8+ messages in thread
From: Marek Vasut @ 2020-06-04 20:12 UTC (permalink / raw)
  To: u-boot

On 6/4/20 5:45 AM, Hayes Wang wrote:
> Marek Vasut [mailto:marex at denx.de]
>> Sent: Tuesday, June 02, 2020 7:59 PM
> [...]
>>>>>> Can you be more specific about the problem you are fixing here ?
>>>>>> What is the problem ?
>>>>>
>>>>> There is low probability that the device may be lost when rebooting.
>>>>> Should I submit v2 to reword the commit message?
>>>>
>>>> Lost how ?
>>>
>>> USB enumeration may fail. The device would be at wrong state.
>>> I don't know detail about the hardware behavior.
>>
>> Is there any chance you can ask someone ? It would be real helpful to
>> know the details of the problem, in case someone runs into it, they
>> would know what is going on.
> 
> I get the following information.
> 
> 1.
> Our device has auto-installed driver feature - via switch CD-ROM/NIC
> mode. But in some corner cases, it would switch to CD-ROM unexpected.
> This issue results in Lan Function Disabled.
> 
> 2.
> While USB PHY transits to P3 from P0 due to the absent of transmitter
> control, it would issues undefined signal to its? link partner.
> Some Down Stream Port misidentify the undefined signal as wakeup
> signal. So the link state will not keep in suspend even the system
> is idle.

OK, then please add this into the commit message and send a V2, I'll
pick it then. Thanks!

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2020-06-04 20:12 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-01  8:42 [PATCH u-boot] eth/r8152: update the firmware Hayes Wang
2020-06-01 16:45 ` Marek Vasut
2020-06-02  3:17   ` Hayes Wang
2020-06-02 11:02     ` Marek Vasut
2020-06-02 11:48       ` Hayes Wang
2020-06-02 11:58         ` Marek Vasut
2020-06-04  3:45           ` Hayes Wang
2020-06-04 20:12             ` Marek Vasut

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.