Microblaze/Xilinx drivers changes
Subsystems (3)
Michal Simek
maintainerHi,
here is the whole package with Microblaze and Xilinx driver changes.
All patches are available in git://www.denx.de/git/u-boot-microblaze.git master branch if you like to test them.
Thanks for your review,
Michal
Michal Simek (26):
net: emaclite: Change driver name and add address
net: emaclite: Remove deviceid property
net: emaclite: Use calloc instead of malloc
net: emaclite: Remove baseaddress from xemaclite
net: emaclite: Use dynamic allocation
net: emaclite: Setup RX/TX ping pong for every instance
net: emaclite: Use unsigned long for baseaddr
net: emaclite: Move RX/TX ping pong initialization to board
net: emaclite: Use PKTSIZE directly
net: emaclite: Fix coding style
microblaze: Support CTRL+C when tftp is running
microblaze: Support flashes on lower addresses
microblaze: Initialize jumptable and console
microblaze: Fix unaligned.h for endians
microblaze: Copy bootfile from variables
microblaze: Remove debug saving value
microblaze: Setup MB vectors if feature is enable for u-boot
microblaze: Save and restore first unused vector
microblaze: Clean up reset asm code
microblaze: Do not select NFS for platforms without ethernet
microblaze: Remove address offset for uart16550
microblaze: Enable FDT/FIT support
serial: uartlite: Support for SERIAL_MULTI
microblaze: Enable SERIAL_MULTI
net: axi_ethernet: Add driver to u-boot
microblaze: Wire up axi_ethernet driver initialization
arch/microblaze/cpu/start.S | 67 +-- arch/microblaze/include/asm/processor.h | 5 +- arch/microblaze/include/asm/unaligned.h | 17 +- arch/microblaze/lib/board.c | 19 + .../xilinx/microblaze-generic/microblaze-generic.c | 24 +- common/serial.c | 14 + drivers/net/Makefile | 1 + drivers/net/xilinx_axi_emac.c | 664 ++++++++++++++++++++ drivers/net/xilinx_emaclite.c | 250 ++++---- drivers/serial/serial_xuartlite.c | 142 ++++- include/configs/microblaze-generic.h | 15 +- include/netdev.h | 5 +- include/serial.h | 9 +- 13 files changed, 1033 insertions(+), 199 deletions(-) create mode 100644 drivers/net/xilinx_axi_emac.c
Michal Simek
maintainerPATCH 1/26 net: emaclite: Change driver name and add address
Current xilinx emaclite use net multi registration but doesn't support several emaclites interfaces. Changing driver name with adding address to name is the first step how to distiguish several drivers.
--- drivers/net/xilinx_emaclite.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
drivers/net/xilinx_emaclite.c +1 -1
@@ -350,7 +350,7 @@ int xilinx_emaclite_initialize (bd_t *bis, int base_addr)return -1 ;memset (dev,0 ,sizeof (*dev)); -sprintf (dev->name,"Xilinx_Emaclite" ); +sprintf (dev->name,"Xelite.%x" , base_addr); dev->iobase = base_addr; dev->priv =0 ;
Signature · 1 line
1.5.5.6
Michal Simek
maintainerPATCH 2/26 net: emaclite: Remove deviceid property
Cleanup structure.
--- drivers/net/xilinx_emaclite.c | 1 - 1 files changed, 0 insertions(+), 1 deletions(-)
drivers/net/xilinx_emaclite.c +0 -1
@@ -67,7 +67,6 @@ typedef struct {u32 baseaddress;/* Base address for device (IPIF) */ u32 nexttxbuffertouse;/* Next TX buffer to write to */ u32 nextrxbuffertouse;/* Next RX buffer to read from */ -uchar deviceid;/* Unique ID of device - for future */ } xemaclite;static xemaclite emaclite;
Signature · 1 line
1.5.5.6
Michal Simek
maintainerPATCH 3/26 net: emaclite: Use calloc instead of malloc
Simplify driver logic and clear eth_device structure in one command.
--- drivers/net/xilinx_emaclite.c | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-)
drivers/net/xilinx_emaclite.c +1 -2
@@ -344,11 +344,10 @@ int xilinx_emaclite_initialize (bd_t *bis, int base_addr) {struct eth_device *dev; - dev =malloc (sizeof (*dev)); + dev =calloc (1 ,sizeof (*dev));if (dev ==NULL )return -1 ; -memset (dev,0 ,sizeof (*dev));sprintf (dev->name,"Xelite.%x" , base_addr); dev->iobase = base_addr;
Signature · 1 line
1.5.5.6
Michal Simek
maintainerPATCH 4/26 net: emaclite: Remove baseaddress from xemaclite
Use dev->iobase instead of baseaddress.
--- drivers/net/xilinx_emaclite.c | 42 ++++++++++++++++++++-------------------- 1 files changed, 21 insertions(+), 21 deletions(-)
drivers/net/xilinx_emaclite.c +21 -21
@@ -64,7 +64,6 @@#define XEL_RSR_RECV_IE_MASK 0x00000008ULtypedef struct { -u32 baseaddress;/* Base address for device (IPIF) */ u32 nexttxbuffertouse;/* Next TX buffer to write to */ u32 nextrxbuffertouse;/* Next RX buffer to read from */ }xemaclite ;
@@ -136,43 +135,44 @@ static int emaclite_init(struct eth_device *dev, bd_t *bis) {debug ("EmacLite Initialization Started\n" );memset (&emaclite,0 ,sizeof (xemaclite)); - emaclite.baseaddress = dev->iobase;/* * TX - TX_PING & TX_PONG initialization */ /* Restart PING TX */ -out_be32 (emaclite.baseaddress +XEL_TSR_OFFSET ,0 ); +out_be32 (dev->iobase +XEL_TSR_OFFSET ,0 );/* Copy MAC address */ xemaclite_alignedwrite (dev->enetaddr, - emaclite.baseaddress,ENET_ADDR_LENGTH ); + dev->iobase,ENET_ADDR_LENGTH );/* Set the length */ -out_be32 (emaclite.baseaddress +XEL_TPLR_OFFSET ,ENET_ADDR_LENGTH ); +out_be32 (dev->iobase +XEL_TPLR_OFFSET ,ENET_ADDR_LENGTH );/* Update the MAC address in the EMAC Lite */ -out_be32 (emaclite.baseaddress +XEL_TSR_OFFSET ,XEL_TSR_PROG_MAC_ADDR ); +out_be32 (dev->iobase +XEL_TSR_OFFSET ,XEL_TSR_PROG_MAC_ADDR );/* Wait for EMAC Lite to finish with the MAC address update */ -while ((in_be32 (emaclite.baseaddress +XEL_TSR_OFFSET ) & -XEL_TSR_PROG_MAC_ADDR ) !=0 ) ; +while ((in_be32 (dev->iobase +XEL_TSR_OFFSET ) & +XEL_TSR_PROG_MAC_ADDR ) !=0 ) + ;#ifdef CONFIG_XILINX_EMACLITE_TX_PING_PONG /* The same operation with PONG TX */ -out_be32 (emaclite.baseaddress +XEL_TSR_OFFSET +XEL_BUFFER_OFFSET ,0 ); -xemaclite_alignedwrite (dev->enetaddr, emaclite.baseaddress + +out_be32 (dev->iobase +XEL_TSR_OFFSET +XEL_BUFFER_OFFSET ,0 ); +xemaclite_alignedwrite (dev->enetaddr, dev->iobase +XEL_BUFFER_OFFSET ,ENET_ADDR_LENGTH ); -out_be32 (emaclite.baseaddress +XEL_TPLR_OFFSET ,ENET_ADDR_LENGTH ); -out_be32 (emaclite.baseaddress +XEL_TSR_OFFSET +XEL_BUFFER_OFFSET , +out_be32 (dev->iobase +XEL_TPLR_OFFSET ,ENET_ADDR_LENGTH ); +out_be32 (dev->iobase +XEL_TSR_OFFSET +XEL_BUFFER_OFFSET ,XEL_TSR_PROG_MAC_ADDR ); -while ((in_be32 (emaclite.baseaddress +XEL_TSR_OFFSET + -XEL_BUFFER_OFFSET ) &XEL_TSR_PROG_MAC_ADDR ) !=0 ) ; +while ((in_be32 (dev->iobase +XEL_TSR_OFFSET + +XEL_BUFFER_OFFSET ) &XEL_TSR_PROG_MAC_ADDR ) !=0 ) + ;#endif /* * RX - RX_PING & RX_PONG initialization */ /* Write out the value to flush the RX buffer */ -out_be32 (emaclite.baseaddress +XEL_RSR_OFFSET ,XEL_RSR_RECV_IE_MASK ); +out_be32 (dev->iobase +XEL_RSR_OFFSET ,XEL_RSR_RECV_IE_MASK );#ifdef CONFIG_XILINX_EMACLITE_RX_PING_PONG -out_be32 (emaclite.baseaddress +XEL_RSR_OFFSET +XEL_BUFFER_OFFSET , +out_be32 (dev->iobase +XEL_RSR_OFFSET +XEL_BUFFER_OFFSET ,XEL_RSR_RECV_IE_MASK );#endif
@@ -220,16 +220,16 @@ static int emaclite_send (struct eth_device *dev, volatile void *ptr, int len)if (!maxtry) {printf ("Error: Timeout waiting for ethernet TX buffer\n" );/* Restart PING TX */ -out_be32 (emaclite.baseaddress +XEL_TSR_OFFSET ,0 ); +out_be32 (dev->iobase +XEL_TSR_OFFSET ,0 );#ifdef CONFIG_XILINX_EMACLITE_TX_PING_PONG -out_be32 (emaclite.baseaddress +XEL_TSR_OFFSET + +out_be32 (dev->iobase +XEL_TSR_OFFSET +XEL_BUFFER_OFFSET ,0 );#endif return -1 ; }/* Determine the expected TX buffer address */ - baseaddress = (emaclite.baseaddress + emaclite.nexttxbuffertouse); + baseaddress = (dev->iobase + emaclite.nexttxbuffertouse);/* Determine if the expected buffer address is empty */ reg =in_be32 (baseaddress +XEL_TSR_OFFSET );
@@ -261,7 +261,7 @@ static int emaclite_send (struct eth_device *dev, volatile void *ptr, int len)if (((reg &XEL_TSR_XMIT_BUSY_MASK ) ==0 ) && ((in_be32 ((baseaddress) +XEL_TSR_OFFSET ) &XEL_TSR_XMIT_ACTIVE_MASK ) ==0 )) { -debug ("Send packet from 0x%x\n" , baseaddress); +debug ("Send packet from 0x%x\n" , baseaddress);/* Write the frame to the buffer */ xemaclite_alignedwrite ((void *) ptr, baseaddress, len); out_be32 (baseaddress + XEL_TPLR_OFFSET,(len &
@@ -285,7 +285,7 @@ static int emaclite_recv(struct eth_device *dev)u32 reg;u32 baseaddress; - baseaddress = emaclite.baseaddress + emaclite.nextrxbuffertouse; + baseaddress = dev->iobase + emaclite.nextrxbuffertouse; reg =in_be32 (baseaddress +XEL_RSR_OFFSET );debug ("Testing data at address 0x%x\n" , baseaddress);if ((reg &XEL_RSR_RECV_DONE_MASK ) ==XEL_RSR_RECV_DONE_MASK ) {
Signature · 1 line
1.5.5.6
Michal Simek
maintainerPATCH 5/26 net: emaclite: Use dynamic allocation
Every emaclite instance use own setting.
---
v2: Free allocated space when private data allocation failed
--- drivers/net/xilinx_emaclite.c | 41 +++++++++++++++++++++++++---------------- 1 files changed, 25 insertions(+), 16 deletions(-)
drivers/net/xilinx_emaclite.c +25 -16
@@ -63,12 +63,10 @@/* Recv interrupt enable bit */ #define XEL_RSR_RECV_IE_MASK 0x00000008UL -typedef struct { +struct xemaclite {u32 nexttxbuffertouse;/* Next TX buffer to write to */ u32 nextrxbuffertouse;/* Next RX buffer to read from */ -}xemaclite ; - -static xemaclite emaclite; +};static u32 etherrxbuff[PKTSIZE_ALIGN /4 ];/* Receive buffer */
@@ -134,7 +132,6 @@ static void emaclite_halt(struct eth_device *dev)static int emaclite_init (struct eth_device *dev,bd_t *bis) {debug ("EmacLite Initialization Started\n" ); -memset (&emaclite,0 ,sizeof (xemaclite));/* * TX - TX_PING & TX_PONG initialization
@@ -180,22 +177,24 @@ static int emaclite_init(struct eth_device *dev, bd_t *bis)return 0 ; } -static int xemaclite_txbufferavailable (xemaclite *instanceptr) +static int xemaclite_txbufferavailable (struct eth_device *dev) {u32 reg;u32 txpingbusy;u32 txpongbusy; +struct xemaclite *emaclite = dev->priv; +/* * Read the other buffer register * and determine if the other buffer is available */ - reg =in_be32 (instanceptr->baseaddress + - instanceptr->nexttxbuffertouse +0 ); + reg =in_be32 (dev->iobase + + emaclite->nexttxbuffertouse +0 ); txpingbusy = ((reg &XEL_TSR_XMIT_BUSY_MASK ) ==XEL_TSR_XMIT_BUSY_MASK ); - reg =in_be32 (instanceptr->baseaddress + - (instanceptr->nexttxbuffertouse ^XEL_TSR_OFFSET ) +0 ); + reg =in_be32 (dev->iobase + + (emaclite->nexttxbuffertouse ^XEL_TSR_OFFSET ) +0 ); txpongbusy = ((reg &XEL_TSR_XMIT_BUSY_MASK ) ==XEL_TSR_XMIT_BUSY_MASK );
@@ -206,13 +205,14 @@ static int emaclite_send (struct eth_device *dev, volatile void *ptr, int len) {u32 reg;u32 baseaddress; +struct xemaclite *emaclite = dev->priv;u32 maxtry =1000 ;if (len >ENET_MAX_MTU ) len =ENET_MAX_MTU ; -while (!xemaclite_txbufferavailable (&emaclite) && maxtry) { +while (!xemaclite_txbufferavailable (dev) && maxtry) {udelay (10 ); maxtry--; }
@@ -229,7 +229,7 @@ static int emaclite_send (struct eth_device *dev, volatile void *ptr, int len) }/* Determine the expected TX buffer address */ - baseaddress = (dev->iobase + emaclite.nexttxbuffertouse); + baseaddress = (dev->iobase + emaclite->nexttxbuffertouse);/* Determine if the expected buffer address is empty */ reg =in_be32 (baseaddress +XEL_TSR_OFFSET );
@@ -238,7 +238,7 @@ static int emaclite_send (struct eth_device *dev, volatile void *ptr, int len) & XEL_TSR_XMIT_ACTIVE_MASK) == 0)) {#ifdef CONFIG_XILINX_EMACLITE_TX_PING_PONG - emaclite.nexttxbuffertouse ^=XEL_BUFFER_OFFSET ; + emaclite->nexttxbuffertouse ^=XEL_BUFFER_OFFSET ;#endif debug ("Send packet from 0x%x\n" , baseaddress);/* Write the frame to the buffer */
@@ -284,13 +284,14 @@ static int emaclite_recv(struct eth_device *dev)u32 length;u32 reg;u32 baseaddress; +struct xemaclite *emaclite = dev->priv; - baseaddress = dev->iobase + emaclite.nextrxbuffertouse; + baseaddress = dev->iobase + emaclite->nextrxbuffertouse; reg =in_be32 (baseaddress +XEL_RSR_OFFSET );debug ("Testing data at address 0x%x\n" , baseaddress);if ((reg &XEL_RSR_RECV_DONE_MASK ) ==XEL_RSR_RECV_DONE_MASK ) {#ifdef CONFIG_XILINX_EMACLITE_RX_PING_PONG - emaclite.nextrxbuffertouse ^=XEL_BUFFER_OFFSET ; + emaclite->nextrxbuffertouse ^=XEL_BUFFER_OFFSET ;#endif }else {#ifndef CONFIG_XILINX_EMACLITE_RX_PING_PONG
@@ -343,15 +344,23 @@ static int emaclite_recv(struct eth_device *dev)int xilinx_emaclite_initialize (bd_t *bis,int base_addr) {struct eth_device *dev; +struct xemaclite *emaclite; dev =calloc (1 ,sizeof (*dev));if (dev ==NULL )return -1 ; + emaclite =calloc (1 ,sizeof (struct xemaclite )); +if (emaclite ==NULL ) { +free (dev); +return -1 ; + } + + dev->priv = emaclite; +sprintf (dev->name,"Xelite.%x" , base_addr); dev->iobase = base_addr; - dev->priv =0 ; dev->init = emaclite_init; dev->halt = emaclite_halt; dev->send = emaclite_send;
Signature · 1 line
1.5.5.6
Michal Simek
maintainerPATCH 6/26 net: emaclite: Setup RX/TX ping pong for every instance
Setup RX/TX ping-pong buffer for every emaclite IP separately. The next patch move initialization directly to board code.
--- drivers/net/xilinx_emaclite.c | 123 ++++++++++++++++++++++------------------ 1 files changed, 68 insertions(+), 55 deletions(-)
drivers/net/xilinx_emaclite.c +68 -55
@@ -66,6 +66,8 @@struct xemaclite {u32 nexttxbuffertouse;/* Next TX buffer to write to */ u32 nextrxbuffertouse;/* Next RX buffer to read from */ +u32 txpp;/* TX ping pong buffer */ +u32 rxpp;/* RX ping pong buffer */ };static u32 etherrxbuff[PKTSIZE_ALIGN /4 ];/* Receive buffer */
@@ -131,6 +133,7 @@ static void emaclite_halt(struct eth_device *dev)static int emaclite_init (struct eth_device *dev,bd_t *bis) { +struct xemaclite *emaclite = dev->priv;debug ("EmacLite Initialization Started\n" );/*
@@ -150,28 +153,28 @@ static int emaclite_init(struct eth_device *dev, bd_t *bis) XEL_TSR_PROG_MAC_ADDR) != 0) ; -#ifdef CONFIG_XILINX_EMACLITE_TX_PING_PONG -/* The same operation with PONG TX */ -out_be32 (dev->iobase +XEL_TSR_OFFSET +XEL_BUFFER_OFFSET ,0 ); -xemaclite_alignedwrite (dev->enetaddr, dev->iobase + -XEL_BUFFER_OFFSET ,ENET_ADDR_LENGTH ); -out_be32 (dev->iobase +XEL_TPLR_OFFSET ,ENET_ADDR_LENGTH ); -out_be32 (dev->iobase +XEL_TSR_OFFSET +XEL_BUFFER_OFFSET , -XEL_TSR_PROG_MAC_ADDR ); -while ((in_be32 (dev->iobase +XEL_TSR_OFFSET + -XEL_BUFFER_OFFSET ) &XEL_TSR_PROG_MAC_ADDR ) !=0 ) - ; -#endif +if (emaclite->txpp) { +/* The same operation with PONG TX */ +out_be32 (dev->iobase +XEL_TSR_OFFSET +XEL_BUFFER_OFFSET ,0 ); +xemaclite_alignedwrite (dev->enetaddr, dev->iobase + +XEL_BUFFER_OFFSET ,ENET_ADDR_LENGTH ); +out_be32 (dev->iobase +XEL_TPLR_OFFSET ,ENET_ADDR_LENGTH ); +out_be32 (dev->iobase +XEL_TSR_OFFSET +XEL_BUFFER_OFFSET , +XEL_TSR_PROG_MAC_ADDR ); +while ((in_be32 (dev->iobase +XEL_TSR_OFFSET + +XEL_BUFFER_OFFSET ) &XEL_TSR_PROG_MAC_ADDR ) !=0 ) + ; + }/* * RX - RX_PING & RX_PONG initialization */ /* Write out the value to flush the RX buffer */ out_be32 (dev->iobase +XEL_RSR_OFFSET ,XEL_RSR_RECV_IE_MASK ); -#ifdef CONFIG_XILINX_EMACLITE_RX_PING_PONG -out_be32 (dev->iobase +XEL_RSR_OFFSET +XEL_BUFFER_OFFSET , -XEL_RSR_RECV_IE_MASK ); -#endif + +if (emaclite->rxpp) +out_be32 (dev->iobase +XEL_RSR_OFFSET +XEL_BUFFER_OFFSET , +XEL_RSR_RECV_IE_MASK );debug ("EmacLite Initialization complete\n" );return 0 ;
@@ -221,10 +224,10 @@ static int emaclite_send (struct eth_device *dev, volatile void *ptr, int len)printf ("Error: Timeout waiting for ethernet TX buffer\n" );/* Restart PING TX */ out_be32 (dev->iobase +XEL_TSR_OFFSET ,0 ); -#ifdef CONFIG_XILINX_EMACLITE_TX_PING_PONG -out_be32 (dev->iobase +XEL_TSR_OFFSET + -XEL_BUFFER_OFFSET ,0 ); -#endif +if (emaclite->txpp) { +out_be32 (dev->iobase +XEL_TSR_OFFSET + +XEL_BUFFER_OFFSET ,0 ); + }return -1 ; }
@@ -237,9 +240,9 @@ static int emaclite_send (struct eth_device *dev, volatile void *ptr, int len) && ((in_be32 ((baseaddress) + XEL_TSR_OFFSET) & XEL_TSR_XMIT_ACTIVE_MASK) == 0)) { -#ifdef CONFIG_XILINX_EMACLITE_TX_PING_PONG - emaclite->nexttxbuffertouse ^=XEL_BUFFER_OFFSET ; -#endif +if (emaclite->txpp) + emaclite->nexttxbuffertouse ^=XEL_BUFFER_OFFSET ; +debug ("Send packet from 0x%x\n" , baseaddress);/* Write the frame to the buffer */ xemaclite_alignedwrite ((void *) ptr, baseaddress, len);
@@ -253,28 +256,30 @@ static int emaclite_send (struct eth_device *dev, volatile void *ptr, int len)out_be32 (baseaddress +XEL_TSR_OFFSET , reg);return 0 ; } -#ifdef CONFIG_XILINX_EMACLITE_TX_PING_PONG -/* Switch to second buffer */ - baseaddress ^=XEL_BUFFER_OFFSET ; -/* Determine if the expected buffer address is empty */ - reg =in_be32 (baseaddress +XEL_TSR_OFFSET ); -if (((reg &XEL_TSR_XMIT_BUSY_MASK ) ==0 ) - && ((in_be32 ((baseaddress) +XEL_TSR_OFFSET ) - &XEL_TSR_XMIT_ACTIVE_MASK ) ==0 )) { -debug ("Send packet from 0x%x\n" , baseaddress); -/* Write the frame to the buffer */ -xemaclite_alignedwrite ((void *) ptr, baseaddress, len); -out_be32 (baseaddress +XEL_TPLR_OFFSET ,(len & - (XEL_TPLR_LENGTH_MASK_HI |XEL_TPLR_LENGTH_MASK_LO ))); + +if (emaclite->txpp) { +/* Switch to second buffer */ + baseaddress ^=XEL_BUFFER_OFFSET ; +/* Determine if the expected buffer address is empty */ reg =in_be32 (baseaddress +XEL_TSR_OFFSET ); - reg |=XEL_TSR_XMIT_BUSY_MASK ; -if ((reg &XEL_TSR_XMIT_IE_MASK ) !=0 ) { - reg |=XEL_TSR_XMIT_ACTIVE_MASK ; +if (((reg &XEL_TSR_XMIT_BUSY_MASK ) ==0 ) + && ((in_be32 ((baseaddress) +XEL_TSR_OFFSET ) + &XEL_TSR_XMIT_ACTIVE_MASK ) ==0 )) { +debug ("Send packet from 0x%x\n" , baseaddress); +/* Write the frame to the buffer */ +xemaclite_alignedwrite ((void *) ptr, baseaddress, len); +out_be32 (baseaddress +XEL_TPLR_OFFSET , (len & + (XEL_TPLR_LENGTH_MASK_HI | +XEL_TPLR_LENGTH_MASK_LO ))); + reg =in_be32 (baseaddress +XEL_TSR_OFFSET ); + reg |=XEL_TSR_XMIT_BUSY_MASK ; +if ((reg &XEL_TSR_XMIT_IE_MASK ) !=0 ) + reg |=XEL_TSR_XMIT_ACTIVE_MASK ; +out_be32 (baseaddress +XEL_TSR_OFFSET , reg); +return 0 ; } -out_be32 (baseaddress +XEL_TSR_OFFSET , reg); -return 0 ; } -#endif +puts ("Error while sending frame\n" );return -1 ; }
@@ -290,23 +295,24 @@ static int emaclite_recv(struct eth_device *dev) reg =in_be32 (baseaddress +XEL_RSR_OFFSET );debug ("Testing data at address 0x%x\n" , baseaddress);if ((reg &XEL_RSR_RECV_DONE_MASK ) ==XEL_RSR_RECV_DONE_MASK ) { -#ifdef CONFIG_XILINX_EMACLITE_RX_PING_PONG - emaclite->nextrxbuffertouse ^=XEL_BUFFER_OFFSET ; -#endif +if (emaclite->rxpp) + emaclite->nextrxbuffertouse ^=XEL_BUFFER_OFFSET ; }else { -#ifndef CONFIG_XILINX_EMACLITE_RX_PING_PONG -debug ("No data was available - address 0x%x\n" , baseaddress); -return 0 ; -#else - baseaddress ^=XEL_BUFFER_OFFSET ; - reg =in_be32 (baseaddress +XEL_RSR_OFFSET ); -if ((reg &XEL_RSR_RECV_DONE_MASK ) != -XEL_RSR_RECV_DONE_MASK ) { + +if (!emaclite->rxpp) {debug ("No data was available - address 0x%x\n" , - baseaddress); + baseaddress);return 0 ; + }else { + baseaddress ^=XEL_BUFFER_OFFSET ; + reg =in_be32 (baseaddress +XEL_RSR_OFFSET ); +if ((reg &XEL_RSR_RECV_DONE_MASK ) != +XEL_RSR_RECV_DONE_MASK ) { +debug ("No data was available - address 0x%x\n" , + baseaddress); +return 0 ; + } } -#endif }/* Get the length of the frame that arrived */ switch(((ntohl(in_be32 (baseaddress + XEL_RXBUFF_OFFSET + 0xC))) &
@@ -358,6 +364,13 @@ int xilinx_emaclite_initialize (bd_t *bis, int base_addr) dev->priv = emaclite; +#ifdef CONFIG_XILINX_EMACLITE_TX_PING_PONG + emaclite->txpp =1 ; +#endif +#ifdef CONFIG_XILINX_EMACLITE_RX_PING_PONG + emaclite->rxpp =1 ; +#endif +sprintf (dev->name,"Xelite.%x" , base_addr); dev->iobase = base_addr;
Signature · 1 line
1.5.5.6
Michal Simek
maintainerPATCH 7/26 net: emaclite: Use unsigned long for baseaddr
Baseaddr should be unsigned long.
--- drivers/net/xilinx_emaclite.c | 4 ++-- include/netdev.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-)
drivers/net/xilinx_emaclite.c +2 -2
@@ -347,7 +347,7 @@ static int emaclite_recv(struct eth_device *dev) } -int xilinx_emaclite_initialize (bd_t *bis,int base_addr) +int xilinx_emaclite_initialize (bd_t *bis,unsigned long base_addr) {struct eth_device *dev;struct xemaclite *emaclite;
@@ -371,7 +371,7 @@ int xilinx_emaclite_initialize (bd_t *bis, int base_addr) emaclite->rxpp =1 ;#endif -sprintf (dev->name,"Xelite.%x" , base_addr); +sprintf (dev->name,"Xelite.%lx" , base_addr); dev->iobase = base_addr; dev->init = emaclite_init;
include/netdev.h +1 -1
@@ -94,7 +94,7 @@ int smc911x_initialize(u8 dev_num, int base_addr);int tsi108_eth_initialize (bd_t *bis);int uec_standard_init (bd_t *bis);int uli526x_initialize (bd_t *bis); -int xilinx_emaclite_initialize (bd_t *bis,int base_addr); +int xilinx_emaclite_initialize (bd_t *bis,unsigned long base_addr);/* Boards with PCI network controllers can call this from their board_eth_init() * function to initialize whatever's on board.
Signature · 1 line
1.5.5.6
Michal Simek
maintainerPATCH 8/26 net: emaclite: Move RX/TX ping pong initialization to board
Init RX/TX ping pong directly from board not in the driver.
--- .../xilinx/microblaze-generic/microblaze-generic.c | 18 ++++++++++++------ drivers/net/xilinx_emaclite.c | 11 ++++------- include/netdev.h | 3 ++- 3 files changed, 18 insertions(+), 14 deletions(-)
board/xilinx/microblaze-generic/microblaze-generic.c +12 -6
@@ -71,12 +71,18 @@ int fsl_init2 (void) {int board_eth_init (bd_t *bis) { -/* -* This board either has PCI NICs or uses the CPU's TSECs -* pci_eth_init() will return 0 if no NICs found, so in that case -* returning -1 will force cpu_eth_init() to be called. -*/ +int ret =0 ;#ifdef CONFIG_XILINX_EMACLITE -return xilinx_emaclite_initialize (bis,XILINX_EMACLITE_BASEADDR ); +u32 txpp =0 ; +u32 rxpp =0 ; +# ifdef CONFIG_XILINX_EMACLITE_TX_PING_PONG + txpp =1 ; +# endif +# ifdef CONFIG_XILINX_EMACLITE_RX_PING_PONG + rxpp =1 ; +# endif + ret |=xilinx_emaclite_initialize (bis,XILINX_EMACLITE_BASEADDR , + txpp, rxpp);#endif +return ret; }
drivers/net/xilinx_emaclite.c +4 -7
@@ -347,7 +347,8 @@ static int emaclite_recv(struct eth_device *dev) } -int xilinx_emaclite_initialize (bd_t *bis,unsigned long base_addr) +int xilinx_emaclite_initialize (bd_t *bis,unsigned long base_addr, +int txpp,int rxpp) {struct eth_device *dev;struct xemaclite *emaclite;
@@ -364,12 +365,8 @@ int xilinx_emaclite_initialize(bd_t *bis, unsigned long base_addr) dev->priv = emaclite; -#ifdef CONFIG_XILINX_EMACLITE_TX_PING_PONG - emaclite->txpp =1 ; -#endif -#ifdef CONFIG_XILINX_EMACLITE_RX_PING_PONG - emaclite->rxpp =1 ; -#endif + emaclite->txpp = txpp; + emaclite->rxpp = rxpp;sprintf (dev->name,"Xelite.%lx" , base_addr);
include/netdev.h +2 -1
@@ -94,7 +94,8 @@ int smc911x_initialize(u8 dev_num, int base_addr);int tsi108_eth_initialize (bd_t *bis);int uec_standard_init (bd_t *bis);int uli526x_initialize (bd_t *bis); -int xilinx_emaclite_initialize (bd_t *bis,unsigned long base_addr); +int xilinx_emaclite_initialize (bd_t *bis,unsigned long base_addr, +int txpp,int rxpp);/* Boards with PCI network controllers can call this from their board_eth_init() * function to initialize whatever's on board.
Signature · 1 line
1.5.5.6
Michal Simek
maintainerPATCH 9/26 net: emaclite: Use PKTSIZE directly
Do not setup additional ENET_MAX_MTU macro.
--- drivers/net/xilinx_emaclite.c | 10 ++++------ 1 files changed, 4 insertions(+), 6 deletions(-)
drivers/net/xilinx_emaclite.c +4 -6
@@ -31,8 +31,6 @@#undef DEBUG -#define ENET_MAX_MTU PKTSIZE -#define ENET_MAX_MTU_ALIGNED PKTSIZE_ALIGN#define ENET_ADDR_LENGTH 6/* EmacLite constants */
@@ -212,8 +210,8 @@ static int emaclite_send (struct eth_device *dev, volatile void *ptr, int len)u32 maxtry =1000 ; -if (len >ENET_MAX_MTU ) - len =ENET_MAX_MTU ; +if (len >PKTSIZE ) + len =PKTSIZE ;while (!xemaclite_txbufferavailable (dev) && maxtry) {udelay (10 );
@@ -328,8 +326,8 @@ static int emaclite_recv(struct eth_device *dev)debug ("IP Packet\n" );break ;default : -debug ("Other Packet\n" ); - length =ENET_MAX_MTU ; +debug ("Other Packet\n" ); + length =PKTSIZE ;break ; }
Signature · 1 line
1.5.5.6
Michal Simek
maintainerPATCH 10/26 net: emaclite: Fix coding style
Coding style should follow linux coding style.
--- drivers/net/xilinx_emaclite.c | 57 +++++++++++++++++++--------------------- 1 files changed, 27 insertions(+), 30 deletions(-)
drivers/net/xilinx_emaclite.c +27 -30
@@ -70,7 +70,7 @@ struct xemaclite {static u32 etherrxbuff[PKTSIZE_ALIGN /4 ];/* Receive buffer */ -static void xemaclite_alignedread (u32 *srcptr,void *destptr,u32 bytecount) +static void xemaclite_alignedread (u32 *srcptr,void *destptr,u32 bytecount) {u32 i;u32 alignbuffer;
@@ -90,14 +90,13 @@ static void xemaclite_alignedread (u32 *srcptr, void *destptr, u32 bytecount) to8ptr = (u8 *) to32ptr; alignbuffer = *from32ptr++; - from8ptr = (u8 *) & alignbuffer; + from8ptr = (u8 *) &alignbuffer; -for (i =0 ; i < bytecount; i++) { +for (i =0 ; i < bytecount; i++) *to8ptr++ = *from8ptr++; - } } -static void xemaclite_alignedwrite (void *srcptr,u32 destptr,u32 bytecount) +static void xemaclite_alignedwrite (void *srcptr,u32 destptr,u32 bytecount) {u32 i;u32 alignbuffer;
@@ -114,25 +113,24 @@ static void xemaclite_alignedwrite (void *srcptr, u32 destptr, u32 bytecount) } alignbuffer =0 ; - to8ptr = (u8 *) & alignbuffer; + to8ptr = (u8 *) &alignbuffer; from8ptr = (u8 *) from32ptr; -for (i =0 ; i < bytecount; i++) { +for (i =0 ; i < bytecount; i++) *to8ptr++ = *from8ptr++; - } *to32ptr++ = alignbuffer; }static void emaclite_halt (struct eth_device *dev) { -debug ("eth_halt\n" ); +debug ("eth_halt\n" ); }static int emaclite_init (struct eth_device *dev,bd_t *bis) {struct xemaclite *emaclite = dev->priv; -debug ("EmacLite Initialization Started\n" ); +debug ("EmacLite Initialization Started\n" );/* * TX - TX_PING & TX_PONG initialization
@@ -140,8 +138,7 @@ static int emaclite_init(struct eth_device *dev, bd_t *bis)/* Restart PING TX */ out_be32 (dev->iobase +XEL_TSR_OFFSET ,0 );/* Copy MAC address */ -xemaclite_alignedwrite (dev->enetaddr, - dev->iobase,ENET_ADDR_LENGTH ); +xemaclite_alignedwrite (dev->enetaddr, dev->iobase,ENET_ADDR_LENGTH );/* Set the length */ out_be32 (dev->iobase +XEL_TPLR_OFFSET ,ENET_ADDR_LENGTH );/* Update the MAC address in the EMAC Lite */
@@ -174,7 +171,7 @@ static int emaclite_init(struct eth_device *dev, bd_t *bis)out_be32 (dev->iobase +XEL_RSR_OFFSET +XEL_BUFFER_OFFSET ,XEL_RSR_RECV_IE_MASK ); -debug ("EmacLite Initialization complete\n" ); +debug ("EmacLite Initialization complete\n" );return 0 ; }
@@ -199,10 +196,10 @@ static int xemaclite_txbufferavailable(struct eth_device *dev) txpongbusy = ((reg &XEL_TSR_XMIT_BUSY_MASK ) ==XEL_TSR_XMIT_BUSY_MASK ); -return (!(txpingbusy && txpongbusy)); +return !(txpingbusy && txpongbusy); } -static int emaclite_send (struct eth_device *dev,volatile void *ptr,int len) +static int emaclite_send (struct eth_device *dev,volatile void *ptr,int len) {u32 reg;u32 baseaddress;
@@ -214,12 +211,12 @@ static int emaclite_send (struct eth_device *dev, volatile void *ptr, int len) len =PKTSIZE ;while (!xemaclite_txbufferavailable (dev) && maxtry) { -udelay (10 ); +udelay (10 ); maxtry--; }if (!maxtry) { -printf ("Error: Timeout waiting for ethernet TX buffer\n" ); +printf ("Error: Timeout waiting for ethernet TX buffer\n" );/* Restart PING TX */ out_be32 (dev->iobase +XEL_TSR_OFFSET ,0 );if (emaclite->txpp) {
@@ -241,16 +238,15 @@ static int emaclite_send (struct eth_device *dev, volatile void *ptr, int len)if (emaclite->txpp) emaclite->nexttxbuffertouse ^=XEL_BUFFER_OFFSET ; -debug ("Send packet from 0x%x\n" , baseaddress); +debug ("Send packet from 0x%x\n" , baseaddress);/* Write the frame to the buffer */ -xemaclite_alignedwrite ((void *) ptr, baseaddress, len); +xemaclite_alignedwrite ((void *) ptr, baseaddress, len);out_be32 (baseaddress +XEL_TPLR_OFFSET ,(len & (XEL_TPLR_LENGTH_MASK_HI |XEL_TPLR_LENGTH_MASK_LO ))); reg =in_be32 (baseaddress +XEL_TSR_OFFSET ); reg |=XEL_TSR_XMIT_BUSY_MASK ; -if ((reg &XEL_TSR_XMIT_IE_MASK ) !=0 ) { +if ((reg &XEL_TSR_XMIT_IE_MASK ) !=0 ) reg |=XEL_TSR_XMIT_ACTIVE_MASK ; - }out_be32 (baseaddress +XEL_TSR_OFFSET , reg);return 0 ; }
@@ -278,7 +274,7 @@ static int emaclite_send (struct eth_device *dev, volatile void *ptr, int len) } } -puts ("Error while sending frame\n" ); +puts ("Error while sending frame\n" );return -1 ; }
@@ -291,14 +287,14 @@ static int emaclite_recv(struct eth_device *dev) baseaddress = dev->iobase + emaclite->nextrxbuffertouse; reg =in_be32 (baseaddress +XEL_RSR_OFFSET ); -debug ("Testing data at address 0x%x\n" , baseaddress); +debug ("Testing data at address 0x%x\n" , baseaddress);if ((reg &XEL_RSR_RECV_DONE_MASK ) ==XEL_RSR_RECV_DONE_MASK ) {if (emaclite->rxpp) emaclite->nextrxbuffertouse ^=XEL_BUFFER_OFFSET ; }else {if (!emaclite->rxpp) { -debug ("No data was available - address 0x%x\n" , +debug ("No data was available - address 0x%x\n" , baseaddress);return 0 ; }else {
@@ -317,12 +313,13 @@ static int emaclite_recv(struct eth_device *dev) 0xFFFF0000 ) >> 16) {case 0x806 : length =42 +20 ;/* FIXME size of ARP */ -debug ("ARP Packet\n" ); +debug ("ARP Packet\n" );break ;case 0x800 : length =14 +14 + - (((ntohl (in_be32 (baseaddress +XEL_RXBUFF_OFFSET +0x10 ))) & -0xFFFF0000 ) >>16 );/* FIXME size of IP packet */ + (((ntohl (in_be32 (baseaddress +XEL_RXBUFF_OFFSET + +0x10 ))) &0xFFFF0000 ) >>16 ); +/* FIXME size of IP packet */ debug ("IP Packet\n" );break ;default :
@@ -331,7 +328,7 @@ static int emaclite_recv(struct eth_device *dev)break ; } -xemaclite_alignedread ((u32 *) (baseaddress +XEL_RXBUFF_OFFSET ), +xemaclite_alignedread ((u32 *) (baseaddress +XEL_RXBUFF_OFFSET ), etherrxbuff, length);/* Acknowledge the frame */
@@ -339,8 +336,8 @@ static int emaclite_recv(struct eth_device *dev) reg &= ~XEL_RSR_RECV_DONE_MASK ;out_be32 (baseaddress +XEL_RSR_OFFSET , reg); -debug ("Packet receive from 0x%x, length %dB\n" , baseaddress, length); -NetReceive ((uchar *) etherrxbuff, length); +debug ("Packet receive from 0x%x, length %dB\n" , baseaddress, length); +NetReceive ((uchar *) etherrxbuff, length);return length; }
Signature · 1 line
1.5.5.6
Michal Simek
maintainerPATCH 11/26 microblaze: Support CTRL+C when tftp is running
--- arch/microblaze/lib/board.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
arch/microblaze/lib/board.c +1 -0
@@ -68,6 +68,7 @@ typedef int (init_fnc_t) (void);init_fnc_t *init_sequence[] = { env_init, serial_init, + console_init_f, #ifdef CONFIG_SYS_GPIO_0 gpio_init, #endif
Signature · 1 line
1.5.5.6
Michal Simek
maintainerPATCH 12/26 microblaze: Support flashes on lower addresses
---
v2: Change symbol references provided by a linker script
v3: Move externs to header
--- arch/microblaze/include/asm/processor.h | 5 ++++- arch/microblaze/lib/board.c | 4 ++++ 2 files changed, 8 insertions(+), 1 deletions(-)
arch/microblaze/include/asm/processor.h +4 -1
@@ -1 +1,4 @@ -/* FIXME: Implement this! */ + +/* References to section boundaries */ +extern char __end[]; +extern char __text_start[];
arch/microblaze/lib/board.c +4 -0
@@ -84,6 +84,8 @@ init_fnc_t *init_sequence[] = { NULL, }; +unsigned long monitor_flash_len; +void board_init (void ) {bd_t *bd;
@@ -105,6 +107,8 @@ void board_init (void) bd->bi_memsize =CONFIG_SYS_SDRAM_SIZE ; gd->flags |=GD_FLG_RELOC ;/* tell others: relocation done */ + monitor_flash_len = __end - __text_start; +/* * The Malloc area is immediately below the monitor copy in DRAM * aka CONFIG_SYS_MONITOR_BASE - Note there is no need for reloc_off
Signature · 1 line
1.5.5.6
Michal Simek
maintainerPATCH 13/26 microblaze: Initialize jumptable and console
This changes were done to get support for netconsole.
---
v2: Fix commit message
v3: Fix coding style
--- arch/microblaze/lib/board.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-)
arch/microblaze/lib/board.c +6 -0
@@ -165,6 +165,12 @@ void board_init (void)/* Initialize stdio devices */ stdio_init (); +/* Initialize the jump table for applications */ +jumptable_init (); + +/* Initialize the console (after the relocation and devices init) */ +console_init_r (); +if ((s =getenv ("loadaddr" )) !=NULL ) { load_addr =simple_strtoul (s,NULL ,16 ); }
Signature · 1 line
1.5.5.6
Michal Simek
maintainerPATCH 14/26 microblaze: Fix unaligned.h for endians
Also support little endian MB.
--- arch/microblaze/include/asm/unaligned.h | 17 +---------------- 1 files changed, 1 insertions(+), 16 deletions(-)
arch/microblaze/include/asm/unaligned.h +1 -16
@@ -1,16 +1 @@ -#ifndef _ASM_MICROBLAZE_UNALIGNED_H -#define _ASM_MICROBLAZE_UNALIGNED_H - -#ifdef __KERNEL__ - -/* -* The Microblaze can do unaligned accesses itself in big endian mode. -*/ -#include <linux/unaligned/access_ok.h> -#include <linux/unaligned/generic.h> - -#define get_unaligned __get_unaligned_be -#define put_unaligned __put_unaligned_be - -#endif /* __KERNEL__ */ -#endif /* _ASM_MICROBLAZE_UNALIGNED_H */ +#include <asm-generic/unaligned.h>
Signature · 1 line
1.5.5.6
Michal Simek
maintainerPATCH 15/26 microblaze: Copy bootfile from variables
Setup bootfile.
--- arch/microblaze/lib/board.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-)
arch/microblaze/lib/board.c +4 -0
@@ -185,6 +185,10 @@ void board_init (void)uchar enetaddr[6 ];eth_getenv_enetaddr ("ethaddr" , enetaddr);printf ("MAC: %pM\n" , enetaddr); + + s =getenv ("bootfile" ); +if (s !=NULL ) +copy_filename (BootFile, s,sizeof (BootFile));#endif /* main_loop */
Signature · 1 line
1.5.5.6
Michal Simek
maintainerPATCH 16/26 microblaze: Remove debug saving value
Forget to remove debug code.
--- arch/microblaze/cpu/start.S | 2 -- 1 files changed, 0 insertions(+), 2 deletions(-)
arch/microblaze/cpu/start.S +0 -2
@@ -46,8 +46,6 @@ _start: addik r6, r0, 0x2 /* BIG/LITTLE endian offset */ swi r6, r0, 0 lbui r10, r0, 0 - swi r6, r0, 0x40 - swi r10, r0, 0x50 /* add opcode instruction for 32bit jump - 2 instruction imm & brai*/ addi r6, r0, 0xb0000000 /* hex b000 opcode imm */
Signature · 1 line
1.5.5.6
Michal Simek
maintainerPATCH 17/26 microblaze: Setup MB vectors if feature is enable for u-boot
For example: Setup reset vectors if reset address is setup. Setup user exception vector if user exception is enabled
--- arch/microblaze/cpu/start.S | 34 ++++++++++++++++++++++------------ 1 files changed, 22 insertions(+), 12 deletions(-)
arch/microblaze/cpu/start.S +22 -12
@@ -30,6 +30,13 @@ .text .global _start _start: + /* + * reserve registers: + * r10: Stores little/big endian offset for vectors + * r2: Stores imm opcode + * r3: Stores brai opcode + */ + mts rmsr, r0 /* disable cache */ addi r1, r0, CONFIG_SYS_INIT_SP_OFFSET addi r1, r1, -4 /* Decrement SP to top of memory */
@@ -47,21 +54,15 @@ _start: swi r6, r0, 0 lbui r10, r0, 0 - /* add opcode instruction for 32bit jump - 2 instruction imm & brai*/ - addi r6, r0, 0xb0000000 /* hex b000 opcode imm */ - swi r6, r0, 0x0 /* reset address */ - swi r6, r0, 0x8 /* user vector exception */ - swi r6, r0, 0x10 /* interrupt */ - swi r6, r0, 0x20 /* hardware exception */ - - addi r6, r0, 0xb8080000 /* hew b808 opcode brai*/ - swi r6, r0, 0x4 /* reset address */ - swi r6, r0, 0xC /* user vector exception */ - swi r6, r0, 0x14 /* interrupt */ - swi r6, r0, 0x24 /* hardware exception */ + /* add opcode instruction for 32bit jump - 2 instruction imm & brai */ + addi r2, r0, 0xb0000000 /* hex b000 opcode imm */ + addi r3, r0, 0xb8080000 /* hew b808 opcode brai */ #ifdef CONFIG_SYS_RESET_ADDRESS /* reset address */ + swi r2, r0, 0x0 /* reset address - imm opcode */ + swi r3, r0, 0x4 /* reset address - brai opcode */ + addik r6, r0, CONFIG_SYS_RESET_ADDRESS sw r6, r1, r0 lhu r7, r1, r0
@@ -88,6 +89,9 @@ _start: #ifdef CONFIG_SYS_USR_EXCEP /* user_vector_exception */ + swi r2, r0, 0x8 /* user vector exception - imm opcode */ + swi r3, r0, 0xC /* user vector exception - brai opcode */ + addik r6, r0, _exception_handler sw r6, r1, r0 /*
@@ -119,6 +123,9 @@ _start: #ifdef CONFIG_SYS_INTC_0 /* interrupt_handler */ + swi r2, r0, 0x10 /* interrupt - imm opcode */ + swi r3, r0, 0x14 /* interrupt - brai opcode */ + addik r6, r0, _interrupt_handler sw r6, r1, r0 lhu r7, r1, r10
@@ -129,6 +136,9 @@ _start: #endif /* hardware exception */ + swi r2, r0, 0x20 /* hardware exception - imm opcode */ + swi r3, r0, 0x24 /* hardware exception - brai opcode */ + addik r6, r0, _hw_exception_handler sw r6, r1, r0 lhu r7, r1, r10
Signature · 1 line
1.5.5.6
Michal Simek
maintainerPATCH 18/26 microblaze: Save and restore first unused vector
Use one memory space to detect little/big endian platforms.
The first unused address(0x28) is used instead 0x0 address (reset vectors). Detection rewrited reset vector setup from first stage bootloader.
Workflow:
1. Store 0x28 to r7
2. Do little/big endian test
3. Restore r7 to 0x28
--- arch/microblaze/cpu/start.S | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-)
arch/microblaze/cpu/start.S +4 -2
@@ -51,8 +51,10 @@ _start: * 4b) BIG endian - r10 contains 0x0 because 0x2 offset is on addr 0x3 */ addik r6, r0, 0x2 /* BIG/LITTLE endian offset */ - swi r6, r0, 0 - lbui r10, r0, 0 + lwi r7, r0, 0x28 + swi r6, r0, 0x28 /* used first unused MB vector */ + lbui r10, r0, 0x28 /* used first unused MB vector */ + swi r7, r0, 0x28 /* add opcode instruction for 32bit jump - 2 instruction imm & brai */ addi r2, r0, 0xb0000000 /* hex b000 opcode imm */
Signature · 1 line
1.5.5.6
Michal Simek
maintainerPATCH 19/26 microblaze: Clean up reset asm code
- Remove code copying
- Reset address is setup from first stage bootloader
- Support reset vector setup on little endian
--- arch/microblaze/cpu/start.S | 25 +++++-------------------- 1 files changed, 5 insertions(+), 20 deletions(-)
arch/microblaze/cpu/start.S +5 -20
@@ -67,26 +67,11 @@ _start: addik r6, r0, CONFIG_SYS_RESET_ADDRESS sw r6, r1, r0 - lhu r7, r1, r0 - shi r7, r0, 0x2 - shi r6, r0, 0x6 -/* - * Copy U-Boot code to CONFIG_SYS_TEXT_BASE - * solve problem with sbrk_base - */ -#if (CONFIG_SYS_RESET_ADDRESS != CONFIG_SYS_TEXT_BASE) - addi r4, r0, __end - addi r5, r0, __text_start - rsub r4, r5, r4 /* size = __end - __text_start */ - addi r6, r0, CONFIG_SYS_RESET_ADDRESS /* source address */ - addi r7, r0, 0 /* counter */ -4: - lw r8, r6, r7 - sw r8, r5, r7 - addi r7, r7, 0x4 - cmp r8, r4, r7 - blti r8, 4b -#endif + lhu r7, r1, r10 + rsubi r8, r10, 0x2 + sh r7, r0, r8 + rsubi r8, r10, 0x6 + sh r6, r0, r8 #endif #ifdef CONFIG_SYS_USR_EXCEP
Signature · 1 line
1.5.5.6
Michal Simek
maintainerPATCH 20/26 microblaze: Do not select NFS for platforms without ethernet
Undefined network functionality for systems without ethernet and disable NFS support.
--- include/configs/microblaze-generic.h | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-)
include/configs/microblaze-generic.h +2 -0
@@ -60,6 +60,7 @@/*#define CONFIG_SYS_RESET_ADDRESS CONFIG_SYS_TEXT_BASE*/ /* ethernet */ +#undef CONFIG_SYS_ENET#ifdef XILINX_EMACLITE_BASEADDR # define CONFIG_XILINX_EMACLITE 1# define CONFIG_SYS_ENET
@@ -243,6 +244,7 @@#ifndef CONFIG_SYS_ENET # undef CONFIG_CMD_NET# undef CONFIG_NET_MULTI +# undef CONFIG_CMD_NFS#else # define CONFIG_CMD_PING # define CONFIG_CMD_DHCP
Signature · 1 line
1.5.5.6
Michal Simek
maintainerPATCH 21/26 microblaze: Remove address offset for uart16550
U-Boot BSP handle 0x3 offset for big endian systems. Little endian Microblaze systems don't use any offset.
--- include/configs/microblaze-generic.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
include/configs/microblaze-generic.h +1 -1
@@ -44,7 +44,7 @@# define CONFIG_SYS_NS16550_REG_SIZE -4# define CONFIG_CONS_INDEX 1# define CONFIG_SYS_NS16550_COM1 \ - (XILINX_UART16550_BASEADDR + 0x1000 + 0x3) + (XILINX_UART16550_BASEADDR + 0x1000)# define CONFIG_SYS_NS16550_CLK XILINX_UART16550_CLOCK_HZ# define CONFIG_BAUDRATE 115200
Signature · 1 line
1.5.5.6
Michal Simek
maintainerPATCH 22/26 microblaze: Enable FDT/FIT support
Enable FDT and FIT support.
--- include/configs/microblaze-generic.h | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-)
include/configs/microblaze-generic.h +5 -0
@@ -327,4 +327,9 @@# define CONFIG_SYS_PROMPT_HUSH_PS2 "> "#endif +/* Enable flat device tree support */ +#define CONFIG_LMB 1 +#define CONFIG_FIT 1 +#define CONFIG_OF_LIBFDT 1 +#endif /* __CONFIG_H */
Signature · 1 line
1.5.5.6
Michal Simek
maintainerPATCH 23/26 serial: uartlite: Support for SERIAL_MULTI
Add support for SERIAL MULTI for uartlite.
---
v2: Use in/out_be32 functions
Clean coding style
--- common/serial.c | 14 ++++ drivers/serial/serial_xuartlite.c | 142 ++++++++++++++++++++++++++++++++----- include/serial.h | 7 ++ 3 files changed, 145 insertions(+), 18 deletions(-)
common/serial.c +14 -0
@@ -108,6 +108,20 @@ void serial_initialize (void)#if defined(CONFIG_SYS_BFIN_UART )serial_register_bfin_uart ();#endif +#if defined(CONFIG_XILINX_UARTLITE ) +# ifdef XILINX_UARTLITE_BASEADDR +serial_register (&uartlite_serial0_device); +# endif /* XILINX_UARTLITE_BASEADDR */ +# ifdef XILINX_UARTLITE_BASEADDR1 +serial_register (&uartlite_serial1_device); +# endif /* XILINX_UARTLITE_BASEADDR1 */ +# ifdef XILINX_UARTLITE_BASEADDR2 +serial_register (&uartlite_serial2_device); +# endif /* XILINX_UARTLITE_BASEADDR2 */ +# ifdef XILINX_UARTLITE_BASEADDR3 +serial_register (&uartlite_serial3_device); +# endif /* XILINX_UARTLITE_BASEADDR3 */ +#endif /* CONFIG_XILINX_UARTLITE */ serial_assign (default_serial_console ()->name); }
drivers/serial/serial_xuartlite.c +124 -18
170 lines not on this page · raw message
include/serial.h +7 -0
@@ -50,6 +50,13 @@ extern struct serial_device serial4_device;extern struct serial_device serial6_device;#endif +#if defined(CONFIG_XILINX_UARTLITE ) +extern struct serial_device uartlite_serial0_device; +extern struct serial_device uartlite_serial1_device; +extern struct serial_device uartlite_serial2_device; +extern struct serial_device uartlite_serial3_device; +#endif +#if defined(CONFIG_S3C2410 )extern struct serial_device s3c24xx_serial0_device;extern struct serial_device s3c24xx_serial1_device;
Signature · 1 line
1.5.5.6
Michal Simek
maintainerPATCH 24/26 microblaze: Enable SERIAL_MULTI
Enable support for SERIAL_MULTI.
Microblaze can use uart16550 and uartlite drivers.
---
Note:
Follow serial.h conding style.
--- arch/microblaze/lib/board.c | 4 ++++ include/configs/microblaze-generic.h | 2 ++ include/serial.h | 2 +- 3 files changed, 7 insertions(+), 1 deletions(-)
arch/microblaze/lib/board.c +4 -0
@@ -31,6 +31,7 @@#include <watchdog.h> #include <stdio_dev.h> #include <net.h> +#include <serial.h> DECLARE_GLOBAL_DATA_PTR ;
@@ -109,6 +110,9 @@ void board_init (void) monitor_flash_len = __end - __text_start; +#ifdef CONFIG_SERIAL_MULTI +serial_initialize (); +#endif /* * The Malloc area is immediately below the monitor copy in DRAM * aka CONFIG_SYS_MONITOR_BASE - Note there is no need for reloc_off
include/configs/microblaze-generic.h +2 -0
@@ -31,6 +31,8 @@#define CONFIG_MICROBLAZE 1#define MICROBLAZE_V5 1 +#define CONFIG_SERIAL_MULTI 1 +/* uart */ #ifdef XILINX_UARTLITE_BASEADDR # define CONFIG_XILINX_UARTLITE
include/serial.h +1 -1
@@ -31,7 +31,7 @@ extern struct serial_device * default_serial_console (void);defined (CONFIG_MB86R0x) ||defined (CONFIG_MPC5xxx) || \defined (CONFIG_MPC83xx) ||defined (CONFIG_MPC85xx) || \defined (CONFIG_MPC86xx) ||defined (CONFIG_SYS_SC520 ) || \ - defined(CONFIG_TEGRA2) + defined(CONFIG_TEGRA2) || defined(CONFIG_MICROBLAZE)extern struct serial_device serial0_device;extern struct serial_device serial1_device;#if defined(CONFIG_SYS_NS16550_SERIAL )
Signature · 1 line
1.5.5.6
Michal Simek
maintainerPATCH 25/26 net: axi_ethernet: Add driver to u-boot
Add axi_ethernet driver for little-endian Microblaze.
RX/TX BDs and rxframe buffer are shared among all axi_ethernet MACs. Only one MAC can work in one time.
---
v2: Fix cammelcase weirdness
Create mdio_wait function with timeouts Synchronize debug messages
Remove base address + offset notation -> use struct instead
v3: Fix comments
Add timeouts/delays to waiting loops
Use in/out_be32 for dma accesses
Setup return values for phy functions
--- drivers/net/Makefile | 1 + drivers/net/xilinx_axi_emac.c | 664 +++++++++++++++++++++++++++++++++++++++++ include/netdev.h | 2 + 3 files changed, 667 insertions(+), 0 deletions(-) create mode 100644 drivers/net/xilinx_axi_emac.c
drivers/net/Makefile +1 -0
@@ -83,6 +83,7 @@ COBJS-$(CONFIG_TSEC_ENET) += tsec.o fsl_mdio.o COBJS-$(CONFIG_TSI108_ETH) += tsi108_eth.o COBJS-$(CONFIG_ULI526X) += uli526x.o COBJS-$(CONFIG_VSC7385_ENET) += vsc7385.o +COBJS-$(CONFIG_XILINX_AXIEMAC) += xilinx_axi_emac.o COBJS-$(CONFIG_XILINX_EMACLITE) += xilinx_emaclite.o COBJS := $(sort $(COBJS-y))
drivers/net/xilinx_axi_emac.c new file +664 -0
664 lines not on this page · raw message
include/netdev.h +2 -0
@@ -94,6 +94,8 @@ int smc911x_initialize(u8 dev_num, int base_addr);int tsi108_eth_initialize (bd_t *bis);int uec_standard_init (bd_t *bis);int uli526x_initialize (bd_t *bis); +int xilinx_axiemac_initialize (bd_t *bis,unsigned long base_addr, +unsigned long dma_addr);int xilinx_emaclite_initialize (bd_t *bis,unsigned long base_addr,int txpp,int rxpp);
Signature · 1 line
1.5.5.6
Michal Simek
maintainerPATCH 26/26 microblaze: Wire up axi_ethernet driver initialization
Initialize axi_ethernet driver.
--- .../xilinx/microblaze-generic/microblaze-generic.c | 6 ++++++ include/configs/microblaze-generic.h | 4 ++++ 2 files changed, 10 insertions(+), 0 deletions(-)
board/xilinx/microblaze-generic/microblaze-generic.c +6 -0
@@ -72,6 +72,12 @@ int fsl_init2 (void) {int board_eth_init (bd_t *bis) {int ret =0 ; + +#ifdef CONFIG_XILINX_AXIEMAC + ret |=xilinx_axiemac_initialize (bis,XILINX_AXIEMAC_BASEADDR , +XILINX_AXIDMA_BASEADDR ); +#endif +#ifdef CONFIG_XILINX_EMACLITE u32 txpp =0 ;u32 rxpp =0 ;
include/configs/microblaze-generic.h +4 -0
@@ -70,6 +70,10 @@# define CONFIG_XILINX_LL_TEMAC 1# define CONFIG_SYS_ENET #endif +#if defined(XILINX_AXIEMAC_BASEADDR ) +# define CONFIG_XILINX_AXIEMAC 1 +# define CONFIG_SYS_ENET +#endif #undef ET_DEBUG
Signature · 1 line
1.5.5.6
PATCH 23/26 serial: uartlite: Support for SERIAL_MULTI
In reply to Michal SimekQuoted 1 line · On Tuesday, September 13, 2011 03:10:18 Michal Simek wrote:
+static struct uartlite *userial_ports[4] = {
pretty sure this should be:
static struct uartlite * const userial_ports[4] = {drivers/serial/serial_xuartlite.c line 48
Quoted 5 lines
drivers/serial/serial_xuartlite.c +5
-0+#ifdef XILINX_UARTLITE_BASEADDR + (struct uartlite *)XILINX_UARTLITE_BASEADDR, +#else + NULL, +#endif
simpler code:
#ifdef XILINX_UARTLITE_BASEADDR
[0] = (struct uartlite *)XILINX_UARTLITE_BASEADDR,
#endif
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20110913/dc26a584/attachment.pgp
PATCH 12/26 microblaze: Support flashes on lower addresses
In reply to Michal Simekarch/microblaze/include/asm/processor.h line 4
Quoted 8 lines · On Tuesday, September 13, 2011 03:10:07 Michal Simek wrote:
arch/microblaze/include/asm/processor.h +4
-1@@ -1 +1,4 @@ -/* FIXME: Implement this! */ + +/* References to section boundaries */ +extern char __end[]; +extern char __text_start[];
should have proper #ifdef protection against multiple inclusion, and be nice to have a copyright/license comment block.
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20110913/46952e4b/attachment.pgp
Michal Simek
maintainerPATCH 12/26 microblaze: Support flashes on lower addresses
Quoted 12 lines · Mike Frysinger
arch/microblaze/include/asm/processor.h line 4
Quoted 8 lines · On Tuesday, September 13, 2011 03:10:07 Michal Simek wrote:
arch/microblaze/include/asm/processor.h +4
-1@@ -1 +1,4 @@ -/* FIXME: Implement this! */ + +/* References to section boundaries */ +extern char __end[]; +extern char __text_start[];should have proper #ifdef protection against multiple inclusion, and be nice to have a copyright/license comment block.
Fixed.
Thanks,
Michal
Signature · 4 lines
Michal Simek, Ing. (M.Eng) w: www.monstr.eu p: +42-0-721842854 Maintainer of Linux kernel 2.6 Microblaze Linux - http://www.monstr.eu/fdt/ Microblaze U-BOOT custodian
PATCH 11/26 microblaze: Support CTRL+C when tftp is running
In reply to Michal SimekQuoted 10 lines · On Tuesday, September 13, 2011 03:10:06 Michal Simek wrote:
Signed-off-by Michal Simek <[email protected]>--- arch/microblaze/lib/board.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)arch/microblaze/lib/board.c +0
-0
arch/microblaze/lib/board.c typedef int (init_fnc_t) (void); · line 74
Quoted 7 lines
arch/microblaze/lib/board.c +1
-0@@ -68,6 +68,7 @@ typedef int (init_fnc_t) (void);init_fnc_t *init_sequence[] = { env_init, serial_init, + console_init_f, #ifdef CONFIG_SYS_GPIO_0 gpio_init, #endif
the summary/changelog is still confusing here. what i'd use is:
microblaze: call common console_init_f initialization function
All arches are supposed to call the common console_init_f func when setting things up. If we don't, code like tftp and netconsole don't operate correctly.
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20110913/b6a08d98/attachment.pgp
PATCH 11/26 microblaze: Support CTRL+C when tftp is running
Quoted 1 line · On Tuesday, September 13, 2011 13:33:57 Mike Frysinger wrote:
the summary/changelog is still confusing here
sorry, i was thinking of "microblaze: Initialize jumptable and console". but my suggestion mostly still stands.
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20110913/ca07a062/attachment.pgp
Michal Simek
maintainerPATCH 11/26 microblaze: Support CTRL+C when tftp is running
In reply to Mike FrysingerQuoted 6 lines · Mike Frysinger
Quoted 5 lines · On Tuesday, September 13, 2011 03:10:06 Michal Simek wrote:
Signed-off-by Michal Simek <[email protected]>--- arch/microblaze/lib/board.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
Quoted 15 lines
arch/microblaze/lib/board.c typedef int (init_fnc_t) (void); · line 74
Quoted 12 lines
arch/microblaze/lib/board.c +1
-0@@ -68,6 +68,7 @@ typedef int (init_fnc_t) (void);init_fnc_t *init_sequence[] = { env_init, serial_init, + console_init_f, #ifdef CONFIG_SYS_GPIO_0 gpio_init, #endifthe summary/changelog is still confusing here. what i'd use is:
microblaze: call commonconsole_init_finitialization function
Fixed
Thanks,
Michal
Signature · 4 lines
Michal Simek, Ing. (M.Eng) w: www.monstr.eu p: +42-0-721842854 Maintainer of Linux kernel 2.6 Microblaze Linux - http://www.monstr.eu/fdt/ Microblaze U-BOOT custodian
Dear Michal Simek,
Quoted 4 lines · In message <[email protected]> you wrote:
here is the whole package with Microblaze and Xilinx driver changes.
All patches are available ingit://www.denx.de/git/u-boot-microblaze.gitmaster branch if you like to test them.
Arghhh. No. It does not work like that. And you should know it, I've told you before.
This is not a new set of patches, some of them have been posted, and reviewd, before. Yet you fail to mention this in any way: there is no "V2" or so in the Subject: lines, nor is there any comment of hwat you changed compared to the initial submission.
I am not going to compare all this stuff myself.
Full NAK to the whole series, without even looking at it.
Please stick to the rules.
Best regards,
Wolfgang Denk
Signature · 4 lines
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de Where would we be without rhetorical questions?
Michal Simek
maintainerDear Wolfgang Denk,
Quoted 5 lines
Quoted 3 lines · In message <[email protected]> you wrote:
here is the whole package with Microblaze and Xilinx driver changes.
All patches are available ingit://www.denx.de/git/u-boot-microblaze.gitmaster branch if you like to test them.
Quoted 7 lines
Arghhh. No. It does not work like that. And you should know it, I've told you before.
This is not a new set of patches, some of them have been posted, and reviewd, before. Yet you fail to mention this in any way: there is no "V2" or so in the Subject: lines, nor is there any comment of hwat you changed compared to the initial submission.
True that I haven't change subject for patches but version changes are in every patch. Some of them weren't commented that's why they are just resent.
If you like, I can add version string to subject in every patch and write resent for patches which weren't commented.
Regards,
Michal
Signature · 4 lines
Michal Simek, Ing. (M.Eng) w: www.monstr.eu p: +42-0-721842854 Maintainer of Linux kernel 2.6 Microblaze Linux - http://www.monstr.eu/fdt/ Microblaze U-BOOT custodian
Quoted 10 lines · Michal Simek
Dear Wolfgang Denk,
Quoted 8 lines
Quoted 3 lines · In message <[email protected]> you wrote:
here is the whole package with Microblaze and Xilinx driver changes. All patches are available in
git://www.denx.de/git/u-boot-microblaze.git
master branch if you like to test them.Arghhh. No. It does not work like that. And you should know it, I've told you before.
Quoted 8 lines
Quoted 4 lines
This is not a new set of patches, some of them have been posted, and reviewd, before. Yet you fail to mention this in any way: there is no "V2" or so in the Subject: lines, nor is there any comment of hwat you changed compared to the initial submission.
True that I haven't change subject for patches but version changes are in every patch. Some of them weren't commented that's why they are just resent.
Please read:
http://www.denx.de/wiki/view/U-Boot/Patches#Sending_updated_patch_versions
Quoted 6 lines
If you like, I can add version string to subject in every patch and write resent for patches which weren't commented.
Regards,
Michal
Michal Simek
maintainerQuoted 14 lines · Marek Vasut
Quoted 13 lines · Michal Simek
Dear Wolfgang Denk,
Quoted 11 lines
Quoted 3 lines · In message <[email protected]> you wrote:
here is the whole package with Microblaze and Xilinx driver changes. All patches are available in
git://www.denx.de/git/u-boot-microblaze.git
master branch if you like to test them.Arghhh. No. It does not work like that. And you should know it, I've told you before.
This is not a new set of patches, some of them have been posted, and reviewd, before. Yet you fail to mention this in any way: there is no "V2" or so in the Subject: lines, nor is there any comment of hwat you changed compared to the initial submission.
Quoted 6 lines
Quoted 3 lines
True that I haven't change subject for patches but version changes are in every patch. Some of them weren't commented that's why they are just resent.
Please read:
http://www.denx.de/wiki/view/U-Boot/Patches#Sending_updated_patch_versions
What about patch resubmit or resend?
Thanks,
Michal
Signature · 4 lines
Michal Simek, Ing. (M.Eng) w: www.monstr.eu p: +42-0-721842854 Maintainer of Linux kernel 2.6 Microblaze Linux - http://www.monstr.eu/fdt/ Microblaze U-BOOT custodian
Quoted 22 lines · Michal Simek
Quoted 21 lines · Marek Vasut
Quoted 19 lines · Michal Simek
Dear Wolfgang Denk,
Quoted 6 lines
Quoted 4 lines · In message <[email protected]> you wrote:
here is the whole package with Microblaze and Xilinx driver changes. All patches are available in
git://www.denx.de/git/u-boot-microblaze.gitmaster branch if you like to test them.Quoted 7 lines
Arghhh. No. It does not work like that. And you should know it, I've told you before.
This is not a new set of patches, some of them have been posted, and reviewd, before. Yet you fail to mention this in any way: there is no "V2" or so in the Subject: lines, nor is there any comment of hwat you changed compared to the initial submission.
True that I haven't change subject for patches but version changes are in every patch. Some of them weren't commented that's why they are just resent.
Quoted 5 lines
Quoted 3 lines
Please read:
http://www.denx.de/wiki/view/U-Boot/Patches#Sending_updated_patch_version
sWhat about patch resubmit or resend?
Add [PATCH x/y RESEND] to the header.
Cheers
Quoted 3 lines
Thanks,
Michal
Dear Michal Simek,
Quoted 5 lines · In message <[email protected]> you wrote:
Quoted 3 lines
Please read:
http://www.denx.de/wiki/view/U-Boot/Patches#Sending_updated_patch_versionsWhat about patch resubmit or resend?
Resending unchanged patches should be avoided, if possible. First, it just wastes bandwith and storage space. Second (and more important), PatchWork has problems with this: it locates patcehs based on their hashes, and for reposted patches, it will always find the _oldest_ matching patch. So even if we set N-1 of your repostings to "Superseded" or similar, Patchwork will set the oldest of these as "Accepted" and your Nth posting remains in state "New".
[Only the body of the patch is relevant here, so even postings of the same patch by different people or with changed commit messages will be handled like that.]
So only resend when you have large series of patches with very few unchanged patches in them.
Best regards,
Wolfgang Denk
Signature · 5 lines
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de "It may be that our role on this planet is not to worship God but to create him." - Arthur C. Clarke
Michal Simek
maintainerQuoted 15 lines · Wolfgang Denk
Dear Michal Simek,
Quoted 3 lines · In message <[email protected]> you wrote:
Quoted 2 lines
Please read:
http://www.denx.de/wiki/view/U-Boot/Patches#Sending_updated_patch_versionsWhat about patch resubmit or resend?
Resending unchanged patches should be avoided, if possible. First, it just wastes bandwith and storage space. Second (and more important), PatchWork has problems with this: it locates patcehs based on their hashes, and for reposted patches, it will always find the _oldest_ matching patch. So even if we set N-1 of your repostings to "Superseded" or similar, Patchwork will set the oldest of these as "Accepted" and your Nth posting remains in state "New".
Quoted 7 lines
[Only the body of the patch is relevant here, so even postings of the same patch by different people or with changed commit messages will be handled like that.]
So only resend when you have large series of patches with very few unchanged patches in them.
ok. Let's look at it.
I my repo are 4 patch series.
1. emaclite: 10 patches. At least 6 will be resubmit.
http://patchwork.ozlabs.org/patch/111768/
http://patchwork.ozlabs.org/patch/111769/
http://patchwork.ozlabs.org/patch/111770/
http://patchwork.ozlabs.org/patch/111771/
Probably not possible to apply because of v2 in 111772
http://patchwork.ozlabs.org/patch/111773/
http://patchwork.ozlabs.org/patch/111775/
2. microblaze series - 4 resubmits
http://patchwork.ozlabs.org/patch/112528/
http://patchwork.ozlabs.org/patch/112529/
http://patchwork.ozlabs.org/patch/112530/ - depend on patch from emaclite series not functional - just to avoid conflict
http://patchwork.ozlabs.org/patch/112531/
+ 3 patches which I can't see on patchwork but can see it on mailing list.
3. serial multi uartlite v3 required - 1 resubmit
+ http://patchwork.ozlabs.org/patch/113567/ - wire up for MB
4. axi ethernet v3 required - 1 resubmit
+ http://patchwork.ozlabs.org/patch/112533/ - wire up for MB
Series 3 and 4 should go together because the first patch must be driver change and then MB changes.
ok. Can I delegate patches through patchwork which are not review and probably should be reviewed or applied? Or change subjects for every patch if is new version or resend?
Regards,
Michal
Signature · 4 lines
Michal Simek, Ing. (M.Eng) w: www.monstr.eu p: +42-0-721842854 Maintainer of Linux kernel 2.6 Microblaze Linux - http://www.monstr.eu/fdt/ Microblaze U-BOOT custodian