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 _______________________________________________ linux-yocto mailing list linux-yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/linux-yocto