All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/3] Marvell SheevaPlug : convert Ethernet and SATA to Driver Model.
@ 2021-07-14  4:35 Tony Dinh
  2021-07-14  4:35 ` [PATCH 1/3] Marvell Sheevaplug: Add DM Ethernet and DM SATA configs Tony Dinh
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Tony Dinh @ 2021-07-14  4:35 UTC (permalink / raw)
  To: U-Boot Mailing List, sr, prafulla; +Cc: Tom Rini, judge.packham, Tony Dinh


- Add DM_ETH, SATA_MV and associated configs to sheevaplug_defconfig
- Remove IDE, and add SATA configs in board file sheevaplug.h
- Replace old device name "egiga0" with Ethernet PHY name from device
tree.
- Replace the old Ethernet PHY addr lookup with a device tree parsing
lookup function. Note that all Kirkwood SoCs boards use the same binding
for Ethernet port 0 and 1 nodes from kirkwood.dtsi. Thus the new lookup
function fdt_get_phy_addr() in this patch series probably should be
factored out to a common fdt support function and used in other
Kirkwood boards.


Tony Dinh (3):
  Marvell Sheevaplug: Add DM Ethernet and DM SATA configs
  Marvell Sheevaplug: Use Ethernet PHY name and address from device tree
  Marvell Sheevaplug: Add DM SATA and remove IDE configs

 board/Marvell/sheevaplug/sheevaplug.c | 54 +++++++++++++++++++++------
 configs/sheevaplug_defconfig          |  6 ++-
 include/configs/sheevaplug.h          |  9 ++---
 3 files changed, 51 insertions(+), 18 deletions(-)

-- 
2.20.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 1/3] Marvell Sheevaplug: Add DM Ethernet and DM SATA configs
  2021-07-14  4:35 [PATCH 0/3] Marvell SheevaPlug : convert Ethernet and SATA to Driver Model Tony Dinh
@ 2021-07-14  4:35 ` Tony Dinh
  2021-07-14  4:35 ` [PATCH 2/3] Marvell Sheevaplug: Use Ethernet PHY name and address from device tree Tony Dinh
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 6+ messages in thread
From: Tony Dinh @ 2021-07-14  4:35 UTC (permalink / raw)
  To: U-Boot Mailing List, sr, prafulla; +Cc: Tom Rini, judge.packham, Tony Dinh

Add DM_ETH, SATA_MV and associated configs to sheevaplug_defconfig

Signed-off-by: Tony Dinh <mibodhi@gmail.com>
---

 configs/sheevaplug_defconfig | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/configs/sheevaplug_defconfig b/configs/sheevaplug_defconfig
index 676c47af27..4c7259e6d7 100644
--- a/configs/sheevaplug_defconfig
+++ b/configs/sheevaplug_defconfig
@@ -17,7 +17,6 @@ CONFIG_USE_PREBOOT=y
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_BOOTZ=y
 # CONFIG_CMD_FLASH is not set
-CONFIG_CMD_IDE=y
 CONFIG_CMD_MMC=y
 CONFIG_CMD_NAND=y
 CONFIG_CMD_USB=y
@@ -53,3 +52,8 @@ CONFIG_USB_EHCI_HCD=y
 CONFIG_USB_STORAGE=y
 CONFIG_LZMA=y
 CONFIG_BZIP2=y
+CONFIG_BLK=y
+CONFIG_DM_ETH=y
+CONFIG_NET_RANDOM_ETHADDR=y
+CONFIG_CMD_SATA=y
+CONFIG_SATA_MV=y
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 2/3] Marvell Sheevaplug: Use Ethernet PHY name and address from device tree
  2021-07-14  4:35 [PATCH 0/3] Marvell SheevaPlug : convert Ethernet and SATA to Driver Model Tony Dinh
  2021-07-14  4:35 ` [PATCH 1/3] Marvell Sheevaplug: Add DM Ethernet and DM SATA configs Tony Dinh
