[linux-yocto] [PATCH 52/94] arm/include: A clean up of the femac acp_net.h code.

Paul Butler butler.paul at gmail.com
Thu Nov 7 17:13:06 PST 2013


Signed-off-by: Paul Butler <paul.butler at windriver.com>
---
 drivers/net/ethernet/lsi/lsi_acp_net.h | 76 +++++++++++++++++++++++++++++++---
 1 file changed, 71 insertions(+), 5 deletions(-)

diff --git a/drivers/net/ethernet/lsi/lsi_acp_net.h b/drivers/net/ethernet/lsi/lsi_acp_net.h
index f7de38d..9289073 100644
--- a/drivers/net/ethernet/lsi/lsi_acp_net.h
+++ b/drivers/net/ethernet/lsi/lsi_acp_net.h
@@ -40,6 +40,29 @@ extern int ubootenv_get(const char *, char *);
 
 struct appnic_dma_descriptor {
 
+#ifdef CONFIG_ARM
+	/* Word 0 */
+	/* 00=Fill|01=Block|10=Scatter */
+	unsigned long transfer_type:2;
+	unsigned long write:1;
+	unsigned long start_of_packet:1;
+	unsigned long end_of_packet:1;
+	unsigned long interrupt_on_completion:1;
+	unsigned long error:1;
+	/* big endian to little endian */
+	unsigned long byte_swapping_on:1;
+	unsigned long unused:24;
+
+	/* Word 1 */
+	unsigned long data_transfer_length:16;
+	unsigned long pdu_length:16;
+
+	/* Word 2 */
+	unsigned long target_memory_address;
+
+	/* Word 3 */
+	unsigned long host_data_memory_pointer;
+#else
 	/* Word 0 */
 	unsigned long unused:24;
 	/* big endian to little endian */
@@ -61,20 +84,27 @@ struct appnic_dma_descriptor {
 
 	/* Word 3 */
 	unsigned long host_data_memory_pointer;
+#endif
 
-} __packed;
+} __attribute__ ((packed));
 
 union appnic_queue_pointer {
 
 	unsigned long raw;
 
 	struct {
+#ifdef CONFIG_ARM
+		unsigned long offset:20;
+		unsigned long generation_bit:1;
+		unsigned long unused:11;
+#else
 		unsigned long unused:11;
 		unsigned long generation_bit:1;
 		unsigned long offset:20;
-	} __packed bits;
+#endif
+	} __attribute__ ((packed)) bits;
 
-} __packed;
+} __attribute__ ((packed));
 
 /*
   =============================================================================
@@ -91,10 +121,15 @@ struct appnic_device {
 	unsigned long rx_base;
 	unsigned long tx_base;
 	unsigned long dma_base;
-	unsigned long interrupt;
+	unsigned long tx_interrupt;
+	unsigned long rx_interrupt;
+	unsigned long dma_interrupt;
 	unsigned long mdio_clock;
 	unsigned long phy_address;
 	unsigned long ad_value;
+	unsigned long phy_link_auto;
+	unsigned long phy_link_speed;
+	unsigned long phy_link_duplex;
 	unsigned char mac_addr[6];
 
 	/* NAPI */
@@ -436,6 +471,36 @@ struct appnic_device {
 #define APPNIC_DMA_TX_TAIL_POINTER_LOCAL_COPY_GB	0x100000
 #define APPNIC_DMA_TX_TAIL_POINTER_LOCAL_COPY_POINTER	0x0fffff
 
+#ifdef CONFIG_ARM
+
+#define read_mac(address)         readl((address))
+#define write_mac(value, address) writel((value), (address))
+
+static inline void
+readdescriptor(unsigned long address, struct appnic_dma_descriptor *descriptor)
+{
+	memcpy(descriptor, (void *)address,
+	       sizeof(struct appnic_dma_descriptor));
+	return;
+}
+
+static inline void
+writedescriptor(unsigned long address,
+		const struct appnic_dma_descriptor *descriptor)
+{
+	memcpy((void *)address, descriptor,
+	       sizeof(struct appnic_dma_descriptor));
+	return;
+}
+
+static inline union appnic_queue_pointer
+swab_queue_pointer(const union appnic_queue_pointer *old_queue)
+{
+	return *old_queue;
+}
+
+#else
+
 #define read_mac(address)         in_le32((u32 *) (address))
 #define write_mac(value, address) out_le32((u32 *) (address), (value))
 
@@ -454,7 +519,7 @@ readdescriptor(unsigned long address, struct appnic_dma_descriptor *descriptor)
 
 static inline void
 writedescriptor(unsigned long address,
-		 const struct appnic_dma_descriptor *descriptor)
+		const struct appnic_dma_descriptor *descriptor)
 {
 	unsigned long *to = (unsigned long *) address;
 	unsigned long *from = (unsigned long *) descriptor;
@@ -473,6 +538,7 @@ swab_queue_pointer(const union appnic_queue_pointer *old_queue)
 	new_queue.raw = swab32(old_queue->raw);
 	return new_queue;
 }
+#endif /* ifdef CONFIG_ARM */
 
 #define SWAB_QUEUE_POINTER(pointer) \
 swab_queue_pointer((const union appnic_queue_pointer *) (pointer))
-- 
1.8.3.4




More information about the linux-yocto mailing list