Chaithrika U S <[email protected]> writes:

> Adding RMII support to EMAC driver
>
> EMAC on OMAP-L137 supports RMII and on enabling this the RMIISPEED MASK has to
> be set/cleared for 100/10 Mbps operation respectively. A member has been added
> to the EMAC platform data to indicate the type of interface.
>
> Signed-off-by: Chaithrika U S <[email protected]>

Thanks, minor nitpick below...


> ---
>  arch/arm/mach-davinci/include/mach/emac.h |    1 +
>  drivers/net/davinci_emac.c                |   10 +++++++++-
>  2 files changed, 10 insertions(+), 1 deletions(-)
>
> diff --git a/arch/arm/mach-davinci/include/mach/emac.h 
> b/arch/arm/mach-davinci/include/mach/emac.h
> index 65eba9d..14303ef 100644
> --- a/arch/arm/mach-davinci/include/mach/emac.h
> +++ b/arch/arm/mach-davinci/include/mach/emac.h
> @@ -20,6 +20,7 @@ struct emac_platform_data {
>       u32 ctrl_ram_size;
>       u32 phy_mask;
>       u32 mdio_max_freq;
> +     u8 rmii_en;
>  };
>  
>  void davinci_init_emac(struct emac_platform_data *pdata);
> diff --git a/drivers/net/davinci_emac.c b/drivers/net/davinci_emac.c
> index 829c6e2..be63fbe 100644
> --- a/drivers/net/davinci_emac.c
> +++ b/drivers/net/davinci_emac.c
> @@ -191,6 +191,7 @@ static const char emac_version_string[] = "TI DaVinci 
> EMAC Linux v6.0";
>  #define EMAC_MACCONTROL_GIGABITEN    (0x80)
>  #define EMAC_MACCONTROL_GIGABITEN_SHIFT (7)
>  #define EMAC_MACCONTROL_FULLDUPLEXEN (0x1)
> +#define EMAC_MACCONTROL_RMIISPEED_MASK       (0x01 << 15)

Use BIT(15)

Speaking of which, one of the things you'll probably want to cleanup before
upstream submission is the use if BIT(), BIT_MASK() etc. throughout.

>  /* GIGABIT MODE related bits */
>  #define EMAC_DM646X_MACCONTORL_GMIIEN        (0x01 << 5)
> @@ -490,6 +491,7 @@ struct emac_priv {
>       u32 duplex; /* Link duplex: 1=Unknown, 2=Half, 3=Full */
>       u32 rx_buf_size;
>       u32 isr_count;
> +     u8 rmii_en;
>       struct net_device_stats net_dev_stats;
>       u32 mac_hash1;
>       u32 mac_hash2;
> @@ -773,6 +775,11 @@ static void emac_update_phystatus(struct emac_priv *priv)
>               /* Clear the GIG bit and GIGFORCE bit */
>               mac_control &= ~(EMAC_DM646X_MACCONTORL_GIGFORCE |
>                                       EMAC_DM646X_MACCONTORL_GIG);
> +
> +             if (priv->rmii_en && (priv->speed == SPEED_100))
> +                     mac_control |= EMAC_MACCONTROL_RMIISPEED_MASK;
> +             else
> +                     mac_control &= ~EMAC_MACCONTROL_RMIISPEED_MASK;
>       }
>  
>       /* Update mac_control if changed */
> @@ -2653,9 +2660,10 @@ static int __devinit davinci_emac_probe(struct 
> platform_device *pdev)
>               return -ENODEV;
>       }
>  
> -     /* MAC addr and PHY mask from platform_data */
> +     /* MAC addr and PHY mask , RMII enable info from platform_data */
>       memcpy(priv->mac_addr, pdata->mac_addr, 6);
>       priv->phy_mask = pdata->phy_mask;
> +     priv->rmii_en = pdata->rmii_en;
>  
>       /* Get EMAC platform data */
>       res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> -- 
> 1.5.6
>
> _______________________________________________
> Davinci-linux-open-source mailing list
> [email protected]
> http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to