On Thursday 13 October 2016 09:39 AM, Lokesh Vutla wrote:
> 
> 
> On Monday 10 October 2016 06:27 PM, Mugunthan V N wrote:
>> cpsw driver supports only selection of phy mode in control module
>> but control module has more setting like RGMII ID mode selection,
>> RMII clock source selection. So ported to cpsw-phy-sel driver
>> from kernel to u-boot.
>>
>> Signed-off-by: Mugunthan V N <mugunthan...@ti.com>
>> ---
>>  drivers/net/cpsw.c | 153 
>> ++++++++++++++++++++++++++++++++++++++++++++++++-----
>>  include/cpsw.h     |   1 +
>>  2 files changed, 140 insertions(+), 14 deletions(-)
>>
>> diff --git a/drivers/net/cpsw.c b/drivers/net/cpsw.c
>> index d17505e..1441f44 100644
>> --- a/drivers/net/cpsw.c
>> +++ b/drivers/net/cpsw.c
>> @@ -225,6 +225,18 @@ struct cpdma_chan {
>>      void                    *hdp, *cp, *rxfree;
>>  };
>>  
>> +/* AM33xx SoC specific definitions for the CONTROL port */
>> +#define AM33XX_GMII_SEL_MODE_MII    0
>> +#define AM33XX_GMII_SEL_MODE_RMII   1
>> +#define AM33XX_GMII_SEL_MODE_RGMII  2
>> +
>> +#define AM33XX_GMII_SEL_RGMII1_IDMODE       BIT(4)
>> +#define AM33XX_GMII_SEL_RGMII2_IDMODE       BIT(5)
>> +#define AM33XX_GMII_SEL_RMII1_IO_CLK_EN     BIT(6)
>> +#define AM33XX_GMII_SEL_RMII2_IO_CLK_EN     BIT(7)
>> +
>> +#define GMII_SEL_MODE_MASK          0x3
>> +
>>  #define desc_write(desc, fld, val)  __raw_writel((u32)(val), &(desc)->fld)
>>  #define desc_read(desc, fld)                __raw_readl(&(desc)->fld)
>>  #define desc_read_ptr(desc, fld)    ((void *)__raw_readl(&(desc)->fld))
>> @@ -1150,12 +1162,129 @@ static inline fdt_addr_t 
>> cpsw_get_addr_by_node(const void *fdt, int node)
>>                                                false);
>>  }
>>  
>> +static void cpsw_gmii_sel_am3352(struct cpsw_priv *priv,
>> +                             phy_interface_t phy_mode)
>> +{
>> +    u32 reg;
>> +    u32 mask;
>> +    u32 mode = 0;
>> +    bool rgmii_id = false;
>> +    int slave = priv->data.active_slave;
>> +
>> +    reg = readl(priv->data.gmii_sel);
>> +
>> +    switch (phy_mode) {
>> +    case PHY_INTERFACE_MODE_RMII:
>> +            mode = AM33XX_GMII_SEL_MODE_RMII;
>> +            break;
>> +
>> +    case PHY_INTERFACE_MODE_RGMII:
>> +            mode = AM33XX_GMII_SEL_MODE_RGMII;
>> +            break;
>> +    case PHY_INTERFACE_MODE_RGMII_ID:
>> +    case PHY_INTERFACE_MODE_RGMII_RXID:
>> +    case PHY_INTERFACE_MODE_RGMII_TXID:
>> +            mode = AM33XX_GMII_SEL_MODE_RGMII;
>> +            rgmii_id = true;
>> +            break;
>> +
>> +    case PHY_INTERFACE_MODE_MII:
>> +    default:
>> +            mode = AM33XX_GMII_SEL_MODE_MII;
>> +            break;
>> +    };
>> +
>> +    mask = GMII_SEL_MODE_MASK << (slave * 2) | BIT(slave + 6);
>> +    mode <<= slave * 2;
>> +
>> +    if (priv->data.rmii_clock_external) {
> 
> I do not see any one updating value for priv->data.rmii_clock_external.
> I guess cpsw_eth_ofdata_to_platdata() should be populating this value
> based on DT.
> 

Oops, missed squashing fixup patches from TI repo. Will be careful next
time. Thanks for pointing out early.

Regards
Mugunthan V N
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to