On Tue, Feb 14, 2017 at 6:32 AM, Stefan Roese <s...@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, kos...@marvell.com wrote: >>>> >>>> From: Konstantin Porotchkin <kos...@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 <kos...@marvell.com> >>>> Cc: Stefan Roese <s...@denx.de> >>>> Cc: Igal Liberman <ig...@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 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot