Merge branch 'mxc-master' of git://git.pengutronix.de/git/imx/linux-2.6 into devel
This commit is contained in:
@@ -59,4 +59,12 @@ config MACH_MX27_3DS
|
|||||||
help
|
help
|
||||||
Include support for MX27PDK platform. This includes specific
|
Include support for MX27PDK platform. This includes specific
|
||||||
configurations for the board and its peripherals.
|
configurations for the board and its peripherals.
|
||||||
|
|
||||||
|
config MACH_MX27LITE
|
||||||
|
bool "LogicPD MX27 LITEKIT platform"
|
||||||
|
depends on MACH_MX27
|
||||||
|
help
|
||||||
|
Include support for MX27 LITEKIT platform. This includes specific
|
||||||
|
configurations for the board and its peripherals.
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
@@ -16,3 +16,5 @@ obj-$(CONFIG_MACH_MX27ADS) += mx27ads.o
|
|||||||
obj-$(CONFIG_MACH_PCM038) += pcm038.o
|
obj-$(CONFIG_MACH_PCM038) += pcm038.o
|
||||||
obj-$(CONFIG_MACH_PCM970_BASEBOARD) += pcm970-baseboard.o
|
obj-$(CONFIG_MACH_PCM970_BASEBOARD) += pcm970-baseboard.o
|
||||||
obj-$(CONFIG_MACH_MX27_3DS) += mx27pdk.o
|
obj-$(CONFIG_MACH_MX27_3DS) += mx27pdk.o
|
||||||
|
obj-$(CONFIG_MACH_MX27LITE) += mx27lite.o
|
||||||
|
|
||||||
|
@@ -48,6 +48,25 @@ static void _clk_disable(struct clk *clk)
|
|||||||
__raw_writel(reg, clk->enable_reg);
|
__raw_writel(reg, clk->enable_reg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static unsigned long _clk_generic_round_rate(struct clk *clk,
|
||||||
|
unsigned long rate,
|
||||||
|
u32 max_divisor)
|
||||||
|
{
|
||||||
|
u32 div;
|
||||||
|
unsigned long parent_rate;
|
||||||
|
|
||||||
|
parent_rate = clk_get_rate(clk->parent);
|
||||||
|
|
||||||
|
div = parent_rate / rate;
|
||||||
|
if (parent_rate % rate)
|
||||||
|
div++;
|
||||||
|
|
||||||
|
if (div > max_divisor)
|
||||||
|
div = max_divisor;
|
||||||
|
|
||||||
|
return parent_rate / div;
|
||||||
|
}
|
||||||
|
|
||||||
static int _clk_spll_enable(struct clk *clk)
|
static int _clk_spll_enable(struct clk *clk)
|
||||||
{
|
{
|
||||||
u32 reg;
|
u32 reg;
|
||||||
@@ -78,19 +97,7 @@ static void _clk_spll_disable(struct clk *clk)
|
|||||||
static unsigned long _clk_perclkx_round_rate(struct clk *clk,
|
static unsigned long _clk_perclkx_round_rate(struct clk *clk,
|
||||||
unsigned long rate)
|
unsigned long rate)
|
||||||
{
|
{
|
||||||
u32 div;
|
return _clk_generic_round_rate(clk, rate, 64);
|
||||||
unsigned long parent_rate;
|
|
||||||
|
|
||||||
parent_rate = clk_get_rate(clk->parent);
|
|
||||||
|
|
||||||
div = parent_rate / rate;
|
|
||||||
if (parent_rate % rate)
|
|
||||||
div++;
|
|
||||||
|
|
||||||
if (div > 64)
|
|
||||||
div = 64;
|
|
||||||
|
|
||||||
return parent_rate / div;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _clk_perclkx_set_rate(struct clk *clk, unsigned long rate)
|
static int _clk_perclkx_set_rate(struct clk *clk, unsigned long rate)
|
||||||
@@ -130,6 +137,32 @@ static unsigned long _clk_usb_recalc(struct clk *clk)
|
|||||||
return parent_rate / (usb_pdf + 1U);
|
return parent_rate / (usb_pdf + 1U);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static unsigned long _clk_usb_round_rate(struct clk *clk,
|
||||||
|
unsigned long rate)
|
||||||
|
{
|
||||||
|
return _clk_generic_round_rate(clk, rate, 8);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int _clk_usb_set_rate(struct clk *clk, unsigned long rate)
|
||||||
|
{
|
||||||
|
u32 reg;
|
||||||
|
u32 div;
|
||||||
|
unsigned long parent_rate;
|
||||||
|
|
||||||
|
parent_rate = clk_get_rate(clk->parent);
|
||||||
|
|
||||||
|
div = parent_rate / rate;
|
||||||
|
if (div > 8 || div < 1 || ((parent_rate / div) != rate))
|
||||||
|
return -EINVAL;
|
||||||
|
div--;
|
||||||
|
|
||||||
|
reg = CSCR() & ~CCM_CSCR_USB_MASK;
|
||||||
|
reg |= div << CCM_CSCR_USB_OFFSET;
|
||||||
|
__raw_writel(reg, CCM_CSCR);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static unsigned long _clk_ssix_recalc(struct clk *clk, unsigned long pdf)
|
static unsigned long _clk_ssix_recalc(struct clk *clk, unsigned long pdf)
|
||||||
{
|
{
|
||||||
unsigned long parent_rate;
|
unsigned long parent_rate;
|
||||||
@@ -595,11 +628,14 @@ static struct clk csi_clk[] = {
|
|||||||
static struct clk usb_clk[] = {
|
static struct clk usb_clk[] = {
|
||||||
{
|
{
|
||||||
.parent = &spll_clk,
|
.parent = &spll_clk,
|
||||||
|
.secondary = &usb_clk[1],
|
||||||
.get_rate = _clk_usb_recalc,
|
.get_rate = _clk_usb_recalc,
|
||||||
.enable = _clk_enable,
|
.enable = _clk_enable,
|
||||||
.enable_reg = CCM_PCCR_USBOTG_REG,
|
.enable_reg = CCM_PCCR_USBOTG_REG,
|
||||||
.enable_shift = CCM_PCCR_USBOTG_OFFSET,
|
.enable_shift = CCM_PCCR_USBOTG_OFFSET,
|
||||||
.disable = _clk_disable,
|
.disable = _clk_disable,
|
||||||
|
.round_rate = _clk_usb_round_rate,
|
||||||
|
.set_rate = _clk_usb_set_rate,
|
||||||
}, {
|
}, {
|
||||||
.parent = &hclk_clk,
|
.parent = &hclk_clk,
|
||||||
.enable = _clk_enable,
|
.enable = _clk_enable,
|
||||||
@@ -768,18 +804,7 @@ static struct clk rtc_clk = {
|
|||||||
|
|
||||||
static unsigned long _clk_clko_round_rate(struct clk *clk, unsigned long rate)
|
static unsigned long _clk_clko_round_rate(struct clk *clk, unsigned long rate)
|
||||||
{
|
{
|
||||||
u32 div;
|
return _clk_generic_round_rate(clk, rate, 8);
|
||||||
unsigned long parent_rate;
|
|
||||||
|
|
||||||
parent_rate = clk_get_rate(clk->parent);
|
|
||||||
div = parent_rate / rate;
|
|
||||||
if (parent_rate % rate)
|
|
||||||
div++;
|
|
||||||
|
|
||||||
if (div > 8)
|
|
||||||
div = 8;
|
|
||||||
|
|
||||||
return parent_rate / div;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _clk_clko_set_rate(struct clk *clk, unsigned long rate)
|
static int _clk_clko_set_rate(struct clk *clk, unsigned long rate)
|
||||||
@@ -921,7 +946,7 @@ static struct clk_lookup lookups[] __initdata = {
|
|||||||
_REGISTER_CLOCK(NULL, "cspi3", cspi_clk[2])
|
_REGISTER_CLOCK(NULL, "cspi3", cspi_clk[2])
|
||||||
_REGISTER_CLOCK("imx-fb.0", NULL, lcdc_clk[0])
|
_REGISTER_CLOCK("imx-fb.0", NULL, lcdc_clk[0])
|
||||||
_REGISTER_CLOCK(NULL, "csi", csi_clk[0])
|
_REGISTER_CLOCK(NULL, "csi", csi_clk[0])
|
||||||
_REGISTER_CLOCK(NULL, "usb", usb_clk[0])
|
_REGISTER_CLOCK("imx21-hcd.0", NULL, usb_clk[0])
|
||||||
_REGISTER_CLOCK(NULL, "ssi1", ssi_clk[0])
|
_REGISTER_CLOCK(NULL, "ssi1", ssi_clk[0])
|
||||||
_REGISTER_CLOCK(NULL, "ssi2", ssi_clk[1])
|
_REGISTER_CLOCK(NULL, "ssi2", ssi_clk[1])
|
||||||
_REGISTER_CLOCK("mxc_nand.0", NULL, nfc_clk)
|
_REGISTER_CLOCK("mxc_nand.0", NULL, nfc_clk)
|
||||||
|
95
arch/arm/mach-mx2/mx27lite.c
Normal file
95
arch/arm/mach-mx2/mx27lite.c
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2007 Robert Schwebel <r.schwebel@pengutronix.de>, Pengutronix
|
||||||
|
* Copyright (C) 2008 Juergen Beisert (kernel@pengutronix.de)
|
||||||
|
* Copyright 2009 Daniel Schaeffer (daniel.schaeffer@timesys.com)
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <linux/platform_device.h>
|
||||||
|
#include <linux/gpio.h>
|
||||||
|
#include <asm/mach-types.h>
|
||||||
|
#include <asm/mach/arch.h>
|
||||||
|
#include <asm/mach/time.h>
|
||||||
|
#include <asm/mach/map.h>
|
||||||
|
#include <mach/hardware.h>
|
||||||
|
#include <mach/common.h>
|
||||||
|
#include <mach/imx-uart.h>
|
||||||
|
#include <mach/iomux.h>
|
||||||
|
#include <mach/board-mx27lite.h>
|
||||||
|
|
||||||
|
#include "devices.h"
|
||||||
|
|
||||||
|
static unsigned int mx27lite_pins[] = {
|
||||||
|
/* UART1 */
|
||||||
|
PE12_PF_UART1_TXD,
|
||||||
|
PE13_PF_UART1_RXD,
|
||||||
|
PE14_PF_UART1_CTS,
|
||||||
|
PE15_PF_UART1_RTS,
|
||||||
|
/* FEC */
|
||||||
|
PD0_AIN_FEC_TXD0,
|
||||||
|
PD1_AIN_FEC_TXD1,
|
||||||
|
PD2_AIN_FEC_TXD2,
|
||||||
|
PD3_AIN_FEC_TXD3,
|
||||||
|
PD4_AOUT_FEC_RX_ER,
|
||||||
|
PD5_AOUT_FEC_RXD1,
|
||||||
|
PD6_AOUT_FEC_RXD2,
|
||||||
|
PD7_AOUT_FEC_RXD3,
|
||||||
|
PD8_AF_FEC_MDIO,
|
||||||
|
PD9_AIN_FEC_MDC,
|
||||||
|
PD10_AOUT_FEC_CRS,
|
||||||
|
PD11_AOUT_FEC_TX_CLK,
|
||||||
|
PD12_AOUT_FEC_RXD0,
|
||||||
|
PD13_AOUT_FEC_RX_DV,
|
||||||
|
PD14_AOUT_FEC_RX_CLK,
|
||||||
|
PD15_AOUT_FEC_COL,
|
||||||
|
PD16_AIN_FEC_TX_ER,
|
||||||
|
PF23_AIN_FEC_TX_EN,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct imxuart_platform_data uart_pdata = {
|
||||||
|
.flags = IMXUART_HAVE_RTSCTS,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct platform_device *platform_devices[] __initdata = {
|
||||||
|
&mxc_fec_device,
|
||||||
|
};
|
||||||
|
|
||||||
|
static void __init mx27lite_init(void)
|
||||||
|
{
|
||||||
|
mxc_gpio_setup_multiple_pins(mx27lite_pins, ARRAY_SIZE(mx27lite_pins),
|
||||||
|
"imx27lite");
|
||||||
|
mxc_register_device(&mxc_uart_device0, &uart_pdata);
|
||||||
|
platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void __init mx27lite_timer_init(void)
|
||||||
|
{
|
||||||
|
mx27_clocks_init(26000000);
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct sys_timer mx27lite_timer = {
|
||||||
|
.init = mx27lite_timer_init,
|
||||||
|
};
|
||||||
|
|
||||||
|
MACHINE_START(IMX27LITE, "LogicPD i.MX27LITE")
|
||||||
|
.phys_io = AIPI_BASE_ADDR,
|
||||||
|
.io_pg_offst = ((AIPI_BASE_ADDR_VIRT) >> 18) & 0xfffc,
|
||||||
|
.boot_params = PHYS_OFFSET + 0x100,
|
||||||
|
.map_io = mx27_map_io,
|
||||||
|
.init_irq = mxc_init_irq,
|
||||||
|
.init_machine = mx27lite_init,
|
||||||
|
.timer = &mx27lite_timer,
|
||||||
|
MACHINE_END
|
@@ -88,7 +88,7 @@ MACHINE_START(MX27_3DS, "Freescale MX27PDK")
|
|||||||
.phys_io = AIPI_BASE_ADDR,
|
.phys_io = AIPI_BASE_ADDR,
|
||||||
.io_pg_offst = ((AIPI_BASE_ADDR_VIRT) >> 18) & 0xfffc,
|
.io_pg_offst = ((AIPI_BASE_ADDR_VIRT) >> 18) & 0xfffc,
|
||||||
.boot_params = PHYS_OFFSET + 0x100,
|
.boot_params = PHYS_OFFSET + 0x100,
|
||||||
.map_io = mxc_map_io,
|
.map_io = mx27_map_io,
|
||||||
.init_irq = mxc_init_irq,
|
.init_irq = mxc_init_irq,
|
||||||
.init_machine = mx27pdk_init,
|
.init_machine = mx27pdk_init,
|
||||||
.timer = &mx27pdk_timer,
|
.timer = &mx27pdk_timer,
|
||||||
|
@@ -57,6 +57,13 @@ config MACH_MX31MOBOARD
|
|||||||
Include support for mx31moboard platform. This includes specific
|
Include support for mx31moboard platform. This includes specific
|
||||||
configurations for the board and its peripherals.
|
configurations for the board and its peripherals.
|
||||||
|
|
||||||
|
config MACH_MX31LILLY
|
||||||
|
bool "Support MX31 LILLY-1131 platforms (INCO startec)"
|
||||||
|
select ARCH_MX31
|
||||||
|
help
|
||||||
|
Include support for mx31 based LILLY1131 modules. This includes
|
||||||
|
specific configurations for the board and its peripherals.
|
||||||
|
|
||||||
config MACH_QONG
|
config MACH_QONG
|
||||||
bool "Support Dave/DENX QongEVB-LITE platform"
|
bool "Support Dave/DENX QongEVB-LITE platform"
|
||||||
select ARCH_MX31
|
select ARCH_MX31
|
||||||
@@ -71,4 +78,18 @@ config MACH_PCM043
|
|||||||
Include support for Phytec pcm043 platform. This includes
|
Include support for Phytec pcm043 platform. This includes
|
||||||
specific configurations for the board and its peripherals.
|
specific configurations for the board and its peripherals.
|
||||||
|
|
||||||
|
config MACH_ARMADILLO5X0
|
||||||
|
bool "Support Atmark Armadillo-500 Development Base Board"
|
||||||
|
select ARCH_MX31
|
||||||
|
help
|
||||||
|
Include support for Atmark Armadillo-500 platform. This includes
|
||||||
|
specific configurations for the board and its peripherals.
|
||||||
|
|
||||||
|
config MACH_MX35_3DS
|
||||||
|
bool "Support MX35PDK platform"
|
||||||
|
select ARCH_MX35
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
Include support for MX35PDK platform. This includes specific
|
||||||
|
configurations for the board and its peripherals.
|
||||||
endif
|
endif
|
||||||
|
@@ -8,6 +8,7 @@ obj-y := mm.o devices.o
|
|||||||
obj-$(CONFIG_ARCH_MX31) += clock.o iomux.o
|
obj-$(CONFIG_ARCH_MX31) += clock.o iomux.o
|
||||||
obj-$(CONFIG_ARCH_MX35) += clock-imx35.o
|
obj-$(CONFIG_ARCH_MX35) += clock-imx35.o
|
||||||
obj-$(CONFIG_MACH_MX31ADS) += mx31ads.o
|
obj-$(CONFIG_MACH_MX31ADS) += mx31ads.o
|
||||||
|
obj-$(CONFIG_MACH_MX31LILLY) += mx31lilly.o mx31lilly-db.o
|
||||||
obj-$(CONFIG_MACH_MX31LITE) += mx31lite.o
|
obj-$(CONFIG_MACH_MX31LITE) += mx31lite.o
|
||||||
obj-$(CONFIG_MACH_PCM037) += pcm037.o
|
obj-$(CONFIG_MACH_PCM037) += pcm037.o
|
||||||
obj-$(CONFIG_MACH_MX31_3DS) += mx31pdk.o
|
obj-$(CONFIG_MACH_MX31_3DS) += mx31pdk.o
|
||||||
@@ -15,3 +16,5 @@ obj-$(CONFIG_MACH_MX31MOBOARD) += mx31moboard.o mx31moboard-devboard.o \
|
|||||||
mx31moboard-marxbot.o
|
mx31moboard-marxbot.o
|
||||||
obj-$(CONFIG_MACH_QONG) += qong.o
|
obj-$(CONFIG_MACH_QONG) += qong.o
|
||||||
obj-$(CONFIG_MACH_PCM043) += pcm043.o
|
obj-$(CONFIG_MACH_PCM043) += pcm043.o
|
||||||
|
obj-$(CONFIG_MACH_ARMADILLO5X0) += armadillo5x0.o
|
||||||
|
obj-$(CONFIG_MACH_MX35_3DS) += mx35pdk.o
|
||||||
|
295
arch/arm/mach-mx3/armadillo5x0.c
Normal file
295
arch/arm/mach-mx3/armadillo5x0.c
Normal file
@@ -0,0 +1,295 @@
|
|||||||
|
/*
|
||||||
|
* armadillo5x0.c
|
||||||
|
*
|
||||||
|
* Copyright 2009 Alberto Panizzo <maramaopercheseimorto@gmail.com>
|
||||||
|
* updates in http://alberdroid.blogspot.com/
|
||||||
|
*
|
||||||
|
* Based on Atmark Techno, Inc. armadillo 500 BSP 2008
|
||||||
|
* Based on mx31ads.c and pcm037.c Great Work!
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||||
|
* MA 02110-1301, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <linux/types.h>
|
||||||
|
#include <linux/init.h>
|
||||||
|
#include <linux/clk.h>
|
||||||
|
#include <linux/platform_device.h>
|
||||||
|
#include <linux/gpio.h>
|
||||||
|
#include <linux/smsc911x.h>
|
||||||
|
#include <linux/interrupt.h>
|
||||||
|
#include <linux/irq.h>
|
||||||
|
|
||||||
|
#include <mach/hardware.h>
|
||||||
|
#include <asm/mach-types.h>
|
||||||
|
#include <asm/mach/arch.h>
|
||||||
|
#include <asm/mach/time.h>
|
||||||
|
#include <asm/memory.h>
|
||||||
|
#include <asm/mach/map.h>
|
||||||
|
|
||||||
|
#include <mach/common.h>
|
||||||
|
#include <mach/imx-uart.h>
|
||||||
|
#include <mach/iomux-mx3.h>
|
||||||
|
#include <mach/board-armadillo5x0.h>
|
||||||
|
#include <mach/mmc.h>
|
||||||
|
#include <mach/ipu.h>
|
||||||
|
#include <mach/mx3fb.h>
|
||||||
|
|
||||||
|
#include "devices.h"
|
||||||
|
|
||||||
|
static int armadillo5x0_pins[] = {
|
||||||
|
/* UART1 */
|
||||||
|
MX31_PIN_CTS1__CTS1,
|
||||||
|
MX31_PIN_RTS1__RTS1,
|
||||||
|
MX31_PIN_TXD1__TXD1,
|
||||||
|
MX31_PIN_RXD1__RXD1,
|
||||||
|
/* UART2 */
|
||||||
|
MX31_PIN_CTS2__CTS2,
|
||||||
|
MX31_PIN_RTS2__RTS2,
|
||||||
|
MX31_PIN_TXD2__TXD2,
|
||||||
|
MX31_PIN_RXD2__RXD2,
|
||||||
|
/* LAN9118_IRQ */
|
||||||
|
IOMUX_MODE(MX31_PIN_GPIO1_0, IOMUX_CONFIG_GPIO),
|
||||||
|
/* SDHC1 */
|
||||||
|
MX31_PIN_SD1_DATA3__SD1_DATA3,
|
||||||
|
MX31_PIN_SD1_DATA2__SD1_DATA2,
|
||||||
|
MX31_PIN_SD1_DATA1__SD1_DATA1,
|
||||||
|
MX31_PIN_SD1_DATA0__SD1_DATA0,
|
||||||
|
MX31_PIN_SD1_CLK__SD1_CLK,
|
||||||
|
MX31_PIN_SD1_CMD__SD1_CMD,
|
||||||
|
/* Framebuffer */
|
||||||
|
MX31_PIN_LD0__LD0,
|
||||||
|
MX31_PIN_LD1__LD1,
|
||||||
|
MX31_PIN_LD2__LD2,
|
||||||
|
MX31_PIN_LD3__LD3,
|
||||||
|
MX31_PIN_LD4__LD4,
|
||||||
|
MX31_PIN_LD5__LD5,
|
||||||
|
MX31_PIN_LD6__LD6,
|
||||||
|
MX31_PIN_LD7__LD7,
|
||||||
|
MX31_PIN_LD8__LD8,
|
||||||
|
MX31_PIN_LD9__LD9,
|
||||||
|
MX31_PIN_LD10__LD10,
|
||||||
|
MX31_PIN_LD11__LD11,
|
||||||
|
MX31_PIN_LD12__LD12,
|
||||||
|
MX31_PIN_LD13__LD13,
|
||||||
|
MX31_PIN_LD14__LD14,
|
||||||
|
MX31_PIN_LD15__LD15,
|
||||||
|
MX31_PIN_LD16__LD16,
|
||||||
|
MX31_PIN_LD17__LD17,
|
||||||
|
MX31_PIN_VSYNC3__VSYNC3,
|
||||||
|
MX31_PIN_HSYNC__HSYNC,
|
||||||
|
MX31_PIN_FPSHIFT__FPSHIFT,
|
||||||
|
MX31_PIN_DRDY0__DRDY0,
|
||||||
|
IOMUX_MODE(MX31_PIN_LCS1, IOMUX_CONFIG_GPIO), /*ADV7125_PSAVE*/
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* FB support
|
||||||
|
*/
|
||||||
|
static const struct fb_videomode fb_modedb[] = {
|
||||||
|
{ /* 640x480 @ 60 Hz */
|
||||||
|
.name = "CRT-VGA",
|
||||||
|
.refresh = 60,
|
||||||
|
.xres = 640,
|
||||||
|
.yres = 480,
|
||||||
|
.pixclock = 39721,
|
||||||
|
.left_margin = 35,
|
||||||
|
.right_margin = 115,
|
||||||
|
.upper_margin = 43,
|
||||||
|
.lower_margin = 1,
|
||||||
|
.hsync_len = 10,
|
||||||
|
.vsync_len = 1,
|
||||||
|
.sync = FB_SYNC_OE_ACT_HIGH,
|
||||||
|
.vmode = FB_VMODE_NONINTERLACED,
|
||||||
|
.flag = 0,
|
||||||
|
}, {/* 800x600 @ 56 Hz */
|
||||||
|
.name = "CRT-SVGA",
|
||||||
|
.refresh = 56,
|
||||||
|
.xres = 800,
|
||||||
|
.yres = 600,
|
||||||
|
.pixclock = 30000,
|
||||||
|
.left_margin = 30,
|
||||||
|
.right_margin = 108,
|
||||||
|
.upper_margin = 13,
|
||||||
|
.lower_margin = 10,
|
||||||
|
.hsync_len = 10,
|
||||||
|
.vsync_len = 1,
|
||||||
|
.sync = FB_SYNC_OE_ACT_HIGH | FB_SYNC_HOR_HIGH_ACT |
|
||||||
|
FB_SYNC_VERT_HIGH_ACT,
|
||||||
|
.vmode = FB_VMODE_NONINTERLACED,
|
||||||
|
.flag = 0,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct ipu_platform_data mx3_ipu_data = {
|
||||||
|
.irq_base = MXC_IPU_IRQ_START,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct mx3fb_platform_data mx3fb_pdata = {
|
||||||
|
.dma_dev = &mx3_ipu.dev,
|
||||||
|
.name = "CRT-VGA",
|
||||||
|
.mode = fb_modedb,
|
||||||
|
.num_modes = ARRAY_SIZE(fb_modedb),
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SDHC 1
|
||||||
|
* MMC support
|
||||||
|
*/
|
||||||
|
static int armadillo5x0_sdhc1_get_ro(struct device *dev)
|
||||||
|
{
|
||||||
|
return gpio_get_value(IOMUX_TO_GPIO(MX31_PIN_ATA_RESET_B));
|
||||||
|
}
|
||||||
|
|
||||||
|
static int armadillo5x0_sdhc1_init(struct device *dev,
|
||||||
|
irq_handler_t detect_irq, void *data)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
int gpio_det, gpio_wp;
|
||||||
|
|
||||||
|
gpio_det = IOMUX_TO_GPIO(MX31_PIN_ATA_DMACK);
|
||||||
|
gpio_wp = IOMUX_TO_GPIO(MX31_PIN_ATA_RESET_B);
|
||||||
|
|
||||||
|
ret = gpio_request(gpio_det, "sdhc-card-detect");
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
gpio_direction_input(gpio_det);
|
||||||
|
|
||||||
|
ret = gpio_request(gpio_wp, "sdhc-write-protect");
|
||||||
|
if (ret)
|
||||||
|
goto err_gpio_free;
|
||||||
|
|
||||||
|
gpio_direction_input(gpio_wp);
|
||||||
|
|
||||||
|
/* When supported the trigger type have to be BOTH */
|
||||||
|
ret = request_irq(IOMUX_TO_IRQ(MX31_PIN_ATA_DMACK), detect_irq,
|
||||||
|
IRQF_DISABLED | IRQF_TRIGGER_FALLING,
|
||||||
|
"sdhc-detect", data);
|
||||||
|
|
||||||
|
if (ret)
|
||||||
|
goto err_gpio_free_2;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
err_gpio_free_2:
|
||||||
|
gpio_free(gpio_wp);
|
||||||
|
|
||||||
|
err_gpio_free:
|
||||||
|
gpio_free(gpio_det);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void armadillo5x0_sdhc1_exit(struct device *dev, void *data)
|
||||||
|
{
|
||||||
|
free_irq(IOMUX_TO_IRQ(MX31_PIN_ATA_DMACK), data);
|
||||||
|
gpio_free(IOMUX_TO_GPIO(MX31_PIN_ATA_DMACK));
|
||||||
|
gpio_free(IOMUX_TO_GPIO(MX31_PIN_ATA_RESET_B));
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct imxmmc_platform_data sdhc_pdata = {
|
||||||
|
.get_ro = armadillo5x0_sdhc1_get_ro,
|
||||||
|
.init = armadillo5x0_sdhc1_init,
|
||||||
|
.exit = armadillo5x0_sdhc1_exit,
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SMSC 9118
|
||||||
|
* Network support
|
||||||
|
*/
|
||||||
|
static struct resource armadillo5x0_smc911x_resources[] = {
|
||||||
|
{
|
||||||
|
.start = CS3_BASE_ADDR,
|
||||||
|
.end = CS3_BASE_ADDR + SZ_32M - 1,
|
||||||
|
.flags = IORESOURCE_MEM,
|
||||||
|
}, {
|
||||||
|
.start = IOMUX_TO_IRQ(MX31_PIN_GPIO1_0),
|
||||||
|
.end = IOMUX_TO_IRQ(MX31_PIN_GPIO1_0),
|
||||||
|
.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWLEVEL,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct smsc911x_platform_config smsc911x_info = {
|
||||||
|
.flags = SMSC911X_USE_32BIT,
|
||||||
|
.irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_LOW,
|
||||||
|
.irq_type = SMSC911X_IRQ_TYPE_PUSH_PULL,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct platform_device armadillo5x0_smc911x_device = {
|
||||||
|
.name = "smsc911x",
|
||||||
|
.id = -1,
|
||||||
|
.num_resources = ARRAY_SIZE(armadillo5x0_smc911x_resources),
|
||||||
|
.resource = armadillo5x0_smc911x_resources,
|
||||||
|
.dev = {
|
||||||
|
.platform_data = &smsc911x_info,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
/* UART device data */
|
||||||
|
static struct imxuart_platform_data uart_pdata = {
|
||||||
|
.flags = IMXUART_HAVE_RTSCTS,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct platform_device *devices[] __initdata = {
|
||||||
|
&armadillo5x0_smc911x_device,
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Perform board specific initializations
|
||||||
|
*/
|
||||||
|
static void __init armadillo5x0_init(void)
|
||||||
|
{
|
||||||
|
mxc_iomux_setup_multiple_pins(armadillo5x0_pins,
|
||||||
|
ARRAY_SIZE(armadillo5x0_pins), "armadillo5x0");
|
||||||
|
|
||||||
|
platform_add_devices(devices, ARRAY_SIZE(devices));
|
||||||
|
|
||||||
|
/* Register UART */
|
||||||
|
mxc_register_device(&mxc_uart_device0, &uart_pdata);
|
||||||
|
mxc_register_device(&mxc_uart_device1, &uart_pdata);
|
||||||
|
|
||||||
|
/* SMSC9118 IRQ pin */
|
||||||
|
gpio_direction_input(MX31_PIN_GPIO1_0);
|
||||||
|
|
||||||
|
/* Register SDHC */
|
||||||
|
mxc_register_device(&mxcsdhc_device0, &sdhc_pdata);
|
||||||
|
|
||||||
|
/* Register FB */
|
||||||
|
mxc_register_device(&mx3_ipu, &mx3_ipu_data);
|
||||||
|
mxc_register_device(&mx3_fb, &mx3fb_pdata);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void __init armadillo5x0_timer_init(void)
|
||||||
|
{
|
||||||
|
mx31_clocks_init(26000000);
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct sys_timer armadillo5x0_timer = {
|
||||||
|
.init = armadillo5x0_timer_init,
|
||||||
|
};
|
||||||
|
|
||||||
|
MACHINE_START(ARMADILLO5X0, "Armadillo-500")
|
||||||
|
/* Maintainer: Alberto Panizzo */
|
||||||
|
.phys_io = AIPS1_BASE_ADDR,
|
||||||
|
.io_pg_offst = ((AIPS1_BASE_ADDR_VIRT) >> 18) & 0xfffc,
|
||||||
|
.boot_params = PHYS_OFFSET + 0x00000100,
|
||||||
|
.map_io = mx31_map_io,
|
||||||
|
.init_irq = mxc_init_irq,
|
||||||
|
.timer = &armadillo5x0_timer,
|
||||||
|
.init_machine = armadillo5x0_init,
|
||||||
|
MACHINE_END
|
@@ -483,7 +483,7 @@ DEFINE_CLOCK(i2c3_clk, 2, MXC_CCM_CGR0, 30, NULL, NULL, &perclk_clk);
|
|||||||
DEFINE_CLOCK(mpeg4_clk, 0, MXC_CCM_CGR1, 0, NULL, NULL, &ahb_clk);
|
DEFINE_CLOCK(mpeg4_clk, 0, MXC_CCM_CGR1, 0, NULL, NULL, &ahb_clk);
|
||||||
DEFINE_CLOCK(mstick1_clk, 0, MXC_CCM_CGR1, 2, mstick1_get_rate, NULL, &usb_pll_clk);
|
DEFINE_CLOCK(mstick1_clk, 0, MXC_CCM_CGR1, 2, mstick1_get_rate, NULL, &usb_pll_clk);
|
||||||
DEFINE_CLOCK(mstick2_clk, 1, MXC_CCM_CGR1, 4, mstick2_get_rate, NULL, &usb_pll_clk);
|
DEFINE_CLOCK(mstick2_clk, 1, MXC_CCM_CGR1, 4, mstick2_get_rate, NULL, &usb_pll_clk);
|
||||||
DEFINE_CLOCK1(csi_clk, 0, MXC_CCM_CGR1, 6, csi, NULL, &ahb_clk);
|
DEFINE_CLOCK1(csi_clk, 0, MXC_CCM_CGR1, 6, csi, NULL, &serial_pll_clk);
|
||||||
DEFINE_CLOCK(rtc_clk, 0, MXC_CCM_CGR1, 8, NULL, NULL, &ipg_clk);
|
DEFINE_CLOCK(rtc_clk, 0, MXC_CCM_CGR1, 8, NULL, NULL, &ipg_clk);
|
||||||
DEFINE_CLOCK(wdog_clk, 0, MXC_CCM_CGR1, 10, NULL, NULL, &ipg_clk);
|
DEFINE_CLOCK(wdog_clk, 0, MXC_CCM_CGR1, 10, NULL, NULL, &ipg_clk);
|
||||||
DEFINE_CLOCK(pwm_clk, 0, MXC_CCM_CGR1, 12, NULL, NULL, &perclk_clk);
|
DEFINE_CLOCK(pwm_clk, 0, MXC_CCM_CGR1, 12, NULL, NULL, &perclk_clk);
|
||||||
@@ -571,6 +571,13 @@ int __init mx31_clocks_init(unsigned long fref)
|
|||||||
for (i = 0; i < ARRAY_SIZE(lookups); i++)
|
for (i = 0; i < ARRAY_SIZE(lookups); i++)
|
||||||
clkdev_add(&lookups[i]);
|
clkdev_add(&lookups[i]);
|
||||||
|
|
||||||
|
/* change the csi_clk parent if necessary */
|
||||||
|
reg = __raw_readl(MXC_CCM_CCMR);
|
||||||
|
if (!(reg & MXC_CCM_CCMR_CSCS))
|
||||||
|
if (clk_set_parent(&csi_clk, &usb_pll_clk))
|
||||||
|
pr_err("%s: error changing csi_clk parent\n", __func__);
|
||||||
|
|
||||||
|
|
||||||
/* Turn off all possible clocks */
|
/* Turn off all possible clocks */
|
||||||
__raw_writel((3 << 4), MXC_CCM_CGR0);
|
__raw_writel((3 << 4), MXC_CCM_CGR0);
|
||||||
__raw_writel(0, MXC_CCM_CGR1);
|
__raw_writel(0, MXC_CCM_CGR1);
|
||||||
|
@@ -16,3 +16,5 @@ extern struct platform_device mxc_fec_device;
|
|||||||
extern struct platform_device mxcsdhc_device0;
|
extern struct platform_device mxcsdhc_device0;
|
||||||
extern struct platform_device mxcsdhc_device1;
|
extern struct platform_device mxcsdhc_device1;
|
||||||
extern struct platform_device mxc_otg_udc_device;
|
extern struct platform_device mxc_otg_udc_device;
|
||||||
|
extern struct platform_device mxc_rnga_device;
|
||||||
|
|
||||||
|
216
arch/arm/mach-mx3/mx31lilly-db.c
Normal file
216
arch/arm/mach-mx3/mx31lilly-db.c
Normal file
@@ -0,0 +1,216 @@
|
|||||||
|
/*
|
||||||
|
* LILLY-1131 development board support
|
||||||
|
*
|
||||||
|
* Copyright (c) 2009 Daniel Mack <daniel@caiaq.de>
|
||||||
|
*
|
||||||
|
* based on code for other MX31 boards,
|
||||||
|
*
|
||||||
|
* Copyright 2005-2007 Freescale Semiconductor
|
||||||
|
* Copyright (c) 2009 Alberto Panizzo <maramaopercheseimorto@gmail.com>
|
||||||
|
* Copyright (C) 2009 Valentin Longchamp, EPFL Mobots group
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/types.h>
|
||||||
|
#include <linux/init.h>
|
||||||
|
#include <linux/gpio.h>
|
||||||
|
#include <linux/platform_device.h>
|
||||||
|
|
||||||
|
#include <asm/mach-types.h>
|
||||||
|
#include <asm/mach/arch.h>
|
||||||
|
#include <asm/mach/map.h>
|
||||||
|
|
||||||
|
#include <mach/hardware.h>
|
||||||
|
#include <mach/common.h>
|
||||||
|
#include <mach/imx-uart.h>
|
||||||
|
#include <mach/iomux-mx3.h>
|
||||||
|
#include <mach/board-mx31lilly.h>
|
||||||
|
#include <mach/mmc.h>
|
||||||
|
#include <mach/mx3fb.h>
|
||||||
|
#include <mach/ipu.h>
|
||||||
|
|
||||||
|
#include "devices.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file contains board-specific initialization routines for the
|
||||||
|
* LILLY-1131 development board. If you design an own baseboard for the
|
||||||
|
* module, use this file as base for support code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
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,
|
||||||
|
MX31_PIN_SD1_DATA0__SD1_DATA0,
|
||||||
|
MX31_PIN_SD1_CLK__SD1_CLK,
|
||||||
|
MX31_PIN_SD1_CMD__SD1_CMD,
|
||||||
|
MX31_PIN_LD0__LD0,
|
||||||
|
MX31_PIN_LD1__LD1,
|
||||||
|
MX31_PIN_LD2__LD2,
|
||||||
|
MX31_PIN_LD3__LD3,
|
||||||
|
MX31_PIN_LD4__LD4,
|
||||||
|
MX31_PIN_LD5__LD5,
|
||||||
|
MX31_PIN_LD6__LD6,
|
||||||
|
MX31_PIN_LD7__LD7,
|
||||||
|
MX31_PIN_LD8__LD8,
|
||||||
|
MX31_PIN_LD9__LD9,
|
||||||
|
MX31_PIN_LD10__LD10,
|
||||||
|
MX31_PIN_LD11__LD11,
|
||||||
|
MX31_PIN_LD12__LD12,
|
||||||
|
MX31_PIN_LD13__LD13,
|
||||||
|
MX31_PIN_LD14__LD14,
|
||||||
|
MX31_PIN_LD15__LD15,
|
||||||
|
MX31_PIN_LD16__LD16,
|
||||||
|
MX31_PIN_LD17__LD17,
|
||||||
|
MX31_PIN_VSYNC3__VSYNC3,
|
||||||
|
MX31_PIN_HSYNC__HSYNC,
|
||||||
|
MX31_PIN_FPSHIFT__FPSHIFT,
|
||||||
|
MX31_PIN_DRDY0__DRDY0,
|
||||||
|
MX31_PIN_CONTRAST__CONTRAST,
|
||||||
|
};
|
||||||
|
|
||||||
|
/* UART */
|
||||||
|
static struct imxuart_platform_data uart_pdata __initdata = {
|
||||||
|
.flags = IMXUART_HAVE_RTSCTS,
|
||||||
|
};
|
||||||
|
|
||||||
|
/* MMC support */
|
||||||
|
|
||||||
|
static int mxc_mmc1_get_ro(struct device *dev)
|
||||||
|
{
|
||||||
|
return gpio_get_value(IOMUX_TO_GPIO(MX31_PIN_LCS0));
|
||||||
|
}
|
||||||
|
|
||||||
|
static int gpio_det, gpio_wp;
|
||||||
|
|
||||||
|
static int mxc_mmc1_init(struct device *dev,
|
||||||
|
irq_handler_t detect_irq, void *data)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
gpio_det = IOMUX_TO_GPIO(MX31_PIN_GPIO1_1);
|
||||||
|
gpio_wp = IOMUX_TO_GPIO(MX31_PIN_LCS0);
|
||||||
|
|
||||||
|
ret = gpio_request(gpio_det, "MMC detect");
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
ret = gpio_request(gpio_wp, "MMC w/p");
|
||||||
|
if (ret)
|
||||||
|
goto exit_free_det;
|
||||||
|
|
||||||
|
gpio_direction_input(gpio_det);
|
||||||
|
gpio_direction_input(gpio_wp);
|
||||||
|
|
||||||
|
ret = request_irq(IOMUX_TO_IRQ(MX31_PIN_GPIO1_1), detect_irq,
|
||||||
|
IRQF_DISABLED | IRQF_TRIGGER_FALLING,
|
||||||
|
"MMC detect", data);
|
||||||
|
if (ret)
|
||||||
|
goto exit_free_wp;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
exit_free_wp:
|
||||||
|
gpio_free(gpio_wp);
|
||||||
|
|
||||||
|
exit_free_det:
|
||||||
|
gpio_free(gpio_det);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void mxc_mmc1_exit(struct device *dev, void *data)
|
||||||
|
{
|
||||||
|
gpio_free(gpio_det);
|
||||||
|
gpio_free(gpio_wp);
|
||||||
|
free_irq(IOMUX_TO_IRQ(MX31_PIN_GPIO1_1), data);
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct imxmmc_platform_data mmc_pdata = {
|
||||||
|
.get_ro = mxc_mmc1_get_ro,
|
||||||
|
.init = mxc_mmc1_init,
|
||||||
|
.exit = mxc_mmc1_exit,
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Framebuffer support */
|
||||||
|
static struct ipu_platform_data ipu_data __initdata = {
|
||||||
|
.irq_base = MXC_IPU_IRQ_START,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct fb_videomode fb_modedb = {
|
||||||
|
/* 640x480 TFT panel (IPS-056T) */
|
||||||
|
.name = "CRT-VGA",
|
||||||
|
.refresh = 64,
|
||||||
|
.xres = 640,
|
||||||
|
.yres = 480,
|
||||||
|
.pixclock = 30000,
|
||||||
|
.left_margin = 200,
|
||||||
|
.right_margin = 2,
|
||||||
|
.upper_margin = 2,
|
||||||
|
.lower_margin = 2,
|
||||||
|
.hsync_len = 3,
|
||||||
|
.vsync_len = 1,
|
||||||
|
.sync = FB_SYNC_VERT_HIGH_ACT | FB_SYNC_OE_ACT_HIGH,
|
||||||
|
.vmode = FB_VMODE_NONINTERLACED,
|
||||||
|
.flag = 0,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct mx3fb_platform_data fb_pdata __initdata = {
|
||||||
|
.dma_dev = &mx3_ipu.dev,
|
||||||
|
.name = "CRT-VGA",
|
||||||
|
.mode = &fb_modedb,
|
||||||
|
.num_modes = 1,
|
||||||
|
};
|
||||||
|
|
||||||
|
#define LCD_VCC_EN_GPIO (7)
|
||||||
|
|
||||||
|
static void __init mx31lilly_init_fb(void)
|
||||||
|
{
|
||||||
|
if (gpio_request(LCD_VCC_EN_GPIO, "LCD enable") != 0) {
|
||||||
|
printk(KERN_WARNING "unable to request LCD_VCC_EN pin.\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
mxc_register_device(&mx3_ipu, &ipu_data);
|
||||||
|
mxc_register_device(&mx3_fb, &fb_pdata);
|
||||||
|
gpio_direction_output(LCD_VCC_EN_GPIO, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void __init mx31lilly_db_init(void)
|
||||||
|
{
|
||||||
|
mxc_iomux_setup_multiple_pins(lilly_db_board_pins,
|
||||||
|
ARRAY_SIZE(lilly_db_board_pins),
|
||||||
|
"development board pins");
|
||||||
|
mxc_register_device(&mxc_uart_device0, &uart_pdata);
|
||||||
|
mxc_register_device(&mxc_uart_device1, &uart_pdata);
|
||||||
|
mxc_register_device(&mxc_uart_device2, &uart_pdata);
|
||||||
|
mxc_register_device(&mxcsdhc_device0, &mmc_pdata);
|
||||||
|
mx31lilly_init_fb();
|
||||||
|
}
|
||||||
|
|
155
arch/arm/mach-mx3/mx31lilly.c
Normal file
155
arch/arm/mach-mx3/mx31lilly.c
Normal file
@@ -0,0 +1,155 @@
|
|||||||
|
/*
|
||||||
|
* LILLY-1131 module support
|
||||||
|
*
|
||||||
|
* Copyright (c) 2009 Daniel Mack <daniel@caiaq.de>
|
||||||
|
*
|
||||||
|
* based on code for other MX31 boards,
|
||||||
|
*
|
||||||
|
* Copyright 2005-2007 Freescale Semiconductor
|
||||||
|
* Copyright (c) 2009 Alberto Panizzo <maramaopercheseimorto@gmail.com>
|
||||||
|
* Copyright (C) 2009 Valentin Longchamp, EPFL Mobots group
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <linux/types.h>
|
||||||
|
#include <linux/init.h>
|
||||||
|
#include <linux/clk.h>
|
||||||
|
#include <linux/platform_device.h>
|
||||||
|
#include <linux/interrupt.h>
|
||||||
|
#include <linux/smsc911x.h>
|
||||||
|
#include <linux/mtd/physmap.h>
|
||||||
|
|
||||||
|
#include <asm/mach-types.h>
|
||||||
|
#include <asm/mach/arch.h>
|
||||||
|
#include <asm/mach/time.h>
|
||||||
|
#include <asm/mach/map.h>
|
||||||
|
|
||||||
|
#include <mach/hardware.h>
|
||||||
|
#include <mach/common.h>
|
||||||
|
#include <mach/iomux-mx3.h>
|
||||||
|
#include <mach/board-mx31lilly.h>
|
||||||
|
|
||||||
|
#include "devices.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file contains module-specific initialization routines for LILLY-1131.
|
||||||
|
* Initialization of peripherals found on the baseboard is implemented in the
|
||||||
|
* appropriate baseboard support code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* SMSC ethernet support */
|
||||||
|
|
||||||
|
static struct resource smsc91x_resources[] = {
|
||||||
|
{
|
||||||
|
.start = CS4_BASE_ADDR,
|
||||||
|
.end = CS4_BASE_ADDR + 0xffff,
|
||||||
|
.flags = IORESOURCE_MEM,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = IOMUX_TO_IRQ(MX31_PIN_GPIO1_0),
|
||||||
|
.end = IOMUX_TO_IRQ(MX31_PIN_GPIO1_0),
|
||||||
|
.flags = IORESOURCE_IRQ | IRQF_TRIGGER_FALLING,
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct smsc911x_platform_config smsc911x_config = {
|
||||||
|
.phy_interface = PHY_INTERFACE_MODE_MII,
|
||||||
|
.irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_LOW,
|
||||||
|
.irq_type = SMSC911X_IRQ_TYPE_OPEN_DRAIN,
|
||||||
|
.flags = SMSC911X_USE_32BIT |
|
||||||
|
SMSC911X_SAVE_MAC_ADDRESS |
|
||||||
|
SMSC911X_FORCE_INTERNAL_PHY,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct platform_device smsc91x_device = {
|
||||||
|
.name = "smsc911x",
|
||||||
|
.id = -1,
|
||||||
|
.num_resources = ARRAY_SIZE(smsc91x_resources),
|
||||||
|
.resource = smsc91x_resources,
|
||||||
|
.dev = {
|
||||||
|
.platform_data = &smsc911x_config,
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/* NOR flash */
|
||||||
|
static struct physmap_flash_data nor_flash_data = {
|
||||||
|
.width = 2,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct resource nor_flash_resource = {
|
||||||
|
.start = 0xa0000000,
|
||||||
|
.end = 0xa1ffffff,
|
||||||
|
.flags = IORESOURCE_MEM,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct platform_device physmap_flash_device = {
|
||||||
|
.name = "physmap-flash",
|
||||||
|
.id = 0,
|
||||||
|
.dev = {
|
||||||
|
.platform_data = &nor_flash_data,
|
||||||
|
},
|
||||||
|
.resource = &nor_flash_resource,
|
||||||
|
.num_resources = 1,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct platform_device *devices[] __initdata = {
|
||||||
|
&smsc91x_device,
|
||||||
|
&physmap_flash_device,
|
||||||
|
&mxc_i2c_device1,
|
||||||
|
};
|
||||||
|
|
||||||
|
static int mx31lilly_baseboard;
|
||||||
|
core_param(mx31lilly_baseboard, mx31lilly_baseboard, int, 0444);
|
||||||
|
|
||||||
|
static void __init mx31lilly_board_init(void)
|
||||||
|
{
|
||||||
|
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_alloc_pin(MX31_PIN_CS4__CS4, "Ethernet CS");
|
||||||
|
mxc_iomux_alloc_pin(MX31_PIN_CSPI2_MOSI__SCL, "I2C SCL");
|
||||||
|
mxc_iomux_alloc_pin(MX31_PIN_CSPI2_MISO__SDA, "I2C SDA");
|
||||||
|
|
||||||
|
platform_add_devices(devices, ARRAY_SIZE(devices));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void __init mx31lilly_timer_init(void)
|
||||||
|
{
|
||||||
|
mx31_clocks_init(26000000);
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct sys_timer mx31lilly_timer = {
|
||||||
|
.init = mx31lilly_timer_init,
|
||||||
|
};
|
||||||
|
|
||||||
|
MACHINE_START(LILLY1131, "INCO startec LILLY-1131")
|
||||||
|
.phys_io = AIPS1_BASE_ADDR,
|
||||||
|
.io_pg_offst = ((AIPS1_BASE_ADDR_VIRT) >> 18) & 0xfffc,
|
||||||
|
.boot_params = PHYS_OFFSET + 0x100,
|
||||||
|
.map_io = mx31_map_io,
|
||||||
|
.init_irq = mxc_init_irq,
|
||||||
|
.init_machine = mx31lilly_board_init,
|
||||||
|
.timer = &mx31lilly_timer,
|
||||||
|
MACHINE_END
|
||||||
|
|
@@ -21,6 +21,8 @@
|
|||||||
#include <linux/clk.h>
|
#include <linux/clk.h>
|
||||||
#include <linux/irq.h>
|
#include <linux/irq.h>
|
||||||
#include <linux/gpio.h>
|
#include <linux/gpio.h>
|
||||||
|
#include <linux/smsc911x.h>
|
||||||
|
#include <linux/platform_device.h>
|
||||||
|
|
||||||
#include <mach/hardware.h>
|
#include <mach/hardware.h>
|
||||||
#include <asm/mach-types.h>
|
#include <asm/mach-types.h>
|
||||||
@@ -55,6 +57,39 @@ static struct imxuart_platform_data uart_pdata = {
|
|||||||
.flags = IMXUART_HAVE_RTSCTS,
|
.flags = IMXUART_HAVE_RTSCTS,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Support for the SMSC9217 on the Debug board.
|
||||||
|
*/
|
||||||
|
|
||||||
|
static struct smsc911x_platform_config smsc911x_config = {
|
||||||
|
.irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_LOW,
|
||||||
|
.irq_type = SMSC911X_IRQ_TYPE_PUSH_PULL,
|
||||||
|
.flags = SMSC911X_USE_16BIT | SMSC911X_FORCE_INTERNAL_PHY,
|
||||||
|
.phy_interface = PHY_INTERFACE_MODE_MII,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct resource smsc911x_resources[] = {
|
||||||
|
{
|
||||||
|
.start = LAN9217_BASE_ADDR,
|
||||||
|
.end = LAN9217_BASE_ADDR + 0xff,
|
||||||
|
.flags = IORESOURCE_MEM,
|
||||||
|
}, {
|
||||||
|
.start = EXPIO_INT_ENET,
|
||||||
|
.end = EXPIO_INT_ENET,
|
||||||
|
.flags = IORESOURCE_IRQ,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct platform_device smsc911x_device = {
|
||||||
|
.name = "smsc911x",
|
||||||
|
.id = -1,
|
||||||
|
.num_resources = ARRAY_SIZE(smsc911x_resources),
|
||||||
|
.resource = smsc911x_resources,
|
||||||
|
.dev = {
|
||||||
|
.platform_data = &smsc911x_config,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Routines for the CPLD on the debug board. It contains a CPLD handling
|
* Routines for the CPLD on the debug board. It contains a CPLD handling
|
||||||
* LEDs, switches, interrupts for Ethernet.
|
* LEDs, switches, interrupts for Ethernet.
|
||||||
@@ -207,7 +242,8 @@ static void __init mxc_board_init(void)
|
|||||||
|
|
||||||
mxc_register_device(&mxc_uart_device0, &uart_pdata);
|
mxc_register_device(&mxc_uart_device0, &uart_pdata);
|
||||||
|
|
||||||
mx31pdk_init_expio();
|
if (!mx31pdk_init_expio())
|
||||||
|
platform_device_register(&smsc911x_device);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __init mx31pdk_timer_init(void)
|
static void __init mx31pdk_timer_init(void)
|
||||||
|
104
arch/arm/mach-mx3/mx35pdk.c
Normal file
104
arch/arm/mach-mx3/mx35pdk.c
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2009 Freescale Semiconductor, Inc. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Author: Fabio Estevam <fabio.estevam@freescale.com>
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <linux/types.h>
|
||||||
|
#include <linux/init.h>
|
||||||
|
#include <linux/platform_device.h>
|
||||||
|
#include <linux/memory.h>
|
||||||
|
#include <linux/gpio.h>
|
||||||
|
|
||||||
|
#include <asm/mach-types.h>
|
||||||
|
#include <asm/mach/arch.h>
|
||||||
|
#include <asm/mach/time.h>
|
||||||
|
#include <asm/mach/map.h>
|
||||||
|
|
||||||
|
#include <mach/hardware.h>
|
||||||
|
#include <mach/common.h>
|
||||||
|
#include <mach/imx-uart.h>
|
||||||
|
#include <mach/iomux-mx35.h>
|
||||||
|
|
||||||
|
#include "devices.h"
|
||||||
|
|
||||||
|
static struct imxuart_platform_data uart_pdata = {
|
||||||
|
.flags = IMXUART_HAVE_RTSCTS,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct platform_device *devices[] __initdata = {
|
||||||
|
&mxc_fec_device,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct pad_desc mx35pdk_pads[] = {
|
||||||
|
/* UART1 */
|
||||||
|
MX35_PAD_CTS1__UART1_CTS,
|
||||||
|
MX35_PAD_RTS1__UART1_RTS,
|
||||||
|
MX35_PAD_TXD1__UART1_TXD_MUX,
|
||||||
|
MX35_PAD_RXD1__UART1_RXD_MUX,
|
||||||
|
/* FEC */
|
||||||
|
MX35_PAD_FEC_TX_CLK__FEC_TX_CLK,
|
||||||
|
MX35_PAD_FEC_RX_CLK__FEC_RX_CLK,
|
||||||
|
MX35_PAD_FEC_RX_DV__FEC_RX_DV,
|
||||||
|
MX35_PAD_FEC_COL__FEC_COL,
|
||||||
|
MX35_PAD_FEC_RDATA0__FEC_RDATA_0,
|
||||||
|
MX35_PAD_FEC_TDATA0__FEC_TDATA_0,
|
||||||
|
MX35_PAD_FEC_TX_EN__FEC_TX_EN,
|
||||||
|
MX35_PAD_FEC_MDC__FEC_MDC,
|
||||||
|
MX35_PAD_FEC_MDIO__FEC_MDIO,
|
||||||
|
MX35_PAD_FEC_TX_ERR__FEC_TX_ERR,
|
||||||
|
MX35_PAD_FEC_RX_ERR__FEC_RX_ERR,
|
||||||
|
MX35_PAD_FEC_CRS__FEC_CRS,
|
||||||
|
MX35_PAD_FEC_RDATA1__FEC_RDATA_1,
|
||||||
|
MX35_PAD_FEC_TDATA1__FEC_TDATA_1,
|
||||||
|
MX35_PAD_FEC_RDATA2__FEC_RDATA_2,
|
||||||
|
MX35_PAD_FEC_TDATA2__FEC_TDATA_2,
|
||||||
|
MX35_PAD_FEC_RDATA3__FEC_RDATA_3,
|
||||||
|
MX35_PAD_FEC_TDATA3__FEC_TDATA_3,
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Board specific initialization.
|
||||||
|
*/
|
||||||
|
static void __init mxc_board_init(void)
|
||||||
|
{
|
||||||
|
mxc_iomux_v3_setup_multiple_pads(mx35pdk_pads, ARRAY_SIZE(mx35pdk_pads));
|
||||||
|
|
||||||
|
platform_add_devices(devices, ARRAY_SIZE(devices));
|
||||||
|
|
||||||
|
mxc_register_device(&mxc_uart_device0, &uart_pdata);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void __init mx35pdk_timer_init(void)
|
||||||
|
{
|
||||||
|
mx35_clocks_init();
|
||||||
|
}
|
||||||
|
|
||||||
|
struct sys_timer mx35pdk_timer = {
|
||||||
|
.init = mx35pdk_timer_init,
|
||||||
|
};
|
||||||
|
|
||||||
|
MACHINE_START(MX35_3DS, "Freescale MX35PDK")
|
||||||
|
/* Maintainer: Freescale Semiconductor, Inc */
|
||||||
|
.phys_io = AIPS1_BASE_ADDR,
|
||||||
|
.io_pg_offst = ((AIPS1_BASE_ADDR_VIRT) >> 18) & 0xfffc,
|
||||||
|
.boot_params = PHYS_OFFSET + 0x100,
|
||||||
|
.map_io = mx35_map_io,
|
||||||
|
.init_irq = mxc_init_irq,
|
||||||
|
.init_machine = mxc_board_init,
|
||||||
|
.timer = &mx35pdk_timer,
|
||||||
|
MACHINE_END
|
22
arch/arm/plat-mxc/include/mach/board-armadillo5x0.h
Normal file
22
arch/arm/plat-mxc/include/mach/board-armadillo5x0.h
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2009 Alberto Panizzo <maramaopercheseimorto@gmail.com>.
|
||||||
|
* All Rights Reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __ASM_ARCH_MXC_BOARD_ARMADILLO5X0_H__
|
||||||
|
#define __ASM_ARCH_MXC_BOARD_ARMADILLO5X0_H__
|
||||||
|
|
||||||
|
#include <mach/hardware.h>
|
||||||
|
|
||||||
|
/* mandatory for CONFIG_DEBUG_LL */
|
||||||
|
|
||||||
|
#define MXC_LL_UART_PADDR UART1_BASE_ADDR
|
||||||
|
#define MXC_LL_UART_VADDR AIPS1_IO_ADDRESS(UART1_BASE_ADDR)
|
||||||
|
|
||||||
|
#endif
|
19
arch/arm/plat-mxc/include/mach/board-mx27lite.h
Normal file
19
arch/arm/plat-mxc/include/mach/board-mx27lite.h
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2009 Freescale Semiconductor, Inc. All Rights Reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __ASM_ARCH_MXC_BOARD_MX27LITE_H__
|
||||||
|
#define __ASM_ARCH_MXC_BOARD_MX27LITE_H__
|
||||||
|
|
||||||
|
/* mandatory for CONFIG_DEBUG_LL */
|
||||||
|
|
||||||
|
#define MXC_LL_UART_PADDR UART1_BASE_ADDR
|
||||||
|
#define MXC_LL_UART_VADDR AIPS1_IO_ADDRESS(UART1_BASE_ADDR)
|
||||||
|
|
||||||
|
#endif /* __ASM_ARCH_MXC_BOARD_MX27LITE_H__ */
|
46
arch/arm/plat-mxc/include/mach/board-mx31lilly.h
Normal file
46
arch/arm/plat-mxc/include/mach/board-mx31lilly.h
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2009 Daniel Mack <daniel@caiaq.de>
|
||||||
|
*
|
||||||
|
* Based on code for mobots boards,
|
||||||
|
* Copyright (C) 2009 Valentin Longchamp, EPFL Mobots group
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||||
|
* MA 02110-1301, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __ASM_ARCH_MXC_BOARD_MX31LILLY_H__
|
||||||
|
#define __ASM_ARCH_MXC_BOARD_MX31LILLY_H__
|
||||||
|
|
||||||
|
/* mandatory for CONFIG_LL_DEBUG */
|
||||||
|
|
||||||
|
#define MXC_LL_UART_PADDR UART1_BASE_ADDR
|
||||||
|
#define MXC_LL_UART_VADDR (AIPI_BASE_ADDR_VIRT + 0x0A000)
|
||||||
|
|
||||||
|
#ifndef __ASSEMBLY__
|
||||||
|
|
||||||
|
enum mx31lilly_boards {
|
||||||
|
MX31LILLY_NOBOARD = 0,
|
||||||
|
MX31LILLY_DB = 1,
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This CPU module needs a baseboard to work. After basic initializing
|
||||||
|
* its own devices, it calls baseboard's init function.
|
||||||
|
*/
|
||||||
|
|
||||||
|
extern void mx31lilly_db_init(void);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* __ASM_ARCH_MXC_BOARD_MX31LILLY_H__ */
|
27
arch/arm/plat-mxc/include/mach/board-mx35pdk.h
Normal file
27
arch/arm/plat-mxc/include/mach/board-mx35pdk.h
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2009 Freescale Semiconductor, Inc. All Rights Reserved
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __ASM_ARCH_MXC_BOARD_MX35PDK_H__
|
||||||
|
#define __ASM_ARCH_MXC_BOARD_MX35PDK_H__
|
||||||
|
|
||||||
|
/* mandatory for CONFIG_DEBUG_LL */
|
||||||
|
|
||||||
|
#define MXC_LL_UART_PADDR UART1_BASE_ADDR
|
||||||
|
#define MXC_LL_UART_VADDR AIPS1_IO_ADDRESS(UART1_BASE_ADDR)
|
||||||
|
|
||||||
|
#endif /* __ASM_ARCH_MXC_BOARD_MX35PDK_H__ */
|
@@ -42,6 +42,15 @@
|
|||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_MACH_MX27_3DS
|
#ifdef CONFIG_MACH_MX27_3DS
|
||||||
#include <mach/board-mx27pdk.h>
|
#include <mach/board-mx27pdk.h>
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_MACH_ARMADILLO5X0
|
||||||
|
#include <mach/board-armadillo5x0.h>
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_MACH_MX35_3DS
|
||||||
|
#include <mach/board-mx35pdk.h>
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_MACH_MX27LITE
|
||||||
|
#include <mach/board-mx27lite.h>
|
||||||
#endif
|
#endif
|
||||||
.macro addruart,rx
|
.macro addruart,rx
|
||||||
mrc p15, 0, \rx, c1, c0
|
mrc p15, 0, \rx, c1, c0
|
||||||
|
@@ -1024,6 +1024,8 @@ imx_console_setup(struct console *co, char *options)
|
|||||||
if (co->index == -1 || co->index >= ARRAY_SIZE(imx_ports))
|
if (co->index == -1 || co->index >= ARRAY_SIZE(imx_ports))
|
||||||
co->index = 0;
|
co->index = 0;
|
||||||
sport = imx_ports[co->index];
|
sport = imx_ports[co->index];
|
||||||
|
if(sport == NULL)
|
||||||
|
return -ENODEV;
|
||||||
|
|
||||||
if (options)
|
if (options)
|
||||||
uart_parse_options(options, &baud, &parity, &bits, &flow);
|
uart_parse_options(options, &baud, &parity, &bits, &flow);
|
||||||
|
Reference in New Issue
Block a user