arm: OMAP2+: nandecc: propagate error to command return status

Currently nandecc returns zero even if underlaying
omap_nand_switch_ecc function fails. Fix that by
propagating error returned to command return value.

Signed-off-by: Ladislav Michl <ladis@linux-mips.org>
Reviewed-by: Tom Rini <trini@konsulko.com>
master
Ladislav Michl 7 years ago committed by Tom Rini
parent e5bda8a2d8
commit 50075153fe
  1. 2
      arch/arm/include/asm/arch-am33xx/sys_proto.h
  2. 2
      arch/arm/include/asm/arch-omap3/sys_proto.h
  3. 32
      arch/arm/mach-omap2/omap3/board.c

@ -29,7 +29,7 @@ void sdelay(unsigned long);
void gpmc_init(void);
void enable_gpmc_cs_config(const u32 *gpmc_config, const struct gpmc_cs *cs, u32 base,
u32 size);
void omap_nand_switch_ecc(uint32_t, uint32_t);
int omap_nand_switch_ecc(uint32_t, uint32_t);
void set_uart_mux_conf(void);
void set_mux_conf_regs(void);

@ -68,7 +68,7 @@ u32 wait_on_value(u32, u32, void *, u32);
void cancel_out(u32 *num, u32 *den, u32 den_limit);
void sdelay(unsigned long);
void make_cs1_contiguous(void);
void omap_nand_switch_ecc(uint32_t, uint32_t);
int omap_nand_switch_ecc(uint32_t, uint32_t);
void power_init_r(void);
void do_omap3_emu_romcode_call(u32 service_id, u32 parameters);
void omap3_set_aux_cr_secure(u32 acr);

@ -269,38 +269,34 @@ void abort(void)
*****************************************************************************/
static int do_switch_ecc(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
{
int hw, strength = 1;
if (argc < 2 || argc > 3)
goto usage;
if (strncmp(argv[1], "hw", 2) == 0) {
if (argc == 2) {
omap_nand_switch_ecc(1, 1);
} else {
if (strncmp(argv[2], "hamming", 7) == 0)
omap_nand_switch_ecc(1, 1);
else if (strncmp(argv[2], "bch8", 4) == 0)
omap_nand_switch_ecc(1, 8);
hw = 1;
if (argc == 3) {
if (strncmp(argv[2], "bch8", 4) == 0)
strength = 8;
else if (strncmp(argv[2], "bch16", 5) == 0)
omap_nand_switch_ecc(1, 16);
else
strength = 16;
else if (strncmp(argv[2], "hamming", 7) != 0)
goto usage;
}
} else if (strncmp(argv[1], "sw", 2) == 0) {
if (argc == 2) {
omap_nand_switch_ecc(0, 1);
} else {
if (strncmp(argv[2], "hamming", 7) == 0)
omap_nand_switch_ecc(0, 1);
else if (strncmp(argv[2], "bch8", 4) == 0)
omap_nand_switch_ecc(0, 8);
else
hw = 0;
if (argc == 3) {
if (strncmp(argv[2], "bch8", 4) == 0)
strength = 8;
else if (strncmp(argv[2], "hamming", 7) != 0)
goto usage;
}
} else {
goto usage;
}
return 0;
return -omap_nand_switch_ecc(hw, strength);
usage:
printf ("Usage: nandecc %s\n", cmdtp->usage);

Loading…
Cancel
Save