diff options
author | Andrey Smirnov <andrew.smirnov@gmail.com> | 2020-03-31 11:47:06 -0700 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2020-04-01 07:46:10 +0200 |
commit | 1960bf9a2defcae7074873f99ee0d375aa7a8329 (patch) | |
tree | e296fc1b10d6a8574e048f378667f7cdddd72d12 | |
parent | 450d2389c4f923a7fa91bf704e8ee32c0074364b (diff) | |
download | barebox-1960bf9a2defcae7074873f99ee0d375aa7a8329.tar.gz barebox-1960bf9a2defcae7074873f99ee0d375aa7a8329.tar.xz |
ARM: zii-common: Support rave_switch_reset on ZII Ultra
ZII Ultra boards implement switch watchdog the same way as ZII
RDU2. Add necessary code to make rave_switch_reset availible.
Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r-- | arch/arm/boards/zii-common/switch-cmd.c | 12 | ||||
-rw-r--r-- | arch/arm/boards/zii-imx8mq-dev/board.c | 9 | ||||
-rw-r--r-- | arch/arm/boards/zii-imx8mq-dev/defaultenv-imx8mq-zii-dev/network/eth0-discover | 4 | ||||
-rw-r--r-- | arch/arm/dts/imx8mq-zii-ultra.dtsi | 1 |
4 files changed, 24 insertions, 2 deletions
diff --git a/arch/arm/boards/zii-common/switch-cmd.c b/arch/arm/boards/zii-common/switch-cmd.c index 02802ff860..cf5554e2e9 100644 --- a/arch/arm/boards/zii-common/switch-cmd.c +++ b/arch/arm/boards/zii-common/switch-cmd.c @@ -29,6 +29,15 @@ static int do_rdu2_switch_reset(void) return -ENODEV; } + if (!of_device_is_available(np)) { + /* + * If switch watchdog device is not available assume + * it was removed for a reason and switch reset + * command should be a no-op + */ + return 0; + } + client = of_find_i2c_device_by_node(np); if (!client) { pr_err("No switch watchdog I2C device found\n"); @@ -78,7 +87,8 @@ static int do_rdu1_switch_reset(void) static int do_rave_switch_reset(int argc, char *argv[]) { if (of_machine_is_compatible("zii,imx6q-zii-rdu2") || - of_machine_is_compatible("zii,imx6qp-zii-rdu2")) + of_machine_is_compatible("zii,imx6qp-zii-rdu2") || + of_machine_is_compatible("zii,imx8mq-ultra")) return do_rdu2_switch_reset(); if (of_machine_is_compatible("zii,imx51-rdu1")) diff --git a/arch/arm/boards/zii-imx8mq-dev/board.c b/arch/arm/boards/zii-imx8mq-dev/board.c index ac455990b0..7591841feb 100644 --- a/arch/arm/boards/zii-imx8mq-dev/board.c +++ b/arch/arm/boards/zii-imx8mq-dev/board.c @@ -110,6 +110,15 @@ static int zii_imx8mq_dev_fixup_deb_internal(void) /* Refresh the internal aliases list from the patched DT */ of_alias_scan(); + /* + * Disable switch watchdog to make rave_reset_switch a no-op + */ + np = of_find_compatible_node(NULL, NULL, "zii,rave-wdt"); + if (!np) + return -ENODEV; + + of_device_disable(np); + return 0; } diff --git a/arch/arm/boards/zii-imx8mq-dev/defaultenv-imx8mq-zii-dev/network/eth0-discover b/arch/arm/boards/zii-imx8mq-dev/defaultenv-imx8mq-zii-dev/network/eth0-discover new file mode 100644 index 0000000000..00f3120115 --- /dev/null +++ b/arch/arm/boards/zii-imx8mq-dev/defaultenv-imx8mq-zii-dev/network/eth0-discover @@ -0,0 +1,4 @@ +#!/bin/sh + +# reset switch to clear DSA config +rave_reset_switch diff --git a/arch/arm/dts/imx8mq-zii-ultra.dtsi b/arch/arm/dts/imx8mq-zii-ultra.dtsi index 50bad9b1a2..2df87d07a0 100644 --- a/arch/arm/dts/imx8mq-zii-ultra.dtsi +++ b/arch/arm/dts/imx8mq-zii-ultra.dtsi @@ -114,4 +114,3 @@ reg = <0xe0000 0x20000>; }; }; - |