Page MenuHomeFreeBSD

D36211.diff
No OneTemporary

D36211.diff

diff --git a/sys/arm64/rockchip/rk_dwc3.c b/sys/arm64/rockchip/rk_dwc3.c
--- a/sys/arm64/rockchip/rk_dwc3.c
+++ b/sys/arm64/rockchip/rk_dwc3.c
@@ -141,11 +141,7 @@
clk_get_name(sc->clk_bus));
return (ENXIO);
}
- if (sc->type == RK3399) {
- if (clk_get_by_ofw_name(dev, 0, "grf_clk", &sc->clk_grf) != 0) {
- device_printf(dev, "Cannot get grf_clk clock\n");
- return (ENXIO);
- }
+ if (clk_get_by_ofw_name(dev, 0, "grf_clk", &sc->clk_grf) == 0) {
err = clk_enable(sc->clk_grf);
if (err != 0) {
device_printf(dev, "Could not enable clock %s\n",
diff --git a/sys/dev/usb/controller/dwc3.h b/sys/dev/usb/controller/dwc3.h
--- a/sys/dev/usb/controller/dwc3.h
+++ b/sys/dev/usb/controller/dwc3.h
@@ -49,6 +49,7 @@
#define DWC3_GUCTL1 0xc11c
#define DWC3_GUCTL1_TX_IPGAP_LINECHECK_DIS (1 << 28)
+#define DWC3_GUCTL1_DEV_FORCE_20_CLK_FOR_30_CLK (1 << 26)
#define DWC3_GSNPSID 0xc120
#define DWC3_GGPIO 0xc124
diff --git a/sys/dev/usb/controller/dwc3.c b/sys/dev/usb/controller/dwc3.c
--- a/sys/dev/usb/controller/dwc3.c
+++ b/sys/dev/usb/controller/dwc3.c
@@ -366,6 +366,7 @@
#ifdef FDT
phandle_t node;
phy_t usb2_phy, usb3_phy;
+ uint32_t reg;
#endif
int error, rid;
@@ -403,7 +404,13 @@
error = phy_get_by_ofw_name(dev, node, "usb3-phy", &usb3_phy);
if (error == 0 && usb3_phy != NULL)
phy_enable(usb3_phy);
-
+ else {
+ reg = DWC3_READ(sc, DWC3_GUCTL1);
+ if (bootverbose)
+ device_printf(dev, "Forcing USB2 clock only\n");
+ reg |= DWC3_GUCTL1_DEV_FORCE_20_CLK_FOR_30_CLK;
+ DWC3_WRITE(sc, DWC3_GUCTL1, reg);
+ }
snps_dwc3_configure_phy(sc, node);
skip_phys:
#endif

File Metadata

Mime Type
text/plain
Expires
Fri, Apr 17, 4:45 AM (10 h, 37 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31639793
Default Alt Text
D36211.diff (1 KB)

Event Timeline