diff options
| -rw-r--r-- | board/olio/h1/Makefile | 29 | ||||
| -rw-r--r-- | board/olio/h1/h1.c | 541 | ||||
| -rw-r--r-- | board/olio/h1/h1.h | 546 | ||||
| -rw-r--r-- | board/olio/h1/led.c | 73 | ||||
| -rw-r--r-- | boards.cfg | 1 | ||||
| -rw-r--r-- | include/configs/omap3_h1.h | 449 | 
6 files changed, 1639 insertions, 0 deletions
| diff --git a/board/olio/h1/Makefile b/board/olio/h1/Makefile new file mode 100644 index 000000000..3018f6c63 --- /dev/null +++ b/board/olio/h1/Makefile @@ -0,0 +1,29 @@ +# +# (C) Copyright 2000, 2001, 2002 +# Wolfgang Denk, DENX Software Engineering, wd@denx.de. +# +# SPDX-License-Identifier:	GPL-2.0+ +# + +include $(TOPDIR)/config.mk + +LIB	= $(obj)lib$(BOARD).o + +COBJS-y	:= $(BOARD).o +COBJS-$(CONFIG_STATUS_LED) += led.o + +COBJS	:= $(sort $(COBJS-y)) +SRCS	:= $(COBJS:.o=.c) +OBJS	:= $(addprefix $(obj),$(COBJS)) + +$(LIB):	$(obj).depend $(OBJS) +	$(call cmd_link_o_target, $(OBJS)) + +######################################################################### + +# defines $(obj).depend target +include $(SRCTREE)/rules.mk + +sinclude $(obj).depend + +######################################################################### diff --git a/board/olio/h1/h1.c b/board/olio/h1/h1.c new file mode 100644 index 000000000..59e6a2b70 --- /dev/null +++ b/board/olio/h1/h1.c @@ -0,0 +1,541 @@ +/* + * (C) Copyright 2004-2011 + * Texas Instruments, <www.ti.com> + * + * Author : + *	Sunil Kumar <sunilsaini05@gmail.com> + *	Shashi Ranjan <shashiranjanmca05@gmail.com> + * + * Derived from Beagle Board and 3430 SDP code by + *	Richard Woodruff <r-woodruff2@ti.com> + *	Syed Mohammed Khasim <khasim@ti.com> + * + * + * SPDX-License-Identifier:	GPL-2.0+ + */ +#include <common.h> +#ifdef CONFIG_STATUS_LED +#include <status_led.h> +#endif +#include <twl4030.h> +#include <linux/mtd/nand.h> +#include <asm/io.h> +#include <asm/arch/mmc_host_def.h> +#include <asm/arch/mux.h> +#include <asm/arch/mem.h> +#include <asm/arch/sys_proto.h> +#include <asm/gpio.h> +#include <asm/mach-types.h> +#include <asm/omap_musb.h> +#include <asm/errno.h> +#include <linux/usb/ch9.h> +#include <linux/usb/gadget.h> +#include <linux/usb/musb.h> +#include "h1.h" +#include <command.h> + +#ifdef CONFIG_USB_EHCI +#include <usb.h> +#include <asm/ehci-omap.h> +#endif + +#define TWL4030_I2C_BUS			0 +#define EXPANSION_EEPROM_I2C_BUS	1 +#define EXPANSION_EEPROM_I2C_ADDRESS	0x50 + +#define TINCANTOOLS_ZIPPY		0x01000100 +#define TINCANTOOLS_ZIPPY2		0x02000100 +#define TINCANTOOLS_TRAINER		0x04000100 +#define TINCANTOOLS_SHOWDOG		0x03000100 +#define KBADC_BEAGLEFPGA		0x01000600 +#define LW_BEAGLETOUCH			0x01000700 +#define BRAINMUX_LCDOG			0x01000800 +#define BRAINMUX_LCDOGTOUCH		0x02000800 +#define BBTOYS_WIFI			0x01000B00 +#define BBTOYS_VGA			0x02000B00 +#define BBTOYS_LCD			0x03000B00 +#define BCT_BRETTL3			0x01000F00 +#define BCT_BRETTL4			0x02000F00 +#define LSR_COM6L_ADPT			0x01001300 +#define BEAGLE_NO_EEPROM		0xffffffff + +DECLARE_GLOBAL_DATA_PTR; + +static struct { +	unsigned int device_vendor; +	unsigned char revision; +	unsigned char content; +	char fab_revision[8]; +	char env_var[16]; +	char env_setting[64]; +} expansion_config; + +/* + * Routine: board_init + * Description: Early hardware init. + */ +int board_init(void) +{ +	gpmc_init(); /* in SRAM or SDRAM, finish GPMC */ +	/* board id for Linux */ +	gd->bd->bi_arch_number = MACH_TYPE_OMAP3_BEAGLE; +	/* boot param addr */ +	gd->bd->bi_boot_params = (OMAP34XX_SDRC_CS0 + 0x100); + +#if defined(CONFIG_STATUS_LED) && defined(STATUS_LED_BOOT) +	status_led_set (STATUS_LED_BOOT, STATUS_LED_ON); +#endif + +	return 0; +} + +/* + * Routine: get_board_revision + * Description: Detect if we are running on a Beagle revision Ax/Bx, + *		C1/2/3, C4, xM Ax/Bx or xM Cx. This can be done by reading + *		the level of GPIO173, GPIO172 and GPIO171. This should + *		result in + *		GPIO173, GPIO172, GPIO171: 1 1 1 => Ax/Bx + *		GPIO173, GPIO172, GPIO171: 1 1 0 => C1/2/3 + *		GPIO173, GPIO172, GPIO171: 1 0 1 => C4 + *		GPIO173, GPIO172, GPIO171: 0 1 0 => xM Cx + *		GPIO173, GPIO172, GPIO171: 0 0 0 => xM Ax/Bx + */ +static int get_board_revision(void) +{ +	int revision; + +	if (!gpio_request(171, "") && +	    !gpio_request(172, "") && +	    !gpio_request(173, "")) { + +		gpio_direction_input(171); +		gpio_direction_input(172); +		gpio_direction_input(173); + +		revision = gpio_get_value(173) << 2 | +			   gpio_get_value(172) << 1 | +			   gpio_get_value(171); +	} else { +		printf("Error: unable to acquire board revision GPIOs\n"); +		revision = -1; +	} + +	return revision; +} + +#ifdef CONFIG_SPL_BUILD +/* + * Routine: get_board_mem_timings + * Description: If we use SPL then there is no x-loader nor config header + * so we have to setup the DDR timings ourself on both banks. + */ +void get_board_mem_timings(struct board_sdrc_timings *timings) +{ +	int pop_mfr, pop_id; + +	/* +	 * We need to identify what PoP memory is on the board so that +	 * we know what timings to use.  If we can't identify it then +	 * we know it's an xM.  To map the ID values please see nand_ids.c +	 */ +	identify_nand_chip(&pop_mfr, &pop_id); + +	timings->mr = MICRON_V_MR_165; +	switch (get_board_revision()) { +	case REVISION_C4: +		if (pop_mfr == NAND_MFR_STMICRO && pop_id == 0xba) { +			/* 512MB DDR */ +			timings->mcfg = NUMONYX_V_MCFG_165(512 << 20); +			timings->ctrla = NUMONYX_V_ACTIMA_165; +			timings->ctrlb = NUMONYX_V_ACTIMB_165; +			timings->rfr_ctrl = SDP_3430_SDRC_RFR_CTRL_165MHz; +			break; +		} else if (pop_mfr == NAND_MFR_MICRON && pop_id == 0xba) { +			/* Beagleboard Rev C4, 512MB Nand/256MB DDR*/ +			timings->mcfg = MICRON_V_MCFG_165(128 << 20); +			timings->ctrla = MICRON_V_ACTIMA_165; +			timings->ctrlb = MICRON_V_ACTIMB_165; +			timings->rfr_ctrl = SDP_3430_SDRC_RFR_CTRL_165MHz; +			break; +		} else if (pop_mfr == NAND_MFR_MICRON && pop_id == 0xbc) { +			/* Beagleboard Rev C5, 256MB DDR */ +			timings->mcfg = MICRON_V_MCFG_200(256 << 20); +			timings->ctrla = MICRON_V_ACTIMA_200; +			timings->ctrlb = MICRON_V_ACTIMB_200; +			timings->rfr_ctrl = SDP_3430_SDRC_RFR_CTRL_200MHz; +			break; +		} +	case REVISION_XM_AB: +	case REVISION_XM_C: +		if (pop_mfr == 0) { +			/* 256MB DDR */ +			timings->mcfg = MICRON_V_MCFG_200(256 << 20); +			timings->ctrla = MICRON_V_ACTIMA_200; +			timings->ctrlb = MICRON_V_ACTIMB_200; +			timings->rfr_ctrl = SDP_3430_SDRC_RFR_CTRL_200MHz; +		} else { +			/* 512MB DDR */ +			timings->mcfg = NUMONYX_V_MCFG_165(512 << 20); +			timings->ctrla = NUMONYX_V_ACTIMA_165; +			timings->ctrlb = NUMONYX_V_ACTIMB_165; +			timings->rfr_ctrl = SDP_3430_SDRC_RFR_CTRL_165MHz; +		} +		break; +	default: +		/* Assume 128MB and Micron/165MHz timings to be safe */ +		timings->mcfg = MICRON_V_MCFG_165(128 << 20); +		timings->ctrla = MICRON_V_ACTIMA_165; +		timings->ctrlb = MICRON_V_ACTIMB_165; +		timings->rfr_ctrl = SDP_3430_SDRC_RFR_CTRL_165MHz; +	} +} +#endif + +/* + * Routine: get_expansion_id + * Description: This function checks for expansion board by checking I2C + *		bus 1 for the availability of an AT24C01B serial EEPROM. + *		returns the device_vendor field from the EEPROM + */ +static unsigned int get_expansion_id(void) +{ +	i2c_set_bus_num(EXPANSION_EEPROM_I2C_BUS); + +	/* return BEAGLE_NO_EEPROM if eeprom doesn't respond */ +	if (i2c_probe(EXPANSION_EEPROM_I2C_ADDRESS) == 1) { +		i2c_set_bus_num(TWL4030_I2C_BUS); +		return BEAGLE_NO_EEPROM; +	} + +	/* read configuration data */ +	i2c_read(EXPANSION_EEPROM_I2C_ADDRESS, 0, 1, (u8 *)&expansion_config, +		 sizeof(expansion_config)); + +	/* retry reading configuration data with 16bit addressing */ +	if ((expansion_config.device_vendor == 0xFFFFFF00) || +	    (expansion_config.device_vendor == 0xFFFFFFFF)) { +		printf("EEPROM is blank or 8bit addressing failed: retrying with 16bit:\n"); +		i2c_read(EXPANSION_EEPROM_I2C_ADDRESS, 0, 2, (u8 *)&expansion_config, +			 sizeof(expansion_config)); +	} + +	i2c_set_bus_num(TWL4030_I2C_BUS); + +	return expansion_config.device_vendor; +} + +#ifdef CONFIG_VIDEO_OMAP3 +/* + * Configure DSS to display background color on DVID + * Configure VENC to display color bar on S-Video + */ +static void beagle_display_init(void) +{ +	omap3_dss_venc_config(&venc_config_std_tv, VENC_HEIGHT, VENC_WIDTH); +	switch (get_board_revision()) { +	case REVISION_AXBX: +	case REVISION_CX: +	case REVISION_C4: +		omap3_dss_panel_config(&dvid_cfg); +		break; +	case REVISION_XM_AB: +	case REVISION_XM_C: +	default: +		omap3_dss_panel_config(&dvid_cfg_xm); +		break; +	} +} + +/* + * Enable DVI power + */ +static void beagle_dvi_pup(void) +{ +	uchar val; + +	switch (get_board_revision()) { +	case REVISION_AXBX: +	case REVISION_CX: +	case REVISION_C4: +		gpio_request(170, ""); +		gpio_direction_output(170, 0); +		gpio_set_value(170, 1); +		break; +	case REVISION_XM_AB: +	case REVISION_XM_C: +	default: +		#define GPIODATADIR1 (TWL4030_BASEADD_GPIO+3) +		#define GPIODATAOUT1 (TWL4030_BASEADD_GPIO+6) + +		i2c_read(TWL4030_CHIP_GPIO, GPIODATADIR1, 1, &val, 1); +		val |= 4; +		i2c_write(TWL4030_CHIP_GPIO, GPIODATADIR1, 1, &val, 1); + +		i2c_read(TWL4030_CHIP_GPIO, GPIODATAOUT1, 1, &val, 1); +		val |= 4; +		i2c_write(TWL4030_CHIP_GPIO, GPIODATAOUT1, 1, &val, 1); +		break; +	} +} +#endif + +#ifdef CONFIG_USB_MUSB_OMAP2PLUS +static struct musb_hdrc_config musb_config = { +	.multipoint     = 1, +	.dyn_fifo       = 1, +	.num_eps        = 16, +	.ram_bits       = 12, +}; + +static struct omap_musb_board_data musb_board_data = { +	.interface_type	= MUSB_INTERFACE_ULPI, +}; + +static struct musb_hdrc_platform_data musb_plat = { +#if defined(CONFIG_MUSB_HOST) +	.mode           = MUSB_HOST, +#elif defined(CONFIG_MUSB_GADGET) +	.mode		= MUSB_PERIPHERAL, +#else +#error "Please define either CONFIG_MUSB_HOST or CONFIG_MUSB_GADGET" +#endif +	.config         = &musb_config, +	.power          = 100, +	.platform_ops	= &omap2430_ops, +	.board_data	= &musb_board_data, +}; +#endif + +/* + * Routine: misc_init_r + * Description: Configure board specific parts + */ +int misc_init_r(void) +{ +	struct gpio *gpio5_base = (struct gpio *)OMAP34XX_GPIO5_BASE; +	struct gpio *gpio6_base = (struct gpio *)OMAP34XX_GPIO6_BASE; +	struct control_prog_io *prog_io_base = (struct control_prog_io *)OMAP34XX_CTRL_BASE; + +	/* Enable i2c2 pullup resisters */ +	writel(~(PRG_I2C2_PULLUPRESX), &prog_io_base->io1); + +	switch (get_board_revision()) { +	case REVISION_AXBX: +		printf("Beagle Rev Ax/Bx\n"); +		setenv("beaglerev", "AxBx"); +		break; +	case REVISION_CX: +		printf("Beagle Rev C1/C2/C3\n"); +		setenv("beaglerev", "Cx"); +		MUX_BEAGLE_C(); +		break; +	case REVISION_C4: +		printf("Beagle Rev C4\n"); +		setenv("beaglerev", "C4"); +		MUX_BEAGLE_C(); +		/* Set VAUX2 to 1.8V for EHCI PHY */ +		twl4030_pmrecv_vsel_cfg(TWL4030_PM_RECEIVER_VAUX2_DEDICATED, +					TWL4030_PM_RECEIVER_VAUX2_VSEL_18, +					TWL4030_PM_RECEIVER_VAUX2_DEV_GRP, +					TWL4030_PM_RECEIVER_DEV_GRP_P1); +		break; +	case REVISION_XM_AB: +		printf("Beagle xM Rev A/B\n"); +		setenv("beaglerev", "xMAB"); +		MUX_BEAGLE_XM(); +		/* Set VAUX2 to 1.8V for EHCI PHY */ +		twl4030_pmrecv_vsel_cfg(TWL4030_PM_RECEIVER_VAUX2_DEDICATED, +					TWL4030_PM_RECEIVER_VAUX2_VSEL_18, +					TWL4030_PM_RECEIVER_VAUX2_DEV_GRP, +					TWL4030_PM_RECEIVER_DEV_GRP_P1); +		break; +	case REVISION_XM_C: +		printf("Beagle xM Rev C\n"); +		setenv("beaglerev", "xMC"); +		MUX_BEAGLE_XM(); +		/* Set VAUX2 to 1.8V for EHCI PHY */ +		twl4030_pmrecv_vsel_cfg(TWL4030_PM_RECEIVER_VAUX2_DEDICATED, +					TWL4030_PM_RECEIVER_VAUX2_VSEL_18, +					TWL4030_PM_RECEIVER_VAUX2_DEV_GRP, +					TWL4030_PM_RECEIVER_DEV_GRP_P1); +		break; +	default: +		printf("Beagle unknown 0x%02x\n", get_board_revision()); +		MUX_BEAGLE_XM(); +		/* Set VAUX2 to 1.8V for EHCI PHY */ +		twl4030_pmrecv_vsel_cfg(TWL4030_PM_RECEIVER_VAUX2_DEDICATED, +					TWL4030_PM_RECEIVER_VAUX2_VSEL_18, +					TWL4030_PM_RECEIVER_VAUX2_DEV_GRP, +					TWL4030_PM_RECEIVER_DEV_GRP_P1); +	} + +	switch (get_expansion_id()) { +	case TINCANTOOLS_ZIPPY: +		printf("Recognized Tincantools Zippy board (rev %d %s)\n", +			expansion_config.revision, +			expansion_config.fab_revision); +		MUX_TINCANTOOLS_ZIPPY(); +		setenv("buddy", "zippy"); +		break; +	case TINCANTOOLS_ZIPPY2: +		printf("Recognized Tincantools Zippy2 board (rev %d %s)\n", +			expansion_config.revision, +			expansion_config.fab_revision); +		MUX_TINCANTOOLS_ZIPPY(); +		setenv("buddy", "zippy2"); +		break; +	case TINCANTOOLS_TRAINER: +		printf("Recognized Tincantools Trainer board (rev %d %s)\n", +			expansion_config.revision, +			expansion_config.fab_revision); +		MUX_TINCANTOOLS_ZIPPY(); +		MUX_TINCANTOOLS_TRAINER(); +		setenv("buddy", "trainer"); +		break; +	case TINCANTOOLS_SHOWDOG: +		printf("Recognized Tincantools Showdow board (rev %d %s)\n", +			expansion_config.revision, +			expansion_config.fab_revision); +		/* Place holder for DSS2 definition for showdog lcd */ +		setenv("defaultdisplay", "showdoglcd"); +		setenv("buddy", "showdog"); +		break; +	case KBADC_BEAGLEFPGA: +		printf("Recognized KBADC Beagle FPGA board\n"); +		MUX_KBADC_BEAGLEFPGA(); +		setenv("buddy", "beaglefpga"); +		break; +	case LW_BEAGLETOUCH: +		printf("Recognized Liquidware BeagleTouch board\n"); +		setenv("buddy", "beagletouch"); +		break; +	case BRAINMUX_LCDOG: +		printf("Recognized Brainmux LCDog board\n"); +		setenv("buddy", "lcdog"); +		break; +	case BRAINMUX_LCDOGTOUCH: +		printf("Recognized Brainmux LCDog Touch board\n"); +		setenv("buddy", "lcdogtouch"); +		break; +	case BBTOYS_WIFI: +		printf("Recognized BeagleBoardToys WiFi board\n"); +		MUX_BBTOYS_WIFI() +		setenv("buddy", "bbtoys-wifi"); +		break;; +	case BBTOYS_VGA: +		printf("Recognized BeagleBoardToys VGA board\n"); +		break;; +	case BBTOYS_LCD: +		printf("Recognized BeagleBoardToys LCD board\n"); +		break;; +	case BCT_BRETTL3: +		printf("Recognized bct electronic GmbH brettl3 board\n"); +		break; +	case BCT_BRETTL4: +		printf("Recognized bct electronic GmbH brettl4 board\n"); +		break; +	case LSR_COM6L_ADPT: +		printf("Recognized LSR COM6L Adapter Board\n"); +		MUX_BBTOYS_WIFI() +		setenv("buddy", "lsr-com6l-adpt"); +		break; +	case BEAGLE_NO_EEPROM: +		printf("No EEPROM on expansion board\n"); +		setenv("buddy", "none"); +		break; +	default: +		printf("Unrecognized expansion board: %x\n", +			expansion_config.device_vendor); +		setenv("buddy", "unknown"); +	} + +	if (expansion_config.content == 1) +		setenv(expansion_config.env_var, expansion_config.env_setting); + +	twl4030_power_init(); +	switch (get_board_revision()) { +	case REVISION_XM_AB: +		twl4030_led_init(TWL4030_LED_LEDEN_LEDBON); +		break; +	default: +		twl4030_led_init(TWL4030_LED_LEDEN_LEDAON | TWL4030_LED_LEDEN_LEDBON); +		break; +	} + +	/* Set GPIO states before they are made outputs */ +	writel(GPIO23 | GPIO10 | GPIO8 | GPIO2 | GPIO1, +		&gpio6_base->setdataout); +	writel(GPIO31 | GPIO30 | GPIO29 | GPIO28 | GPIO22 | GPIO21 | +		GPIO15 | GPIO14 | GPIO13 | GPIO12, &gpio5_base->setdataout); + +	/* Configure GPIOs to output */ +	writel(~(GPIO23 | GPIO10 | GPIO8 | GPIO2 | GPIO1), &gpio6_base->oe); +	writel(~(GPIO31 | GPIO30 | GPIO29 | GPIO28 | GPIO22 | GPIO21 | +		GPIO15 | GPIO14 | GPIO13 | GPIO12), &gpio5_base->oe); + +	dieid_num_r(); + +#ifdef CONFIG_VIDEO_OMAP3 +	beagle_dvi_pup(); +	beagle_display_init(); +	omap3_dss_enable(); +#endif + +#ifdef CONFIG_USB_MUSB_OMAP2PLUS +	musb_register(&musb_plat, &musb_board_data, (void *)MUSB_BASE); +#endif + +	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_BEAGLE(); +} + +#if defined(CONFIG_GENERIC_MMC) && !defined(CONFIG_SPL_BUILD) +int board_mmc_init(bd_t *bis) +{ +	return omap_mmc_init(0, 0, 0, -1, -1); +} +#endif + +#if defined(CONFIG_USB_EHCI) && !defined(CONFIG_SPL_BUILD) +/* Call usb_stop() before starting the kernel */ +void show_boot_progress(int val) +{ +	if (val == BOOTSTAGE_ID_RUN_OS) +		usb_stop(); +} + +static struct omap_usbhs_board_data usbhs_bdata = { +	.port_mode[0] = OMAP_EHCI_PORT_MODE_PHY, +	.port_mode[1] = OMAP_EHCI_PORT_MODE_PHY, +	.port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED +}; + +int ehci_hcd_init(int index, struct ehci_hccr **hccr, struct ehci_hcor **hcor) +{ +	return omap_ehci_hcd_init(&usbhs_bdata, hccr, hcor); +} + +int ehci_hcd_stop(int index) +{ +	return omap_ehci_hcd_stop(); +} + +#endif /* CONFIG_USB_EHCI */ + +#if defined(CONFIG_USB_ETHER) && defined(CONFIG_MUSB_GADGET) +int board_eth_init(bd_t *bis) +{ +	return usb_eth_initialize(bis); +} +#endif diff --git a/board/olio/h1/h1.h b/board/olio/h1/h1.h new file mode 100644 index 000000000..8705a5ae1 --- /dev/null +++ b/board/olio/h1/h1.h @@ -0,0 +1,546 @@ +/* + * (C) Copyright 2008 + * Dirk Behme <dirk.behme@gmail.com> + * + * SPDX-License-Identifier:	GPL-2.0+ + */ +#ifndef _H1_H_ +#define _H1_H_ + +#include <asm/arch/dss.h> + +const omap3_sysinfo sysinfo = { +	DDR_STACKED, +	"OMAP3 Beagle board", +#if defined(CONFIG_ENV_IS_IN_ONENAND) +	"OneNAND", +#else +	"NAND", +#endif +}; + +/* BeagleBoard revisions */ +#define REVISION_AXBX	0x7 +#define REVISION_CX	0x6 +#define REVISION_C4	0x5 +#define REVISION_XM_AB	0x0 +#define REVISION_XM_C	0x2 + +/* + * IEN  - Input Enable + * IDIS - Input Disable + * PTD  - Pull type Down + * PTU  - Pull type Up + * DIS  - Pull type selection is inactive + * EN   - Pull type selection is active + * M0   - Mode 0 + * The commented string gives the final mux configuration for that pin + */ +#define MUX_BEAGLE() \ + /*SDRC*/\ +	MUX_VAL(CP(SDRC_D0),		(IEN  | PTD | DIS | M0)) /*SDRC_D0*/\ +	MUX_VAL(CP(SDRC_D1),		(IEN  | PTD | DIS | M0)) /*SDRC_D1*/\ +	MUX_VAL(CP(SDRC_D2),		(IEN  | PTD | DIS | M0)) /*SDRC_D2*/\ +	MUX_VAL(CP(SDRC_D3),		(IEN  | PTD | DIS | M0)) /*SDRC_D3*/\ +	MUX_VAL(CP(SDRC_D4),		(IEN  | PTD | DIS | M0)) /*SDRC_D4*/\ +	MUX_VAL(CP(SDRC_D5),		(IEN  | PTD | DIS | M0)) /*SDRC_D5*/\ +	MUX_VAL(CP(SDRC_D6),		(IEN  | PTD | DIS | M0)) /*SDRC_D6*/\ +	MUX_VAL(CP(SDRC_D7),		(IEN  | PTD | DIS | M0)) /*SDRC_D7*/\ +	MUX_VAL(CP(SDRC_D8),		(IEN  | PTD | DIS | M0)) /*SDRC_D8*/\ +	MUX_VAL(CP(SDRC_D9),		(IEN  | PTD | DIS | M0)) /*SDRC_D9*/\ +	MUX_VAL(CP(SDRC_D10),		(IEN  | PTD | DIS | M0)) /*SDRC_D10*/\ +	MUX_VAL(CP(SDRC_D11),		(IEN  | PTD | DIS | M0)) /*SDRC_D11*/\ +	MUX_VAL(CP(SDRC_D12),		(IEN  | PTD | DIS | M0)) /*SDRC_D12*/\ +	MUX_VAL(CP(SDRC_D13),		(IEN  | PTD | DIS | M0)) /*SDRC_D13*/\ +	MUX_VAL(CP(SDRC_D14),		(IEN  | PTD | DIS | M0)) /*SDRC_D14*/\ +	MUX_VAL(CP(SDRC_D15),		(IEN  | PTD | DIS | M0)) /*SDRC_D15*/\ +	MUX_VAL(CP(SDRC_D16),		(IEN  | PTD | DIS | M0)) /*SDRC_D16*/\ +	MUX_VAL(CP(SDRC_D17),		(IEN  | PTD | DIS | M0)) /*SDRC_D17*/\ +	MUX_VAL(CP(SDRC_D18),		(IEN  | PTD | DIS | M0)) /*SDRC_D18*/\ +	MUX_VAL(CP(SDRC_D19),		(IEN  | PTD | DIS | M0)) /*SDRC_D19*/\ +	MUX_VAL(CP(SDRC_D20),		(IEN  | PTD | DIS | M0)) /*SDRC_D20*/\ +	MUX_VAL(CP(SDRC_D21),		(IEN  | PTD | DIS | M0)) /*SDRC_D21*/\ +	MUX_VAL(CP(SDRC_D22),		(IEN  | PTD | DIS | M0)) /*SDRC_D22*/\ +	MUX_VAL(CP(SDRC_D23),		(IEN  | PTD | DIS | M0)) /*SDRC_D23*/\ +	MUX_VAL(CP(SDRC_D24),		(IEN  | PTD | DIS | M0)) /*SDRC_D24*/\ +	MUX_VAL(CP(SDRC_D25),		(IEN  | PTD | DIS | M0)) /*SDRC_D25*/\ +	MUX_VAL(CP(SDRC_D26),		(IEN  | PTD | DIS | M0)) /*SDRC_D26*/\ +	MUX_VAL(CP(SDRC_D27),		(IEN  | PTD | DIS | M0)) /*SDRC_D27*/\ +	MUX_VAL(CP(SDRC_D28),		(IEN  | PTD | DIS | M0)) /*SDRC_D28*/\ +	MUX_VAL(CP(SDRC_D29),		(IEN  | PTD | DIS | M0)) /*SDRC_D29*/\ +	MUX_VAL(CP(SDRC_D30),		(IEN  | PTD | DIS | M0)) /*SDRC_D30*/\ +	MUX_VAL(CP(SDRC_D31),		(IEN  | PTD | DIS | M0)) /*SDRC_D31*/\ +	MUX_VAL(CP(SDRC_CLK),		(IEN  | PTD | DIS | M0)) /*SDRC_CLK*/\ +	MUX_VAL(CP(SDRC_DQS0),		(IEN  | PTD | DIS | M0)) /*SDRC_DQS0*/\ +	MUX_VAL(CP(SDRC_DQS1),		(IEN  | PTD | DIS | M0)) /*SDRC_DQS1*/\ +	MUX_VAL(CP(SDRC_DQS2),		(IEN  | PTD | DIS | M0)) /*SDRC_DQS2*/\ +	MUX_VAL(CP(SDRC_DQS3),		(IEN  | PTD | DIS | M0)) /*SDRC_DQS3*/\ + /*GPMC*/\ +	MUX_VAL(CP(GPMC_A1),		(IDIS | PTD | DIS | M0)) /*GPMC_A1*/\ +	MUX_VAL(CP(GPMC_A2),		(IDIS | PTD | DIS | M0)) /*GPMC_A2*/\ +	MUX_VAL(CP(GPMC_A3),		(IDIS | PTD | DIS | M0)) /*GPMC_A3*/\ +	MUX_VAL(CP(GPMC_A4),		(IDIS | PTD | DIS | M0)) /*GPMC_A4*/\ +	MUX_VAL(CP(GPMC_A5),		(IDIS | PTD | DIS | M0)) /*GPMC_A5*/\ +	MUX_VAL(CP(GPMC_A6),		(IDIS | PTD | DIS | M0)) /*GPMC_A6*/\ +	MUX_VAL(CP(GPMC_A7),		(IDIS | PTD | DIS | M0)) /*GPMC_A7*/\ +	MUX_VAL(CP(GPMC_A8),		(IDIS | PTD | DIS | M0)) /*GPMC_A8*/\ +	MUX_VAL(CP(GPMC_A9),		(IDIS | PTD | DIS | M0)) /*GPMC_A9*/\ +	MUX_VAL(CP(GPMC_A10),		(IDIS | PTD | DIS | M0)) /*GPMC_A10*/\ +	MUX_VAL(CP(GPMC_D0),		(IEN  | PTD | DIS | M0)) /*GPMC_D0*/\ +	MUX_VAL(CP(GPMC_D1),		(IEN  | PTD | DIS | M0)) /*GPMC_D1*/\ +	MUX_VAL(CP(GPMC_D2),		(IEN  | PTD | DIS | M0)) /*GPMC_D2*/\ +	MUX_VAL(CP(GPMC_D3),		(IEN  | PTD | DIS | M0)) /*GPMC_D3*/\ +	MUX_VAL(CP(GPMC_D4),		(IEN  | PTD | DIS | M0)) /*GPMC_D4*/\ +	MUX_VAL(CP(GPMC_D5),		(IEN  | PTD | DIS | M0)) /*GPMC_D5*/\ +	MUX_VAL(CP(GPMC_D6),		(IEN  | PTD | DIS | M0)) /*GPMC_D6*/\ +	MUX_VAL(CP(GPMC_D7),		(IEN  | PTD | DIS | M0)) /*GPMC_D7*/\ +	MUX_VAL(CP(GPMC_D8),		(IEN  | PTD | DIS | M0)) /*GPMC_D8*/\ +	MUX_VAL(CP(GPMC_D9),		(IEN  | PTD | DIS | M0)) /*GPMC_D9*/\ +	MUX_VAL(CP(GPMC_D10),		(IEN  | PTD | DIS | M0)) /*GPMC_D10*/\ +	MUX_VAL(CP(GPMC_D11),		(IEN  | PTD | DIS | M0)) /*GPMC_D11*/\ +	MUX_VAL(CP(GPMC_D12),		(IEN  | PTD | DIS | M0)) /*GPMC_D12*/\ +	MUX_VAL(CP(GPMC_D13),		(IEN  | PTD | DIS | M0)) /*GPMC_D13*/\ +	MUX_VAL(CP(GPMC_D14),		(IEN  | PTD | DIS | M0)) /*GPMC_D14*/\ +	MUX_VAL(CP(GPMC_D15),		(IEN  | PTD | DIS | M0)) /*GPMC_D15*/\ +	MUX_VAL(CP(GPMC_NCS0),		(IDIS | PTU | EN  | M0)) /*GPMC_nCS0*/\ +	MUX_VAL(CP(GPMC_NCS1),		(IDIS | PTU | EN  | M0)) /*GPMC_nCS1*/\ +	MUX_VAL(CP(GPMC_NCS2),		(IDIS | PTU | EN  | M0)) /*GPMC_nCS2*/\ +	MUX_VAL(CP(GPMC_NCS3),		(IDIS | PTU | EN  | M0)) /*GPMC_nCS3*/\ +	MUX_VAL(CP(GPMC_NCS4),		(IDIS | PTU | EN  | M0)) /*GPMC_nCS4*/\ +	MUX_VAL(CP(GPMC_NCS5),		(IDIS | PTD | DIS | M0)) /*GPMC_nCS5*/\ +	MUX_VAL(CP(GPMC_NCS6),		(IEN  | PTD | DIS | M1)) /*SYS_nDMA_REQ2*/\ +	MUX_VAL(CP(GPMC_NCS7),		(IEN  | PTU | EN  | M1)) /*SYS_nDMA_REQ3*/\ +	MUX_VAL(CP(GPMC_NBE1),		(IEN  | PTD | DIS | M0)) /*GPMC_nBE1*/\ +	MUX_VAL(CP(GPMC_WAIT2),		(IEN  | PTU | EN  | M0)) /*GPMC_WAIT2*/\ +	MUX_VAL(CP(GPMC_WAIT3),		(IEN  | PTU | EN  | M0)) /*GPMC_WAIT3*/\ +	MUX_VAL(CP(GPMC_CLK),		(IDIS | PTD | DIS | M0)) /*GPMC_CLK*/\ +	MUX_VAL(CP(GPMC_NADV_ALE),	(IDIS | PTD | DIS | M0)) /*GPMC_nADV_ALE*/\ +	MUX_VAL(CP(GPMC_NOE),		(IDIS | PTD | DIS | M0)) /*GPMC_nOE*/\ +	MUX_VAL(CP(GPMC_NWE),		(IDIS | PTD | DIS | M0)) /*GPMC_nWE*/\ +	MUX_VAL(CP(GPMC_NBE0_CLE),	(IDIS | PTD | DIS | M0)) /*GPMC_nBE0_CLE*/\ +	MUX_VAL(CP(GPMC_NWP),		(IEN  | PTD | DIS | M0)) /*GPMC_nWP*/\ +	MUX_VAL(CP(GPMC_WAIT0),		(IEN  | PTU | EN  | M0)) /*GPMC_WAIT0*/\ +	MUX_VAL(CP(GPMC_WAIT1),		(IEN  | PTU | EN  | M0)) /*GPMC_WAIT1*/\ + /*DSS*/\ +	MUX_VAL(CP(DSS_PCLK),		(IDIS | PTD | DIS | M0)) /*DSS_PCLK*/\ +	MUX_VAL(CP(DSS_HSYNC),		(IDIS | PTD | DIS | M0)) /*DSS_HSYNC*/\ +	MUX_VAL(CP(DSS_VSYNC),		(IDIS | PTD | DIS | M0)) /*DSS_VSYNC*/\ +	MUX_VAL(CP(DSS_ACBIAS),		(IDIS | PTD | DIS | M0)) /*DSS_ACBIAS*/\ +	MUX_VAL(CP(DSS_DATA0),		(IDIS | PTD | DIS | M0)) /*DSS_DATA0*/\ +	MUX_VAL(CP(DSS_DATA1),		(IDIS | PTD | DIS | M0)) /*DSS_DATA1*/\ +	MUX_VAL(CP(DSS_DATA2),		(IDIS | PTD | DIS | M0)) /*DSS_DATA2*/\ +	MUX_VAL(CP(DSS_DATA3),		(IDIS | PTD | DIS | M0)) /*DSS_DATA3*/\ +	MUX_VAL(CP(DSS_DATA4),		(IDIS | PTD | DIS | M0)) /*DSS_DATA4*/\ +	MUX_VAL(CP(DSS_DATA5),		(IDIS | PTD | DIS | M0)) /*DSS_DATA5*/\ +	MUX_VAL(CP(DSS_DATA6),		(IDIS | PTD | DIS | M0)) /*DSS_DATA6*/\ +	MUX_VAL(CP(DSS_DATA7),		(IDIS | PTD | DIS | M0)) /*DSS_DATA7*/\ +	MUX_VAL(CP(DSS_DATA8),		(IDIS | PTD | DIS | M0)) /*DSS_DATA8*/\ +	MUX_VAL(CP(DSS_DATA9),		(IDIS | PTD | DIS | M0)) /*DSS_DATA9*/\ +	MUX_VAL(CP(DSS_DATA10),		(IDIS | PTD | DIS | M0)) /*DSS_DATA10*/\ +	MUX_VAL(CP(DSS_DATA11),		(IDIS | PTD | DIS | M0)) /*DSS_DATA11*/\ +	MUX_VAL(CP(DSS_DATA12),		(IDIS | PTD | DIS | M0)) /*DSS_DATA12*/\ +	MUX_VAL(CP(DSS_DATA13),		(IDIS | PTD | DIS | M0)) /*DSS_DATA13*/\ +	MUX_VAL(CP(DSS_DATA14),		(IDIS | PTD | DIS | M0)) /*DSS_DATA14*/\ +	MUX_VAL(CP(DSS_DATA15),		(IDIS | PTD | DIS | M0)) /*DSS_DATA15*/\ +	MUX_VAL(CP(DSS_DATA16),		(IDIS | PTD | DIS | M0)) /*DSS_DATA16*/\ +	MUX_VAL(CP(DSS_DATA17),		(IDIS | PTD | DIS | M0)) /*DSS_DATA17*/\ +	MUX_VAL(CP(DSS_DATA18),		(IDIS | PTD | DIS | M0)) /*DSS_DATA18*/\ +	MUX_VAL(CP(DSS_DATA19),		(IDIS | PTD | DIS | M0)) /*DSS_DATA19*/\ +	MUX_VAL(CP(DSS_DATA20),		(IDIS | PTD | DIS | M0)) /*DSS_DATA20*/\ +	MUX_VAL(CP(DSS_DATA21),		(IDIS | PTD | DIS | M0)) /*DSS_DATA21*/\ +	MUX_VAL(CP(DSS_DATA22),		(IDIS | PTD | DIS | M0)) /*DSS_DATA22*/\ +	MUX_VAL(CP(DSS_DATA23),		(IDIS | PTD | DIS | M0)) /*DSS_DATA23*/\ + /*CAMERA*/\ +	MUX_VAL(CP(CAM_HS),		(IEN  | PTU | EN  | M0)) /*CAM_HS */\ +	MUX_VAL(CP(CAM_VS),		(IEN  | PTU | EN  | M0)) /*CAM_VS */\ +	MUX_VAL(CP(CAM_XCLKA),		(IDIS | PTD | DIS | M0)) /*CAM_XCLKA*/\ +	MUX_VAL(CP(CAM_PCLK),		(IEN  | PTU | EN  | M0)) /*CAM_PCLK*/\ +	MUX_VAL(CP(CAM_FLD),		(IDIS | PTD | DIS | M4)) /*GPIO_98*/\ +	MUX_VAL(CP(CAM_D0),		(IEN  | PTD | DIS | M0)) /*CAM_D0*/\ +	MUX_VAL(CP(CAM_D1),		(IEN  | PTD | DIS | M0)) /*CAM_D1*/\ +	MUX_VAL(CP(CAM_D2),		(IEN  | PTD | DIS | M0)) /*CAM_D2*/\ +	MUX_VAL(CP(CAM_D3),		(IEN  | PTD | DIS | M0)) /*CAM_D3*/\ +	MUX_VAL(CP(CAM_D4),		(IEN  | PTD | DIS | M0)) /*CAM_D4*/\ +	MUX_VAL(CP(CAM_D5),		(IEN  | PTD | DIS | M0)) /*CAM_D5*/\ +	MUX_VAL(CP(CAM_D6),		(IEN  | PTD | DIS | M0)) /*CAM_D6*/\ +	MUX_VAL(CP(CAM_D7),		(IEN  | PTD | DIS | M0)) /*CAM_D7*/\ +	MUX_VAL(CP(CAM_D8),		(IEN  | PTD | DIS | M0)) /*CAM_D8*/\ +	MUX_VAL(CP(CAM_D9),		(IEN  | PTD | DIS | M0)) /*CAM_D9*/\ +	MUX_VAL(CP(CAM_D10),		(IEN  | PTD | DIS | M0)) /*CAM_D10*/\ +	MUX_VAL(CP(CAM_D11),		(IEN  | PTD | DIS | M0)) /*CAM_D11*/\ +	MUX_VAL(CP(CAM_XCLKB),		(IDIS | PTD | DIS | M0)) /*CAM_XCLKB*/\ +	MUX_VAL(CP(CAM_WEN),		(IEN  | PTD | DIS | M4)) /*GPIO_167*/\ +	MUX_VAL(CP(CAM_STROBE),		(IDIS | PTD | DIS | M0)) /*CAM_STROBE*/\ +	MUX_VAL(CP(CSI2_DX0),		(IEN  | PTD | DIS | M0)) /*CSI2_DX0*/\ +	MUX_VAL(CP(CSI2_DY0),		(IEN  | PTD | DIS | M0)) /*CSI2_DY0*/\ +	MUX_VAL(CP(CSI2_DX1),		(IEN  | PTD | DIS | M0)) /*CSI2_DX1*/\ +	MUX_VAL(CP(CSI2_DY1),		(IEN  | PTD | DIS | M0)) /*CSI2_DY1*/\ + /*Audio Interface */\ +	MUX_VAL(CP(MCBSP2_FSX),		(IEN  | PTD | DIS | M0)) /*McBSP2_FSX*/\ +	MUX_VAL(CP(MCBSP2_CLKX),	(IEN  | PTD | DIS | M0)) /*McBSP2_CLKX*/\ +	MUX_VAL(CP(MCBSP2_DR),		(IEN  | PTD | DIS | M0)) /*McBSP2_DR*/\ +	MUX_VAL(CP(MCBSP2_DX),		(IDIS | PTD | DIS | M0)) /*McBSP2_DX*/\ + /*Expansion card */\ +	MUX_VAL(CP(MMC1_CLK),		(IDIS | PTU | EN  | M0)) /*MMC1_CLK*/\ +	MUX_VAL(CP(MMC1_CMD),		(IEN  | PTU | EN  | M0)) /*MMC1_CMD*/\ +	MUX_VAL(CP(MMC1_DAT0),		(IEN  | PTU | EN  | M0)) /*MMC1_DAT0*/\ +	MUX_VAL(CP(MMC1_DAT1),		(IEN  | PTU | EN  | M0)) /*MMC1_DAT1*/\ +	MUX_VAL(CP(MMC1_DAT2),		(IEN  | PTU | EN  | M0)) /*MMC1_DAT2*/\ +	MUX_VAL(CP(MMC1_DAT3),		(IEN  | PTU | EN  | M0)) /*MMC1_DAT3*/\ +	MUX_VAL(CP(MMC1_DAT4),		(IEN  | PTU | EN  | M0)) /*MMC1_DAT4*/\ +	MUX_VAL(CP(MMC1_DAT5),		(IEN  | PTU | EN  | M0)) /*MMC1_DAT5*/\ +	MUX_VAL(CP(MMC1_DAT6),		(IEN  | PTU | EN  | M0)) /*MMC1_DAT6*/\ +	MUX_VAL(CP(MMC1_DAT7),		(IEN  | PTU | EN  | M0)) /*MMC1_DAT7*/\ + /*Wireless LAN */\ +	MUX_VAL(CP(MMC2_CLK),		(IEN  | PTU | EN  | M4)) /*GPIO_130*/\ +	MUX_VAL(CP(MMC2_CMD),		(IEN  | PTU | EN  | M4)) /*GPIO_131*/\ +	MUX_VAL(CP(MMC2_DAT0),		(IEN  | PTU | EN  | M4)) /*GPIO_132*/\ +	MUX_VAL(CP(MMC2_DAT1),		(IEN  | PTU | EN  | M4)) /*GPIO_133*/\ +	MUX_VAL(CP(MMC2_DAT2),		(IEN  | PTU | EN  | M4)) /*GPIO_134*/\ +	MUX_VAL(CP(MMC2_DAT3),		(IEN  | PTU | EN  | M4)) /*GPIO_135*/\ +	MUX_VAL(CP(MMC2_DAT4),		(IEN  | PTU | EN  | M4)) /*GPIO_136*/\ +	MUX_VAL(CP(MMC2_DAT5),		(IEN  | PTU | EN  | M4)) /*GPIO_137*/\ +	MUX_VAL(CP(MMC2_DAT6),		(IEN  | PTU | EN  | M4)) /*GPIO_138*/\ +	MUX_VAL(CP(MMC2_DAT7),		(IEN  | PTU | EN  | M4)) /*GPIO_139*/\ + /*Bluetooth*/\ +	MUX_VAL(CP(MCBSP3_DX),		(IEN  | PTD | DIS | M1)) /*UART2_CTS*/\ +	MUX_VAL(CP(MCBSP3_DR),		(IDIS | PTD | DIS | M1)) /*UART2_RTS*/\ +	MUX_VAL(CP(MCBSP3_CLKX),	(IDIS | PTD | DIS | M1)) /*UART2_TX*/\ +	MUX_VAL(CP(MCBSP3_FSX),		(IEN  | PTD | DIS | M1)) /*UART2_RX*/\ +	MUX_VAL(CP(UART2_CTS),		(IEN  | PTD | DIS | M4)) /*GPIO_144*/\ +	MUX_VAL(CP(UART2_RTS),		(IEN  | PTD | DIS | M4)) /*GPIO_145*/\ +	MUX_VAL(CP(UART2_TX),		(IEN  | PTD | DIS | M4)) /*GPIO_146*/\ +	MUX_VAL(CP(UART2_RX),		(IEN  | PTD | DIS | M4)) /*GPIO_147*/\ + /*Modem Interface */\ +	MUX_VAL(CP(UART1_TX),		(IDIS | PTD | DIS | M0)) /*UART1_TX*/\ +	MUX_VAL(CP(UART1_RTS),		(IDIS | PTD | DIS | M4)) /*GPIO_149*/ \ +	MUX_VAL(CP(UART1_CTS),		(IDIS | PTD | DIS | M4)) /*GPIO_150*/ \ +	MUX_VAL(CP(UART1_RX),		(IEN  | PTD | DIS | M0)) /*UART1_RX*/\ +	MUX_VAL(CP(MCBSP4_CLKX),	(IEN  | PTD | DIS | M1)) /*SSI1_DAT_RX*/\ +	MUX_VAL(CP(MCBSP4_DR),		(IEN  | PTD | DIS | M1)) /*SSI1_FLAG_RX*/\ +	MUX_VAL(CP(MCBSP4_DX),		(IEN  | PTD | DIS | M1)) /*SSI1_RDY_RX*/\ +	MUX_VAL(CP(MCBSP4_FSX),		(IEN  | PTD | DIS | M1)) /*SSI1_WAKE*/\ +	MUX_VAL(CP(MCBSP1_CLKR),	(IDIS | PTD | DIS | M4)) /*GPIO_156*/\ +	MUX_VAL(CP(MCBSP1_FSR),		(IDIS | PTU | EN  | M4)) /*GPIO_157*/\ +	MUX_VAL(CP(MCBSP1_DX),		(IDIS | PTD | DIS | M4)) /*GPIO_158*/\ +	MUX_VAL(CP(MCBSP1_DR),		(IDIS | PTD | DIS | M4)) /*GPIO_159*/\ +	MUX_VAL(CP(MCBSP_CLKS),		(IEN  | PTU | DIS | M0)) /*McBSP_CLKS*/\ +	MUX_VAL(CP(MCBSP1_FSX),		(IDIS | PTD | DIS | M4)) /*GPIO_161*/\ +	MUX_VAL(CP(MCBSP1_CLKX),	(IDIS | PTD | DIS | M4)) /*GPIO_162*/\ + /*Serial Interface*/\ +	MUX_VAL(CP(UART3_CTS_RCTX),	(IEN  | PTD | EN  | M0)) /*UART3_CTS_RCTX*/\ +	MUX_VAL(CP(UART3_RTS_SD),	(IDIS | PTD | DIS | M0)) /*UART3_RTS_SD */\ +	MUX_VAL(CP(UART3_RX_IRRX),	(IEN  | PTD | DIS | M0)) /*UART3_RX_IRRX*/\ +	MUX_VAL(CP(UART3_TX_IRTX),	(IDIS | PTD | DIS | M0)) /*UART3_TX_IRTX*/\ +	MUX_VAL(CP(HSUSB0_CLK),		(IEN  | PTD | DIS | M0)) /*HSUSB0_CLK*/\ +	MUX_VAL(CP(HSUSB0_STP),		(IDIS | PTU | EN  | M0)) /*HSUSB0_STP*/\ +	MUX_VAL(CP(HSUSB0_DIR),		(IEN  | PTD | DIS | M0)) /*HSUSB0_DIR*/\ +	MUX_VAL(CP(HSUSB0_NXT),		(IEN  | PTD | DIS | M0)) /*HSUSB0_NXT*/\ +	MUX_VAL(CP(HSUSB0_DATA0),	(IEN  | PTD | DIS | M0)) /*HSUSB0_DATA0*/\ +	MUX_VAL(CP(HSUSB0_DATA1),	(IEN  | PTD | DIS | M0)) /*HSUSB0_DATA1*/\ +	MUX_VAL(CP(HSUSB0_DATA2),	(IEN  | PTD | DIS | M0)) /*HSUSB0_DATA2*/\ +	MUX_VAL(CP(HSUSB0_DATA3),	(IEN  | PTD | DIS | M0)) /*HSUSB0_DATA3*/\ +	MUX_VAL(CP(HSUSB0_DATA4),	(IEN  | PTD | DIS | M0)) /*HSUSB0_DATA4*/\ +	MUX_VAL(CP(HSUSB0_DATA5),	(IEN  | PTD | DIS | M0)) /*HSUSB0_DATA5*/\ +	MUX_VAL(CP(HSUSB0_DATA6),	(IEN  | PTD | DIS | M0)) /*HSUSB0_DATA6*/\ +	MUX_VAL(CP(HSUSB0_DATA7),	(IEN  | PTD | DIS | M0)) /*HSUSB0_DATA7*/\ +	MUX_VAL(CP(I2C1_SCL),		(IEN  | PTU | EN  | M0)) /*I2C1_SCL*/\ +	MUX_VAL(CP(I2C1_SDA),		(IEN  | PTU | EN  | M0)) /*I2C1_SDA*/\ +	MUX_VAL(CP(I2C2_SCL),		(IEN  | PTU | EN  | M0)) /*I2C2_SCL*/\ +	MUX_VAL(CP(I2C2_SDA),		(IEN  | PTU | EN  | M0)) /*I2C2_SDA*/\ +	MUX_VAL(CP(I2C3_SCL),		(IEN  | PTU | EN  | M0)) /*I2C3_SCL*/\ +	MUX_VAL(CP(I2C3_SDA),		(IEN  | PTU | EN  | M0)) /*I2C3_SDA*/\ +	MUX_VAL(CP(I2C4_SCL),		(IEN  | PTU | EN  | M0)) /*I2C4_SCL*/\ +	MUX_VAL(CP(I2C4_SDA),		(IEN  | PTU | EN  | M0)) /*I2C4_SDA*/\ +	MUX_VAL(CP(HDQ_SIO),		(IDIS | PTU | EN  | M4)) /*GPIO_170*/\ +	MUX_VAL(CP(MCSPI1_CLK),		(IEN  | PTU | EN  | M4)) /*GPIO_171*/\ +	MUX_VAL(CP(MCSPI1_SIMO),	(IEN  | PTU | EN  | M4)) /*GPIO_172*/\ +	MUX_VAL(CP(MCSPI1_SOMI),	(IEN  | PTU | EN  | M4)) /*GPIO_173*/\ +	MUX_VAL(CP(MCSPI1_CS0),		(IEN  | PTD | EN  | M0)) /*McSPI1_CS0*/\ +	MUX_VAL(CP(MCSPI1_CS1),		(IDIS | PTD | EN  | M0)) /*McSPI1_CS1*/\ +	MUX_VAL(CP(MCSPI1_CS2),		(IDIS | PTD | DIS | M4)) /*GPIO_176*/\ + /* USB EHCI (port 2) */\ +	MUX_VAL(CP(MCSPI1_CS3),		(IEN  | PTD | EN  | M3)) /*HSUSB2_DATA2*/\ +	MUX_VAL(CP(MCSPI2_CLK),		(IEN  | PTD | EN  | M3)) /*HSUSB2_DATA7*/\ +	MUX_VAL(CP(MCSPI2_SIMO),	(IEN  | PTD | EN  | M3)) /*HSUSB2_DATA4*/\ +	MUX_VAL(CP(MCSPI2_SOMI),	(IEN  | PTD | EN  | M3)) /*HSUSB2_DATA5*/\ +	MUX_VAL(CP(MCSPI2_CS0),		(IEN  | PTD | EN  | M3)) /*HSUSB2_DATA6*/\ +	MUX_VAL(CP(MCSPI2_CS1),		(IEN  | PTD | EN  | M3)) /*HSUSB2_DATA3*/\ +	MUX_VAL(CP(ETK_D10_ES2),	(IDIS | PTD | DIS | M3)) /*HSUSB2_CLK*/\ +	MUX_VAL(CP(ETK_D11_ES2),	(IDIS | PTD | DIS | M3)) /*HSUSB2_STP*/\ +	MUX_VAL(CP(ETK_D12_ES2),	(IEN  | PTD | EN  | M3)) /*HSUSB2_DIR*/\ +	MUX_VAL(CP(ETK_D13_ES2),	(IEN  | PTD | EN  | M3)) /*HSUSB2_NXT*/\ +	MUX_VAL(CP(ETK_D14_ES2),	(IEN  | PTD | EN  | M3)) /*HSUSB2_DATA0*/\ +	MUX_VAL(CP(ETK_D15_ES2),	(IEN  | PTD | EN  | M3)) /*HSUSB2_DATA1*/\ + /*Control and debug */\ +	MUX_VAL(CP(SYS_32K),		(IEN  | PTD | DIS | M0)) /*SYS_32K*/\ +	MUX_VAL(CP(SYS_CLKREQ),		(IEN  | PTD | DIS | M0)) /*SYS_CLKREQ*/\ +	MUX_VAL(CP(SYS_NIRQ),		(IEN  | PTU | EN  | M0)) /*SYS_nIRQ*/\ +	MUX_VAL(CP(SYS_BOOT0),		(IEN  | PTD | DIS | M4)) /*GPIO_2*/\ +	MUX_VAL(CP(SYS_BOOT1),		(IEN  | PTD | DIS | M4)) /*GPIO_3*/\ +	MUX_VAL(CP(SYS_BOOT2),		(IEN  | PTD | DIS | M4)) /*GPIO_4 - MMC1_WP*/\ +	MUX_VAL(CP(SYS_BOOT3),		(IEN  | PTD | DIS | M4)) /*GPIO_5*/\ +	MUX_VAL(CP(SYS_BOOT4),		(IEN  | PTD | DIS | M4)) /*GPIO_6*/\ +	MUX_VAL(CP(SYS_BOOT5),		(IEN  | PTD | DIS | M4)) /*GPIO_7*/\ +	MUX_VAL(CP(SYS_BOOT6),		(IDIS | PTD | DIS | M4)) /*GPIO_8*/ \ +	MUX_VAL(CP(SYS_OFF_MODE),	(IEN  | PTD | DIS | M0)) /*SYS_OFF_MODE*/\ +	MUX_VAL(CP(SYS_CLKOUT1),	(IEN  | PTD | DIS | M0)) /*SYS_CLKOUT1*/\ +	MUX_VAL(CP(SYS_CLKOUT2),	(IEN  | PTU | EN  | M4)) /*GPIO_186*/\ +	MUX_VAL(CP(ETK_CLK_ES2),	(IDIS | PTU | EN  | M3)) /*HSUSB1_STP*/\ +	MUX_VAL(CP(ETK_CTL_ES2),	(IDIS | PTU | DIS | M3)) /*HSUSB1_CLK*/\ +	MUX_VAL(CP(ETK_D0_ES2),		(IEN  | PTU | DIS | M3)) /*HSUSB1_DATA0*/\ +	MUX_VAL(CP(ETK_D1_ES2),		(IEN  | PTU | DIS | M3)) /*HSUSB1_DATA1*/\ +	MUX_VAL(CP(ETK_D2_ES2),		(IEN  | PTU | DIS | M3)) /*HSUSB1_DATA2*/\ +	MUX_VAL(CP(ETK_D3_ES2),		(IEN  | PTU | DIS | M3)) /*HSUSB1_DATA7*/\ +	MUX_VAL(CP(ETK_D4_ES2),		(IEN  | PTU | DIS | M3)) /*HSUSB1_DATA4*/\ +	MUX_VAL(CP(ETK_D5_ES2),		(IEN  | PTU | DIS | M3)) /*HSUSB1_DATA5*/\ +	MUX_VAL(CP(ETK_D6_ES2),		(IEN  | PTU | DIS | M3)) /*HSUSB1_DATA6*/\ +	MUX_VAL(CP(ETK_D7_ES2),		(IEN  | PTU | DIS | M3)) /*HSUSB1_DATA3*/\ +	MUX_VAL(CP(ETK_D8_ES2),		(IEN  | PTU | DIS | M3)) /*HSUSB1_DIR*/\ +	MUX_VAL(CP(ETK_D9_ES2),		(IEN  | PTU | DIS | M3)) /*HSUSB1_NXT*/\ +	MUX_VAL(CP(D2D_MCAD1),		(IEN  | PTD | EN  | M0)) /*d2d_mcad1*/\ +	MUX_VAL(CP(D2D_MCAD2),		(IEN  | PTD | EN  | M0)) /*d2d_mcad2*/\ +	MUX_VAL(CP(D2D_MCAD3),		(IEN  | PTD | EN  | M0)) /*d2d_mcad3*/\ +	MUX_VAL(CP(D2D_MCAD4),		(IEN  | PTD | EN  | M0)) /*d2d_mcad4*/\ +	MUX_VAL(CP(D2D_MCAD5),		(IEN  | PTD | EN  | M0)) /*d2d_mcad5*/\ +	MUX_VAL(CP(D2D_MCAD6),		(IEN  | PTD | EN  | M0)) /*d2d_mcad6*/\ +	MUX_VAL(CP(D2D_MCAD7),		(IEN  | PTD | EN  | M0)) /*d2d_mcad7*/\ +	MUX_VAL(CP(D2D_MCAD8),		(IEN  | PTD | EN  | M0)) /*d2d_mcad8*/\ +	MUX_VAL(CP(D2D_MCAD9),		(IEN  | PTD | EN  | M0)) /*d2d_mcad9*/\ +	MUX_VAL(CP(D2D_MCAD10),		(IEN  | PTD | EN  | M0)) /*d2d_mcad10*/\ +	MUX_VAL(CP(D2D_MCAD11),		(IEN  | PTD | EN  | M0)) /*d2d_mcad11*/\ +	MUX_VAL(CP(D2D_MCAD12),		(IEN  | PTD | EN  | M0)) /*d2d_mcad12*/\ +	MUX_VAL(CP(D2D_MCAD13),		(IEN  | PTD | EN  | M0)) /*d2d_mcad13*/\ +	MUX_VAL(CP(D2D_MCAD14),		(IEN  | PTD | EN  | M0)) /*d2d_mcad14*/\ +	MUX_VAL(CP(D2D_MCAD15),		(IEN  | PTD | EN  | M0)) /*d2d_mcad15*/\ +	MUX_VAL(CP(D2D_MCAD16),		(IEN  | PTD | EN  | M0)) /*d2d_mcad16*/\ +	MUX_VAL(CP(D2D_MCAD17),		(IEN  | PTD | EN  | M0)) /*d2d_mcad17*/\ +	MUX_VAL(CP(D2D_MCAD18),		(IEN  | PTD | EN  | M0)) /*d2d_mcad18*/\ +	MUX_VAL(CP(D2D_MCAD19),		(IEN  | PTD | EN  | M0)) /*d2d_mcad19*/\ +	MUX_VAL(CP(D2D_MCAD20),		(IEN  | PTD | EN  | M0)) /*d2d_mcad20*/\ +	MUX_VAL(CP(D2D_MCAD21),		(IEN  | PTD | EN  | M0)) /*d2d_mcad21*/\ +	MUX_VAL(CP(D2D_MCAD22),		(IEN  | PTD | EN  | M0)) /*d2d_mcad22*/\ +	MUX_VAL(CP(D2D_MCAD23),		(IEN  | PTD | EN  | M0)) /*d2d_mcad23*/\ +	MUX_VAL(CP(D2D_MCAD24),		(IEN  | PTD | EN  | M0)) /*d2d_mcad24*/\ +	MUX_VAL(CP(D2D_MCAD25),		(IEN  | PTD | EN  | M0)) /*d2d_mcad25*/\ +	MUX_VAL(CP(D2D_MCAD26),		(IEN  | PTD | EN  | M0)) /*d2d_mcad26*/\ +	MUX_VAL(CP(D2D_MCAD27),		(IEN  | PTD | EN  | M0)) /*d2d_mcad27*/\ +	MUX_VAL(CP(D2D_MCAD28),		(IEN  | PTD | EN  | M0)) /*d2d_mcad28*/\ +	MUX_VAL(CP(D2D_MCAD29),		(IEN  | PTD | EN  | M0)) /*d2d_mcad29*/\ +	MUX_VAL(CP(D2D_MCAD30),		(IEN  | PTD | EN  | M0)) /*d2d_mcad30*/\ +	MUX_VAL(CP(D2D_MCAD31),		(IEN  | PTD | EN  | M0)) /*d2d_mcad31*/\ +	MUX_VAL(CP(D2D_MCAD32),		(IEN  | PTD | EN  | M0)) /*d2d_mcad32*/\ +	MUX_VAL(CP(D2D_MCAD33),		(IEN  | PTD | EN  | M0)) /*d2d_mcad33*/\ +	MUX_VAL(CP(D2D_MCAD34),		(IEN  | PTD | EN  | M0)) /*d2d_mcad34*/\ +	MUX_VAL(CP(D2D_MCAD35),		(IEN  | PTD | EN  | M0)) /*d2d_mcad35*/\ +	MUX_VAL(CP(D2D_MCAD36),		(IEN  | PTD | EN  | M0)) /*d2d_mcad36*/\ +	MUX_VAL(CP(D2D_CLK26MI),	(IEN  | PTD | DIS | M0)) /*d2d_clk26mi*/\ +	MUX_VAL(CP(D2D_NRESPWRON),	(IEN  | PTD | EN  | M0)) /*d2d_nrespwron*/\ +	MUX_VAL(CP(D2D_NRESWARM),	(IEN  | PTU | EN  | M0)) /*d2d_nreswarm */\ +	MUX_VAL(CP(D2D_ARM9NIRQ),	(IEN  | PTD | DIS | M0)) /*d2d_arm9nirq */\ +	MUX_VAL(CP(D2D_UMA2P6FIQ),	(IEN  | PTD | DIS | M0)) /*d2d_uma2p6fiq*/\ +	MUX_VAL(CP(D2D_SPINT),		(IEN  | PTD | EN  | M0)) /*d2d_spint*/\ +	MUX_VAL(CP(D2D_FRINT),		(IEN  | PTD | EN  | M0)) /*d2d_frint*/\ +	MUX_VAL(CP(D2D_DMAREQ0),	(IEN  | PTD | DIS | M0)) /*d2d_dmareq0*/\ +	MUX_VAL(CP(D2D_DMAREQ1),	(IEN  | PTD | DIS | M0)) /*d2d_dmareq1*/\ +	MUX_VAL(CP(D2D_DMAREQ2),	(IEN  | PTD | DIS | M0)) /*d2d_dmareq2*/\ +	MUX_VAL(CP(D2D_DMAREQ3),	(IEN  | PTD | DIS | M0)) /*d2d_dmareq3*/\ +	MUX_VAL(CP(D2D_N3GTRST),	(IEN  | PTD | DIS | M0)) /*d2d_n3gtrst*/\ +	MUX_VAL(CP(D2D_N3GTDI),		(IEN  | PTD | DIS | M0)) /*d2d_n3gtdi*/\ +	MUX_VAL(CP(D2D_N3GTDO),		(IEN  | PTD | DIS | M0)) /*d2d_n3gtdo*/\ +	MUX_VAL(CP(D2D_N3GTMS),		(IEN  | PTD | DIS | M0)) /*d2d_n3gtms*/\ +	MUX_VAL(CP(D2D_N3GTCK),		(IEN  | PTD | DIS | M0)) /*d2d_n3gtck*/\ +	MUX_VAL(CP(D2D_N3GRTCK),	(IEN  | PTD | DIS | M0)) /*d2d_n3grtck*/\ +	MUX_VAL(CP(D2D_MSTDBY),		(IEN  | PTU | EN  | M0)) /*d2d_mstdby*/\ +	MUX_VAL(CP(D2D_SWAKEUP),	(IEN  | PTD | EN  | M0)) /*d2d_swakeup*/\ +	MUX_VAL(CP(D2D_IDLEREQ),	(IEN  | PTD | DIS | M0)) /*d2d_idlereq*/\ +	MUX_VAL(CP(D2D_IDLEACK),	(IEN  | PTU | EN  | M0)) /*d2d_idleack*/\ +	MUX_VAL(CP(D2D_MWRITE),		(IEN  | PTD | DIS | M0)) /*d2d_mwrite*/\ +	MUX_VAL(CP(D2D_SWRITE),		(IEN  | PTD | DIS | M0)) /*d2d_swrite*/\ +	MUX_VAL(CP(D2D_MREAD),		(IEN  | PTD | DIS | M0)) /*d2d_mread*/\ +	MUX_VAL(CP(D2D_SREAD),		(IEN  | PTD | DIS | M0)) /*d2d_sread*/\ +	MUX_VAL(CP(D2D_MBUSFLAG),	(IEN  | PTD | DIS | M0)) /*d2d_mbusflag*/\ +	MUX_VAL(CP(D2D_SBUSFLAG),	(IEN  | PTD | DIS | M0)) /*d2d_sbusflag*/\ +	MUX_VAL(CP(SDRC_CKE0),		(IDIS | PTU | EN  | M0)) /*sdrc_cke0*/\ +	MUX_VAL(CP(SDRC_CKE1),		(IDIS | PTU | EN  | M0)) /*sdrc_cke1*/ + +#define MUX_BEAGLE_C() \ +	MUX_VAL(CP(MCBSP3_DX),		(IEN  | PTD | DIS | M4)) /*GPIO_140*/\ +	MUX_VAL(CP(MCBSP3_DR),		(IEN  | PTD | DIS | M4)) /*GPIO_142*/\ +	MUX_VAL(CP(MCBSP3_CLKX),	(IEN  | PTD | DIS | M4)) /*GPIO_141*/\ +	MUX_VAL(CP(UART2_CTS),		(IEN  | PTU | EN  | M0)) /*UART2_CTS*/\ +	MUX_VAL(CP(UART2_RTS),		(IDIS | PTD | DIS | M0)) /*UART2_RTS*/\ +	MUX_VAL(CP(UART2_TX),		(IDIS | PTD | DIS | M0)) /*UART2_TX*/\ +	MUX_VAL(CP(UART2_RX),		(IDIS | PTU | EN  | M4)) /*GPIO_147*/ + +#define MUX_BEAGLE_XM() \ +	MUX_VAL(CP(GPMC_NCS5),		(IDIS | PTD | EN  | M4)) /*GPIO_56*/\ +	MUX_VAL(CP(GPMC_WAIT0),		(IDIS | PTU | EN  | M4)) /*GPIO_63*/\ +	MUX_VAL(CP(MMC1_DAT7),		(IDIS | PTU | EN  | M4)) /*GPIO_129*/\ +	MUX_VAL(CP(HDQ_SIO),		(IDIS | PTU | EN  | M4)) /*GPIO_170*/\ +	MUX_VAL(CP(MCBSP3_DX),		(IEN  | PTD | DIS | M4)) /*GPIO_140*/\ +	MUX_VAL(CP(MCBSP3_DR),		(IEN  | PTD | DIS | M4)) /*GPIO_142*/\ +	MUX_VAL(CP(MCBSP3_CLKX),	(IEN  | PTD | DIS | M4)) /*GPIO_141*/\ +	MUX_VAL(CP(UART2_CTS),		(IEN  | PTU | EN  | M0)) /*UART2_CTS*/\ +	MUX_VAL(CP(UART2_RTS),		(IDIS | PTD | DIS | M0)) /*UART2_RTS*/\ +	MUX_VAL(CP(UART2_TX),		(IDIS | PTD | DIS | M0)) /*UART2_TX*/\ +	MUX_VAL(CP(DSS_DATA0),		(IDIS | PTD | DIS | M7)) /*safe_mode*/\ +	MUX_VAL(CP(DSS_DATA1),		(IDIS | PTD | DIS | M7)) /*safe_mode*/\ +	MUX_VAL(CP(DSS_DATA2),		(IDIS | PTD | DIS | M7)) /*safe_mode*/\ +	MUX_VAL(CP(DSS_DATA3),		(IDIS | PTD | DIS | M7)) /*safe_mode*/\ +	MUX_VAL(CP(DSS_DATA4),		(IDIS | PTD | DIS | M7)) /*safe_mode*/\ +	MUX_VAL(CP(DSS_DATA5),		(IDIS | PTD | DIS | M7)) /*safe_mode*/\ +	MUX_VAL(CP(DSS_DATA18),		(IDIS | PTD | DIS | M3)) /*DSS_DATA0*/\ +	MUX_VAL(CP(DSS_DATA19),		(IDIS | PTD | DIS | M3)) /*DSS_DATA1*/\ +	MUX_VAL(CP(DSS_DATA20),		(IDIS | PTD | DIS | M3)) /*DSS_DATA2*/\ +	MUX_VAL(CP(DSS_DATA21),		(IDIS | PTD | DIS | M3)) /*DSS_DATA3*/\ +	MUX_VAL(CP(DSS_DATA22),		(IDIS | PTD | DIS | M3)) /*DSS_DATA4*/\ +	MUX_VAL(CP(DSS_DATA23),		(IDIS | PTD | DIS | M3)) /*DSS_DATA5*/\ +	MUX_VAL(CP(SYS_BOOT0),		(IDIS | PTD | DIS | M3)) /*DSS_DATA18*/\ +	MUX_VAL(CP(SYS_BOOT1),		(IDIS | PTD | DIS | M3)) /*DSS_DATA19*/\ +	MUX_VAL(CP(SYS_BOOT3),		(IDIS | PTD | DIS | M3)) /*DSS_DATA20*/\ +	MUX_VAL(CP(SYS_BOOT4),		(IDIS | PTD | DIS | M3)) /*DSS_DATA21*/\ +	MUX_VAL(CP(SYS_BOOT5),		(IDIS | PTD | DIS | M3)) /*DSS_DATA22*/\ +	MUX_VAL(CP(SYS_BOOT6),		(IDIS | PTD | DIS | M3)) /*DSS_DATA23*/ + +#define MUX_TINCANTOOLS_ZIPPY() \ +	MUX_VAL(CP(MMC2_CLK),       (IEN  | PTU | EN  | M0)) /*MMC2_CLK*/\ +	MUX_VAL(CP(MMC2_CMD),       (IEN  | PTU | EN  | M0)) /*MMC2_CMD*/\ +	MUX_VAL(CP(MMC2_DAT0),      (IEN  | PTU | EN  | M0)) /*MMC2_DAT0*/\ +	MUX_VAL(CP(MMC2_DAT1),      (IEN  | PTU | EN  | M0)) /*MMC2_DAT1*/\ +	MUX_VAL(CP(MMC2_DAT2),      (IEN  | PTU | EN  | M0)) /*MMC2_DAT2*/\ +	MUX_VAL(CP(MMC2_DAT3),      (IEN  | PTU | EN  | M0)) /*MMC2_DAT3*/\ +	MUX_VAL(CP(MMC2_DAT4),      (IEN  | PTU | EN  | M1)) /*MMC2_DIR_DAT0*/\ +	MUX_VAL(CP(MMC2_DAT5),      (IEN  | PTU | EN  | M1)) /*MMC2_DIR_DAT1*/\ +	MUX_VAL(CP(MMC2_DAT6),      (IEN  | PTU | EN  | M1)) /*MMC2_DIR_CMD*/\ +	MUX_VAL(CP(MMC2_DAT7),      (IEN  | PTU | EN  | M1)) /*MMC2_CLKIN*/\ +	MUX_VAL(CP(MCBSP1_CLKR),    (IEN  | PTU | EN  | M1)) /*MCSPI4_CLK*/\ +	MUX_VAL(CP(MCBSP1_FSR),     (IEN  | PTU | EN  | M4)) /*GPIO_157*/\ +	MUX_VAL(CP(MCBSP1_DX),      (IEN  | PTD | EN  | M1)) /*MCSPI4_SIMO*/\ +	MUX_VAL(CP(MCBSP1_DR),      (IEN  | PTD | DIS | M1)) /*MCSPI4_SOMI*/\ +	MUX_VAL(CP(MCBSP1_FSX),     (IEN  | PTD | EN  | M1)) /*MCSPI4_CS0*/\ +	MUX_VAL(CP(MCBSP1_CLKX),    (IEN  | PTD | DIS | M4)) /*GPIO_162*/\ +	MUX_VAL(CP(MCBSP3_DX),      (IEN  | PTD | DIS | M4)) /*GPIO_140*/\ +	MUX_VAL(CP(MCBSP3_DR),      (IEN  | PTD | DIS | M4)) /*GPIO_142*/\ +	MUX_VAL(CP(MCBSP3_CLKX),    (IEN  | PTD | DIS | M4)) /*GPIO_141*/ + +#define MUX_TINCANTOOLS_TRAINER() \ +	MUX_VAL(CP(MMC2_CLK),       (IEN  | PTU | EN  | M4)) /*GPIO_130*/\ +	MUX_VAL(CP(MMC2_CMD),       (IEN  | PTU | EN  | M4)) /*GPIO_131*/\ +	MUX_VAL(CP(MMC2_DAT0),      (IEN  | PTU | EN  | M4)) /*GPIO_132*/\ +	MUX_VAL(CP(MMC2_DAT1),      (IEN  | PTU | EN  | M4)) /*GPIO_133*/\ +	MUX_VAL(CP(MMC2_DAT2),      (IEN  | PTU | EN  | M4)) /*GPIO_134*/\ +	MUX_VAL(CP(MMC2_DAT3),      (IEN  | PTU | EN  | M4)) /*GPIO_135*/\ +	MUX_VAL(CP(MMC2_DAT4),      (IEN  | PTU | EN  | M4)) /*GPIO_136*/\ +	MUX_VAL(CP(MMC2_DAT5),      (IEN  | PTU | EN  | M4)) /*GPIO_137*/\ +	MUX_VAL(CP(MMC2_DAT6),      (IEN  | PTU | EN  | M4)) /*GPIO_138*/\ +	MUX_VAL(CP(MMC2_DAT7),      (IEN  | PTU | EN  | M4)) /*GPIO_139*/\ +	MUX_VAL(CP(MCBSP3_DX),      (IEN  | PTU | EN  | M4)) /*GPIO_140*/\ +	MUX_VAL(CP(MCBSP3_CLKX),    (IEN  | PTU | EN  | M4)) /*GPIO_141*/\ +	MUX_VAL(CP(MCBSP1_CLKX),    (IEN  | PTU | EN  | M4)) /*GPIO_162*/ + +#define MUX_KBADC_BEAGLEFPGA() \ +	MUX_VAL(CP(MCBSP1_CLKR),    (IEN  | PTU | DIS | M1)) /*MCSPI4_CLK*/\ +	MUX_VAL(CP(MCBSP1_DX),      (IDIS | PTU | DIS | M1)) /*MCSPI4_SIMO*/\ +	MUX_VAL(CP(MCBSP1_DR),      (IEN  | PTU | EN  | M1)) /*MCSPI4_SOMI*/\ +	MUX_VAL(CP(MCBSP1_FSX),     (IDIS | PTU | DIS | M1)) /*MCSPI4_CS0*/ + +#define MUX_BBTOYS_WIFI() \ +	MUX_VAL(CP(MMC2_CLK),       (IEN  | PTU | EN  | M0)) /*MMC2_CLK*/\ +	MUX_VAL(CP(MMC2_CMD),       (IEN  | PTU | EN  | M0)) /*MMC2_CMD*/\ +	MUX_VAL(CP(MMC2_DAT0),      (IEN  | PTU | EN  | M0)) /*MMC2_DAT0*/\ +	MUX_VAL(CP(MMC2_DAT1),      (IEN  | PTU | EN  | M0)) /*MMC2_DAT1*/\ +	MUX_VAL(CP(MMC2_DAT2),      (IEN  | PTU | EN  | M0)) /*MMC2_DAT2*/\ +	MUX_VAL(CP(MMC2_DAT3),      (IEN  | PTU | EN  | M0)) /*MMC2_DAT3*/\ +	MUX_VAL(CP(MMC2_DAT4),      (IDIS | PTU | EN  | M4)) /*GPIO_136 FM_EN/BT_WU*/\ +	MUX_VAL(CP(MMC2_DAT5),      (IEN  | PTU | EN  | M4)) /*GPIO_137 WLAN_IRQ*/\ +	MUX_VAL(CP(MMC2_DAT6),      (IDIS | PTU | EN  | M4)) /*GPIO_138 BT_EN*/\ +	MUX_VAL(CP(MMC2_DAT7),      (IDIS | PTU | EN  | M4)) /*GPIO_139 WLAN_EN*/ + +/* + * Display Configuration + */ + +#define DVI_BEAGLE_ORANGE_COL		0x00FF8000 +#define VENC_HEIGHT			0x00ef +#define VENC_WIDTH			0x027f + +/* + * Configure VENC in DSS for Beagle to generate Color Bar + * + * Kindly refer to OMAP TRM for definition of these values. + */ +static const struct venc_regs venc_config_std_tv = { +	.status					= 0x0000001B, +	.f_control				= 0x00000040, +	.vidout_ctrl				= 0x00000000, +	.sync_ctrl				= 0x00008000, +	.llen					= 0x00008359, +	.flens					= 0x0000020C, +	.hfltr_ctrl				= 0x00000000, +	.cc_carr_wss_carr			= 0x043F2631, +	.c_phase				= 0x00000024, +	.gain_u					= 0x00000130, +	.gain_v					= 0x00000198, +	.gain_y					= 0x000001C0, +	.black_level				= 0x0000006A, +	.blank_level				= 0x0000005C, +	.x_color				= 0x00000000, +	.m_control				= 0x00000001, +	.bstamp_wss_data			= 0x0000003F, +	.s_carr					= 0x21F07C1F, +	.line21					= 0x00000000, +	.ln_sel					= 0x00000015, +	.l21__wc_ctl				= 0x00001400, +	.htrigger_vtrigger			= 0x00000000, +	.savid__eavid				= 0x069300F4, +	.flen__fal				= 0x0016020C, +	.lal__phase_reset			= 0x00060107, +	.hs_int_start_stop_x			= 0x008D034E, +	.hs_ext_start_stop_x			= 0x000F0359, +	.vs_int_start_x				= 0x01A00000, +	.vs_int_stop_x__vs_int_start_y		= 0x020501A0, +	.vs_int_stop_y__vs_ext_start_x		= 0x01AC0024, +	.vs_ext_stop_x__vs_ext_start_y		= 0x020D01AC, +	.vs_ext_stop_y				= 0x00000006, +	.avid_start_stop_x			= 0x03480079, +	.avid_start_stop_y			= 0x02040024, +	.fid_int_start_x__fid_int_start_y	= 0x0001008A, +	.fid_int_offset_y__fid_ext_start_x	= 0x01AC0106, +	.fid_ext_start_y__fid_ext_offset_y	= 0x01060006, +	.tvdetgp_int_start_stop_x		= 0x00140001, +	.tvdetgp_int_start_stop_y		= 0x00010001, +	.gen_ctrl				= 0x00FF0000, +	.output_control				= 0x0000000D, +	.dac_b__dac_c				= 0x00000000 +}; + +/* + * Configure Timings for DVI D + */ +static const struct panel_config dvid_cfg = { +	.timing_h	= 0x0ff03f31, /* Horizontal timing */ +	.timing_v	= 0x01400504, /* Vertical timing */ +	.pol_freq	= 0x00007028, /* Pol Freq */ +	.divisor	= 0x00010006, /* 72Mhz Pixel Clock */ +	.lcd_size	= 0x02ff03ff, /* 1024x768 */ +	.panel_type	= 0x01, /* TFT */ +	.data_lines	= 0x03, /* 24 Bit RGB */ +	.load_mode	= 0x02, /* Frame Mode */ +	.panel_color	= DVI_BEAGLE_ORANGE_COL, /* ORANGE */ +	.gfx_format	= GFXFORMAT_RGB24_UNPACKED, +}; + +static const struct panel_config dvid_cfg_xm = { +	.timing_h	= 0x1a4024c9, /* Horizontal timing */ +	.timing_v	= 0x02c00509, /* Vertical timing */ +	.pol_freq	= 0x00007028, /* Pol Freq */ +	.divisor	= 0x00010001, /* 96MHz Pixel Clock */ +	.lcd_size	= 0x02ff03ff, /* 1024x768 */ +	.panel_type	= 0x01, /* TFT */ +	.data_lines	= 0x03, /* 24 Bit RGB */ +	.load_mode	= 0x02, /* Frame Mode */ +	.panel_color	= DVI_BEAGLE_ORANGE_COL, /* ORANGE */ +	.gfx_format	= GFXFORMAT_RGB24_UNPACKED, +}; +#endif diff --git a/board/olio/h1/led.c b/board/olio/h1/led.c new file mode 100644 index 000000000..89b8dd3c3 --- /dev/null +++ b/board/olio/h1/led.c @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2010 Texas Instruments, Inc. + * Jason Kridner <jkridner@beagleboard.org> + * + * SPDX-License-Identifier:	GPL-2.0+ + */ +#include <common.h> +#include <status_led.h> +#include <asm/arch/cpu.h> +#include <asm/io.h> +#include <asm/arch/sys_proto.h> +#include <asm/gpio.h> + +/* GPIO pins for the LEDs */ +#define BEAGLE_LED_USR0	150 +#define BEAGLE_LED_USR1	149 + +#ifdef STATUS_LED_GREEN +void green_led_off(void) +{ +	__led_set (STATUS_LED_GREEN, 0); +} + +void green_led_on(void) +{ +	__led_set (STATUS_LED_GREEN, 1); +} +#endif + +void __led_init (led_id_t mask, int state) +{ +	__led_set (mask, state); +} + +void __led_toggle (led_id_t mask) +{ +	int state, toggle_gpio = 0; +#ifdef STATUS_LED_BIT +	if (!toggle_gpio && STATUS_LED_BIT & mask) +		toggle_gpio = BEAGLE_LED_USR0; +#endif +#ifdef STATUS_LED_BIT1 +	if (!toggle_gpio && STATUS_LED_BIT1 & mask) +		toggle_gpio = BEAGLE_LED_USR1; +#endif +	if (toggle_gpio) { +		if (!gpio_request(toggle_gpio, "")) { +			gpio_direction_output(toggle_gpio, 0); +			state = gpio_get_value(toggle_gpio); +			gpio_set_value(toggle_gpio, !state); +		} +	} +} + +void __led_set (led_id_t mask, int state) +{ +#ifdef STATUS_LED_BIT +	if (STATUS_LED_BIT & mask) { +		if (!gpio_request(BEAGLE_LED_USR0, "")) { +			gpio_direction_output(BEAGLE_LED_USR0, 0); +			gpio_set_value(BEAGLE_LED_USR0, state); +		} +	} +#endif +#ifdef STATUS_LED_BIT1 +	if (STATUS_LED_BIT1 & mask) { +		if (!gpio_request(BEAGLE_LED_USR1, "")) { +			gpio_direction_output(BEAGLE_LED_USR1, 0); +			gpio_set_value(BEAGLE_LED_USR1, state); +		} +	} +#endif +} diff --git a/boards.cfg b/boards.cfg index aa2ee642d..d5f494392 100644 --- a/boards.cfg +++ b/boards.cfg @@ -331,6 +331,7 @@ Active  arm         armv7          omap3       ti              evm  Active  arm         armv7          omap3       ti              evm                 omap3_evm_quick_nand                 -                                                                                                                                 -  Active  arm         armv7          omap3       ti              sdp3430             omap3_sdp3430                        -                                                                                                                                 Nishanth Menon <nm@ti.com>  Active  arm         armv7          omap3       timll           devkit8000          devkit8000                           -                                                                                                                                 Thomas Weber <weber@corscience.de> +Active  arm			armv7		   omap3       olio            h1                  omap3_h1							    -																																  Evan Wilson <evan@oliodevices.com>  Active  arm         armv7          omap4       ti              panda               omap4_panda                          -                                                                                                                                 Sricharan R <r.sricharan@ti.com>  Active  arm         armv7          omap4       ti              sdp4430             omap4_sdp4430                        -                                                                                                                                 Sricharan R <r.sricharan@ti.com>  Active  arm         armv7          omap5       ti              dra7xx              dra7xx_evm                           -                                                                                                                                 Lokesh Vutla <lokeshvutla@ti.com> diff --git a/include/configs/omap3_h1.h b/include/configs/omap3_h1.h new file mode 100644 index 000000000..265cdc36f --- /dev/null +++ b/include/configs/omap3_h1.h @@ -0,0 +1,449 @@ +/* + * (C) Copyright 2006-2008 + * Texas Instruments. + * Richard Woodruff <r-woodruff2@ti.com> + * Syed Mohammed Khasim <x0khasim@ti.com> + * + * Configuration settings for the TI OMAP3530 Beagle board. + * + * SPDX-License-Identifier:	GPL-2.0+ + */ + +#ifndef __CONFIG_H +#define __CONFIG_H + +/* + * High Level Configuration Options + */ +#define CONFIG_OMAP		1	/* in a TI OMAP core */ +#define CONFIG_OMAP34XX		1	/* which is a 34XX */ +#define CONFIG_OMAP3_H1	1	/* working with BEAGLE */ +#define CONFIG_OMAP_GPIO +#define CONFIG_OMAP_COMMON + +#define CONFIG_SDRC	/* The chip has SDRC controller */ + +#include <asm/arch/cpu.h>		/* get chip and board defs */ +#include <asm/arch/omap3.h> + +/* + * Display CPU and Board information + */ +#define CONFIG_DISPLAY_CPUINFO		1 +#define CONFIG_DISPLAY_BOARDINFO	1 + +/* Clock Defines */ +#define V_OSCK			26000000	/* Clock output from T2 */ +#define V_SCLK			(V_OSCK >> 1) + +#define CONFIG_MISC_INIT_R + +#define CONFIG_OF_LIBFDT +#define CONFIG_CMD_BOOTZ + +#define CONFIG_CMDLINE_TAG		1	/* enable passing of ATAGs */ +#define CONFIG_SETUP_MEMORY_TAGS	1 +#define CONFIG_INITRD_TAG		1 +#define CONFIG_REVISION_TAG		1 + +/* + * Size of malloc() pool + */ +#define CONFIG_ENV_SIZE			(128 << 10)	/* 128 KiB */ +						/* Sector */ +#define CONFIG_SYS_MALLOC_LEN		(CONFIG_ENV_SIZE + (128 << 10)) + +/* + * Hardware drivers + */ + +/* + * NS16550 Configuration + */ +#define V_NS16550_CLK			48000000	/* 48MHz (APLL96/2) */ + +#define CONFIG_SYS_NS16550 +#define CONFIG_SYS_NS16550_SERIAL +#define CONFIG_SYS_NS16550_REG_SIZE	(-4) +#define CONFIG_SYS_NS16550_CLK		V_NS16550_CLK + +/* + * select serial console configuration + */ +#define CONFIG_CONS_INDEX		3 +#define CONFIG_SYS_NS16550_COM3		OMAP34XX_UART3 +#define CONFIG_SERIAL3			3	/* UART3 on Beagle Rev 2 */ + +/* allow to overwrite serial and ethaddr */ +#define CONFIG_ENV_OVERWRITE +#define CONFIG_BAUDRATE			115200 +#define CONFIG_SYS_BAUDRATE_TABLE	{4800, 9600, 19200, 38400, 57600,\ +					115200} +#define CONFIG_GENERIC_MMC		1 +#define CONFIG_MMC			1 +#define CONFIG_OMAP_HSMMC		1 +#define CONFIG_DOS_PARTITION		1 + +/* Status LED */ +#define CONFIG_STATUS_LED		1 +#define CONFIG_BOARD_SPECIFIC_LED	1 +#define STATUS_LED_BIT			0x01 +#define STATUS_LED_STATE		STATUS_LED_ON +#define STATUS_LED_PERIOD		(CONFIG_SYS_HZ / 2) +#define STATUS_LED_BIT1			0x02 +#define STATUS_LED_STATE1		STATUS_LED_ON +#define STATUS_LED_PERIOD1		(CONFIG_SYS_HZ / 2) +#define STATUS_LED_BOOT			STATUS_LED_BIT +#define STATUS_LED_GREEN		STATUS_LED_BIT1 + +/* Enable Multi Bus support for I2C */ +#define CONFIG_I2C_MULTI_BUS		1 + +/* Probe all devices */ +#define CONFIG_SYS_I2C_NOPROBES		{{0x0, 0x0}} + +/* USB */ +#define CONFIG_MUSB_GADGET +#define CONFIG_USB_MUSB_OMAP2PLUS +#define CONFIG_MUSB_PIO_ONLY +#define CONFIG_USB_GADGET_DUALSPEED +#define CONFIG_TWL4030_USB		1 +#define CONFIG_USB_ETHER +#define CONFIG_USB_ETHER_RNDIS + +/* USB EHCI */ +#define CONFIG_CMD_USB +#define CONFIG_USB_EHCI + +#define CONFIG_USB_EHCI_OMAP +#define CONFIG_OMAP_EHCI_PHY1_RESET_GPIO	147 + +#define CONFIG_USB_ULPI +#define CONFIG_USB_ULPI_VIEWPORT_OMAP + +#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS 3 +#define CONFIG_USB_HOST_ETHER +#define CONFIG_USB_ETHER_SMSC95XX +#define CONFIG_USB_ETHER_ASIX + + +/* commands to include */ +#include <config_cmd_default.h> + +#define CONFIG_CMD_ASKENV + +#define CONFIG_CMD_CACHE +#define CONFIG_CMD_EXT2		/* EXT2 Support			*/ +#define CONFIG_CMD_FAT		/* FAT support			*/ +#define CONFIG_CMD_FS_GENERIC	/* Generic FS support */ +#define CONFIG_CMD_MTDPARTS	/* Enable MTD parts commands */ +#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)" + +#define CONFIG_CMD_I2C		/* I2C serial bus support	*/ +#define CONFIG_CMD_MMC		/* MMC support			*/ +#define CONFIG_USB_STORAGE	/* USB storage support		*/ +#define CONFIG_CMD_NAND		/* NAND support			*/ +#define CONFIG_CMD_LED		/* LED support			*/ +#define CONFIG_CMD_NET      /* bootp, tftpboot, rarpboot    */ +#define CONFIG_CMD_NFS      /* NFS support          */ +#define CONFIG_CMD_PING +#define CONFIG_CMD_DHCP +#define CONFIG_CMD_SETEXPR	/* Evaluate expressions		*/ +#define CONFIG_CMD_GPIO     /* Enable gpio command */ + +#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	*/ + +#define CONFIG_SYS_NO_FLASH +#define CONFIG_HARD_I2C			1 +#define CONFIG_SYS_I2C_SPEED		100000 +#define CONFIG_SYS_I2C_SLAVE		1 +#define CONFIG_I2C_MULTI_BUS		1 +#define CONFIG_DRIVER_OMAP34XX_I2C	1 +#define CONFIG_VIDEO_OMAP3	/* DSS Support			*/ + +/* + * TWL4030 + */ +#define CONFIG_TWL4030_POWER		1 +#define CONFIG_TWL4030_LED		1 + +/* + * Board NAND Info. + */ +#define CONFIG_SYS_NAND_QUIET_TEST	1 +#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 */ +							/* CS0 */ +#define GPMC_NAND_ECC_LP_x16_LAYOUT	1 + +#define CONFIG_SYS_MAX_NAND_DEVICE	1		/* Max number of NAND */ +							/* devices */ + +/* Environment information */ +#define CONFIG_BOOTDELAY		3 + +#define CONFIG_EXTRA_ENV_SETTINGS \ +	"loadaddr=0x80200000\0" \ +	"rdaddr=0x81000000\0" \ +	"fdt_high=0xffffffff\0" \ +	"fdtaddr=0x80f80000\0" \ +	"usbtty=cdc_acm\0" \ +	"bootfile=uImage\0" \ +	"ramdisk=ramdisk.gz\0" \ +	"bootdir=/boot\0" \ +	"bootpart=0:2\0" \ +	"console=ttyO2,115200n8\0" \ +	"mpurate=auto\0" \ +	"buddy=none\0" \ +	"optargs=\0" \ +	"camera=none\0" \ +	"vram=12M\0" \ +	"dvimode=640x480MR-16@60\0" \ +	"defaultdisplay=dvi\0" \ +	"mmcdev=0\0" \ +	"mmcroot=/dev/mmcblk0p2 rw\0" \ +	"mmcrootfstype=ext3 rootwait\0" \ +	"nandroot=ubi0:rootfs ubi.mtd=4\0" \ +	"nandrootfstype=ubifs\0" \ +	"ramroot=/dev/ram0 rw ramdisk_size=65536 initrd=0x81000000,64M\0" \ +	"ramrootfstype=ext2\0" \ +	"mmcargs=setenv bootargs console=${console} " \ +		"${optargs} " \ +		"mpurate=${mpurate} " \ +		"buddy=${buddy} "\ +		"camera=${camera} "\ +		"vram=${vram} " \ +		"omapfb.mode=dvi:${dvimode} " \ +		"omapdss.def_disp=${defaultdisplay} " \ +		"root=${mmcroot} " \ +		"rootfstype=${mmcrootfstype}\0" \ +	"nandargs=setenv bootargs console=${console} " \ +		"${optargs} " \ +		"mpurate=${mpurate} " \ +		"buddy=${buddy} "\ +		"camera=${camera} "\ +		"vram=${vram} " \ +		"omapfb.mode=dvi:${dvimode} " \ +		"omapdss.def_disp=${defaultdisplay} " \ +		"root=${nandroot} " \ +		"rootfstype=${nandrootfstype}\0" \ +	"findfdt=" \ +		"if test $beaglerev = AxBx; then " \ +			"setenv fdtfile omap3-beagle.dtb; fi; " \ +		"if test $beaglerev = Cx; then " \ +			"setenv fdtfile omap3-beagle.dtb; fi; " \ +		"if test $beaglerev = xMAB; then " \ +			"setenv fdtfile omap3-beagle-xm.dtb; fi; " \ +		"if test $beaglerev = xMC; then " \ +			"setenv fdtfile omap3-beagle-xm.dtb; fi; " \ +		"if test $fdtfile = undefined; then " \ +			"echo WARNING: Could not determine device tree to use; fi; \0" \ +	"bootenv=uEnv.txt\0" \ +	"loadbootenv=fatload mmc ${mmcdev} ${loadaddr} ${bootenv}\0" \ +	"importbootenv=echo Importing environment from mmc ...; " \ +		"env import -t $loadaddr $filesize\0" \ +	"ramargs=setenv bootargs console=${console} " \ +		"${optargs} " \ +		"mpurate=${mpurate} " \ +		"buddy=${buddy} "\ +		"vram=${vram} " \ +		"omapfb.mode=dvi:${dvimode} " \ +		"omapdss.def_disp=${defaultdisplay} " \ +		"root=${ramroot} " \ +		"rootfstype=${ramrootfstype}\0" \ +	"loadramdisk=load mmc ${bootpart} ${rdaddr} ${bootdir}/${ramdisk}\0" \ +	"loadimage=load mmc ${bootpart} ${loadaddr} ${bootdir}/${bootfile}\0" \ +	"loadfdt=load mmc ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}\0" \ +	"mmcboot=echo Booting from mmc ...; " \ +		"run mmcargs; " \ +		"bootm ${loadaddr}\0" \ +	"mmcbootz=echo Booting with DT from mmc${mmcdev} ...; " \ +		"run mmcargs; " \ +		"bootz ${loadaddr} - ${fdtaddr}\0" \ +	"nandboot=echo Booting from nand ...; " \ +		"run nandargs; " \ +		"nand read ${loadaddr} 280000 400000; " \ +		"bootm ${loadaddr}\0" \ +	"ramboot=echo Booting from ramdisk ...; " \ +		"run ramargs; " \ +		"bootm ${loadaddr}\0" \ +	"userbutton=if gpio input 173; then run userbutton_xm; " \ +		"else run userbutton_nonxm; fi;\0" \ +	"userbutton_xm=gpio input 4;\0" \ +	"userbutton_nonxm=gpio input 7;\0" +/* "run userbutton" will return 1 (false) if pressed and 0 (true) if not */ +#define CONFIG_BOOTCOMMAND \ +	"run findfdt; " \ +	"mmc dev ${mmcdev}; if mmc rescan; then " \ +		"if run userbutton; then " \ +			"setenv bootenv uEnv.txt;" \ +		"else " \ +			"setenv bootenv user.txt;" \ +		"fi;" \ +		"echo SD/MMC found on device ${mmcdev};" \ +		"if run loadbootenv; then " \ +			"echo Loaded environment from ${bootenv};" \ +			"run importbootenv;" \ +		"fi;" \ +		"if test -n $uenvcmd; then " \ +			"echo Running uenvcmd ...;" \ +			"run uenvcmd;" \ +		"fi;" \ +		"if run loadimage; then " \ +			"run mmcboot;" \ +		"fi;" \ +	"fi;" \ +	"run nandboot;" \ +	"setenv bootfile zImage;" \ +	"if run loadimage; then " \ +		"run loadfdt;" \ +		"run mmcbootz; " \ +	"fi; " \ + +#define CONFIG_AUTO_COMPLETE		1 +/* + * Miscellaneous configurable options + */ +#define CONFIG_SYS_LONGHELP		/* undef to save memory */ +#define CONFIG_SYS_HUSH_PARSER		/* use "hush" command parser */ +#define CONFIG_SYS_PROMPT		"OMAP3 beagleboard.org # " +#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		32	/* max number of command args */ +/* Boot Argument Buffer Size */ +#define CONFIG_SYS_BARGSIZE		(CONFIG_SYS_CBSIZE) + +#define CONFIG_SYS_ALT_MEMTEST		1 +#define CONFIG_SYS_MEMTEST_START	(0x82000000)		/* memtest */ +								/* defaults */ +#define CONFIG_SYS_MEMTEST_END		(0x87FFFFFF) 		/* 128MB */ +#define CONFIG_SYS_MEMTEST_SCRATCH	(0x81000000)	/* dummy address */ + +#define CONFIG_SYS_LOAD_ADDR		(OMAP34XX_SDRC_CS0)	/* default */ +							/* load address */ + +/* + * OMAP3 has 12 GP timers, they can be driven by the system clock + * (12/13/16.8/19.2/38.4MHz) or by 32KHz clock. We use 13MHz (V_SCLK). + * This rate is divided by a local divisor. + */ +#define CONFIG_SYS_TIMERBASE		(OMAP34XX_GPT2) +#define CONFIG_SYS_PTV			2       /* Divisor: 2^(PTV+1) => 8 */ +#define CONFIG_SYS_HZ			1000 + +/*----------------------------------------------------------------------- + * Physical Memory Map + */ +#define CONFIG_NR_DRAM_BANKS	2	/* CS1 may or may not be populated */ +#define PHYS_SDRAM_1		OMAP34XX_SDRC_CS0 +#define PHYS_SDRAM_2		OMAP34XX_SDRC_CS1 + +/*----------------------------------------------------------------------- + * FLASH and environment organization + */ + +/* **** PISMO SUPPORT *** */ + +/* Configure the PISMO */ +#define PISMO1_NAND_SIZE		GPMC_SIZE_128M +#define PISMO1_ONEN_SIZE		GPMC_SIZE_128M + +#define CONFIG_SYS_MONITOR_LEN		(256 << 10)	/* Reserve 2 sectors */ + +#if defined(CONFIG_CMD_NAND) +#define CONFIG_SYS_FLASH_BASE		PISMO1_NAND_BASE +#endif + +/* Monitor at start of flash */ +#define CONFIG_SYS_MONITOR_BASE		CONFIG_SYS_FLASH_BASE +#define CONFIG_SYS_ONENAND_BASE		ONENAND_MAP + +#define CONFIG_ENV_IS_IN_NAND		1 +#define ONENAND_ENV_OFFSET		0x260000 /* environment starts here */ +#define SMNAND_ENV_OFFSET		0x260000 /* environment starts here */ + +#define CONFIG_SYS_ENV_SECT_SIZE	(128 << 10)	/* 128 KiB */ +#define CONFIG_ENV_OFFSET		SMNAND_ENV_OFFSET +#define CONFIG_ENV_ADDR			SMNAND_ENV_OFFSET + +#define CONFIG_SYS_SDRAM_BASE		PHYS_SDRAM_1 +#define CONFIG_SYS_INIT_RAM_ADDR	0x4020f800 +#define CONFIG_SYS_INIT_RAM_SIZE	0x800 +#define CONFIG_SYS_INIT_SP_ADDR		(CONFIG_SYS_INIT_RAM_ADDR + \ +					 CONFIG_SYS_INIT_RAM_SIZE - \ +					 GENERATED_GBL_DATA_SIZE) + +#define CONFIG_OMAP3_SPI + +#define CONFIG_SYS_CACHELINE_SIZE	64 + +/* Defines for SPL */ +#define CONFIG_SPL +#define CONFIG_SPL_FRAMEWORK +#define CONFIG_SPL_NAND_SIMPLE +#define CONFIG_SPL_TEXT_BASE		0x40200800 +#define CONFIG_SPL_MAX_SIZE		(54 * 1024)	/* 8 KB for stack */ +#define CONFIG_SPL_STACK		LOW_LEVEL_SRAM_STACK + +#define CONFIG_SPL_BSS_START_ADDR	0x80000000 +#define CONFIG_SPL_BSS_MAX_SIZE		0x80000		/* 512 KB */ + +#define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR	0x300 /* address 0x60000 */ +#define CONFIG_SYS_U_BOOT_MAX_SIZE_SECTORS	0x200 /* 256 KB */ +#define CONFIG_SYS_MMC_SD_FAT_BOOT_PARTITION	1 +#define CONFIG_SPL_FAT_LOAD_PAYLOAD_NAME	"u-boot.img" + +#define CONFIG_SPL_BOARD_INIT +#define CONFIG_SPL_LIBCOMMON_SUPPORT +#define CONFIG_SPL_LIBDISK_SUPPORT +#define CONFIG_SPL_I2C_SUPPORT +#define CONFIG_SPL_LIBGENERIC_SUPPORT +#define CONFIG_SPL_MMC_SUPPORT +#define CONFIG_SPL_FAT_SUPPORT +#define CONFIG_SPL_SERIAL_SUPPORT +#define CONFIG_SPL_NAND_SUPPORT +#define CONFIG_SPL_NAND_BASE +#define CONFIG_SPL_NAND_DRIVERS +#define CONFIG_SPL_NAND_ECC +#define CONFIG_SPL_GPIO_SUPPORT +#define CONFIG_SPL_POWER_SUPPORT +#define CONFIG_SPL_OMAP3_ID_NAND +#define CONFIG_SPL_LDSCRIPT		"$(CPUDIR)/omap-common/u-boot-spl.lds" + +/* NAND boot config */ +#define CONFIG_SYS_NAND_5_ADDR_CYCLE +#define CONFIG_SYS_NAND_PAGE_COUNT	64 +#define CONFIG_SYS_NAND_PAGE_SIZE	2048 +#define CONFIG_SYS_NAND_OOBSIZE		64 +#define CONFIG_SYS_NAND_BLOCK_SIZE	(128*1024) +#define CONFIG_SYS_NAND_BAD_BLOCK_POS	0 +#define CONFIG_SYS_NAND_ECCPOS		{2, 3, 4, 5, 6, 7, 8, 9,\ +						10, 11, 12, 13} +#define CONFIG_SYS_NAND_ECCSIZE		512 +#define CONFIG_SYS_NAND_ECCBYTES	3 +#define CONFIG_SYS_NAND_U_BOOT_START	CONFIG_SYS_TEXT_BASE +#define CONFIG_SYS_NAND_U_BOOT_OFFS	0x80000 + +/* + * 1MB into the SDRAM to allow for SPL's bss at the beginning of SDRAM + * 64 bytes before this address should be set aside for u-boot.img's + * header. That is 0x800FFFC0--0x80100000 should not be used for any + * other needs. + */ +#define CONFIG_SYS_TEXT_BASE		0x80100000 +#define CONFIG_SYS_SPL_MALLOC_START	0x80208000 +#define CONFIG_SYS_SPL_MALLOC_SIZE	0x100000 + +#endif /* __CONFIG_H */ |