diff options
author | Yoshinori Sato <ysato@users.sourceforge.jp> | 2008-08-06 19:49:00 -0400 |
---|---|---|
committer | Jeff Garzik <jgarzik@redhat.com> | 2008-08-07 02:20:57 -0400 |
commit | 71557a37adb5df17631c493b3b7d912938c720b2 (patch) | |
tree | 7fdb2548aa5053289f0198d057e3428d43367688 /drivers/net/sh_eth.h | |
parent | d91d4bb9db4a7b2a78accff3560bfd42988c56e4 (diff) |
[netdrvr] sh_eth: Add SH7619 support
Add support SH7619 Internal ethernet controler.
Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
Diffstat (limited to 'drivers/net/sh_eth.h')
-rw-r--r-- | drivers/net/sh_eth.h | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/drivers/net/sh_eth.h b/drivers/net/sh_eth.h index 45ad1b09ca5a..73bc7181cc18 100644 --- a/drivers/net/sh_eth.h +++ b/drivers/net/sh_eth.h | |||
@@ -30,6 +30,8 @@ | |||
30 | #include <linux/netdevice.h> | 30 | #include <linux/netdevice.h> |
31 | #include <linux/phy.h> | 31 | #include <linux/phy.h> |
32 | 32 | ||
33 | #include <asm/sh_eth.h> | ||
34 | |||
33 | #define CARDNAME "sh-eth" | 35 | #define CARDNAME "sh-eth" |
34 | #define TX_TIMEOUT (5*HZ) | 36 | #define TX_TIMEOUT (5*HZ) |
35 | #define TX_RING_SIZE 64 /* Tx ring size */ | 37 | #define TX_RING_SIZE 64 /* Tx ring size */ |
@@ -143,10 +145,11 @@ | |||
143 | 145 | ||
144 | #else /* CONFIG_CPU_SUBTYPE_SH7763 */ | 146 | #else /* CONFIG_CPU_SUBTYPE_SH7763 */ |
145 | # define RX_OFFSET 2 /* skb offset */ | 147 | # define RX_OFFSET 2 /* skb offset */ |
148 | #ifndef CONFIG_CPU_SUBTYPE_SH7619 | ||
146 | /* Chip base address */ | 149 | /* Chip base address */ |
147 | # define SH_TSU_ADDR 0xA7000804 | 150 | # define SH_TSU_ADDR 0xA7000804 |
148 | # define ARSTR 0xA7000800 | 151 | # define ARSTR 0xA7000800 |
149 | 152 | #endif | |
150 | /* Chip Registers */ | 153 | /* Chip Registers */ |
151 | /* E-DMAC */ | 154 | /* E-DMAC */ |
152 | # define EDMR 0x0000 | 155 | # define EDMR 0x0000 |
@@ -384,7 +387,11 @@ enum FCFTR_BIT { | |||
384 | FCFTR_RFD1 = 0x00000002, FCFTR_RFD0 = 0x00000001, | 387 | FCFTR_RFD1 = 0x00000002, FCFTR_RFD0 = 0x00000001, |
385 | }; | 388 | }; |
386 | #define FIFO_F_D_RFF (FCFTR_RFF2|FCFTR_RFF1|FCFTR_RFF0) | 389 | #define FIFO_F_D_RFF (FCFTR_RFF2|FCFTR_RFF1|FCFTR_RFF0) |
390 | #ifndef CONFIG_CPU_SUBTYPE_SH7619 | ||
387 | #define FIFO_F_D_RFD (FCFTR_RFD2|FCFTR_RFD1|FCFTR_RFD0) | 391 | #define FIFO_F_D_RFD (FCFTR_RFD2|FCFTR_RFD1|FCFTR_RFD0) |
392 | #else | ||
393 | #define FIFO_F_D_RFD (FCFTR_RFD0) | ||
394 | #endif | ||
388 | 395 | ||
389 | /* Transfer descriptor bit */ | 396 | /* Transfer descriptor bit */ |
390 | enum TD_STS_BIT { | 397 | enum TD_STS_BIT { |
@@ -414,8 +421,10 @@ enum FELIC_MODE_BIT { | |||
414 | #ifdef CONFIG_CPU_SUBTYPE_SH7763 | 421 | #ifdef CONFIG_CPU_SUBTYPE_SH7763 |
415 | #define ECMR_CHG_DM (ECMR_TRCCM | ECMR_RZPF | ECMR_ZPF |\ | 422 | #define ECMR_CHG_DM (ECMR_TRCCM | ECMR_RZPF | ECMR_ZPF |\ |
416 | ECMR_PFR | ECMR_RXF | ECMR_TXF | ECMR_MCT) | 423 | ECMR_PFR | ECMR_RXF | ECMR_TXF | ECMR_MCT) |
424 | #elif CONFIG_CPU_SUBTYPE_SH7619 | ||
425 | #define ECMR_CHG_DM (ECMR_ZPF | ECMR_PFR | ECMR_RXF | ECMR_TXF) | ||
417 | #else | 426 | #else |
418 | #define ECMR_CHG_DM (ECMR_ZPF | ECMR_PFR ECMR_RXF | ECMR_TXF | ECMR_MCT) | 427 | #define ECMR_CHG_DM (ECMR_ZPF | ECMR_PFR | ECMR_RXF | ECMR_TXF | ECMR_MCT) |
419 | #endif | 428 | #endif |
420 | 429 | ||
421 | /* ECSR */ | 430 | /* ECSR */ |
@@ -485,7 +494,11 @@ enum RPADIR_BIT { | |||
485 | 494 | ||
486 | /* FDR */ | 495 | /* FDR */ |
487 | enum FIFO_SIZE_BIT { | 496 | enum FIFO_SIZE_BIT { |
497 | #ifndef CONFIG_CPU_SUBTYPE_SH7619 | ||
488 | FIFO_SIZE_T = 0x00000700, FIFO_SIZE_R = 0x00000007, | 498 | FIFO_SIZE_T = 0x00000700, FIFO_SIZE_R = 0x00000007, |
499 | #else | ||
500 | FIFO_SIZE_T = 0x00000100, FIFO_SIZE_R = 0x00000001, | ||
501 | #endif | ||
489 | }; | 502 | }; |
490 | enum phy_offsets { | 503 | enum phy_offsets { |
491 | PHY_CTRL = 0, PHY_STAT = 1, PHY_IDT1 = 2, PHY_IDT2 = 3, | 504 | PHY_CTRL = 0, PHY_STAT = 1, PHY_IDT1 = 2, PHY_IDT2 = 3, |
@@ -601,7 +614,7 @@ struct sh_eth_txdesc { | |||
601 | #endif | 614 | #endif |
602 | u32 addr; /* TD2 */ | 615 | u32 addr; /* TD2 */ |
603 | u32 pad1; /* padding data */ | 616 | u32 pad1; /* padding data */ |
604 | }; | 617 | } __attribute__((aligned(2), packed)); |
605 | 618 | ||
606 | /* | 619 | /* |
607 | * The sh ether Rx buffer descriptors. | 620 | * The sh ether Rx buffer descriptors. |
@@ -618,7 +631,7 @@ struct sh_eth_rxdesc { | |||
618 | #endif | 631 | #endif |
619 | u32 addr; /* RD2 */ | 632 | u32 addr; /* RD2 */ |
620 | u32 pad0; /* padding data */ | 633 | u32 pad0; /* padding data */ |
621 | }; | 634 | } __attribute__((aligned(2), packed)); |
622 | 635 | ||
623 | struct sh_eth_private { | 636 | struct sh_eth_private { |
624 | dma_addr_t rx_desc_dma; | 637 | dma_addr_t rx_desc_dma; |
@@ -633,6 +646,7 @@ struct sh_eth_private { | |||
633 | u32 cur_rx, dirty_rx; /* Producer/consumer ring indices */ | 646 | u32 cur_rx, dirty_rx; /* Producer/consumer ring indices */ |
634 | u32 cur_tx, dirty_tx; | 647 | u32 cur_tx, dirty_tx; |
635 | u32 rx_buf_sz; /* Based on MTU+slack. */ | 648 | u32 rx_buf_sz; /* Based on MTU+slack. */ |
649 | int edmac_endian; | ||
636 | /* MII transceiver section. */ | 650 | /* MII transceiver section. */ |
637 | u32 phy_id; /* PHY ID */ | 651 | u32 phy_id; /* PHY ID */ |
638 | struct mii_bus *mii_bus; /* MDIO bus control */ | 652 | struct mii_bus *mii_bus; /* MDIO bus control */ |