
On Tue, Feb 14, 2017 at 6:32 AM, Stefan Roese sr@denx.de wrote:
(added Joe to Cc as network custodian)
On 14.02.2017 13:13, Konstantin Porotchkin wrote:
Hi, Stefan,
On 2/14/2017 13:49, Stefan Roese wrote:
Hi Kosta,
On 13.02.2017 14:38, kostap@marvell.com wrote:
From: Konstantin Porotchkin kostap@marvell.com
Implement the board-specific network init function for ESPRESSOBin community board, setting the on-board Topaz switch port to forward mode and allow network connection through any of the available Etherenet ports.
Signed-off-by: Konstantin Porotchkin kostap@marvell.com Cc: Stefan Roese sr@denx.de Cc: Igal Liberman igall@marvell.com
board/Marvell/mvebu_db-88f3720/board.c | 49 ++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+)
diff --git a/board/Marvell/mvebu_db-88f3720/board.c b/board/Marvell/mvebu_db-88f3720/board.c index 3337f3f..45098ce 100644 --- a/board/Marvell/mvebu_db-88f3720/board.c +++ b/board/Marvell/mvebu_db-88f3720/board.c @@ -6,6 +6,7 @@
#include <common.h> #include <i2c.h> +#include <phy.h> #include <asm/io.h> #include <asm/arch/cpu.h> #include <asm/arch/soc.h> @@ -156,3 +157,51 @@ int board_xhci_enable(void)
return 0;
}
+static int mii_multi_chip_mode_write(struct mii_dev *bus, int dev_smi_addr,
int smi_addr, int reg, u16 value)
+{
- u16 data = 0;
- if (bus->write(bus, dev_smi_addr, 0, 1, value) != 0) {
printf("Error writing to the PHY addr=%02x reg=%02x\n",
smi_addr, reg);
return -EFAULT;
- }
- data = (1 << 15) | (1 << 12) | (1 << 10) | (smi_addr << 5) | reg;
- if (bus->write(bus, dev_smi_addr, 0, 0, data) != 0) {
printf("Error writing to the PHY addr=%02x reg=%02x\n",
smi_addr, reg);
return -EFAULT;
- }
- return 0;
+}
+int board_network_enable(struct mii_dev *bus) +{
- if (!of_machine_is_compatible("marvell,armada-3720-espressobin"))
return 0;
- /*
* FIXME: remove this code once Topaz driver gets available
* A3720 Community Board Only
* Configure Topaz switch (88E6341)
* Set port 0,1,2,3 to forwarding Mode
*/
Just checking: Is this "Topaz switch driver" something thats being worked on or in the queue to do?
I currently do not have it in my queue. I think the driver exists in the kernel (or will exist in 4.10/4.11 release), so we may want to port it if required. Which switch operations are needed at u-bot stage?
I'm not 100% sure if there is anything really "needed" other than to get some ports into operation for the ethernet driver connected to this switch. So it might be that such a few register writes are acceptable - I'm pretty sure other boards do it this way as well.
On the other hand you could take a look at the "drivers/net/phy/mv88e61xx.c" switch driver. Might be that this is something similar to what you want / need.
I think the switch driver to model after is drivers/net/vsc9953.c - there is a command: cmd/ethsw.c / include ethsw.h that implements the framework (doc/README.t1040-l2switch).
There is also the drivers/net/cpsw.c that just hard-codes the config. Eth switches have varying levels of support. What level of support are you able to implement?
Thanks, -Joe