diff options
Diffstat (limited to 'arch/arm/mach-omap2/board-omap3evm.c')
| -rw-r--r-- | arch/arm/mach-omap2/board-omap3evm.c | 78 | 
1 files changed, 77 insertions, 1 deletions
diff --git a/arch/arm/mach-omap2/board-omap3evm.c b/arch/arm/mach-omap2/board-omap3evm.c index 639bd07ea38..ef230a0eb5e 100644 --- a/arch/arm/mach-omap2/board-omap3evm.c +++ b/arch/arm/mach-omap2/board-omap3evm.c @@ -24,6 +24,10 @@  #include <linux/leds.h>  #include <linux/interrupt.h> +#include <linux/mtd/mtd.h> +#include <linux/mtd/partitions.h> +#include <linux/mtd/nand.h> +  #include <linux/spi/spi.h>  #include <linux/spi/ads7846.h>  #include <linux/i2c/twl.h> @@ -43,6 +47,7 @@  #include <plat/board.h>  #include <plat/usb.h> +#include <plat/nand.h>  #include "common.h"  #include <plat/mcspi.h>  #include <video/omapdss.h> @@ -53,7 +58,6 @@  #include "hsmmc.h"  #include "common-board-devices.h" -#define OMAP3_EVM_TS_GPIO	175  #define OMAP3_EVM_EHCI_VBUS	22  #define OMAP3_EVM_EHCI_SELECT	61 @@ -355,6 +359,19 @@ static int omap3evm_twl_gpio_setup(struct device *dev,  	platform_device_register(&leds_gpio); +	/* Enable VBUS switch by setting TWL4030.GPIO2DIR as output +	 * for starting USB tranceiver +	 */ +#ifdef CONFIG_TWL4030_CORE +	if (get_omap3_evm_rev() >= OMAP3EVM_BOARD_GEN_2) { +		u8 val; + +		twl_i2c_read_u8(TWL4030_MODULE_GPIO, &val, REG_GPIODATADIR1); +		val |= 0x04; /* TWL4030.GPIO2DIR BIT at GPIODATADIR1(0x9B) */ +		twl_i2c_write_u8(TWL4030_MODULE_GPIO, val, REG_GPIODATADIR1); +	} +#endif +  	return 0;  } @@ -461,6 +478,28 @@ struct wl12xx_platform_data omap3evm_wlan_data __initdata = {  };  #endif +/* VAUX2 for USB */ +static struct regulator_consumer_supply omap3evm_vaux2_supplies[] = { +	REGULATOR_SUPPLY("VDD_CSIPHY1", "omap3isp"),	/* OMAP ISP */ +	REGULATOR_SUPPLY("VDD_CSIPHY2", "omap3isp"),	/* OMAP ISP */ +	REGULATOR_SUPPLY("hsusb1", "ehci-omap.0"), +	REGULATOR_SUPPLY("vaux2", NULL), +}; + +static struct regulator_init_data omap3evm_vaux2 = { +	.constraints = { +		.min_uV		= 2800000, +		.max_uV		= 2800000, +		.apply_uV	= true, +		.valid_modes_mask	= REGULATOR_MODE_NORMAL +					| REGULATOR_MODE_STANDBY, +		.valid_ops_mask		= REGULATOR_CHANGE_MODE +					| REGULATOR_CHANGE_STATUS, +	}, +	.num_consumer_supplies		= ARRAY_SIZE(omap3evm_vaux2_supplies), +	.consumer_supplies		= omap3evm_vaux2_supplies, +}; +  static struct twl4030_platform_data omap3evm_twldata = {  	/* platform_data for children goes here */  	.keypad		= &omap3evm_kp_data, @@ -607,6 +646,37 @@ static struct regulator_consumer_supply dummy_supplies[] = {  	REGULATOR_SUPPLY("vdd33a", "smsc911x.0"),  }; +static struct mtd_partition omap3evm_nand_partitions[] = { +	/* All the partition sizes are listed in terms of NAND block size */ +	{ +		.name           = "X-Loader", +		.offset         = 0, +		.size           = 4*(SZ_128K), +		.mask_flags     = MTD_WRITEABLE +	}, +	{ +		.name           = "U-Boot", +		.offset         = MTDPART_OFS_APPEND, +		.size           = 14*(SZ_128K), +		.mask_flags     = MTD_WRITEABLE +	}, +	{ +		.name           = "U-Boot Env", +		.offset         = MTDPART_OFS_APPEND, +		.size           = 2*(SZ_128K) +	}, +	{ +		.name           = "Kernel", +		.offset         = MTDPART_OFS_APPEND, +		.size           = 40*(SZ_128K) +	}, +	{ +		.name           = "File system", +		.size           = MTDPART_SIZ_FULL, +		.offset         = MTDPART_OFS_APPEND, +	}, +}; +  static void __init omap3_evm_init(void)  {  	struct omap_board_mux *obm; @@ -623,6 +693,9 @@ static void __init omap3_evm_init(void)  	omap_mux_init_gpio(63, OMAP_PIN_INPUT);  	omap_hsmmc_init(mmc); +	if (get_omap3_evm_rev() >= OMAP3EVM_BOARD_GEN_2) +		omap3evm_twldata.vaux2 = &omap3evm_vaux2; +  	omap3_evm_i2c_init();  	omap_display_init(&omap3_evm_dss_data); @@ -656,6 +729,9 @@ static void __init omap3_evm_init(void)  	}  	usb_musb_init(&musb_board_data);  	usbhs_init(&usbhs_bdata); +	omap_nand_flash_init(NAND_BUSWIDTH_16, omap3evm_nand_partitions, +			     ARRAY_SIZE(omap3evm_nand_partitions)); +  	omap_ads7846_init(1, OMAP3_EVM_TS_GPIO, 310, NULL);  	omap3evm_init_smsc911x();  	omap3_evm_display_init();  |