Commit df828598 authored by Mugunthan V N's avatar Mugunthan V N Committed by David S. Miller
Browse files

netdev: driver: ethernet: Add TI CPSW driver

This patch adds support for TI's CPSW driver.

The three port switch gigabit ethernet subsystem provides ethernet packet
communication and can be configured as an ethernet switch. Supports
10/100/1000 Mbps.
Signed-off-by: default avatarCyril Chemparathy <>
Signed-off-by: default avatarSriramakrishnan A G <>
Signed-off-by: default avatarMugunthan V N <>
Signed-off-by: default avatarDavid S. Miller <>
parent db82173f
......@@ -49,6 +49,17 @@ config TI_DAVINCI_CPDMA
To compile this driver as a module, choose M here: the module
will be called davinci_cpdma. This is recommended.
config TI_CPSW
tristate "TI CPSW Switch Support"
depends on ARM && (ARCH_DAVINCI || SOC_OMAPAM33XX)
This driver supports TI's CPSW Ethernet Switch.
To compile this driver as a module, choose M here: the module
will be called cpsw.
config TLAN
tristate "TI ThunderLAN support"
depends on (PCI || EISA)
......@@ -7,3 +7,5 @@ obj-$(CONFIG_CPMAC) += cpmac.o
obj-$(CONFIG_TI_DAVINCI_EMAC) += davinci_emac.o
obj-$(CONFIG_TI_DAVINCI_MDIO) += davinci_mdio.o
obj-$(CONFIG_TI_DAVINCI_CPDMA) += davinci_cpdma.o
obj-$(CONFIG_TI_CPSW) += ti_cpsw.o
ti_cpsw-y := cpsw_ale.o cpsw.o
This diff is collapsed.
* Texas Instruments Ethernet Switch Driver
* Copyright (C) 2012 Texas Instruments
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation version 2.
* This program is distributed "as is" WITHOUT ANY WARRANTY of any
* kind, whether express or implied; without even the implied warranty
* GNU General Public License for more details.
#ifndef __CPSW_H__
#define __CPSW_H__
#include <linux/if_ether.h>
struct cpsw_slave_data {
u32 slave_reg_ofs;
u32 sliver_reg_ofs;
const char *phy_id;
int phy_if;
u8 mac_addr[ETH_ALEN];
struct cpsw_platform_data {
u32 ss_reg_ofs; /* Subsystem control register offset */
u32 channels; /* number of cpdma channels (symmetric) */
u32 cpdma_reg_ofs; /* cpdma register offset */
u32 cpdma_sram_ofs; /* cpdma sram offset */
u32 slaves; /* number of slave cpgmac ports */
struct cpsw_slave_data *slave_data;
u32 ale_reg_ofs; /* address lookup engine reg offset */
u32 ale_entries; /* ale table size */
u32 host_port_reg_ofs; /* cpsw cpdma host port registers */
u32 host_port_num; /* The port number for the host port */
u32 hw_stats_reg_ofs; /* cpsw hardware statistics counters */
u32 bd_ram_ofs; /* embedded buffer descriptor RAM offset*/
u32 bd_ram_size; /*buffer descriptor ram size */
u32 hw_ram_addr; /*if the HW address for BD RAM is different */
bool no_bd_ram; /* no embedded BD ram*/
u32 rx_descs; /* Number of Rx Descriptios */
u32 mac_control; /* Mac control register */
#endif /* __CPSW_H__ */
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment