[U-Boot] [PATCH 07/10] mvebu: a37xx: Add init for ESPRESSBin Topaz switch

Stefan Roese sr at denx.de
Tue Feb 14 12:32:16 UTC 2017


(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.

Thanks,
Stefan


More information about the U-Boot mailing list