diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-07-23 17:34:48 -0700 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-07-23 17:34:48 -0700 | 
| commit | f1d2c07d331f717da79a42952be7dc1c0d35f846 (patch) | |
| tree | 5bc98d2d63a37b688b40a4641855c512b385d0ae | |
| parent | a17f29a5e98c0a32a900a773083c719e27f4bc0e (diff) | |
| parent | d003e09891fdc0c170b99328eba7ed004809ef5a (diff) | |
| download | olio-linux-3.10-f1d2c07d331f717da79a42952be7dc1c0d35f846.tar.xz olio-linux-3.10-f1d2c07d331f717da79a42952be7dc1c0d35f846.zip | |
Merge tag 'boards' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
Pull arm-soc board specific updates from Arnd Bergmann:
 "These changes are all for individual board files.  In the long run,
  those files will largely go away, and the amount of changes appears to
  be continuously decreasing, which is a good sign.  This time around,
  changes are focused on tegra, omap and samsung."
Fix conflicts in arch/arm/mach-{omap2/common-board-devices.c,tegra/Makefile.boot}
as per the 'for-linus' branch.
* tag 'boards' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (39 commits)
  ARM: EXYNOS: Add leds status1 and status2 on Origen board
  ARM: S3C64XX: Mark most Cragganmore initdata devinitdata
  ARM: EXYNOS: Add missing .reserve field to SMDKC210
  ARM: EXYNOS: Add DRM device to SMDK4X12 board
  ARM: S3C64XX: Clean up after SPI driver platform data updates
  ARM: SAMSUNG: no need to set the value for clk_xusbxti when it is 24Mhz
  ARM: EXYNOS: Add framebuffer support for SMDK4X12
  ARM: EXYNOS: Add HSOTG support to SMDK4X12
  ARM: S5PV210: Add audio platform device in Goni board
  ARM: S5PV210: Add audio platform device in Aquila board
  ARM: EXYNOS: Add audio platform device in SMDKV310 board
  ARM: S3C64XX: Don't specify an irq_base for WM1192-EV1 board
  ARM: OMAP3: Fix omap3evm randconfig error introduced by VBUS support
  ARM: OMAP: board-omap4panda: MUX configuration for sys_nirq2
  ARM: OMAP: board-4430sdp: MUX configuration for sys_nirq2
  ARM: OMAP3530evm: set pendown_state and debounce time for ads7846
  ARM: omap3evm: enable VBUS switch for EHCI tranceiver
  ARM: OMAP3EVM: Adding USB internal LDOs board file
  ARM: OMAP3EVM: Add NAND flash definition
  ARM: OMAP3: cm-t35: add tvp5150 decoder support
  ...
