[U-Boot] [PATCH 07/10] mvebu: a37xx: Add init for ESPRESSBin Topaz switch
Joe Hershberger
joe.hershberger at gmail.com
Tue Feb 14 17:17:58 UTC 2017
On Tue, Feb 14, 2017 at 6:32 AM, Stefan Roese <sr at 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 at marvell.com wrote:
>>>>
>>>> From: Konstantin Porotchkin <kostap at 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 at marvell.com>
>>>> Cc: Stefan Roese <sr at denx.de>
>>>> Cc: Igal Liberman <igall at 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
More information about the U-Boot
mailing list