From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefan Roese Date: Mon, 14 Jan 2008 16:05:02 +0100 Subject: [U-Boot-Users] [PATCH]ppc_4xx:netstal/common define routines used by all boards In-Reply-To: <200801141526.09784.niklausgiger@gmx.ch> References: <200801141526.09784.niklausgiger@gmx.ch> Message-ID: <200801141605.03065.sr@denx.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On Monday 14 January 2008, Niklaus Giger wrote: > Added some routines used by all Netstal boards nm_show_print and > common_misc_init_r and the very specific code to handle our SW installation > procedure (set_params_for_sw_install). > > Signed-off-by: Niklaus Giger > --- > board/netstal/common/nm_bsp.c | 131 > ++++++++++++++++++++++++++++++++++++----- 1 files changed, 116 > insertions(+), 15 deletions(-) > > diff --git a/board/netstal/common/nm_bsp.c b/board/netstal/common/nm_bsp.c > index a9de45e..2c1d483 100644 > --- a/board/netstal/common/nm_bsp.c > +++ b/board/netstal/common/nm_bsp.c > @@ -20,22 +20,123 @@ > > #include > #include > +#include > > -#ifdef CONFIG_CMD_BSP > -/* > - * Command nm_bsp: Netstal Maschinen BSP specific command > - */ > -int nm_bsp(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) > +DECLARE_GLOBAL_DATA_PTR; > + > +#define DEFAULT_ETH_ADDR "ethaddr" > + > +extern void hcu_led_set(u32 value); > +extern u32 get_serial_number(void); > +extern u32 hcu_get_slot(void); > + > +enum { > + /* HW_GENERATION_HCU1 is no longer supported */ > + HW_GENERATION_HCU2 = 0x10, > + HW_GENERATION_HCU3 = 0x10, > + HW_GENERATION_HCU4 = 0x20, > + HW_GENERATION_HCU5 = 0x30, > + HW_GENERATION_MCU = 0x08, > + HW_GENERATION_MCU20 = 0x0a, > + HW_GENERATION_MCU25 = 0x09, > +}; > + > + > +void nm_show_print(int generation, int index, int hw_capabilities) > +{ > + int j; Empty line after var declaration. > + /* reset ANSI terminal color mode */ > + printf ("\x1B""[0m""Netstal Maschinen AG: "); Either use space after the function (here "print") all the time in this file or never (which is what I prefer). > + if (generation == HW_GENERATION_HCU3) > + printf("HCU3: index %d", index); > + else if (generation == HW_GENERATION_HCU4) > + printf("HCU4: index %d", index); > + else if (generation == HW_GENERATION_HCU5) > + printf("HCU5: index %d", index); > + else if (generation == HW_GENERATION_MCU25) > + printf("MCU25: index %d", index); > + printf(" HW 0x%x\n", hw_capabilities); > + for (j = 0;j < 6; j++) { > + hcu_led_set(1 << j); > + udelay(200 * 1000); > + } > +} > + > +void set_params_for_sw_install(int install_requested, char *board_name ) > { > - printf("%s: flag %d, argc %d, argv[0] %s\n", __FUNCTION__, > - flag, argc, argv[0]); > - printf("Netstal Maschinen BSP specific command. None at the moment.\n"); > - return 0; > + if (install_requested) { > + char string[128]; Newline. > + printf("\n\n%s SW-Installation: %d patching boot parameters\n", > + board_name, install_requested); > + setenv("bootdelay", "0"); > + setenv("loadaddr", "0x01000000"); > + setenv("serverip", "172.25.1.1"); > + setenv("bootcmd", "run install"); > + sprintf(string, "tftp ${loadaddr} admin/sw_on_hd; " > + "tftp ${loadaddr} installer/%s_sw_inst; " > + "run boot_sw_inst", board_name); > + setenv("install", string); > + sprintf(string, "setenv bootargs emac(0,0)c:%s/%s_sw_inst " > + "e=${ipaddr} h=${serverip} f=0x1000; bootvx ${loadaddr}\0", > + board_name, board_name); > + setenv("boot_sw_inst", string); > + } > +} > + > +void common_misc_init_r(void) > +{ > + char *s = getenv(DEFAULT_ETH_ADDR); > + char *e; > + int i; > + u32 serial = get_serial_number(); > + > + for (i = 0; i < 6; ++i) { > + gd->bd->bi_enetaddr[i] = s ? simple_strtoul(s, &e, 16) : 0; > + if (s) > + s = (*e) ? e + 1 : e; > + } > + > + if (gd->bd->bi_enetaddr[3] == 0 && > + gd->bd->bi_enetaddr[4] == 0 && > + gd->bd->bi_enetaddr[5] == 0) { > + char ethaddr[22]; > + > + /* Must be in sync with CONFIG_ETHADDR */ > + gd->bd->bi_enetaddr[0] = 0x00; > + gd->bd->bi_enetaddr[1] = 0x60; > + gd->bd->bi_enetaddr[2] = 0x13; > + gd->bd->bi_enetaddr[3] = (serial >> 16) & 0xff; > + gd->bd->bi_enetaddr[4] = (serial >> 8) & 0xff; > + gd->bd->bi_enetaddr[5] = hcu_get_slot(); > + sprintf(ethaddr, "%02X:%02X:%02X:%02X:%02X:%02X\0", > + gd->bd->bi_enetaddr[0], gd->bd->bi_enetaddr[1], > + gd->bd->bi_enetaddr[2], gd->bd->bi_enetaddr[3], > + gd->bd->bi_enetaddr[4], gd->bd->bi_enetaddr[5]) ; > + printf("%s: Setting eth %s serial 0x%x\n", __FUNCTION__, > + ethaddr, serial); > + setenv(DEFAULT_ETH_ADDR, ethaddr); > + } > + > + /* IP-Adress update */ > + { Why do you need this "{" here? Doesn't really make sense to me. Please fix and resubmit. Thanks. Best regards, Stefan ===================================================================== DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office at denx.de =====================================================================