/* vi: set sw=8 ts=8: */
/*
 * This file suffers from chronically incorrect tabification
 * of messages. Before editing this file:
 * 1. Switch you editor to 8-space tab mode.
 * 2. Do not use \t in messages, use real tab character.
 * 3. Start each source line with message as follows:
 *    |<7 spaces>"text with tabs"....
 * or
 *    |<5 spaces>"\ntext with tabs"....
 */
#ifndef BB_USAGE_H
#define BB_USAGE_H 1

#define NOUSAGE_STR "\b"

INSERT

#define busybox_notes_usage \
       "Hello world!\n"

#define amba_debug_trivial_usage \
	"\n"
#define amba_debug_full_usage \
	"\tPlease prompt amba_debug directly to get help on its usage\n"

#define dsplog_trivial_usage \
	""
#define dsplog_full_usage \
	""

#define dsplog2_trivial_usage \
	""
#define dsplog2_full_usage \
	""
#define nanddump_trivial_usage \
       "nanddump [OPTIONS] MTD-device"
#define nanddump_full_usage "\n\n" \
       "Dumps the contents of a nand mtd partition.\n" \
     "\nOptions:" \
	IF_LONG_OPTS( \
     "\n	    --help	        display this help and exit" \
     "\n	    --version	        output version information and exit" \
     "\n	-f file    --file=file          dump to file" \
     "\n	-i         --ignoreerrors       ignore errors" \
     "\n	-l length  --length=length      length" \
     "\n	-n         --noecc              read without error correction" \
     "\n	-o         --omitoob            omit oob data" \
     "\n	-b         --omitbad            omit bad blocks from the dump" \
     "\n	-p         --prettyprint        print nice (hexdump)" \
     "\n	-s addr    --startaddress=addr  start address" \
	) \
	IF_NOT_LONG_OPTS( \
     "\n	-f file         dump to file" \
     "\n	-i		ignore errors" \
     "\n	-l length	length" \
     "\n	-n		read without error correction" \
     "\n	-o		omit oob data" \
     "\n	-b		omit bad blocks from the dump" \
     "\n	-p		print nice (hexdump)" \
     "\n	-s addr		start address" \
	)

#define nandwrite_trivial_usage \
       "nandwrite [OPTION] MTD_DEVICE INPUTFILE"
#define nandwrite_full_usage "\n\n" \
       "Writes to the specified MTD device.\n" \
     "\nOptions:" \
	IF_LONG_OPTS( \
     "\n	-a, --autoplace	Use auto oob layout" \
     "\n	-j, --jffs2		force jffs2 oob layout (legacy support)" \
     "\n	-y, --yaffs		force yaffs oob layout (legacy support)" \
     "\n	-f, --forcelegacy	force legacy support on autoplacement enabled mtd device" \
     "\n	-n, --noecc		write without ecc" \
     "\n	-o, --oob		image contains oob data" \
     "\n	-s addr, --start=addr	set start address (default is 0)" \
     "\n	-p, --pad		pad to page size" \
     "\n	-b, --blockalign=1|2|4	set multiple of eraseblocks to align to" \
     "\n	-q, --quiet		don't display progress messages" \
     "\n	    --help		display this help and exit" \
     "\n	    --version		output version information and exit" \
     "\n	-G, --bld	       	Update Ambarella AMBOOT BLD Partition"\
     "\n	-H, --hal	       	Update Ambarella AMBOOT HAL Partition"\
     "\n	-Q, --pba	     	Update Ambarella AMBOOT PBA Partition"\
     "\n	-I, --sec	       	Update Ambarella AMBOOT SEC Partition"\
     "\n	-U, --dsp	     	Update Ambarella AMBOOT DSP Partition"\
     "\n	-W, --lnx	     	Update Ambarella AMBOOT LNX Partition"\
     "\n	-X, --swp	     	Update Ambarella AMBOOT SWP Partition"\
     "\n	-Y, --add	     	Update Ambarella AMBOOT ADD Partition"\
     "\n	-Z, --adc	     	Update Ambarella AMBOOT ADC Partition"\
     "\n	-K, --pri	       	Update Ambarella AMBOOT PRI Partition"\
     "\n	-M, --rmd	     	Update Ambarella AMBOOT RMD Partition"\
     "\n	-R, --rom	     	Update Ambarella AMBOOT ROM Partition"\
     "\n	-B, --bak	     	Update Ambarella AMBOOT BAK Partition"\
     "\n	-C, --cmd	     	Update Ambarella AMBOOT CMD line" \
     "\n	-F hex, --flag=hex	Update Ambarella AMBOOT Partition load flag" \
     "\n	-S hex, --safe=hex	force AMBOOT boot form PTB, safe recovery"\
     "\n	-L hex, --load=hex	Update Ambarella AMBOOT Partition load address" \
     "\n	-D hex, --date=hex	Update Ambarella AMBOOT Partition date" \
     "\n	-V hex, --ver=hex	Update Ambarella AMBOOT Partition version" \
     "\n	-E MAC, --ethmac=MAC	Update Ambarella AMBOOT MAC" \
     "\n	-N sn, --sn=sn	Update Ambarella AMBOOT SN" \
	) \
	IF_NOT_LONG_OPTS( \
     "\n	-a,		Use auto oob layout" \
     "\n	-j,		force jffs2 oob layout (legacy support)" \
     "\n	-y,		force yaffs oob layout (legacy support)" \
     "\n	-f,		force legacy support on autoplacement enabled mtd device" \
     "\n	-n,		write without ecc" \
     "\n	-o,		image contains oob data" \
     "\n	-s addr		set start address (default is 0)" \
     "\n	-p,		pad to page size" \
     "\n	-b 1|2|4	set multiple of eraseblocks to align to" \
     "\n	-q		don't display progress messages" \
     "\n     -G		Update Ambarella AMBOOT BLD Partition"\
     "\n     -H	       Update Ambarella AMBOOT HAL Partition"\
     "\n     -Q		Update Ambarella AMBOOT PBA Partition"\
     "\n     -I     	Update Ambarella AMBOOT SEC Partition"\
     "\n     -U		Update Ambarella AMBOOT DSP Partition"\
     "\n     -W		Update Ambarella AMBOOT LNX Partition"\
     "\n     -X		Update Ambarella AMBOOT SWP Partition"\
     "\n     -Y		Update Ambarella AMBOOT ADD Partition"\
     "\n     -Z   	Update Ambarella AMBOOT ADC Partition"\
     "\n     -K          Update Ambarella AMBOOT PRI Partition"\
     "\n     -M    	Update Ambarella AMBOOT RMD Partition"\
     "\n     -R		Update Ambarella AMBOOT ROM Partition"\
     "\n     -B		Update Ambarella AMBOOT BAK Partition"\
     "\n	-C		Update Ambarella AMBOOT CMD line" \
     "\n	-F hex		Update Ambarella AMBOOT Partition load flag" \
     "\n	-S hex		force AMBOOT boot form PTB, safe recovery"\
     "\n	-L hex		Update Ambarella AMBOOT Partition load address" \
     "\n	-D hex		Update Ambarella AMBOOT Partition date" \
     "\n	-V hex		Update Ambarella AMBOOT Partition version" \
     "\n	-E MAC		Update Ambarella AMBOOT MAC" \
     "\n	-N sn		Update Ambarella AMBOOT SN" \
	)

#endif
