Merge tag 'armsoc-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
Pull ARM SoC platform updates from Arnd Bergmann: "These are updates for platform specific code on 32-bit ARM machines, essentially anything that can not (yet) be expressed using DT files. Noteworthy changes include: - We get support for running in big-endian mode on two platforms: sunxi (Allwinner) and s3c24xx (old Samsung). - The recently added Uniphier platform now uses standard PSCI methods for SMP booting and we remove support for old bootloader versions that did not support it yet. - In sunxi, we gain support for the "Nextthing GR8" SoC, which is a close relative of the Allwinner A13 and R8 chips. - PXA completes its move over to the generic dmaengine framework and removes its old private API - mach-bcm gains support for BCM47189/BCM53573, their first ARM SoC with integrated 802.11ac wireless networking" * tag 'armsoc-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (54 commits) ARM: imx legacy: pca100: move peripheral initialization to .init_late ARM: imx legacy: mx27ads: move peripheral initialization to .init_late ARM: imx legacy: mx21ads: move peripheral initialization to .init_late ARM: imx legacy: pcm043: move peripheral initialization to .init_late ARM: imx legacy: mx35-3ds: move peripheral initialization to .init_late ARM: imx legacy: mx27-3ds: move peripheral initialization to .init_late ARM: imx legacy: imx27-visstrim-m10: move peripheral initialization to .init_late ARM: imx legacy: vpr200: move peripheral initialization to .init_late ARM: imx legacy: mx31moboard: move peripheral initialization to .init_late ARM: imx legacy: armadillo5x0: move peripheral initialization to .init_late ARM: imx legacy: qong: move peripheral initialization to .init_late ARM: imx legacy: mx31-3ds: move peripheral initialization to .init_late ARM: imx legacy: pcm037: move peripheral initialization to .init_late ARM: imx legacy: mx31lilly: move peripheral initialization to .init_late ARM: imx legacy: mx31ads: move peripheral initialization to .init_late ARM: imx legacy: mx31lite: move peripheral initialization to .init_late ARM: imx legacy: kzm: move peripheral initialization to .init_late MAINTAINERS: update list of Oxnas maintainers ARM: orion5x: remove extraneous NO_IRQ ARM: orion: simplify orion_ge00_switch_init ...
Cette révision appartient à :
@@ -27,6 +27,7 @@ obj-$(CONFIG_SOC_IMX5) += cpuidle-imx5.o
|
||||
obj-$(CONFIG_SOC_IMX6Q) += cpuidle-imx6q.o
|
||||
obj-$(CONFIG_SOC_IMX6SL) += cpuidle-imx6sl.o
|
||||
obj-$(CONFIG_SOC_IMX6SX) += cpuidle-imx6sx.o
|
||||
obj-$(CONFIG_SOC_IMX6UL) += cpuidle-imx6sx.o
|
||||
endif
|
||||
|
||||
ifdef CONFIG_SND_IMX_SOC
|
||||
|
@@ -104,7 +104,7 @@ void imx_anatop_init(void);
|
||||
void imx_anatop_pre_suspend(void);
|
||||
void imx_anatop_post_resume(void);
|
||||
int imx6_set_lpm(enum mxc_cpu_pwr_mode mode);
|
||||
void imx6q_set_int_mem_clk_lpm(bool enable);
|
||||
void imx6_set_int_mem_clk_lpm(bool enable);
|
||||
void imx6sl_set_wait_clk(bool enter);
|
||||
int imx_mmdc_get_ddr_type(void);
|
||||
|
||||
|
@@ -85,7 +85,7 @@ EXPORT_SYMBOL_GPL(imx6q_cpuidle_fec_irqs_unused);
|
||||
int __init imx6q_cpuidle_init(void)
|
||||
{
|
||||
/* Set INT_MEM_CLK_LPM bit to get a reliable WAIT mode support */
|
||||
imx6q_set_int_mem_clk_lpm(true);
|
||||
imx6_set_int_mem_clk_lpm(true);
|
||||
|
||||
return cpuidle_register(&imx6q_cpuidle_driver, NULL);
|
||||
}
|
||||
|
@@ -9,6 +9,7 @@
|
||||
#include <linux/cpuidle.h>
|
||||
#include <linux/cpu_pm.h>
|
||||
#include <linux/module.h>
|
||||
#include <asm/cacheflush.h>
|
||||
#include <asm/cpuidle.h>
|
||||
#include <asm/suspend.h>
|
||||
|
||||
@@ -17,6 +18,15 @@
|
||||
|
||||
static int imx6sx_idle_finish(unsigned long val)
|
||||
{
|
||||
/*
|
||||
* for Cortex-A7 which has an internal L2
|
||||
* cache, need to flush it before powering
|
||||
* down ARM platform, since flushing L1 cache
|
||||
* here again has very small overhead, compared
|
||||
* to adding conditional code for L2 cache type,
|
||||
* just call flush_cache_all() is fine.
|
||||
*/
|
||||
flush_cache_all();
|
||||
cpu_do_idle();
|
||||
|
||||
return 0;
|
||||
@@ -90,6 +100,7 @@ static struct cpuidle_driver imx6sx_cpuidle_driver = {
|
||||
|
||||
int __init imx6sx_cpuidle_init(void)
|
||||
{
|
||||
imx6_set_int_mem_clk_lpm(true);
|
||||
imx6_enable_rbc(false);
|
||||
/*
|
||||
* set ARM power up/down timing to the fastest,
|
||||
|
@@ -493,24 +493,12 @@ static void __init armadillo5x0_init(void)
|
||||
|
||||
regulator_register_fixed(0, dummy_supplies, ARRAY_SIZE(dummy_supplies));
|
||||
|
||||
armadillo5x0_smc911x_resources[1].start =
|
||||
gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO1_0));
|
||||
armadillo5x0_smc911x_resources[1].end =
|
||||
gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO1_0));
|
||||
platform_add_devices(devices, ARRAY_SIZE(devices));
|
||||
imx_add_gpio_keys(&armadillo5x0_button_data);
|
||||
imx31_add_imx_i2c1(NULL);
|
||||
|
||||
/* Register UART */
|
||||
imx31_add_imx_uart0(&uart_pdata);
|
||||
imx31_add_imx_uart1(&uart_pdata);
|
||||
|
||||
/* SMSC9118 IRQ pin */
|
||||
gpio_direction_input(MX31_PIN_GPIO1_0);
|
||||
|
||||
/* Register SDHC */
|
||||
imx31_add_mxc_mmc(0, &sdhc_pdata);
|
||||
|
||||
/* Register FB */
|
||||
imx31_add_ipu_core();
|
||||
imx31_add_mx3_sdc_fb(&mx3fb_pdata);
|
||||
@@ -527,21 +515,39 @@ static void __init armadillo5x0_init(void)
|
||||
/* set NAND page size to 2k if not configured via boot mode pins */
|
||||
imx_writel(imx_readl(mx3_ccm_base + MXC_CCM_RCSR) | (1 << 30),
|
||||
mx3_ccm_base + MXC_CCM_RCSR);
|
||||
}
|
||||
|
||||
static void __init armadillo5x0_late(void)
|
||||
{
|
||||
armadillo5x0_smc911x_resources[1].start =
|
||||
gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO1_0));
|
||||
armadillo5x0_smc911x_resources[1].end =
|
||||
gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO1_0));
|
||||
platform_add_devices(devices, ARRAY_SIZE(devices));
|
||||
|
||||
imx_add_gpio_keys(&armadillo5x0_button_data);
|
||||
|
||||
/* SMSC9118 IRQ pin */
|
||||
gpio_direction_input(MX31_PIN_GPIO1_0);
|
||||
|
||||
/* Register SDHC */
|
||||
imx31_add_mxc_mmc(0, &sdhc_pdata);
|
||||
|
||||
/* RTC */
|
||||
/* Get RTC IRQ and register the chip */
|
||||
if (gpio_request(ARMADILLO5X0_RTC_GPIO, "rtc") == 0) {
|
||||
if (gpio_direction_input(ARMADILLO5X0_RTC_GPIO) == 0)
|
||||
armadillo5x0_i2c_rtc.irq = gpio_to_irq(ARMADILLO5X0_RTC_GPIO);
|
||||
if (!gpio_request(ARMADILLO5X0_RTC_GPIO, "rtc")) {
|
||||
if (!gpio_direction_input(ARMADILLO5X0_RTC_GPIO))
|
||||
armadillo5x0_i2c_rtc.irq =
|
||||
gpio_to_irq(ARMADILLO5X0_RTC_GPIO);
|
||||
else
|
||||
gpio_free(ARMADILLO5X0_RTC_GPIO);
|
||||
}
|
||||
|
||||
if (armadillo5x0_i2c_rtc.irq == 0)
|
||||
pr_warn("armadillo5x0_init: failed to get RTC IRQ\n");
|
||||
i2c_register_board_info(1, &armadillo5x0_i2c_rtc, 1);
|
||||
|
||||
/* USB */
|
||||
|
||||
usbotg_pdata.otg = imx_otg_ulpi_create(ULPI_OTG_DRVVBUS |
|
||||
ULPI_OTG_DRVVBUS_EXT);
|
||||
if (usbotg_pdata.otg)
|
||||
@@ -565,5 +571,6 @@ MACHINE_START(ARMADILLO5X0, "Armadillo-500")
|
||||
.init_irq = mx31_init_irq,
|
||||
.init_time = armadillo5x0_timer_init,
|
||||
.init_machine = armadillo5x0_init,
|
||||
.init_late = armadillo5x0_late,
|
||||
.restart = mxc_restart,
|
||||
MACHINE_END
|
||||
|
@@ -540,7 +540,6 @@ static void __init visstrim_m10_revision(void)
|
||||
static void __init visstrim_m10_board_init(void)
|
||||
{
|
||||
int ret;
|
||||
int mo_version;
|
||||
|
||||
imx27_soc_init();
|
||||
visstrim_m10_revision();
|
||||
@@ -550,11 +549,6 @@ static void __init visstrim_m10_board_init(void)
|
||||
if (ret)
|
||||
pr_err("Failed to setup pins (%d)\n", ret);
|
||||
|
||||
ret = gpio_request_array(visstrim_m10_gpios,
|
||||
ARRAY_SIZE(visstrim_m10_gpios));
|
||||
if (ret)
|
||||
pr_err("Failed to request gpios (%d)\n", ret);
|
||||
|
||||
imx27_add_imx_ssi(0, &visstrim_m10_ssi_pdata);
|
||||
imx27_add_imx_uart0(&uart_pdata);
|
||||
|
||||
@@ -566,12 +560,26 @@ static void __init visstrim_m10_board_init(void)
|
||||
imx27_add_mxc_mmc(0, &visstrim_m10_sdhc_pdata);
|
||||
imx27_add_mxc_ehci_otg(&visstrim_m10_usbotg_pdata);
|
||||
imx27_add_fec(NULL);
|
||||
imx_add_gpio_keys(&visstrim_gpio_keys_platform_data);
|
||||
|
||||
platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
|
||||
}
|
||||
|
||||
static void __init visstrim_m10_late_init(void)
|
||||
{
|
||||
int mo_version, ret;
|
||||
|
||||
ret = gpio_request_array(visstrim_m10_gpios,
|
||||
ARRAY_SIZE(visstrim_m10_gpios));
|
||||
if (ret)
|
||||
pr_err("Failed to request gpios (%d)\n", ret);
|
||||
|
||||
imx_add_gpio_keys(&visstrim_gpio_keys_platform_data);
|
||||
|
||||
imx_add_platform_device("mx27vis", 0, NULL, 0, &snd_mx27vis_pdata,
|
||||
sizeof(snd_mx27vis_pdata));
|
||||
platform_device_register_resndata(NULL, "soc-camera-pdrv", 0, NULL, 0,
|
||||
&iclink_tvp5150, sizeof(iclink_tvp5150));
|
||||
|
||||
gpio_led_register_device(0, &visstrim_m10_led_data);
|
||||
|
||||
/* Use mother board version to decide what video devices we shall use */
|
||||
@@ -591,6 +599,7 @@ static void __init visstrim_m10_board_init(void)
|
||||
visstrim_deinterlace_init();
|
||||
visstrim_analog_camera_init();
|
||||
}
|
||||
|
||||
visstrim_coda_init();
|
||||
}
|
||||
|
||||
@@ -607,5 +616,6 @@ MACHINE_START(IMX27_VISSTRIM_M10, "Vista Silicon Visstrim_M10")
|
||||
.init_irq = mx27_init_irq,
|
||||
.init_time = visstrim_m10_timer_init,
|
||||
.init_machine = visstrim_m10_board_init,
|
||||
.init_late = visstrim_m10_late_init,
|
||||
.restart = mxc_restart,
|
||||
MACHINE_END
|
||||
|
@@ -16,6 +16,7 @@
|
||||
#include <asm/mach/map.h>
|
||||
|
||||
#include "common.h"
|
||||
#include "cpuidle.h"
|
||||
|
||||
static void __init imx6ul_enet_clk_init(void)
|
||||
{
|
||||
@@ -80,6 +81,8 @@ static void __init imx6ul_init_irq(void)
|
||||
|
||||
static void __init imx6ul_init_late(void)
|
||||
{
|
||||
imx6sx_cpuidle_init();
|
||||
|
||||
if (IS_ENABLED(CONFIG_ARM_IMX6Q_CPUFREQ))
|
||||
platform_device_register_simple("imx6q-cpufreq", -1, NULL, 0);
|
||||
}
|
||||
|
@@ -245,13 +245,17 @@ static void __init kzm_board_init(void)
|
||||
|
||||
mxc_iomux_setup_multiple_pins(kzm_pins,
|
||||
ARRAY_SIZE(kzm_pins), "kzm");
|
||||
kzm_init_ext_uart();
|
||||
kzm_init_smsc9118();
|
||||
kzm_init_imx_uart();
|
||||
|
||||
pr_info("Clock input source is 26MHz\n");
|
||||
}
|
||||
|
||||
static void __init kzm_late_init(void)
|
||||
{
|
||||
kzm_init_ext_uart();
|
||||
kzm_init_smsc9118();
|
||||
}
|
||||
|
||||
/*
|
||||
* This structure defines static mappings for the kzm-arm11-01 board.
|
||||
*/
|
||||
@@ -291,5 +295,6 @@ MACHINE_START(KZM_ARM11_01, "Kyoto Microcomputer Co., Ltd. KZM-ARM11-01")
|
||||
.init_irq = mx31_init_irq,
|
||||
.init_time = kzm_timer_init,
|
||||
.init_machine = kzm_board_init,
|
||||
.init_late = kzm_late_init,
|
||||
.restart = mxc_restart,
|
||||
MACHINE_END
|
||||
|
@@ -302,12 +302,16 @@ static void __init mx21ads_board_init(void)
|
||||
imx21_add_imx_uart0(&uart_pdata_rts);
|
||||
imx21_add_imx_uart2(&uart_pdata_norts);
|
||||
imx21_add_imx_uart3(&uart_pdata_rts);
|
||||
imx21_add_mxc_mmc(0, &mx21ads_sdhc_pdata);
|
||||
imx21_add_mxc_nand(&mx21ads_nand_board_info);
|
||||
|
||||
platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
|
||||
|
||||
imx21_add_imx_fb(&mx21ads_fb_data);
|
||||
}
|
||||
|
||||
static void __init mx21ads_late_init(void)
|
||||
{
|
||||
imx21_add_mxc_mmc(0, &mx21ads_sdhc_pdata);
|
||||
|
||||
platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
|
||||
|
||||
mx21ads_cs8900_resources[1].start =
|
||||
gpio_to_irq(MX21ADS_CS8900A_IRQ_GPIO);
|
||||
@@ -328,6 +332,7 @@ MACHINE_START(MX21ADS, "Freescale i.MX21ADS")
|
||||
.init_early = imx21_init_early,
|
||||
.init_irq = mx21_init_irq,
|
||||
.init_time = mx21ads_timer_init,
|
||||
.init_machine = mx21ads_board_init,
|
||||
.init_machine = mx21ads_board_init,
|
||||
.init_late = mx21ads_late_init,
|
||||
.restart = mxc_restart,
|
||||
MACHINE_END
|
||||
|
@@ -485,17 +485,32 @@ static const struct imxi2c_platform_data mx27_3ds_i2c0_data __initconst = {
|
||||
|
||||
static void __init mx27pdk_init(void)
|
||||
{
|
||||
int ret;
|
||||
imx27_soc_init();
|
||||
|
||||
mxc_gpio_setup_multiple_pins(mx27pdk_pins, ARRAY_SIZE(mx27pdk_pins),
|
||||
"mx27pdk");
|
||||
mx27_3ds_sdhc1_enable_level_translator();
|
||||
imx27_add_imx_uart0(&uart_pdata);
|
||||
imx27_add_fec(NULL);
|
||||
imx27_add_imx_keypad(&mx27_3ds_keymap_data);
|
||||
imx27_add_mxc_mmc(0, &sdhc1_pdata);
|
||||
imx27_add_imx2_wdt();
|
||||
|
||||
imx27_add_spi_imx1(&spi2_pdata);
|
||||
imx27_add_spi_imx0(&spi1_pdata);
|
||||
|
||||
imx27_add_imx_i2c(0, &mx27_3ds_i2c0_data);
|
||||
platform_add_devices(devices, ARRAY_SIZE(devices));
|
||||
imx27_add_imx_fb(&mx27_3ds_fb_data);
|
||||
|
||||
imx27_add_imx_ssi(0, &mx27_3ds_ssi_pdata);
|
||||
}
|
||||
|
||||
static void __init mx27pdk_late_init(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
mx27_3ds_sdhc1_enable_level_translator();
|
||||
imx27_add_mxc_mmc(0, &sdhc1_pdata);
|
||||
|
||||
otg_phy_init();
|
||||
|
||||
if (otg_mode_host) {
|
||||
@@ -509,17 +524,12 @@ static void __init mx27pdk_init(void)
|
||||
if (!otg_mode_host)
|
||||
imx27_add_fsl_usb2_udc(&otg_device_pdata);
|
||||
|
||||
imx27_add_spi_imx1(&spi2_pdata);
|
||||
imx27_add_spi_imx0(&spi1_pdata);
|
||||
mx27_3ds_spi_devs[0].irq = gpio_to_irq(PMIC_INT);
|
||||
spi_register_board_info(mx27_3ds_spi_devs,
|
||||
ARRAY_SIZE(mx27_3ds_spi_devs));
|
||||
ARRAY_SIZE(mx27_3ds_spi_devs));
|
||||
|
||||
if (mxc_expio_init(MX27_CS5_BASE_ADDR, IMX_GPIO_NR(3, 28)))
|
||||
pr_warn("Init of the debugboard failed, all devices on the debugboard are unusable.\n");
|
||||
imx27_add_imx_i2c(0, &mx27_3ds_i2c0_data);
|
||||
platform_add_devices(devices, ARRAY_SIZE(devices));
|
||||
imx27_add_imx_fb(&mx27_3ds_fb_data);
|
||||
|
||||
ret = gpio_request_array(mx27_3ds_camera_gpios,
|
||||
ARRAY_SIZE(mx27_3ds_camera_gpios));
|
||||
@@ -529,7 +539,6 @@ static void __init mx27pdk_init(void)
|
||||
}
|
||||
|
||||
imx27_add_mx2_camera(&mx27_3ds_cam_pdata);
|
||||
imx27_add_imx_ssi(0, &mx27_3ds_ssi_pdata);
|
||||
|
||||
imx_add_platform_device("imx_mc13783", 0, NULL, 0, NULL, 0);
|
||||
}
|
||||
@@ -547,5 +556,6 @@ MACHINE_START(MX27_3DS, "Freescale MX27PDK")
|
||||
.init_irq = mx27_init_irq,
|
||||
.init_time = mx27pdk_timer_init,
|
||||
.init_machine = mx27pdk_init,
|
||||
.init_late = mx27pdk_late_init,
|
||||
.restart = mxc_restart,
|
||||
MACHINE_END
|
||||
|
@@ -352,14 +352,20 @@ static void __init mx27ads_board_init(void)
|
||||
i2c_register_board_info(1, mx27ads_i2c_devices,
|
||||
ARRAY_SIZE(mx27ads_i2c_devices));
|
||||
imx27_add_imx_i2c(1, &mx27ads_i2c1_data);
|
||||
mx27ads_regulator_init();
|
||||
imx27_add_imx_fb(&mx27ads_fb_data);
|
||||
|
||||
imx27_add_fec(NULL);
|
||||
imx27_add_mxc_w1();
|
||||
}
|
||||
|
||||
static void __init mx27ads_late_init(void)
|
||||
{
|
||||
mx27ads_regulator_init();
|
||||
|
||||
imx27_add_mxc_mmc(0, &sdhc1_pdata);
|
||||
imx27_add_mxc_mmc(1, &sdhc2_pdata);
|
||||
|
||||
imx27_add_fec(NULL);
|
||||
platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
|
||||
imx27_add_mxc_w1();
|
||||
}
|
||||
|
||||
static void __init mx27ads_timer_init(void)
|
||||
@@ -395,5 +401,6 @@ MACHINE_START(MX27ADS, "Freescale i.MX27ADS")
|
||||
.init_irq = mx27_init_irq,
|
||||
.init_time = mx27ads_timer_init,
|
||||
.init_machine = mx27ads_board_init,
|
||||
.init_late = mx27ads_late_init,
|
||||
.restart = mxc_restart,
|
||||
MACHINE_END
|
||||
|
@@ -694,8 +694,6 @@ static struct platform_device *devices[] __initdata = {
|
||||
|
||||
static void __init mx31_3ds_init(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
imx31_soc_init();
|
||||
|
||||
/* Configure SPI1 IOMUX */
|
||||
@@ -708,14 +706,31 @@ static void __init mx31_3ds_init(void)
|
||||
imx31_add_mxc_nand(&mx31_3ds_nand_board_info);
|
||||
|
||||
imx31_add_spi_imx1(&spi1_pdata);
|
||||
mx31_3ds_spi_devs[0].irq = gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO1_3));
|
||||
spi_register_board_info(mx31_3ds_spi_devs,
|
||||
ARRAY_SIZE(mx31_3ds_spi_devs));
|
||||
|
||||
platform_add_devices(devices, ARRAY_SIZE(devices));
|
||||
|
||||
imx31_add_imx_keypad(&mx31_3ds_keymap_data);
|
||||
|
||||
imx31_add_imx2_wdt();
|
||||
imx31_add_imx_i2c0(&mx31_3ds_i2c0_data);
|
||||
|
||||
imx31_add_spi_imx0(&spi0_pdata);
|
||||
imx31_add_ipu_core();
|
||||
imx31_add_mx3_sdc_fb(&mx3fb_pdata);
|
||||
|
||||
imx31_add_imx_ssi(0, &mx31_3ds_ssi_pdata);
|
||||
|
||||
imx_add_platform_device("imx_mc13783", 0, NULL, 0, NULL, 0);
|
||||
}
|
||||
|
||||
static void __init mx31_3ds_late(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
mx31_3ds_spi_devs[0].irq = gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO1_3));
|
||||
spi_register_board_info(mx31_3ds_spi_devs,
|
||||
ARRAY_SIZE(mx31_3ds_spi_devs));
|
||||
|
||||
platform_add_devices(devices, ARRAY_SIZE(devices));
|
||||
|
||||
mx31_3ds_usbotg_init();
|
||||
if (otg_mode_host) {
|
||||
otg_pdata.otg = imx_otg_ulpi_create(ULPI_OTG_DRVVBUS |
|
||||
@@ -733,14 +748,9 @@ static void __init mx31_3ds_init(void)
|
||||
|
||||
if (mxc_expio_init(MX31_CS5_BASE_ADDR, IOMUX_TO_GPIO(MX31_PIN_GPIO1_1)))
|
||||
printk(KERN_WARNING "Init of the debug board failed, all "
|
||||
"devices on the debug board are unusable.\n");
|
||||
imx31_add_imx2_wdt();
|
||||
imx31_add_imx_i2c0(&mx31_3ds_i2c0_data);
|
||||
imx31_add_mxc_mmc(0, &sdhc1_pdata);
|
||||
"devices on the debug board are unusable.\n");
|
||||
|
||||
imx31_add_spi_imx0(&spi0_pdata);
|
||||
imx31_add_ipu_core();
|
||||
imx31_add_mx3_sdc_fb(&mx3fb_pdata);
|
||||
imx31_add_mxc_mmc(0, &sdhc1_pdata);
|
||||
|
||||
/* CSI */
|
||||
/* Camera power: default - off */
|
||||
@@ -752,10 +762,6 @@ static void __init mx31_3ds_init(void)
|
||||
}
|
||||
|
||||
mx31_3ds_init_camera();
|
||||
|
||||
imx31_add_imx_ssi(0, &mx31_3ds_ssi_pdata);
|
||||
|
||||
imx_add_platform_device("imx_mc13783", 0, NULL, 0, NULL, 0);
|
||||
}
|
||||
|
||||
static void __init mx31_3ds_timer_init(void)
|
||||
@@ -778,6 +784,7 @@ MACHINE_START(MX31_3DS, "Freescale MX31PDK (3DS)")
|
||||
.init_irq = mx31_init_irq,
|
||||
.init_time = mx31_3ds_timer_init,
|
||||
.init_machine = mx31_3ds_init,
|
||||
.init_late = mx31_3ds_late,
|
||||
.reserve = mx31_3ds_reserve,
|
||||
.restart = mxc_restart,
|
||||
MACHINE_END
|
||||
|
@@ -554,20 +554,19 @@ static void __init mx31ads_map_io(void)
|
||||
iotable_init(mx31ads_io_desc, ARRAY_SIZE(mx31ads_io_desc));
|
||||
}
|
||||
|
||||
static void __init mx31ads_init_irq(void)
|
||||
{
|
||||
mx31_init_irq();
|
||||
mx31ads_init_expio();
|
||||
}
|
||||
|
||||
static void __init mx31ads_init(void)
|
||||
{
|
||||
imx31_soc_init();
|
||||
|
||||
mxc_init_extuart();
|
||||
mxc_init_imx_uart();
|
||||
mxc_init_i2c();
|
||||
mxc_init_audio();
|
||||
}
|
||||
|
||||
static void __init mx31ads_late(void)
|
||||
{
|
||||
mx31ads_init_expio();
|
||||
mxc_init_extuart();
|
||||
mxc_init_i2c();
|
||||
mxc_init_ext_ethernet();
|
||||
}
|
||||
|
||||
@@ -581,8 +580,9 @@ MACHINE_START(MX31ADS, "Freescale MX31ADS")
|
||||
.atag_offset = 0x100,
|
||||
.map_io = mx31ads_map_io,
|
||||
.init_early = imx31_init_early,
|
||||
.init_irq = mx31ads_init_irq,
|
||||
.init_irq = mx31_init_irq,
|
||||
.init_time = mx31ads_timer_init,
|
||||
.init_machine = mx31ads_init,
|
||||
.init_late = mx31ads_late,
|
||||
.restart = mxc_restart,
|
||||
MACHINE_END
|
||||
|
@@ -56,6 +56,26 @@
|
||||
* appropriate baseboard support code.
|
||||
*/
|
||||
|
||||
static unsigned int mx31lilly_pins[] __initdata = {
|
||||
MX31_PIN_CTS1__CTS1,
|
||||
MX31_PIN_RTS1__RTS1,
|
||||
MX31_PIN_TXD1__TXD1,
|
||||
MX31_PIN_RXD1__RXD1,
|
||||
MX31_PIN_CTS2__CTS2,
|
||||
MX31_PIN_RTS2__RTS2,
|
||||
MX31_PIN_TXD2__TXD2,
|
||||
MX31_PIN_RXD2__RXD2,
|
||||
MX31_PIN_CSPI3_MOSI__RXD3,
|
||||
MX31_PIN_CSPI3_MISO__TXD3,
|
||||
MX31_PIN_CSPI3_SCLK__RTS3,
|
||||
MX31_PIN_CSPI3_SPI_RDY__CTS3,
|
||||
};
|
||||
|
||||
/* UART */
|
||||
static const struct imxuart_platform_data uart_pdata __initconst = {
|
||||
.flags = IMXUART_HAVE_RTSCTS,
|
||||
};
|
||||
|
||||
/* SMSC ethernet support */
|
||||
|
||||
static struct resource smsc91x_resources[] = {
|
||||
@@ -252,16 +272,12 @@ static void __init mx31lilly_board_init(void)
|
||||
{
|
||||
imx31_soc_init();
|
||||
|
||||
switch (mx31lilly_baseboard) {
|
||||
case MX31LILLY_NOBOARD:
|
||||
break;
|
||||
case MX31LILLY_DB:
|
||||
mx31lilly_db_init();
|
||||
break;
|
||||
default:
|
||||
printk(KERN_ERR "Illegal mx31lilly_baseboard type %d\n",
|
||||
mx31lilly_baseboard);
|
||||
}
|
||||
mxc_iomux_setup_multiple_pins(mx31lilly_pins,
|
||||
ARRAY_SIZE(mx31lilly_pins), "mx31lily");
|
||||
|
||||
imx31_add_imx_uart0(&uart_pdata);
|
||||
imx31_add_imx_uart1(&uart_pdata);
|
||||
imx31_add_imx_uart2(&uart_pdata);
|
||||
|
||||
mxc_iomux_alloc_pin(MX31_PIN_CS4__CS4, "Ethernet CS");
|
||||
|
||||
@@ -284,10 +300,17 @@ static void __init mx31lilly_board_init(void)
|
||||
|
||||
imx31_add_spi_imx0(&spi0_pdata);
|
||||
imx31_add_spi_imx1(&spi1_pdata);
|
||||
mc13783_dev.irq = gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO1_3));
|
||||
spi_register_board_info(&mc13783_dev, 1);
|
||||
|
||||
regulator_register_fixed(0, dummy_supplies, ARRAY_SIZE(dummy_supplies));
|
||||
}
|
||||
|
||||
static void __init mx31lilly_late_init(void)
|
||||
{
|
||||
if (mx31lilly_baseboard == MX31LILLY_DB)
|
||||
mx31lilly_db_init();
|
||||
|
||||
mc13783_dev.irq = gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO1_3));
|
||||
spi_register_board_info(&mc13783_dev, 1);
|
||||
|
||||
smsc91x_resources[1].start =
|
||||
gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO1_0));
|
||||
@@ -310,6 +333,7 @@ MACHINE_START(LILLY1131, "INCO startec LILLY-1131")
|
||||
.init_early = imx31_init_early,
|
||||
.init_irq = mx31_init_irq,
|
||||
.init_time = mx31lilly_timer_init,
|
||||
.init_machine = mx31lilly_board_init,
|
||||
.init_machine = mx31lilly_board_init,
|
||||
.init_late = mx31lilly_late_init,
|
||||
.restart = mxc_restart,
|
||||
MACHINE_END
|
||||
|
@@ -52,6 +52,19 @@
|
||||
*/
|
||||
|
||||
static unsigned int mx31lite_pins[] = {
|
||||
/* UART1 */
|
||||
MX31_PIN_CTS1__CTS1,
|
||||
MX31_PIN_RTS1__RTS1,
|
||||
MX31_PIN_TXD1__TXD1,
|
||||
MX31_PIN_RXD1__RXD1,
|
||||
/* SPI 0 */
|
||||
MX31_PIN_CSPI1_SCLK__SCLK,
|
||||
MX31_PIN_CSPI1_MOSI__MOSI,
|
||||
MX31_PIN_CSPI1_MISO__MISO,
|
||||
MX31_PIN_CSPI1_SPI_RDY__SPI_RDY,
|
||||
MX31_PIN_CSPI1_SS0__SS0,
|
||||
MX31_PIN_CSPI1_SS1__SS1,
|
||||
MX31_PIN_CSPI1_SS2__SS2,
|
||||
/* LAN9117 IRQ pin */
|
||||
IOMUX_MODE(MX31_PIN_SFS6, IOMUX_CONFIG_GPIO),
|
||||
/* SPI 1 */
|
||||
@@ -64,6 +77,23 @@ static unsigned int mx31lite_pins[] = {
|
||||
MX31_PIN_CSPI2_SS2__SS2,
|
||||
};
|
||||
|
||||
/* UART */
|
||||
static const struct imxuart_platform_data uart_pdata __initconst = {
|
||||
.flags = IMXUART_HAVE_RTSCTS,
|
||||
};
|
||||
|
||||
/* SPI */
|
||||
static int spi0_internal_chipselect[] = {
|
||||
MXC_SPI_CS(0),
|
||||
MXC_SPI_CS(1),
|
||||
MXC_SPI_CS(2),
|
||||
};
|
||||
|
||||
static const struct spi_imx_master spi0_pdata __initconst = {
|
||||
.chipselect = spi0_internal_chipselect,
|
||||
.num_chipselect = ARRAY_SIZE(spi0_internal_chipselect),
|
||||
};
|
||||
|
||||
static const struct mxc_nand_platform_data
|
||||
mx31lite_nand_board_info __initconst = {
|
||||
.width = 1,
|
||||
@@ -103,13 +133,13 @@ static struct platform_device smsc911x_device = {
|
||||
* The MC13783 is the only hard-wired SPI device on the module.
|
||||
*/
|
||||
|
||||
static int spi_internal_chipselect[] = {
|
||||
static int spi1_internal_chipselect[] = {
|
||||
MXC_SPI_CS(0),
|
||||
};
|
||||
|
||||
static const struct spi_imx_master spi1_pdata __initconst = {
|
||||
.chipselect = spi_internal_chipselect,
|
||||
.num_chipselect = ARRAY_SIZE(spi_internal_chipselect),
|
||||
.chipselect = spi1_internal_chipselect,
|
||||
.num_chipselect = ARRAY_SIZE(spi1_internal_chipselect),
|
||||
};
|
||||
|
||||
static struct mc13xxx_platform_data mc13783_pdata __initdata = {
|
||||
@@ -200,8 +230,6 @@ static struct platform_device physmap_flash_device = {
|
||||
.num_resources = 1,
|
||||
};
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* This structure defines the MX31 memory map.
|
||||
*/
|
||||
@@ -233,29 +261,30 @@ static struct regulator_consumer_supply dummy_supplies[] = {
|
||||
|
||||
static void __init mx31lite_init(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
imx31_soc_init();
|
||||
|
||||
switch (mx31lite_baseboard) {
|
||||
case MX31LITE_NOBOARD:
|
||||
break;
|
||||
case MX31LITE_DB:
|
||||
mx31lite_db_init();
|
||||
break;
|
||||
default:
|
||||
printk(KERN_ERR "Illegal mx31lite_baseboard type %d\n",
|
||||
mx31lite_baseboard);
|
||||
}
|
||||
|
||||
mxc_iomux_setup_multiple_pins(mx31lite_pins, ARRAY_SIZE(mx31lite_pins),
|
||||
"mx31lite");
|
||||
|
||||
imx31_add_imx_uart0(&uart_pdata);
|
||||
imx31_add_spi_imx0(&spi0_pdata);
|
||||
|
||||
/* NOR and NAND flash */
|
||||
platform_device_register(&physmap_flash_device);
|
||||
imx31_add_mxc_nand(&mx31lite_nand_board_info);
|
||||
|
||||
imx31_add_spi_imx1(&spi1_pdata);
|
||||
|
||||
regulator_register_fixed(0, dummy_supplies, ARRAY_SIZE(dummy_supplies));
|
||||
}
|
||||
|
||||
static void __init mx31lite_late(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (mx31lite_baseboard == MX31LITE_DB)
|
||||
mx31lite_db_init();
|
||||
|
||||
mc13783_spi_dev.irq = gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO1_3));
|
||||
spi_register_board_info(&mc13783_spi_dev, 1);
|
||||
|
||||
@@ -265,8 +294,6 @@ static void __init mx31lite_init(void)
|
||||
if (usbh2_pdata.otg)
|
||||
imx31_add_mxc_ehci_hs(2, &usbh2_pdata);
|
||||
|
||||
regulator_register_fixed(0, dummy_supplies, ARRAY_SIZE(dummy_supplies));
|
||||
|
||||
/* SMSC9117 IRQ pin */
|
||||
ret = gpio_request(IOMUX_TO_GPIO(MX31_PIN_SFS6), "sms9117-irq");
|
||||
if (ret)
|
||||
@@ -294,5 +321,6 @@ MACHINE_START(MX31LITE, "LogicPD i.MX31 SOM")
|
||||
.init_irq = mx31_init_irq,
|
||||
.init_time = mx31lite_timer_init,
|
||||
.init_machine = mx31lite_init,
|
||||
.init_late = mx31lite_late,
|
||||
.restart = mxc_restart,
|
||||
MACHINE_END
|
||||
|
@@ -526,11 +526,9 @@ static void __init mx31moboard_init(void)
|
||||
"moboard");
|
||||
|
||||
platform_add_devices(devices, ARRAY_SIZE(devices));
|
||||
gpio_led_register_device(-1, &mx31moboard_led_pdata);
|
||||
|
||||
imx31_add_imx2_wdt();
|
||||
|
||||
moboard_uart0_init();
|
||||
imx31_add_imx_uart0(&uart0_pdata);
|
||||
imx31_add_imx_uart4(&uart4_pdata);
|
||||
|
||||
@@ -540,6 +538,19 @@ static void __init mx31moboard_init(void)
|
||||
imx31_add_spi_imx1(&moboard_spi1_pdata);
|
||||
imx31_add_spi_imx2(&moboard_spi2_pdata);
|
||||
|
||||
mx31moboard_init_cam();
|
||||
|
||||
imx31_add_imx_ssi(0, &moboard_ssi_pdata);
|
||||
|
||||
pm_power_off = mx31moboard_poweroff;
|
||||
}
|
||||
|
||||
static void __init mx31moboard_late(void)
|
||||
{
|
||||
gpio_led_register_device(-1, &mx31moboard_led_pdata);
|
||||
|
||||
moboard_uart0_init();
|
||||
|
||||
gpio_request(IOMUX_TO_GPIO(MX31_PIN_GPIO1_3), "pmic-irq");
|
||||
gpio_direction_input(IOMUX_TO_GPIO(MX31_PIN_GPIO1_3));
|
||||
moboard_spi_board_info[0].irq =
|
||||
@@ -549,18 +560,11 @@ static void __init mx31moboard_init(void)
|
||||
|
||||
imx31_add_mxc_mmc(0, &sdhc1_pdata);
|
||||
|
||||
mx31moboard_init_cam();
|
||||
|
||||
usb_xcvr_reset();
|
||||
|
||||
moboard_usbh2_init();
|
||||
|
||||
imx31_add_imx_ssi(0, &moboard_ssi_pdata);
|
||||
|
||||
imx_add_platform_device("imx_mc13783", 0, NULL, 0, NULL, 0);
|
||||
|
||||
pm_power_off = mx31moboard_poweroff;
|
||||
|
||||
switch (mx31moboard_baseboard) {
|
||||
case MX31NOBOARD:
|
||||
break;
|
||||
@@ -601,5 +605,6 @@ MACHINE_START(MX31MOBOARD, "EPFL Mobots mx31moboard")
|
||||
.init_irq = mx31_init_irq,
|
||||
.init_time = mx31moboard_timer_init,
|
||||
.init_machine = mx31moboard_init,
|
||||
.init_late = mx31moboard_late,
|
||||
.restart = mxc_restart,
|
||||
MACHINE_END
|
||||
|
@@ -555,8 +555,6 @@ static const struct imxi2c_platform_data mx35_3ds_i2c0_data __initconst = {
|
||||
*/
|
||||
static void __init mx35_3ds_init(void)
|
||||
{
|
||||
struct platform_device *imx35_fb_pdev;
|
||||
|
||||
imx35_soc_init();
|
||||
|
||||
mxc_iomux_v3_setup_multiple_pads(mx35pdk_pads, ARRAY_SIZE(mx35pdk_pads));
|
||||
@@ -579,9 +577,6 @@ static void __init mx35_3ds_init(void)
|
||||
imx35_add_mxc_nand(&mx35pdk_nand_board_info);
|
||||
imx35_add_sdhci_esdhc_imx(0, NULL);
|
||||
|
||||
if (mxc_expio_init(MX35_CS5_BASE_ADDR, IMX_GPIO_NR(1, 1)))
|
||||
pr_warn("Init of the debugboard failed, all "
|
||||
"devices on the debugboard are unusable.\n");
|
||||
imx35_add_imx_i2c0(&mx35_3ds_i2c0_data);
|
||||
|
||||
i2c_register_board_info(
|
||||
@@ -590,6 +585,15 @@ static void __init mx35_3ds_init(void)
|
||||
imx35_add_ipu_core();
|
||||
platform_device_register(&mx35_3ds_ov2640);
|
||||
imx35_3ds_init_camera();
|
||||
}
|
||||
|
||||
static void __init mx35_3ds_late_init(void)
|
||||
{
|
||||
struct platform_device *imx35_fb_pdev;
|
||||
|
||||
if (mxc_expio_init(MX35_CS5_BASE_ADDR, IMX_GPIO_NR(1, 1)))
|
||||
pr_warn("Init of the debugboard failed, all "
|
||||
"devices on the debugboard are unusable.\n");
|
||||
|
||||
imx35_fb_pdev = imx35_add_mx3_sdc_fb(&mx3fb_pdata);
|
||||
mx35_3ds_lcd.dev.parent = &imx35_fb_pdev->dev;
|
||||
@@ -618,6 +622,7 @@ MACHINE_START(MX35_3DS, "Freescale MX35PDK")
|
||||
.init_irq = mx35_init_irq,
|
||||
.init_time = mx35pdk_timer_init,
|
||||
.init_machine = mx35_3ds_init,
|
||||
.init_late = mx35_3ds_late_init,
|
||||
.reserve = mx35_3ds_reserve,
|
||||
.restart = mxc_restart,
|
||||
MACHINE_END
|
||||
|
@@ -362,12 +362,8 @@ static void __init pca100_init(void)
|
||||
if (ret)
|
||||
printk(KERN_ERR "pca100: Failed to setup pins (%d)\n", ret);
|
||||
|
||||
imx27_add_imx_ssi(0, &pca100_ssi_pdata);
|
||||
|
||||
imx27_add_imx_uart0(&uart_pdata);
|
||||
|
||||
imx27_add_mxc_mmc(1, &sdhc_pdata);
|
||||
|
||||
imx27_add_mxc_nand(&pca100_nand_board_info);
|
||||
|
||||
/* only the i2c master 1 is used on this CPU card */
|
||||
@@ -382,6 +378,19 @@ static void __init pca100_init(void)
|
||||
ARRAY_SIZE(pca100_spi_board_info));
|
||||
imx27_add_spi_imx0(&pca100_spi0_data);
|
||||
|
||||
imx27_add_imx_fb(&pca100_fb_data);
|
||||
|
||||
imx27_add_fec(NULL);
|
||||
imx27_add_imx2_wdt();
|
||||
imx27_add_mxc_w1();
|
||||
}
|
||||
|
||||
static void __init pca100_late_init(void)
|
||||
{
|
||||
imx27_add_imx_ssi(0, &pca100_ssi_pdata);
|
||||
|
||||
imx27_add_mxc_mmc(1, &sdhc_pdata);
|
||||
|
||||
gpio_request(OTG_PHY_CS_GPIO, "usb-otg-cs");
|
||||
gpio_direction_output(OTG_PHY_CS_GPIO, 1);
|
||||
gpio_request(USBH2_PHY_CS_GPIO, "usb-host2-cs");
|
||||
@@ -403,12 +412,6 @@ static void __init pca100_init(void)
|
||||
|
||||
if (usbh2_pdata.otg)
|
||||
imx27_add_mxc_ehci_hs(2, &usbh2_pdata);
|
||||
|
||||
imx27_add_imx_fb(&pca100_fb_data);
|
||||
|
||||
imx27_add_fec(NULL);
|
||||
imx27_add_imx2_wdt();
|
||||
imx27_add_mxc_w1();
|
||||
}
|
||||
|
||||
static void __init pca100_timer_init(void)
|
||||
@@ -421,7 +424,8 @@ MACHINE_START(PCA100, "phyCARD-i.MX27")
|
||||
.map_io = mx27_map_io,
|
||||
.init_early = imx27_init_early,
|
||||
.init_irq = mx27_init_irq,
|
||||
.init_machine = pca100_init,
|
||||
.init_machine = pca100_init,
|
||||
.init_late = pca100_late_init,
|
||||
.init_time = pca100_timer_init,
|
||||
.restart = mxc_restart,
|
||||
MACHINE_END
|
||||
|
@@ -576,8 +576,6 @@ static struct regulator_consumer_supply dummy_supplies[] = {
|
||||
*/
|
||||
static void __init pcm037_init(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
imx31_soc_init();
|
||||
|
||||
regulator_register_fixed(0, dummy_supplies, ARRAY_SIZE(dummy_supplies));
|
||||
@@ -621,20 +619,6 @@ static void __init pcm037_init(void)
|
||||
|
||||
imx31_add_mxc_w1();
|
||||
|
||||
/* LAN9217 IRQ pin */
|
||||
ret = gpio_request(IOMUX_TO_GPIO(MX31_PIN_GPIO3_1), "lan9217-irq");
|
||||
if (ret)
|
||||
pr_warn("could not get LAN irq gpio\n");
|
||||
else {
|
||||
gpio_direction_input(IOMUX_TO_GPIO(MX31_PIN_GPIO3_1));
|
||||
smsc911x_resources[1].start =
|
||||
gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO3_1));
|
||||
smsc911x_resources[1].end =
|
||||
gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO3_1));
|
||||
platform_device_register(&pcm037_eth);
|
||||
}
|
||||
|
||||
|
||||
/* I2C adapters and devices */
|
||||
i2c_register_board_info(1, pcm037_i2c_devices,
|
||||
ARRAY_SIZE(pcm037_i2c_devices));
|
||||
@@ -643,10 +627,56 @@ static void __init pcm037_init(void)
|
||||
imx31_add_imx_i2c2(&pcm037_i2c2_data);
|
||||
|
||||
imx31_add_mxc_nand(&pcm037_nand_board_info);
|
||||
imx31_add_mxc_mmc(0, &sdhc_pdata);
|
||||
imx31_add_ipu_core();
|
||||
imx31_add_mx3_sdc_fb(&mx3fb_pdata);
|
||||
|
||||
if (otg_mode_host) {
|
||||
otg_pdata.otg = imx_otg_ulpi_create(ULPI_OTG_DRVVBUS |
|
||||
ULPI_OTG_DRVVBUS_EXT);
|
||||
if (otg_pdata.otg)
|
||||
imx31_add_mxc_ehci_otg(&otg_pdata);
|
||||
}
|
||||
|
||||
usbh2_pdata.otg = imx_otg_ulpi_create(ULPI_OTG_DRVVBUS |
|
||||
ULPI_OTG_DRVVBUS_EXT);
|
||||
if (usbh2_pdata.otg)
|
||||
imx31_add_mxc_ehci_hs(2, &usbh2_pdata);
|
||||
|
||||
if (!otg_mode_host)
|
||||
imx31_add_fsl_usb2_udc(&otg_device_pdata);
|
||||
}
|
||||
|
||||
static void __init pcm037_timer_init(void)
|
||||
{
|
||||
mx31_clocks_init(26000000);
|
||||
}
|
||||
|
||||
static void __init pcm037_reserve(void)
|
||||
{
|
||||
/* reserve 4 MiB for mx3-camera */
|
||||
mx3_camera_base = arm_memblock_steal(MX3_CAMERA_BUF_SIZE,
|
||||
MX3_CAMERA_BUF_SIZE);
|
||||
}
|
||||
|
||||
static void __init pcm037_init_late(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
/* LAN9217 IRQ pin */
|
||||
ret = gpio_request(IOMUX_TO_GPIO(MX31_PIN_GPIO3_1), "lan9217-irq");
|
||||
if (!ret) {
|
||||
gpio_direction_input(IOMUX_TO_GPIO(MX31_PIN_GPIO3_1));
|
||||
smsc911x_resources[1].start =
|
||||
gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO3_1));
|
||||
smsc911x_resources[1].end =
|
||||
gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO3_1));
|
||||
platform_device_register(&pcm037_eth);
|
||||
} else {
|
||||
pr_warn("could not get LAN irq gpio\n");
|
||||
}
|
||||
|
||||
imx31_add_mxc_mmc(0, &sdhc_pdata);
|
||||
|
||||
/* CSI */
|
||||
/* Camera power: default - off */
|
||||
ret = gpio_request(IOMUX_TO_GPIO(MX31_PIN_CSI_D5), "mt9t031-power");
|
||||
@@ -663,37 +693,6 @@ static void __init pcm037_init(void)
|
||||
gpio_to_irq(IOMUX_TO_GPIO(IOMUX_PIN(48, 105)));
|
||||
platform_device_register(&pcm970_sja1000);
|
||||
|
||||
if (otg_mode_host) {
|
||||
otg_pdata.otg = imx_otg_ulpi_create(ULPI_OTG_DRVVBUS |
|
||||
ULPI_OTG_DRVVBUS_EXT);
|
||||
if (otg_pdata.otg)
|
||||
imx31_add_mxc_ehci_otg(&otg_pdata);
|
||||
}
|
||||
|
||||
usbh2_pdata.otg = imx_otg_ulpi_create(ULPI_OTG_DRVVBUS |
|
||||
ULPI_OTG_DRVVBUS_EXT);
|
||||
if (usbh2_pdata.otg)
|
||||
imx31_add_mxc_ehci_hs(2, &usbh2_pdata);
|
||||
|
||||
if (!otg_mode_host)
|
||||
imx31_add_fsl_usb2_udc(&otg_device_pdata);
|
||||
|
||||
}
|
||||
|
||||
static void __init pcm037_timer_init(void)
|
||||
{
|
||||
mx31_clocks_init(26000000);
|
||||
}
|
||||
|
||||
static void __init pcm037_reserve(void)
|
||||
{
|
||||
/* reserve 4 MiB for mx3-camera */
|
||||
mx3_camera_base = arm_memblock_steal(MX3_CAMERA_BUF_SIZE,
|
||||
MX3_CAMERA_BUF_SIZE);
|
||||
}
|
||||
|
||||
static void __init pcm037_init_late(void)
|
||||
{
|
||||
pcm037_eet_init_devices();
|
||||
}
|
||||
|
||||
|
@@ -363,7 +363,6 @@ static void __init pcm043_init(void)
|
||||
|
||||
imx35_add_imx_uart0(&uart_pdata);
|
||||
imx35_add_mxc_nand(&pcm037_nand_board_info);
|
||||
imx35_add_imx_ssi(0, &pcm043_ssi_pdata);
|
||||
|
||||
imx35_add_imx_uart1(&uart_pdata);
|
||||
|
||||
@@ -387,6 +386,12 @@ static void __init pcm043_init(void)
|
||||
imx35_add_fsl_usb2_udc(&otg_device_pdata);
|
||||
|
||||
imx35_add_flexcan1();
|
||||
}
|
||||
|
||||
static void __init pcm043_late_init(void)
|
||||
{
|
||||
imx35_add_imx_ssi(0, &pcm043_ssi_pdata);
|
||||
|
||||
imx35_add_sdhci_esdhc_imx(0, &sd1_pdata);
|
||||
}
|
||||
|
||||
@@ -402,6 +407,7 @@ MACHINE_START(PCM043, "Phytec Phycore pcm043")
|
||||
.init_early = imx35_init_early,
|
||||
.init_irq = mx35_init_irq,
|
||||
.init_time = pcm043_timer_init,
|
||||
.init_machine = pcm043_init,
|
||||
.init_machine = pcm043_init,
|
||||
.init_late = pcm043_late_init,
|
||||
.restart = mxc_restart,
|
||||
MACHINE_END
|
||||
|
@@ -251,7 +251,6 @@ static void __init qong_init(void)
|
||||
|
||||
mxc_init_imx_uart();
|
||||
qong_init_nor_mtd();
|
||||
qong_init_fpga();
|
||||
imx31_add_imx2_wdt();
|
||||
}
|
||||
|
||||
@@ -268,5 +267,6 @@ MACHINE_START(QONG, "Dave/DENX QongEVB-LITE")
|
||||
.init_irq = mx31_init_irq,
|
||||
.init_time = qong_timer_init,
|
||||
.init_machine = qong_init,
|
||||
.init_late = qong_init_fpga,
|
||||
.restart = mxc_restart,
|
||||
MACHINE_END
|
||||
|
@@ -268,6 +268,22 @@ static void __init vpr200_board_init(void)
|
||||
|
||||
imx35_add_fec(NULL);
|
||||
imx35_add_imx2_wdt();
|
||||
|
||||
imx35_add_imx_uart0(NULL);
|
||||
imx35_add_imx_uart2(NULL);
|
||||
|
||||
imx35_add_ipu_core();
|
||||
imx35_add_mx3_sdc_fb(&mx3fb_pdata);
|
||||
|
||||
imx35_add_fsl_usb2_udc(&otg_device_pdata);
|
||||
imx35_add_mxc_ehci_hs(&usb_host_pdata);
|
||||
|
||||
imx35_add_mxc_nand(&vpr200_nand_board_info);
|
||||
imx35_add_sdhci_esdhc_imx(0, NULL);
|
||||
}
|
||||
|
||||
static void __init vpr200_late_init(void)
|
||||
{
|
||||
imx_add_gpio_keys(&vpr200_gpio_keys_data);
|
||||
|
||||
platform_add_devices(devices, ARRAY_SIZE(devices));
|
||||
@@ -282,18 +298,6 @@ static void __init vpr200_board_init(void)
|
||||
else
|
||||
gpio_direction_input(GPIO_PMIC_INT);
|
||||
|
||||
imx35_add_imx_uart0(NULL);
|
||||
imx35_add_imx_uart2(NULL);
|
||||
|
||||
imx35_add_ipu_core();
|
||||
imx35_add_mx3_sdc_fb(&mx3fb_pdata);
|
||||
|
||||
imx35_add_fsl_usb2_udc(&otg_device_pdata);
|
||||
imx35_add_mxc_ehci_hs(&usb_host_pdata);
|
||||
|
||||
imx35_add_mxc_nand(&vpr200_nand_board_info);
|
||||
imx35_add_sdhci_esdhc_imx(0, NULL);
|
||||
|
||||
vpr200_i2c_devices[1].irq = gpio_to_irq(GPIO_PMIC_INT);
|
||||
i2c_register_board_info(0, vpr200_i2c_devices,
|
||||
ARRAY_SIZE(vpr200_i2c_devices));
|
||||
@@ -313,5 +317,6 @@ MACHINE_START(VPR200, "VPR200")
|
||||
.init_irq = mx35_init_irq,
|
||||
.init_time = vpr200_timer_init,
|
||||
.init_machine = vpr200_board_init,
|
||||
.init_late = vpr200_late_init,
|
||||
.restart = mxc_restart,
|
||||
MACHINE_END
|
||||
|
@@ -43,18 +43,6 @@
|
||||
*/
|
||||
|
||||
static unsigned int lilly_db_board_pins[] __initdata = {
|
||||
MX31_PIN_CTS1__CTS1,
|
||||
MX31_PIN_RTS1__RTS1,
|
||||
MX31_PIN_TXD1__TXD1,
|
||||
MX31_PIN_RXD1__RXD1,
|
||||
MX31_PIN_CTS2__CTS2,
|
||||
MX31_PIN_RTS2__RTS2,
|
||||
MX31_PIN_TXD2__TXD2,
|
||||
MX31_PIN_RXD2__RXD2,
|
||||
MX31_PIN_CSPI3_MOSI__RXD3,
|
||||
MX31_PIN_CSPI3_MISO__TXD3,
|
||||
MX31_PIN_CSPI3_SCLK__RTS3,
|
||||
MX31_PIN_CSPI3_SPI_RDY__CTS3,
|
||||
MX31_PIN_SD1_DATA3__SD1_DATA3,
|
||||
MX31_PIN_SD1_DATA2__SD1_DATA2,
|
||||
MX31_PIN_SD1_DATA1__SD1_DATA1,
|
||||
@@ -86,11 +74,6 @@ static unsigned int lilly_db_board_pins[] __initdata = {
|
||||
MX31_PIN_CONTRAST__CONTRAST,
|
||||
};
|
||||
|
||||
/* UART */
|
||||
static const struct imxuart_platform_data uart_pdata __initconst = {
|
||||
.flags = IMXUART_HAVE_RTSCTS,
|
||||
};
|
||||
|
||||
/* MMC support */
|
||||
|
||||
static int mxc_mmc1_get_ro(struct device *dev)
|
||||
@@ -203,9 +186,6 @@ void __init mx31lilly_db_init(void)
|
||||
mxc_iomux_setup_multiple_pins(lilly_db_board_pins,
|
||||
ARRAY_SIZE(lilly_db_board_pins),
|
||||
"development board pins");
|
||||
imx31_add_imx_uart0(&uart_pdata);
|
||||
imx31_add_imx_uart1(&uart_pdata);
|
||||
imx31_add_imx_uart2(&uart_pdata);
|
||||
imx31_add_mxc_mmc(0, &mmc_pdata);
|
||||
mx31lilly_init_fb();
|
||||
}
|
||||
|
@@ -45,19 +45,6 @@
|
||||
*/
|
||||
|
||||
static unsigned int litekit_db_board_pins[] __initdata = {
|
||||
/* UART1 */
|
||||
MX31_PIN_CTS1__CTS1,
|
||||
MX31_PIN_RTS1__RTS1,
|
||||
MX31_PIN_TXD1__TXD1,
|
||||
MX31_PIN_RXD1__RXD1,
|
||||
/* SPI 0 */
|
||||
MX31_PIN_CSPI1_SCLK__SCLK,
|
||||
MX31_PIN_CSPI1_MOSI__MOSI,
|
||||
MX31_PIN_CSPI1_MISO__MISO,
|
||||
MX31_PIN_CSPI1_SPI_RDY__SPI_RDY,
|
||||
MX31_PIN_CSPI1_SS0__SS0,
|
||||
MX31_PIN_CSPI1_SS1__SS1,
|
||||
MX31_PIN_CSPI1_SS2__SS2,
|
||||
/* SDHC1 */
|
||||
MX31_PIN_SD1_DATA0__SD1_DATA0,
|
||||
MX31_PIN_SD1_DATA1__SD1_DATA1,
|
||||
@@ -67,11 +54,6 @@ static unsigned int litekit_db_board_pins[] __initdata = {
|
||||
MX31_PIN_SD1_CMD__SD1_CMD,
|
||||
};
|
||||
|
||||
/* UART */
|
||||
static const struct imxuart_platform_data uart_pdata __initconst = {
|
||||
.flags = IMXUART_HAVE_RTSCTS,
|
||||
};
|
||||
|
||||
/* MMC */
|
||||
|
||||
static int gpio_det, gpio_wp;
|
||||
@@ -146,19 +128,6 @@ static const struct imxmmc_platform_data mmc_pdata __initconst = {
|
||||
.exit = mxc_mmc1_exit,
|
||||
};
|
||||
|
||||
/* SPI */
|
||||
|
||||
static int spi_internal_chipselect[] = {
|
||||
MXC_SPI_CS(0),
|
||||
MXC_SPI_CS(1),
|
||||
MXC_SPI_CS(2),
|
||||
};
|
||||
|
||||
static const struct spi_imx_master spi0_pdata __initconst = {
|
||||
.chipselect = spi_internal_chipselect,
|
||||
.num_chipselect = ARRAY_SIZE(spi_internal_chipselect),
|
||||
};
|
||||
|
||||
/* GPIO LEDs */
|
||||
|
||||
static const struct gpio_led litekit_leds[] __initconst = {
|
||||
@@ -187,9 +156,7 @@ void __init mx31lite_db_init(void)
|
||||
mxc_iomux_setup_multiple_pins(litekit_db_board_pins,
|
||||
ARRAY_SIZE(litekit_db_board_pins),
|
||||
"development board pins");
|
||||
imx31_add_imx_uart0(&uart_pdata);
|
||||
imx31_add_mxc_mmc(0, &mmc_pdata);
|
||||
imx31_add_spi_imx0(&spi0_pdata);
|
||||
gpio_led_register_device(-1, &litekit_led_platform_data);
|
||||
imx31_add_imx2_wdt();
|
||||
imx31_add_mxc_rtc();
|
||||
|
@@ -217,7 +217,7 @@ struct imx6_cpu_pm_info {
|
||||
u32 mmdc_io_val[MX6_MAX_MMDC_IO_NUM][2]; /* To save offset and value */
|
||||
} __aligned(8);
|
||||
|
||||
void imx6q_set_int_mem_clk_lpm(bool enable)
|
||||
void imx6_set_int_mem_clk_lpm(bool enable)
|
||||
{
|
||||
u32 val = readl_relaxed(ccm_base + CGPR);
|
||||
|
||||
@@ -367,7 +367,7 @@ static int imx6q_pm_enter(suspend_state_t state)
|
||||
switch (state) {
|
||||
case PM_SUSPEND_STANDBY:
|
||||
imx6_set_lpm(STOP_POWER_ON);
|
||||
imx6q_set_int_mem_clk_lpm(true);
|
||||
imx6_set_int_mem_clk_lpm(true);
|
||||
imx_gpc_pre_suspend(false);
|
||||
if (cpu_is_imx6sl())
|
||||
imx6sl_set_wait_clk(true);
|
||||
@@ -380,7 +380,7 @@ static int imx6q_pm_enter(suspend_state_t state)
|
||||
break;
|
||||
case PM_SUSPEND_MEM:
|
||||
imx6_set_lpm(STOP_POWER_OFF);
|
||||
imx6q_set_int_mem_clk_lpm(false);
|
||||
imx6_set_int_mem_clk_lpm(false);
|
||||
imx6q_enable_wb(true);
|
||||
/*
|
||||
* For suspend into ocram, asm code already take care of
|
||||
@@ -398,7 +398,7 @@ static int imx6q_pm_enter(suspend_state_t state)
|
||||
imx_gpc_post_resume();
|
||||
imx6_enable_rbc(false);
|
||||
imx6q_enable_wb(false);
|
||||
imx6q_set_int_mem_clk_lpm(true);
|
||||
imx6_set_int_mem_clk_lpm(true);
|
||||
imx6_set_lpm(WAIT_CLOCKED);
|
||||
break;
|
||||
default:
|
||||
|
Référencer dans un nouveau ticket
Bloquer un utilisateur