mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-24 11:16:51 +00:00
Merge pull request #4150 from vpeter4/imx6_p3
projects/imx6/patches/linux: udoo system support
This commit is contained in:
commit
85d4fc23f6
@ -2127,8 +2127,10 @@ CONFIG_POWER_SUPPLY=y
|
||||
# CONFIG_CHARGER_BQ24735 is not set
|
||||
# CONFIG_CHARGER_SMB347 is not set
|
||||
# CONFIG_IMX6_USB_CHARGER is not set
|
||||
# CONFIG_POWER_RESET is not set
|
||||
CONFIG_POWER_RESET=y
|
||||
# CONFIG_POWER_RESET_GPIO is not set
|
||||
# CONFIG_POWER_RESET_RESTART is not set
|
||||
CONFIG_POWER_RESET_UDOO=y
|
||||
# CONFIG_POWER_AVS is not set
|
||||
CONFIG_HWMON=y
|
||||
# CONFIG_HWMON_VID is not set
|
||||
|
@ -0,0 +1,10 @@
|
||||
--- a/arch/arm/boot/dts/imx6qdl-cubox-i.dtsi 2014-11-25 19:23:06.332485391 +0100
|
||||
+++ b/arch/arm/boot/dts/imx6qdl-cubox-i.dtsi 2014-11-25 19:23:24.675776865 +0100
|
||||
@@ -31,6 +31,7 @@
|
||||
label = "imx6:red:front";
|
||||
max-brightness = <248>;
|
||||
pwms = <&pwm1 0 50000>;
|
||||
+ linux,default-trigger = "heartbeat";
|
||||
};
|
||||
};
|
||||
|
@ -0,0 +1,161 @@
|
||||
From 7938bdb186ed300a8de0d78dff514f3c43209bc1 Mon Sep 17 00:00:00 2001
|
||||
From: vpeter4 <peter.vicman@gmail.com>
|
||||
Date: Wed, 10 Dec 2014 11:58:19 +0100
|
||||
Subject: [PATCH] chipidea: ci_hdrc_imx: Allow handling the clock for an USB
|
||||
phy/hub
|
||||
|
||||
for file ci_hdrc_imx.c
|
||||
1-2-chipidea-ci_hdrc_imx-Allow-handling-the-clock-for-an-USB-phy-hub.patch
|
||||
for file usbmisc_imx.c
|
||||
unknown patch (used from https://github.com/mtx512/linux-imx/commits/imx_3.10.17_1.0.0_beta-udoo)
|
||||
|
||||
Subject: [1/2] chipidea: ci_hdrc_imx: Allow handling the clock for an USB
|
||||
phy/hub
|
||||
From: Fabio Estevam <festevam@gmail.com>
|
||||
Date: Thu, 14 Nov 2013 00:09:46 -0200
|
||||
|
||||
When using external USB PHY or USB hub, it is common that they require a clock
|
||||
input.
|
||||
|
||||
Add a 'clk_phy' clock, so that it can be retrieved from the device tree and
|
||||
enabled in the driver, so that the clock can properly drive the external
|
||||
USB phy/hub.
|
||||
|
||||
Tested on a imx6q-udoo board, that connects via USBH1 to a USB2514 hub.
|
||||
|
||||
In this board the USB2514 is clocked from a 24MHz clock that comes from the
|
||||
imx6q CLKO2 pin.
|
||||
|
||||
---
|
||||
.../devicetree/bindings/usb/ci-hdrc-imx.txt | 2 ++
|
||||
.../drivers/usb/chipidea/ci_hdrc_imx.c | 20 +++++++++++++++++++-
|
||||
.../drivers/usb/chipidea/usbmisc_imx.c | 18 ++++++++++++++++++
|
||||
3 files changed, 39 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/Documentation/devicetree/bindings/usb/ci-hdrc-imx.txt b/Documentation/devicetree/bindings/usb/ci-hdrc-imx.txt
|
||||
index b4b5b79..07ba38c 100644
|
||||
--- a/Documentation/devicetree/bindings/usb/ci-hdrc-imx.txt
|
||||
+++ b/Documentation/devicetree/bindings/usb/ci-hdrc-imx.txt
|
||||
@@ -18,6 +18,8 @@ Optional properties:
|
||||
- vbus-supply: regulator for vbus
|
||||
- disable-over-current: disable over current detect
|
||||
- external-vbus-divider: enables off-chip resistor divider for Vbus
|
||||
+- clocks: phandle to the clock that drives the USB hub
|
||||
+- clock-names: must be "phy"
|
||||
|
||||
Examples:
|
||||
usb@02184000 { /* USB OTG */
|
||||
diff --git a/drivers/usb/chipidea/ci_hdrc_imx.c b/drivers/usb/chipidea/ci_hdrc_imx.c
|
||||
index de6b965..4e621fd 100644
|
||||
--- a/drivers/usb/chipidea/ci_hdrc_imx.c
|
||||
+++ b/drivers/usb/chipidea/ci_hdrc_imx.c
|
||||
@@ -68,6 +68,7 @@ struct ci_hdrc_imx_data {
|
||||
struct usb_phy *phy;
|
||||
struct platform_device *ci_pdev;
|
||||
struct clk *clk;
|
||||
+ struct clk *clk_phy;
|
||||
struct imx_usbmisc_data *usbmisc_data;
|
||||
bool supports_runtime_pm;
|
||||
bool in_lpm;
|
||||
@@ -155,10 +156,22 @@ static int ci_hdrc_imx_probe(struct platform_device *pdev)
|
||||
return ret;
|
||||
}
|
||||
|
||||
+ data->clk_phy = devm_clk_get(&pdev->dev, "phy");
|
||||
+ if (IS_ERR(data->clk_phy)) {
|
||||
+ data->clk_phy = NULL;
|
||||
+ } else {
|
||||
+ ret = clk_prepare_enable(data->clk_phy);
|
||||
+ if (ret) {
|
||||
+ dev_err(&pdev->dev,
|
||||
+ "Failed to enable clk_phy: %d\n", ret);
|
||||
+ goto err_clk;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
data->phy = devm_usb_get_phy_by_phandle(&pdev->dev, "fsl,usbphy", 0);
|
||||
if (IS_ERR(data->phy)) {
|
||||
ret = PTR_ERR(data->phy);
|
||||
- goto err_clk;
|
||||
+ goto err_clk_phy;
|
||||
}
|
||||
|
||||
pdata.phy = data->phy;
|
||||
@@ -234,6 +247,9 @@ static int ci_hdrc_imx_probe(struct platform_device *pdev)
|
||||
|
||||
disable_device:
|
||||
ci_hdrc_remove_device(data->ci_pdev);
|
||||
+err_clk_phy:
|
||||
+ if (data->clk_phy)
|
||||
+ clk_disable_unprepare(data->clk_phy);
|
||||
err_clk:
|
||||
clk_disable_unprepare(data->clk);
|
||||
release_bus_freq(BUS_FREQ_HIGH);
|
||||
@@ -246,6 +262,8 @@ static int ci_hdrc_imx_remove(struct platform_device *pdev)
|
||||
|
||||
pm_runtime_disable(&pdev->dev);
|
||||
ci_hdrc_remove_device(data->ci_pdev);
|
||||
+ if (data->clk_phy)
|
||||
+ clk_disable_unprepare(data->clk_phy);
|
||||
clk_disable_unprepare(data->clk);
|
||||
release_bus_freq(BUS_FREQ_HIGH);
|
||||
|
||||
diff --git a/drivers/usb/chipidea/usbmisc_imx.c b/drivers/usb/chipidea/usbmisc_imx.c
|
||||
index 683bcec..86fd7e6 100644
|
||||
--- a/drivers/usb/chipidea/usbmisc_imx.c
|
||||
+++ b/drivers/usb/chipidea/usbmisc_imx.c
|
||||
@@ -11,6 +11,7 @@
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/of_platform.h>
|
||||
+#include <linux/clk.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/delay.h>
|
||||
@@ -50,6 +51,7 @@ struct usbmisc_ops {
|
||||
struct imx_usbmisc {
|
||||
void __iomem *base;
|
||||
spinlock_t lock;
|
||||
+ struct clk *clk;
|
||||
const struct usbmisc_ops *ops;
|
||||
};
|
||||
|
||||
@@ -281,6 +283,7 @@ static int usbmisc_imx_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct resource *res;
|
||||
struct imx_usbmisc *data;
|
||||
+ int ret;
|
||||
struct of_device_id *tmp_dev;
|
||||
|
||||
if (usbmisc)
|
||||
@@ -297,6 +300,20 @@ static int usbmisc_imx_probe(struct platform_device *pdev)
|
||||
if (IS_ERR(data->base))
|
||||
return PTR_ERR(data->base);
|
||||
|
||||
+ data->clk = devm_clk_get(&pdev->dev, NULL);
|
||||
+ if (IS_ERR(data->clk)) {
|
||||
+ dev_err(&pdev->dev,
|
||||
+ "failed to get clock, err=%ld\n", PTR_ERR(data->clk));
|
||||
+ return PTR_ERR(data->clk);
|
||||
+ }
|
||||
+
|
||||
+ ret = clk_prepare_enable(data->clk);
|
||||
+ if (ret) {
|
||||
+ dev_err(&pdev->dev,
|
||||
+ "clk_prepare_enable failed, err=%d\n", ret);
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
tmp_dev = (struct of_device_id *)
|
||||
of_match_device(usbmisc_imx_dt_ids, &pdev->dev);
|
||||
data->ops = (const struct usbmisc_ops *)tmp_dev->data;
|
||||
@@ -319,6 +336,7 @@ static int usbmisc_imx_probe(struct platform_device *pdev)
|
||||
|
||||
static int usbmisc_imx_remove(struct platform_device *pdev)
|
||||
{
|
||||
+ clk_disable_unprepare(usbmisc->clk);
|
||||
usbmisc = NULL;
|
||||
return 0;
|
||||
}
|
||||
--
|
||||
1.8.1.2
|
185
projects/imx6/patches/linux/linux-331-udoo-poweroff-driver.patch
Normal file
185
projects/imx6/patches/linux/linux-331-udoo-poweroff-driver.patch
Normal file
@ -0,0 +1,185 @@
|
||||
From 1bc304cd507fe9eb5673223f0d76ec0aa4ff55f3 Mon Sep 17 00:00:00 2001
|
||||
From: mxt512 <mtx512@yahoo.co.uk>
|
||||
Date: Thu, 13 Feb 2014 20:13:27 +0000
|
||||
Subject: [PATCH] Add poweroff driver.
|
||||
|
||||
Existing pm_power_off function was in rtc-snvs. Given we need to reset the SAM3X and turn off
|
||||
the 5v supply on power down, lets implement a power-off driver to do this for now.
|
||||
|
||||
TODO: Not the cleanest solution but it works, should revisit.
|
||||
Overwriting power_off function with udoo_power_off in case uddo is used.
|
||||
|
||||
---
|
||||
arch/arm/boot/dts/imx6q-udoo.dts | 6 ++
|
||||
drivers/power/reset/Kconfig | 8 +++
|
||||
drivers/power/reset/Makefile | 1 +
|
||||
drivers/power/reset/udoo-poweroff.c | 114 ++++++++++++++++++++++++++++++++++++
|
||||
4 files changed, 129 insertions(+)
|
||||
create mode 100644 drivers/power/reset/udoo-poweroff.c
|
||||
|
||||
diff --git a/arch/arm/boot/dts/imx6q-udoo.dts b/arch/arm/boot/dts/imx6q-udoo.dts
|
||||
index 7cc0267..1b8cce1 100644
|
||||
--- a/arch/arm/boot/dts/imx6q-udoo.dts
|
||||
+++ b/arch/arm/boot/dts/imx6q-udoo.dts
|
||||
@@ -23,6 +23,12 @@
|
||||
memory {
|
||||
reg = <0x10000000 0x40000000>;
|
||||
};
|
||||
+
|
||||
+ poweroff {
|
||||
+ compatible = "udoo,poweroff";
|
||||
+ sam3x_rst_gpio = <&gpio1 0 0>;
|
||||
+ pwr_5v_gpio = <&gpio2 4 0>;
|
||||
+ };
|
||||
};
|
||||
|
||||
&fec {
|
||||
diff --git a/drivers/power/reset/Kconfig b/drivers/power/reset/Kconfig
|
||||
index 6d452a7..1a0620f 100644
|
||||
--- a/drivers/power/reset/Kconfig
|
||||
+++ b/drivers/power/reset/Kconfig
|
||||
@@ -57,3 +57,11 @@ config POWER_RESET_XGENE
|
||||
depends on POWER_RESET
|
||||
help
|
||||
Reboot support for the APM SoC X-Gene Eval boards.
|
||||
+
|
||||
+config POWER_RESET_UDOO
|
||||
+ bool "UDOO power-off driver"
|
||||
+ depends on POWER_RESET
|
||||
+ help
|
||||
+ This driver supports powering down the UDOO.
|
||||
+ Say Y if you have a UDOO.
|
||||
+
|
||||
diff --git a/drivers/power/reset/Makefile b/drivers/power/reset/Makefile
|
||||
index a5b4a77..b98df20 100644
|
||||
--- a/drivers/power/reset/Makefile
|
||||
+++ b/drivers/power/reset/Makefile
|
||||
@@ -4,4 +4,5 @@ obj-$(CONFIG_POWER_RESET_MSM) += msm-poweroff.o
|
||||
obj-$(CONFIG_POWER_RESET_QNAP) += qnap-poweroff.o
|
||||
obj-$(CONFIG_POWER_RESET_RESTART) += restart-poweroff.o
|
||||
obj-$(CONFIG_POWER_RESET_VEXPRESS) += vexpress-poweroff.o
|
||||
+obj-$(CONFIG_POWER_RESET_UDOO) += udoo-poweroff.o
|
||||
obj-$(CONFIG_POWER_RESET_XGENE) += xgene-reboot.o
|
||||
diff --git a/drivers/power/reset/udoo-poweroff.c b/drivers/power/reset/udoo-poweroff.c
|
||||
new file mode 100644
|
||||
index 0000000..0255401
|
||||
--- /dev/null
|
||||
+++ b/drivers/power/reset/udoo-poweroff.c
|
||||
@@ -0,0 +1,115 @@
|
||||
+/*
|
||||
+ * UDOO board power off
|
||||
+ *
|
||||
+ *
|
||||
+ * Copyright (C) 2014 Jasbir Matharu
|
||||
+ *
|
||||
+ * This program is free software; you can redistribute it and/or modify
|
||||
+ * it under the terms of the GNU General Public License version 2 as
|
||||
+ * published by the Free Software Foundation.
|
||||
+ *
|
||||
+ */
|
||||
+
|
||||
+#include <linux/platform_device.h>
|
||||
+#include <linux/module.h>
|
||||
+#include <linux/io.h>
|
||||
+#include <linux/gpio.h>
|
||||
+#include <linux/delay.h>
|
||||
+#include <linux/of_address.h>
|
||||
+#include <linux/of_platform.h>
|
||||
+#include <linux/of_gpio.h>
|
||||
+
|
||||
+#define SNVS_LPCR 0x04
|
||||
+
|
||||
+static int sam3x_rst_gpio,pwr_5v_gpio;
|
||||
+
|
||||
+static void udoo_power_off(void) {
|
||||
+ struct device_node *snvs_np;
|
||||
+ void __iomem *mx6_snvs_base;
|
||||
+ u32 value;
|
||||
+
|
||||
+ pr_info("Powering off udoo\n");
|
||||
+
|
||||
+ snvs_np = of_find_compatible_node(NULL, NULL, "fsl,sec-v4.0-mon-rtc-lp");
|
||||
+ if (!snvs_np) {
|
||||
+ pr_err("%s: failed to find sec-v4.0-mon-rtc-lp node\n",__func__);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ mx6_snvs_base = of_iomap(snvs_np, 0);
|
||||
+ if (!mx6_snvs_base) {
|
||||
+ pr_err("%s: failed to map sec-v4.0-mon-rtc-lp\n",__func__);
|
||||
+ goto put_snvs_node;
|
||||
+ }
|
||||
+
|
||||
+ value = readl(mx6_snvs_base + SNVS_LPCR);
|
||||
+ /*set TOP and DP_EN bit*/
|
||||
+ writel(value | 0x60, mx6_snvs_base + SNVS_LPCR);
|
||||
+
|
||||
+ gpio_request_one(sam3x_rst_gpio, GPIOF_OUT_INIT_LOW,"sam3x_rst_gpio"),
|
||||
+ msleep(5);
|
||||
+ gpio_request_one(pwr_5v_gpio, GPIOF_OUT_INIT_HIGH,"pwr_5v_gpio");
|
||||
+
|
||||
+put_snvs_node:
|
||||
+ of_node_put(snvs_np);
|
||||
+}
|
||||
+
|
||||
+static int udoo_power_off_probe(struct platform_device *pdev)
|
||||
+{
|
||||
+ struct device_node *pwr_off_np;
|
||||
+
|
||||
+ pwr_off_np = of_find_compatible_node(NULL, NULL, "udoo,poweroff");
|
||||
+ if (pwr_off_np) {
|
||||
+ of_node_put(pwr_off_np);
|
||||
+ /* udoo dtb loaded, run poweroff function from
|
||||
+ here and not snvs_poweroff */
|
||||
+ pr_err("%s: pm_power_off function already registered, overwriting with ours", __func__);
|
||||
+
|
||||
+ sam3x_rst_gpio = of_get_named_gpio(pdev->dev.of_node, "sam3x_rst_gpio", 0);
|
||||
+ pwr_5v_gpio = of_get_named_gpio(pdev->dev.of_node, "pwr_5v_gpio", 0);
|
||||
+ if (gpio_is_valid(sam3x_rst_gpio) && gpio_is_valid(pwr_5v_gpio)) {
|
||||
+ } else {
|
||||
+ pr_err("%s : failed to find sam3x_rst_gpio or pwr_5v_gpio property \n",__func__);
|
||||
+ return ENOENT;
|
||||
+ }
|
||||
+
|
||||
+ pm_power_off = udoo_power_off;
|
||||
+ pr_info("%s: ok\n",__func__);
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ /* If a pm_power_off function has already been added, leave it alone */
|
||||
+ if (pm_power_off != NULL) {
|
||||
+ pr_err("%s: pm_power_off function already registered",
|
||||
+ __func__);
|
||||
+ return -EBUSY;
|
||||
+ }
|
||||
+
|
||||
+ return -ENODEV;
|
||||
+}
|
||||
+
|
||||
+static int udoo_power_off_remove(struct platform_device *pdev)
|
||||
+{
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static const struct of_device_id power_off_dt_ids[] = {
|
||||
+ { .compatible = "udoo,poweroff", },
|
||||
+ { /* sentinel */ }
|
||||
+};
|
||||
+MODULE_DEVICE_TABLE(of, power_off_dt_ids);
|
||||
+
|
||||
+static struct platform_driver udoo_power_off_driver = {
|
||||
+ .driver = {
|
||||
+ .name = "udoo_power_off",
|
||||
+ .owner = THIS_MODULE,
|
||||
+ .of_match_table = of_match_ptr(power_off_dt_ids),
|
||||
+ },
|
||||
+ .probe = udoo_power_off_probe,
|
||||
+ .remove = udoo_power_off_remove,
|
||||
+};
|
||||
+module_platform_driver(udoo_power_off_driver);
|
||||
+
|
||||
+MODULE_AUTHOR("Jasbir Matharu");
|
||||
+MODULE_DESCRIPTION("UDOO Power off driver");
|
||||
+MODULE_LICENSE("GPL v2");
|
||||
--
|
||||
1.8.1.2
|
439
projects/imx6/patches/linux/linux-332-udoo-device_tree.patch
Normal file
439
projects/imx6/patches/linux/linux-332-udoo-device_tree.patch
Normal file
@ -0,0 +1,439 @@
|
||||
From be220380dbd0a899ff49434d1b0c68c9b07830b6 Mon Sep 17 00:00:00 2001
|
||||
From: vpeter4 <peter.vicman@gmail.com>
|
||||
Date: Thu, 11 Dec 2014 18:37:24 +0100
|
||||
Subject: [PATCH] udoo quad device tree
|
||||
|
||||
---
|
||||
arch/arm/boot/dts/imx6q-udoo.dts | 350 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--
|
||||
1 file changed, 343 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/arch/arm/boot/dts/imx6q-udoo.dts b/arch/arm/boot/dts/imx6q-udoo.dts
|
||||
index 1b8cce1..83b9a62 100644
|
||||
--- a/arch/arm/boot/dts/imx6q-udoo.dts
|
||||
+++ b/arch/arm/boot/dts/imx6q-udoo.dts
|
||||
@@ -2,6 +2,10 @@
|
||||
* Copyright 2013 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* Author: Fabio Estevam <fabio.estevam@freescale.com>
|
||||
+ *
|
||||
+ * Copyright (C) 2014 Jasbir
|
||||
+ * Copyright (C) 2014 udoo team
|
||||
+ * Copyright (C) 2014 vpeter
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
@@ -16,14 +20,166 @@
|
||||
model = "Udoo i.MX6 Quad Board";
|
||||
compatible = "udoo,imx6q-udoo", "fsl,imx6q";
|
||||
|
||||
- chosen {
|
||||
- stdout-path = &uart2;
|
||||
+ aliases {
|
||||
+ mxcfb0 = &mxcfb1;
|
||||
+ mxcfb1 = &mxcfb2;
|
||||
+ mxcfb2 = &mxcfb3;
|
||||
+ mxcfb3 = &mxcfb4;
|
||||
};
|
||||
|
||||
+ chosen {
|
||||
+ stdout-path = &uart1;
|
||||
+ };
|
||||
+
|
||||
memory {
|
||||
reg = <0x10000000 0x40000000>;
|
||||
};
|
||||
|
||||
+ regulators {
|
||||
+ compatible = "simple-bus";
|
||||
+
|
||||
+ reg_2p5v: 2p5v {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "2P5V";
|
||||
+ regulator-min-microvolt = <2500000>;
|
||||
+ regulator-max-microvolt = <2500000>;
|
||||
+ regulator-always-on;
|
||||
+ };
|
||||
+
|
||||
+ reg_3p3v: 3p3v {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "3P3V";
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ regulator-always-on;
|
||||
+ };
|
||||
+
|
||||
+ aux_5v: aux5v {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "AUX_5V";
|
||||
+ regulator-min-microvolt = <5000000>;
|
||||
+ regulator-max-microvolt = <5000000>;
|
||||
+ gpio = <&gpio6 10 1>;
|
||||
+ regulator-boot-on;
|
||||
+ enable-active-high;
|
||||
+ };
|
||||
+
|
||||
+ reg_sensor: sensor_supply {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "sensor-SUPPLY";
|
||||
+ enable-active-high;
|
||||
+ };
|
||||
+
|
||||
+ reg_usb_otg_vbus: usb_otg_vbus {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "usb_otg_vbus";
|
||||
+ regulator-min-microvolt = <5000000>;
|
||||
+ regulator-max-microvolt = <5000000>;
|
||||
+ enable-active-high;
|
||||
+ };
|
||||
+
|
||||
+ reg_usb_h1_vbus: 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>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ mxcfb1: fb@0 {
|
||||
+ compatible = "fsl,mxc_sdc_fb";
|
||||
+ disp_dev = "hdmi";
|
||||
+ interface_pix_fmt = "RGB24";
|
||||
+ mode_str ="1920x1080M@60";
|
||||
+ default_bpp = <24>;
|
||||
+ int_clk = <0>;
|
||||
+ late_init = <0>;
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+
|
||||
+ mxcfb2: fb@1 {
|
||||
+ compatible = "fsl,mxc_sdc_fb";
|
||||
+ disp_dev = "hdmi";
|
||||
+ interface_pix_fmt = "RGB24";
|
||||
+ mode_str ="1920x1080M@60";
|
||||
+ default_bpp = <24>;
|
||||
+ int_clk = <0>;
|
||||
+ late_init = <0>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ mxcfb3: fb@2 {
|
||||
+ compatible = "fsl,mxc_sdc_fb";
|
||||
+ disp_dev = "hdmi";
|
||||
+ interface_pix_fmt = "RGB24";
|
||||
+ mode_str ="1920x1080M@60";
|
||||
+ default_bpp = <24>;
|
||||
+ int_clk = <0>;
|
||||
+ late_init = <0>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ mxcfb4: fb@3 {
|
||||
+ compatible = "fsl,mxc_sdc_fb";
|
||||
+ disp_dev = "hdmi";
|
||||
+ interface_pix_fmt = "RGB24";
|
||||
+ mode_str ="1920x1080M@60";
|
||||
+ default_bpp = <24>;
|
||||
+ int_clk = <0>;
|
||||
+ late_init = <0>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ codec: vt1613 {
|
||||
+ compatible = "wlf,vt1613";
|
||||
+ amic-mono;
|
||||
+ };
|
||||
+
|
||||
+ sound {
|
||||
+ compatible = "fsl,imx6q-udoo-vt1613",
|
||||
+ "fsl,imx-audio-vt1613";
|
||||
+ model = "vt1613-audio";
|
||||
+ ssi-controller = <&ssi1>;
|
||||
+ audio-codec = <&codec>;
|
||||
+ audio-routing =
|
||||
+ "Headphone Jack", "HPOUTL",
|
||||
+ "Headphone Jack", "HPOUTR",
|
||||
+ "Ext Spk", "SPKOUTL",
|
||||
+ "Ext Spk", "SPKOUTR",
|
||||
+ "MICBIAS", "AMIC",
|
||||
+ "IN3R", "MICBIAS",
|
||||
+ "DMIC", "MICBIAS",
|
||||
+ "DMICDAT", "DMIC";
|
||||
+ mux-int-port = <1>;
|
||||
+ mux-ext-port = <6>;
|
||||
+ };
|
||||
+// hp-det-gpios = <&gpio7 8 1>;
|
||||
+// mic-det-gpios = <&gpio1 9 1>;
|
||||
+
|
||||
+ sound-hdmi {
|
||||
+ compatible = "fsl,imx6q-audio-hdmi",
|
||||
+ "fsl,imx-audio-hdmi";
|
||||
+ model = "imx-audio-hdmi";
|
||||
+ hdmi-controller = <&hdmi_audio>;
|
||||
+ };
|
||||
+
|
||||
+ sound-spdif {
|
||||
+ compatible = "fsl,imx-audio-spdif",
|
||||
+ "fsl,imx-sabreauto-spdif";
|
||||
+ model = "imx-spdif";
|
||||
+ spdif-controller = <&spdif>;
|
||||
+ spdif-in;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ v4l2_out {
|
||||
+ compatible = "fsl,mxc_v4l2_output";
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+
|
||||
poweroff {
|
||||
compatible = "udoo,poweroff";
|
||||
sam3x_rst_gpio = <&gpio1 0 0>;
|
||||
@@ -31,6 +187,55 @@
|
||||
};
|
||||
};
|
||||
|
||||
+&hdmi_audio {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&hdmi_core {
|
||||
+ ipu_id = <0>;
|
||||
+ disp_id = <0>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&hdmi_video {
|
||||
+ fsl,phy_reg_vlev = <0x0294>;
|
||||
+ fsl,phy_reg_cksymtx = <0x800d>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&i2c1 {
|
||||
+ clock-frequency = <100000>;
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&pinctrl_i2c1_2>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&i2c2 {
|
||||
+ clock-frequency = <100000>;
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&pinctrl_i2c2_2>;
|
||||
+ status = "okay";
|
||||
+
|
||||
+ egalax_ts@04 {
|
||||
+ compatible = "eeti,egalax_ts";
|
||||
+ reg = <0x04>;
|
||||
+ interrupt-parent = <&gpio2>;
|
||||
+ interrupts = <28 2>;
|
||||
+ wakeup-gpios = <&gpio2 28 0>;
|
||||
+ };
|
||||
+
|
||||
+ hdmi: edid@50 {
|
||||
+ compatible = "fsl,imx6-hdmi-i2c";
|
||||
+ reg = <0x50>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&i2c3 {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&pinctrl_i2c3_5>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
&fec {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_enet>;
|
||||
@@ -39,9 +244,68 @@
|
||||
};
|
||||
|
||||
&iomuxc {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&pinctrl_hog>;
|
||||
+
|
||||
imx6q-udoo {
|
||||
- pinctrl_enet: enetgrp {
|
||||
+ pinctrl_hog: hoggrp {
|
||||
fsl,pins = <
|
||||
+ MX6QDL_PAD_NANDF_D4__GPIO2_IO04 0x80000000 /* 5v enable */
|
||||
+ MX6QDL_PAD_NANDF_CS0__GPIO6_IO11 0x80000000 /* Vtt suspend */
|
||||
+ MX6QDL_PAD_SD2_DAT0__GPIO1_IO15 0x80000000 /* touch reset */
|
||||
+ MX6QDL_PAD_EIM_EB2__GPIO2_IO30 0x80000000 /* audio reset */
|
||||
+ MX6QDL_PAD_EIM_EB3__GPIO2_IO31 0x80000000 /* ethernet power */
|
||||
+
|
||||
+ MX6QDL_PAD_GPIO_17__GPIO7_IO12 0x80000000 /* usb hub reset */
|
||||
+ MX6QDL_PAD_NANDF_CS2__CCM_CLKO2 0x130b0 /* clk usb hub */
|
||||
+ MX6QDL_PAD_EIM_WAIT__GPIO5_IO00 0xb0b1 /* usb otg select */
|
||||
+
|
||||
+ MX6QDL_PAD_NANDF_D5__GPIO2_IO05 0x80000000 /* sdcard power */
|
||||
+ MX6QDL_PAD_SD3_DAT5__GPIO7_IO00 0x80000000 /* sd card detect */
|
||||
+ MX6QDL_PAD_DISP0_DAT5__GPIO4_IO26 0x80000000 /* select dbg uart*/
|
||||
+ MX6QDL_PAD_GPIO_0__GPIO1_IO00 0x80000000 /* SAM3X reset */
|
||||
+ MX6QDL_PAD_DISP0_DAT0__GPIO4_IO21 0x30b1 /* SAM3X erase */
|
||||
+ MX6QDL_PAD_GPIO_16__GPIO7_IO11 0xb0b1 /* SAM3X vbus_en */
|
||||
+ MX6QDL_PAD_SD4_DAT7__GPIO2_IO15 0x80000000 /* SAM3X usb host */
|
||||
+ MX6QDL_PAD_GPIO_2__GPIO1_IO02 0x80000000 /* panel on */
|
||||
+ MX6QDL_PAD_GPIO_4__GPIO1_IO04 0x80000000 /* backlight on */
|
||||
+ MX6QDL_PAD_CSI0_DAT19__GPIO6_IO05 0x80000000 /* camera reset */
|
||||
+ MX6QDL_PAD_CSI0_DAT18__GPIO6_IO04 0x80000000 /* camera enable */
|
||||
+ MX6QDL_PAD_CSI0_PIXCLK__GPIO5_IO18 0x80000000 /* input mon serial*/
|
||||
+ MX6QDL_PAD_CSI0_DAT17__GPIO6_IO03 0x80000000 /* input mon serial*/
|
||||
+ MX6QDL_PAD_EIM_A19__GPIO2_IO19 0x80000000 /* writeprotect spi*/
|
||||
+ MX6QDL_PAD_GPIO_3__GPIO1_IO03 0x30b1 /* arduino pinout */
|
||||
+
|
||||
+ MX6QDL_PAD_DI0_PIN2__AUD6_TXD 0x80000000 /* audio audmux */
|
||||
+ MX6QDL_PAD_DI0_PIN3__AUD6_TXFS 0x80000000 /* audio audmux */
|
||||
+ MX6QDL_PAD_DI0_PIN4__AUD6_RXD 0x80000000 /* audio audmux */
|
||||
+ MX6QDL_PAD_DI0_PIN15__AUD6_TXC 0x80000000 /* audio audmux */
|
||||
+ >;
|
||||
+ };
|
||||
+
|
||||
+ pinctrl_i2c1_2: i2c1grp-2 {
|
||||
+ fsl,pins = <
|
||||
+ MX6QDL_PAD_CSI0_DAT8__I2C1_SDA 0x4001b8b1
|
||||
+ MX6QDL_PAD_CSI0_DAT9__I2C1_SCL 0x4001b8b1
|
||||
+ >;
|
||||
+ };
|
||||
+
|
||||
+ pinctrl_i2c2_2: i2c2grp-2 {
|
||||
+ fsl,pins = <
|
||||
+ MX6QDL_PAD_KEY_COL3__I2C2_SCL 0x4001b8b1
|
||||
+ MX6QDL_PAD_KEY_ROW3__I2C2_SDA 0x4001b8b1
|
||||
+ >;
|
||||
+ };
|
||||
+
|
||||
+ pinctrl_i2c3_5: i2c3grp-5 {
|
||||
+ fsl,pins = <
|
||||
+ MX6QDL_PAD_GPIO_5__I2C3_SCL 0x4001b8b1
|
||||
+ MX6QDL_PAD_GPIO_6__I2C3_SDA 0x4001b8b1
|
||||
+ >;
|
||||
+ };
|
||||
+
|
||||
+ pinctrl_enet: enetgrp {
|
||||
+ fsl,pins = <
|
||||
MX6QDL_PAD_RGMII_RXC__RGMII_RXC 0x1b0b0
|
||||
MX6QDL_PAD_RGMII_RD0__RGMII_RD0 0x1b0b0
|
||||
MX6QDL_PAD_RGMII_RD1__RGMII_RD1 0x1b0b0
|
||||
@@ -57,10 +321,10 @@
|
||||
MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK 0x1b0b0
|
||||
MX6QDL_PAD_ENET_MDIO__ENET_MDIO 0x1b0b0
|
||||
MX6QDL_PAD_ENET_MDC__ENET_MDC 0x1b0b0
|
||||
- MX6QDL_PAD_GPIO_16__ENET_REF_CLK 0x4001b0a8
|
||||
+ MX6QDL_PAD_EIM_D23__GPIO3_IO23 0x80000000 /* reset */
|
||||
>;
|
||||
};
|
||||
-
|
||||
+
|
||||
pinctrl_uart2: uart2grp {
|
||||
fsl,pins = <
|
||||
MX6QDL_PAD_EIM_D26__UART2_TX_DATA 0x1b0b1
|
||||
@@ -68,19 +332,51 @@
|
||||
>;
|
||||
};
|
||||
|
||||
+ pinctrl_uart4: uart4grp {
|
||||
+ fsl,pins = <
|
||||
+ MX6QDL_PAD_KEY_COL0__UART4_TX_DATA 0x1b0b1
|
||||
+ MX6QDL_PAD_KEY_ROW0__UART4_RX_DATA 0x1b0b1
|
||||
+ >;
|
||||
+ };
|
||||
+
|
||||
pinctrl_usdhc3: usdhc3grp {
|
||||
fsl,pins = <
|
||||
- MX6QDL_PAD_SD3_CMD__SD3_CMD 0x17059
|
||||
- MX6QDL_PAD_SD3_CLK__SD3_CLK 0x10059
|
||||
+ MX6QDL_PAD_SD3_CMD__SD3_CMD 0x17059
|
||||
+ MX6QDL_PAD_SD3_CLK__SD3_CLK 0x10059
|
||||
MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x17059
|
||||
MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x17059
|
||||
MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x17059
|
||||
MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x17059
|
||||
>;
|
||||
};
|
||||
+
|
||||
+ pinctrl_i2c3_1: i2c3grp-1 {
|
||||
+ fsl,pins = <
|
||||
+ MX6QDL_PAD_EIM_D17__I2C3_SCL 0x4001b8b1
|
||||
+ MX6QDL_PAD_EIM_D18__I2C3_SDA 0x4001b8b1
|
||||
+ >;
|
||||
+ };
|
||||
+
|
||||
+ pinctrl_spdif_1: spdifgrp-1 {
|
||||
+ fsl,pins = <
|
||||
+ MX6QDL_PAD_KEY_COL3__SPDIF_IN 0x1b0b0
|
||||
+ >;
|
||||
+ };
|
||||
+
|
||||
+ /*pinctrl_hdmi_cec_1: hdmicecgrp-1 {
|
||||
+ fsl,pins = <
|
||||
+ MX6QDL_PAD_EIM_A25__HDMI_TX_CEC_LINE 0x1f8b0
|
||||
+ >;
|
||||
+ };*/
|
||||
};
|
||||
};
|
||||
|
||||
+&spdif {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&pinctrl_spdif_1>;
|
||||
+ status = "disabled";
|
||||
+};
|
||||
+
|
||||
&sata {
|
||||
status = "okay";
|
||||
};
|
||||
@@ -91,9 +387,49 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
+&uart4 { /* sam3x port */
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&pinctrl_uart4>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
&usdhc3 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_usdhc3>;
|
||||
non-removable;
|
||||
+ keep-power-in-suspend;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usbotg {
|
||||
+ status = "disabled";
|
||||
+};
|
||||
+
|
||||
+&usbh1 {
|
||||
+ vbus-supply = <®_usb_h1_vbus>;
|
||||
+ clocks = <&clks 201>;
|
||||
+ clock-names = "phy";
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&hdmi_cec {
|
||||
+ /*pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&pinctrl_hdmi_cec_1>;*/
|
||||
+ status = "disabled";
|
||||
+};
|
||||
+
|
||||
+&mxcfb1 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&mxcfb2 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&mxcfb3 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&mxcfb4 {
|
||||
status = "okay";
|
||||
};
|
||||
--
|
||||
1.8.1.2
|
||||
|
Loading…
x
Reference in New Issue
Block a user