mirror of
https://github.com/armbian/build.git
synced 2025-08-15 07:36:57 +02:00
127 lines
3.8 KiB
Diff
127 lines
3.8 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Pete <chiefwigms@hotmail.com>
|
|
Date: Mon, 22 Apr 2024 16:00:47 +0200
|
|
Subject: [ARCHEOLOGY] Add UDOO USB patch for newer kernels (#6505)
|
|
|
|
> X-Git-Archeology: - Revision 4b53634475c798f4a0ae4d9530cc8f4896c43723: https://github.com/armbian/build/commit/4b53634475c798f4a0ae4d9530cc8f4896c43723
|
|
> X-Git-Archeology: Date: Mon, 22 Apr 2024 16:00:47 +0200
|
|
> X-Git-Archeology: From: Pete <chiefwigms@hotmail.com>
|
|
> X-Git-Archeology: Subject: Add UDOO USB patch for newer kernels (#6505)
|
|
> X-Git-Archeology:
|
|
---
|
|
arch/arm/boot/dts/nxp/imx/imx6qdl-udoo.dtsi | 25 +++++-----
|
|
arch/arm/configs/imx_v6_v7_defconfig | 1 +
|
|
drivers/usb/misc/onboard_usb_hub.c | 14 ++++++
|
|
3 files changed, 27 insertions(+), 13 deletions(-)
|
|
|
|
diff --git a/arch/arm/boot/dts/nxp/imx/imx6qdl-udoo.dtsi b/arch/arm/boot/dts/nxp/imx/imx6qdl-udoo.dtsi
|
|
index 111111111111..222222222222 100644
|
|
--- a/arch/arm/boot/dts/nxp/imx/imx6qdl-udoo.dtsi
|
|
+++ b/arch/arm/boot/dts/nxp/imx/imx6qdl-udoo.dtsi
|
|
@@ -59,16 +59,6 @@ panel_in: endpoint {
|
|
};
|
|
};
|
|
|
|
- reg_usb_h1_vbus: regulator-usb-h1-vbus {
|
|
- compatible = "regulator-fixed";
|
|
- regulator-name = "usb_h1_vbus";
|
|
- regulator-min-microvolt = <5000000>;
|
|
- regulator-max-microvolt = <5000000>;
|
|
- enable-active-high;
|
|
- startup-delay-us = <2>; /* USB2415 requires a POR of 1 us minimum */
|
|
- gpio = <&gpio7 12 0>;
|
|
- };
|
|
-
|
|
reg_panel: regulator-panel {
|
|
compatible = "regulator-fixed";
|
|
regulator-name = "lcd_panel";
|
|
@@ -285,9 +275,18 @@ &uart4 {
|
|
&usbh1 {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pinctrl_usbh>;
|
|
- vbus-supply = <®_usb_h1_vbus>;
|
|
- clocks = <&clks IMX6QDL_CLK_CKO>;
|
|
- status = "disabled";
|
|
+ #address-cells = <1>;
|
|
+ #size-cells = <0>;
|
|
+ status = "okay";
|
|
+
|
|
+ usb-port@1 {
|
|
+ compatible = "usb424,2514";
|
|
+ reg = <1>;
|
|
+ #address-cells = <1>;
|
|
+ #size-cells = <0>;
|
|
+ clocks = <&clks IMX6QDL_CLK_CKO>;
|
|
+ reset-gpios = <&gpio7 12 GPIO_ACTIVE_LOW>;
|
|
+ };
|
|
};
|
|
|
|
&usbotg {
|
|
diff --git a/arch/arm/configs/imx_v6_v7_defconfig b/arch/arm/configs/imx_v6_v7_defconfig
|
|
index 111111111111..222222222222 100644
|
|
--- a/arch/arm/configs/imx_v6_v7_defconfig
|
|
+++ b/arch/arm/configs/imx_v6_v7_defconfig
|
|
@@ -336,6 +336,7 @@ CONFIG_USB_SERIAL_FTDI_SIO=m
|
|
CONFIG_USB_SERIAL_OPTION=m
|
|
CONFIG_USB_TEST=m
|
|
CONFIG_USB_EHSET_TEST_FIXTURE=m
|
|
+CONFIG_USB_ONBOARD_HUB=y
|
|
CONFIG_NOP_USB_XCEIV=y
|
|
CONFIG_USB_MXS_PHY=y
|
|
CONFIG_USB_GADGET=y
|
|
diff --git a/drivers/usb/misc/onboard_usb_hub.c b/drivers/usb/misc/onboard_usb_hub.c
|
|
index 111111111111..222222222222 100644
|
|
--- a/drivers/usb/misc/onboard_usb_hub.c
|
|
+++ b/drivers/usb/misc/onboard_usb_hub.c
|
|
@@ -5,6 +5,7 @@
|
|
* Copyright (c) 2022, Google LLC
|
|
*/
|
|
|
|
+#include <linux/clk.h>
|
|
#include <linux/device.h>
|
|
#include <linux/export.h>
|
|
#include <linux/gpio/consumer.h>
|
|
@@ -60,12 +61,19 @@ struct onboard_hub {
|
|
bool going_away;
|
|
struct list_head udev_list;
|
|
struct mutex lock;
|
|
+ struct clk *clk;
|
|
};
|
|
|
|
static int onboard_hub_power_on(struct onboard_hub *hub)
|
|
{
|
|
int err;
|
|
|
|
+ err = clk_prepare_enable(hub->clk);
|
|
+ if (err) {
|
|
+ dev_err(hub->dev, "failed to enable clock: %pe\n", ERR_PTR(err));
|
|
+ return err;
|
|
+ }
|
|
+
|
|
err = regulator_bulk_enable(hub->pdata->num_supplies, hub->supplies);
|
|
if (err) {
|
|
dev_err(hub->dev, "failed to enable supplies: %d\n", err);
|
|
@@ -92,6 +100,8 @@ static int onboard_hub_power_off(struct onboard_hub *hub)
|
|
return err;
|
|
}
|
|
|
|
+ clk_disable_unprepare(hub->clk);
|
|
+
|
|
hub->is_powered_on = false;
|
|
|
|
return 0;
|
|
@@ -271,6 +281,10 @@ static int onboard_hub_probe(struct platform_device *pdev)
|
|
return err;
|
|
}
|
|
|
|
+ hub->clk = devm_clk_get_optional(dev, NULL);
|
|
+ if (IS_ERR(hub->clk))
|
|
+ return dev_err_probe(dev, PTR_ERR(hub->clk), "failed to get clock\n");
|
|
+
|
|
hub->reset_gpio = devm_gpiod_get_optional(dev, "reset",
|
|
GPIOD_OUT_HIGH);
|
|
if (IS_ERR(hub->reset_gpio))
|
|
--
|
|
Armbian
|
|
|