[PATCH 0/3] arm: kirkwood: Convert the GoFlex Home board Ethernet and SATA to Driver Model.

- Enable DM SATA and SATA MV driver - Enable DM Ethernet. - Use Ethernet PHY names from device tree. - Replace the old Ethernet PHY addr lookup with a device tree parsing lookup function.
Tony Dinh (3): arm: kirkwood: GoFlex Home: Add DM Ethernet, remove IDE, and add DM SATA configs arm: kirkwood: GoFlex Home: Add DM SATA configs arm: kirkwood: GoFlex Home: Use Ethernet PHY name and address from device tree
board/Seagate/goflexhome/goflexhome.c | 57 +++++++++++++++++++++------ configs/goflexhome_defconfig | 5 ++- include/configs/goflexhome.h | 6 +++ 3 files changed, 55 insertions(+), 13 deletions(-)

Add DM_ETH, SATA_MV and associated configs to goflexhome_defconfig.
Signed-off-by: Tony Dinh mibodhi@gmail.com ---
configs/goflexhome_defconfig | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/configs/goflexhome_defconfig b/configs/goflexhome_defconfig index 7207fa27e0..17adeca92f 100644 --- a/configs/goflexhome_defconfig +++ b/configs/goflexhome_defconfig @@ -16,7 +16,6 @@ CONFIG_CONSOLE_MUX=y # CONFIG_DISPLAY_BOARDINFO is not set CONFIG_SYS_PROMPT="GoFlexHome> " # CONFIG_CMD_FLASH is not set -CONFIG_CMD_IDE=y CONFIG_CMD_NAND=y CONFIG_CMD_USB=y # CONFIG_CMD_SETEXPR is not set @@ -48,3 +47,7 @@ CONFIG_SYS_NS16550=y CONFIG_USB=y CONFIG_USB_EHCI_HCD=y CONFIG_USB_STORAGE=y +CONFIG_CMD_SATA=y +CONFIG_SATA_MV=y +CONFIG_DM_ETH=y +CONFIG_NET_RANDOM_ETHADDR=y

On 30.07.21 05:02, Tony Dinh wrote:
Add DM_ETH, SATA_MV and associated configs to goflexhome_defconfig.
Signed-off-by: Tony Dinh mibodhi@gmail.com
Reviewed-by: Stefan Roese sr@denx.de
Thanks, Stefan
configs/goflexhome_defconfig | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/configs/goflexhome_defconfig b/configs/goflexhome_defconfig index 7207fa27e0..17adeca92f 100644 --- a/configs/goflexhome_defconfig +++ b/configs/goflexhome_defconfig @@ -16,7 +16,6 @@ CONFIG_CONSOLE_MUX=y # CONFIG_DISPLAY_BOARDINFO is not set CONFIG_SYS_PROMPT="GoFlexHome> " # CONFIG_CMD_FLASH is not set -CONFIG_CMD_IDE=y CONFIG_CMD_NAND=y CONFIG_CMD_USB=y # CONFIG_CMD_SETEXPR is not set @@ -48,3 +47,7 @@ CONFIG_SYS_NS16550=y CONFIG_USB=y CONFIG_USB_EHCI_HCD=y CONFIG_USB_STORAGE=y +CONFIG_CMD_SATA=y +CONFIG_SATA_MV=y +CONFIG_DM_ETH=y +CONFIG_NET_RANDOM_ETHADDR=y
Viele Grüße, Stefan

Enable DM SATA in board file.
Signed-off-by: Tony Dinh mibodhi@gmail.com ---
include/configs/goflexhome.h | 6 ++++++ 1 file changed, 6 insertions(+)
diff --git a/include/configs/goflexhome.h b/include/configs/goflexhome.h index a18e7869b0..2e89d72285 100644 --- a/include/configs/goflexhome.h +++ b/include/configs/goflexhome.h @@ -72,4 +72,10 @@ #define CONFIG_PHY_BASE_ADR 0 #endif /* CONFIG_CMD_NET */
+/* SATA driver configuration */ +#ifdef CONFIG_SATA +#define CONFIG_SYS_SATA_MAX_DEVICE 1 +#define CONFIG_LBA48 +#endif /* CONFIG_SATA */ + #endif /* _CONFIG_GOFLEXHOME_H */

