[U-Boot] [PATCH] Add NanoBone board support

Mark Jackson
2013-04-22T10:04:51Z

On 16/04/13 20:22, Tom Rini wrote:
> On Tue, Apr 16, 2013 at 08:14:13PM +0100, Mark Jackson wrote:
>
>> On 16/04/13 16:48, Tom Rini wrote:
>>> On Tue, Apr 16, 2013 at 04:02:34PM +0100, Mark Jackson wrote:

<snip>

>>>> +static struct cpsw_platform_data cpsw_data = {
>>>> + .mdio_base = CPSW_MDIO_BASE,
>>>> + .cpsw_base = CPSW_BASE,
>>>> + .mdio_div = 0xff,
>>>> + .channels = 8,
>>>> + .cpdma_reg_ofs = 0x800,
>>>> + .slaves = 2,
>>>
>>> Is this all that was needed for both interfaces to work in U-Boot, along
>>> with a config change or two? If so, I should take a stab at getting
>>> both working on the EVM-SK.
>>
>> Yes ... the config change is just to set CONFIG_PHY_ADDR to the
>> correct value.
>>
>> Unfortunately, since the CONFIG_PHY_ADDR value is "hard-coded" into
>> quite a bit of the uboot code, to change ports, you need to
>> re-compile !! Not ideal, and I don't suppose it's too much work to
>> get both
>> working together, but I don't see much demand for it.
>
> Ah, so it's not quite right :( Other platforms support multiple
> interfaces, but I don't know how they're setup.

Tom

I can see in drivers/net/cpsw.c:-

static int cpsw_phy_init(struct eth_device *dev, struct cpsw_slave *slave)
{
...
phydev = phy_connect(priv->bus,
CONFIG_PHY_ADDR,
dev,
slave->data->phy_if);
...
}

As you can see the hardcoded CONFIG_PHY_ADDR is being used, despite the
fact that it might be different for each slave.

Could you just replace that with "slave->data->phy_id" ?

I'll give it a try and see what happens.

Cheers
Mark J.