arm-soc: board specific updates
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. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) iQIVAwUAUA2dfmCrR//JCVInAQLsaw//az90mZ0Tub0UO01D0uIJORBwD9JsMTQM W3/L3FEByskB+ZbJ6HG6XEYIzbJZxN49RbXOl0DGOuqfAlAGO61jVMaSkOKsqMCz WoLxaMZFOB7UBCGD+dvJYriirnS3OwFbCJ0Zn1xvBnpsYC2qavhorpvIXcYHh/mK v1zBNuDWVeedKsjYQWEAI2O1kCRuFa0P91YlmdKA3pQ9kKoA/WORHVA2i8Ou+5Mc 5Yu1JQCxfJPFA0HA612zdj8bbQbqanlKgGlm7dYJ9lLSZBnQolrVMnLhVhl5wf8d YWlJsDdSyrbIY/HFd2xul4kWGZSg1PoKDFNwBDHoBBzdR25kXmER92PuskpwBeDo Nv56W7Hx2q7tob1woG5kE1tZFlE1cCT/MCVoLGDwpZnFJE0pBA1Hua15mB829k2y 2vnXjRIM3j020cMC9Qa9/6aFgQu5ojCvHTuKBEwFX4zxZGGrYStINhE8jg4MXI9Y NOaqo1MP2X84T7ONuWaiJv6MyluhdGofbzWyxVU7Af+im6N8M3Lezmw8mMfsXwiw URHHOKnBmbkQxAUKWq+G7xr+Ti5JxLkCSUrJffJSkXPOBojKnaAegRBxexM9NhTB Y6NPt0zKxiJqyFpW4WZ8+29GP6RbwRhoeUNyI88i3RQwa3pwHAOiExZ3q86no9rO ONQe3uLFr3k= =nKn1 -----END PGP SIGNATURE----- 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 ...
This commit is contained in:
commit
f1d2c07d33
|
@ -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).
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 },
|
||||
};
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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 },
|
||||
};
|
||||
|
||||
|
|
|
@ -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 = {
|
||||
|
|
|
@ -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;
|
||||
|
|
61
arch/arm/mach-omap2/drm.c
Normal file
61
arch/arm/mach-omap2/drm.c
Normal file
|
@ -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
|
|
@ -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)
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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 = {
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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);
|
||||
}
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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__ */
|
Loading…
Reference in a new issue