On 30.07.21 05:02, Tony Dinh wrote:
Enable DM SATA in board file.
Signed-off-by: Tony Dinh mibodhi@gmail.com
Reviewed-by: Stefan Roese sr@denx.de
Thanks, Stefan
include/configs/goflexhome.h | 6 ++++++ 1 file changed, 6 insertions(+)
diff --git a/include/configs/goflexhome.h b/include/configs/goflexhome.h index a18e7869b0..2e89d72285 100644 --- a/include/configs/goflexhome.h +++ b/include/configs/goflexhome.h @@ -72,4 +72,10 @@ #define CONFIG_PHY_BASE_ADR 0 #endif /* CONFIG_CMD_NET */
+/* SATA driver configuration */ +#ifdef CONFIG_SATA +#define CONFIG_SYS_SATA_MAX_DEVICE 1 +#define CONFIG_LBA48 +#endif /* CONFIG_SATA */
- #endif /* _CONFIG_GOFLEXHOME_H */
Viele Grüße, Stefan

In DM Ethernet, the old "egiga0" name is no longer valid, so replace these with Ethernet PHY names from device tree. Also, read Ethernet PHY address from device tree.
Signed-off-by: Tony Dinh mibodhi@gmail.com ---
board/Seagate/goflexhome/goflexhome.c | 57 +++++++++++++++++++++------ 1 file changed, 45 insertions(+), 12 deletions(-)
diff --git a/board/Seagate/goflexhome/goflexhome.c b/board/Seagate/goflexhome/goflexhome.c index af8cab7bdc..52be64fb8c 100644 --- a/board/Seagate/goflexhome/goflexhome.c +++ b/board/Seagate/goflexhome/goflexhome.c @@ -1,5 +1,9 @@ // SPDX-License-Identifier: GPL-2.0+ /* + * Copyright (C) 2021 + * Tony Dinh mibodhi@gmail.com + * Suriyan Ramasami suriyan.r@gmail.com + * * Copyright (C) 2013 Suriyan Ramasami suriyan.r@gmail.com * * Based on dockstar.c originally written by @@ -107,36 +111,65 @@ int board_init(void) return 0; }
+static int fdt_get_phy_addr(const char *path) +{ + const void *fdt = gd->fdt_blob; + const u32 *reg; + const u32 *val; + int node, phandle, addr; + + /* Find the node by its full path */ + node = fdt_path_offset(fdt, path); + if (node >= 0) { + /* Look up phy-handle */ + val = fdt_getprop(fdt, node, "phy-handle", NULL); + if (val) { + phandle = fdt32_to_cpu(*val); + if (!phandle) + return -1; + /* Follow it to its node */ + node = fdt_node_offset_by_phandle(fdt, phandle); + if (node) { + /* Look up reg */ + reg = fdt_getprop(fdt, node, "reg", NULL); + if (reg) { + addr = fdt32_to_cpu(*reg); + return addr; + } + } + } + } + return -1; +} + #ifdef CONFIG_RESET_PHY_R /* Configure and enable MV88E1116 PHY */ void reset_phy(void) { u16 reg; - u16 devadr; - char *name = "egiga0"; + int phyaddr; + char *name = "ethernet-controller@72000"; + char *eth0_path = "/ocp@f1000000/ethernet-controller@72000/ethernet0-port@0";
if (miiphy_set_current_dev(name)) return;
- /* command to read PHY dev address */ - if (miiphy_read(name, 0xEE, 0xEE, (u16 *)&devadr)) { - printf("Err..%s could not read PHY dev address\n", - __func__); + phyaddr = fdt_get_phy_addr(eth0_path); + if (phyaddr < 0) return; - }
/* * Enable RGMII delay on Tx and Rx for CPU port * Ref: sec 4.7.2 of chip datasheet */ - miiphy_write(name, devadr, MV88E1116_PGADR_REG, 2); - miiphy_read(name, devadr, MV88E1116_MAC_CTRL_REG, ®); + miiphy_write(name, phyaddr, MV88E1116_PGADR_REG, 2); + miiphy_read(name, phyaddr, MV88E1116_MAC_CTRL_REG, ®); reg |= (MV88E1116_RGMII_RXTM_CTRL | MV88E1116_RGMII_TXTM_CTRL); - miiphy_write(name, devadr, MV88E1116_MAC_CTRL_REG, reg); - miiphy_write(name, devadr, MV88E1116_PGADR_REG, 0); + miiphy_write(name, phyaddr, MV88E1116_MAC_CTRL_REG, reg); + miiphy_write(name, phyaddr, MV88E1116_PGADR_REG, 0);
/* reset the phy */ - miiphy_reset(name, devadr); + miiphy_reset(name, phyaddr);
printf("88E1116 Initialized on %s\n", name); }

