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
Show 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
...
@@ -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
arch/arm/mach-mx2/Makefile
View file @
2d8d2493
...
@@ -16,3 +16,5 @@ obj-$(CONFIG_MACH_MX27ADS) += mx27ads.o
...
@@ -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
arch/arm/mach-mx2/clock_imx21.c
View file @
2d8d2493
...
@@ -48,6 +48,25 @@ static void _clk_disable(struct clk *clk)
...
@@ -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)
...
@@ -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)
...
@@ -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[] = {
...
@@ -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 = {
...
@@ -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 = {
...
@@ -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
)
...
...
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")
...
@@ -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
=
mx
c
_map_io
,
.
map_io
=
mx
27
_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
,
...
...
arch/arm/mach-mx3/Kconfig
View file @
2d8d2493
...
@@ -57,6 +57,13 @@ config MACH_MX31MOBOARD
...
@@ -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
...
@@ -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
arch/arm/mach-mx3/Makefile
View file @
2d8d2493
...
@@ -8,6 +8,7 @@ obj-y := mm.o devices.o
...
@@ -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 \
...
@@ -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
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);
...
@@ -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)
...
@@ -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
);
...
...
arch/arm/mach-mx3/devices.h
View file @
2d8d2493
...
@@ -16,3 +16,5 @@ extern struct platform_device mxc_fec_device;
...
@@ -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
;
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 @@
...
@@ -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 = {
...
@@ -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)
...
@@ -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
)
...
...
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 @@
...
@@ -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
...
...
drivers/serial/imx.c
View file @
2d8d2493
...
@@ -1024,6 +1024,8 @@ imx_console_setup(struct console *co, char *options)
...
@@ -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
);
...
...
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