Remove the usage of cpu_is_xxx() macros from the EMAC driver. Add a member to the platform data to indicate the version of the EMAC. Use this information instead of the cpu_is_xxx() macros.
This patch is dependent on the previous sets of patches submitted for EMAC. The changes have been tested on TI DM644x and DM646x EVMs. Signed-off-by: Chaithrika U S <[email protected]> --- arch/arm/mach-davinci/dm644x.c | 1 + arch/arm/mach-davinci/dm646x.c | 1 + arch/arm/mach-davinci/include/mach/emac.h | 5 +++++ drivers/net/davinci_emac.c | 15 +++++++-------- 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/arch/arm/mach-davinci/dm644x.c b/arch/arm/mach-davinci/dm644x.c index 40782d3..6a08568 100644 --- a/arch/arm/mach-davinci/dm644x.c +++ b/arch/arm/mach-davinci/dm644x.c @@ -453,6 +453,7 @@ void dm644x_init_emac(struct emac_platform_data *pdata) pdata->ctrl_ram_offset = DM644X_EMAC_CNTRL_RAM_OFFSET; pdata->mdio_reg_offset = DM644X_EMAC_MDIO_OFFSET; pdata->ctrl_ram_size = DM644X_EMAC_CNTRL_RAM_SIZE; + pdata->version = EMAC_VERSION_1; dm644x_emac_device.dev.platform_data = pdata; platform_device_register(&dm644x_emac_device); } diff --git a/arch/arm/mach-davinci/dm646x.c b/arch/arm/mach-davinci/dm646x.c index 8f79604..0fa71a5 100644 --- a/arch/arm/mach-davinci/dm646x.c +++ b/arch/arm/mach-davinci/dm646x.c @@ -394,6 +394,7 @@ void dm646x_init_emac(struct emac_platform_data *pdata) pdata->ctrl_ram_offset = DM646X_EMAC_CNTRL_RAM_OFFSET; pdata->mdio_reg_offset = DM646X_EMAC_MDIO_OFFSET; pdata->ctrl_ram_size = DM646X_EMAC_CNTRL_RAM_SIZE; + pdata->version = EMAC_VERSION_2; dm646x_emac_device.dev.platform_data = pdata; platform_device_register(&dm646x_emac_device); } diff --git a/arch/arm/mach-davinci/include/mach/emac.h b/arch/arm/mach-davinci/include/mach/emac.h index 14303ef..84d3372 100644 --- a/arch/arm/mach-davinci/include/mach/emac.h +++ b/arch/arm/mach-davinci/include/mach/emac.h @@ -21,8 +21,13 @@ struct emac_platform_data { u32 phy_mask; u32 mdio_max_freq; u8 rmii_en; + u8 version; }; +enum { + EMAC_VERSION_1, /* DM644x */ + EMAC_VERSION_2, /* DM646x */ +}; void davinci_init_emac(struct emac_platform_data *pdata); #endif diff --git a/drivers/net/davinci_emac.c b/drivers/net/davinci_emac.c index ce7c4e8..8d83400 100644 --- a/drivers/net/davinci_emac.c +++ b/drivers/net/davinci_emac.c @@ -65,9 +65,6 @@ #include <asm/irq.h> #include <asm/page.h> -#include <mach/memory.h> -#include <mach/cpu.h> -#include <mach/hardware.h> #include <mach/emac.h> @@ -492,6 +489,7 @@ struct emac_priv { u32 rx_buf_size; u32 isr_count; u8 rmii_en; + u8 version; struct net_device_stats net_dev_stats; u32 mac_hash1; u32 mac_hash2; @@ -766,7 +764,7 @@ static void emac_update_phystatus(struct emac_priv *priv) mac_control &= ~(EMAC_MACCONTROL_FULLDUPLEXEN); } - if (priv->speed == SPEED_1000 && cpu_is_davinci_dm646x()) { + if (priv->speed == SPEED_1000 && (priv->version == EMAC_VERSION_2)) { mac_control = emac_read(EMAC_MACCONTROL); mac_control |= (EMAC_DM646X_MACCONTORL_GMIIEN | EMAC_DM646X_MACCONTORL_GIG | @@ -1012,7 +1010,7 @@ static void emac_dev_mcast_set(struct net_device *ndev) */ static void emac_int_disable(struct emac_priv *priv) { - if (cpu_is_davinci_dm646x()) { + if (priv->version == EMAC_VERSION_2) { unsigned long flags; local_irq_save(flags); @@ -1040,7 +1038,7 @@ static void emac_int_disable(struct emac_priv *priv) */ static void emac_int_enable(struct emac_priv *priv) { - if (cpu_is_davinci_dm646x()) { + if (priv->version == EMAC_VERSION_2) { emac_ctrl_write(EMAC_DM646X_CMRXINTEN, 0xff); emac_ctrl_write(EMAC_DM646X_CMTXINTEN, 0xff); @@ -2169,7 +2167,7 @@ static int emac_poll(struct napi_struct *napi, int budget) mask = EMAC_DM644X_MAC_IN_VECTOR_TX_INT_VEC; - if (cpu_is_davinci_dm646x()) + if (priv->version == EMAC_VERSION_2) mask = EMAC_DM646X_MAC_IN_VECTOR_TX_INT_VEC; if (status & mask) { @@ -2180,7 +2178,7 @@ static int emac_poll(struct napi_struct *napi, int budget) mask = EMAC_DM644X_MAC_IN_VECTOR_RX_INT_VEC; - if (cpu_is_davinci_dm646x()) + if (priv->version == EMAC_VERSION_2) mask = EMAC_DM646X_MAC_IN_VECTOR_RX_INT_VEC; if (status & mask) { @@ -2662,6 +2660,7 @@ static int __devinit davinci_emac_probe(struct platform_device *pdev) memcpy(priv->mac_addr, pdata->mac_addr, 6); priv->phy_mask = pdata->phy_mask; priv->rmii_en = pdata->rmii_en; + priv->version = pdata->version; /* 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
