52 lines
1.4 KiB
Diff
52 lines
1.4 KiB
Diff
|
|
--- a/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts 2018-04-28 19:24:56.090524456 +0200
|
|
+++ b/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts 2018-04-29 23:09:48.559371108 +0200
|
|
@@ -409,6 +409,7 @@
|
|
&usb0_phy {
|
|
status = "okay";
|
|
phy-supply = <&usb_otg_pwr>;
|
|
+ dr_mode = "otg";
|
|
};
|
|
|
|
&usb1_phy {
|
|
@@ -418,6 +419,7 @@
|
|
|
|
&usb0 {
|
|
status = "okay";
|
|
+ dr_mode = "host";
|
|
};
|
|
|
|
&usb1 {
|
|
|
|
--- a/drivers/phy/amlogic/phy-meson8b-usb2.c 2018-04-28 19:22:57.420144229 +0200
|
|
+++ b/drivers/phy/amlogic/phy-meson8b-usb2.c 2018-04-29 23:13:57.136515043 +0200
|
|
@@ -113,6 +113,7 @@
|
|
struct phy_meson8b_usb2_priv {
|
|
void __iomem *regs;
|
|
enum usb_dr_mode dr_mode;
|
|
+ enum usb_dr_mode phy_mode;
|
|
struct clk *clk_usb_general;
|
|
struct clk *clk_usb;
|
|
struct reset_control *reset;
|
|
@@ -181,7 +182,7 @@
|
|
phy_meson8b_usb2_mask_bits(priv, REG_CTRL, REG_CTRL_SOF_TOGGLE_OUT,
|
|
REG_CTRL_SOF_TOGGLE_OUT);
|
|
|
|
- if (priv->dr_mode == USB_DR_MODE_HOST) {
|
|
+ if (priv->phy_mode == USB_DR_MODE_HOST) {
|
|
phy_meson8b_usb2_mask_bits(priv, REG_ADP_BC,
|
|
REG_ADP_BC_ACA_ENABLE,
|
|
REG_ADP_BC_ACA_ENABLE);
|
|
@@ -251,6 +252,11 @@
|
|
return -EINVAL;
|
|
}
|
|
|
|
+ priv->phy_mode = usb_get_dr_mode(&pdev->dev);
|
|
+ if (priv->phy_mode == USB_DR_MODE_UNKNOWN) {
|
|
+ priv->phy_mode = priv->dr_mode;
|
|
+ }
|
|
+
|
|
phy = devm_phy_create(&pdev->dev, NULL, &phy_meson8b_usb2_ops);
|
|
if (IS_ERR(phy)) {
|
|
dev_err(&pdev->dev, "failed to create PHY\n");
|