Commit ceb69499 authored by Giuseppe CAVALLARO's avatar Giuseppe CAVALLARO Committed by David S. Miller

stmmac: code tidy-up

This patch tidies up the code. I have run Linden (and verified with checkpatch)
many part of the driver trying to reorganize some sections respecting the
codying-style rules in the points where it was not done.
Signed-off-by: default avatarGiuseppe Cavallaro <peppe.cavallaro@st.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 32ceabca
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
static unsigned int stmmac_jumbo_frm(void *p, struct sk_buff *skb, int csum) static unsigned int stmmac_jumbo_frm(void *p, struct sk_buff *skb, int csum)
{ {
struct stmmac_priv *priv = (struct stmmac_priv *) p; struct stmmac_priv *priv = (struct stmmac_priv *)p;
unsigned int txsize = priv->dma_tx_size; unsigned int txsize = priv->dma_tx_size;
unsigned int entry = priv->cur_tx % txsize; unsigned int entry = priv->cur_tx % txsize;
struct dma_desc *desc = priv->dma_tx + entry; struct dma_desc *desc = priv->dma_tx + entry;
...@@ -103,7 +103,7 @@ static void stmmac_init_dma_chain(void *des, dma_addr_t phy_addr, ...@@ -103,7 +103,7 @@ static void stmmac_init_dma_chain(void *des, dma_addr_t phy_addr,
dma_addr_t dma_phy = phy_addr; dma_addr_t dma_phy = phy_addr;
if (extend_desc) { if (extend_desc) {
struct dma_extended_desc *p = (struct dma_extended_desc *) des; struct dma_extended_desc *p = (struct dma_extended_desc *)des;
for (i = 0; i < (size - 1); i++) { for (i = 0; i < (size - 1); i++) {
dma_phy += sizeof(struct dma_extended_desc); dma_phy += sizeof(struct dma_extended_desc);
p->basic.des3 = (unsigned int)dma_phy; p->basic.des3 = (unsigned int)dma_phy;
...@@ -112,7 +112,7 @@ static void stmmac_init_dma_chain(void *des, dma_addr_t phy_addr, ...@@ -112,7 +112,7 @@ static void stmmac_init_dma_chain(void *des, dma_addr_t phy_addr,
p->basic.des3 = (unsigned int)phy_addr; p->basic.des3 = (unsigned int)phy_addr;
} else { } else {
struct dma_desc *p = (struct dma_desc *) des; struct dma_desc *p = (struct dma_desc *)des;
for (i = 0; i < (size - 1); i++) { for (i = 0; i < (size - 1); i++) {
dma_phy += sizeof(struct dma_desc); dma_phy += sizeof(struct dma_desc);
p->des3 = (unsigned int)dma_phy; p->des3 = (unsigned int)dma_phy;
......
...@@ -182,29 +182,29 @@ struct stmmac_extra_stats { ...@@ -182,29 +182,29 @@ struct stmmac_extra_stats {
#define DMA_HW_FEAT_HDSEL 0x00000004 /* Half-Duplex Support */ #define DMA_HW_FEAT_HDSEL 0x00000004 /* Half-Duplex Support */
#define DMA_HW_FEAT_EXTHASHEN 0x00000008 /* Expanded DA Hash Filter */ #define DMA_HW_FEAT_EXTHASHEN 0x00000008 /* Expanded DA Hash Filter */
#define DMA_HW_FEAT_HASHSEL 0x00000010 /* HASH Filter */ #define DMA_HW_FEAT_HASHSEL 0x00000010 /* HASH Filter */
#define DMA_HW_FEAT_ADDMACADRSEL 0x00000020 /* Multiple MAC Addr Reg */ #define DMA_HW_FEAT_ADDMAC 0x00000020 /* Multiple MAC Addr Reg */
#define DMA_HW_FEAT_PCSSEL 0x00000040 /* PCS registers */ #define DMA_HW_FEAT_PCSSEL 0x00000040 /* PCS registers */
#define DMA_HW_FEAT_L3L4FLTREN 0x00000080 /* Layer 3 & Layer 4 Feature */ #define DMA_HW_FEAT_L3L4FLTREN 0x00000080 /* Layer 3 & Layer 4 Feature */
#define DMA_HW_FEAT_SMASEL 0x00000100 /* SMA(MDIO) Interface */ #define DMA_HW_FEAT_SMASEL 0x00000100 /* SMA(MDIO) Interface */
#define DMA_HW_FEAT_RWKSEL 0x00000200 /* PMT Remote Wakeup */ #define DMA_HW_FEAT_RWKSEL 0x00000200 /* PMT Remote Wakeup */
#define DMA_HW_FEAT_MGKSEL 0x00000400 /* PMT Magic Packet */ #define DMA_HW_FEAT_MGKSEL 0x00000400 /* PMT Magic Packet */
#define DMA_HW_FEAT_MMCSEL 0x00000800 /* RMON Module */ #define DMA_HW_FEAT_MMCSEL 0x00000800 /* RMON Module */
#define DMA_HW_FEAT_TSVER1SEL 0x00001000 /* Only IEEE 1588-2002 Timestamp */ #define DMA_HW_FEAT_TSVER1SEL 0x00001000 /* Only IEEE 1588-2002 */
#define DMA_HW_FEAT_TSVER2SEL 0x00002000 /* IEEE 1588-2008 Adv Timestamp */ #define DMA_HW_FEAT_TSVER2SEL 0x00002000 /* IEEE 1588-2008 PTPv2 */
#define DMA_HW_FEAT_EEESEL 0x00004000 /* Energy Efficient Ethernet */ #define DMA_HW_FEAT_EEESEL 0x00004000 /* Energy Efficient Ethernet */
#define DMA_HW_FEAT_AVSEL 0x00008000 /* AV Feature */ #define DMA_HW_FEAT_AVSEL 0x00008000 /* AV Feature */
#define DMA_HW_FEAT_TXCOESEL 0x00010000 /* Checksum Offload in Tx */ #define DMA_HW_FEAT_TXCOESEL 0x00010000 /* Checksum Offload in Tx */
#define DMA_HW_FEAT_RXTYP1COE 0x00020000 /* IP csum Offload(Type 1) in Rx */ #define DMA_HW_FEAT_RXTYP1COE 0x00020000 /* IP COE (Type 1) in Rx */
#define DMA_HW_FEAT_RXTYP2COE 0x00040000 /* IP csum Offload(Type 2) in Rx */ #define DMA_HW_FEAT_RXTYP2COE 0x00040000 /* IP COE (Type 2) in Rx */
#define DMA_HW_FEAT_RXFIFOSIZE 0x00080000 /* Rx FIFO > 2048 Bytes */ #define DMA_HW_FEAT_RXFIFOSIZE 0x00080000 /* Rx FIFO > 2048 Bytes */
#define DMA_HW_FEAT_RXCHCNT 0x00300000 /* No. of additional Rx Channels */ #define DMA_HW_FEAT_RXCHCNT 0x00300000 /* No. additional Rx Channels */
#define DMA_HW_FEAT_TXCHCNT 0x00c00000 /* No. of additional Tx Channels */ #define DMA_HW_FEAT_TXCHCNT 0x00c00000 /* No. additional Tx Channels */
#define DMA_HW_FEAT_ENHDESSEL 0x01000000 /* Alternate (Enhanced Descriptor) */ #define DMA_HW_FEAT_ENHDESSEL 0x01000000 /* Alternate Descriptor */
#define DMA_HW_FEAT_INTTSEN 0x02000000 /* Timestamping with Internal /* Timestamping with Internal System Time */
System Time */ #define DMA_HW_FEAT_INTTSEN 0x02000000
#define DMA_HW_FEAT_FLEXIPPSEN 0x04000000 /* Flexible PPS Output */ #define DMA_HW_FEAT_FLEXIPPSEN 0x04000000 /* Flexible PPS Output */
#define DMA_HW_FEAT_SAVLANINS 0x08000000 /* Source Addr or VLAN Insertion */ #define DMA_HW_FEAT_SAVLANINS 0x08000000 /* Source Addr or VLAN */
#define DMA_HW_FEAT_ACTPHYIF 0x70000000 /* Active/selected PHY interface */ #define DMA_HW_FEAT_ACTPHYIF 0x70000000 /* Active/selected PHY iface */
#define DEFAULT_DMA_PBL 8 #define DEFAULT_DMA_PBL 8
/* Max/Min RI Watchdog Timer count value */ /* Max/Min RI Watchdog Timer count value */
...@@ -216,7 +216,8 @@ struct stmmac_extra_stats { ...@@ -216,7 +216,8 @@ struct stmmac_extra_stats {
#define STMMAC_TX_MAX_FRAMES 256 #define STMMAC_TX_MAX_FRAMES 256
#define STMMAC_TX_FRAMES 64 #define STMMAC_TX_FRAMES 64
enum rx_frame_status { /* IPC status */ /* Rx IPC status */
enum rx_frame_status {
good_frame = 0, good_frame = 0,
discard_frame = 1, discard_frame = 1,
csum_none = 2, csum_none = 2,
...@@ -261,9 +262,9 @@ struct dma_features { ...@@ -261,9 +262,9 @@ struct dma_features {
unsigned int pmt_remote_wake_up; unsigned int pmt_remote_wake_up;
unsigned int pmt_magic_frame; unsigned int pmt_magic_frame;
unsigned int rmon; unsigned int rmon;
/* IEEE 1588-2002*/ /* IEEE 1588-2002 */
unsigned int time_stamp; unsigned int time_stamp;
/* IEEE 1588-2008*/ /* IEEE 1588-2008 */
unsigned int atime_stamp; unsigned int atime_stamp;
/* 802.3az - Energy-Efficient Ethernet (EEE) */ /* 802.3az - Energy-Efficient Ethernet (EEE) */
unsigned int eee; unsigned int eee;
...@@ -276,7 +277,7 @@ struct dma_features { ...@@ -276,7 +277,7 @@ struct dma_features {
/* TX and RX number of channels */ /* TX and RX number of channels */
unsigned int number_rx_channel; unsigned int number_rx_channel;
unsigned int number_tx_channel; unsigned int number_tx_channel;
/* Alternate (enhanced) DESC mode*/ /* Alternate (enhanced) DESC mode */
unsigned int enh_desc; unsigned int enh_desc;
}; };
...@@ -344,7 +345,7 @@ struct stmmac_desc_ops { ...@@ -344,7 +345,7 @@ struct stmmac_desc_ops {
/* get tx timestamp status */ /* get tx timestamp status */
int (*get_tx_timestamp_status) (struct dma_desc *p); int (*get_tx_timestamp_status) (struct dma_desc *p);
/* get timestamp value */ /* get timestamp value */
u64 (*get_timestamp) (void *desc, u32 ats); u64(*get_timestamp) (void *desc, u32 ats);
/* get rx timestamp status */ /* get rx timestamp status */
int (*get_rx_timestamp_status) (void *desc, u32 ats); int (*get_rx_timestamp_status) (void *desc, u32 ats);
}; };
...@@ -378,7 +379,7 @@ struct stmmac_dma_ops { ...@@ -378,7 +379,7 @@ struct stmmac_dma_ops {
struct stmmac_ops { struct stmmac_ops {
/* MAC core initialization */ /* MAC core initialization */
void (*core_init) (void __iomem *ioaddr) ____cacheline_aligned; void (*core_init) (void __iomem *ioaddr);
/* Enable and verify that the IPC module is supported */ /* Enable and verify that the IPC module is supported */
int (*rx_ipc) (void __iomem *ioaddr); int (*rx_ipc) (void __iomem *ioaddr);
/* Dump MAC registers */ /* Dump MAC registers */
...@@ -410,10 +411,10 @@ struct stmmac_hwtimestamp { ...@@ -410,10 +411,10 @@ struct stmmac_hwtimestamp {
void (*config_hw_tstamping) (void __iomem *ioaddr, u32 data); void (*config_hw_tstamping) (void __iomem *ioaddr, u32 data);
void (*config_sub_second_increment) (void __iomem *ioaddr); void (*config_sub_second_increment) (void __iomem *ioaddr);
int (*init_systime) (void __iomem *ioaddr, u32 sec, u32 nsec); int (*init_systime) (void __iomem *ioaddr, u32 sec, u32 nsec);
int (*config_addend)(void __iomem *ioaddr, u32 addend); int (*config_addend) (void __iomem *ioaddr, u32 addend);
int (*adjust_systime)(void __iomem *ioaddr, u32 sec, u32 nsec, int (*adjust_systime) (void __iomem *ioaddr, u32 sec, u32 nsec,
int add_sub); int add_sub);
u64 (*get_systime)(void __iomem *ioaddr); u64(*get_systime) (void __iomem *ioaddr);
}; };
struct mac_link { struct mac_link {
......
...@@ -117,8 +117,7 @@ static inline void ndesc_rx_set_on_chain(struct dma_desc *p, int end) ...@@ -117,8 +117,7 @@ static inline void ndesc_rx_set_on_chain(struct dma_desc *p, int end)
p->des01.rx.second_address_chained = 1; p->des01.rx.second_address_chained = 1;
} }
static inline void ndesc_tx_set_on_chain(struct dma_desc *p, int static inline void ndesc_tx_set_on_chain(struct dma_desc *p, int ring_size)
ring_size)
{ {
p->des01.tx.second_address_chained = 1; p->des01.tx.second_address_chained = 1;
} }
......
...@@ -141,7 +141,7 @@ enum inter_frame_gap { ...@@ -141,7 +141,7 @@ enum inter_frame_gap {
GMAC_CONTROL_IFG_80 = 0x00020000, GMAC_CONTROL_IFG_80 = 0x00020000,
GMAC_CONTROL_IFG_40 = 0x000e0000, GMAC_CONTROL_IFG_40 = 0x000e0000,
}; };
#define GMAC_CONTROL_DCRS 0x00010000 /* Disable carrier sense during tx */ #define GMAC_CONTROL_DCRS 0x00010000 /* Disable carrier sense */
#define GMAC_CONTROL_PS 0x00008000 /* Port Select 0:GMI 1:MII */ #define GMAC_CONTROL_PS 0x00008000 /* Port Select 0:GMI 1:MII */
#define GMAC_CONTROL_FES 0x00004000 /* Speed 0:10 1:100 */ #define GMAC_CONTROL_FES 0x00004000 /* Speed 0:10 1:100 */
#define GMAC_CONTROL_DO 0x00002000 /* Disable Rx Own */ #define GMAC_CONTROL_DO 0x00002000 /* Disable Rx Own */
...@@ -150,7 +150,7 @@ enum inter_frame_gap { ...@@ -150,7 +150,7 @@ enum inter_frame_gap {
#define GMAC_CONTROL_IPC 0x00000400 /* Checksum Offload */ #define GMAC_CONTROL_IPC 0x00000400 /* Checksum Offload */
#define GMAC_CONTROL_DR 0x00000200 /* Disable Retry */ #define GMAC_CONTROL_DR 0x00000200 /* Disable Retry */
#define GMAC_CONTROL_LUD 0x00000100 /* Link up/down */ #define GMAC_CONTROL_LUD 0x00000100 /* Link up/down */
#define GMAC_CONTROL_ACS 0x00000080 /* Automatic Pad/FCS Stripping */ #define GMAC_CONTROL_ACS 0x00000080 /* Auto Pad/FCS Stripping */
#define GMAC_CONTROL_DC 0x00000010 /* Deferral Check */ #define GMAC_CONTROL_DC 0x00000010 /* Deferral Check */
#define GMAC_CONTROL_TE 0x00000008 /* Transmitter Enable */ #define GMAC_CONTROL_TE 0x00000008 /* Transmitter Enable */
#define GMAC_CONTROL_RE 0x00000004 /* Receiver Enable */ #define GMAC_CONTROL_RE 0x00000004 /* Receiver Enable */
...@@ -191,9 +191,9 @@ enum inter_frame_gap { ...@@ -191,9 +191,9 @@ enum inter_frame_gap {
#define DMA_BUS_MODE_ATDS 0x00000080 /* Alternate Descriptor Size */ #define DMA_BUS_MODE_ATDS 0x00000080 /* Alternate Descriptor Size */
enum rx_tx_priority_ratio { enum rx_tx_priority_ratio {
double_ratio = 0x00004000, /*2:1 */ double_ratio = 0x00004000, /* 2:1 */
triple_ratio = 0x00008000, /*3:1 */ triple_ratio = 0x00008000, /* 3:1 */
quadruple_ratio = 0x0000c000, /*4:1 */ quadruple_ratio = 0x0000c000, /* 4:1 */
}; };
#define DMA_BUS_MODE_FB 0x00010000 /* Fixed burst */ #define DMA_BUS_MODE_FB 0x00010000 /* Fixed burst */
...@@ -213,7 +213,8 @@ enum rx_tx_priority_ratio { ...@@ -213,7 +213,8 @@ enum rx_tx_priority_ratio {
#define DMA_BUS_FB 0x00010000 /* Fixed Burst */ #define DMA_BUS_FB 0x00010000 /* Fixed Burst */
/* DMA operation mode defines (start/stop tx/rx are placed in common header)*/ /* DMA operation mode defines (start/stop tx/rx are placed in common header)*/
#define DMA_CONTROL_DT 0x04000000 /* Disable Drop TCP/IP csum error */ /* Disable Drop TCP/IP csum error */
#define DMA_CONTROL_DT 0x04000000
#define DMA_CONTROL_RSF 0x02000000 /* Receive Store and Forward */ #define DMA_CONTROL_RSF 0x02000000 /* Receive Store and Forward */
#define DMA_CONTROL_DFF 0x01000000 /* Disaable flushing */ #define DMA_CONTROL_DFF 0x01000000 /* Disaable flushing */
/* Threshold for Activating the FC */ /* Threshold for Activating the FC */
...@@ -264,7 +265,5 @@ enum rtc_control { ...@@ -264,7 +265,5 @@ enum rtc_control {
#define GMAC_MMC_TX_INTR 0x108 #define GMAC_MMC_TX_INTR 0x108
#define GMAC_MMC_RX_CSUM_OFFLOAD 0x208 #define GMAC_MMC_RX_CSUM_OFFLOAD 0x208
extern const struct stmmac_dma_ops dwmac1000_dma_ops; extern const struct stmmac_dma_ops dwmac1000_dma_ops;
#endif /* __DWMAC1000_H__ */ #endif /* __DWMAC1000_H__ */
...@@ -87,7 +87,7 @@ static void dwmac1000_get_umac_addr(void __iomem *ioaddr, unsigned char *addr, ...@@ -87,7 +87,7 @@ static void dwmac1000_get_umac_addr(void __iomem *ioaddr, unsigned char *addr,
static void dwmac1000_set_filter(struct net_device *dev, int id) static void dwmac1000_set_filter(struct net_device *dev, int id)
{ {
void __iomem *ioaddr = (void __iomem *) dev->base_addr; void __iomem *ioaddr = (void __iomem *)dev->base_addr;
unsigned int value = 0; unsigned int value = 0;
unsigned int perfect_addr_number; unsigned int perfect_addr_number;
...@@ -111,12 +111,13 @@ static void dwmac1000_set_filter(struct net_device *dev, int id) ...@@ -111,12 +111,13 @@ static void dwmac1000_set_filter(struct net_device *dev, int id)
memset(mc_filter, 0, sizeof(mc_filter)); memset(mc_filter, 0, sizeof(mc_filter));
netdev_for_each_mc_addr(ha, dev) { netdev_for_each_mc_addr(ha, dev) {
/* The upper 6 bits of the calculated CRC are used to /* The upper 6 bits of the calculated CRC are used to
index the contens of the hash table */ * index the contens of the hash table
int bit_nr = */
bitrev32(~crc32_le(~0, ha->addr, 6)) >> 26; int bit_nr = bitrev32(~crc32_le(~0, ha->addr, 6)) >> 26;
/* The most significant bit determines the register to /* The most significant bit determines the register to
* use (H/L) while the other 5 bits determine the bit * use (H/L) while the other 5 bits determine the bit
* within the register. */ * within the register.
*/
mc_filter[bit_nr >> 5] |= 1 << (bit_nr & 31); mc_filter[bit_nr >> 5] |= 1 << (bit_nr & 31);
} }
writel(mc_filter[0], ioaddr + GMAC_HASH_LOW); writel(mc_filter[0], ioaddr + GMAC_HASH_LOW);
...@@ -129,10 +130,11 @@ static void dwmac1000_set_filter(struct net_device *dev, int id) ...@@ -129,10 +130,11 @@ static void dwmac1000_set_filter(struct net_device *dev, int id)
else else
perfect_addr_number = GMAC_MAX_PERFECT_ADDRESSES / 2; perfect_addr_number = GMAC_MAX_PERFECT_ADDRESSES / 2;
/* Handle multiple unicast addresses (perfect filtering)*/ /* Handle multiple unicast addresses (perfect filtering) */
if (netdev_uc_count(dev) > perfect_addr_number) if (netdev_uc_count(dev) > perfect_addr_number)
/* Switch to promiscuous mode is more than 16 addrs /* Switch to promiscuous mode if more than 16 addrs
are required */ * are required
*/
value |= GMAC_FRAME_FILTER_PR; value |= GMAC_FRAME_FILTER_PR;
else { else {
int reg = 1; int reg = 1;
...@@ -150,8 +152,8 @@ static void dwmac1000_set_filter(struct net_device *dev, int id) ...@@ -150,8 +152,8 @@ static void dwmac1000_set_filter(struct net_device *dev, int id)
#endif #endif
writel(value, ioaddr + GMAC_FRAME_FILTER); writel(value, ioaddr + GMAC_FRAME_FILTER);
CHIP_DBG(KERN_INFO "\tFrame Filter reg: 0x%08x\n\tHash regs: " CHIP_DBG(KERN_INFO "\tFilter: 0x%08x\n\tHash: HI 0x%08x, LO 0x%08x\n",
"HI 0x%08x, LO 0x%08x\n", readl(ioaddr + GMAC_FRAME_FILTER), readl(ioaddr + GMAC_FRAME_FILTER),
readl(ioaddr + GMAC_HASH_HIGH), readl(ioaddr + GMAC_HASH_LOW)); readl(ioaddr + GMAC_HASH_HIGH), readl(ioaddr + GMAC_HASH_LOW));
} }
...@@ -218,8 +220,7 @@ static int dwmac1000_irq_status(void __iomem *ioaddr, ...@@ -218,8 +220,7 @@ static int dwmac1000_irq_status(void __iomem *ioaddr,
} }
if (unlikely(intr_status & pmt_irq)) { if (unlikely(intr_status & pmt_irq)) {
CHIP_DBG(KERN_INFO "GMAC: received Magic frame\n"); CHIP_DBG(KERN_INFO "GMAC: received Magic frame\n");
/* clear the PMT bits 5 and 6 by reading the PMT /* clear the PMT bits 5 and 6 by reading the PMT status reg */
* status register. */
readl(ioaddr + GMAC_PMT); readl(ioaddr + GMAC_PMT);
x->irq_receive_pmt_irq_n++; x->irq_receive_pmt_irq_n++;
} }
...@@ -270,7 +271,7 @@ static int dwmac1000_irq_status(void __iomem *ioaddr, ...@@ -270,7 +271,7 @@ static int dwmac1000_irq_status(void __iomem *ioaddr,
x->pcs_speed = SPEED_10; x->pcs_speed = SPEED_10;
x->pcs_link = 1; x->pcs_link = 1;
pr_debug("Link is Up - %d/%s\n", (int) x->pcs_speed, pr_debug("Link is Up - %d/%s\n", (int)x->pcs_speed,
x->pcs_duplex ? "Full" : "Half"); x->pcs_duplex ? "Full" : "Half");
} else { } else {
x->pcs_link = 0; x->pcs_link = 0;
...@@ -287,7 +288,8 @@ static void dwmac1000_set_eee_mode(void __iomem *ioaddr) ...@@ -287,7 +288,8 @@ static void dwmac1000_set_eee_mode(void __iomem *ioaddr)
/* Enable the link status receive on RGMII, SGMII ore SMII /* Enable the link status receive on RGMII, SGMII ore SMII
* receive path and instruct the transmit to enter in LPI * receive path and instruct the transmit to enter in LPI
* state. */ * state.
*/
value = readl(ioaddr + LPI_CTRL_STATUS); value = readl(ioaddr + LPI_CTRL_STATUS);
value |= LPI_CTRL_STATUS_LPIEN | LPI_CTRL_STATUS_LPITXA; value |= LPI_CTRL_STATUS_LPIEN | LPI_CTRL_STATUS_LPITXA;
writel(value, ioaddr + LPI_CTRL_STATUS); writel(value, ioaddr + LPI_CTRL_STATUS);
......
...@@ -94,14 +94,16 @@ static int dwmac1000_dma_init(void __iomem *ioaddr, int pbl, int fb, int mb, ...@@ -94,14 +94,16 @@ static int dwmac1000_dma_init(void __iomem *ioaddr, int pbl, int fb, int mb,
* *
* For Non Fixed Burst Mode: provide the maximum value of the * For Non Fixed Burst Mode: provide the maximum value of the
* burst length. Any burst equal or below the provided burst * burst length. Any burst equal or below the provided burst
* length would be allowed to perform. */ * length would be allowed to perform.
*/
writel(burst_len, ioaddr + DMA_AXI_BUS_MODE); writel(burst_len, ioaddr + DMA_AXI_BUS_MODE);
/* Mask interrupts by writing to CSR7 */ /* Mask interrupts by writing to CSR7 */
writel(DMA_INTR_DEFAULT_MASK, ioaddr + DMA_INTR_ENA); writel(DMA_INTR_DEFAULT_MASK, ioaddr + DMA_INTR_ENA);
/* The base address of the RX/TX descriptor lists must be written into /* RX/TX descriptor base address lists must be written into
* DMA CSR3 and CSR4, respectively. */ * DMA CSR3 and CSR4, respectively
*/
writel(dma_tx, ioaddr + DMA_TX_BASE_ADDR); writel(dma_tx, ioaddr + DMA_TX_BASE_ADDR);
writel(dma_rx, ioaddr + DMA_RCV_BASE_ADDR); writel(dma_rx, ioaddr + DMA_RCV_BASE_ADDR);
...@@ -118,11 +120,12 @@ static void dwmac1000_dma_operation_mode(void __iomem *ioaddr, int txmode, ...@@ -118,11 +120,12 @@ static void dwmac1000_dma_operation_mode(void __iomem *ioaddr, int txmode,
/* Transmit COE type 2 cannot be done in cut-through mode. */ /* Transmit COE type 2 cannot be done in cut-through mode. */
csr6 |= DMA_CONTROL_TSF; csr6 |= DMA_CONTROL_TSF;
/* Operating on second frame increase the performance /* Operating on second frame increase the performance
* especially when transmit store-and-forward is used.*/ * especially when transmit store-and-forward is used.
*/
csr6 |= DMA_CONTROL_OSF; csr6 |= DMA_CONTROL_OSF;
} else { } else {
CHIP_DBG(KERN_DEBUG "GMAC: disabling TX store and forward mode" CHIP_DBG(KERN_DEBUG "GMAC: disabling TX SF (threshold %d)\n",
" (threshold = %d)\n", txmode); txmode);
csr6 &= ~DMA_CONTROL_TSF; csr6 &= ~DMA_CONTROL_TSF;
csr6 &= DMA_CONTROL_TC_TX_MASK; csr6 &= DMA_CONTROL_TC_TX_MASK;
/* Set the transmit threshold */ /* Set the transmit threshold */
...@@ -142,8 +145,8 @@ static void dwmac1000_dma_operation_mode(void __iomem *ioaddr, int txmode, ...@@ -142,8 +145,8 @@ static void dwmac1000_dma_operation_mode(void __iomem *ioaddr, int txmode,
CHIP_DBG(KERN_DEBUG "GMAC: enable RX store and forward mode\n"); CHIP_DBG(KERN_DEBUG "GMAC: enable RX store and forward mode\n");
csr6 |= DMA_CONTROL_RSF; csr6 |= DMA_CONTROL_RSF;
} else { } else {
CHIP_DBG(KERN_DEBUG "GMAC: disabling RX store and forward mode" CHIP_DBG(KERN_DEBUG "GMAC: disable RX SF mode (threshold %d)\n",
" (threshold = %d)\n", rxmode); rxmode);
csr6 &= ~DMA_CONTROL_RSF; csr6 &= ~DMA_CONTROL_RSF;
csr6 &= DMA_CONTROL_TC_RX_MASK; csr6 &= DMA_CONTROL_TC_RX_MASK;
if (rxmode <= 32) if (rxmode <= 32)
......
...@@ -47,8 +47,7 @@ static void dwmac100_dump_mac_regs(void __iomem *ioaddr) ...@@ -47,8 +47,7 @@ static void dwmac100_dump_mac_regs(void __iomem *ioaddr)
{ {
pr_info("\t----------------------------------------------\n" pr_info("\t----------------------------------------------\n"
"\t DWMAC 100 CSR (base addr = 0x%p)\n" "\t DWMAC 100 CSR (base addr = 0x%p)\n"
"\t----------------------------------------------\n", "\t----------------------------------------------\n", ioaddr);
ioaddr);
pr_info("\tcontrol reg (offset 0x%x): 0x%08x\n", MAC_CONTROL, pr_info("\tcontrol reg (offset 0x%x): 0x%08x\n", MAC_CONTROL,
readl(ioaddr + MAC_CONTROL)); readl(ioaddr + MAC_CONTROL));
pr_info("\taddr HI (offset 0x%x): 0x%08x\n ", MAC_ADDR_HIGH, pr_info("\taddr HI (offset 0x%x): 0x%08x\n ", MAC_ADDR_HIGH,
...@@ -92,7 +91,7 @@ static void dwmac100_get_umac_addr(void __iomem *ioaddr, unsigned char *addr, ...@@ -92,7 +91,7 @@ static void dwmac100_get_umac_addr(void __iomem *ioaddr, unsigned char *addr,
static void dwmac100_set_filter(struct net_device *dev, int id) static void dwmac100_set_filter(struct net_device *dev, int id)
{ {
void __iomem *ioaddr = (void __iomem *) dev->base_addr; void __iomem *ioaddr = (void __iomem *)dev->base_addr;
u32 value = readl(ioaddr + MAC_CONTROL); u32 value = readl(ioaddr + MAC_CONTROL);
if (dev->flags & IFF_PROMISC) { if (dev->flags & IFF_PROMISC) {
...@@ -113,7 +112,8 @@ static void dwmac100_set_filter(struct net_device *dev, int id) ...@@ -113,7 +112,8 @@ static void dwmac100_set_filter(struct net_device *dev, int id)
struct netdev_hw_addr *ha; struct netdev_hw_addr *ha;
/* Perfect filter mode for physical address and Hash /* Perfect filter mode for physical address and Hash
filter for multicast */ * filter for multicast
*/
value |= MAC_CONTROL_HP; value |= MAC_CONTROL_HP;
value &= ~(MAC_CONTROL_PM | MAC_CONTROL_PR | value &= ~(MAC_CONTROL_PM | MAC_CONTROL_PR |
MAC_CONTROL_IF | MAC_CONTROL_HO); MAC_CONTROL_IF | MAC_CONTROL_HO);
...@@ -121,12 +121,13 @@ static void dwmac100_set_filter(struct net_device *dev, int id) ...@@ -121,12 +121,13 @@ static void dwmac100_set_filter(struct net_device *dev, int id)
memset(mc_filter, 0, sizeof(mc_filter)); memset(mc_filter, 0, sizeof(mc_filter));
netdev_for_each_mc_addr(ha, dev) { netdev_for_each_mc_addr(ha, dev) {
/* The upper 6 bits of the calculated CRC are used to /* The upper 6 bits of the calculated CRC are used to
* index the contens of the hash table */ * index the contens of the hash table
int bit_nr = */
ether_crc(ETH_ALEN, ha->addr) >> 26; int bit_nr = ether_crc(ETH_ALEN, ha->addr) >> 26;
/* The most significant bit determines the register to /* The most significant bit determines the register to
* use (H/L) while the other 5 bits determine the bit * use (H/L) while the other 5 bits determine the bit
* within the register. */ * within the register.
*/
mc_filter[bit_nr >> 5] |= 1 << (bit_nr & 31); mc_filter[bit_nr >> 5] |= 1 << (bit_nr & 31);
} }
writel(mc_filter[0], ioaddr + MAC_HASH_LOW); writel(mc_filter[0], ioaddr + MAC_HASH_LOW);
...@@ -135,8 +136,7 @@ static void dwmac100_set_filter(struct net_device *dev, int id) ...@@ -135,8 +136,7 @@ static void dwmac100_set_filter(struct net_device *dev, int id)
writel(value, ioaddr + MAC_CONTROL); writel(value, ioaddr + MAC_CONTROL);
CHIP_DBG(KERN_INFO "%s: CTRL reg: 0x%08x Hash regs: " CHIP_DBG(KERN_INFO "%s: Filter: 0x%08x Hash: HI 0x%08x, LO 0x%08x\n",
"HI 0x%08x, LO 0x%08x\n",
__func__, readl(ioaddr + MAC_CONTROL), __func__, readl(ioaddr + MAC_CONTROL),
readl(ioaddr + MAC_HASH_HIGH), readl(ioaddr + MAC_HASH_LOW)); readl(ioaddr + MAC_HASH_HIGH), readl(ioaddr + MAC_HASH_LOW));
} }
...@@ -151,9 +151,7 @@ static void dwmac100_flow_ctrl(void __iomem *ioaddr, unsigned int duplex, ...@@ -151,9 +151,7 @@ static void dwmac100_flow_ctrl(void __iomem *ioaddr, unsigned int duplex,
writel(flow, ioaddr + MAC_FLOW_CTRL); writel(flow, ioaddr + MAC_FLOW_CTRL);
} }
/* No PMT module supported for this Ethernet Controller. /* No PMT module supported on ST boards with this Eth chip. */
* Tested on ST platforms only.
*/
static void dwmac100_pmt(void __iomem *ioaddr, unsigned long mode) static void dwmac100_pmt(void __iomem *ioaddr, unsigned long mode)
{ {
return; return;
......
...@@ -57,17 +57,20 @@ static int dwmac100_dma_init(void __iomem *ioaddr, int pbl, int fb, int mb, ...@@ -57,17 +57,20 @@ static int dwmac100_dma_init(void __iomem *ioaddr, int pbl, int fb, int mb,
/* Mask interrupts by writing to CSR7 */ /* Mask interrupts by writing to CSR7 */
writel(DMA_INTR_DEFAULT_MASK, ioaddr + DMA_INTR_ENA); writel(DMA_INTR_DEFAULT_MASK, ioaddr + DMA_INTR_ENA);
/* The base address of the RX/TX descriptor lists must be written into /* RX/TX descriptor base addr lists must be written into
* DMA CSR3 and CSR4, respectively. */ * DMA CSR3 and CSR4, respectively
*/
writel(dma_tx, ioaddr + DMA_TX_BASE_ADDR); writel(dma_tx, ioaddr + DMA_TX_BASE_ADDR);
writel(dma_rx, ioaddr + DMA_RCV_BASE_ADDR); writel(dma_rx, ioaddr + DMA_RCV_BASE_ADDR);
return 0; return 0;
} }
/* Store and Forward capability is not used at all.. /* Store and Forward capability is not used at all.
* The transmit threshold can be programmed by *
* setting the TTC bits in the DMA control register.*/ * The transmit threshold can be programmed by setting the TTC bits in the DMA
* control register.
*/
static void dwmac100_dma_operation_mode(void __iomem *ioaddr, int txmode, static void dwmac100_dma_operation_mode(void __iomem *ioaddr, int txmode,
int rxmode) int rxmode)
{ {
...@@ -98,8 +101,7 @@ static void dwmac100_dump_dma_regs(void __iomem *ioaddr) ...@@ -98,8 +101,7 @@ static void dwmac100_dump_dma_regs(void __iomem *ioaddr)
DMA_CUR_RX_BUF_ADDR, readl(ioaddr + DMA_CUR_RX_BUF_ADDR)); DMA_CUR_RX_BUF_ADDR, readl(ioaddr + DMA_CUR_RX_BUF_ADDR));
} }
/* DMA controller has two counters to track the number of /* DMA controller has two counters to track the number of the missed frames. */
* the receive missed frames. */
static void dwmac100_dma_diagnostic_fr(void *data, struct stmmac_extra_stats *x, static void dwmac100_dma_diagnostic_fr(void *data, struct stmmac_extra_stats *x,
void __iomem *ioaddr) void __iomem *ioaddr)
{ {
......
...@@ -28,8 +28,7 @@ ...@@ -28,8 +28,7 @@
/* MMC control register */ /* MMC control register */
/* When set, all counter are reset */ /* When set, all counter are reset */
#define MMC_CNTRL_COUNTER_RESET 0x1 #define MMC_CNTRL_COUNTER_RESET 0x1
/* When set, do not roll over zero /* When set, do not roll over zero after reaching the max value*/
* after reaching the max value*/
#define MMC_CNTRL_COUNTER_STOP_ROLLOVER 0x2 #define MMC_CNTRL_COUNTER_STOP_ROLLOVER 0x2
#define MMC_CNTRL_RESET_ON_READ 0x4 /* Reset after reading */ #define MMC_CNTRL_RESET_ON_READ 0x4 /* Reset after reading */
#define MMC_CNTRL_COUNTER_FREEZER 0x8 /* Freeze counter values to the #define MMC_CNTRL_COUNTER_FREEZER 0x8 /* Freeze counter values to the
......
...@@ -79,8 +79,8 @@ static int ndesc_get_rx_status(void *data, struct stmmac_extra_stats *x, ...@@ -79,8 +79,8 @@ static int ndesc_get_rx_status(void *data, struct stmmac_extra_stats *x,
struct net_device_stats *stats = (struct net_device_stats *)data; struct net_device_stats *stats = (struct net_device_stats *)data;
if (unlikely(p->des01.rx.last_descriptor == 0)) { if (unlikely(p->des01.rx.last_descriptor == 0)) {
pr_warning("ndesc Error: Oversized Ethernet " pr_warn("%s: Oversized frame spanned multiple buffers\n",
"frame spanned multiple buffers\n"); __func__);
stats->rx_length_errors++; stats->rx_length_errors++;
return discard_frame; return discard_frame;
} }
......
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
static unsigned int stmmac_jumbo_frm(void *p, struct sk_buff *skb, int csum) static unsigned int stmmac_jumbo_frm(void *p, struct sk_buff *skb, int csum)
{ {
struct stmmac_priv *priv = (struct stmmac_priv *) p; struct stmmac_priv *priv = (struct stmmac_priv *)p;
unsigned int txsize = priv->dma_tx_size; unsigned int txsize = priv->dma_tx_size;
unsigned int entry = priv->cur_tx % txsize; unsigned int entry = priv->cur_tx % txsize;
struct dma_desc *desc = priv->dma_tx + entry; struct dma_desc *desc = priv->dma_tx + entry;
......
...@@ -142,6 +142,7 @@ static inline int stmmac_register_platform(void) ...@@ -142,6 +142,7 @@ static inline int stmmac_register_platform(void)
return err; return err;
} }
static inline void stmmac_unregister_platform(void) static inline void stmmac_unregister_platform(void)
{ {
platform_driver_unregister(&stmmac_pltfr_driver); platform_driver_unregister(&stmmac_pltfr_driver);
...@@ -153,6 +154,7 @@ static inline int stmmac_register_platform(void) ...@@ -153,6 +154,7 @@ static inline int stmmac_register_platform(void)
return 0; return 0;
} }
static inline void stmmac_unregister_platform(void) static inline void stmmac_unregister_platform(void)
{ {
} }
...@@ -170,6 +172,7 @@ static inline int stmmac_register_pci(void) ...@@ -170,6 +172,7 @@ static inline int stmmac_register_pci(void)
return err; return err;
} }
static inline void stmmac_unregister_pci(void) static inline void stmmac_unregister_pci(void)
{ {
pci_unregister_driver(&stmmac_pci_driver); pci_unregister_driver(&stmmac_pci_driver);
...@@ -181,6 +184,7 @@ static inline int stmmac_register_pci(void) ...@@ -181,6 +184,7 @@ static inline int stmmac_register_pci(void)
return 0; return 0;
} }
static inline void stmmac_unregister_pci(void) static inline void stmmac_unregister_pci(void)
{ {
} }
......
...@@ -88,7 +88,7 @@ static int stmmac_pci_probe(struct pci_dev *pdev, ...@@ -88,7 +88,7 @@ static int stmmac_pci_probe(struct pci_dev *pdev,
continue; continue;
addr = pci_iomap(pdev, i, 0); addr = pci_iomap(pdev, i, 0);
if (addr == NULL) { if (addr == NULL) {
pr_err("%s: ERROR: cannot map register memory, aborting", pr_err("%s: ERROR: cannot map register memory aborting",
__func__); __func__);
ret = -EIO; ret = -EIO;
goto err_out_map_failed; goto err_out_map_failed;
......
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