37 files changed, 593 insertions, 693 deletions
| diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index b1639621689..dc3de407ce0 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -683,6 +683,7 @@ config ARCH_TEGRA  	select MIGHT_HAVE_CACHE_L2X0  	select NEED_MACH_IO_H if PCI  	select ARCH_HAS_CPUFREQ +	select USE_OF  	help  	  This enables support for NVIDIA Tegra based systems (Tegra APX,  	  Tegra 6xx and Tegra 2 series). diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig index 6f6d13f91e4..b5b4c8c9db1 100644 --- a/arch/arm/mach-exynos/Kconfig +++ b/arch/arm/mach-exynos/Kconfig @@ -207,6 +207,7 @@ config MACH_SMDKV310  	select S3C_DEV_HSMMC1  	select S3C_DEV_HSMMC2  	select S3C_DEV_HSMMC3 +	select S3C_DEV_USB_HSOTG  	select SAMSUNG_DEV_BACKLIGHT  	select EXYNOS_DEV_DRM  	select EXYNOS_DEV_SYSMMU @@ -326,6 +327,7 @@ config MACH_ORIGEN  	select S3C_DEV_WDT  	select S3C_DEV_HSMMC  	select S3C_DEV_HSMMC2 +	select S3C_DEV_USB_HSOTG  	select S5P_DEV_FIMC0  	select S5P_DEV_FIMC1  	select S5P_DEV_FIMC2 @@ -360,22 +362,27 @@ config MACH_SMDK4212  	select S3C_DEV_I2C3  	select S3C_DEV_I2C7  	select S3C_DEV_RTC +	select S3C_DEV_USB_HSOTG  	select S3C_DEV_WDT  	select S5P_DEV_FIMC0  	select S5P_DEV_FIMC1  	select S5P_DEV_FIMC2  	select S5P_DEV_FIMC3 +	select S5P_DEV_FIMD0  	select S5P_DEV_MFC  	select SAMSUNG_DEV_BACKLIGHT  	select SAMSUNG_DEV_KEYPAD  	select SAMSUNG_DEV_PWM  	select EXYNOS_DEV_SYSMMU  	select EXYNOS_DEV_DMA +	select EXYNOS_DEV_DRM +	select EXYNOS4_SETUP_FIMD0  	select EXYNOS4_SETUP_I2C1  	select EXYNOS4_SETUP_I2C3  	select EXYNOS4_SETUP_I2C7  	select EXYNOS4_SETUP_KEYPAD  	select EXYNOS4_SETUP_SDHCI +	select EXYNOS4_SETUP_USB_PHY  	help  	  Machine support for Samsung SMDK4212 diff --git a/arch/arm/mach-exynos/mach-nuri.c b/arch/arm/mach-exynos/mach-nuri.c index f3b328d0aff..f98a83a81ce 100644 --- a/arch/arm/mach-exynos/mach-nuri.c +++ b/arch/arm/mach-exynos/mach-nuri.c @@ -1341,9 +1341,8 @@ static struct platform_device *nuri_devices[] __initdata = {  static void __init nuri_map_io(void)  { -	clk_xusbxti.rate = 24000000;  	exynos_init_io(NULL, 0); -	s3c24xx_init_clocks(24000000); +	s3c24xx_init_clocks(clk_xusbxti.rate);  	s3c24xx_init_uarts(nuri_uartcfgs, ARRAY_SIZE(nuri_uartcfgs));  } diff --git a/arch/arm/mach-exynos/mach-origen.c b/arch/arm/mach-exynos/mach-origen.c index 873c708fd34..5a12dc26f49 100644 --- a/arch/arm/mach-exynos/mach-origen.c +++ b/arch/arm/mach-exynos/mach-origen.c @@ -9,6 +9,7 @@  */  #include <linux/serial_core.h> +#include <linux/leds.h>  #include <linux/gpio.h>  #include <linux/mmc/host.h>  #include <linux/platform_device.h> @@ -21,6 +22,7 @@  #include <linux/mfd/max8997.h>  #include <linux/lcd.h>  #include <linux/rfkill-gpio.h> +#include <linux/platform_data/s3c-hsotg.h>  #include <asm/mach/arch.h>  #include <asm/hardware/gic.h> @@ -498,6 +500,37 @@ static void __init origen_ohci_init(void)  	exynos4_ohci_set_platdata(pdata);  } +/* USB OTG */ +static struct s3c_hsotg_plat origen_hsotg_pdata; + +static struct gpio_led origen_gpio_leds[] = { +	{ +		.name			= "origen::status1", +		.default_trigger	= "heartbeat", +		.gpio			= EXYNOS4_GPX1(3), +		.active_low		= 1, +	}, +	{ +		.name			= "origen::status2", +		.default_trigger	= "mmc0", +		.gpio			= EXYNOS4_GPX1(4), +		.active_low		= 1, +	}, +}; + +static struct gpio_led_platform_data origen_gpio_led_info = { +	.leds		= origen_gpio_leds, +	.num_leds	= ARRAY_SIZE(origen_gpio_leds), +}; + +static struct platform_device origen_leds_gpio = { +	.name	= "leds-gpio", +	.id	= -1, +	.dev	= { +		.platform_data	= &origen_gpio_led_info, +	}, +}; +  static struct gpio_keys_button origen_gpio_keys_table[] = {  	{  		.code			= KEY_MENU, @@ -654,6 +687,7 @@ static struct platform_device *origen_devices[] __initdata = {  	&s3c_device_hsmmc0,  	&s3c_device_i2c0,  	&s3c_device_rtc, +	&s3c_device_usb_hsotg,  	&s3c_device_wdt,  	&s5p_device_ehci,  	&s5p_device_fimc0, @@ -676,6 +710,7 @@ static struct platform_device *origen_devices[] __initdata = {  	&exynos4_device_ohci,  	&origen_device_gpiokeys,  	&origen_lcd_hv070wsa, +	&origen_leds_gpio,  	&origen_device_bluetooth,  }; @@ -711,7 +746,7 @@ static void s5p_tv_setup(void)  static void __init origen_map_io(void)  {  	exynos_init_io(NULL, 0); -	s3c24xx_init_clocks(24000000); +	s3c24xx_init_clocks(clk_xusbxti.rate);  	s3c24xx_init_uarts(origen_uartcfgs, ARRAY_SIZE(origen_uartcfgs));  } @@ -743,7 +778,7 @@ static void __init origen_machine_init(void)  	origen_ehci_init();  	origen_ohci_init(); -	clk_xusbxti.rate = 24000000; +	s3c_hsotg_set_platdata(&origen_hsotg_pdata);  	s5p_tv_setup();  	s5p_i2c_hdmiphy_set_platdata(NULL); diff --git a/arch/arm/mach-exynos/mach-smdk4x12.c b/arch/arm/mach-exynos/mach-smdk4x12.c index fb09c70e195..b26beb13ebe 100644 --- a/arch/arm/mach-exynos/mach-smdk4x12.c +++ b/arch/arm/mach-exynos/mach-smdk4x12.c @@ -13,12 +13,14 @@  #include <linux/i2c.h>  #include <linux/input.h>  #include <linux/io.h> +#include <linux/lcd.h>  #include <linux/mfd/max8997.h>  #include <linux/mmc/host.h>  #include <linux/platform_device.h>  #include <linux/pwm_backlight.h>  #include <linux/regulator/machine.h>  #include <linux/serial_core.h> +#include <linux/platform_data/s3c-hsotg.h>  #include <asm/mach/arch.h>  #include <asm/hardware/gic.h> @@ -28,15 +30,18 @@  #include <plat/clock.h>  #include <plat/cpu.h>  #include <plat/devs.h> +#include <plat/fb.h>  #include <plat/gpio-cfg.h>  #include <plat/iic.h>  #include <plat/keypad.h>  #include <plat/mfc.h> +#include <plat/regs-fb.h>  #include <plat/regs-serial.h>  #include <plat/sdhci.h>  #include <mach/map.h> +#include <drm/exynos_drm.h>  #include "common.h"  /* Following are default values for UCON, ULCON and UFCON UART registers */ @@ -219,8 +224,10 @@ static struct platform_pwm_backlight_data smdk4x12_bl_data = {  static uint32_t smdk4x12_keymap[] __initdata = {  	/* KEY(row, col, keycode) */ -	KEY(1, 0, KEY_D), KEY(1, 1, KEY_A), KEY(1, 2, KEY_B), -	KEY(1, 3, KEY_E), KEY(1, 4, KEY_C) +	KEY(1, 3, KEY_1), KEY(1, 4, KEY_2), KEY(1, 5, KEY_3), +	KEY(1, 6, KEY_4), KEY(1, 7, KEY_5), +	KEY(2, 5, KEY_D), KEY(2, 6, KEY_A), KEY(2, 7, KEY_B), +	KEY(0, 7, KEY_E), KEY(0, 5, KEY_C)  };  static struct matrix_keymap_data smdk4x12_keymap_data __initdata = { @@ -230,10 +237,62 @@ static struct matrix_keymap_data smdk4x12_keymap_data __initdata = {  static struct samsung_keypad_platdata smdk4x12_keypad_data __initdata = {  	.keymap_data	= &smdk4x12_keymap_data, -	.rows		= 2, -	.cols		= 5, +	.rows		= 3, +	.cols		= 8,  }; +#ifdef CONFIG_DRM_EXYNOS +static struct exynos_drm_fimd_pdata drm_fimd_pdata = { +	.panel	= { +		.timing	= { +			.left_margin	= 8, +			.right_margin	= 8, +			.upper_margin	= 6, +			.lower_margin	= 6, +			.hsync_len	= 6, +			.vsync_len	= 4, +			.xres		= 480, +			.yres		= 800, +		}, +	}, +	.vidcon0	= VIDCON0_VIDOUT_RGB | VIDCON0_PNRMODE_RGB, +	.vidcon1	= VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC, +	.default_win	= 0, +	.bpp		= 32, +}; +#else +static struct s3c_fb_pd_win smdk4x12_fb_win0 = { +	.xres		= 480, +	.yres		= 800, +	.virtual_x	= 480, +	.virtual_y	= 800 * 2, +	.max_bpp	= 32, +	.default_bpp	= 24, +}; + +static struct fb_videomode smdk4x12_lcd_timing = { +	.left_margin	= 8, +	.right_margin	= 8, +	.upper_margin	= 6, +	.lower_margin	= 6, +	.hsync_len	= 6, +	.vsync_len	= 4, +	.xres		= 480, +	.yres		= 800, +}; + +static struct s3c_fb_platdata smdk4x12_lcd_pdata __initdata = { +	.win[0]		= &smdk4x12_fb_win0, +	.vtiming	= &smdk4x12_lcd_timing, +	.vidcon0	= VIDCON0_VIDOUT_RGB | VIDCON0_PNRMODE_RGB, +	.vidcon1	= VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC, +	.setup_gpio	= exynos4_fimd0_gpio_setup_24bpp, +}; +#endif + +/* USB OTG */ +static struct s3c_hsotg_plat smdk4x12_hsotg_pdata; +  static struct platform_device *smdk4x12_devices[] __initdata = {  	&s3c_device_hsmmc2,  	&s3c_device_hsmmc3, @@ -242,22 +301,25 @@ static struct platform_device *smdk4x12_devices[] __initdata = {  	&s3c_device_i2c3,  	&s3c_device_i2c7,  	&s3c_device_rtc, +	&s3c_device_usb_hsotg,  	&s3c_device_wdt,  	&s5p_device_fimc0,  	&s5p_device_fimc1,  	&s5p_device_fimc2,  	&s5p_device_fimc3,  	&s5p_device_fimc_md, +	&s5p_device_fimd0,  	&s5p_device_mfc,  	&s5p_device_mfc_l,  	&s5p_device_mfc_r, +#ifdef CONFIG_DRM_EXYNOS +	&exynos_device_drm, +#endif  	&samsung_device_keypad,  };  static void __init smdk4x12_map_io(void)  { -	clk_xusbxti.rate = 24000000; -  	exynos_init_io(NULL, 0);  	s3c24xx_init_clocks(clk_xusbxti.rate);  	s3c24xx_init_uarts(smdk4x12_uartcfgs, ARRAY_SIZE(smdk4x12_uartcfgs)); @@ -293,6 +355,15 @@ static void __init smdk4x12_machine_init(void)  	s3c_sdhci2_set_platdata(&smdk4x12_hsmmc2_pdata);  	s3c_sdhci3_set_platdata(&smdk4x12_hsmmc3_pdata); +	s3c_hsotg_set_platdata(&smdk4x12_hsotg_pdata); + +#ifdef CONFIG_DRM_EXYNOS +	s5p_device_fimd0.dev.platform_data = &drm_fimd_pdata; +	exynos4_fimd0_gpio_setup_24bpp(); +#else +	s5p_fimd0_set_platdata(&smdk4x12_lcd_pdata); +#endif +  	platform_add_devices(smdk4x12_devices, ARRAY_SIZE(smdk4x12_devices));  } diff --git a/arch/arm/mach-exynos/mach-smdkv310.c b/arch/arm/mach-exynos/mach-smdkv310.c index 5fb209c4a59..3cfa688d274 100644 --- a/arch/arm/mach-exynos/mach-smdkv310.c +++ b/arch/arm/mach-exynos/mach-smdkv310.c @@ -19,6 +19,7 @@  #include <linux/i2c.h>  #include <linux/input.h>  #include <linux/pwm_backlight.h> +#include <linux/platform_data/s3c-hsotg.h>  #include <asm/mach/arch.h>  #include <asm/hardware/gic.h> @@ -270,6 +271,15 @@ static void __init smdkv310_ohci_init(void)  	exynos4_ohci_set_platdata(pdata);  } +/* USB OTG */ +static struct s3c_hsotg_plat smdkv310_hsotg_pdata; + +/* Audio device */ +static struct platform_device smdkv310_device_audio = { +	.name = "smdk-audio", +	.id = -1, +}; +  static struct platform_device *smdkv310_devices[] __initdata = {  	&s3c_device_hsmmc0,  	&s3c_device_hsmmc1, @@ -278,6 +288,7 @@ static struct platform_device *smdkv310_devices[] __initdata = {  	&s3c_device_i2c1,  	&s5p_device_i2c_hdmiphy,  	&s3c_device_rtc, +	&s3c_device_usb_hsotg,  	&s3c_device_wdt,  	&s5p_device_ehci,  	&s5p_device_fimc0, @@ -301,6 +312,7 @@ static struct platform_device *smdkv310_devices[] __initdata = {  	&samsung_asoc_dma,  	&samsung_asoc_idma,  	&s5p_device_fimd0, +	&smdkv310_device_audio,  	&smdkv310_lcd_lte480wv,  	&smdkv310_smsc911x,  	&exynos4_device_ahci, @@ -353,7 +365,7 @@ static void s5p_tv_setup(void)  static void __init smdkv310_map_io(void)  {  	exynos_init_io(NULL, 0); -	s3c24xx_init_clocks(24000000); +	s3c24xx_init_clocks(clk_xusbxti.rate);  	s3c24xx_init_uarts(smdkv310_uartcfgs, ARRAY_SIZE(smdkv310_uartcfgs));  } @@ -389,7 +401,7 @@ static void __init smdkv310_machine_init(void)  	smdkv310_ehci_init();  	smdkv310_ohci_init(); -	clk_xusbxti.rate = 24000000; +	s3c_hsotg_set_platdata(&smdkv310_hsotg_pdata);  	platform_add_devices(smdkv310_devices, ARRAY_SIZE(smdkv310_devices));  } @@ -416,5 +428,6 @@ MACHINE_START(SMDKC210, "SMDKC210")  	.init_machine	= smdkv310_machine_init,  	.init_late	= exynos_init_late,  	.timer		= &exynos4_timer, +	.reserve	= &smdkv310_reserve,  	.restart	= exynos4_restart,  MACHINE_END diff --git a/arch/arm/mach-exynos/mach-universal_c210.c b/arch/arm/mach-exynos/mach-universal_c210.c index 68719f57dce..4d1f40d44ed 100644 --- a/arch/arm/mach-exynos/mach-universal_c210.c +++ b/arch/arm/mach-exynos/mach-universal_c210.c @@ -1099,9 +1099,8 @@ static struct platform_device *universal_devices[] __initdata = {  static void __init universal_map_io(void)  { -	clk_xusbxti.rate = 24000000;  	exynos_init_io(NULL, 0); -	s3c24xx_init_clocks(24000000); +	s3c24xx_init_clocks(clk_xusbxti.rate);  	s3c24xx_init_uarts(universal_uartcfgs, ARRAY_SIZE(universal_uartcfgs));  	s5p_set_timer_source(S5P_PWM2, S5P_PWM4);  } diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile index b779ddd86fa..19b771d0c0d 100644 --- a/arch/arm/mach-omap2/Makefile +++ b/arch/arm/mach-omap2/Makefile @@ -217,6 +217,10 @@ endif  # OMAP2420 MSDI controller integration support ("MMC")  obj-$(CONFIG_SOC_OMAP2420)		+= msdi.o +ifneq ($(CONFIG_DRM_OMAP),) +obj-y					+= drm.o +endif +  # Specific board support  obj-$(CONFIG_MACH_OMAP_GENERIC)		+= board-generic.o  obj-$(CONFIG_MACH_OMAP_H4)		+= board-h4.o diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c index 8e17284a803..ad8a7d94afc 100644 --- a/arch/arm/mach-omap2/board-4430sdp.c +++ b/arch/arm/mach-omap2/board-4430sdp.c @@ -821,6 +821,9 @@ static void __init omap_4430sdp_display_init(void)  #ifdef CONFIG_OMAP_MUX  static struct omap_board_mux board_mux[] __initdata = {  	OMAP4_MUX(USBB2_ULPITLL_CLK, OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT), +	/* NIRQ2 for twl6040 */ +	OMAP4_MUX(SYS_NIRQ2, OMAP_MUX_MODE0 | +		  OMAP_PIN_INPUT_PULLUP | OMAP_PIN_OFF_WAKEUPENABLE),  	{ .reg_offset = OMAP_MUX_TERMINATOR },  }; diff --git a/arch/arm/mach-omap2/board-cm-t35.c b/arch/arm/mach-omap2/board-cm-t35.c index ded100c80a9..97d719047af 100644 --- a/arch/arm/mach-omap2/board-cm-t35.c +++ b/arch/arm/mach-omap2/board-cm-t35.c @@ -490,6 +490,71 @@ static struct twl4030_platform_data cm_t35_twldata = {  	.power		= &cm_t35_power_data,  }; +#if defined(CONFIG_VIDEO_OMAP3) || defined(CONFIG_VIDEO_OMAP3_MODULE) +#include <media/omap3isp.h> +#include "devices.h" + +static struct i2c_board_info cm_t35_isp_i2c_boardinfo[] = { +	{ +		I2C_BOARD_INFO("mt9t001", 0x5d), +	}, +	{ +		I2C_BOARD_INFO("tvp5150", 0x5c), +	}, +}; + +static struct isp_subdev_i2c_board_info cm_t35_isp_primary_subdevs[] = { +	{ +		.board_info = &cm_t35_isp_i2c_boardinfo[0], +		.i2c_adapter_id = 3, +	}, +	{ NULL, 0, }, +}; + +static struct isp_subdev_i2c_board_info cm_t35_isp_secondary_subdevs[] = { +	{ +		.board_info = &cm_t35_isp_i2c_boardinfo[1], +		.i2c_adapter_id = 3, +	}, +	{ NULL, 0, }, +}; + +static struct isp_v4l2_subdevs_group cm_t35_isp_subdevs[] = { +	{ +		.subdevs = cm_t35_isp_primary_subdevs, +		.interface = ISP_INTERFACE_PARALLEL, +		.bus = { +			.parallel = { +				.clk_pol = 1, +			}, +		}, +	}, +	{ +		.subdevs = cm_t35_isp_secondary_subdevs, +		.interface = ISP_INTERFACE_PARALLEL, +		.bus = { +			.parallel = { +				.clk_pol = 0, +			}, +		}, +	}, +	{ NULL, 0, }, +}; + +static struct isp_platform_data cm_t35_isp_pdata = { +	.subdevs = cm_t35_isp_subdevs, +}; + +static void __init cm_t35_init_camera(void) +{ +	if (omap3_init_camera(&cm_t35_isp_pdata) < 0) +		pr_warn("CM-T3x: Failed registering camera device!\n"); +} + +#else +static inline void cm_t35_init_camera(void) {} +#endif /* CONFIG_VIDEO_OMAP3 */ +  static void __init cm_t35_init_i2c(void)  {  	omap3_pmic_get_config(&cm_t35_twldata, TWL_COMMON_PDATA_USB, @@ -497,6 +562,8 @@ static void __init cm_t35_init_i2c(void)  			      TWL_COMMON_PDATA_AUDIO);  	omap3_pmic_init("tps65930", &cm_t35_twldata); + +	omap_register_i2c_bus(3, 400, NULL, 0);  }  #ifdef CONFIG_OMAP_MUX @@ -574,6 +641,27 @@ static struct omap_board_mux board_mux[] __initdata = {  	OMAP3_MUX(DSS_DATA16, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),  	OMAP3_MUX(DSS_DATA17, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT), +	/* Camera */ +	OMAP3_MUX(CAM_HS, OMAP_MUX_MODE0 | OMAP_PIN_INPUT), +	OMAP3_MUX(CAM_VS, OMAP_MUX_MODE0 | OMAP_PIN_INPUT), +	OMAP3_MUX(CAM_XCLKA, OMAP_MUX_MODE0 | OMAP_PIN_INPUT), +	OMAP3_MUX(CAM_PCLK, OMAP_MUX_MODE0 | OMAP_PIN_INPUT), +	OMAP3_MUX(CAM_FLD, OMAP_MUX_MODE0 | OMAP_PIN_INPUT), +	OMAP3_MUX(CAM_D0, OMAP_MUX_MODE0 | OMAP_PIN_INPUT), +	OMAP3_MUX(CAM_D1, OMAP_MUX_MODE0 | OMAP_PIN_INPUT), +	OMAP3_MUX(CAM_D2, OMAP_MUX_MODE0 | OMAP_PIN_INPUT), +	OMAP3_MUX(CAM_D3, OMAP_MUX_MODE0 | OMAP_PIN_INPUT), +	OMAP3_MUX(CAM_D4, OMAP_MUX_MODE0 | OMAP_PIN_INPUT), +	OMAP3_MUX(CAM_D5, OMAP_MUX_MODE0 | OMAP_PIN_INPUT), +	OMAP3_MUX(CAM_D6, OMAP_MUX_MODE0 | OMAP_PIN_INPUT), +	OMAP3_MUX(CAM_D7, OMAP_MUX_MODE0 | OMAP_PIN_INPUT), +	OMAP3_MUX(CAM_D8, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLDOWN), +	OMAP3_MUX(CAM_D9, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLDOWN), +	OMAP3_MUX(CAM_STROBE, OMAP_MUX_MODE0 | OMAP_PIN_INPUT), + +	OMAP3_MUX(CAM_D10, OMAP_MUX_MODE4 | OMAP_PIN_INPUT_PULLDOWN), +	OMAP3_MUX(CAM_D11, OMAP_MUX_MODE4 | OMAP_PIN_INPUT_PULLDOWN), +  	/* display controls */  	OMAP3_MUX(MCBSP1_FSR, OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT),  	OMAP3_MUX(GPMC_NCS7, OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT), @@ -646,6 +734,7 @@ static void __init cm_t3x_common_init(void)  	usb_musb_init(NULL);  	cm_t35_init_usbh(); +	cm_t35_init_camera();  }  static void __init cm_t35_init(void) 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(); diff --git a/arch/arm/mach-omap2/board-omap4panda.c b/arch/arm/mach-omap2/board-omap4panda.c index 982fb2622ab..b627cdc12b8 100644 --- a/arch/arm/mach-omap2/board-omap4panda.c +++ b/arch/arm/mach-omap2/board-omap4panda.c @@ -379,6 +379,9 @@ static struct omap_board_mux board_mux[] __initdata = {  	OMAP4_MUX(DPM_EMU18, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5),  	/* dispc2_data0 */  	OMAP4_MUX(DPM_EMU19, OMAP_PIN_OUTPUT | OMAP_MUX_MODE5), +	/* NIRQ2 for twl6040 */ +	OMAP4_MUX(SYS_NIRQ2, OMAP_MUX_MODE0 | +		  OMAP_PIN_INPUT_PULLUP | OMAP_PIN_OFF_WAKEUPENABLE),  	{ .reg_offset = OMAP_MUX_TERMINATOR },  }; diff --git a/arch/arm/mach-omap2/common-board-devices.c b/arch/arm/mach-omap2/common-board-devices.c index c1875862679..14734746457 100644 --- a/arch/arm/mach-omap2/common-board-devices.c +++ b/arch/arm/mach-omap2/common-board-devices.c @@ -35,6 +35,16 @@ static struct omap2_mcspi_device_config ads7846_mcspi_config = {  	.turbo_mode	= 0,  }; +/* + * ADS7846 driver maybe request a gpio according to the value + * of pdata->get_pendown_state, but we have done this. So set + * get_pendown_state to avoid twice gpio requesting. + */ +static int omap3_get_pendown_state(void) +{ +	return !gpio_get_value(OMAP3_EVM_TS_GPIO); +} +  static struct ads7846_platform_data ads7846_config = {  	.x_max			= 0x0fff,  	.y_max			= 0x0fff, @@ -45,6 +55,7 @@ static struct ads7846_platform_data ads7846_config = {  	.debounce_rep		= 1,  	.gpio_pendown		= -EINVAL,  	.keep_vref_on		= 1, +	.get_pendown_state	= &omap3_get_pendown_state,  };  static struct spi_board_info ads7846_spi_board_info __initdata = { diff --git a/arch/arm/mach-omap2/common-board-devices.h b/arch/arm/mach-omap2/common-board-devices.h index a0b4a42836a..4c4ef6a6166 100644 --- a/arch/arm/mach-omap2/common-board-devices.h +++ b/arch/arm/mach-omap2/common-board-devices.h @@ -4,6 +4,7 @@  #include "twl-common.h"  #define NAND_BLOCK_SIZE	SZ_128K +#define OMAP3_EVM_TS_GPIO	175  struct mtd_partition;  struct ads7846_platform_data; diff --git a/arch/arm/mach-omap2/drm.c b/arch/arm/mach-omap2/drm.c new file mode 100644 index 00000000000..72e0f01b715 --- /dev/null +++ b/arch/arm/mach-omap2/drm.c @@ -0,0 +1,61 @@ +/* + * DRM/KMS device registration for TI OMAP platforms + * + * Copyright (C) 2012 Texas Instruments + * Author: Rob Clark <rob.clark@linaro.org> + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published by + * the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program.  If not, see <http://www.gnu.org/licenses/>. + */ + +#include <linux/module.h> +#include <linux/kernel.h> +#include <linux/mm.h> +#include <linux/init.h> +#include <linux/platform_device.h> +#include <linux/dma-mapping.h> + +#include <plat/omap_device.h> +#include <plat/omap_hwmod.h> + +#if defined(CONFIG_DRM_OMAP) || (CONFIG_DRM_OMAP_MODULE) + +static struct platform_device omap_drm_device = { +	.dev = { +		.coherent_dma_mask = DMA_BIT_MASK(32), +	}, +	.name = "omapdrm", +	.id = 0, +}; + +static int __init omap_init_drm(void) +{ +	struct omap_hwmod *oh = NULL; +	struct platform_device *pdev; + +	/* lookup and populate the DMM information, if present - OMAP4+ */ +	oh = omap_hwmod_lookup("dmm"); + +	if (oh) { +		pdev = omap_device_build(oh->name, -1, oh, NULL, 0, NULL, 0, +					false); +		WARN(IS_ERR(pdev), "Could not build omap_device for %s\n", +			oh->name); +	} + +	return platform_device_register(&omap_drm_device); + +} + +arch_initcall(omap_init_drm); + +#endif diff --git a/arch/arm/mach-s3c64xx/include/mach/crag6410.h b/arch/arm/mach-s3c64xx/include/mach/crag6410.h index 4cb2f951f1e..4c3c9994fc2 100644 --- a/arch/arm/mach-s3c64xx/include/mach/crag6410.h +++ b/arch/arm/mach-s3c64xx/include/mach/crag6410.h @@ -13,9 +13,7 @@  #include <linux/gpio.h> -#define BANFF_PMIC_IRQ_BASE		IRQ_BOARD_START -#define GLENFARCLAS_PMIC_IRQ_BASE	(IRQ_BOARD_START + 64) -#define CODEC_IRQ_BASE			(IRQ_BOARD_START + 128) +#define GLENFARCLAS_PMIC_IRQ_BASE	IRQ_BOARD_START  #define PCA935X_GPIO_BASE		GPIO_BOARD_START  #define CODEC_GPIO_BASE			(GPIO_BOARD_START + 8) diff --git a/arch/arm/mach-s3c64xx/mach-crag6410-module.c b/arch/arm/mach-s3c64xx/mach-crag6410-module.c index 7a27f5603c7..9e382e7c77c 100644 --- a/arch/arm/mach-s3c64xx/mach-crag6410-module.c +++ b/arch/arm/mach-s3c64xx/mach-crag6410-module.c @@ -29,7 +29,6 @@  #include <mach/crag6410.h>  static struct s3c64xx_spi_csinfo wm0010_spi_csinfo = { -	.set_level = gpio_set_value,  	.line = S3C64XX_GPC(3),  }; @@ -39,6 +38,7 @@ static struct spi_board_info wm1253_devs[] = {  		.bus_num	= 0,  		.chip_select	= 0,  		.mode		= SPI_MODE_0, +		.irq		= S3C_EINT(5),  		.controller_data = &wm0010_spi_csinfo,  	},  }; @@ -168,7 +168,6 @@ static struct wm8994_pdata wm8994_pdata = {  	.gpio_defaults = {  		0x3,          /* IRQ out, active high, CMOS */  	}, -	.irq_base = CODEC_IRQ_BASE,  	.ldo = {  		 { .init_data = &wm8994_ldo1, },  		 { .init_data = &wm8994_ldo2, }, @@ -182,6 +181,11 @@ static const struct i2c_board_info wm1277_devs[] = {  	},  }; +static const struct i2c_board_info wm5102_devs[] = { +	{ I2C_BOARD_INFO("wm5102", 0x1a), +	  .irq = GLENFARCLAS_PMIC_IRQ_BASE + WM831X_IRQ_GPIO_2, }, +}; +  static const struct i2c_board_info wm6230_i2c_devs[] = {  	{ I2C_BOARD_INFO("wm9081", 0x6c),  	  .platform_data = &wm9081_pdata, }, @@ -209,6 +213,7 @@ static __devinitdata const struct {  	  .spi_devs = wm1253_devs, .num_spi_devs = ARRAY_SIZE(wm1253_devs) },  	{ .id = 0x32, .name = "XXXX-EV1 Caol Illa" },  	{ .id = 0x33, .name = "XXXX-EV1 Oban" }, +	{ .id = 0x34, .name = "WM0010-6320-CS42 Balblair" },  	{ .id = 0x39, .name = "1254-EV1 Dallas Dhu",  	  .i2c_devs = wm1254_devs, .num_i2c_devs = ARRAY_SIZE(wm1254_devs) },  	{ .id = 0x3a, .name = "1259-EV1 Tobermory", @@ -218,6 +223,8 @@ static __devinitdata const struct {  	{ .id = 0x3c, .name = "1273-EV1 Longmorn" },  	{ .id = 0x3d, .name = "1277-EV1 Littlemill",  	  .i2c_devs = wm1277_devs, .num_i2c_devs = ARRAY_SIZE(wm1277_devs) }, +	{ .id = 0x3e, .name = "WM5102-6271-EV1-CS127", +	  .i2c_devs = wm5102_devs, .num_i2c_devs = ARRAY_SIZE(wm5102_devs) },  };  static __devinit int wlf_gf_module_probe(struct i2c_client *i2c, diff --git a/arch/arm/mach-s3c64xx/mach-crag6410.c b/arch/arm/mach-s3c64xx/mach-crag6410.c index 6dd4fae33a8..09cd81207a3 100644 --- a/arch/arm/mach-s3c64xx/mach-crag6410.c +++ b/arch/arm/mach-s3c64xx/mach-crag6410.c @@ -171,7 +171,7 @@ static struct fb_videomode crag6410_lcd_timing = {  };  /* 405566 clocks per frame => 60Hz refresh requires 24333960Hz clock */ -static struct s3c_fb_platdata crag6410_lcd_pdata __initdata = { +static struct s3c_fb_platdata crag6410_lcd_pdata __devinitdata = {  	.setup_gpio	= s3c64xx_fb_gpio_setup_24bpp,  	.vtiming	= &crag6410_lcd_timing,  	.win[0]		= &crag6410_fb_win0, @@ -181,7 +181,7 @@ static struct s3c_fb_platdata crag6410_lcd_pdata __initdata = {  /* 2x6 keypad */ -static uint32_t crag6410_keymap[] __initdata = { +static uint32_t crag6410_keymap[] __devinitdata = {  	/* KEY(row, col, keycode) */  	KEY(0, 0, KEY_VOLUMEUP),  	KEY(0, 1, KEY_HOME), @@ -197,12 +197,12 @@ static uint32_t crag6410_keymap[] __initdata = {  	KEY(1, 5, KEY_CAMERA),  }; -static struct matrix_keymap_data crag6410_keymap_data __initdata = { +static struct matrix_keymap_data crag6410_keymap_data __devinitdata = {  	.keymap		= crag6410_keymap,  	.keymap_size	= ARRAY_SIZE(crag6410_keymap),  }; -static struct samsung_keypad_platdata crag6410_keypad_data __initdata = { +static struct samsung_keypad_platdata crag6410_keypad_data __devinitdata = {  	.keymap_data	= &crag6410_keymap_data,  	.rows		= 2,  	.cols		= 6, @@ -373,11 +373,11 @@ static struct wm831x_buckv_pdata vddarm_pdata = {  	.dvs_gpio = S3C64XX_GPK(0),  }; -static struct regulator_consumer_supply vddarm_consumers[] __initdata = { +static struct regulator_consumer_supply vddarm_consumers[] __devinitdata = {  	REGULATOR_SUPPLY("vddarm", NULL),  }; -static struct regulator_init_data vddarm __initdata = { +static struct regulator_init_data vddarm __devinitdata = {  	.constraints = {  		.name = "VDDARM",  		.min_uV = 1000000, @@ -391,11 +391,11 @@ static struct regulator_init_data vddarm __initdata = {  	.driver_data = &vddarm_pdata,  }; -static struct regulator_consumer_supply vddint_consumers[] __initdata = { +static struct regulator_consumer_supply vddint_consumers[] __devinitdata = {  	REGULATOR_SUPPLY("vddint", NULL),  }; -static struct regulator_init_data vddint __initdata = { +static struct regulator_init_data vddint __devinitdata = {  	.constraints = {  		.name = "VDDINT",  		.min_uV = 1000000, @@ -408,27 +408,27 @@ static struct regulator_init_data vddint __initdata = {  	.supply_regulator = "WALLVDD",  }; -static struct regulator_init_data vddmem __initdata = { +static struct regulator_init_data vddmem __devinitdata = {  	.constraints = {  		.name = "VDDMEM",  		.always_on = 1,  	},  }; -static struct regulator_init_data vddsys __initdata = { +static struct regulator_init_data vddsys __devinitdata = {  	.constraints = {  		.name = "VDDSYS,VDDEXT,VDDPCM,VDDSS",  		.always_on = 1,  	},  }; -static struct regulator_consumer_supply vddmmc_consumers[] __initdata = { +static struct regulator_consumer_supply vddmmc_consumers[] __devinitdata = {  	REGULATOR_SUPPLY("vmmc", "s3c-sdhci.0"),  	REGULATOR_SUPPLY("vmmc", "s3c-sdhci.1"),  	REGULATOR_SUPPLY("vmmc", "s3c-sdhci.2"),  }; -static struct regulator_init_data vddmmc __initdata = { +static struct regulator_init_data vddmmc __devinitdata = {  	.constraints = {  		.name = "VDDMMC,UH",  		.always_on = 1, @@ -438,7 +438,7 @@ static struct regulator_init_data vddmmc __initdata = {  	.supply_regulator = "WALLVDD",  }; -static struct regulator_init_data vddotgi __initdata = { +static struct regulator_init_data vddotgi __devinitdata = {  	.constraints = {  		.name = "VDDOTGi",  		.always_on = 1, @@ -446,7 +446,7 @@ static struct regulator_init_data vddotgi __initdata = {  	.supply_regulator = "WALLVDD",  }; -static struct regulator_init_data vddotg __initdata = { +static struct regulator_init_data vddotg __devinitdata = {  	.constraints = {  		.name = "VDDOTG",  		.always_on = 1, @@ -454,7 +454,7 @@ static struct regulator_init_data vddotg __initdata = {  	.supply_regulator = "WALLVDD",  }; -static struct regulator_init_data vddhi __initdata = { +static struct regulator_init_data vddhi __devinitdata = {  	.constraints = {  		.name = "VDDHI",  		.always_on = 1, @@ -462,7 +462,7 @@ static struct regulator_init_data vddhi __initdata = {  	.supply_regulator = "WALLVDD",  }; -static struct regulator_init_data vddadc __initdata = { +static struct regulator_init_data vddadc __devinitdata = {  	.constraints = {  		.name = "VDDADC,VDDDAC",  		.always_on = 1, @@ -470,7 +470,7 @@ static struct regulator_init_data vddadc __initdata = {  	.supply_regulator = "WALLVDD",  }; -static struct regulator_init_data vddmem0 __initdata = { +static struct regulator_init_data vddmem0 __devinitdata = {  	.constraints = {  		.name = "VDDMEM0",  		.always_on = 1, @@ -478,7 +478,7 @@ static struct regulator_init_data vddmem0 __initdata = {  	.supply_regulator = "WALLVDD",  }; -static struct regulator_init_data vddpll __initdata = { +static struct regulator_init_data vddpll __devinitdata = {  	.constraints = {  		.name = "VDDPLL",  		.always_on = 1, @@ -486,7 +486,7 @@ static struct regulator_init_data vddpll __initdata = {  	.supply_regulator = "WALLVDD",  }; -static struct regulator_init_data vddlcd __initdata = { +static struct regulator_init_data vddlcd __devinitdata = {  	.constraints = {  		.name = "VDDLCD",  		.always_on = 1, @@ -494,7 +494,7 @@ static struct regulator_init_data vddlcd __initdata = {  	.supply_regulator = "WALLVDD",  }; -static struct regulator_init_data vddalive __initdata = { +static struct regulator_init_data vddalive __devinitdata = {  	.constraints = {  		.name = "VDDALIVE",  		.always_on = 1, @@ -502,30 +502,29 @@ static struct regulator_init_data vddalive __initdata = {  	.supply_regulator = "WALLVDD",  }; -static struct wm831x_backup_pdata banff_backup_pdata __initdata = { +static struct wm831x_backup_pdata banff_backup_pdata __devinitdata = {  	.charger_enable = 1,  	.vlim = 2500,  /* mV */  	.ilim = 200,   /* uA */  }; -static struct wm831x_status_pdata banff_red_led __initdata = { +static struct wm831x_status_pdata banff_red_led __devinitdata = {  	.name = "banff:red:",  	.default_src = WM831X_STATUS_MANUAL,  }; -static struct wm831x_status_pdata banff_green_led __initdata = { +static struct wm831x_status_pdata banff_green_led __devinitdata = {  	.name = "banff:green:",  	.default_src = WM831X_STATUS_MANUAL,  }; -static struct wm831x_touch_pdata touch_pdata __initdata = { +static struct wm831x_touch_pdata touch_pdata __devinitdata = {  	.data_irq = S3C_EINT(26),  	.pd_irq = S3C_EINT(27),  }; -static struct wm831x_pdata crag_pmic_pdata __initdata = { +static struct wm831x_pdata crag_pmic_pdata __devinitdata = {  	.wm831x_num = 1, -	.irq_base = BANFF_PMIC_IRQ_BASE,  	.gpio_base = BANFF_PMIC_GPIO_BASE,  	.soft_shutdown = true, @@ -568,7 +567,7 @@ static struct wm831x_pdata crag_pmic_pdata __initdata = {  	.touch = &touch_pdata,  }; -static struct i2c_board_info i2c_devs0[] __initdata = { +static struct i2c_board_info i2c_devs0[] __devinitdata = {  	{ I2C_BOARD_INFO("24c08", 0x50), },  	{ I2C_BOARD_INFO("tca6408", 0x20),  	  .platform_data = &crag6410_pca_data, @@ -583,12 +582,12 @@ static struct s3c2410_platform_i2c i2c0_pdata = {  	.frequency = 400000,  }; -static struct regulator_consumer_supply pvdd_1v2_consumers[] __initdata = { +static struct regulator_consumer_supply pvdd_1v2_consumers[] __devinitdata = {  	REGULATOR_SUPPLY("DCVDD", "spi0.0"),  	REGULATOR_SUPPLY("AVDD", "spi0.0"),  }; -static struct regulator_init_data pvdd_1v2 __initdata = { +static struct regulator_init_data pvdd_1v2 __devinitdata = {  	.constraints = {  		.name = "PVDD_1V2",  		.valid_ops_mask = REGULATOR_CHANGE_STATUS, @@ -598,7 +597,7 @@ static struct regulator_init_data pvdd_1v2 __initdata = {  	.num_consumer_supplies = ARRAY_SIZE(pvdd_1v2_consumers),  }; -static struct regulator_consumer_supply pvdd_1v8_consumers[] __initdata = { +static struct regulator_consumer_supply pvdd_1v8_consumers[] __devinitdata = {  	REGULATOR_SUPPLY("LDOVDD", "1-001a"),  	REGULATOR_SUPPLY("PLLVDD", "1-001a"),  	REGULATOR_SUPPLY("DBVDD", "1-001a"), @@ -612,7 +611,7 @@ static struct regulator_consumer_supply pvdd_1v8_consumers[] __initdata = {  	REGULATOR_SUPPLY("DBVDD", "spi0.0"),  }; -static struct regulator_init_data pvdd_1v8 __initdata = { +static struct regulator_init_data pvdd_1v8 __devinitdata = {  	.constraints = {  		.name = "PVDD_1V8",  		.always_on = 1, @@ -622,12 +621,12 @@ static struct regulator_init_data pvdd_1v8 __initdata = {  	.num_consumer_supplies = ARRAY_SIZE(pvdd_1v8_consumers),  }; -static struct regulator_consumer_supply pvdd_3v3_consumers[] __initdata = { +static struct regulator_consumer_supply pvdd_3v3_consumers[] __devinitdata = {  	REGULATOR_SUPPLY("MICVDD", "1-001a"),  	REGULATOR_SUPPLY("AVDD1", "1-001a"),  }; -static struct regulator_init_data pvdd_3v3 __initdata = { +static struct regulator_init_data pvdd_3v3 __devinitdata = {  	.constraints = {  		.name = "PVDD_3V3",  		.always_on = 1, @@ -637,7 +636,7 @@ static struct regulator_init_data pvdd_3v3 __initdata = {  	.num_consumer_supplies = ARRAY_SIZE(pvdd_3v3_consumers),  }; -static struct wm831x_pdata glenfarclas_pmic_pdata __initdata = { +static struct wm831x_pdata glenfarclas_pmic_pdata __devinitdata = {  	.wm831x_num = 2,  	.irq_base = GLENFARCLAS_PMIC_IRQ_BASE,  	.gpio_base = GLENFARCLAS_PMIC_GPIO_BASE, @@ -669,7 +668,7 @@ static struct wm1250_ev1_pdata wm1250_ev1_pdata = {  	},  }; -static struct i2c_board_info i2c_devs1[] __initdata = { +static struct i2c_board_info i2c_devs1[] __devinitdata = {  	{ I2C_BOARD_INFO("wm8311", 0x34),  	  .irq = S3C_EINT(0),  	  .platform_data = &glenfarclas_pmic_pdata }, diff --git a/arch/arm/mach-s3c64xx/mach-smdk6410.c b/arch/arm/mach-s3c64xx/mach-smdk6410.c index df3103d450e..0fe4f1503f4 100644 --- a/arch/arm/mach-s3c64xx/mach-smdk6410.c +++ b/arch/arm/mach-s3c64xx/mach-smdk6410.c @@ -566,7 +566,6 @@ static struct wm831x_status_pdata wm1192_led8_pdata = {  static struct wm831x_pdata smdk6410_wm1192_pdata = {  	.pre_init = wm1192_pre_init, -	.irq_base = IRQ_BOARD_START,  	.backlight = &wm1192_backlight_pdata,  	.dcdc = { diff --git a/arch/arm/mach-s5pv210/Kconfig b/arch/arm/mach-s5pv210/Kconfig index 88e983b0c82..77185c38188 100644 --- a/arch/arm/mach-s5pv210/Kconfig +++ b/arch/arm/mach-s5pv210/Kconfig @@ -152,6 +152,7 @@ config MACH_SMDKV210  	select S3C_DEV_I2C1  	select S3C_DEV_I2C2  	select S3C_DEV_RTC +	select S3C_DEV_USB_HSOTG  	select S3C_DEV_WDT  	select S5P_DEV_FIMC0  	select S5P_DEV_FIMC1 @@ -170,6 +171,7 @@ config MACH_SMDKV210  	select S5PV210_SETUP_IDE  	select S5PV210_SETUP_KEYPAD  	select S5PV210_SETUP_SDHCI +	select S5PV210_SETUP_USB_PHY  	help  	  Machine support for Samsung SMDKV210 diff --git a/arch/arm/mach-s5pv210/mach-aquila.c b/arch/arm/mach-s5pv210/mach-aquila.c index af528f9e97f..78028df86c5 100644 --- a/arch/arm/mach-s5pv210/mach-aquila.c +++ b/arch/arm/mach-s5pv210/mach-aquila.c @@ -600,10 +600,17 @@ static void aquila_setup_sdhci(void)  	s3c_sdhci2_set_platdata(&aquila_hsmmc2_data);  }; +/* Audio device */ +static struct platform_device aquila_device_audio = { +	.name = "smdk-audio", +	.id = -1, +}; +  static struct platform_device *aquila_devices[] __initdata = {  	&aquila_i2c_gpio_pmic,  	&aquila_i2c_gpio5,  	&aquila_device_gpiokeys, +	&aquila_device_audio,  	&s3c_device_fb,  	&s5p_device_onenand,  	&s3c_device_hsmmc0, diff --git a/arch/arm/mach-s5pv210/mach-goni.c b/arch/arm/mach-s5pv210/mach-goni.c index bf5087c2b7f..822a5595068 100644 --- a/arch/arm/mach-s5pv210/mach-goni.c +++ b/arch/arm/mach-s5pv210/mach-goni.c @@ -859,12 +859,19 @@ static struct s5p_platform_fimc goni_fimc_md_platdata __initdata = {  	.num_clients	= ARRAY_SIZE(goni_camera_sensors),  }; +/* Audio device */ +static struct platform_device goni_device_audio = { +	.name = "smdk-audio", +	.id = -1, +}; +  static struct platform_device *goni_devices[] __initdata = {  	&s3c_device_fb,  	&s5p_device_onenand,  	&goni_spi_gpio,  	&goni_i2c_gpio_pmic,  	&goni_i2c_gpio5, +	&goni_device_audio,  	&mmc2_fixed_voltage,  	&goni_device_gpiokeys,  	&s5p_device_mfc, @@ -901,7 +908,7 @@ static void __init goni_sound_init(void)  static void __init goni_map_io(void)  {  	s5pv210_init_io(NULL, 0); -	s3c24xx_init_clocks(24000000); +	s3c24xx_init_clocks(clk_xusbxti.rate);  	s3c24xx_init_uarts(goni_uartcfgs, ARRAY_SIZE(goni_uartcfgs));  	s5p_set_timer_source(S5P_PWM3, S5P_PWM4);  } @@ -959,8 +966,6 @@ static void __init goni_machine_init(void)  	/* KEYPAD */  	samsung_keypad_set_platdata(&keypad_data); -	clk_xusbxti.rate = 24000000; -  	platform_add_devices(goni_devices, ARRAY_SIZE(goni_devices));  } diff --git a/arch/arm/mach-s5pv210/mach-smdkv210.c b/arch/arm/mach-s5pv210/mach-smdkv210.c index 0d7ddec88eb..918b23d71fd 100644 --- a/arch/arm/mach-s5pv210/mach-smdkv210.c +++ b/arch/arm/mach-s5pv210/mach-smdkv210.c @@ -19,6 +19,7 @@  #include <linux/gpio.h>  #include <linux/delay.h>  #include <linux/pwm_backlight.h> +#include <linux/platform_data/s3c-hsotg.h>  #include <asm/hardware/vic.h>  #include <asm/mach/arch.h> @@ -47,6 +48,7 @@  #include <plat/backlight.h>  #include <plat/regs-fb-v4.h>  #include <plat/mfc.h> +#include <plat/clock.h>  #include "common.h" @@ -203,6 +205,9 @@ static struct s3c_fb_platdata smdkv210_lcd0_pdata __initdata = {  	.setup_gpio	= s5pv210_fb_gpio_setup_24bpp,  }; +/* USB OTG */ +static struct s3c_hsotg_plat smdkv210_hsotg_pdata; +  static struct platform_device *smdkv210_devices[] __initdata = {  	&s3c_device_adc,  	&s3c_device_cfcon, @@ -216,6 +221,7 @@ static struct platform_device *smdkv210_devices[] __initdata = {  	&s3c_device_i2c2,  	&s3c_device_rtc,  	&s3c_device_ts, +	&s3c_device_usb_hsotg,  	&s3c_device_wdt,  	&s5p_device_fimc0,  	&s5p_device_fimc1, @@ -279,7 +285,7 @@ static struct platform_pwm_backlight_data smdkv210_bl_data = {  static void __init smdkv210_map_io(void)  {  	s5pv210_init_io(NULL, 0); -	s3c24xx_init_clocks(24000000); +	s3c24xx_init_clocks(clk_xusbxti.rate);  	s3c24xx_init_uarts(smdkv210_uartcfgs, ARRAY_SIZE(smdkv210_uartcfgs));  	s5p_set_timer_source(S5P_PWM2, S5P_PWM4);  } @@ -314,6 +320,8 @@ static void __init smdkv210_machine_init(void)  	samsung_bl_set(&smdkv210_bl_gpio_info, &smdkv210_bl_data); +	s3c_hsotg_set_platdata(&smdkv210_hsotg_pdata); +  	platform_add_devices(smdkv210_devices, ARRAY_SIZE(smdkv210_devices));  } diff --git a/arch/arm/mach-tegra/Kconfig b/arch/arm/mach-tegra/Kconfig index 7c407393cd0..9077aaa398d 100644 --- a/arch/arm/mach-tegra/Kconfig +++ b/arch/arm/mach-tegra/Kconfig @@ -66,34 +66,12 @@ config MACH_HARMONY         help           Support for nVidia Harmony development platform -config MACH_KAEN -       bool "Kaen board" -       depends on ARCH_TEGRA_2x_SOC -       select MACH_SEABOARD -       help -         Support for the Kaen version of Seaboard -  config MACH_PAZ00         bool "Paz00 board"         depends on ARCH_TEGRA_2x_SOC         help           Support for the Toshiba AC100/Dynabook AZ netbook -config MACH_SEABOARD -       bool "Seaboard board" -       depends on ARCH_TEGRA_2x_SOC -       help -         Support for nVidia Seaboard development platform. It will -	 also be included for some of the derivative boards that -	 have large similarities with the seaboard design. - -config MACH_TEGRA_DT -	bool "Generic Tegra20 board (FDT support)" -	depends on ARCH_TEGRA_2x_SOC -	select USE_OF -	help -	  Support for generic NVIDIA Tegra20 boards using Flattened Device Tree -  config MACH_TRIMSLICE         bool "TrimSlice board"         depends on ARCH_TEGRA_2x_SOC @@ -101,20 +79,6 @@ config MACH_TRIMSLICE         help           Support for CompuLab TrimSlice platform -config MACH_WARIO -       bool "Wario board" -       depends on ARCH_TEGRA_2x_SOC -       select MACH_SEABOARD -       help -         Support for the Wario version of Seaboard - -config MACH_VENTANA -       bool "Ventana board" -       depends on ARCH_TEGRA_2x_SOC -       select MACH_TEGRA_DT -       help -         Support for the nVidia Ventana development platform -  choice          prompt "Default low-level debug console UART"          default TEGRA_DEBUG_UART_NONE diff --git a/arch/arm/mach-tegra/Makefile b/arch/arm/mach-tegra/Makefile index 90aae34245c..c3d7303b9ac 100644 --- a/arch/arm/mach-tegra/Makefile +++ b/arch/arm/mach-tegra/Makefile @@ -14,7 +14,6 @@ obj-$(CONFIG_CPU_IDLE)			+= cpuidle.o  obj-$(CONFIG_CPU_IDLE)			+= sleep.o  obj-$(CONFIG_ARCH_TEGRA_2x_SOC)         += tegra2_clocks.o  obj-$(CONFIG_ARCH_TEGRA_2x_SOC)		+= tegra2_emc.o -obj-$(CONFIG_ARCH_TEGRA_3x_SOC)		+= board-dt-tegra30.o  obj-$(CONFIG_ARCH_TEGRA_3x_SOC)		+= tegra30_clocks.o  obj-$(CONFIG_SMP)			+= platsmp.o headsmp.o  obj-$(CONFIG_SMP)                       += reset.o @@ -24,6 +23,9 @@ obj-$(CONFIG_CPU_FREQ)                  += cpu-tegra.o  obj-$(CONFIG_TEGRA_PCI)			+= pcie.o  obj-$(CONFIG_USB_SUPPORT)		+= usb_phy.o +obj-$(CONFIG_ARCH_TEGRA_2x_SOC)		+= board-dt-tegra20.o +obj-$(CONFIG_ARCH_TEGRA_3x_SOC)		+= board-dt-tegra30.o +  obj-$(CONFIG_MACH_HARMONY)              += board-harmony.o  obj-$(CONFIG_MACH_HARMONY)              += board-harmony-pinmux.o  obj-$(CONFIG_MACH_HARMONY)              += board-harmony-pcie.o @@ -32,14 +34,5 @@ obj-$(CONFIG_MACH_HARMONY)              += board-harmony-power.o  obj-$(CONFIG_MACH_PAZ00)		+= board-paz00.o  obj-$(CONFIG_MACH_PAZ00)		+= board-paz00-pinmux.o -obj-$(CONFIG_MACH_SEABOARD)             += board-seaboard.o -obj-$(CONFIG_MACH_SEABOARD)             += board-seaboard-pinmux.o - -obj-$(CONFIG_MACH_TEGRA_DT)             += board-dt-tegra20.o -obj-$(CONFIG_MACH_TEGRA_DT)             += board-harmony-pinmux.o -obj-$(CONFIG_MACH_TEGRA_DT)             += board-seaboard-pinmux.o -obj-$(CONFIG_MACH_TEGRA_DT)             += board-paz00-pinmux.o -obj-$(CONFIG_MACH_TEGRA_DT)             += board-trimslice-pinmux.o -  obj-$(CONFIG_MACH_TRIMSLICE)            += board-trimslice.o  obj-$(CONFIG_MACH_TRIMSLICE)            += board-trimslice-pinmux.o diff --git a/arch/arm/mach-tegra/Makefile.boot b/arch/arm/mach-tegra/Makefile.boot index 435f00ca3c5..7a1bb62ddcf 100644 --- a/arch/arm/mach-tegra/Makefile.boot +++ b/arch/arm/mach-tegra/Makefile.boot @@ -2,10 +2,10 @@ zreladdr-$(CONFIG_ARCH_TEGRA_2x_SOC)	+= 0x00008000  params_phys-$(CONFIG_ARCH_TEGRA_2x_SOC)	:= 0x00000100  initrd_phys-$(CONFIG_ARCH_TEGRA_2x_SOC)	:= 0x00800000 -dtb-$(CONFIG_MACH_HARMONY) += tegra20-harmony.dtb -dtb-$(CONFIG_MACH_PAZ00) += tegra20-paz00.dtb -dtb-$(CONFIG_MACH_SEABOARD) += tegra20-seaboard.dtb -dtb-$(CONFIG_MACH_TRIMSLICE) += tegra20-trimslice.dtb -dtb-$(CONFIG_MACH_VENTANA) += tegra20-ventana.dtb +dtb-$(CONFIG_ARCH_TEGRA_2x_SOC) += tegra20-harmony.dtb +dtb-$(CONFIG_ARCH_TEGRA_2x_SOC) += tegra20-paz00.dtb +dtb-$(CONFIG_ARCH_TEGRA_2x_SOC) += tegra20-seaboard.dtb +dtb-$(CONFIG_ARCH_TEGRA_2x_SOC) += tegra20-trimslice.dtb +dtb-$(CONFIG_ARCH_TEGRA_2x_SOC) += tegra20-ventana.dtb  dtb-$(CONFIG_ARCH_TEGRA_2x_SOC) += tegra20-whistler.dtb  dtb-$(CONFIG_ARCH_TEGRA_3x_SOC) += tegra30-cardhu.dtb diff --git a/arch/arm/mach-tegra/board-dt-tegra20.c b/arch/arm/mach-tegra/board-dt-tegra20.c index eb7249db50a..d0de9c1192f 100644 --- a/arch/arm/mach-tegra/board-dt-tegra20.c +++ b/arch/arm/mach-tegra/board-dt-tegra20.c @@ -64,6 +64,7 @@ struct of_dev_auxdata tegra20_auxdata_lookup[] __initdata = {  		       &tegra_ehci2_pdata),  	OF_DEV_AUXDATA("nvidia,tegra20-ehci", TEGRA_USB3_BASE, "tegra-ehci.2",  		       &tegra_ehci3_pdata), +	OF_DEV_AUXDATA("nvidia,tegra20-apbdma", 0x6000a000, "tegra-apbdma", NULL),  	{}  }; @@ -81,11 +82,6 @@ static __initdata struct tegra_clk_init_table tegra_dt_clk_init_table[] = {  	{ NULL,		NULL,		0,		0},  }; -static struct of_device_id tegra_dt_match_table[] __initdata = { -	{ .compatible = "simple-bus", }, -	{} -}; -  static void __init tegra_dt_init(void)  {  	tegra_clk_init_from_table(tegra_dt_clk_init_table); @@ -94,10 +90,74 @@ static void __init tegra_dt_init(void)  	 * Finished with the static registrations now; fill in the missing  	 * devices  	 */ -	of_platform_populate(NULL, tegra_dt_match_table, +	of_platform_populate(NULL, of_default_bus_match_table,  				tegra20_auxdata_lookup, NULL);  } +#ifdef CONFIG_MACH_TRIMSLICE +static void __init trimslice_init(void) +{ +	int ret; + +	ret = tegra_pcie_init(true, true); +	if (ret) +		pr_err("tegra_pci_init() failed: %d\n", ret); +} +#endif + +#ifdef CONFIG_MACH_HARMONY +static void __init harmony_init(void) +{ +	int ret; + +	ret = harmony_regulator_init(); +	if (ret) { +		pr_err("harmony_regulator_init() failed: %d\n", ret); +		return; +	} + +	ret = harmony_pcie_init(); +	if (ret) +		pr_err("harmony_pcie_init() failed: %d\n", ret); +} +#endif + +#ifdef CONFIG_MACH_PAZ00 +static void __init paz00_init(void) +{ +	tegra_paz00_wifikill_init(); +} +#endif + +static struct { +	char *machine; +	void (*init)(void); +} board_init_funcs[] = { +#ifdef CONFIG_MACH_TRIMSLICE +	{ "compulab,trimslice", trimslice_init }, +#endif +#ifdef CONFIG_MACH_HARMONY +	{ "nvidia,harmony", harmony_init }, +#endif +#ifdef CONFIG_MACH_PAZ00 +	{ "compal,paz00", paz00_init }, +#endif +}; + +static void __init tegra_dt_init_late(void) +{ +	int i; + +	tegra_init_late(); + +	for (i = 0; i < ARRAY_SIZE(board_init_funcs); i++) { +		if (of_machine_is_compatible(board_init_funcs[i].machine)) { +			board_init_funcs[i].init(); +			break; +		} +	} +} +  static const char *tegra20_dt_board_compat[] = {  	"nvidia,tegra20",  	NULL @@ -110,7 +170,7 @@ DT_MACHINE_START(TEGRA_DT, "nVidia Tegra20 (Flattened Device Tree)")  	.handle_irq	= gic_handle_irq,  	.timer		= &tegra_timer,  	.init_machine	= tegra_dt_init, -	.init_late	= tegra_init_late, +	.init_late	= tegra_dt_init_late,  	.restart	= tegra_assert_system_reset,  	.dt_compat	= tegra20_dt_board_compat,  MACHINE_END diff --git a/arch/arm/mach-tegra/board-dt-tegra30.c b/arch/arm/mach-tegra/board-dt-tegra30.c index 4f76fa7a5da..ee48214bfd8 100644 --- a/arch/arm/mach-tegra/board-dt-tegra30.c +++ b/arch/arm/mach-tegra/board-dt-tegra30.c @@ -36,11 +36,6 @@  #include "board.h"  #include "clock.h" -static struct of_device_id tegra_dt_match_table[] __initdata = { -	{ .compatible = "simple-bus", }, -	{} -}; -  struct of_dev_auxdata tegra30_auxdata_lookup[] __initdata = {  	OF_DEV_AUXDATA("nvidia,tegra20-sdhci", 0x78000000, "sdhci-tegra.0", NULL),  	OF_DEV_AUXDATA("nvidia,tegra20-sdhci", 0x78000200, "sdhci-tegra.1", NULL), @@ -52,6 +47,7 @@ struct of_dev_auxdata tegra30_auxdata_lookup[] __initdata = {  	OF_DEV_AUXDATA("nvidia,tegra20-i2c", 0x7000C700, "tegra-i2c.3", NULL),  	OF_DEV_AUXDATA("nvidia,tegra20-i2c", 0x7000D000, "tegra-i2c.4", NULL),  	OF_DEV_AUXDATA("nvidia,tegra30-ahub", 0x70080000, "tegra30-ahub", NULL), +	OF_DEV_AUXDATA("nvidia,tegra30-apbdma", 0x6000a000, "tegra-apbdma", NULL),  	{}  }; @@ -74,7 +70,7 @@ static void __init tegra30_dt_init(void)  {  	tegra_clk_init_from_table(tegra_dt_clk_init_table); -	of_platform_populate(NULL, tegra_dt_match_table, +	of_platform_populate(NULL, of_default_bus_match_table,  				tegra30_auxdata_lookup, NULL);  } diff --git a/arch/arm/mach-tegra/board-harmony-pcie.c b/arch/arm/mach-tegra/board-harmony-pcie.c index 33c4fedab84..e8c3fda9bec 100644 --- a/arch/arm/mach-tegra/board-harmony-pcie.c +++ b/arch/arm/mach-tegra/board-harmony-pcie.c @@ -27,14 +27,11 @@  #ifdef CONFIG_TEGRA_PCI -static int __init harmony_pcie_init(void) +int __init harmony_pcie_init(void)  {  	struct regulator *regulator = NULL;  	int err; -	if (!machine_is_harmony()) -		return 0; -  	err = gpio_request(TEGRA_GPIO_EN_VDD_1V05_GPIO, "EN_VDD_1V05");  	if (err)  		return err; @@ -62,7 +59,15 @@ err_reg:  	return err;  } +static int __init harmony_pcie_initcall(void) +{ +	if (!machine_is_harmony()) +		return 0; + +	return harmony_pcie_init(); +} +  /* PCI should be initialized after I2C, mfd and regulators */ -subsys_initcall_sync(harmony_pcie_init); +subsys_initcall_sync(harmony_pcie_initcall);  #endif diff --git a/arch/arm/mach-tegra/board-harmony-power.c b/arch/arm/mach-tegra/board-harmony-power.c index 82f32300796..44dcb2e869b 100644 --- a/arch/arm/mach-tegra/board-harmony-power.c +++ b/arch/arm/mach-tegra/board-harmony-power.c @@ -20,6 +20,10 @@  #include <linux/gpio.h>  #include <linux/regulator/machine.h>  #include <linux/mfd/tps6586x.h> +#include <linux/of.h> +#include <linux/of_i2c.h> + +#include <asm/mach-types.h>  #include <mach/irqs.h> @@ -110,7 +114,26 @@ static struct i2c_board_info __initdata harmony_regulators[] = {  int __init harmony_regulator_init(void)  { -	i2c_register_board_info(3, harmony_regulators, 1); +	if (machine_is_harmony()) { +		i2c_register_board_info(3, harmony_regulators, 1); +	} else { /* Harmony, booted using device tree */ +		struct device_node *np; +		struct i2c_adapter *adapter; + +		np = of_find_node_by_path("/i2c@7000d000"); +		if (np == NULL) { +			pr_err("Could not find device_node for DVC I2C\n"); +			return -ENODEV; +		} + +		adapter = of_find_i2c_adapter_by_node(np); +		if (!adapter) { +			pr_err("Could not find i2c_adapter for DVC I2C\n"); +			return -ENODEV; +		} + +		i2c_new_device(adapter, harmony_regulators); +	}  	return 0;  } diff --git a/arch/arm/mach-tegra/board-paz00.c b/arch/arm/mach-tegra/board-paz00.c index bbc1907e98a..4b64af5cab2 100644 --- a/arch/arm/mach-tegra/board-paz00.c +++ b/arch/arm/mach-tegra/board-paz00.c @@ -148,7 +148,6 @@ static struct platform_device *paz00_devices[] __initdata = {  	&debug_uart,  	&tegra_sdhci_device4,  	&tegra_sdhci_device1, -	&wifi_rfkill_device,  	&leds_gpio,  	&gpio_keys_device,  }; @@ -201,6 +200,11 @@ static struct tegra_sdhci_platform_data sdhci_pdata4 = {  	.is_8bit	= 1,  }; +void __init tegra_paz00_wifikill_init(void) +{ +	platform_device_register(&wifi_rfkill_device); +} +  static void __init tegra_paz00_init(void)  {  	tegra_clk_init_from_table(paz00_clk_init_table); @@ -211,6 +215,7 @@ static void __init tegra_paz00_init(void)  	tegra_sdhci_device4.dev.platform_data = &sdhci_pdata4;  	platform_add_devices(paz00_devices, ARRAY_SIZE(paz00_devices)); +	tegra_paz00_wifikill_init();  	paz00_i2c_init();  	paz00_usb_init(); diff --git a/arch/arm/mach-tegra/board-seaboard-pinmux.c b/arch/arm/mach-tegra/board-seaboard-pinmux.c deleted file mode 100644 index 11fc8a568c6..00000000000 --- a/arch/arm/mach-tegra/board-seaboard-pinmux.c +++ /dev/null @@ -1,197 +0,0 @@ -/* - * Copyright (C) 2010-2012 NVIDIA Corporation - * Copyright (C) 2011 Google, Inc. - * - * This software is licensed under the terms of the GNU General Public - * License version 2, as published by the Free Software Foundation, and - * may be copied, distributed, and modified under those terms. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the - * GNU General Public License for more details. - * - */ - -#include <linux/kernel.h> - -#include "board-seaboard.h" -#include "board-pinmux.h" - -static unsigned long seaboard_pincfg_drive_sdio1[] = { -	TEGRA_PINCONF_PACK(TEGRA_PINCONF_PARAM_HIGH_SPEED_MODE, 0), -	TEGRA_PINCONF_PACK(TEGRA_PINCONF_PARAM_SCHMITT, 0), -	TEGRA_PINCONF_PACK(TEGRA_PINCONF_PARAM_LOW_POWER_MODE, 3), -	TEGRA_PINCONF_PACK(TEGRA_PINCONF_PARAM_DRIVE_DOWN_STRENGTH, 31), -	TEGRA_PINCONF_PACK(TEGRA_PINCONF_PARAM_DRIVE_UP_STRENGTH, 31), -	TEGRA_PINCONF_PACK(TEGRA_PINCONF_PARAM_SLEW_RATE_FALLING, 3), -	TEGRA_PINCONF_PACK(TEGRA_PINCONF_PARAM_SLEW_RATE_RISING, 3), -}; - -static struct pinctrl_map common_map[] = { -	TEGRA_MAP_MUXCONF("ata",   "ide",           none, driven), -	TEGRA_MAP_MUXCONF("atb",   "sdio4",         none, driven), -	TEGRA_MAP_MUXCONF("atc",   "nand",          none, driven), -	TEGRA_MAP_MUXCONF("atd",   "gmi",           none, driven), -	TEGRA_MAP_MUXCONF("ate",   "gmi",           none, tristate), -	TEGRA_MAP_MUXCONF("cdev1", "plla_out",      none, driven), -	TEGRA_MAP_MUXCONF("cdev2", "pllp_out4",     none, driven), -	TEGRA_MAP_MUXCONF("crtp",  "crt",           up,   tristate), -	TEGRA_MAP_MUXCONF("csus",  "vi_sensor_clk", none, tristate), -	TEGRA_MAP_MUXCONF("dap1",  "dap1",          none, driven), -	TEGRA_MAP_MUXCONF("dap2",  "dap2",          none, driven), -	TEGRA_MAP_MUXCONF("dap3",  "dap3",          none, tristate), -	TEGRA_MAP_MUXCONF("dap4",  "dap4",          none, driven), -	TEGRA_MAP_MUXCONF("dta",   "vi",            down, driven), -	TEGRA_MAP_MUXCONF("dtb",   "vi",            down, driven), -	TEGRA_MAP_MUXCONF("dtc",   "vi",            down, driven), -	TEGRA_MAP_MUXCONF("dtd",   "vi",            down, driven), -	TEGRA_MAP_MUXCONF("dte",   "vi",            down, tristate), -	TEGRA_MAP_MUXCONF("dtf",   "i2c3",          none, driven), -	TEGRA_MAP_MUXCONF("gma",   "sdio4",         none, driven), -	TEGRA_MAP_MUXCONF("gmb",   "gmi",           up,   tristate), -	TEGRA_MAP_MUXCONF("gmc",   "uartd",         none, driven), -	TEGRA_MAP_MUXCONF("gme",   "sdio4",         none, driven), -	TEGRA_MAP_MUXCONF("gpu",   "pwm",           none, driven), -	TEGRA_MAP_MUXCONF("gpu7",  "rtck",          none, driven), -	TEGRA_MAP_MUXCONF("gpv",   "pcie",          none, tristate), -	TEGRA_MAP_MUXCONF("hdint", "hdmi",          na,   tristate), -	TEGRA_MAP_MUXCONF("i2cp",  "i2cp",          none, driven), -	TEGRA_MAP_MUXCONF("irrx",  "uartb",         none, driven), -	TEGRA_MAP_MUXCONF("irtx",  "uartb",         none, driven), -	TEGRA_MAP_MUXCONF("kbca",  "kbc",           up,   driven), -	TEGRA_MAP_MUXCONF("kbcb",  "kbc",           up,   driven), -	TEGRA_MAP_MUXCONF("kbcc",  "kbc",           up,   driven), -	TEGRA_MAP_MUXCONF("kbcd",  "kbc",           up,   driven), -	TEGRA_MAP_MUXCONF("kbce",  "kbc",           up,   driven), -	TEGRA_MAP_MUXCONF("kbcf",  "kbc",           up,   driven), -	TEGRA_MAP_MUXCONF("lcsn",  "rsvd4",         na,   tristate), -	TEGRA_MAP_MUXCONF("ld0",   "displaya",      na,   driven), -	TEGRA_MAP_MUXCONF("ld1",   "displaya",      na,   driven), -	TEGRA_MAP_MUXCONF("ld10",  "displaya",      na,   driven), -	TEGRA_MAP_MUXCONF("ld11",  "displaya",      na,   driven), -	TEGRA_MAP_MUXCONF("ld12",  "displaya",      na,   driven), -	TEGRA_MAP_MUXCONF("ld13",  "displaya",      na,   driven), -	TEGRA_MAP_MUXCONF("ld14",  "displaya",      na,   driven), -	TEGRA_MAP_MUXCONF("ld15",  "displaya",      na,   driven), -	TEGRA_MAP_MUXCONF("ld16",  "displaya",      na,   driven), -	TEGRA_MAP_MUXCONF("ld17",  "displaya",      na,   driven), -	TEGRA_MAP_MUXCONF("ld2",   "displaya",      na,   driven), -	TEGRA_MAP_MUXCONF("ld3",   "displaya",      na,   driven), -	TEGRA_MAP_MUXCONF("ld4",   "displaya",      na,   driven), -	TEGRA_MAP_MUXCONF("ld5",   "displaya",      na,   driven), -	TEGRA_MAP_MUXCONF("ld6",   "displaya",      na,   driven), -	TEGRA_MAP_MUXCONF("ld7",   "displaya",      na,   driven), -	TEGRA_MAP_MUXCONF("ld8",   "displaya",      na,   driven), -	TEGRA_MAP_MUXCONF("ld9",   "displaya",      na,   driven), -	TEGRA_MAP_MUXCONF("ldc",   "rsvd4",         na,   tristate), -	TEGRA_MAP_MUXCONF("ldi",   "displaya",      na,   driven), -	TEGRA_MAP_MUXCONF("lhp0",  "displaya",      na,   driven), -	TEGRA_MAP_MUXCONF("lhp1",  "displaya",      na,   driven), -	TEGRA_MAP_MUXCONF("lhp2",  "displaya",      na,   driven), -	TEGRA_MAP_MUXCONF("lhs",   "displaya",      na,   driven), -	TEGRA_MAP_MUXCONF("lm0",   "rsvd4",         na,   driven), -	TEGRA_MAP_MUXCONF("lm1",   "crt",           na,   tristate), -	TEGRA_MAP_MUXCONF("lpp",   "displaya",      na,   driven), -	TEGRA_MAP_MUXCONF("lpw1",  "rsvd4",         na,   tristate), -	TEGRA_MAP_MUXCONF("lsc0",  "displaya",      na,   driven), -	TEGRA_MAP_MUXCONF("lsdi",  "rsvd4",         na,   tristate), -	TEGRA_MAP_MUXCONF("lspi",  "displaya",      na,   driven), -	TEGRA_MAP_MUXCONF("lvp0",  "rsvd4",         na,   tristate), -	TEGRA_MAP_MUXCONF("lvp1",  "displaya",      na,   driven), -	TEGRA_MAP_MUXCONF("lvs",   "displaya",      na,   driven), -	TEGRA_MAP_MUXCONF("owc",   "rsvd2",         none, tristate), -	TEGRA_MAP_MUXCONF("pmc",   "pwr_on",        na,   driven), -	TEGRA_MAP_MUXCONF("pta",   "hdmi",          none, driven), -	TEGRA_MAP_MUXCONF("rm",    "i2c1",          none, driven), -	TEGRA_MAP_MUXCONF("sdb",   "sdio3",         na,   driven), -	TEGRA_MAP_MUXCONF("sdc",   "sdio3",         none, driven), -	TEGRA_MAP_MUXCONF("sdd",   "sdio3",         none, driven), -	TEGRA_MAP_MUXCONF("sdio1", "sdio1",         up,   driven), -	TEGRA_MAP_MUXCONF("slxa",  "pcie",          up,   tristate), -	TEGRA_MAP_MUXCONF("slxd",  "spdif",         none, driven), -	TEGRA_MAP_MUXCONF("slxk",  "pcie",          none, driven), -	TEGRA_MAP_MUXCONF("spdi",  "rsvd2",         none, driven), -	TEGRA_MAP_MUXCONF("spdo",  "rsvd2",         none, driven), -	TEGRA_MAP_MUXCONF("spib",  "gmi",           none, tristate), -	TEGRA_MAP_MUXCONF("spid",  "spi1",          none, tristate), -	TEGRA_MAP_MUXCONF("spie",  "spi1",          none, tristate), -	TEGRA_MAP_MUXCONF("spif",  "spi1",          down, tristate), -	TEGRA_MAP_MUXCONF("spih",  "spi2_alt",      up,   tristate), -	TEGRA_MAP_MUXCONF("uaa",   "ulpi",          up,   driven), -	TEGRA_MAP_MUXCONF("uab",   "ulpi",          up,   driven), -	TEGRA_MAP_MUXCONF("uac",   "rsvd2",         none, driven), -	TEGRA_MAP_MUXCONF("uad",   "irda",          none, driven), -	TEGRA_MAP_MUXCONF("uca",   "uartc",         none, driven), -	TEGRA_MAP_MUXCONF("ucb",   "uartc",         none, driven), -	TEGRA_MAP_MUXCONF("uda",   "ulpi",          none, driven), -	TEGRA_MAP_CONF("ck32",    none, na), -	TEGRA_MAP_CONF("ddrc",    none, na), -	TEGRA_MAP_CONF("pmca",    none, na), -	TEGRA_MAP_CONF("pmcb",    none, na), -	TEGRA_MAP_CONF("pmcc",    none, na), -	TEGRA_MAP_CONF("pmcd",    none, na), -	TEGRA_MAP_CONF("pmce",    none, na), -	TEGRA_MAP_CONF("xm2c",    none, na), -	TEGRA_MAP_CONF("xm2d",    none, na), -	TEGRA_MAP_CONF("ls",      up,   na), -	TEGRA_MAP_CONF("lc",      up,   na), -	TEGRA_MAP_CONF("ld17_0",  down, na), -	TEGRA_MAP_CONF("ld19_18", down, na), -	TEGRA_MAP_CONF("ld21_20", down, na), -	TEGRA_MAP_CONF("ld23_22", down, na), -}; - -static struct pinctrl_map seaboard_map[] = { -	TEGRA_MAP_MUXCONF("ddc",   "rsvd2",         none, tristate), -	TEGRA_MAP_MUXCONF("gmd",   "sflash",        none, driven), -	TEGRA_MAP_MUXCONF("lpw0",  "hdmi",          na,   driven), -	TEGRA_MAP_MUXCONF("lpw2",  "hdmi",          na,   driven), -	TEGRA_MAP_MUXCONF("lsc1",  "hdmi",          na,   tristate), -	TEGRA_MAP_MUXCONF("lsck",  "hdmi",          na,   tristate), -	TEGRA_MAP_MUXCONF("lsda",  "hdmi",          na,   tristate), -	TEGRA_MAP_MUXCONF("slxc",  "spdif",         none, tristate), -	TEGRA_MAP_MUXCONF("spia",  "gmi",           up,   tristate), -	TEGRA_MAP_MUXCONF("spic",  "gmi",           up,   driven), -	TEGRA_MAP_MUXCONF("spig",  "spi2_alt",      up,   tristate), -	PIN_MAP_CONFIGS_GROUP_HOG_DEFAULT(PINMUX_DEV, "drive_sdio1", seaboard_pincfg_drive_sdio1), -}; - -static struct pinctrl_map ventana_map[] = { -	TEGRA_MAP_MUXCONF("ddc",   "rsvd2",         none, driven), -	TEGRA_MAP_MUXCONF("gmd",   "sflash",        none, tristate), -	TEGRA_MAP_MUXCONF("lpw0",  "displaya",      na,   driven), -	TEGRA_MAP_MUXCONF("lpw2",  "displaya",      na,   driven), -	TEGRA_MAP_MUXCONF("lsc1",  "displaya",      na,   driven), -	TEGRA_MAP_MUXCONF("lsck",  "displaya",      na,   tristate), -	TEGRA_MAP_MUXCONF("lsda",  "displaya",      na,   tristate), -	TEGRA_MAP_MUXCONF("slxc",  "sdio3",         none, driven), -	TEGRA_MAP_MUXCONF("spia",  "gmi",           none, tristate), -	TEGRA_MAP_MUXCONF("spic",  "gmi",           none, tristate), -	TEGRA_MAP_MUXCONF("spig",  "spi2_alt",      none, tristate), -}; - -static struct tegra_board_pinmux_conf common_conf = { -	.maps = common_map, -	.map_count = ARRAY_SIZE(common_map), -}; - -static struct tegra_board_pinmux_conf seaboard_conf = { -	.maps = seaboard_map, -	.map_count = ARRAY_SIZE(seaboard_map), -}; - -static struct tegra_board_pinmux_conf ventana_conf = { -	.maps = ventana_map, -	.map_count = ARRAY_SIZE(ventana_map), -}; - -void seaboard_pinmux_init(void) -{ -	tegra_board_pinmux_init(&common_conf, &seaboard_conf); -} - -void ventana_pinmux_init(void) -{ -	tegra_board_pinmux_init(&common_conf, &ventana_conf); -} diff --git a/arch/arm/mach-tegra/board-seaboard.c b/arch/arm/mach-tegra/board-seaboard.c deleted file mode 100644 index 71e9f3fc7fb..00000000000 --- a/arch/arm/mach-tegra/board-seaboard.c +++ /dev/null @@ -1,306 +0,0 @@ -/* - * Copyright (c) 2010, 2011 NVIDIA Corporation. - * Copyright (C) 2010, 2011 Google, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for - * more details. - * - */ - -#include <linux/kernel.h> -#include <linux/init.h> -#include <linux/platform_device.h> -#include <linux/serial_8250.h> -#include <linux/of_serial.h> -#include <linux/i2c.h> -#include <linux/delay.h> -#include <linux/input.h> -#include <linux/io.h> -#include <linux/gpio.h> -#include <linux/gpio_keys.h> -#include <linux/platform_data/tegra_usb.h> - -#include <sound/wm8903.h> - -#include <mach/iomap.h> -#include <mach/irqs.h> -#include <mach/sdhci.h> -#include <mach/tegra_wm8903_pdata.h> - -#include <asm/mach-types.h> -#include <asm/mach/arch.h> -#include <asm/hardware/gic.h> - -#include "board.h" -#include "board-seaboard.h" -#include "clock.h" -#include "devices.h" -#include "gpio-names.h" - -static struct plat_serial8250_port debug_uart_platform_data[] = { -	{ -		/* Memory and IRQ filled in before registration */ -		.flags		= UPF_BOOT_AUTOCONF | UPF_FIXED_TYPE, -		.type		= PORT_TEGRA, -		.handle_break	= tegra_serial_handle_break, -		.iotype		= UPIO_MEM, -		.regshift	= 2, -		.uartclk	= 216000000, -	}, { -		.flags		= 0, -	} -}; - -static struct platform_device debug_uart = { -	.name = "serial8250", -	.id = PLAT8250_DEV_PLATFORM, -	.dev = { -		.platform_data = debug_uart_platform_data, -	}, -}; - -static __initdata struct tegra_clk_init_table seaboard_clk_init_table[] = { -	/* name		parent		rate		enabled */ -	{ "uartb",	"pll_p",	216000000,	true}, -	{ "uartd",	"pll_p",	216000000,	true}, -	{ "pll_a",	"pll_p_out1",	56448000,	true }, -	{ "pll_a_out0",	"pll_a",	11289600,	true }, -	{ "cdev1",	NULL,		0,		true }, -	{ "i2s1",	"pll_a_out0",	11289600,	false}, -	{ "usbd",	"clk_m",	12000000,	true}, -	{ "usb3",	"clk_m",	12000000,	true}, -	{ NULL,		NULL,		0,		0}, -}; - -static struct gpio_keys_button seaboard_gpio_keys_buttons[] = { -	{ -		.code		= SW_LID, -		.gpio		= TEGRA_GPIO_LIDSWITCH, -		.active_low	= 0, -		.desc		= "Lid", -		.type		= EV_SW, -		.wakeup		= 1, -		.debounce_interval = 1, -	}, -	{ -		.code		= KEY_POWER, -		.gpio		= TEGRA_GPIO_POWERKEY, -		.active_low	= 1, -		.desc		= "Power", -		.type		= EV_KEY, -		.wakeup		= 1, -	}, -}; - -static struct gpio_keys_platform_data seaboard_gpio_keys = { -	.buttons	= seaboard_gpio_keys_buttons, -	.nbuttons	= ARRAY_SIZE(seaboard_gpio_keys_buttons), -}; - -static struct platform_device seaboard_gpio_keys_device = { -	.name		= "gpio-keys", -	.id		= -1, -	.dev		= { -		.platform_data = &seaboard_gpio_keys, -	} -}; - -static struct tegra_sdhci_platform_data sdhci_pdata1 = { -	.cd_gpio	= -1, -	.wp_gpio	= -1, -	.power_gpio	= -1, -}; - -static struct tegra_sdhci_platform_data sdhci_pdata3 = { -	.cd_gpio	= TEGRA_GPIO_SD2_CD, -	.wp_gpio	= TEGRA_GPIO_SD2_WP, -	.power_gpio	= TEGRA_GPIO_SD2_POWER, -}; - -static struct tegra_sdhci_platform_data sdhci_pdata4 = { -	.cd_gpio	= -1, -	.wp_gpio	= -1, -	.power_gpio	= -1, -	.is_8bit	= 1, -}; - -static struct tegra_wm8903_platform_data seaboard_audio_pdata = { -	.gpio_spkr_en		= TEGRA_GPIO_SPKR_EN, -	.gpio_hp_det		= TEGRA_GPIO_HP_DET, -	.gpio_hp_mute		= -1, -	.gpio_int_mic_en	= -1, -	.gpio_ext_mic_en	= -1, -}; - -static struct platform_device seaboard_audio_device = { -	.name	= "tegra-snd-wm8903", -	.id	= 0, -	.dev	= { -		.platform_data  = &seaboard_audio_pdata, -	}, -}; - -static struct platform_device *seaboard_devices[] __initdata = { -	&debug_uart, -	&tegra_pmu_device, -	&tegra_sdhci_device4, -	&tegra_sdhci_device3, -	&tegra_sdhci_device1, -	&seaboard_gpio_keys_device, -	&tegra_i2s_device1, -	&tegra_das_device, -	&seaboard_audio_device, -}; - -static struct i2c_board_info __initdata isl29018_device = { -	I2C_BOARD_INFO("isl29018", 0x44), -}; - -static struct i2c_board_info __initdata adt7461_device = { -	I2C_BOARD_INFO("adt7461", 0x4c), -}; - -static struct wm8903_platform_data wm8903_pdata = { -	.irq_active_low = 0, -	.micdet_cfg = 0, -	.micdet_delay = 100, -	.gpio_base = SEABOARD_GPIO_WM8903(0), -	.gpio_cfg = { -		0, -		0, -		WM8903_GPIO_CONFIG_ZERO, -		0, -		0, -	}, -}; - -static struct i2c_board_info __initdata wm8903_device = { -	I2C_BOARD_INFO("wm8903", 0x1a), -	.platform_data = &wm8903_pdata, -}; - -static int seaboard_ehci_init(void) -{ -	struct tegra_ehci_platform_data *pdata; - -	pdata = tegra_ehci1_device.dev.platform_data; -	pdata->vbus_gpio = TEGRA_GPIO_USB1; - -	platform_device_register(&tegra_ehci1_device); -	platform_device_register(&tegra_ehci3_device); - -	return 0; -} - -static void __init seaboard_i2c_init(void) -{ -	isl29018_device.irq = gpio_to_irq(TEGRA_GPIO_ISL29018_IRQ); -	i2c_register_board_info(0, &isl29018_device, 1); - -	wm8903_device.irq = gpio_to_irq(TEGRA_GPIO_CDC_IRQ); -	i2c_register_board_info(0, &wm8903_device, 1); - -	i2c_register_board_info(3, &adt7461_device, 1); - -	platform_device_register(&tegra_i2c_device1); -	platform_device_register(&tegra_i2c_device2); -	platform_device_register(&tegra_i2c_device3); -	platform_device_register(&tegra_i2c_device4); -} - -static void __init seaboard_common_init(void) -{ -	seaboard_pinmux_init(); - -	tegra_clk_init_from_table(seaboard_clk_init_table); - -	tegra_sdhci_device1.dev.platform_data = &sdhci_pdata1; -	tegra_sdhci_device3.dev.platform_data = &sdhci_pdata3; -	tegra_sdhci_device4.dev.platform_data = &sdhci_pdata4; - -	platform_add_devices(seaboard_devices, ARRAY_SIZE(seaboard_devices)); - -	seaboard_ehci_init(); -} - -static void __init tegra_seaboard_init(void) -{ -	/* Seaboard uses UARTD for the debug port. */ -	debug_uart_platform_data[0].membase = IO_ADDRESS(TEGRA_UARTD_BASE); -	debug_uart_platform_data[0].mapbase = TEGRA_UARTD_BASE; -	debug_uart_platform_data[0].irq = INT_UARTD; - -	seaboard_common_init(); - -	seaboard_i2c_init(); -} - -static void __init tegra_kaen_init(void) -{ -	/* Kaen uses UARTB for the debug port. */ -	debug_uart_platform_data[0].membase = IO_ADDRESS(TEGRA_UARTB_BASE); -	debug_uart_platform_data[0].mapbase = TEGRA_UARTB_BASE; -	debug_uart_platform_data[0].irq = INT_UARTB; - -	seaboard_audio_pdata.gpio_hp_mute = TEGRA_GPIO_KAEN_HP_MUTE; - -	seaboard_common_init(); - -	seaboard_i2c_init(); -} - -static void __init tegra_wario_init(void) -{ -	/* Wario uses UARTB for the debug port. */ -	debug_uart_platform_data[0].membase = IO_ADDRESS(TEGRA_UARTB_BASE); -	debug_uart_platform_data[0].mapbase = TEGRA_UARTB_BASE; -	debug_uart_platform_data[0].irq = INT_UARTB; - -	seaboard_common_init(); - -	seaboard_i2c_init(); -} - - -MACHINE_START(SEABOARD, "seaboard") -	.atag_offset    = 0x100, -	.map_io         = tegra_map_common_io, -	.init_early     = tegra20_init_early, -	.init_irq       = tegra_init_irq, -	.handle_irq	= gic_handle_irq, -	.timer          = &tegra_timer, -	.init_machine   = tegra_seaboard_init, -	.init_late	= tegra_init_late, -	.restart	= tegra_assert_system_reset, -MACHINE_END - -MACHINE_START(KAEN, "kaen") -	.atag_offset    = 0x100, -	.map_io         = tegra_map_common_io, -	.init_early     = tegra20_init_early, -	.init_irq       = tegra_init_irq, -	.handle_irq	= gic_handle_irq, -	.timer          = &tegra_timer, -	.init_machine   = tegra_kaen_init, -	.init_late	= tegra_init_late, -	.restart	= tegra_assert_system_reset, -MACHINE_END - -MACHINE_START(WARIO, "wario") -	.atag_offset    = 0x100, -	.map_io         = tegra_map_common_io, -	.init_early     = tegra20_init_early, -	.init_irq       = tegra_init_irq, -	.handle_irq	= gic_handle_irq, -	.timer          = &tegra_timer, -	.init_machine   = tegra_wario_init, -	.init_late	= tegra_init_late, -	.restart	= tegra_assert_system_reset, -MACHINE_END diff --git a/arch/arm/mach-tegra/board-seaboard.h b/arch/arm/mach-tegra/board-seaboard.h deleted file mode 100644 index 4c45d4ca3c4..00000000000 --- a/arch/arm/mach-tegra/board-seaboard.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * arch/arm/mach-tegra/board-seaboard.h - * - * Copyright (C) 2010 Google, Inc. - * - * This software is licensed under the terms of the GNU General Public - * License version 2, as published by the Free Software Foundation, and - * may be copied, distributed, and modified under those terms. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the - * GNU General Public License for more details. - * - */ - -#ifndef _MACH_TEGRA_BOARD_SEABOARD_H -#define _MACH_TEGRA_BOARD_SEABOARD_H - -#include <mach/gpio-tegra.h> - -#define SEABOARD_GPIO_TPS6586X(_x_)	(TEGRA_NR_GPIOS + (_x_)) -#define SEABOARD_GPIO_WM8903(_x_)	(SEABOARD_GPIO_TPS6586X(4) + (_x_)) - -#define TEGRA_GPIO_SD2_CD		TEGRA_GPIO_PI5 -#define TEGRA_GPIO_SD2_WP		TEGRA_GPIO_PH1 -#define TEGRA_GPIO_SD2_POWER		TEGRA_GPIO_PI6 -#define TEGRA_GPIO_LIDSWITCH		TEGRA_GPIO_PC7 -#define TEGRA_GPIO_USB1			TEGRA_GPIO_PD0 -#define TEGRA_GPIO_POWERKEY		TEGRA_GPIO_PV2 -#define TEGRA_GPIO_BACKLIGHT		TEGRA_GPIO_PD4 -#define TEGRA_GPIO_LVDS_SHUTDOWN	TEGRA_GPIO_PB2 -#define TEGRA_GPIO_BACKLIGHT_PWM	TEGRA_GPIO_PU5 -#define TEGRA_GPIO_BACKLIGHT_VDD	TEGRA_GPIO_PW0 -#define TEGRA_GPIO_EN_VDD_PNL		TEGRA_GPIO_PC6 -#define TEGRA_GPIO_MAGNETOMETER		TEGRA_GPIO_PN5 -#define TEGRA_GPIO_ISL29018_IRQ		TEGRA_GPIO_PZ2 -#define TEGRA_GPIO_AC_ONLINE		TEGRA_GPIO_PV3 -#define TEGRA_GPIO_WWAN_PWR		SEABOARD_GPIO_TPS6586X(2) -#define TEGRA_GPIO_CDC_IRQ		TEGRA_GPIO_PX3 -#define TEGRA_GPIO_SPKR_EN		SEABOARD_GPIO_WM8903(2) -#define TEGRA_GPIO_HP_DET		TEGRA_GPIO_PX1 -#define TEGRA_GPIO_KAEN_HP_MUTE		TEGRA_GPIO_PA5 - -void seaboard_pinmux_init(void); - -#endif diff --git a/arch/arm/mach-tegra/board.h b/arch/arm/mach-tegra/board.h index 65014968fc6..f88e5143c76 100644 --- a/arch/arm/mach-tegra/board.h +++ b/arch/arm/mach-tegra/board.h @@ -46,5 +46,14 @@ int __init tegra_powergate_debugfs_init(void);  static inline int tegra_powergate_debugfs_init(void) { return 0; }  #endif +int __init harmony_regulator_init(void); +#ifdef CONFIG_TEGRA_PCI +int __init harmony_pcie_init(void); +#else +static inline int harmony_pcie_init(void) { return 0; } +#endif + +void __init tegra_paz00_wifikill_init(void); +  extern struct sys_timer tegra_timer;  #endif diff --git a/drivers/staging/omapdrm/omap_drv.h b/drivers/staging/omapdrm/omap_drv.h index f238d574da0..2092a9167d2 100644 --- a/drivers/staging/omapdrm/omap_drv.h +++ b/drivers/staging/omapdrm/omap_drv.h @@ -25,8 +25,8 @@  #include <linux/types.h>  #include <drm/drmP.h>  #include <drm/drm_crtc_helper.h> +#include <linux/platform_data/omap_drm.h>  #include "omap_drm.h" -#include "omap_priv.h"  #define DBG(fmt, ...) DRM_DEBUG(fmt"\n", ##__VA_ARGS__)  #define VERB(fmt, ...) if (0) DRM_DEBUG(fmt, ##__VA_ARGS__) /* verbose debug */ diff --git a/drivers/staging/omapdrm/omap_priv.h b/include/linux/platform_data/omap_drm.h index ef644144714..3da73bdc203 100644 --- a/drivers/staging/omapdrm/omap_priv.h +++ b/include/linux/platform_data/omap_drm.h @@ -1,8 +1,8 @@  /* - * include/drm/omap_priv.h + * DRM/KMS platform data for TI OMAP platforms   * - * Copyright (C) 2011 Texas Instruments - * Author: Rob Clark <rob@ti.com> + * Copyright (C) 2012 Texas Instruments + * Author: Rob Clark <rob.clark@linaro.org>   *   * This program is free software; you can redistribute it and/or modify it   * under the terms of the GNU General Public License version 2 as published by @@ -17,13 +17,11 @@   * this program.  If not, see <http://www.gnu.org/licenses/>.   */ -#ifndef __OMAP_PRIV_H__ -#define __OMAP_PRIV_H__ +#ifndef __PLATFORM_DATA_OMAP_DRM_H__ +#define __PLATFORM_DATA_OMAP_DRM_H__ -/* Non-userspace facing APIs - */ - -/* optional platform data to configure the default configuration of which +/* + * Optional platform data to configure the default configuration of which   * pipes/overlays/CRTCs are used.. if this is not provided, then instead the   * first CONFIG_DRM_OMAP_NUM_CRTCS are used, and they are each connected to   * one manager, with priority given to managers that are connected to @@ -49,7 +47,6 @@ struct omap_kms_platform_data {  struct omap_drm_platform_data {  	struct omap_kms_platform_data *kms_pdata; -	struct omap_dmm_platform_data *dmm_pdata;  }; -#endif /* __OMAP_DRM_H__ */ +#endif /* __PLATFORM_DATA_OMAP_DRM_H__ */ |