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.
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to