Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
linux
linux-davinci
Commits
2d8d2493
Commit
2d8d2493
authored
Jun 08, 2009
by
Russell King
Committed by
Russell King
Jun 08, 2009
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'mxc-master' of
git://git.pengutronix.de/git/imx/linux-2.6
into devel
parents
c0683039
a0895162
Changes
20
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
1123 additions
and
29 deletions
+1123
-29
arch/arm/mach-mx2/Kconfig
arch/arm/mach-mx2/Kconfig
+8
-0
arch/arm/mach-mx2/Makefile
arch/arm/mach-mx2/Makefile
+2
-0
arch/arm/mach-mx2/clock_imx21.c
arch/arm/mach-mx2/clock_imx21.c
+51
-26
arch/arm/mach-mx2/mx27lite.c
arch/arm/mach-mx2/mx27lite.c
+95
-0
arch/arm/mach-mx2/mx27pdk.c
arch/arm/mach-mx2/mx27pdk.c
+1
-1
arch/arm/mach-mx3/Kconfig
arch/arm/mach-mx3/Kconfig
+21
-0
arch/arm/mach-mx3/Makefile
arch/arm/mach-mx3/Makefile
+3
-0
arch/arm/mach-mx3/armadillo5x0.c
arch/arm/mach-mx3/armadillo5x0.c
+295
-0
arch/arm/mach-mx3/clock.c
arch/arm/mach-mx3/clock.c
+8
-1
arch/arm/mach-mx3/devices.h
arch/arm/mach-mx3/devices.h
+2
-0
arch/arm/mach-mx3/mx31lilly-db.c
arch/arm/mach-mx3/mx31lilly-db.c
+216
-0
arch/arm/mach-mx3/mx31lilly.c
arch/arm/mach-mx3/mx31lilly.c
+155
-0
arch/arm/mach-mx3/mx31pdk.c
arch/arm/mach-mx3/mx31pdk.c
+37
-1
arch/arm/mach-mx3/mx35pdk.c
arch/arm/mach-mx3/mx35pdk.c
+104
-0
arch/arm/plat-mxc/include/mach/board-armadillo5x0.h
arch/arm/plat-mxc/include/mach/board-armadillo5x0.h
+22
-0
arch/arm/plat-mxc/include/mach/board-mx27lite.h
arch/arm/plat-mxc/include/mach/board-mx27lite.h
+19
-0
arch/arm/plat-mxc/include/mach/board-mx31lilly.h
arch/arm/plat-mxc/include/mach/board-mx31lilly.h
+46
-0
arch/arm/plat-mxc/include/mach/board-mx35pdk.h
arch/arm/plat-mxc/include/mach/board-mx35pdk.h
+27
-0
arch/arm/plat-mxc/include/mach/debug-macro.S
arch/arm/plat-mxc/include/mach/debug-macro.S
+9
-0
drivers/serial/imx.c
drivers/serial/imx.c
+2
-0
No files found.
arch/arm/mach-mx2/Kconfig
View file @
2d8d2493
...
...
@@ -59,4 +59,12 @@ config MACH_MX27_3DS
help
Include support for MX27PDK platform. This includes specific
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
arch/arm/mach-mx2/Makefile
View file @
2d8d2493
...
...
@@ -16,3 +16,5 @@ obj-$(CONFIG_MACH_MX27ADS) += mx27ads.o
obj-$(CONFIG_MACH_PCM038)
+=
pcm038.o
obj-$(CONFIG_MACH_PCM970_BASEBOARD)
+=
pcm970-baseboard.o
obj-$(CONFIG_MACH_MX27_3DS)
+=
mx27pdk.o
obj-$(CONFIG_MACH_MX27LITE)
+=
mx27lite.o
arch/arm/mach-mx2/clock_imx21.c
View file @
2d8d2493
...
...
@@ -48,6 +48,25 @@ static void _clk_disable(struct clk *clk)
__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
)
{
u32
reg
;
...
...
@@ -78,19 +97,7 @@ static void _clk_spll_disable(struct clk *clk)
static
unsigned
long
_clk_perclkx_round_rate
(
struct
clk
*
clk
,
unsigned
long
rate
)
{
u32
div
;
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
;
return
_clk_generic_round_rate
(
clk
,
rate
,
64
);
}
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
);
}
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
)
{
unsigned
long
parent_rate
;
...
...
@@ -595,11 +628,14 @@ static struct clk csi_clk[] = {
static
struct
clk
usb_clk
[]
=
{
{
.
parent
=
&
spll_clk
,
.
secondary
=
&
usb_clk
[
1
],
.
get_rate
=
_clk_usb_recalc
,
.
enable
=
_clk_enable
,
.
enable_reg
=
CCM_PCCR_USBOTG_REG
,
.
enable_shift
=
CCM_PCCR_USBOTG_OFFSET
,
.
disable
=
_clk_disable
,
.
round_rate
=
_clk_usb_round_rate
,
.
set_rate
=
_clk_usb_set_rate
,
},
{
.
parent
=
&
hclk_clk
,
.
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
)
{
u32
div
;
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
;
return
_clk_generic_round_rate
(
clk
,
rate
,
8
);
}
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
(
"imx-fb.0"
,
NULL
,
lcdc_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
,
"ssi2"
,
ssi_clk
[
1
])
_REGISTER_CLOCK
(
"mxc_nand.0"
,
NULL
,
nfc_clk
)
...
...
arch/arm/mach-mx2/mx27lite.c
0 → 100644
View file @
2d8d2493
/*
* 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
arch/arm/mach-mx2/mx27pdk.c
View file @
2d8d2493
...
...
@@ -88,7 +88,7 @@ MACHINE_START(MX27_3DS, "Freescale MX27PDK")
.
phys_io
=
AIPI_BASE_ADDR
,
.
io_pg_offst
=
((
AIPI_BASE_ADDR_VIRT
)
>>
18
)
&
0xfffc
,
.
boot_params
=
PHYS_OFFSET
+
0x100
,
.
map_io
=
mx
c
_map_io
,
.
map_io
=
mx
27
_map_io
,
.
init_irq
=
mxc_init_irq
,
.
init_machine
=
mx27pdk_init
,
.
timer
=
&
mx27pdk_timer
,
...
...
arch/arm/mach-mx3/Kconfig
View file @
2d8d2493
...
...
@@ -57,6 +57,13 @@ config MACH_MX31MOBOARD
Include support for mx31moboard platform. This includes specific
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
bool "Support Dave/DENX QongEVB-LITE platform"
select ARCH_MX31
...
...
@@ -71,4 +78,18 @@ config MACH_PCM043
Include support for Phytec pcm043 platform. This includes
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
arch/arm/mach-mx3/Makefile
View file @
2d8d2493
...
...
@@ -8,6 +8,7 @@ obj-y := mm.o devices.o
obj-$(CONFIG_ARCH_MX31)
+=
clock.o iomux.o
obj-$(CONFIG_ARCH_MX35)
+=
clock-imx35.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_PCM037)
+=
pcm037.o
obj-$(CONFIG_MACH_MX31_3DS)
+=
mx31pdk.o
...
...
@@ -15,3 +16,5 @@ obj-$(CONFIG_MACH_MX31MOBOARD) += mx31moboard.o mx31moboard-devboard.o \
mx31moboard-marxbot.o
obj-$(CONFIG_MACH_QONG)
+=
qong.o
obj-$(CONFIG_MACH_PCM043)
+=
pcm043.o
obj-$(CONFIG_MACH_ARMADILLO5X0)
+=
armadillo5x0.o
obj-$(CONFIG_MACH_MX35_3DS)
+=
mx35pdk.o
arch/arm/mach-mx3/armadillo5x0.c
0 → 100644
View file @
2d8d2493
/*
* 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
arch/arm/mach-mx3/clock.c
View file @
2d8d2493
...
...
@@ -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
(
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_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
(
wdog_clk
,
0
,
MXC_CCM_CGR1
,
10
,
NULL
,
NULL
,
&
ipg_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
++
)
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 */
__raw_writel
((
3
<<
4
),
MXC_CCM_CGR0
);
__raw_writel
(
0
,
MXC_CCM_CGR1
);
...
...
arch/arm/mach-mx3/devices.h
View file @
2d8d2493
...
...
@@ -16,3 +16,5 @@ extern struct platform_device mxc_fec_device;
extern
struct
platform_device
mxcsdhc_device0
;
extern
struct
platform_device
mxcsdhc_device1
;
extern
struct
platform_device
mxc_otg_udc_device
;
extern
struct
platform_device
mxc_rnga_device
;
arch/arm/mach-mx3/mx31lilly-db.c
0 → 100644
View file @
2d8d2493
/*
* 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
();
}
arch/arm/mach-mx3/mx31lilly.c
0 → 100644
View file @
2d8d2493
/*
* 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
arch/arm/mach-mx3/mx31pdk.c
View file @
2d8d2493
...
...
@@ -21,6 +21,8 @@
#include <linux/clk.h>
#include <linux/irq.h>
#include <linux/gpio.h>
#include <linux/smsc911x.h>
#include <linux/platform_device.h>
#include <mach/hardware.h>
#include <asm/mach-types.h>
...
...
@@ -55,6 +57,39 @@ static struct imxuart_platform_data uart_pdata = {
.
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
* LEDs, switches, interrupts for Ethernet.
...
...
@@ -207,7 +242,8 @@ static void __init mxc_board_init(void)
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
)
...
...
arch/arm/mach-mx3/mx35pdk.c
0 → 100644
View file @
2d8d2493
/*
* 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
arch/arm/plat-mxc/include/mach/board-armadillo5x0.h
0 → 100644
View file @
2d8d2493
/*
* 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
arch/arm/plat-mxc/include/mach/board-mx27lite.h
0 → 100644
View file @
2d8d2493
/*
* 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__ */
arch/arm/plat-mxc/include/mach/board-mx31lilly.h
0 → 100644
View file @
2d8d2493
/*
* 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__ */
arch/arm/plat-mxc/include/mach/board-mx35pdk.h
0 → 100644
View file @
2d8d2493
/*
* 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__ */
arch/arm/plat-mxc/include/mach/debug-macro.S
View file @
2d8d2493
...
...
@@ -42,6 +42,15 @@
#endif
#ifdef CONFIG_MACH_MX27_3DS
#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
.
macro
addruart
,
rx
mrc
p15
,
0
,
\
rx
,
c1
,
c0
...
...
drivers/serial/imx.c
View file @
2d8d2493
...
...
@@ -1024,6 +1024,8 @@ imx_console_setup(struct console *co, char *options)
if
(
co
->
index
==
-
1
||
co
->
index
>=
ARRAY_SIZE
(
imx_ports
))
co
->
index
=
0
;
sport
=
imx_ports
[
co
->
index
];
if
(
sport
==
NULL
)
return
-
ENODEV
;
if
(
options
)
uart_parse_options
(
options
,
&
baud
,
&
parity
,
&
bits
,
&
flow
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment