[U-Boot] [PATCH] Adding support for DevKit8000

Jean-Christophe PLAGNIOL-VILLARD plagnioj at jcrosoft.com
Thu Aug 20 00:19:01 CEST 2009


On 01:20 Tue 18 Aug     , Frederik Kriewitz wrote:
> This patch adds support for the DevKit8000 board.
> 
> Signed-off-by: Frederik Kriewitz <frederik at kriewitz.eu>
> ---
> mach-types.h needs to be synced (MACH_TYPE_DEVKIT8000)
> ---
>  MAINTAINERS                         |    4 +
>  Makefile                            |    3 +
>  board/omap3/devkit8000/Makefile     |   52 +++++
>  board/omap3/devkit8000/config.mk    |   35 ++++
>  board/omap3/devkit8000/devkit8000.c |  124 ++++++++++++
>  board/omap3/devkit8000/devkit8000.h |  373 +++++++++++++++++++++++++++++++++++
no need board are allow in board/omap3
please create your own vendor dirent or just put it in board/
>  doc/README.omap3                    |   11 +
>  include/configs/omap3_devkit8000.h  |  321 ++++++++++++++++++++++++++++++
>  8 files changed, 923 insertions(+), 0 deletions(-)
>  create mode 100644 board/omap3/devkit8000/Makefile
>  create mode 100644 board/omap3/devkit8000/config.mk
>  create mode 100644 board/omap3/devkit8000/devkit8000.c
>  create mode 100644 board/omap3/devkit8000/devkit8000.h
>  create mode 100644 include/configs/omap3_devkit8000.h
please add entry in MAKEALL
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 620604c..12ad7f5 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -706,6 +706,10 @@ Alex Z
>  	lart		SA1100
>  	dnp1110		SA1110
>  
> +Frederik Kriewitz <frederik at kriewitz.eu>
> +
> +	omap3_devkit8000	ARM CORTEX-A8 (OMAP3530 SoC)
> +
>  -------------------------------------------------------------------------
>  
>  Unknown / orphaned boards:
> diff --git a/Makefile b/Makefile
> index 329e0f5..bed9f5e 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -3072,6 +3072,9 @@ omap3_beagle_config :	unconfig
>  omap3_overo_config :	unconfig
>  	@$(MKCONFIG) $(@:_config=) arm arm_cortexa8 overo omap3 omap3
>  
> +omap3_devkit8000_config :	unconfig
> +	@$(MKCONFIG) $(@:_config=) arm arm_cortexa8 devkit8000 omap3 omap3
> +
>  omap3_evm_config :	unconfig
>  	@$(MKCONFIG) $(@:_config=) arm arm_cortexa8 evm omap3 omap3
>  
> +
> +#ifdef CONFIG_DRIVER_DM9000
> +	/* Configure GPMC registers for DM9000 */
> +	writel(NET_GPMC_CONFIG1, &gpmc_cfg->cs[6].config1);
> +	writel(NET_GPMC_CONFIG2, &gpmc_cfg->cs[6].config2);
> +	writel(NET_GPMC_CONFIG3, &gpmc_cfg->cs[6].config3);
> +	writel(NET_GPMC_CONFIG4, &gpmc_cfg->cs[6].config4);
> +	writel(NET_GPMC_CONFIG5, &gpmc_cfg->cs[6].config5);
> +	writel(NET_GPMC_CONFIG6, &gpmc_cfg->cs[6].config6);
> +	writel(NET_GPMC_CONFIG7, &gpmc_cfg->cs[6].config7);
> +
> +	/* Use OMAP DIE_ID as MAC address */
> +	if (!eth_getenv_enetaddr("ethaddr", enetaddr)) {
> +		enetaddr[0] = 0x02; /* locally administered */
> +		enetaddr[1] = readl(&id_base->die_id_1) & 0xff;
> +		*(u32*)&enetaddr[2] = readl(&id_base->die_id_0);
> +		eth_setenv_enetaddr("ethaddr", enetaddr);
please add a warning for the user to known about it
> +	}
> +#endif
> +
> +	dieid_num_r();
> +
> +	return 0;
> +}
> +
> +/*
> + * Routine: set_muxconf_regs
> + * Description: Setting up the configuration Mux registers specific to the
> + *		hardware. Many pins need to be moved from protect to primary
> + *		mode.
> + */
> +void set_muxconf_regs(void)
> +{
> +	MUX_DEVKIT8000();
> +}
> +
> +#ifdef CONFIG_DRIVER_DM9000
> +int board_eth_init(bd_t *bis)
> +{
> +	return dm9000_initialize(bis);
> +}
> +
> +void reset_phy(void)
> +{
> +	eth_init(gd->bd);
> +}
NACK
the net need to be init only when you use it
> +#endif
> +/* DM9000 */
> +#define CONFIG_NET_MULTI		1
> +#define CONFIG_NET_RETRY_COUNT		20
> +#define	CONFIG_DRIVER_DM9000		1
> +#define	CONFIG_DM9000_BASE		0x2c000000
> +#define	DM9000_IO			CONFIG_DM9000_BASE
> +#define	DM9000_DATA			(CONFIG_DM9000_BASE+0x400)
please add a space before and after "+"
> +#define	CONFIG_DM9000_USE_16BIT		1
> +#define CONFIG_DM9000_NO_SROM		1
> +#define CONFIG_RESET_PHY_R		1
> +#undef	CONFIG_DM9000_DEBUG
> +
> +/* NS16550 Configuration */
> +#define V_NS16550_CLK			48000000	/* 48MHz (APLL96/2) */
why define it twice?
> +
> +#define CONFIG_SYS_NS16550
> +#define CONFIG_SYS_NS16550_SERIAL
> +#define CONFIG_SYS_NS16550_REG_SIZE	(-4)
> +#define CONFIG_SYS_NS16550_CLK		V_NS16550_CLK
here?
> +
> +/* select serial console configuration */
> +#define CONFIG_CONS_INDEX		3
> +#define CONFIG_SYS_NS16550_COM3		OMAP34XX_UART3
> +#define CONFIG_SERIAL3			3
> +#define CONFIG_BAUDRATE			115200
> +#define CONFIG_SYS_BAUDRATE_TABLE	{4800, 9600, 19200, 38400, 57600,\
> +					115200}
> +
> +/* MMC */
> +#define CONFIG_MMC			1
> +#define CONFIG_OMAP3_MMC		1
> +#define CONFIG_DOS_PARTITION		1
> +
> +/* commands to include */
> +#include <config_cmd_default.h>
> +
> +#define CONFIG_CMD_DHCP			/* DHCP support			*/
> +#define CONFIG_CMD_EXT2			/* EXT2 Support			*/
> +#define CONFIG_CMD_FAT			/* FAT support			*/
> +#define CONFIG_CMD_I2C			/* I2C serial bus support	*/
> +#define CONFIG_CMD_JFFS2		/* JFFS2 Support		*/
> +#define CONFIG_CMD_MMC			/* MMC support			*/
> +#define CONFIG_CMD_MTDPARTS		/* Enable MTD parts commands	*/
> +#define CONFIG_CMD_NAND			/* NAND support			*/
> +#define CONFIG_CMD_NAND_LOCK_UNLOCK	/* nand (un)lock commands	*/
> +#define CONFIG_CMD_NET			/* bootp, tftpboot, rarpboot	*/
> +#define CONFIG_CMD_NFS			/* NFS support			*/
please check what is already define in cmd_default
> +
> +#undef CONFIG_CMD_FLASH			/* flinfo, erase, protect	*/
> +#undef CONFIG_CMD_FPGA			/* FPGA configuration Support	*/
> +#undef CONFIG_CMD_IMI			/* iminfo			*/
> +#undef CONFIG_CMD_IMLS			/* List all found images	*/
> +
> +/* I2C */
> +#define CONFIG_SYS_I2C_SPEED		100000
> +#define CONFIG_SYS_I2C_SLAVE		1
> +#define CONFIG_SYS_I2C_BUS		0
> +#define CONFIG_SYS_I2C_BUS_SELECT	1
> +#define CONFIG_DRIVER_OMAP34XX_I2C	1
> +
> +/* TWL4030 */
> +#define CONFIG_TWL4030_POWER		1
> +#define CONFIG_TWL4030_LED		1
> +
> +/* Board NAND Info */
> +#define CONFIG_SYS_NO_FLASH		/* no NOR flash */
please define it before including cmd_default so no-need to undef CMD_FLASH &
CMD_IMLS
> +
> +#define CONFIG_MTD_DEVICE		/* needed for mtdparts commands */
> +#define MTDIDS_DEFAULT			"nand0=nand"
> +#define MTDPARTS_DEFAULT		"mtdparts=nand:512k(x-loader),"\
> +					"1920k(u-boot),128k(u-boot-env),"\
> +					"4m(kernel),-(fs)"
why no this
#define MTDPARTS_DEFAULT	"mtdparts=nand:" \
					"512k(x-loader)," \
					"1920k(u-boot)," \
					"128k(u-boot-env)," \
					"4m(kernel),-(fs)"
> +
> +#define CONFIG_NAND_OMAP_GPMC
> +#define CONFIG_SYS_NAND_ADDR		NAND_BASE	/* physical address */
> +							/* to access nand */
> +#define CONFIG_SYS_NAND_BASE		NAND_BASE	/* physical address */
> +							/* to access nand at */
> +
> +#define CONFIG_EXTRA_ENV_SETTINGS \
> +	"loadaddr=0x82000000\0" \
> +	"console=ttyS2,115200n8\0" \
> +	"vram=12M\0" \
> +	"dvimode=1024x768MR-16 at 60\0" \
> +	"defaultdisplay=dvi\0" \
> +	"nfsopts=hard,tcp,rsize=65536,wsize=65536\0" \
> +	"kernelopts=rw\0" \
> +	"mmcargs=setenv bootargs console=${console} " \
> +		"vram=${vram} " \
> +		"omapfb.mode=dvi:${dvimode} " \
> +		"omapdss.def_disp=${defaultdisplay} " \
> +		"root=/dev/mmcblk0p2\0" \
> +	"nandargs=setenv bootargs console=${console} " \
> +		"vram=${vram} " \
> +		"omapfb.mode=dvi:${dvimode} " \
> +		"omapdss.def_disp=${defaultdisplay} " \
> +		"root=/dev/mtdblock4 " \
> +		"rootfstype=jffs2\0" \
> +	"netargs=setenv bootargs console=${console} " \
> +		"vram=${vram} " \
> +		"omapfb.mode=dvi:${dvimode} " \
> +		"omapdss.def_disp=${defaultdisplay} " \
> +		"root=/dev/nfs " \
> +		"nfsroot=${serverip}:${rootpath},${nfsopts} " \
> +		"ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off " \
> +		"dnsip1=${dnsip} " \
> +		"dnsip2=${dnsip2}\0" \
here you can reduce duplicate code
as example by somthink like this
	"commonargs=" \
		"setenv bootargs console=${console} " \
		"vram=${vram} " \
		"omapfb.mode=dvi:${dvimode} " \
		"omapdss.def_disp=${defaultdisplay} " \
	"mmcargs=" \
		"run commonargs; " \
		"setenv bootargs ${bootargs}" \
		"root=/dev/mmcblk0p2\0" \

