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:
@@ -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__ */
|
Reference in New Issue
Block a user