[linux-yocto] [PATCH 39/78] arm/include: A clean up of the femac code.

Paul Butler butler.paul at gmail.com
Tue Nov 19 20:23:15 PST 2013


From: John Jacques <john.jacques at lsi.com>

Adds config option conditions, extern definitions,
and some whitespace cleanup.

Signed-off-by: John Jacques <john.jacques at lsi.com>
---
 arch/arm/include/asm/lsi/acp_ncr.h      |  3 ++
 drivers/net/ethernet/lsi/lsi_acp_mdio.c | 12 ++----
 drivers/net/ethernet/lsi/lsi_acp_net.h  | 76 ++++++++++++++++++++++++++++++---
 3 files changed, 78 insertions(+), 13 deletions(-)

diff --git a/arch/arm/include/asm/lsi/acp_ncr.h b/arch/arm/include/asm/lsi/acp_ncr.h
index a7399e7..1a08f07 100644
--- a/arch/arm/include/asm/lsi/acp_ncr.h
+++ b/arch/arm/include/asm/lsi/acp_ncr.h
@@ -39,4 +39,7 @@ int ncr_write(unsigned long, unsigned long, int, void *);
 
 int is_asic(void);
 
+extern int acp_mdio_read(unsigned long, unsigned long, unsigned short *);
+extern int acp_mdio_write(unsigned long, unsigned long, unsigned short);
+
 #endif /*  __DRIVERS_LSI_ACP_NCR_H */
diff --git a/drivers/net/ethernet/lsi/lsi_acp_mdio.c b/drivers/net/ethernet/lsi/lsi_acp_mdio.c
index 18aaba1..489ae9c 100644
--- a/drivers/net/ethernet/lsi/lsi_acp_mdio.c
+++ b/drivers/net/ethernet/lsi/lsi_acp_mdio.c
@@ -18,8 +18,6 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307	 USA
  */
 
-#if defined(CONFIG_ARCH_AXXIA) && defined(CONFIG_ARM)
-
 #include <linux/module.h>
 #include <linux/of.h>
 #include <asm/irq.h>
@@ -172,12 +170,12 @@ EXPORT_SYMBOL(acp_mdio_write);
 static int
 acp_mdio_initialize(void)
 {
-#if 0
-	WRITE(MDIO_CLK_OFFSET, 0x10);
-	WRITE(MDIO_CLK_PERIOD, 0x2c);
-#else
+#ifdef CONFIG_ARM
 	WRITE(MDIO_CLK_OFFSET, 0x1c);
 	WRITE(MDIO_CLK_PERIOD, 0xf0);
+#else
+	WRITE(MDIO_CLK_OFFSET, 0x10);
+	WRITE(MDIO_CLK_PERIOD, 0x2c);
 #endif
 
 	return 0;
@@ -233,5 +231,3 @@ module_init(acp_wrappers_init);
 MODULE_AUTHOR("LSI Corporation");
 MODULE_DESCRIPTION("Timing Test");
 MODULE_LICENSE("GPL");
-
-#endif
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.4.3



More information about the linux-yocto mailing list