pmaports/device/linux-samsung-i927/0051-ARM-dts-tegra20-glide-USB-OTG-bindings.patch
Sergey Larin 5ccbcf999d
samsung-i927: update kernel to 5.2.1, more updates (!452)
- OTG support
- Charger
- WiFi 5GHz
- RTC bug "fixed" (always-on interrupt - made device overheat!)
- Kernel version bumped to 5.2.1
- Memory timings
- New WM8994 codec board driver (fixes suspend/resume)
- Camera's regulator supported now (saves power at least!)
- Updated panel driver (still not in mainline, idk why)
- MHL support in kernel (fixes boot times and screen, currently disabled in X,
  not tested)
- Other minor kernel chagnes

[ci:skip-build]: already built successfully in CI
2019-07-17 00:15:26 +02:00

77 lines
2.2 KiB
Diff

From 4729b2a505cf18d16d484af5deb8627f937b773d Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Thu, 20 Jun 2019 20:31:45 +0300
Subject: [PATCH] ARM: dts: tegra20-glide: USB OTG bindings
OTG here is provided by ChipIdea controller, which uses OTG FSM to
power on the connected device. However, OTG specification says that
the device needs to receive power in 100ms, but this is not a strict
requirement. We need to disable the charger first and then power on VBUS,
which is slow process so we set a delay for the regulator to workaround
this.
Signed-off-by: Sergey Larin <cerg2010cerg2010@mail.ru>
---
arch/arm/boot/dts/tegra20-glide.dts | 25 ++++++++++++++++++++++---
1 file changed, 22 insertions(+), 3 deletions(-)
diff --git a/arch/arm/boot/dts/tegra20-glide.dts b/arch/arm/boot/dts/tegra20-glide.dts
index 0c6a903ef0c7..56e5407b2f42 100644
--- a/arch/arm/boot/dts/tegra20-glide.dts
+++ b/arch/arm/boot/dts/tegra20-glide.dts
@@ -1520,15 +1520,28 @@
};
};
+ /*
+ * There's funny thing going on with OTG power
+ * which I don't know how to fix properly.
+ * When the OTG cable is plugged in, USB
+ * controller detects this and enables VBUS
+ * power. However, charger thinks that the
+ * charging cable is plugged in and enables
+ * charging. After that there's no power on
+ * the port :)
+ *
+ * So we use a bit modified driver with "dummy"
+ * regulator which disables charging when enabled.
+ */
usb@c5000000 {
compatible = "nvidia,tegra20-udc";
status = "okay";
- dr_mode = "otg";
- vbus-supply = <&vbus_reg>;
+ vbus-supply = <&otg_reg>;
};
usb-phy@c5000000 {
status = "okay";
+ dr_mode = "otg";
vbus-supply = <&usb_phy_reg>;
};
@@ -1708,7 +1721,7 @@
enable-active-high;
};
- vbus_reg: regulator@3 {
+ otg_reg: regulator@3 {
compatible = "regulator-fixed";
reg = <3>;
regulator-name = "otg-en";
@@ -1716,6 +1729,12 @@
regulator-max-microvolt = <5000000>;
gpio = <&gpio TEGRA_GPIO(R, 7) GPIO_ACTIVE_HIGH>;
enable-active-high;
+ /*
+ * CI HDRC controller requires delay in 100ms, but
+ * this thing is so slow!
+ */
+ regulator-enable-ramp-delay = <350000>;
+ vin-supply = <&charger_supply>;
};
gps_en: regulator@4 {
--
2.22.0