Patch "phy: phy-brcm-usb-init: Some Low Speed keyboards fail on 7271" has been added to the 4.15-stable tree
This is a note to let you know that I've just added the patch titled
phy: phy-brcm-usb-init: Some Low Speed keyboards fail on 7271
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
phy-phy-brcm-usb-init-some-low-speed-keyboards-fail-on-7271.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
279a0cd0e02aa1e506d9acf94a7ecb530821359cMon Sep 17 00:00:00 2001
From: Al Cooper <[email protected]>
Date: Wed, 27 Dec 2017 14:28:49 -0500
Subject: phy: phy-brcm-usb-init: Some Low Speed keyboards fail on 7271
From: Al Cooper <[email protected]>
commit 279a0cd0e02aa1e506d9acf94a7ecb530821359c upstream.
Enable the the Low Speed Keep Alive signal on the 7271b0 by setting the LS_KEEP_ALIVE bit in the USB CTRL OBRIDGE register otherwise some Dell Low Speed keyboards fail.
Also do a little cleanup of the EBRIDGE ESTOP_SCB_REQ bit. Since this is only used on one platform, remove it from the platform tables and just use "if (family == ").
--- drivers/phy/broadcom/phy-brcm-usb-init.c | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-)
drivers/phy/broadcom/phy-brcm-usb-init.c +7 -12
@@ -50,6 +50,8 @@#define USB_CTRL_PLL_CTL_PLL_IDDQ_PWRDN_MASK 0x80000000/* option */ #define USB_CTRL_EBRIDGE 0x0c#define USB_CTRL_EBRIDGE_ESTOP_SCB_REQ_MASK 0x00020000/* option */ +#define USB_CTRL_OBRIDGE 0x10 +#define USB_CTRL_OBRIDGE_LS_KEEP_ALIVE_MASK 0x08000000#define USB_CTRL_MDIO 0x14#define USB_CTRL_MDIO2 0x18#define USB_CTRL_UTMI_CTL_1 0x2c
@@ -116,7 +118,6 @@ enum {USB_CTRL_SETUP_STRAP_IPP_SEL_SELECTOR ,USB_CTRL_SETUP_OC3_DISABLE_SELECTOR ,USB_CTRL_PLL_CTL_PLL_IDDQ_PWRDN_SELECTOR , -USB_CTRL_EBRIDGE_ESTOP_SCB_REQ_SELECTOR ,USB_CTRL_USB_PM_BDC_SOFT_RESETB_SELECTOR ,USB_CTRL_USB_PM_XHC_SOFT_RESETB_SELECTOR , USB_CTRL_USB_PM_USB_PWRDN_SELECTOR,
@@ -203,7 +204,6 @@ usb_reg_bits_map_table[BRCM_FAMILY_COUNTUSB_CTRL_SETUP_STRAP_IPP_SEL_MASK ,USB_CTRL_SETUP_OC3_DISABLE_MASK ,0 ,/* USB_CTRL_PLL_CTL_PLL_IDDQ_PWRDN_MASK */ -USB_CTRL_EBRIDGE_ESTOP_SCB_REQ_MASK ,0 ,/* USB_CTRL_USB_PM_BDC_SOFT_RESETB_MASK */ USB_CTRL_USB_PM_XHC_SOFT_RESETB_MASK , USB_CTRL_USB_PM_USB_PWRDN_MASK,
@@ -225,7 +225,6 @@ usb_reg_bits_map_table[BRCM_FAMILY_COUNT0 ,/* USB_CTRL_SETUP_STRAP_IPP_SEL_MASK */ USB_CTRL_SETUP_OC3_DISABLE_MASK ,USB_CTRL_PLL_CTL_PLL_IDDQ_PWRDN_MASK , -USB_CTRL_EBRIDGE_ESTOP_SCB_REQ_MASK ,0 ,/* USB_CTRL_USB_PM_BDC_SOFT_RESETB_MASK */ USB_CTRL_USB_PM_XHC_SOFT_RESETB_VAR_MASK , 0, /* USB_CTRL_USB_PM_USB_PWRDN_MASK */
@@ -247,7 +246,6 @@ usb_reg_bits_map_table[BRCM_FAMILY_COUNTUSB_CTRL_SETUP_STRAP_IPP_SEL_MASK ,USB_CTRL_SETUP_OC3_DISABLE_MASK ,0 ,/* USB_CTRL_PLL_CTL_PLL_IDDQ_PWRDN_MASK */ -USB_CTRL_EBRIDGE_ESTOP_SCB_REQ_MASK ,USB_CTRL_USB_PM_BDC_SOFT_RESETB_MASK ,USB_CTRL_USB_PM_XHC_SOFT_RESETB_MASK , USB_CTRL_USB_PM_USB_PWRDN_MASK,
@@ -269,7 +267,6 @@ usb_reg_bits_map_table[BRCM_FAMILY_COUNT0 ,/* USB_CTRL_SETUP_STRAP_IPP_SEL_MASK */ USB_CTRL_SETUP_OC3_DISABLE_MASK ,USB_CTRL_PLL_CTL_PLL_IDDQ_PWRDN_MASK , -USB_CTRL_EBRIDGE_ESTOP_SCB_REQ_MASK ,0 ,/* USB_CTRL_USB_PM_BDC_SOFT_RESETB_MASK */ USB_CTRL_USB_PM_XHC_SOFT_RESETB_VAR_MASK , 0, /* USB_CTRL_USB_PM_USB_PWRDN_MASK */
@@ -291,7 +288,6 @@ usb_reg_bits_map_table[BRCM_FAMILY_COUNT0 ,/* USB_CTRL_SETUP_STRAP_IPP_SEL_MASK */ USB_CTRL_SETUP_OC3_DISABLE_MASK ,0 ,/* USB_CTRL_PLL_CTL_PLL_IDDQ_PWRDN_MASK */ -USB_CTRL_EBRIDGE_ESTOP_SCB_REQ_MASK ,0 ,/* USB_CTRL_USB_PM_BDC_SOFT_RESETB_MASK */ USB_CTRL_USB_PM_XHC_SOFT_RESETB_VAR_MASK , USB_CTRL_USB_PM_USB_PWRDN_MASK,
@@ -313,7 +309,6 @@ usb_reg_bits_map_table[BRCM_FAMILY_COUNT0 ,/* USB_CTRL_SETUP_STRAP_IPP_SEL_MASK */ 0 ,/* USB_CTRL_SETUP_OC3_DISABLE_MASK */ USB_CTRL_PLL_CTL_PLL_IDDQ_PWRDN_MASK , -0 ,/* USB_CTRL_EBRIDGE_ESTOP_SCB_REQ_MASK */ 0 ,/* USB_CTRL_USB_PM_BDC_SOFT_RESETB_MASK */ 0 ,/* USB_CTRL_USB_PM_XHC_SOFT_RESETB_MASK */ 0, /* USB_CTRL_USB_PM_USB_PWRDN_MASK */
@@ -335,7 +330,6 @@ usb_reg_bits_map_table[BRCM_FAMILY_COUNTUSB_CTRL_SETUP_STRAP_IPP_SEL_MASK ,USB_CTRL_SETUP_OC3_DISABLE_MASK ,0 ,/* USB_CTRL_PLL_CTL_PLL_IDDQ_PWRDN_MASK */ -0 ,/* USB_CTRL_EBRIDGE_ESTOP_SCB_REQ_MASK */ USB_CTRL_USB_PM_BDC_SOFT_RESETB_MASK ,USB_CTRL_USB_PM_XHC_SOFT_RESETB_MASK , USB_CTRL_USB_PM_USB_PWRDN_MASK,
@@ -357,7 +351,6 @@ usb_reg_bits_map_table[BRCM_FAMILY_COUNT0 ,/* USB_CTRL_SETUP_STRAP_IPP_SEL_MASK */ USB_CTRL_SETUP_OC3_DISABLE_MASK ,USB_CTRL_PLL_CTL_PLL_IDDQ_PWRDN_MASK , -0 ,/* USB_CTRL_EBRIDGE_ESTOP_SCB_REQ_MASK */ 0 ,/* USB_CTRL_USB_PM_BDC_SOFT_RESETB_MASK */ 0 ,/* USB_CTRL_USB_PM_XHC_SOFT_RESETB_MASK */ 0, /* USB_CTRL_USB_PM_USB_PWRDN_MASK */
@@ -379,7 +372,6 @@ usb_reg_bits_map_table[BRCM_FAMILY_COUNTUSB_CTRL_SETUP_STRAP_IPP_SEL_MASK ,USB_CTRL_SETUP_OC3_DISABLE_MASK ,0 ,/* USB_CTRL_PLL_CTL_PLL_IDDQ_PWRDN_MASK */ -USB_CTRL_EBRIDGE_ESTOP_SCB_REQ_MASK ,USB_CTRL_USB_PM_BDC_SOFT_RESETB_MASK ,USB_CTRL_USB_PM_XHC_SOFT_RESETB_MASK , USB_CTRL_USB_PM_USB_PWRDN_MASK,
@@ -401,7 +393,6 @@ usb_reg_bits_map_table[BRCM_FAMILY_COUNTUSB_CTRL_SETUP_STRAP_IPP_SEL_MASK ,USB_CTRL_SETUP_OC3_DISABLE_MASK ,0 ,/* USB_CTRL_PLL_CTL_PLL_IDDQ_PWRDN_MASK */ -USB_CTRL_EBRIDGE_ESTOP_SCB_REQ_MASK ,USB_CTRL_USB_PM_BDC_SOFT_RESETB_MASK ,USB_CTRL_USB_PM_XHC_SOFT_RESETB_MASK , USB_CTRL_USB_PM_USB_PWRDN_MASK,
@@ -952,13 +943,17 @@ void brcm_usb_init_eohci(struct brcm_usb* Don't enable this so the memory controller doesn't read * into memory holes. NOTE: This bit is low true on 7366C0. */ -USB_CTRL_SET_FAMILY (params,EBRIDGE ,ESTOP_SCB_REQ ); +USB_CTRL_SET (ctrl,EBRIDGE ,ESTOP_SCB_REQ );/* Setup the endian bits */ reg =brcmusb_readl (USB_CTRL_REG (ctrl,SETUP )); reg &= ~USB_CTRL_SETUP_ENDIAN_BITS ; reg |=USB_CTRL_MASK_FAMILY (params,SETUP ,ENDIAN );brcmusb_writel (reg,USB_CTRL_REG (ctrl,SETUP )); + +if (params->selected_family ==BRCM_FAMILY_7271A0 ) +/* Enable LS keep alive fix for certain keyboards */ +USB_CTRL_SET (ctrl,OBRIDGE ,LS_KEEP_ALIVE ); }void brcm_usb_init_xhci (struct brcm_usb_init_params *params)
Patches currently in stable-queue which might be from [email protected] are
queue-4.15/phy-phy-brcm-usb-init-power-down-usb-3.0-phy-when-xhci-disabled.patch queue-4.15/phy-phy-brcm-usb-init-drd-mode-can-cause-crash-on-startup.patch queue-4.15/phy-phy-brcm-usb-init-some-low-speed-keyboards-fail-on-7271.patch