On 30.07.21 05:02, Tony Dinh wrote:
In DM Ethernet, the old "egiga0" name is no longer valid, so replace these with Ethernet PHY names from device tree. Also, read Ethernet PHY address from device tree.
Signed-off-by: Tony Dinh mibodhi@gmail.com
Reviewed-by: Stefan Roese sr@denx.de
Thanks, Stefan
board/Seagate/goflexhome/goflexhome.c | 57 +++++++++++++++++++++------ 1 file changed, 45 insertions(+), 12 deletions(-)
diff --git a/board/Seagate/goflexhome/goflexhome.c b/board/Seagate/goflexhome/goflexhome.c index af8cab7bdc..52be64fb8c 100644 --- a/board/Seagate/goflexhome/goflexhome.c +++ b/board/Seagate/goflexhome/goflexhome.c @@ -1,5 +1,9 @@ // SPDX-License-Identifier: GPL-2.0+ /*
- Copyright (C) 2021
- Tony Dinh mibodhi@gmail.com
- Suriyan Ramasami suriyan.r@gmail.com
- Copyright (C) 2013 Suriyan Ramasami suriyan.r@gmail.com
- Based on dockstar.c originally written by
@@ -107,36 +111,65 @@ int board_init(void) return 0; }
+static int fdt_get_phy_addr(const char *path) +{
- const void *fdt = gd->fdt_blob;
- const u32 *reg;
- const u32 *val;
- int node, phandle, addr;
- /* Find the node by its full path */
- node = fdt_path_offset(fdt, path);
- if (node >= 0) {
/* Look up phy-handle */
val = fdt_getprop(fdt, node, "phy-handle", NULL);
if (val) {
phandle = fdt32_to_cpu(*val);
if (!phandle)
return -1;
/* Follow it to its node */
node = fdt_node_offset_by_phandle(fdt, phandle);
if (node) {
/* Look up reg */
reg = fdt_getprop(fdt, node, "reg", NULL);
if (reg) {
addr = fdt32_to_cpu(*reg);
return addr;
}
}
}
- }
- return -1;
+}
- #ifdef CONFIG_RESET_PHY_R /* Configure and enable MV88E1116 PHY */ void reset_phy(void) { u16 reg;
- u16 devadr;
- char *name = "egiga0";
int phyaddr;
char *name = "ethernet-controller@72000";
char *eth0_path = "/ocp@f1000000/ethernet-controller@72000/ethernet0-port@0";
if (miiphy_set_current_dev(name)) return;
- /* command to read PHY dev address */
- if (miiphy_read(name, 0xEE, 0xEE, (u16 *)&devadr)) {
printf("Err..%s could not read PHY dev address\n",
__func__);
- phyaddr = fdt_get_phy_addr(eth0_path);
- if (phyaddr < 0) return;
}
/*
- Enable RGMII delay on Tx and Rx for CPU port
- Ref: sec 4.7.2 of chip datasheet
*/
miiphy_write(name, devadr, MV88E1116_PGADR_REG, 2);
miiphy_read(name, devadr, MV88E1116_MAC_CTRL_REG, ®);
- miiphy_write(name, phyaddr, MV88E1116_PGADR_REG, 2);
- miiphy_read(name, phyaddr, MV88E1116_MAC_CTRL_REG, ®); reg |= (MV88E1116_RGMII_RXTM_CTRL | MV88E1116_RGMII_TXTM_CTRL);
- miiphy_write(name, devadr, MV88E1116_MAC_CTRL_REG, reg);
- miiphy_write(name, devadr, MV88E1116_PGADR_REG, 0);
miiphy_write(name, phyaddr, MV88E1116_MAC_CTRL_REG, reg);
miiphy_write(name, phyaddr, MV88E1116_PGADR_REG, 0);
/* reset the phy */
- miiphy_reset(name, devadr);
miiphy_reset(name, phyaddr);
printf("88E1116 Initialized on %s\n", name); }
Viele Grüße, Stefan

On 30.07.21 05:02, Tony Dinh wrote:
- Enable DM SATA and SATA MV driver
- Enable DM Ethernet.
- Use Ethernet PHY names from device tree.
- Replace the old Ethernet PHY addr lookup with a device tree parsing
lookup function.
Tony Dinh (3): arm: kirkwood: GoFlex Home: Add DM Ethernet, remove IDE, and add DM SATA configs arm: kirkwood: GoFlex Home: Add DM SATA configs arm: kirkwood: GoFlex Home: Use Ethernet PHY name and address from device tree
board/Seagate/goflexhome/goflexhome.c | 57 +++++++++++++++++++++------ configs/goflexhome_defconfig | 5 ++- include/configs/goflexhome.h | 6 +++ 3 files changed, 55 insertions(+), 13 deletions(-)
Applied to u-boot-marvell/master
Thanks, Stefan
participants (2)
-
Stefan Roese
-
Tony Dinh