Skip to content

Commit 4d2aa17

Browse files
superna9999gregkh
authored andcommitted
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 ... Fixes: 013af22 ("usb: dwc3: meson-g12a: handle the phy and glue registers separately") Reviewed-by: Martin Blumenstingl <[email protected]> Signed-off-by: Neil Armstrong <[email protected]> Cc: stable <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
1 parent 1d0d3d8 commit 4d2aa17

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

drivers/usb/dwc3/dwc3-meson-g12a.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -651,14 +651,17 @@ static int dwc3_meson_g12a_setup_regmaps(struct dwc3_meson_g12a *priv,
651651
return PTR_ERR(priv->usb_glue_regmap);
652652

653653
/* Create a regmap for each USB2 PHY control register set */
654-
for (i = 0; i < priv->usb2_ports; i++) {
654+
for (i = 0; i < priv->drvdata->num_phys; i++) {
655655
struct regmap_config u2p_regmap_config = {
656656
.reg_bits = 8,
657657
.val_bits = 32,
658658
.reg_stride = 4,
659659
.max_register = U2P_R1,
660660
};
661661

662+
if (!strstr(priv->drvdata->phy_names[i], "usb2"))
663+
continue;
664+
662665
u2p_regmap_config.name = devm_kasprintf(priv->dev, GFP_KERNEL,
663666
"u2p-%d", i);
664667
if (!u2p_regmap_config.name)

0 commit comments

Comments
 (0)