Hi, Stefan,

On 2/14/2017 13:43, Stefan Roese wrote:
Hi Kosta,

On 13.02.2017 14:38, kos...@marvell.com wrote:
From: Konstantin Porotchkin <kos...@marvell.com>

Fix the default pin control values in a board-specific
function on early board init stage.
This fix allows the NETA driver to work in RGMII
mode until the full-featured pin control driver gets
introduced.

Signed-off-by: Konstantin Porotchkin <kos...@marvell.com>
Cc: Stefan Roese <s...@denx.de>
Cc: Igal Liberman <ig...@marvell.com>
---
 board/Marvell/mvebu_db-88f3720/board.c | 26 +++++++++++++++++++++++++-
 1 file changed, 25 insertions(+), 1 deletion(-)

diff --git a/board/Marvell/mvebu_db-88f3720/board.c
b/board/Marvell/mvebu_db-88f3720/board.c
index edf88c7..3337f3f 100644
--- a/board/Marvell/mvebu_db-88f3720/board.c
+++ b/board/Marvell/mvebu_db-88f3720/board.c
@@ -19,9 +19,33 @@ DECLARE_GLOBAL_DATA_PTR;
 #define I2C_IO_REG_0_SATA_OFF    2
 #define I2C_IO_REG_0_USB_H_OFF    1

+#define PINCTRL_NB_REG_VALUE    0x000173fa
+#define PINCTRL_SB_REG_VALUE    0x00007a23
+

I am aware that this is a temporary solution, but are these values
correct for the A3720-DB or only the ESPRESSBin board?
They are good for the DB board as well. Actually without this change the NETA driver will crash if we try to ping the server.


BTW: You are now using the "Marvell/mvebu_db-88f3720" board directory
for multiple board and not only the A3720-DB. I would prefer to see
a rename of the board directory before this, like we've done to the
A7k/8k directory. What do you think?
Agree, I can do it. Should we change it in this patch series or introduce an additional patch later?


 int board_early_init_f(void)
 {
-    /* Nothing to do (yet), perhaps later some pin-muxing etc */
+    const void *blob = gd->fdt_blob;
+    const char *bank_name;
+    const char *compat = "marvell,armada-3700-pinctl";
+    int off, len;
+    void __iomem *addr;
+
+    /* FIXME
+     * Temporary WA for setting correct pin control values
+     * until the real pin control driver is awailable.
+     */
+    off = fdt_node_offset_by_compatible(blob, -1, compat);
+    while (off != -FDT_ERR_NOTFOUND) {
+        bank_name = fdt_getprop(blob, off, "bank-name", &len);
+        addr = (void __iomem *)fdtdec_get_addr_size_auto_noparent(
+                blob, off, "reg", 0, NULL, true);
+        if (!strncmp(bank_name, "armada-3700-nb", len))
+            writel(PINCTRL_NB_REG_VALUE, addr);
+        else if (!strncmp(bank_name, "armada-3700-sb", len))
+            writel(PINCTRL_SB_REG_VALUE, addr);
+
+        off = fdt_node_offset_by_compatible(blob, off, compat);
+    }

     return 0;
 }


Thanks,
Stefan
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to