* [PATCH v3 1/7] ARM: dts: skov-imx6: add USB nodes
2021-09-20 11:15 [PATCH v3 0/7] add noswitch support for skov boards Oleksij Rempel
@ 2021-09-20 11:15 ` Oleksij Rempel
2021-09-20 11:15 ` [PATCH v3 2/7] ARM: boards: skov-imx6: fixup_machine_compatible() add optional root node Oleksij Rempel
` (5 subsequent siblings)
6 siblings, 0 replies; 9+ messages in thread
From: Oleksij Rempel @ 2021-09-20 11:15 UTC (permalink / raw)
To: barebox; +Cc: Oleksij Rempel
We need USB working to make use of USB ethernet adapters.
Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
---
arch/arm/dts/imx6qdl-skov-imx6.dtsi | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/arch/arm/dts/imx6qdl-skov-imx6.dtsi b/arch/arm/dts/imx6qdl-skov-imx6.dtsi
index 03f3cb02fc..371a931e53 100644
--- a/arch/arm/dts/imx6qdl-skov-imx6.dtsi
+++ b/arch/arm/dts/imx6qdl-skov-imx6.dtsi
@@ -273,6 +273,26 @@
remote-endpoint = <&display0_in>;
};
+&usbh1 {
+ disable-over-current;
+ status = "okay";
+};
+
+/* no usbh2 */
+&usbphynop1 {
+ status = "disabled";
+};
+
+/* no usbh3 */
+&usbphynop2 {
+ status = "disabled";
+};
+
+&usbotg {
+ disable-over-current;
+ status = "okay";
+};
+
&iomuxc {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_hog>;
--
2.30.2
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v3 2/7] ARM: boards: skov-imx6: fixup_machine_compatible() add optional root node
2021-09-20 11:15 [PATCH v3 0/7] add noswitch support for skov boards Oleksij Rempel
2021-09-20 11:15 ` [PATCH v3 1/7] ARM: dts: skov-imx6: add USB nodes Oleksij Rempel
@ 2021-09-20 11:15 ` Oleksij Rempel
2021-09-20 11:15 ` [PATCH v3 3/7] ARM: boards: skov-imx6: add switch detection Oleksij Rempel
` (4 subsequent siblings)
6 siblings, 0 replies; 9+ messages in thread
From: Oleksij Rempel @ 2021-09-20 11:15 UTC (permalink / raw)
To: barebox; +Cc: Oleksij Rempel
This will be needed by the next patch
Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
---
arch/arm/boards/skov-imx6/board.c | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/arch/arm/boards/skov-imx6/board.c b/arch/arm/boards/skov-imx6/board.c
index a58172b2b1..030ac62c52 100644
--- a/arch/arm/boards/skov-imx6/board.c
+++ b/arch/arm/boards/skov-imx6/board.c
@@ -432,16 +432,18 @@ static void skov_init_board(const struct board_description *variant)
}
}
-static void fixup_machine_compatible(const char *compat)
+static void fixup_machine_compatible(const char *compat,
+ struct device_node *root)
{
const char *curcompat;
- struct device_node *root;
int cclen = 0, clen = strlen(compat) + 1;
void *buf;
- root = of_get_root_node();
- if (!root)
- return;
+ if (!root) {
+ root = of_get_root_node();
+ if (!root)
+ return;
+ }
curcompat = of_get_property(root, "compatible", &cclen);
@@ -487,7 +489,7 @@ static int skov_imx6_probe(struct device_d *dev)
globalvar_add_simple("board.dts", variant->dts_compatible);
globalvar_add_simple("board.display", variant->display ?: NULL);
- fixup_machine_compatible(variant->dts_compatible);
+ fixup_machine_compatible(variant->dts_compatible, NULL);
skov_init_board(variant);
--
2.30.2
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v3 3/7] ARM: boards: skov-imx6: add switch detection
2021-09-20 11:15 [PATCH v3 0/7] add noswitch support for skov boards Oleksij Rempel
2021-09-20 11:15 ` [PATCH v3 1/7] ARM: dts: skov-imx6: add USB nodes Oleksij Rempel
2021-09-20 11:15 ` [PATCH v3 2/7] ARM: boards: skov-imx6: fixup_machine_compatible() add optional root node Oleksij Rempel
@ 2021-09-20 11:15 ` Oleksij Rempel
2021-10-01 14:29 ` Sascha Hauer
2021-09-20 11:15 ` [PATCH v3 4/7] ARM: boards: skov-imx6: disable eth0 for barebox if no switch is detected Oleksij Rempel
` (3 subsequent siblings)
6 siblings, 1 reply; 9+ messages in thread
From: Oleksij Rempel @ 2021-09-20 11:15 UTC (permalink / raw)
To: barebox; +Cc: Oleksij Rempel
There are board variants with same board ID but not switch. Detect this
variants.
Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
---
arch/arm/boards/skov-imx6/board.c | 158 +++++++++++++++++++++++++-----
1 file changed, 134 insertions(+), 24 deletions(-)
diff --git a/arch/arm/boards/skov-imx6/board.c b/arch/arm/boards/skov-imx6/board.c
index 030ac62c52..a94c2cd25c 100644
--- a/arch/arm/boards/skov-imx6/board.c
+++ b/arch/arm/boards/skov-imx6/board.c
@@ -11,6 +11,7 @@
#include <net.h>
#include <of_gpio.h>
#include <gpio.h>
+#include <linux/micrel_phy.h>
#include "version.h"
@@ -130,6 +131,9 @@ copy_mac_from_eth0:
return eth_of_fixup_node_from_eth_device(root, node_path, ethname);
}
+#define SKOV_GPIO_MDIO_BUS 0
+#define SKOV_LAN1_PHY_ADDR 1
+
#define MAX_V_GPIO 8
struct board_description {
@@ -303,20 +307,121 @@ static const struct board_description imx6_variants[] = {
};
static int skov_board_no = -1;
+static bool skov_no_switch = false;
+static const char *no_switch_suffix = "-noswitch";
-static int skov_imx6_fixup(struct device_node *root, void *unused)
+static void fixup_machine_compatible(const char *compat,
+ struct device_node *root)
{
+ int cclen = 0, clen = strlen(compat) + 1;
+ const char *curcompat;
+ void *buf;
+
+ if (!root) {
+ root = of_get_root_node();
+ if (!root)
+ return;
+ }
+
+ curcompat = of_get_property(root, "compatible", &cclen);
+
+ buf = xzalloc(cclen + clen);
+
+ memcpy(buf, compat, clen);
+ memcpy(buf + clen, curcompat, cclen);
+
+ /*
+ * Prepend the compatible from board entry to the machine compatible.
+ * Used to match bootspec entries against it.
+ */
+ of_set_property(root, "compatible", buf, cclen + clen, true);
+
+ free(buf);
+}
+
+static void fixup_noswitch_machine_compatible(struct device_node *root)
+{
+ const char *compat = imx6_variants[skov_board_no].dts_compatible;
+ const char *generic = "skov,imx6";
+ size_t size, size_generic;
+ char *buf;
int ret;
- const char *val;
- uint32_t brightness;
+
+ size = strlen(compat) + strlen(no_switch_suffix) + 1;
+ size_generic = strlen(generic) + strlen(no_switch_suffix) + 1;
+ size = max(size, size_generic);
+ buf = xzalloc(size);
+ if (!buf) {
+ pr_warn("Can't allocate buffer\n");
+ return;
+ }
+
+ /* add generic compatible, so systemd&co can make right decisions */
+ ret = snprintf(buf, size, "%s%s", generic, no_switch_suffix);
+ if (ret >= 0)
+ fixup_machine_compatible(buf, root);
+ else
+ pr_warn("Can't prepare generic compatible string\n");
+
+ /* add specific compatible as fallback, in case this board has new
+ * challenges.
+ */
+ ret = snprintf(buf, size, "%s%s", compat, no_switch_suffix);
+ if (ret >= 0)
+ fixup_machine_compatible(buf, root);
+ else
+ pr_warn("Can't prepare specific compatible string\n");
+
+ free(buf);
+}
+
+static void skov_imx6_no_switch(struct device_node *root)
+{
struct device_node *node;
- struct device_node *chosen = of_create_node(root, "/chosen");
+ int ret;
+
+ fixup_noswitch_machine_compatible(root);
+ node = of_find_node_by_path_from(root, "/soc/bus@2100000/ethernet@2188000");
+ if (!node) {
+ pr_warn("Did not find node to disable it\n");
+ } else {
+ ret = of_device_disable(node);
+ if (ret)
+ pr_warn("Can't disable ethernet node\n");
+ }
+
+ node = of_find_node_by_alias(root, "mdio-gpio0");
+ if (node) {
+ ret = of_device_disable(node);
+ if (ret)
+ pr_warn("Can't disable mdio-gpio0 node\n");
+ } else {
+ pr_warn("Can't find mdio-gpio0 node\n");
+ }
+}
+
+static void skov_imx6_switch(struct device_node *root)
+{
eth_of_fixup_node_from_eth_device(root,
"/mdio-gpio/ksz8873@3/ports/ports@0", "eth0");
eth2_of_fixup_node_individually(root,
"/mdio-gpio/ksz8873@3/ports/ports@1", "eth0",
"state.ethaddr.eth2", "/state/ethaddr/eth2");
+}
+
+static int skov_imx6_fixup(struct device_node *root, void *unused)
+{
+ struct device_node *chosen = of_create_node(root, "/chosen");
+ struct device_node *node;
+ uint32_t brightness;
+ const char *val;
+ int ret;
+
+ if (skov_no_switch)
+ skov_imx6_no_switch(root);
+ else
+ skov_imx6_switch(root);
switch (bootsource_get()) {
case BOOTSOURCE_MMC:
@@ -432,34 +537,39 @@ static void skov_init_board(const struct board_description *variant)
}
}
-static void fixup_machine_compatible(const char *compat,
- struct device_node *root)
+static int skov_switch_test(void)
{
- const char *curcompat;
- int cclen = 0, clen = strlen(compat) + 1;
- void *buf;
+ struct phy_device *phydev;
+ struct mii_bus *mii;
+ int ret;
- if (!root) {
- root = of_get_root_node();
- if (!root)
- return;
- }
+ if (skov_board_no < 0)
+ return 0;
- curcompat = of_get_property(root, "compatible", &cclen);
+ /* On this boards, we have only one MDIO bus. So, it is enough to take
+ * the first one.
+ */
+ mii = mdiobus_get_bus(SKOV_GPIO_MDIO_BUS);
+ /* We can't read the switch ID, but we get get ID of the first PHY,
+ * which is enough to test if the switch is attached.
+ */
+ phydev = get_phy_device(mii, SKOV_LAN1_PHY_ADDR);
+ if (IS_ERR(phydev))
+ goto no_switch;
- buf = xzalloc(cclen + clen);
+ if (phydev->phy_id != PHY_ID_KSZ886X)
+ goto no_switch;
- memcpy(buf, compat, clen);
- memcpy(buf + clen, curcompat, cclen);
+ return 0;
- /*
- * Prepend the compatible from board entry to the machine compatible.
- * Used to match bootspec entries against it.
- */
- of_set_property(root, "compatible", buf, cclen + clen, true);
+no_switch:
+ skov_no_switch = true;
- free(buf);
+ pr_notice("No-switch variant is detected\n");
+
+ return 0;
}
+late_initcall(skov_switch_test);
static int skov_imx6_probe(struct device_d *dev)
{
--
2.30.2
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v3 3/7] ARM: boards: skov-imx6: add switch detection
2021-09-20 11:15 ` [PATCH v3 3/7] ARM: boards: skov-imx6: add switch detection Oleksij Rempel
@ 2021-10-01 14:29 ` Sascha Hauer
0 siblings, 0 replies; 9+ messages in thread
From: Sascha Hauer @ 2021-10-01 14:29 UTC (permalink / raw)
To: Oleksij Rempel; +Cc: barebox
On Mon, Sep 20, 2021 at 01:15:24PM +0200, Oleksij Rempel wrote:
> There are board variants with same board ID but not switch. Detect this
> variants.
>
> Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
> ---
> arch/arm/boards/skov-imx6/board.c | 158 +++++++++++++++++++++++++-----
> 1 file changed, 134 insertions(+), 24 deletions(-)
>
> diff --git a/arch/arm/boards/skov-imx6/board.c b/arch/arm/boards/skov-imx6/board.c
> index 030ac62c52..a94c2cd25c 100644
> --- a/arch/arm/boards/skov-imx6/board.c
> +++ b/arch/arm/boards/skov-imx6/board.c
> @@ -11,6 +11,7 @@
> #include <net.h>
> #include <of_gpio.h>
> #include <gpio.h>
> +#include <linux/micrel_phy.h>
>
> #include "version.h"
>
> @@ -130,6 +131,9 @@ copy_mac_from_eth0:
> return eth_of_fixup_node_from_eth_device(root, node_path, ethname);
> }
>
> +#define SKOV_GPIO_MDIO_BUS 0
> +#define SKOV_LAN1_PHY_ADDR 1
> +
> #define MAX_V_GPIO 8
>
> struct board_description {
> @@ -303,20 +307,121 @@ static const struct board_description imx6_variants[] = {
> };
>
> static int skov_board_no = -1;
> +static bool skov_no_switch = false;
I think a skov_have_switch variable would be more intuitive.
> +static const char *no_switch_suffix = "-noswitch";
>
> -static int skov_imx6_fixup(struct device_node *root, void *unused)
> +static void fixup_machine_compatible(const char *compat,
> + struct device_node *root)
> {
> + int cclen = 0, clen = strlen(compat) + 1;
> + const char *curcompat;
> + void *buf;
> +
> + if (!root) {
> + root = of_get_root_node();
> + if (!root)
> + return;
> + }
> +
> + curcompat = of_get_property(root, "compatible", &cclen);
> +
> + buf = xzalloc(cclen + clen);
> +
> + memcpy(buf, compat, clen);
> + memcpy(buf + clen, curcompat, cclen);
> +
> + /*
> + * Prepend the compatible from board entry to the machine compatible.
> + * Used to match bootspec entries against it.
> + */
> + of_set_property(root, "compatible", buf, cclen + clen, true);
> +
> + free(buf);
> +}
> +
> +static void fixup_noswitch_machine_compatible(struct device_node *root)
> +{
> + const char *compat = imx6_variants[skov_board_no].dts_compatible;
> + const char *generic = "skov,imx6";
> + size_t size, size_generic;
> + char *buf;
> int ret;
> - const char *val;
> - uint32_t brightness;
> +
> + size = strlen(compat) + strlen(no_switch_suffix) + 1;
> + size_generic = strlen(generic) + strlen(no_switch_suffix) + 1;
> + size = max(size, size_generic);
> + buf = xzalloc(size);
> + if (!buf) {
> + pr_warn("Can't allocate buffer\n");
> + return;
> + }
No need to check xzallox return value.
> +
> + /* add generic compatible, so systemd&co can make right decisions */
> + ret = snprintf(buf, size, "%s%s", generic, no_switch_suffix);
> + if (ret >= 0)
> + fixup_machine_compatible(buf, root);
> + else
> + pr_warn("Can't prepare generic compatible string\n");
> +
> + /* add specific compatible as fallback, in case this board has new
> + * challenges.
> + */
> + ret = snprintf(buf, size, "%s%s", compat, no_switch_suffix);
> + if (ret >= 0)
> + fixup_machine_compatible(buf, root);
> + else
> + pr_warn("Can't prepare specific compatible string\n");
> +
> + free(buf);
Looks like this code could be more straight forward using two xasprintf
calls.
> +}
> +
> +static void skov_imx6_no_switch(struct device_node *root)
> +{
> struct device_node *node;
> - struct device_node *chosen = of_create_node(root, "/chosen");
> + int ret;
> +
> + fixup_noswitch_machine_compatible(root);
>
> + node = of_find_node_by_path_from(root, "/soc/bus@2100000/ethernet@2188000");
> + if (!node) {
> + pr_warn("Did not find node to disable it\n");
> + } else {
Please use positive logic like you did below.
Sascha
--
Pengutronix e.K. | |
Steuerwalder Str. 21 | http://www.pengutronix.de/ |
31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v3 4/7] ARM: boards: skov-imx6: disable eth0 for barebox if no switch is detected
2021-09-20 11:15 [PATCH v3 0/7] add noswitch support for skov boards Oleksij Rempel
` (2 preceding siblings ...)
2021-09-20 11:15 ` [PATCH v3 3/7] ARM: boards: skov-imx6: add switch detection Oleksij Rempel
@ 2021-09-20 11:15 ` Oleksij Rempel
2021-09-20 11:15 ` [PATCH v3 5/7] ARM: boards: skov-imx6: fixup different DTS variants Oleksij Rempel
` (2 subsequent siblings)
6 siblings, 0 replies; 9+ messages in thread
From: Oleksij Rempel @ 2021-09-20 11:15 UTC (permalink / raw)
To: barebox; +Cc: Oleksij Rempel
Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
---
arch/arm/boards/skov-imx6/board.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/arch/arm/boards/skov-imx6/board.c b/arch/arm/boards/skov-imx6/board.c
index a94c2cd25c..4044bacb28 100644
--- a/arch/arm/boards/skov-imx6/board.c
+++ b/arch/arm/boards/skov-imx6/board.c
@@ -540,6 +540,7 @@ static void skov_init_board(const struct board_description *variant)
static int skov_switch_test(void)
{
struct phy_device *phydev;
+ struct device_d *eth0;
struct mii_bus *mii;
int ret;
@@ -567,6 +568,15 @@ no_switch:
pr_notice("No-switch variant is detected\n");
+ eth0 = get_device_by_name("eth0");
+ if (eth0) {
+ ret = dev_set_param(eth0, "mode", "disabled");
+ if (ret)
+ pr_warn("Can't set eth0 mode\n");
+ } else {
+ pr_warn("Can't disable eth0\n");
+ }
+
return 0;
}
late_initcall(skov_switch_test);
--
2.30.2
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v3 5/7] ARM: boards: skov-imx6: fixup different DTS variants
2021-09-20 11:15 [PATCH v3 0/7] add noswitch support for skov boards Oleksij Rempel
` (3 preceding siblings ...)
2021-09-20 11:15 ` [PATCH v3 4/7] ARM: boards: skov-imx6: disable eth0 for barebox if no switch is detected Oleksij Rempel
@ 2021-09-20 11:15 ` Oleksij Rempel
2021-09-20 11:15 ` [PATCH v3 6/7] ARM: boards: skov-imx6: start using deep-probe Oleksij Rempel
2021-09-20 11:15 ` [PATCH v3 7/7] ARM: boards: skov-imx6: add defaultenv with eth1-discover script Oleksij Rempel
6 siblings, 0 replies; 9+ messages in thread
From: Oleksij Rempel @ 2021-09-20 11:15 UTC (permalink / raw)
To: barebox; +Cc: Oleksij Rempel
Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
---
arch/arm/boards/skov-imx6/board.c | 48 +++++++++++++++++++++++++++----
1 file changed, 43 insertions(+), 5 deletions(-)
diff --git a/arch/arm/boards/skov-imx6/board.c b/arch/arm/boards/skov-imx6/board.c
index 4044bacb28..44c776f9cf 100644
--- a/arch/arm/boards/skov-imx6/board.c
+++ b/arch/arm/boards/skov-imx6/board.c
@@ -401,13 +401,51 @@ static void skov_imx6_no_switch(struct device_node *root)
}
}
+static int skov_imx6_switch_port(struct device_node *root, const char *path)
+{
+ size_t size;
+ char *buf;
+ int ret;
+
+ /* size is, string + '\0' + port number */
+ size = strlen(path) + 2;
+ buf = xzalloc(size);
+ if (!buf)
+ return -ENOMEM;
+
+ ret = snprintf(buf, size, "%s0", path);
+ if (ret < 0)
+ return ret;
+
+ ret = eth_of_fixup_node_from_eth_device(root, buf, "eth0");
+ if (ret)
+ return ret;
+
+ ret = snprintf(buf, size, "%s1", path);
+ if (ret < 0)
+ return ret;
+
+ ret = eth2_of_fixup_node_individually(root, buf, "eth0",
+ "state.ethaddr.eth2",
+ "/state/ethaddr/eth2");
+ return ret;
+}
+
static void skov_imx6_switch(struct device_node *root)
{
- eth_of_fixup_node_from_eth_device(root,
- "/mdio-gpio/ksz8873@3/ports/ports@0", "eth0");
- eth2_of_fixup_node_individually(root,
- "/mdio-gpio/ksz8873@3/ports/ports@1", "eth0",
- "state.ethaddr.eth2", "/state/ethaddr/eth2");
+ const char *old = "/mdio-gpio/ksz8873@3/ports/ports@";
+ const char *new = "/mdio/switch@0/ports/ports@";
+ int ret;
+
+ /* Old DTS variants (pre kernel mainline) use different path. Try first
+ * the new variant, then fall back to the old one.
+ */
+ ret = skov_imx6_switch_port(root, new);
+ if (ret) {
+ ret = skov_imx6_switch_port(root, old);
+ if (ret)
+ pr_err("Filed to set mac address\n");
+ }
}
static int skov_imx6_fixup(struct device_node *root, void *unused)
--
2.30.2
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v3 6/7] ARM: boards: skov-imx6: start using deep-probe
2021-09-20 11:15 [PATCH v3 0/7] add noswitch support for skov boards Oleksij Rempel
` (4 preceding siblings ...)
2021-09-20 11:15 ` [PATCH v3 5/7] ARM: boards: skov-imx6: fixup different DTS variants Oleksij Rempel
@ 2021-09-20 11:15 ` Oleksij Rempel
2021-09-20 11:15 ` [PATCH v3 7/7] ARM: boards: skov-imx6: add defaultenv with eth1-discover script Oleksij Rempel
6 siblings, 0 replies; 9+ messages in thread
From: Oleksij Rempel @ 2021-09-20 11:15 UTC (permalink / raw)
To: barebox; +Cc: Oleksij Rempel
Port Skov boards to the deep-propbe and reduce boot time by 100msec.
Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
---
arch/arm/boards/skov-imx6/board.c | 22 +++++++++++++++++-----
1 file changed, 17 insertions(+), 5 deletions(-)
diff --git a/arch/arm/boards/skov-imx6/board.c b/arch/arm/boards/skov-imx6/board.c
index 44c776f9cf..6a9055757c 100644
--- a/arch/arm/boards/skov-imx6/board.c
+++ b/arch/arm/boards/skov-imx6/board.c
@@ -2,16 +2,17 @@
#define pr_fmt(fmt) "skov-imx6: " fmt
+#include <bootsource.h>
#include <common.h>
-#include <init.h>
-#include <mach/bbu.h>
+#include <deep-probe.h>
#include <environment.h>
-#include <bootsource.h>
#include <globalvar.h>
-#include <net.h>
-#include <of_gpio.h>
#include <gpio.h>
+#include <init.h>
#include <linux/micrel_phy.h>
+#include <mach/bbu.h>
+#include <net.h>
+#include <of_gpio.h>
#include "version.h"
@@ -500,10 +501,20 @@ static int skov_imx6_fixup(struct device_node *root, void *unused)
*/
static void skov_init_board(const struct board_description *variant)
{
+ struct device_node *gpio_np = NULL;
struct device_node *np;
char *environment_path, *envdev;
int ret;
+ gpio_np = of_find_node_by_name(NULL, "gpio@20b4000");
+ if (gpio_np) {
+ ret = of_device_ensure_probed(gpio_np);
+ if (ret)
+ pr_warn("Can't probe GPIO node\n");
+ } else {
+ pr_warn("Can't get GPIO node\n");
+ }
+
imx6_bbu_internal_spi_i2c_register_handler("spiflash", "/dev/m25p0.barebox",
BBU_HANDLER_FLAG_DEFAULT);
@@ -661,6 +672,7 @@ static __maybe_unused struct of_device_id skov_version_ids[] = {
/* sentinel */
}
};
+BAREBOX_DEEP_PROBE_ENABLE(skov_version_ids);
static struct driver_d skov_version_driver = {
.name = "skov-imx6",
--
2.30.2
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v3 7/7] ARM: boards: skov-imx6: add defaultenv with eth1-discover script
2021-09-20 11:15 [PATCH v3 0/7] add noswitch support for skov boards Oleksij Rempel
` (5 preceding siblings ...)
2021-09-20 11:15 ` [PATCH v3 6/7] ARM: boards: skov-imx6: start using deep-probe Oleksij Rempel
@ 2021-09-20 11:15 ` Oleksij Rempel
6 siblings, 0 replies; 9+ messages in thread
From: Oleksij Rempel @ 2021-09-20 11:15 UTC (permalink / raw)
To: barebox; +Cc: Oleksij Rempel
Add eth1-discover script to run USB detection if eth0 is disabled. The
eth0 will be automatically disabled if the no on-board switch is
detected.
Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
---
arch/arm/boards/skov-imx6/Makefile | 1 +
arch/arm/boards/skov-imx6/board.c | 3 +++
.../skov-imx6/defaultenv-skov-imx6/network/eth1-discover | 8 ++++++++
3 files changed, 12 insertions(+)
create mode 100644 arch/arm/boards/skov-imx6/defaultenv-skov-imx6/network/eth1-discover
diff --git a/arch/arm/boards/skov-imx6/Makefile b/arch/arm/boards/skov-imx6/Makefile
index a5e85bc1e1..07b87ff11d 100644
--- a/arch/arm/boards/skov-imx6/Makefile
+++ b/arch/arm/boards/skov-imx6/Makefile
@@ -1,3 +1,4 @@
obj-y += board.o
lwl-y += lowlevel.o
obj-pbl-y += version.o
+bbenv-y += defaultenv-skov-imx6
diff --git a/arch/arm/boards/skov-imx6/board.c b/arch/arm/boards/skov-imx6/board.c
index 6a9055757c..8881c10ab2 100644
--- a/arch/arm/boards/skov-imx6/board.c
+++ b/arch/arm/boards/skov-imx6/board.c
@@ -5,6 +5,7 @@
#include <bootsource.h>
#include <common.h>
#include <deep-probe.h>
+#include <envfs.h>
#include <environment.h>
#include <globalvar.h>
#include <gpio.h>
@@ -662,6 +663,8 @@ static int skov_imx6_probe(struct device_d *dev)
skov_init_board(variant);
+ defaultenv_append_directory(defaultenv_skov_imx6);
+
return 0;
}
diff --git a/arch/arm/boards/skov-imx6/defaultenv-skov-imx6/network/eth1-discover b/arch/arm/boards/skov-imx6/defaultenv-skov-imx6/network/eth1-discover
new file mode 100644
index 0000000000..e11a3f9006
--- /dev/null
+++ b/arch/arm/boards/skov-imx6/defaultenv-skov-imx6/network/eth1-discover
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+# Some boards doesn't have a ETH port, but may have USB network attached
+if [ "$eth0.mode" != "disabled" ]; then
+ exit 0;
+fi
+
+usb
--
2.30.2
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 9+ messages in thread