@ 2021-07-14  4:35 ` Tony Dinh
  2021-07-16  9:18   ` [RESEND PATCH " Tony Dinh
  2021-07-14  4:35 ` [PATCH 3/3] Marvell Sheevaplug: Add DM SATA and remove IDE configs Tony Dinh
  2021-07-19 12:33 ` [PATCH 0/3] Marvell SheevaPlug : convert Ethernet and SATA to Driver Model Stefan Roese
  3 siblings, 1 reply; 6+ messages in thread
From: Tony Dinh @ 2021-07-14  4:35 UTC (permalink / raw)
  To: U-Boot Mailing List, sr, prafulla; +Cc: Tom Rini, judge.packham, Tony Dinh

- In DM Ethernet, the old "egiga0" name is no longer valid, so replace it
with Ethernet PHY name from device tree. Also, Ethernet PHY address
is available so read it from device tree.

Signed-off-by: Tony Dinh <mibodhi@gmail.com>
---

 board/Marvell/sheevaplug/sheevaplug.c | 54 +++++++++++++++++++++------
 1 file changed, 42 insertions(+), 12 deletions(-)

diff --git a/board/Marvell/sheevaplug/sheevaplug.c b/board/Marvell/sheevaplug/sheevaplug.c
index 0cc7f2b392..7ba56a44e4 100644
--- a/board/Marvell/sheevaplug/sheevaplug.c
+++ b/board/Marvell/sheevaplug/sheevaplug.c
@@ -1,5 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0+
 /*
+ * Copyright (C) 2021  Tony Dinh <mibodhi@gmail.com>
  * (C) Copyright 2009
  * Marvell Semiconductor <www.marvell.com>
  * Written-by: Prafulla Wadaskar <prafulla@marvell.com>
@@ -100,36 +101,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";
+	u16 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",
-			__FUNCTION__);
+	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, &reg);
+	miiphy_write(name, phyaddr, MV88E1116_PGADR_REG, 2);
+	miiphy_read(name, phyaddr, MV88E1116_MAC_CTRL_REG, &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);
 }
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 3/3] Marvell Sheevaplug: Add DM SATA and remove IDE configs
  2021-07-14  4:35 [PATCH 0/3] Marvell SheevaPlug : convert Ethernet and SATA to Driver Model Tony Dinh
  2021-07-14  4:35 ` [PATCH 1/3] Marvell Sheevaplug: Add DM Ethernet and DM SATA configs Tony Dinh
  2021-07-14  4:35 ` [PATCH 2/3] Marvell Sheevaplug: Use Ethernet PHY name and address from device tree Tony Dinh
@ 2021-07-14  4:35 ` Tony Dinh
  2021-07-19 12:33 ` [PATCH 0/3] Marvell SheevaPlug : convert Ethernet and SATA to Driver Model Stefan Roese
  3 siblings, 0 replies; 6+ messages in thread
From: Tony Dinh @ 2021-07-14  4:35 UTC (permalink / raw)
  To: U-Boot Mailing List, sr, prafulla; +Cc: Tom Rini, judge.packham, Tony Dinh

Enable DM SATA, removed IDE driver, and add SATA MV driver.

Signed-off-by: Tony Dinh <mibodhi@gmail.com>
---

 include/configs/sheevaplug.h | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/include/configs/sheevaplug.h b/include/configs/sheevaplug.h
index 41ba799659..e28f98458e 100644
--- a/include/configs/sheevaplug.h
+++ b/include/configs/sheevaplug.h
@@ -53,10 +53,9 @@
 /*
  * SATA driver configuration
  */
-#ifdef CONFIG_IDE
-#define __io
-#define CONFIG_SYS_ATA_IDE0_OFFSET	MV_SATA_PORT0_OFFSET
-#define CONFIG_SYS_ATA_IDE1_OFFSET	MV_SATA_PORT1_OFFSET
-#endif /* CONFIG_IDE */
+#ifdef CONFIG_SATA
+#define CONFIG_SYS_SATA_MAX_DEVICE	2
+#define CONFIG_LBA48
+#endif /* CONFIG_SATA */
 
 #endif /* _CONFIG_SHEEVAPLUG_H */
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [RESEND PATCH 2/3] Marvell Sheevaplug: Use Ethernet PHY name and address from device tree
  2021-07-14  4:35 ` [PATCH 2/3] Marvell Sheevaplug: Use Ethernet PHY name and address from device tree Tony Dinh
@ 2021-07-16  9:18   ` Tony Dinh
  0 siblings, 0 replies; 6+ messages in thread
From: Tony Dinh @ 2021-07-16  9:18 UTC (permalink / raw)
  To: Stefan Roese, U-Boot Mailing List; +Cc: Tom Rini, Chris Packham, Tony Dinh

- In DM Ethernet, the old "egiga0" name is no longer valid, so replace it
with Ethernet PHY name from device tree. Also, Ethernet PHY address
is available so read it from device tree.

Signed-off-by: Tony Dinh <mibodhi@gmail.com>
---

 board/Marvell/sheevaplug/sheevaplug.c | 54 +++++++++++++++++++++------
 1 file changed, 42 insertions(+), 12 deletions(-)

diff --git a/board/Marvell/sheevaplug/sheevaplug.c b/board/Marvell/sheevaplug/sheevaplug.c
index 0cc7f2b392..5952d158b2 100644
--- a/board/Marvell/sheevaplug/sheevaplug.c
+++ b/board/Marvell/sheevaplug/sheevaplug.c
@@ -1,5 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0+
 /*
+ * Copyright (C) 2021  Tony Dinh <mibodhi@gmail.com>
  * (C) Copyright 2009
  * Marvell Semiconductor <www.marvell.com>
  * Written-by: Prafulla Wadaskar <prafulla@marvell.com>
@@ -100,36 +101,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",
-			__FUNCTION__);
+	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, &reg);
+	miiphy_write(name, phyaddr, MV88E1116_PGADR_REG, 2);
+	miiphy_read(name, phyaddr, MV88E1116_MAC_CTRL_REG, &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);
 }
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH 0/3] Marvell SheevaPlug : convert Ethernet and SATA to Driver Model.
  2021-07-14  4:35 [PATCH 0/3] Marvell SheevaPlug : convert Ethernet and SATA to Driver Model Tony Dinh
                   ` (2 preceding siblings ...)
  2021-07-14  4:35 ` [PATCH 3/3] Marvell Sheevaplug: Add DM SATA and remove IDE configs Tony Dinh
@ 2021-07-19 12:33 ` Stefan Roese
  3 siblings, 0 replies; 6+ messages in thread
From: Stefan Roese @ 2021-07-19 12:33 UTC (permalink / raw)
  To: Tony Dinh, U-Boot Mailing List, prafulla; +Cc: Tom Rini, judge.packham

On 14.07.21 06:35, Tony Dinh wrote:
> 
> - Add DM_ETH, SATA_MV and associated configs to sheevaplug_defconfig
> - Remove IDE, and add SATA configs in board file sheevaplug.h
> - Replace old device name "egiga0" with Ethernet PHY name from device
> tree.
> - Replace the old Ethernet PHY addr lookup with a device tree parsing
> lookup function. Note that all Kirkwood SoCs boards use the same binding
> for Ethernet port 0 and 1 nodes from kirkwood.dtsi. Thus the new lookup
> function fdt_get_phy_addr() in this patch series probably should be
> factored out to a common fdt support function and used in other
> Kirkwood boards.
> 
> 
> Tony Dinh (3):
>    Marvell Sheevaplug: Add DM Ethernet and DM SATA configs
>    Marvell Sheevaplug: Use Ethernet PHY name and address from device tree
>    Marvell Sheevaplug: Add DM SATA and remove IDE configs
> 
>   board/Marvell/sheevaplug/sheevaplug.c | 54 +++++++++++++++++++++------
>   configs/sheevaplug_defconfig          |  6 ++-
>   include/configs/sheevaplug.h          |  9 ++---
>   3 files changed, 51 insertions(+), 18 deletions(-)
> 

Applied to u-boot-marvell/master

Thanks,
Stefan

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2021-07-19 12:33 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-14  4:35 [PATCH 0/3] Marvell SheevaPlug : convert Ethernet and SATA to Driver Model Tony Dinh
2021-07-14  4:35 ` [PATCH 1/3] Marvell Sheevaplug: Add DM Ethernet and DM SATA configs Tony Dinh
2021-07-14  4:35 ` [PATCH 2/3] Marvell Sheevaplug: Use Ethernet PHY name and address from device tree Tony Dinh
2021-07-16  9:18   ` [RESEND PATCH " Tony Dinh
2021-07-14  4:35 ` [PATCH 3/3] Marvell Sheevaplug: Add DM SATA and remove IDE configs Tony Dinh
2021-07-19 12:33 ` [PATCH 0/3] Marvell SheevaPlug : convert Ethernet and SATA to Driver Model Stefan Roese

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.