patch "usb: dwc3-meson-g12a: fix usb2 PHY glue init when phy0 is disabled" added to usb-linus
This is a note to let you know that I've just added the patch titled
usb: dwc3-meson-g12a: fix usb2 PHY glue init when phy0 is disabled
to my usb git tree which can be found at
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git
in the usb-linus branch.
The patch will show up in the next release of the linux-next tree (usually sometime within the next 24 hours during the week.)
The patch will hopefully also be merged in Linus's tree for the next -rc kernel release.
If you have any questions about this process, please let me know.
From 4d2aa178d2ad2fb156711113790dde13e9aa2376 Mon Sep 17 00:00:00 2001
From: Neil Armstrong <[email protected]>
Date: Tue, 1 Jun 2021 10:48:30 +0200
Subject: usb: dwc3-meson-g12a: fix usb2 PHY glue init when phy0 is disabled
When only PHY1 is used (for example on Odroid-HC4), the regmap init code uses the usb2 ports when doesn't initialize the PHY1 regmap entry.
This fixes:
Unable to handle kernel NULL pointer dereference at virtual address 0000000000000020 ... pc : regmap_update_bits_base+0x40/0xa0 lr : dwc3_meson_g12a_usb2_init_phy+0x4c/0xf8 ... Call trace: regmap_update_bits_base+0x40/0xa0 dwc3_meson_g12a_usb2_init_phy+0x4c/0xf8 dwc3_meson_g12a_usb2_init+0x7c/0xc8 dwc3_meson_g12a_usb_init+0x28/0x48 dwc3_meson_g12a_probe+0x298/0x540 platform_probe+0x70/0xe0 really_probe+0xf0/0x4d8 driver_probe_device+0xfc/0x168
...
--- drivers/usb/dwc3/dwc3-meson-g12a.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
drivers/usb/dwc3/dwc3-meson-g12a.c +4 -1
@@ -651,7 +651,7 @@ static int dwc3_meson_g12a_setup_regmaps(struct dwc3_meson_g12a *priv,return PTR_ERR (priv->usb_glue_regmap);/* Create a regmap for each USB2 PHY control register set */ -for (i =0 ; i < priv->usb2_ports; i++) { +for (i =0 ; i < priv->drvdata->num_phys; i++) {struct regmap_config u2p_regmap_config = { .reg_bits =8 , .val_bits =32 ,
@@ -659,6 +659,9 @@ static int dwc3_meson_g12a_setup_regmaps(struct dwc3_meson_g12a *priv, .max_register = U2P_R1, }; +if (!strstr (priv->drvdata->phy_names[i],"usb2" )) +continue ; + u2p_regmap_config.name =devm_kasprintf (priv->dev,GFP_KERNEL ,"u2p-%d" , i);if (!u2p_regmap_config.name)
Signature · 1 line
2.31.1