Acked-by: Ben Warren <[EMAIL PROTECTED]> Kim - would you mind pulling this into your tree? Best to keep it with part 2.
thanks, Ben Timur Tabi wrote: > The Vitesse VSC7385 is a 5-port switch found on the Freescale MPC8349E-mITX > and other boards. A small firwmare must be uploaded to its on-board memory > before it can be enabled. This patch adds the code which uploads firmware > (but not the firmware itself). > > Previously, this feature was provided by a U-Boot application that was > made available only on Freescale BSPs. The VSC7385 firmware must still > be obtained separately, but at least there is no longer a need for a separate > application. > > Signed-off-by: Timur Tabi <[EMAIL PROTECTED]> > --- > > This patch is for U-Boot 1.3.3. > > drivers/net/Makefile | 1 + > drivers/net/vsc7385.c | 101 > +++++++++++++++++++++++++++++++++++++++++++++++++ > include/vsc7385.h | 13 ++++++ > 3 files changed, 115 insertions(+), 0 deletions(-) > create mode 100644 drivers/net/vsc7385.c > create mode 100644 include/vsc7385.h > > diff --git a/drivers/net/Makefile b/drivers/net/Makefile > index b9723fa..5ae7cb7 100644 > --- a/drivers/net/Makefile > +++ b/drivers/net/Makefile > @@ -57,6 +57,7 @@ COBJS-y += tigon3.o > COBJS-y += tsec.o > COBJS-y += tsi108_eth.o > COBJS-y += uli526x.o > +COBJS-y += vsc7385.o > > COBJS := $(COBJS-y) > SRCS := $(COBJS:.o=.c) > diff --git a/drivers/net/vsc7385.c b/drivers/net/vsc7385.c > new file mode 100644 > index 0000000..f440ce0 > --- /dev/null > +++ b/drivers/net/vsc7385.c > @@ -0,0 +1,101 @@ > +/* > + * Vitesse 7385 Switch Firmware Upload > + * > + * Author: Timur Tabi <[EMAIL PROTECTED]> > + * > + * Copyright 2008 Freescale Semiconductor, Inc. This file is licensed > + * under the terms of the GNU General Public License version 2. This > + * program is licensed "as is" without any warranty of any kind, whether > + * express or implied. > + * > + * This module uploads proprietary firmware for the Vitesse VSC7385 5-port > + * switch. > + */ > + > +#include <config.h> > + > +#ifdef CONFIG_VSC7385_ENET > + > +#include <common.h> > +#include <asm/io.h> > +#include <asm/errno.h> > + > +/* > + * Upload a Vitesse VSC7385 firmware image to the hardware > + * > + * This function takes a pointer to a VSC7385 firmware image and a size, and > + * uploads that firmware to the VSC7385. > + * > + * This firmware is typically located at a board-specific flash address, > + * and the size is typically 8KB. > + * > + * The firmware is Vitesse proprietary. > + * > + * Further details on the register information can be obtained from Vitesse. > + */ > +int vsc7385_upload_firmware(void *firmware, unsigned int size) > +{ > + u8 *fw = firmware; > + unsigned int i; > + > + u32 *gloreset = (u32 *) (CFG_VSC7385_BASE + 0x1c050); > + u32 *icpu_ctrl = (u32 *) (CFG_VSC7385_BASE + 0x1c040); > + u32 *icpu_addr = (u32 *) (CFG_VSC7385_BASE + 0x1c044); > + u32 *icpu_data = (u32 *) (CFG_VSC7385_BASE + 0x1c048); > + u32 *icpu_rom_map = (u32 *) (CFG_VSC7385_BASE + 0x1c070); > +#ifdef DEBUG > + u32 *chipid = (u32 *) (CFG_VSC7385_BASE + 0x1c060); > +#endif > + > + out_be32(gloreset, 3); > + udelay(200); > + > + out_be32(icpu_ctrl, 0x8E); > + udelay(20); > + > + out_be32(icpu_rom_map, 1); > + udelay(20); > + > + /* Write the firmware to I-RAM */ > + out_be32(icpu_addr, 0); > + udelay(20); > + > + for (i = 0; i < size; i++) { > + out_be32(icpu_data, fw[i]); > + udelay(20); > + if (ctrlc()) > + return -EINTR; > + } > + > + /* Read back and compare */ > + out_be32(icpu_addr, 0); > + udelay(20); > + > + for (i = 0; i < size; i++) { > + u8 value; > + > + value = (u8) in_be32(icpu_data); > + udelay(20); > + if (value != fw[i]) { > + debug("VSC7385: Upload mismatch: address 0x%x, " > + "read value 0x%x, image value 0x%x\n", > + i, value, fw[i]); > + > + return -EIO; > + } > + if (ctrlc()) > + break; > + } > + > + out_be32(icpu_ctrl, 0x0B); > + udelay(20); > + > +#ifdef DEBUG > + printf("VSC7385: Chip ID is %08x\n", in_be32(chipid)); > + udelay(20); > +#endif > + > + return 0; > +} > + > +#endif > diff --git a/include/vsc7385.h b/include/vsc7385.h > new file mode 100644 > index 0000000..0432499 > --- /dev/null > +++ b/include/vsc7385.h > @@ -0,0 +1,13 @@ > +/* > + * Header file for vsc7385.c > + * > + * Author: Timur Tabi <[EMAIL PROTECTED]> > + * > + * Copyright 2008 Freescale Semiconductor, Inc. This file is licensed > + * under the terms of the GNU General Public License version 2. This > + * program is licensed "as is" without any warranty of any kind, whether > + * express or implied. > + */ > + > +int vsc7385_upload_firmware(void *firmware, unsigned int size); > + > ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ U-Boot-Users mailing list U-Boot-Users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/u-boot-users