Dear Heiko Schocher, In message <4b5febbb.9000...@denx.de> you wrote: > This patch adds support for the Keymile SUEN3 board variants which > are based on the Marvell Kirkwood (88F6281) SoC. All variants > uses common code stored in board/keymile/km_arm/km_arm.c > > mgcoge2_arm_p1a board: > This adds support for the ARM part of the mgcoge2. The suen3 > target was moved to the correct suen3 p1b version. There is a > difference between the GPIO configuration between suen3 and mgcoge2. ... > +#if defined(CONFIG_CMD_SF) > +int do_spi_toggle(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) > +{ > + u32 tmp; > + if (argc < 2) { > + cmd_usage(cmdtp); > + return 1; > + } > + > + if ((strcmp(argv[1], "on") != 0) && > + (strcmp(argv[1], "off") != 0)) { > + cmd_usage(cmdtp); > + return 1; > + }
You can omit this code here... > + if ((strcmp(argv[1], "off") == 0)) { > + printf("SPI FLASH disabled, NAND enabled\n"); > + /* Multi-Purpose Pins Functionality configuration */ > + kwmpp_config[0] = MPP0_NF_IO2; > + kwmpp_config[1] = MPP1_NF_IO3; > + kwmpp_config[2] = MPP2_NF_IO4; > + kwmpp_config[3] = MPP3_NF_IO5; > + > + kirkwood_mpp_conf(kwmpp_config); > + tmp = readl(KW_GPIO0_BASE); > + writel(tmp | FLASH_GPIO_PIN , KW_GPIO0_BASE); > + > + nand_init(); > + } else { ... by replacing this with a } else if (strcmp(argv[1], "off") != 0) { > + printf("SPI FLASH enabled, NAND disabled\n"); > + /* Multi-Purpose Pins Functionality configuration */ > + kwmpp_config[0] = MPP0_SPI_SCn; > + kwmpp_config[1] = MPP1_SPI_MOSI; > + kwmpp_config[2] = MPP2_SPI_SCK; > + kwmpp_config[3] = MPP3_SPI_MISO; > + > + kirkwood_mpp_conf(kwmpp_config); > + tmp = readl(KW_GPIO0_BASE); > + writel(tmp & (~FLASH_GPIO_PIN) , KW_GPIO0_BASE); > + > + nand_init(); > + } and adding the "else" here. ... > +#if defined(CONFIG_BOOTCOUNT_LIMIT) > +void bootcount_store (ulong a) > +{ > + volatile ulong *save_addr; > + volatile ulong size = 0; > + int i; > + for (i=0; i<CONFIG_NR_DRAM_BANKS; i++) { > + size += gd->bd->bi_dram[i].size; > + } > + save_addr = (ulong*)(size - BOOTCOUNT_ADDR); > + save_addr[0] = a; > + save_addr[1] = BOOTCOUNT_MAGIC; Please use proper I/O accessors instead of volatile pointers. > + > +ulong bootcount_load (void) > +{ > + volatile ulong *save_addr; > + volatile ulong size = 0; > + int i; > + for (i=0; i<CONFIG_NR_DRAM_BANKS; i++) { > + size += gd->bd->bi_dram[i].size; > + } > + save_addr = (ulong*)(size - BOOTCOUNT_ADDR); > + if (save_addr[1] != BOOTCOUNT_MAGIC) > + return 0; > + else > + return save_addr[0]; > +} > +#endif Ditto. Best regards, Wolfgang Denk -- 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: w...@denx.de 'What shall we do?' said Twoflower. 'Panic?' said Rincewind hope- fully. He always held that panic was the best means of survival; back in the olden days, his theory went, people faced with hungry sabre- toothed tigers could be divided very simply in those who panicked and those who stood there saying 'What a magnificent brute!' or 'Here, pussy.' - Terry Pratchett, _The Light Fantastic_ _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot