From: wdenk Date: Mon, 30 Sep 2002 17:14:18 +0000 (+0000) Subject: * Fix flash sector size for SMDK2400, and flash bank size for TRAB X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=d5f039b10218de47ceba6f215bad31c7f28f78a1;p=users%2Frw%2Fppcboot.git * Fix flash sector size for SMDK2400, and flash bank size for TRAB * Fix undefined variables problem in lib_ppc/board.c for some boards * Patch by Denis Peter, 30 Sep 2002: Fixed MPL (PIP405, MIP405) boards (do_bsp(..) calling convention) Cleaned up MPL (PIP405, MIP405) boards. --- diff --git a/CHANGELOG b/CHANGELOG index 24df38e..a060ac9 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,15 @@ +====================================================================== +Modifications since 1.2.0: +====================================================================== + +* Fix flash sector size for SMDK2400, and flash bank size for TRAB + +* Fix undefined variables problem in lib_ppc/board.c for some boards + +* Patch by Denis Peter, 30 Sep 2002: + Fixed MPL (PIP405, MIP405) boards (do_bsp(..) calling convention) + Cleaned up MPL (PIP405, MIP405) boards. + ====================================================================== Modifications for 1.2.0: ====================================================================== diff --git a/board/mpl/common/common_util.c b/board/mpl/common/common_util.c index 09c0034..6321458 100644 --- a/board/mpl/common/common_util.c +++ b/board/mpl/common/common_util.c @@ -28,6 +28,8 @@ #include #include #include +#include +#include "video.h" extern int gunzip (void *, int, unsigned char *, int *); extern int mem_test(unsigned long start, unsigned long ramsize, int quiet); @@ -391,7 +393,7 @@ int switch_cs(unsigned char boot) } -int do_mplcommon(cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]) +int do_mplcommon(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) { ulong size,src,ld_addr; int result; @@ -406,19 +408,19 @@ int do_mplcommon(cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]) #if (CONFIG_COMMANDS & CFG_CMD_FDC) if (strcmp(argv[2], "floppy") == 0) { char *local_args[3]; - extern int do_fdcboot (cmd_tbl_t *, bd_t *, int, int, char *[]); + extern int do_fdcboot (cmd_tbl_t *, int, int, char *[]); printf ("\nupdating bootloader image from floppy\n"); local_args[0] = argv[0]; if(argc==4) { local_args[1] = argv[3]; local_args[2] = NULL; ld_addr=simple_strtoul(argv[3], NULL, 16); - result=do_fdcboot(cmdtp, bd, 0, 2, local_args); + result=do_fdcboot(cmdtp, 0, 2, local_args); } else { local_args[1] = NULL; ld_addr=CFG_LOAD_ADDR; - result=do_fdcboot(cmdtp, bd, 0, 1, local_args); + result=do_fdcboot(cmdtp, 0, 1, local_args); } result=mpl_prg_image(ld_addr); switch_cs(sw); /* Switch flash back */ @@ -470,7 +472,7 @@ int do_mplcommon(cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]) }while(result); return 0; } - if (strcmp(argv[1], "clearenvvalues") == 0) + if (strcmp(argv[1], "clearenvvalues") == 0) { if (strcmp(argv[2], "yes") == 0) { @@ -492,42 +494,6 @@ int do_mplcommon(cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]) set_backup_values(1); return 0; } -#if 0 - if (strcmp(argv[1], "test") == 0) { - char *local_args[6]; - int i; - extern int do_doc(cmd_tbl_t *, bd_t *, int, int, char *[]); - local_args[0] = argv[0]; - for(i=1;i<5;i++) { - if(i+1usage); return 1; } @@ -540,3 +506,122 @@ void doc_init (void) doc_probe(MULTI_PURPOSE_SOCKET_ADDR); } #endif + +#ifdef CONFIG_VIDEO +/****************************************************** + * Routines to display the Board information + * to the screen (since the VGA will be initialized as last, + * we must resend the infos) + */ + +void video_write_board_info (void) +{ + DECLARE_GLOBAL_DATA_PTR; + + extern char version_string[]; + unsigned long pvr = get_pvr (); + char buf[32], tmpbuf[80]; + PPC405_SYS_INFO sys_info; + unsigned char *s = getenv ("serial#"); + unsigned char *e; + unsigned char bc,sw; + + /* first write PPCBOOT Info */ + video_puts ("\n"); + video_puts (version_string); + video_puts ("\n\n"); + /* then CPU and board infos */ + get_sys_info (&sys_info); + video_puts ("CPU: IBM PowerPC 405GP Rev. "); + switch (pvr) { + case PVR_405GP_RB: + video_putc ('B'); + break; + case PVR_405GP_RC: + video_putc ('C'); + break; + case PVR_405GP_RD: + video_putc ('D'); + break; + case PVR_405GP_RE: + video_putc ('E'); + break; + default: + video_puts ("unknown"); + break; + } + sprintf (tmpbuf, " at %s MHz (PLB=%lu, OPB=%lu, EBC=%lu MHz)\n", + strmhz (buf, gd->cpu_clk), sys_info.freqPLB / 1000000, + sys_info.freqPLB / sys_info.pllOpbDiv / 1000000, + sys_info.freqPLB / sys_info.pllExtBusDiv / 1000000); + video_puts (tmpbuf); + if (mfdcr (strap) & PSR_PCI_ASYNC_EN) + video_puts (" PCI async ext clock used, "); + else { + sprintf (buf, " PCI sync clock at %lu MHz, ", + sys_info.freqPLB / sys_info.pllPciDiv / 1000000); + video_puts (buf); + } + if (mfdcr (strap) & PSR_PCI_ARBIT_EN) + video_puts ("internal PCI arbiter enabled\n"); + else + video_puts ("external PCI arbiter enabled\n"); + video_puts (" 16 kB I-Cache 8 kB D-Cache\n"); + /* now some board infos */ + video_puts ("Board: "); +#ifdef CONFIG_PIP405 + if (!s || strncmp (s, "PIP405", 6)) { + bc = video_set_attr (VGA_ATTR_CLR_RED | VGA_ATTR_ITN); + video_puts ("### No HW ID - assuming PIP405"); + } +#endif +#ifdef CONFIG_MIP405 + if (!s || strncmp (s, "MIP405", 6)) { + bc = video_set_attr (VGA_ATTR_CLR_RED | VGA_ATTR_ITN); + video_puts ("### No HW ID - assuming MIP405"); + } +#endif + else { + bc = video_set_attr (VGA_ATTR_CLR_GRN); + for (e = s; *e; ++e) { + if (*e == ' ') + break; + } + for (; s < e; ++s) { + if (*s == '_') { + ++s; + break; + } + video_putc (*s); + } + video_puts (" Serial No.: "); + for (; s < e; ++s) { + video_putc (*s); + } + } + video_set_attr (bc); + bc = in8 (CONFIG_PORT_ADDR); + sprintf (buf, " Boot Config 0x%02X\n", bc); + video_puts (buf); + /* DRAM size */ + video_puts ("DRAM: "); + sprintf (buf, "%lu MBytes\n", gd->bd->bi_memsize / 0x100000); + video_puts (buf); + /* flash size: */ + video_puts ("FLASH: "); + sw = switch_cs (0); + switch_cs (sw); + if (sw == 0) { + bc = video_set_attr (VGA_ATTR_CLR_GRN); + video_puts ("(Flash boot)"); + video_set_attr (bc); + } else { + bc = video_set_attr (VGA_ATTR_CLR_RED | VGA_ATTR_ITN); + video_puts ("(Multi Purpose Socket boot)"); + video_set_attr (bc); + } + sprintf (buf, " %lu MBytes\n", gd->bd->bi_flashsize / 0x100000); + video_puts (buf); +} + +#endif diff --git a/board/mpl/common/pci.c b/board/mpl/common/pci.c index e5ca94e..3ffcc94 100644 --- a/board/mpl/common/pci.c +++ b/board/mpl/common/pci.c @@ -61,16 +61,24 @@ void pci_pip405_write_regs(struct pci_controller *hose, pci_dev_t dev, } } + static void pci_pip405_fixup_irq(struct pci_controller *hose, pci_dev_t dev) { unsigned char int_line = 0xff; /* * Write pci interrupt line register */ - if(PCI_DEV_NUMBER(dev)>PCI_HIGHEST_ON_BOARD_ID) { - /* only external (PC104+) residing devices will be written */ + if(PCI_DEV(dev)==0) /* Device0 = PPC405 -> skip */ + return; + if(PCI_FUNC(dev)==0) + { + /* assuming all function 0 are using their INTA# Pin*/ int_line=PCI_IRQ_VECTOR(dev); pci_hose_write_config_byte(hose, dev, PCI_INTERRUPT_LINE, int_line); +#ifdef DEBUG + printf("Fixup IRQ: dev %d (%x) int line %d 0x%x\n", + PCI_DEV(dev),dev,int_line,int_line); +#endif } } @@ -84,6 +92,9 @@ static struct pci_controller hose = { void pci_init(void) { + /*we want the ptrs to RAM not flash (ie don't use init list)*/ + hose.fixup_irq = pci_pip405_fixup_irq; + hose.config_table = pci_pip405_config_table; pci_405gp_init(&hose); } diff --git a/board/mpl/common/pci_parts.h b/board/mpl/common/pci_parts.h index 0cea528..ee797f2 100644 --- a/board/mpl/common/pci_parts.h +++ b/board/mpl/common/pci_parts.h @@ -55,8 +55,9 @@ * */ #define PCI_HIGHEST_ON_BOARD_ID 19 -#define PCI_DEV_NUMBER(x) (((x>>11) & 0x1f) + 10) -#define PCI_IRQ_VECTOR(x) (PCI_DEV_NUMBER(x) % 4) + 28 +/*#define PCI_DEV_NUMBER(x) (((x>>11) & 0x1f) + 10) */ +#define PCI_IRQ_VECTOR(x) ((PCI_DEV(x) + 10) % 4) + 28 + /* PCI Device List for PIP405 */ @@ -129,25 +130,6 @@ static struct pci_pip405_config_entry piix4_pmm_cntrl_f3[] = { {PCI_CFG_PIIX4_SMBBA, 0x00005000, 4}, /* set SMBBA to "valid" value */ { } /* end of device table */ }; - -/* VGA Controller ct69000 (logical device 0) */ -static struct pci_pip405_config_entry vga_ct69000[] = { - {PCI_BASE_ADDRESS_0, 0x80000000, 4}, /* Frame buffer access */ - {PCI_ROM_ADDRESS, 0x00000000, 4}, /* disable ROM */ - {PCI_INTERRUPT_LINE, 29, 1}, /* Int vector = 29 */ - {PCI_COMMAND, 0x0003, 2}, /* enable IO access */ - { } /* end of device table */ -}; - -/* Symbois 810 function 0 */ -static struct pci_pip405_config_entry symbois_810_f0[] = { - {PCI_BASE_ADDRESS_0, 0x00001001, 4}, /* IO Base address */ - {PCI_BASE_ADDRESS_1, 0x81000000, 4}, /* Memory Base address */ - {PCI_INTERRUPT_LINE, 30, 1}, /* Int vector = 30 */ - {PCI_COMMAND, 0x0006, 2}, /* enable Memory access and busmaster */ - {0xFFFF, 0,0} /* end of device table */ -}; - /* PPC405 Dummy only used to prevent autosetup on this host bridge */ static struct pci_pip405_config_entry ibm405_dummy[] = { { } /* end of device table */ @@ -155,7 +137,8 @@ static struct pci_pip405_config_entry ibm405_dummy[] = { void pci_405gp_setup_vga(struct pci_controller *hose, pci_dev_t dev, struct pci_config_table *entry); - + + static struct pci_config_table pci_pip405_config_table[]={ {PCI_VENDOR_ID_IBM, /* 405 dummy */ PCI_DEVICE_ID_IBM_405GP, @@ -187,19 +170,7 @@ static struct pci_config_table pci_pip405_config_table[]={ PCI_ANY_ID, PCI_ANY_ID, 3, pci_pip405_write_regs, {(unsigned long) piix4_pmm_cntrl_f3}}, - {PCI_VENDOR_ID_CT, /* VGA Controller ct69000 (logical device 0) */ - PCI_DEVICE_ID_CT_69000, - PCI_ANY_ID, - PCI_ANY_ID, PCI_ANY_ID, 0, - pci_pip405_write_regs, {(unsigned long) vga_ct69000}}, - - {PCI_VENDOR_ID_NCR, /* Symbois 810 function 0 */ - PCI_DEVICE_ID_NCR_53C810, - PCI_ANY_ID, - PCI_ANY_ID, PCI_ANY_ID, 0, - pci_pip405_write_regs, {(unsigned long) symbois_810_f0}}, - - {PCI_ANY_ID, + {PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, diff --git a/board/mpl/common/video.c b/board/mpl/common/video.c index 10ca8f6..d92804a 100644 --- a/board/mpl/common/video.c +++ b/board/mpl/common/video.c @@ -29,6 +29,9 @@ */ #include + +#ifdef CONFIG_VIDEO + #include #include #include @@ -37,6 +40,7 @@ #include "vga_table.h" + #ifdef CONFIG_VIDEO_CT69000 #define VIDEO_VEND_ID 0x102C #define VIDEO_DEV_ID 0x00C0 @@ -124,28 +128,29 @@ void vga_set_font(void); int drv_video_init (void) { int error, devices = 1 ; - device_t vgadev ; + device_t vgadev ; int busdevfunc; busdevfunc=pci_find_device(VIDEO_VEND_ID,VIDEO_DEV_ID,0); /* get PCI Device ID */ if(busdevfunc==-1) { +#ifdef CONFIG_VIDEO_ONBOARD printf("Error VGA Controller (%04X,%04X) not found\n",VIDEO_VEND_ID,VIDEO_DEV_ID); +#endif return -1; } video_init(busdevfunc); video_write_board_info(); - memset (&vgadev, 0, sizeof(vgadev)); - - strcpy(vgadev.name, "vga"); - vgadev.flags = DEV_FLAGS_OUTPUT | DEV_FLAGS_SYSTEM; - vgadev.putc = video_putc; - vgadev.puts = video_puts; - vgadev.getc = NULL; - vgadev.tstc = NULL; + memset (&vgadev, 0, sizeof(vgadev)); - error = device_register (&vgadev); + strcpy(vgadev.name, "vga"); + vgadev.flags = DEV_FLAGS_OUTPUT | DEV_FLAGS_SYSTEM; + vgadev.putc = video_putc; + vgadev.puts = video_puts; + vgadev.getc = NULL; + vgadev.tstc = NULL; + error = device_register (&vgadev); - return (error == 0) ? devices : error ; + return (error == 0) ? devices : error ; } @@ -732,6 +737,7 @@ void video_dump_reg(void) } #endif +#endif /* CONFIG_VIDEO */ diff --git a/board/mpl/common/video.h b/board/mpl/common/video.h index 8053526..f1fa8ab 100644 --- a/board/mpl/common/video.h +++ b/board/mpl/common/video.h @@ -22,6 +22,7 @@ * */ +#ifdef CONFIG_VIDEO #ifndef _VIDEO_H #define _VIDEO_H @@ -70,4 +71,5 @@ void video_write(unsigned short *buffer); #define VGA_ATTR_INVERT(A) ((((A)&0x7)<<4)|(((A)&0x70)>>4) |((A)&0x88)) -#endif +#endif /* _VIDEO_H */ +#endif /* CONFIG_VIDEO */ diff --git a/board/mpl/mip405/Makefile b/board/mpl/mip405/Makefile index 839cafe..a024952 100644 --- a/board/mpl/mip405/Makefile +++ b/board/mpl/mip405/Makefile @@ -26,7 +26,8 @@ include $(TOPDIR)/config.mk LIB = lib$(BOARD).a OBJS = $(BOARD).o ../common/flash.o cmd_mip405.o ../common/pci.o \ - ../common/usb_uhci.o ../common/memtst.o ../common/common_util.o + ../common/usb_uhci.o ../common/memtst.o ../common/common_util.o \ + ../common/video.o SOBJS = init.o diff --git a/board/mpl/mip405/cmd_mip405.c b/board/mpl/mip405/cmd_mip405.c index c79ce13..6ec128f 100644 --- a/board/mpl/mip405/cmd_mip405.c +++ b/board/mpl/mip405/cmd_mip405.c @@ -30,12 +30,12 @@ extern void print_mip405_info(void); -extern int do_mplcommon(cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]); +extern int do_mplcommon(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]); /* ------------------------------------------------------------------------- */ -int do_mip405(cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]) +int do_mip405(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) { ulong led_on; @@ -51,7 +51,7 @@ int do_mip405(cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]) user_led0(led_on); return 0; } - return (do_mplcommon(cmdtp, bd, flag, argc, argv)); + return (do_mplcommon(cmdtp, flag, argc, argv)); } /* ------------------------------------------------------------------------- */ diff --git a/board/mpl/mip405/mip405.c b/board/mpl/mip405/mip405.c index a673fc8..8bab47c 100644 --- a/board/mpl/mip405/mip405.c +++ b/board/mpl/mip405/mip405.c @@ -592,32 +592,10 @@ static int test_dram (unsigned long ramsize) int misc_init_r (void) { -#if 0 - unsigned char bc; - char buf[128]; - unsigned char *s; - - bc = in8 (PLD_EXT_CONF_REG); - bc >>= 4; - bc &= 0x0f; - sprintf (buf, "bootcmd%d", bc); - s = getenv (buf); - if (s) { - sprintf (buf, "%s", s); - setenv ("bootcmd", buf); - } - sprintf (buf, "bootargs%d", bc); - s = getenv (buf); - if (s) { - sprintf (buf, "%s", s); - setenv ("bootargs", buf); - } -#endif - /* it is time to swap the flash permanently to the flash area */ -/* switch_cs(FALSE); */ return (0); } + void print_mip405_rev (void) { unsigned char part, vers, cfg, rev; @@ -653,7 +631,7 @@ int last_stage_init (void) int overwrite_console (void) { - return (in8 (PLD_EXT_CONF_REG) & 0x1); /* return TRUE if console should be overwritten */ + return ((in8 (PLD_EXT_CONF_REG) & 0x1)==0); /* return TRUE if console should be overwritten */ } @@ -695,184 +673,3 @@ void print_mip405_info (void) } -/****************************************************** - * Routines to display the Board information - * to the screen (since the VGA will be initialized as last, - * we must resend the infos) - */ -#ifdef CONFIG_VIDEO -void video_put_dev_string (block_dev_desc_t * dev_desc) -{ - char buf[80]; - ldiv_t mb; - unsigned long lba512; /* number of blocks if 512bytes block size */ - - if (dev_desc->type != DEV_TYPE_UNKNOWN) { - if (dev_desc->if_type == IF_TYPE_SCSI) - sprintf (buf, "SCSI %d: (%d:%d) ", dev_desc->dev, - dev_desc->target, dev_desc->lun); - else - sprintf (buf, "IDE %d: ", dev_desc->dev); - video_puts (buf); - switch (dev_desc->type & 0x1F) { - case DEV_TYPE_HARDDISK: - video_puts ("Hard Disk"); - break; - case DEV_TYPE_CDROM: - video_puts ("CD ROM"); - break; - case DEV_TYPE_OPDISK: - video_puts ("Optical Device"); - break; - case DEV_TYPE_TAPE: - video_puts ("Tape"); - break; - default: - video_puts ("unknown"); - break; - } - video_puts (" "); - video_puts (dev_desc->vendor); - video_puts (" "); - if (dev_desc->if_type != IF_TYPE_IDE) - video_puts (dev_desc->product); - - if ((dev_desc->lba * dev_desc->blksz) > 0L) { - lba512 = dev_desc->lba * (dev_desc->blksz / 512); - mb = ldiv (lba512, 2048); /* (1024 *1024 / 512 MB */ - /* round to 1 digit */ - mb.rem *= 10 * 512; - mb.rem += 512 * 1024; - mb.rem /= 1024 * 1024; - sprintf (buf, " %ld x %ld Bytes = %ld.%ld MB\n", dev_desc->lba, - dev_desc->blksz, mb.quot, mb.rem); - } else { - sprintf (buf, " Capacity: not available\n"); - } - video_puts (buf); - } -} - -void video_write_board_info (void) -{ - DECLARE_GLOBAL_DATA_PTR; - - extern char version_string[]; - unsigned long pvr = get_pvr (); - char buf[32], tmpbuf[80]; - PPC405_SYS_INFO sys_info; - unsigned char *s = getenv ("serial#"); - unsigned char *e; - unsigned char bc; - block_dev_desc_t *dev_desc; - int i; - - /* first write PPCBOOT Info */ - video_puts ("\n"); - video_puts (version_string); - video_puts ("\n\n"); - /* then CPU and board infos */ - get_sys_info (&sys_info); - video_puts ("CPU: IBM PowerPC 405GP Rev. "); - switch (pvr) { - case PVR_405GP_RB: - video_putc ('B'); - break; - case PVR_405GP_RC: - video_putc ('C'); - break; - case PVR_405GP_RD: - video_putc ('D'); - break; - case PVR_405GP_RE: - video_putc ('E'); - break; - default: - video_puts ("unknown"); - break; - } - sprintf (tmpbuf, " at %s MHz (PLB=%lu, OPB=%lu, EBC=%lu MHz)\n", - strmhz (buf, gd->cpu_clk), sys_info.freqPLB / 1000000, - sys_info.freqPLB / sys_info.pllOpbDiv / 1000000, - sys_info.freqPLB / sys_info.pllExtBusDiv / 1000000); - video_puts (tmpbuf); - if (mfdcr (strap) & PSR_PCI_ASYNC_EN) - video_puts (" PCI async ext clock used, "); - else { - sprintf (buf, " PCI sync clock at %lu MHz, ", - sys_info.freqPLB / sys_info.pllPciDiv / 1000000); - video_puts (buf); - } - if (mfdcr (strap) & PSR_PCI_ARBIT_EN) - video_puts ("internal PCI arbiter enabled\n"); - else - video_puts ("external PCI arbiter enabled\n"); - video_puts (" 16 kB I-Cache 8 kB D-Cache\n"); - /* now some board infos */ - video_puts ("Board: "); - if (!s || strncmp (s, "PIP405", 6)) { - bc = video_set_attr (VGA_ATTR_CLR_RED | VGA_ATTR_ITN); - video_puts ("### No HW ID - assuming PIP405"); - } else { - bc = video_set_attr (VGA_ATTR_CLR_GRN); - for (e = s; *e; ++e) { - if (*e == ' ') - break; - } - for (; s < e; ++s) { - if (*s == '_') { - ++s; - break; - } - video_putc (*s); - } - video_puts (" Serial No.: "); - for (; s < e; ++s) { - video_putc (*s); - } - } - video_set_attr (bc); - bc = in8 (CONFIG_PORT_ADDR); - sprintf (buf, " Boot Config 0x%02X\n", bc); - video_puts (buf); - /* DRAM size */ -#if 0 - video_puts ("DRAM: "); - sprintf (buf, "%lu MBytes\n", gd->bd->bi_memsize / 0x100000); - video_puts (buf); - /* flash size: */ - video_puts ("FLASH: "); - if (switch_cs (0) == 0) { - bc = video_set_attr (VGA_ATTR_CLR_GRN); - video_puts ("(Flash boot)"); - video_set_attr (bc); - } else { - switch_cs (1); /* back to boot mode */ - bc = video_set_attr (VGA_ATTR_CLR_RED | VGA_ATTR_ITN); - video_puts ("(Multi Purpose Socket boot)"); - video_set_attr (bc); - } - sprintf (buf, " %lu MBytes\n", gd->bd->bi_flashsize / 0x100000); - video_puts (buf); - /* revisions */ - video_puts ("Rev: "); - sprintf (tmpbuf, "PCB Rev: %c PLD%d Rev %d PLD%d Rev %d\n\n", - (in8 (PLD_BOARD_CFG_REG) & 0xf) + 'A', - in8 (PLD_PART_REG) & 0xf, in8 (PLD_VERS_REG) & 0xf, - (in8 (PLD_PART_REG) >> 4) & 0xf, - (in8 (PLD_VERS_REG) >> 4) & 0xf); - video_puts (tmpbuf); - for (i = 0; i < CFG_IDE_MAXDEVICE; i++) { - dev_desc = (block_dev_desc_t *) ide_get_dev (i); - video_put_dev_string (dev_desc); - } - video_puts ("\n"); - for (i = 0; i < CFG_SCSI_MAX_DEVICE; i++) { - dev_desc = (block_dev_desc_t *) scsi_get_dev (i); - video_put_dev_string (dev_desc); - } - video_puts ("\n"); -#endif /* 0 */ -} - -#endif /* CONFIG_VIDEO */ diff --git a/board/mpl/pip405/Makefile b/board/mpl/pip405/Makefile index 62b3385..48ecc48 100644 --- a/board/mpl/pip405/Makefile +++ b/board/mpl/pip405/Makefile @@ -27,9 +27,9 @@ LIB = lib$(BOARD).a OBJS = $(BOARD).o \ ../common/flash.o cmd_pip405.o ../common/pci.o \ - ../common/isa.o ../common/kbd.o ../common/video.o \ + ../common/isa.o ../common/kbd.o \ ../common/usb_uhci.o \ - ../common/memtst.o ../common/common_util.o + ../common/memtst.o ../common/common_util.o ../common/video.o SOBJS = init.o diff --git a/board/mpl/pip405/cmd_pip405.c b/board/mpl/pip405/cmd_pip405.c index 0e9b2ac..0d1ce11 100644 --- a/board/mpl/pip405/cmd_pip405.c +++ b/board/mpl/pip405/cmd_pip405.c @@ -30,13 +30,13 @@ extern void print_pip405_info(void); -extern int do_mplcommon(cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]); +extern int do_mplcommon(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]); /* ------------------------------------------------------------------------- */ -int do_pip405(cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]) +int do_pip405(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) { ulong led_on,led_nr; @@ -57,93 +57,7 @@ int do_pip405(cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]) return 0; } -#if 0 - if (strcmp(argv[1], "flash") == 0) - { - if (strcmp(argv[2], "floppy") == 0) { - char *local_args[3]; - extern int do_fdcboot (cmd_tbl_t *, bd_t *, int, int, char *[]); - printf ("\nupdating bootloader image from floppy\n"); - local_args[0] = argv[0]; - if(argc==4) { - local_args[1] = argv[3]; - local_args[2] = NULL; - load_addr=simple_strtoul(argv[3], NULL, 16); - result=do_fdcboot(cmdtp, bd, 0, 2, local_args); - } - else { - local_args[1] = NULL; - load_addr=CFG_LOAD_ADDR; - result=do_fdcboot(cmdtp, bd, 0, 1, local_args); - } - result=mpl_prg_image(load_addr); - return result; - } - if (strcmp(argv[2], "mem") == 0) { - if(argc==4) { - load_addr=simple_strtoul(argv[3], NULL, 16); - } - else { - load_addr=CFG_LOAD_ADDR; - } - printf ("\nupdating bootloader image from memory at %lX\n",load_addr); - result=mpl_prg_image(load_addr); - return result; - } - if (strcmp(argv[2], "mps") == 0) { - printf ("\nupdating bootloader image from MSP\n"); - result=mpl_prg(src,size); - return result; - } - } - if (strcmp(argv[1], "getback") == 0) { - get_backup_values(&back); - back.signature[3]=0; - back.serial_name[16]=0; - back.eth_addr[20]=0; - printf("GetBackUp: signature: %s\n",back.signature); - printf(" serial#: %s\n",back.serial_name); - printf(" ethaddr: %s\n",back.eth_addr); - return 0; - } - if (strcmp(argv[1], "setback") == 0) { - set_backup_values(1); - return 0; - } - if (strcmp(argv[1], "clearenvvalues") == 0) - { - if (strcmp(argv[2], "yes") == 0) - { - clear_env_values(); - return 0; - } - } - if (strcmp(argv[1], "mem") == 0) - { - result=0; - if(argc==3) - { - result = (int)simple_strtol(argv[2], NULL, 16); - } - src=(unsigned long)&result; - src-=CFG_MEMTEST_START; - src-=(100*1024); /* - 100k */ - src&=0xfff00000; - size=0; - do { - size++; - printf("Pass %ld\n",size); - mem_test(CFG_MEMTEST_START,src,1); - if(ctrlc()) - break; - if(result>0) - result--; - - }while(result); - return 0; - } - #endif - return (do_mplcommon(cmdtp, bd, flag, argc, argv)); + return (do_mplcommon(cmdtp, flag, argc, argv)); } /* ------------------------------------------------------------------------- */ diff --git a/board/mpl/pip405/pip405.c b/board/mpl/pip405/pip405.c index e75b28e..c01ba4e 100644 --- a/board/mpl/pip405/pip405.c +++ b/board/mpl/pip405/pip405.c @@ -29,7 +29,7 @@ #include #include #include "../common/isa.h" -#include "../common/video.h" +//#include "../common/video.h" #include "../common/common_util.h" @@ -665,25 +665,6 @@ static int test_dram (unsigned long ramsize) int misc_init_r (void) { - unsigned char bc; - char buf[128]; - unsigned char *s; - - bc = in8 (CONFIG_PORT_ADDR); - bc >>= 4; - bc &= 0x0f; - sprintf (buf, "bootcmd%d", bc); - s = getenv (buf); - if (s) { - sprintf (buf, "%s", s); - setenv ("bootcmd", buf); - } - sprintf (buf, "bootargs%d", bc); - s = getenv (buf); - if (s) { - sprintf (buf, "%s", s); - setenv ("bootargs", buf); - } return (0); } @@ -969,165 +950,3 @@ void ide_set_reset (int idereset) } -/****************************************************** - * Routines to display the Board information - * to the screen (since the VGA will be initialized as last, - * we must resend the infos) - */ - -void video_put_dev_string (block_dev_desc_t * dev_desc) -{ - char buf[80]; - ldiv_t mb, gb; - unsigned long lba512; /* number of blocks if 512bytes block size */ - - if (dev_desc->type != DEV_TYPE_UNKNOWN) { - if (dev_desc->if_type == IF_TYPE_SCSI) - sprintf (buf, "SCSI %d: (%d:%d) ", dev_desc->dev, - dev_desc->target, dev_desc->lun); - else - sprintf (buf, "IDE %d: ", dev_desc->dev); - video_puts (buf); - switch (dev_desc->type & 0x1F) { - case DEV_TYPE_HARDDISK: - video_puts ("Hard Disk"); - break; - case DEV_TYPE_CDROM: - video_puts ("CD ROM"); - break; - case DEV_TYPE_OPDISK: - video_puts ("Optical Device"); - break; - case DEV_TYPE_TAPE: - video_puts ("Tape"); - break; - default: - video_puts ("unknown"); - break; - } - video_puts (" "); - video_puts (dev_desc->vendor); - video_puts (" "); - if (dev_desc->if_type != IF_TYPE_IDE) - video_puts (dev_desc->product); - - if ((dev_desc->lba * dev_desc->blksz) > 0L) { - lba512 = (dev_desc->lba * (dev_desc->blksz / 512)); - mb = ldiv (lba512, 2048); /* (1024 *1024 / 512 MB */ - /* we do NOT round, because if we round 0.95MByte up, we get 0.10MByte !! */ - mb.rem *= 10; - mb.rem /= 2048; - gb = ldiv (10 * mb.quot + mb.rem, 10240); - gb.rem += 512; - gb.rem /= 1024; - printf (" Capacity: %ld.%ld MB = %ld.%ld GB (%ld x %ld)\n", - mb.quot, mb.rem, - gb.quot, gb.rem, - dev_desc->lba, dev_desc->blksz); - } else { - sprintf (buf, " Capacity: not available\n"); - } - video_puts (buf); - } -} - -void video_write_board_info (void) -{ - DECLARE_GLOBAL_DATA_PTR; - - extern char version_string[]; - unsigned long pvr = get_pvr (); - char buf[32], tmpbuf[80]; - PPC405_SYS_INFO sys_info; - unsigned char *s = getenv ("serial#"); - unsigned char *e; - unsigned char bc,sw; - - /* first write PPCBOOT Info */ - video_puts ("\n"); - video_puts (version_string); - video_puts ("\n\n"); - /* then CPU and board infos */ - get_sys_info (&sys_info); - video_puts ("CPU: IBM PowerPC 405GP Rev. "); - switch (pvr) { - case PVR_405GP_RB: - video_putc ('B'); - break; - case PVR_405GP_RC: - video_putc ('C'); - break; - case PVR_405GP_RD: - video_putc ('D'); - break; - case PVR_405GP_RE: - video_putc ('E'); - break; - default: - video_puts ("unknown"); - break; - } - sprintf (tmpbuf, " at %s MHz (PLB=%lu, OPB=%lu, EBC=%lu MHz)\n", - strmhz (buf, gd->cpu_clk), sys_info.freqPLB / 1000000, - sys_info.freqPLB / sys_info.pllOpbDiv / 1000000, - sys_info.freqPLB / sys_info.pllExtBusDiv / 1000000); - video_puts (tmpbuf); - if (mfdcr (strap) & PSR_PCI_ASYNC_EN) - video_puts (" PCI async ext clock used, "); - else { - sprintf (buf, " PCI sync clock at %lu MHz, ", - sys_info.freqPLB / sys_info.pllPciDiv / 1000000); - video_puts (buf); - } - if (mfdcr (strap) & PSR_PCI_ARBIT_EN) - video_puts ("internal PCI arbiter enabled\n"); - else - video_puts ("external PCI arbiter enabled\n"); - video_puts (" 16 kB I-Cache 8 kB D-Cache\n"); - /* now some board infos */ - video_puts ("Board: "); - if (!s || strncmp (s, "PIP405", 6)) { - bc = video_set_attr (VGA_ATTR_CLR_RED | VGA_ATTR_ITN); - video_puts ("### No HW ID - assuming PIP405"); - } else { - bc = video_set_attr (VGA_ATTR_CLR_GRN); - for (e = s; *e; ++e) { - if (*e == ' ') - break; - } - for (; s < e; ++s) { - if (*s == '_') { - ++s; - break; - } - video_putc (*s); - } - video_puts (" Serial No.: "); - for (; s < e; ++s) { - video_putc (*s); - } - } - video_set_attr (bc); - bc = in8 (CONFIG_PORT_ADDR); - sprintf (buf, " Boot Config 0x%02X\n", bc); - video_puts (buf); - /* DRAM size */ - video_puts ("DRAM: "); - sprintf (buf, "%lu MBytes\n", gd->bd->bi_memsize / 0x100000); - video_puts (buf); - /* flash size: */ - video_puts ("FLASH: "); - sw = switch_cs (0); - switch_cs (sw); - if (sw == 0) { - bc = video_set_attr (VGA_ATTR_CLR_GRN); - video_puts ("(Flash boot)"); - video_set_attr (bc); - } else { - bc = video_set_attr (VGA_ATTR_CLR_RED | VGA_ATTR_ITN); - video_puts ("(Multi Purpose Socket boot)"); - video_set_attr (bc); - } - sprintf (buf, " %lu MBytes\n", gd->bd->bi_flashsize / 0x100000); - video_puts (buf); -} diff --git a/board/smdk2400/flash.c b/board/smdk2400/flash.c index af3b0b4..31cef07 100644 --- a/board/smdk2400/flash.c +++ b/board/smdk2400/flash.c @@ -25,10 +25,12 @@ * MA 02111-1307 USA */ +/* #define DEBUG */ + #include -#define FLASH_BANK_SIZE 0x800000 -#define MAIN_SECT_SIZE 0x20000 +#define FLASH_BANK_SIZE 0x1000000 /* 2 x 8 MB */ +#define MAIN_SECT_SIZE 0x40000 /* 2 x 128 kB */ flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; @@ -233,6 +235,8 @@ int flash_erase (flash_info_t * info, int s_first, int s_last) int cflag; #endif + debug ("flash_erase: s_first %d s_last %d\n", s_first, s_last); + /* first look for protection bits */ if (info->flash_id == FLASH_UNKNOWN) @@ -276,9 +280,9 @@ int flash_erase (flash_info_t * info, int s_first, int s_last) /* Start erase on unprotected sectors */ for (sect = s_first; sect <= s_last && !ctrlc (); sect++) { -#if 0 - printf ("Erasing sector %2d ... ", sect); -#endif + + debug ("Erasing sector %2d @ %08lX... ", + sect, info->start[sect]); /* arm simple, non interrupt dependent timer */ reset_timer_masked (); diff --git a/board/trab/flash.c b/board/trab/flash.c index 5a8bb81..5331a19 100644 --- a/board/trab/flash.c +++ b/board/trab/flash.c @@ -26,9 +26,9 @@ ulong myflush (void); -#define FLASH_BANK_SIZE 0x800000 /* 8 MB */ +#define FLASH_BANK_SIZE 0x800000 /* 8 MB */ /* this varies depending on the sector */ -#define MAIN_SECT_SIZE 0x10000 /* 64 KB */ +#define MAIN_SECT_SIZE 0x20000 /* 2 x 64 kB */ flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; diff --git a/common/env_flash.c b/common/env_flash.c index 492dbf0..4f1081a 100644 --- a/common/env_flash.c +++ b/common/env_flash.c @@ -24,6 +24,8 @@ * MA 02111-1307 USA */ +/* #define DEBUG */ + #include #if defined(CFG_ENV_IS_IN_FLASH) /* Environment is in Flash */ @@ -163,23 +165,32 @@ int saveenv(void) { int rc = 1; - if (flash_sect_protect (0, (ulong)flash_addr, end_addr)) - { + debug ("Protect off %08lX ... %08lX\n", + (ulong)flash_addr, end_addr); + + if (flash_sect_protect (0, (ulong)flash_addr, end_addr)) { goto Done; } - if (flash_sect_protect (0, (ulong)flash_addr_new, end_addr_new)) - { + debug ("Protect off %08lX ... %08lX\n", + (ulong)flash_addr_new, end_addr_new); + + if (flash_sect_protect (0, (ulong)flash_addr_new, end_addr_new)) { goto Done; } puts ("Erasing Flash..."); - if (flash_sect_erase ((ulong)flash_addr_new, end_addr_new)) - { + debug (" %08lX ... %08lX ...", + (ulong)flash_addr_new, end_addr_new); + + if (flash_sect_erase ((ulong)flash_addr_new, end_addr_new)) { goto Done; } puts ("Writing to Flash... "); + debug (" %08lX ... %08lX ...", + (ulong)&(flash_addr_new->data), + sizeof(env_ptr->data)+(ulong)&(flash_addr_new->data)); if (flash_write(env_ptr->data, (ulong)&(flash_addr_new->data), sizeof(env_ptr->data)) || diff --git a/include/configs/MIP405.h b/include/configs/MIP405.h index 8deeded..4e88c2a 100644 --- a/include/configs/MIP405.h +++ b/include/configs/MIP405.h @@ -107,6 +107,8 @@ #define CONFIG_BAUDRATE 9600 /* STD Baudrate */ #define CONFIG_BOOTDELAY 5 /* autoboot (do NOT change this set environment variable "bootdelay" to -1 instead) */ +#define CONFIG_BOOT_RETRY_TIME -10 /* feature is avaiable but not enabled */ +#define CONFIG_ZERO_BOOTDELAY_CHECK /* check console even if bootdelay = 0 */ #define CONFIG_BOOTCOMMAND "diskboot 200000 0:1; bootm" /* autoboot command */ #define CONFIG_BOOTARGS "console=ttyS0,9600 root=/dev/hda5" /* boot arguments */ @@ -238,6 +240,7 @@ #define PER_UART1_ADDR 0xF4200000 /* smallest window is 1MByte 0x10 0000*/ #define MULTI_PURPOSE_SOCKET_ADDR 0xF8000000 +#define CONFIG_PORT_ADDR PER_PLD_ADDR + 5 @@ -339,8 +342,8 @@ /************************************************************ * Video support ************************************************************/ -#undef CONFIG_VIDEO /*To enable video controller support */ -#undef CONFIG_VIDEO_CT69000 +#define CONFIG_VIDEO /*To enable video controller support */ +#define CONFIG_VIDEO_CT69000 /************************************************************ * USB support EXPERIMENTAL diff --git a/include/configs/PIP405.h b/include/configs/PIP405.h index e4fc4f2..0477e49 100644 --- a/include/configs/PIP405.h +++ b/include/configs/PIP405.h @@ -59,6 +59,7 @@ CFG_CMD_ELF | \ CFG_CMD_USB | \ CFG_CMD_MII | \ + CFG_CMD_SDRAM | \ CFG_CMD_DOC | \ CFG_CMD_BSP ) /* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */ @@ -107,6 +108,9 @@ #define CONFIG_BOOTDELAY 5 /* autoboot (do NOT change this set environment variable "bootdelay" to -1 instead) */ +#define CONFIG_BOOT_RETRY_TIME -10 /* feature is avaiable but not enabled */ +#define CONFIG_ZERO_BOOTDELAY_CHECK /* check console even if bootdelay = 0 */ + #define CONFIG_BOOTCOMMAND "diskboot 200000 0:1; bootm" /* autoboot command */ #define CONFIG_BOOTARGS "console=ttyS0,9600 root=/dev/hda5" /* boot arguments */ @@ -335,6 +339,7 @@ ************************************************************/ #define CONFIG_VIDEO /*To enable video controller support */ #define CONFIG_VIDEO_CT69000 +#define CONFIG_VIDEO_ONBOARD /* Video controller is on-board */ /************************************************************ * USB support diff --git a/include/configs/smdk2400.h b/include/configs/smdk2400.h index 9ddf448..1f0e39c 100644 --- a/include/configs/smdk2400.h +++ b/include/configs/smdk2400.h @@ -176,8 +176,8 @@ #define CFG_ENV_IS_IN_FLASH 1 /* Address and size of Primary Environment Sector */ -#define CFG_ENV_ADDR (PHYS_FLASH_1 + 0x20000) -#define CFG_ENV_SIZE 0x20000 +#define CFG_ENV_ADDR (PHYS_FLASH_1 + 0x40000) +#define CFG_ENV_SIZE 0x40000 /* Address and size of Redundant Environment Sector */ #define CFG_ENV_ADDR_REDUND (CFG_ENV_ADDR + CFG_ENV_SIZE) diff --git a/lib_ppc/board.c b/lib_ppc/board.c index a4a91ac..defbb34 100644 --- a/lib_ppc/board.c +++ b/lib_ppc/board.c @@ -327,6 +327,11 @@ void board_init_f (ulong bootflag) ulong len, addr, addr_sp; gd_t *id; init_fnc_t **init_fnc_ptr; +#ifdef CONFIG_PRAM + int i; + ulong reg; + uchar tmp[64]; /* long enough for environment variables */ +#endif /* Pointer is writable since we allocated a register for it */ gd = (gd_t *) (CFG_INIT_RAM_ADDR + CFG_GBL_DATA_OFFSET); @@ -585,8 +590,8 @@ void board_init_r (gd_t *id, ulong dest_addr) s = getenv ("eth1addr"); - for (reg = 0; reg < 6; ++reg) { - bd->bi_enet1addr[reg] = s ? simple_strtoul (s, &e, 16) : 0; + for (i = 0; i < 6; ++i) { + bd->bi_enet1addr[i] = s ? simple_strtoul (s, &e, 16) : 0; if (s) s = (*e) ? e + 1 : e; } @@ -596,8 +601,8 @@ void board_init_r (gd_t *id, ulong dest_addr) s = getenv ("eth2addr"); - for (reg = 0; reg < 6; ++reg) { - bd->bi_enet2addr[reg] = s ? simple_strtoul (s, &e, 16) : 0; + for (i = 0; i < 6; ++i) { + bd->bi_enet2addr[i] = s ? simple_strtoul (s, &e, 16) : 0; if (s) s = (*e) ? e + 1 : e; }