> +	"loadbootscript=fatload mmc 0 ${loadaddr} boot.scr\0" \
> +	"bootscript=echo Running bootscript from mmc ...; " \
> +		"source ${loadaddr}\0" \
> +	"loaduimage=fatload mmc 0 ${loadaddr} uImage\0" \
> +	"eraseenv=nand unlock 0x260000 0x20000; nand erase 0x260000 0x20000\0" \
> +	"mmcboot=echo Booting from mmc ...; " \
> +		"run mmcargs; " \
> +		"bootm ${loadaddr}\0" \
> +	"nandboot=echo Booting from nand ...; " \
> +		"run nandargs; " \
> +		"nand read ${loadaddr} 280000 400000; " \
> +		"bootm ${loadaddr}\0" \
> +	"netboot=echo Booting from network ...; " \
> +		"dhcp ${loadaddr}; " \
> +		"run netargs; " \
> +		"bootm ${loadaddr}\0" \
> +	"autoboot=if mmc init 0; then " \
> +			"if run loadbootscript; then " \
> +				"run bootscript; " \
> +			"else " \
> +				"if run loaduimage; then " \
> +					"run mmcboot; " \
> +				"else run nandboot; " \
> +				"fi; " \
> +			"fi; " \
> +		"else run nandboot; fi\0"
> +
> +
> +#define CONFIG_BOOTCOMMAND "run autoboot"
> +
> +/* Miscellaneous configurable options */
> +#define V_PROMPT			"OMAP3 DevKit8000 # "
no need
> +
> +#define CONFIG_SYS_LONGHELP		/* undef to save memory */
> +#define CONFIG_SYS_HUSH_PARSER		/* use "hush" command parser */
> +#define CONFIG_AUTO_COMPLETE		1
> +#define CONFIG_SYS_PROMPT_HUSH_PS2	"> "
> +#define CONFIG_SYS_PROMPT		V_PROMPT
just define it here
> +#define CONFIG_SYS_CBSIZE		512	/* Console I/O Buffer Size */
> +/* Print Buffer Size */
> +#define CONFIG_SYS_PBSIZE		(CONFIG_SYS_CBSIZE + \
> +					sizeof(CONFIG_SYS_PROMPT) + 16)
> +#define CONFIG_SYS_MAXARGS		128	/* max number of command args */
> +
> +/* Boot Argument Buffer Size */
> +#define CONFIG_SYS_BARGSIZE		(CONFIG_SYS_CBSIZE)
> +
> +#define CONFIG_SYS_MEMTEST_START	(OMAP34XX_SDRC_CS0 + 0x07000000)
> +#define CONFIG_SYS_MEMTEST_END		(CONFIG_SYS_MEMTEST_START + \
> +					0x01000000) /* 16MB */
> +
> +#define CONFIG_SYS_LOAD_ADDR		(OMAP34XX_SDRC_CS0 + 0x02000000)
> +
Best Regards,
J.


More information about the U-Boot mailing list