net: macb: Add 64 bit addressing support for GEM
This patch adds support for 64 bit addressing and BDs. -> Enable 64 bit addressing in DMACFG register. -> Set DMA mask when design config register shows support for 64 bit addr. -> Add new BD words for higher address when 64 bit DMA support is present. -> Add and update TBQPH and RBQPH for MSB of BD pointers. -> Change extraction and updation of buffer addresses to use 64 bit address. -> In gem_rx extract address in one place insted of two and use a separate flag for RXUSED. Signed-off-by: Harini Katakam <harinik@xilinx.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
054c67d1c8
commit
fff8019a08
@@ -66,6 +66,8 @@
|
||||
#define MACB_USRIO 0x00c0
|
||||
#define MACB_WOL 0x00c4
|
||||
#define MACB_MID 0x00fc
|
||||
#define MACB_TBQPH 0x04C8
|
||||
#define MACB_RBQPH 0x04D4
|
||||
|
||||
/* GEM register offsets. */
|
||||
#define GEM_NCFGR 0x0004 /* Network Config */
|
||||
@@ -139,6 +141,7 @@
|
||||
|
||||
#define GEM_ISR(hw_q) (0x0400 + ((hw_q) << 2))
|
||||
#define GEM_TBQP(hw_q) (0x0440 + ((hw_q) << 2))
|
||||
#define GEM_TBQPH(hw_q) (0x04C8)
|
||||
#define GEM_RBQP(hw_q) (0x0480 + ((hw_q) << 2))
|
||||
#define GEM_IER(hw_q) (0x0600 + ((hw_q) << 2))
|
||||
#define GEM_IDR(hw_q) (0x0620 + ((hw_q) << 2))
|
||||
@@ -249,6 +252,8 @@
|
||||
#define GEM_RXBS_SIZE 8
|
||||
#define GEM_DDRP_OFFSET 24 /* disc_when_no_ahb */
|
||||
#define GEM_DDRP_SIZE 1
|
||||
#define GEM_ADDR64_OFFSET 30 /* Address bus width - 64b or 32b */
|
||||
#define GEM_ADDR64_SIZE 1
|
||||
|
||||
|
||||
/* Bitfields in NSR */
|
||||
@@ -474,6 +479,10 @@
|
||||
struct macb_dma_desc {
|
||||
u32 addr;
|
||||
u32 ctrl;
|
||||
#ifdef CONFIG_ARCH_DMA_ADDR_T_64BIT
|
||||
u32 addrh;
|
||||
u32 resvd;
|
||||
#endif
|
||||
};
|
||||
|
||||
/* DMA descriptor bitfields */
|
||||
@@ -777,6 +786,7 @@ struct macb_queue {
|
||||
unsigned int IDR;
|
||||
unsigned int IMR;
|
||||
unsigned int TBQP;
|
||||
unsigned int TBQPH;
|
||||
|
||||
unsigned int tx_head, tx_tail;
|
||||
struct macb_dma_desc *tx_ring;
|
||||
|
Reference in New Issue
Block a user