diff options
author | Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com> | 2017-11-14 09:32:13 -0500 |
---|---|---|
committer | Vineet Gupta <vgupta@synopsys.com> | 2017-11-15 12:40:43 -0500 |
commit | ff64d695f92123f7d341473921a46add51a44a87 (patch) | |
tree | 4ed75460120b1381a79f1c2d0559c676ccad9f53 | |
parent | f3156851616b4f3cb1d6c567fe46adcfd43ad8f8 (diff) |
ARC: [plat-axs10x] DTS: Add reset controller node to manage ethernet reset
DW ethernet controller on axs10x hangs sometimes after SW reset.
Invoke the newly aded driver (reset-axs10x.c) by adding the DT bits.
With this in place, we don't need the open-coded quirk in platform
code, so get rid of it as well !
Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
-rw-r--r-- | arch/arc/boot/dts/axs10x_mb.dtsi | 8 | ||||
-rw-r--r-- | arch/arc/plat-axs10x/axs10x.c | 7 |
2 files changed, 8 insertions, 7 deletions
diff --git a/arch/arc/boot/dts/axs10x_mb.dtsi b/arch/arc/boot/dts/axs10x_mb.dtsi index e114000a84f5..74d070cd3c13 100644 --- a/arch/arc/boot/dts/axs10x_mb.dtsi +++ b/arch/arc/boot/dts/axs10x_mb.dtsi | |||
@@ -16,6 +16,12 @@ | |||
16 | ranges = <0x00000000 0x0 0xe0000000 0x10000000>; | 16 | ranges = <0x00000000 0x0 0xe0000000 0x10000000>; |
17 | interrupt-parent = <&mb_intc>; | 17 | interrupt-parent = <&mb_intc>; |
18 | 18 | ||
19 | creg_rst: reset-controller@11220 { | ||
20 | compatible = "snps,axs10x-reset"; | ||
21 | #reset-cells = <1>; | ||
22 | reg = <0x11220 0x4>; | ||
23 | }; | ||
24 | |||
19 | i2sclk: i2sclk@100a0 { | 25 | i2sclk: i2sclk@100a0 { |
20 | compatible = "snps,axs10x-i2s-pll-clock"; | 26 | compatible = "snps,axs10x-i2s-pll-clock"; |
21 | reg = <0x100a0 0x10>; | 27 | reg = <0x100a0 0x10>; |
@@ -73,6 +79,8 @@ | |||
73 | clocks = <&apbclk>; | 79 | clocks = <&apbclk>; |
74 | clock-names = "stmmaceth"; | 80 | clock-names = "stmmaceth"; |
75 | max-speed = <100>; | 81 | max-speed = <100>; |
82 | resets = <&creg_rst 5>; | ||
83 | reset-names = "stmmaceth"; | ||
76 | }; | 84 | }; |
77 | 85 | ||
78 | ehci@0x40000 { | 86 | ehci@0x40000 { |
diff --git a/arch/arc/plat-axs10x/axs10x.c b/arch/arc/plat-axs10x/axs10x.c index cf14ebc36916..f1ac6790da5f 100644 --- a/arch/arc/plat-axs10x/axs10x.c +++ b/arch/arc/plat-axs10x/axs10x.c | |||
@@ -111,13 +111,6 @@ static void __init axs10x_early_init(void) | |||
111 | 111 | ||
112 | axs10x_enable_gpio_intc_wire(); | 112 | axs10x_enable_gpio_intc_wire(); |
113 | 113 | ||
114 | /* | ||
115 | * Reset ethernet IP core. | ||
116 | * TODO: get rid of this quirk after axs10x reset driver (or simple | ||
117 | * reset driver) will be available in upstream. | ||
118 | */ | ||
119 | iowrite32((1 << 5), (void __iomem *) CREG_MB_SW_RESET); | ||
120 | |||
121 | scnprintf(mb, 32, "MainBoard v%d", mb_rev); | 114 | scnprintf(mb, 32, "MainBoard v%d", mb_rev); |
122 | axs10x_print_board_ver(CREG_MB_VER, mb); | 115 | axs10x_print_board_ver(CREG_MB_VER, mb); |
123 | } | 116 | } |