Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
39bd8064
Commit
39bd8064
authored
Jul 09, 2009
by
Russell King
Committed by
Russell King
Jul 09, 2009
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'for-rmk' of
git://git.pengutronix.de/git/imx/linux-2.6
parents
db78450a
574ec547
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
454 additions
and
19 deletions
+454
-19
arch/arm/mach-mx3/Kconfig
arch/arm/mach-mx3/Kconfig
+8
-0
arch/arm/mach-mx3/Makefile
arch/arm/mach-mx3/Makefile
+1
-0
arch/arm/mach-mx3/armadillo5x0.c
arch/arm/mach-mx3/armadillo5x0.c
+63
-0
arch/arm/mach-mx3/devices.c
arch/arm/mach-mx3/devices.c
+0
-1
arch/arm/mach-mx3/pcm037.c
arch/arm/mach-mx3/pcm037.c
+165
-18
arch/arm/mach-mx3/pcm037.h
arch/arm/mach-mx3/pcm037.h
+11
-0
arch/arm/mach-mx3/pcm037_eet.c
arch/arm/mach-mx3/pcm037_eet.c
+204
-0
arch/arm/plat-mxc/include/mach/iomux-mx3.h
arch/arm/plat-mxc/include/mach/iomux-mx3.h
+2
-0
No files found.
arch/arm/mach-mx3/Kconfig
View file @
39bd8064
...
@@ -36,6 +36,14 @@ config MACH_PCM037
...
@@ -36,6 +36,14 @@ config MACH_PCM037
Include support for Phytec pcm037 platform. This includes
Include support for Phytec pcm037 platform. This includes
specific configurations for the board and its peripherals.
specific configurations for the board and its peripherals.
config MACH_PCM037_EET
bool "Support pcm037 EET board extensions"
depends on MACH_PCM037
help
Add support for PCM037 EET baseboard extensions. If you are using the
OLED display with EET, use "video=mx3fb:CMEL-OLED" kernel
command-line parameter.
config MACH_MX31LITE
config MACH_MX31LITE
bool "Support MX31 LITEKIT (LogicPD)"
bool "Support MX31 LITEKIT (LogicPD)"
select ARCH_MX31
select ARCH_MX31
...
...
arch/arm/mach-mx3/Makefile
View file @
39bd8064
...
@@ -11,6 +11,7 @@ obj-$(CONFIG_MACH_MX31ADS) += mx31ads.o
...
@@ -11,6 +11,7 @@ obj-$(CONFIG_MACH_MX31ADS) += mx31ads.o
obj-$(CONFIG_MACH_MX31LILLY)
+=
mx31lilly.o mx31lilly-db.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_PCM037_EET)
+=
pcm037_eet.o
obj-$(CONFIG_MACH_MX31_3DS)
+=
mx31pdk.o
obj-$(CONFIG_MACH_MX31_3DS)
+=
mx31pdk.o
obj-$(CONFIG_MACH_MX31MOBOARD)
+=
mx31moboard.o mx31moboard-devboard.o
\
obj-$(CONFIG_MACH_MX31MOBOARD)
+=
mx31moboard.o mx31moboard-devboard.o
\
mx31moboard-marxbot.o
mx31moboard-marxbot.o
...
...
arch/arm/mach-mx3/armadillo5x0.c
View file @
39bd8064
...
@@ -31,6 +31,8 @@
...
@@ -31,6 +31,8 @@
#include <linux/smsc911x.h>
#include <linux/smsc911x.h>
#include <linux/interrupt.h>
#include <linux/interrupt.h>
#include <linux/irq.h>
#include <linux/irq.h>
#include <linux/mtd/physmap.h>
#include <linux/io.h>
#include <mach/hardware.h>
#include <mach/hardware.h>
#include <asm/mach-types.h>
#include <asm/mach-types.h>
...
@@ -46,8 +48,10 @@
...
@@ -46,8 +48,10 @@
#include <mach/mmc.h>
#include <mach/mmc.h>
#include <mach/ipu.h>
#include <mach/ipu.h>
#include <mach/mx3fb.h>
#include <mach/mx3fb.h>
#include <mach/mxc_nand.h>
#include "devices.h"
#include "devices.h"
#include "crm_regs.h"
static
int
armadillo5x0_pins
[]
=
{
static
int
armadillo5x0_pins
[]
=
{
/* UART1 */
/* UART1 */
...
@@ -93,7 +97,56 @@ static int armadillo5x0_pins[] = {
...
@@ -93,7 +97,56 @@ static int armadillo5x0_pins[] = {
MX31_PIN_FPSHIFT__FPSHIFT
,
MX31_PIN_FPSHIFT__FPSHIFT
,
MX31_PIN_DRDY0__DRDY0
,
MX31_PIN_DRDY0__DRDY0
,
IOMUX_MODE
(
MX31_PIN_LCS1
,
IOMUX_CONFIG_GPIO
),
/*ADV7125_PSAVE*/
IOMUX_MODE
(
MX31_PIN_LCS1
,
IOMUX_CONFIG_GPIO
),
/*ADV7125_PSAVE*/
};
/*
* NAND Flash
*/
static
struct
mxc_nand_platform_data
armadillo5x0_nand_flash_pdata
=
{
.
width
=
1
,
.
hw_ecc
=
1
,
};
/*
* MTD NOR Flash
*/
static
struct
mtd_partition
armadillo5x0_nor_flash_partitions
[]
=
{
{
.
name
=
"nor.bootloader"
,
.
offset
=
0x00000000
,
.
size
=
4
*
32
*
1024
,
},
{
.
name
=
"nor.kernel"
,
.
offset
=
MTDPART_OFS_APPEND
,
.
size
=
16
*
128
*
1024
,
},
{
.
name
=
"nor.userland"
,
.
offset
=
MTDPART_OFS_APPEND
,
.
size
=
110
*
128
*
1024
,
},
{
.
name
=
"nor.config"
,
.
offset
=
MTDPART_OFS_APPEND
,
.
size
=
1
*
128
*
1024
,
},
};
static
struct
physmap_flash_data
armadillo5x0_nor_flash_pdata
=
{
.
width
=
2
,
.
parts
=
armadillo5x0_nor_flash_partitions
,
.
nr_parts
=
ARRAY_SIZE
(
armadillo5x0_nor_flash_partitions
),
};
static
struct
resource
armadillo5x0_nor_flash_resource
=
{
.
flags
=
IORESOURCE_MEM
,
.
start
=
CS0_BASE_ADDR
,
.
end
=
CS0_BASE_ADDR
+
SZ_64M
-
1
,
};
static
struct
platform_device
armadillo5x0_nor_flash
=
{
.
name
=
"physmap-flash"
,
.
id
=
-
1
,
.
num_resources
=
1
,
.
resource
=
&
armadillo5x0_nor_flash_resource
,
};
};
/*
/*
...
@@ -272,6 +325,16 @@ static void __init armadillo5x0_init(void)
...
@@ -272,6 +325,16 @@ static void __init armadillo5x0_init(void)
/* Register FB */
/* Register FB */
mxc_register_device
(
&
mx3_ipu
,
&
mx3_ipu_data
);
mxc_register_device
(
&
mx3_ipu
,
&
mx3_ipu_data
);
mxc_register_device
(
&
mx3_fb
,
&
mx3fb_pdata
);
mxc_register_device
(
&
mx3_fb
,
&
mx3fb_pdata
);
/* Register NOR Flash */
mxc_register_device
(
&
armadillo5x0_nor_flash
,
&
armadillo5x0_nor_flash_pdata
);
/* Register NAND Flash */
mxc_register_device
(
&
mxc_nand_device
,
&
armadillo5x0_nand_flash_pdata
);
/* set NAND page size to 2k if not configured via boot mode pins */
__raw_writel
(
__raw_readl
(
MXC_CCM_RCSR
)
|
(
1
<<
30
),
MXC_CCM_RCSR
);
}
}
static
void
__init
armadillo5x0_timer_init
(
void
)
static
void
__init
armadillo5x0_timer_init
(
void
)
...
...
arch/arm/mach-mx3/devices.c
View file @
39bd8064
...
@@ -22,7 +22,6 @@
...
@@ -22,7 +22,6 @@
#include <linux/platform_device.h>
#include <linux/platform_device.h>
#include <linux/serial.h>
#include <linux/serial.h>
#include <linux/gpio.h>
#include <linux/gpio.h>
#include <linux/dma-mapping.h>
#include <mach/hardware.h>
#include <mach/hardware.h>
#include <mach/irqs.h>
#include <mach/irqs.h>
#include <mach/common.h>
#include <mach/common.h>
...
...
arch/arm/mach-mx3/pcm037.c
View file @
39bd8064
...
@@ -18,7 +18,7 @@
...
@@ -18,7 +18,7 @@
#include <linux/types.h>
#include <linux/types.h>
#include <linux/init.h>
#include <linux/init.h>
#include <linux/dma-mapping.h>
#include <linux/platform_device.h>
#include <linux/platform_device.h>
#include <linux/mtd/physmap.h>
#include <linux/mtd/physmap.h>
#include <linux/mtd/plat-ram.h>
#include <linux/mtd/plat-ram.h>
...
@@ -33,29 +33,67 @@
...
@@ -33,29 +33,67 @@
#include <linux/irq.h>
#include <linux/irq.h>
#include <linux/fsl_devices.h>
#include <linux/fsl_devices.h>
#include <mach/hardware.h>
#include <media/soc_camera.h>
#include <asm/mach-types.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
#include <asm/mach/arch.h>
#include <asm/mach/time.h>
#include <asm/mach/time.h>
#include <asm/mach/map.h>
#include <asm/mach/map.h>
#include <mach/board-pcm037.h>
#include <mach/common.h>
#include <mach/common.h>
#include <mach/hardware.h>
#include <mach/i2c.h>
#include <mach/imx-uart.h>
#include <mach/imx-uart.h>
#include <mach/iomux-mx3.h>
#include <mach/iomux-mx3.h>
#include <mach/ipu.h>
#include <mach/ipu.h>
#include <mach/board-pcm037.h>
#include <mach/mmc.h>
#include <mach/mx3_camera.h>
#include <mach/mx3fb.h>
#include <mach/mx3fb.h>
#include <mach/mxc_nand.h>
#include <mach/mxc_nand.h>
#include <mach/mmc.h>
#ifdef CONFIG_I2C_IMX
#include <mach/i2c.h>
#endif
#include "devices.h"
#include "devices.h"
#include "pcm037.h"
static
enum
pcm037_board_variant
pcm037_instance
=
PCM037_PCM970
;
static
int
__init
pcm037_variant_setup
(
char
*
str
)
{
if
(
!
strcmp
(
"eet"
,
str
))
pcm037_instance
=
PCM037_EET
;
else
if
(
strcmp
(
"pcm970"
,
str
))
pr_warning
(
"Unknown pcm037 baseboard variant %s
\n
"
,
str
);
return
1
;
}
/* Supported values: "pcm970" (default) and "eet" */
__setup
(
"pcm037_variant="
,
pcm037_variant_setup
);
enum
pcm037_board_variant
pcm037_variant
(
void
)
{
return
pcm037_instance
;
}
/* UART1 with RTS/CTS handshake signals */
static
unsigned
int
pcm037_uart1_handshake_pins
[]
=
{
MX31_PIN_CTS1__CTS1
,
MX31_PIN_RTS1__RTS1
,
MX31_PIN_TXD1__TXD1
,
MX31_PIN_RXD1__RXD1
,
};
/* UART1 without RTS/CTS handshake signals */
static
unsigned
int
pcm037_uart1_pins
[]
=
{
MX31_PIN_TXD1__TXD1
,
MX31_PIN_RXD1__RXD1
,
};
static
unsigned
int
pcm037_pins
[]
=
{
static
unsigned
int
pcm037_pins
[]
=
{
/* I2C */
/* I2C */
MX31_PIN_CSPI2_MOSI__SCL
,
MX31_PIN_CSPI2_MOSI__SCL
,
MX31_PIN_CSPI2_MISO__SDA
,
MX31_PIN_CSPI2_MISO__SDA
,
MX31_PIN_CSPI2_SS2__I2C3_SDA
,
MX31_PIN_CSPI2_SCLK__I2C3_SCL
,
/* SDHC1 */
/* SDHC1 */
MX31_PIN_SD1_DATA3__SD1_DATA3
,
MX31_PIN_SD1_DATA3__SD1_DATA3
,
MX31_PIN_SD1_DATA2__SD1_DATA2
,
MX31_PIN_SD1_DATA2__SD1_DATA2
,
...
@@ -73,11 +111,6 @@ static unsigned int pcm037_pins[] = {
...
@@ -73,11 +111,6 @@ static unsigned int pcm037_pins[] = {
MX31_PIN_CSPI1_SS0__SS0
,
MX31_PIN_CSPI1_SS0__SS0
,
MX31_PIN_CSPI1_SS1__SS1
,
MX31_PIN_CSPI1_SS1__SS1
,
MX31_PIN_CSPI1_SS2__SS2
,
MX31_PIN_CSPI1_SS2__SS2
,
/* UART1 */
MX31_PIN_CTS1__CTS1
,
MX31_PIN_RTS1__RTS1
,
MX31_PIN_TXD1__TXD1
,
MX31_PIN_RXD1__RXD1
,
/* UART2 */
/* UART2 */
MX31_PIN_TXD2__TXD2
,
MX31_PIN_TXD2__TXD2
,
MX31_PIN_RXD2__RXD2
,
MX31_PIN_RXD2__RXD2
,
...
@@ -120,6 +153,22 @@ static unsigned int pcm037_pins[] = {
...
@@ -120,6 +153,22 @@ static unsigned int pcm037_pins[] = {
MX31_PIN_D3_SPL__D3_SPL
,
MX31_PIN_D3_SPL__D3_SPL
,
MX31_PIN_D3_CLS__D3_CLS
,
MX31_PIN_D3_CLS__D3_CLS
,
MX31_PIN_LCS0__GPI03_23
,
MX31_PIN_LCS0__GPI03_23
,
/* CSI */
IOMUX_MODE
(
MX31_PIN_CSI_D5
,
IOMUX_CONFIG_GPIO
),
MX31_PIN_CSI_D6__CSI_D6
,
MX31_PIN_CSI_D7__CSI_D7
,
MX31_PIN_CSI_D8__CSI_D8
,
MX31_PIN_CSI_D9__CSI_D9
,
MX31_PIN_CSI_D10__CSI_D10
,
MX31_PIN_CSI_D11__CSI_D11
,
MX31_PIN_CSI_D12__CSI_D12
,
MX31_PIN_CSI_D13__CSI_D13
,
MX31_PIN_CSI_D14__CSI_D14
,
MX31_PIN_CSI_D15__CSI_D15
,
MX31_PIN_CSI_HSYNC__CSI_HSYNC
,
MX31_PIN_CSI_MCLK__CSI_MCLK
,
MX31_PIN_CSI_PIXCLK__CSI_PIXCLK
,
MX31_PIN_CSI_VSYNC__CSI_VSYNC
,
};
};
static
struct
physmap_flash_data
pcm037_flash_data
=
{
static
struct
physmap_flash_data
pcm037_flash_data
=
{
...
@@ -250,17 +299,41 @@ static struct mxc_nand_platform_data pcm037_nand_board_info = {
...
@@ -250,17 +299,41 @@ static struct mxc_nand_platform_data pcm037_nand_board_info = {
.
hw_ecc
=
1
,
.
hw_ecc
=
1
,
};
};
#ifdef CONFIG_I2C_IMX
static
struct
imxi2c_platform_data
pcm037_i2c_1_data
=
{
static
struct
imxi2c_platform_data
pcm037_i2c_1_data
=
{
.
bitrate
=
100000
,
.
bitrate
=
100000
,
};
};
static
struct
imxi2c_platform_data
pcm037_i2c_2_data
=
{
.
bitrate
=
20000
,
};
static
struct
at24_platform_data
board_eeprom
=
{
static
struct
at24_platform_data
board_eeprom
=
{
.
byte_len
=
4096
,
.
byte_len
=
4096
,
.
page_size
=
32
,
.
page_size
=
32
,
.
flags
=
AT24_FLAG_ADDR16
,
.
flags
=
AT24_FLAG_ADDR16
,
};
};
static
int
pcm037_camera_power
(
struct
device
*
dev
,
int
on
)
{
/* disable or enable the camera in X7 or X8 PCM970 connector */
gpio_set_value
(
IOMUX_TO_GPIO
(
MX31_PIN_CSI_D5
),
!
on
);
return
0
;
}
static
struct
i2c_board_info
pcm037_i2c_2_devices
[]
=
{
{
I2C_BOARD_INFO
(
"mt9t031"
,
0x5d
),
},
};
static
struct
soc_camera_link
iclink
=
{
.
bus_id
=
0
,
/* Must match with the camera ID */
.
power
=
pcm037_camera_power
,
.
board_info
=
&
pcm037_i2c_2_devices
[
0
],
.
i2c_adapter_id
=
2
,
.
module_name
=
"mt9t031"
,
};
static
struct
i2c_board_info
pcm037_i2c_devices
[]
=
{
static
struct
i2c_board_info
pcm037_i2c_devices
[]
=
{
{
{
I2C_BOARD_INFO
(
"at24"
,
0x52
),
/* E0=0, E1=1, E2=0 */
I2C_BOARD_INFO
(
"at24"
,
0x52
),
/* E0=0, E1=1, E2=0 */
...
@@ -270,7 +343,14 @@ static struct i2c_board_info pcm037_i2c_devices[] = {
...
@@ -270,7 +343,14 @@ static struct i2c_board_info pcm037_i2c_devices[] = {
.
type
=
"pcf8563"
,
.
type
=
"pcf8563"
,
}
}
};
};
#endif
static
struct
platform_device
pcm037_camera
=
{
.
name
=
"soc-camera-pdrv"
,
.
id
=
0
,
.
dev
=
{
.
platform_data
=
&
iclink
,
},
};
/* Not connected by default */
/* Not connected by default */
#ifdef PCM970_SDHC_RW_SWITCH
#ifdef PCM970_SDHC_RW_SWITCH
...
@@ -334,9 +414,41 @@ static struct imxmmc_platform_data sdhc_pdata = {
...
@@ -334,9 +414,41 @@ static struct imxmmc_platform_data sdhc_pdata = {
.
exit
=
pcm970_sdhc1_exit
,
.
exit
=
pcm970_sdhc1_exit
,
};
};
struct
mx3_camera_pdata
camera_pdata
=
{
.
dma_dev
=
&
mx3_ipu
.
dev
,
.
flags
=
MX3_CAMERA_DATAWIDTH_8
|
MX3_CAMERA_DATAWIDTH_10
,
.
mclk_10khz
=
2000
,
};
static
int
__init
pcm037_camera_alloc_dma
(
const
size_t
buf_size
)
{
dma_addr_t
dma_handle
;
void
*
buf
;
int
dma
;
if
(
buf_size
<
2
*
1024
*
1024
)
return
-
EINVAL
;
buf
=
dma_alloc_coherent
(
NULL
,
buf_size
,
&
dma_handle
,
GFP_KERNEL
);
if
(
!
buf
)
{
pr_err
(
"%s: cannot allocate camera buffer-memory
\n
"
,
__func__
);
return
-
ENOMEM
;
}
memset
(
buf
,
0
,
buf_size
);
dma
=
dma_declare_coherent_memory
(
&
mx3_camera
.
dev
,
dma_handle
,
dma_handle
,
buf_size
,
DMA_MEMORY_MAP
|
DMA_MEMORY_EXCLUSIVE
);
/* The way we call dma_declare_coherent_memory only a malloc can fail */
return
dma
&
DMA_MEMORY_MAP
?
0
:
-
ENOMEM
;
}
static
struct
platform_device
*
devices
[]
__initdata
=
{
static
struct
platform_device
*
devices
[]
__initdata
=
{
&
pcm037_flash
,
&
pcm037_flash
,
&
pcm037_sram_device
,
&
pcm037_sram_device
,
&
pcm037_camera
,
};
};
static
struct
ipu_platform_data
mx3_ipu_data
=
{
static
struct
ipu_platform_data
mx3_ipu_data
=
{
...
@@ -377,6 +489,22 @@ static const struct fb_videomode fb_modedb[] = {
...
@@ -377,6 +489,22 @@ static const struct fb_videomode fb_modedb[] = {
.
sync
=
FB_SYNC_VERT_HIGH_ACT
|
FB_SYNC_OE_ACT_HIGH
,
.
sync
=
FB_SYNC_VERT_HIGH_ACT
|
FB_SYNC_OE_ACT_HIGH
,
.
vmode
=
FB_VMODE_NONINTERLACED
,
.
vmode
=
FB_VMODE_NONINTERLACED
,
.
flag
=
0
,
.
flag
=
0
,
},
{
/* 240x320 @ 60 Hz */
.
name
=
"CMEL-OLED"
,
.
refresh
=
60
,
.
xres
=
240
,
.
yres
=
320
,
.
pixclock
=
185925
,
.
left_margin
=
9
,
.
right_margin
=
16
,
.
upper_margin
=
7
,
.
lower_margin
=
9
,
.
hsync_len
=
1
,
.
vsync_len
=
1
,
.
sync
=
FB_SYNC_OE_ACT_HIGH
|
FB_SYNC_CLK_INVERT
,
.
vmode
=
FB_VMODE_NONINTERLACED
,
.
flag
=
0
,
},
},
};
};
...
@@ -397,6 +525,14 @@ static void __init mxc_board_init(void)
...
@@ -397,6 +525,14 @@ static void __init mxc_board_init(void)
mxc_iomux_setup_multiple_pins
(
pcm037_pins
,
ARRAY_SIZE
(
pcm037_pins
),
mxc_iomux_setup_multiple_pins
(
pcm037_pins
,
ARRAY_SIZE
(
pcm037_pins
),
"pcm037"
);
"pcm037"
);
if
(
pcm037_variant
()
==
PCM037_EET
)
mxc_iomux_setup_multiple_pins
(
pcm037_uart1_pins
,
ARRAY_SIZE
(
pcm037_uart1_pins
),
"pcm037_uart1"
);
else
mxc_iomux_setup_multiple_pins
(
pcm037_uart1_handshake_pins
,
ARRAY_SIZE
(
pcm037_uart1_handshake_pins
),
"pcm037_uart1"
);
platform_add_devices
(
devices
,
ARRAY_SIZE
(
devices
));
platform_add_devices
(
devices
,
ARRAY_SIZE
(
devices
));
mxc_register_device
(
&
mxc_uart_device0
,
&
uart_pdata
);
mxc_register_device
(
&
mxc_uart_device0
,
&
uart_pdata
);
...
@@ -415,18 +551,30 @@ static void __init mxc_board_init(void)
...
@@ -415,18 +551,30 @@ static void __init mxc_board_init(void)
}
}
#ifdef CONFIG_I2C_IMX
/* I2C adapters and devices */
i2c_register_board_info
(
1
,
pcm037_i2c_devices
,
i2c_register_board_info
(
1
,
pcm037_i2c_devices
,
ARRAY_SIZE
(
pcm037_i2c_devices
));
ARRAY_SIZE
(
pcm037_i2c_devices
));
mxc_register_device
(
&
mxc_i2c_device1
,
&
pcm037_i2c_1_data
);
mxc_register_device
(
&
mxc_i2c_device1
,
&
pcm037_i2c_1_data
);
#endif
mxc_register_device
(
&
mxc_i2c_device2
,
&
pcm037_i2c_2_data
);
mxc_register_device
(
&
mxc_nand_device
,
&
pcm037_nand_board_info
);
mxc_register_device
(
&
mxc_nand_device
,
&
pcm037_nand_board_info
);
mxc_register_device
(
&
mxcsdhc_device0
,
&
sdhc_pdata
);
mxc_register_device
(
&
mxcsdhc_device0
,
&
sdhc_pdata
);
mxc_register_device
(
&
mx3_ipu
,
&
mx3_ipu_data
);
mxc_register_device
(
&
mx3_ipu
,
&
mx3_ipu_data
);
mxc_register_device
(
&
mx3_fb
,
&
mx3fb_pdata
);
mxc_register_device
(
&
mx3_fb
,
&
mx3fb_pdata
);
if
(
!
gpio_usbotg_hs_activate
())
if
(
!
gpio_usbotg_hs_activate
())
mxc_register_device
(
&
mxc_otg_udc_device
,
&
usb_pdata
);
mxc_register_device
(
&
mxc_otg_udc_device
,
&
usb_pdata
);
/* CSI */
/* Camera power: default - off */
ret
=
gpio_request
(
IOMUX_TO_GPIO
(
MX31_PIN_CSI_D5
),
"mt9t031-power"
);
if
(
!
ret
)
gpio_direction_output
(
IOMUX_TO_GPIO
(
MX31_PIN_CSI_D5
),
1
);
else
iclink
.
power
=
NULL
;
if
(
!
pcm037_camera_alloc_dma
(
4
*
1024
*
1024
))
mxc_register_device
(
&
mx3_camera
,
&
camera_pdata
);
}
}
static
void
__init
pcm037_timer_init
(
void
)
static
void
__init
pcm037_timer_init
(
void
)
...
@@ -448,4 +596,3 @@ MACHINE_START(PCM037, "Phytec Phycore pcm037")
...
@@ -448,4 +596,3 @@ MACHINE_START(PCM037, "Phytec Phycore pcm037")
.
init_machine
=
mxc_board_init
,
.
init_machine
=
mxc_board_init
,
.
timer
=
&
pcm037_timer
,
.
timer
=
&
pcm037_timer
,
MACHINE_END
MACHINE_END
arch/arm/mach-mx3/pcm037.h
0 → 100644
View file @
39bd8064
#ifndef __PCM037_H__
#define __PCM037_H__
enum
pcm037_board_variant
{
PCM037_PCM970
,
PCM037_EET
,
};
extern
enum
pcm037_board_variant
pcm037_variant
(
void
);
#endif
arch/arm/mach-mx3/pcm037_eet.c
0 → 100644
View file @
39bd8064
/*
* Copyright (C) 2009
* Guennadi Liakhovetski, DENX Software Engineering, <lg@denx.de>
*
* 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.
*/
#include <linux/gpio.h>
#include <linux/gpio_keys.h>
#include <linux/input.h>
#include <linux/platform_device.h>
#include <linux/spi/spi.h>
#include <mach/common.h>
#if defined(CONFIG_SPI_IMX) || defined(CONFIG_SPI_IMX_MODULE)
#include <mach/spi.h>
#endif
#include <mach/iomux-mx3.h>
#include <asm/mach-types.h>
#include "pcm037.h"
#include "devices.h"
static
unsigned
int
pcm037_eet_pins
[]
=
{
/* SPI #1 */
MX31_PIN_CSPI1_MISO__MISO
,
MX31_PIN_CSPI1_MOSI__MOSI
,
MX31_PIN_CSPI1_SCLK__SCLK
,
MX31_PIN_CSPI1_SPI_RDY__SPI_RDY
,
MX31_PIN_CSPI1_SS0__SS0
,
MX31_PIN_CSPI1_SS1__SS1
,
MX31_PIN_CSPI1_SS2__SS2
,
/* Reserve and hardwire GPIO 57 high - S6E63D6 chipselect */
IOMUX_MODE
(
MX31_PIN_KEY_COL7
,
IOMUX_CONFIG_GPIO
),
/* GPIO keys */
IOMUX_MODE
(
MX31_PIN_GPIO1_0
,
IOMUX_CONFIG_GPIO
),
/* 0 */
IOMUX_MODE
(
MX31_PIN_GPIO1_1
,
IOMUX_CONFIG_GPIO
),
/* 1 */
IOMUX_MODE
(
MX31_PIN_GPIO1_2
,
IOMUX_CONFIG_GPIO
),
/* 2 */
IOMUX_MODE
(
MX31_PIN_GPIO1_3
,
IOMUX_CONFIG_GPIO
),
/* 3 */
IOMUX_MODE
(
MX31_PIN_SVEN0
,
IOMUX_CONFIG_GPIO
),
/* 32 */
IOMUX_MODE
(
MX31_PIN_STX0
,
IOMUX_CONFIG_GPIO
),
/* 33 */
IOMUX_MODE
(
MX31_PIN_SRX0
,
IOMUX_CONFIG_GPIO
),
/* 34 */
IOMUX_MODE
(
MX31_PIN_SIMPD0
,
IOMUX_CONFIG_GPIO
),
/* 35 */
IOMUX_MODE
(
MX31_PIN_RTS1
,
IOMUX_CONFIG_GPIO
),
/* 38 */
IOMUX_MODE
(
MX31_PIN_CTS1
,
IOMUX_CONFIG_GPIO
),
/* 39 */
IOMUX_MODE
(
MX31_PIN_KEY_ROW4
,
IOMUX_CONFIG_GPIO
),
/* 50 */
IOMUX_MODE
(
MX31_PIN_KEY_ROW5
,
IOMUX_CONFIG_GPIO
),
/* 51 */
IOMUX_MODE
(
MX31_PIN_KEY_ROW6
,
IOMUX_CONFIG_GPIO
),
/* 52 */
IOMUX_MODE
(
MX31_PIN_KEY_ROW7
,
IOMUX_CONFIG_GPIO
),
/* 53 */
/* LEDs */
IOMUX_MODE
(
MX31_PIN_DTR_DTE1
,
IOMUX_CONFIG_GPIO
),
/* 44 */
IOMUX_MODE
(
MX31_PIN_DSR_DTE1
,
IOMUX_CONFIG_GPIO
),
/* 45 */
IOMUX_MODE
(
MX31_PIN_KEY_COL5
,
IOMUX_CONFIG_GPIO
),
/* 55 */
IOMUX_MODE
(
MX31_PIN_KEY_COL6
,
IOMUX_CONFIG_GPIO
),
/* 56 */
};
/* SPI */
static
struct
spi_board_info
pcm037_spi_dev
[]
=
{
{
.
modalias
=
"dac124s085"
,
.
max_speed_hz
=
400000
,
.
bus_num
=
0
,
.
chip_select
=
0
,
/* Index in pcm037_spi1_cs[] */
.
mode
=
SPI_CPHA
,
},
};
/* Platform Data for MXC CSPI */
#if defined(CONFIG_SPI_IMX) || defined(CONFIG_SPI_IMX_MODULE)
static
int
pcm037_spi1_cs
[]
=
{
MXC_SPI_CS
(
1
),
IOMUX_TO_GPIO
(
MX31_PIN_KEY_COL7
)};
struct
spi_imx_master
pcm037_spi1_master
=
{
.
chipselect
=
pcm037_spi1_cs
,
.
num_chipselect
=
ARRAY_SIZE
(
pcm037_spi1_cs
),
};
#endif
/* GPIO-keys input device */
static
struct
gpio_keys_button
pcm037_gpio_keys
[]
=
{
{
.
type
=
EV_KEY
,
.
code
=
KEY_L
,
.
gpio
=
0
,
.
desc
=
"Wheel Manual"
,
.
wakeup
=
0
,
},
{
.
type
=
EV_KEY
,
.
code
=
KEY_A
,
.
gpio
=
1
,
.
desc
=
"Wheel AF"
,
.
wakeup
=
0
,
},
{
.
type
=
EV_KEY
,
.
code
=
KEY_V
,
.
gpio
=
2
,
.
desc
=
"Wheel View"
,
.
wakeup
=
0
,
},
{
.
type
=
EV_KEY
,
.
code
=
KEY_M
,
.
gpio
=
3
,
.
desc
=
"Wheel Menu"
,
.
wakeup
=
0
,
},
{
.
type
=
EV_KEY
,
.
code
=
KEY_UP
,
.
gpio
=
32
,
.
desc
=
"Nav Pad Up"
,
.
wakeup
=
0
,
},
{
.
type
=
EV_KEY
,
.
code
=
KEY_RIGHT
,
.
gpio
=
33
,
.
desc
=
"Nav Pad Right"
,
.
wakeup
=
0
,
},
{
.
type
=
EV_KEY
,
.
code
=
KEY_DOWN
,
.
gpio
=
34
,
.
desc
=
"Nav Pad Down"
,
.
wakeup
=
0
,
},
{
.
type
=
EV_KEY
,
.
code
=
KEY_LEFT
,
.
gpio
=
35
,
.
desc
=
"Nav Pad Left"
,
.
wakeup
=
0
,
},
{
.
type
=
EV_KEY
,
.
code
=
KEY_ENTER
,
.
gpio
=
38
,
.
desc
=
"Nav Pad Ok"
,
.
wakeup
=
0
,
},
{
.
type
=
EV_KEY
,
.
code
=
KEY_O
,
.
gpio
=
39
,
.
desc
=
"Wheel Off"
,
.
wakeup
=
0
,
},
{
.
type
=
EV_KEY
,
.
code
=
BTN_FORWARD
,
.
gpio
=
50
,
.
desc
=
"Focus Forward"
,
.
wakeup
=
0
,
},
{
.
type
=
EV_KEY
,
.
code
=
BTN_BACK
,
.
gpio
=
51
,
.
desc
=
"Focus Backward"
,
.
wakeup
=
0
,
},
{
.
type
=
EV_KEY
,
.
code
=
BTN_MIDDLE
,
.
gpio
=
52
,
.
desc
=
"Release Half"
,
.
wakeup
=
0
,
},
{
.
type
=
EV_KEY
,
.
code
=
BTN_EXTRA
,
.
gpio
=
53
,
.
desc
=
"Release Full"
,
.
wakeup
=
0
,
},
};
static
struct
gpio_keys_platform_data
pcm037_gpio_keys_platform_data
=
{
.
buttons
=
pcm037_gpio_keys
,
.
nbuttons
=
ARRAY_SIZE
(
pcm037_gpio_keys
),
.
rep
=
0
,
/* No auto-repeat */
};
static
struct
platform_device
pcm037_gpio_keys_device
=
{
.
name
=
"gpio-keys"
,
.
id
=
-
1
,
.
dev
=
{
.
platform_data
=
&
pcm037_gpio_keys_platform_data
,
},
};
static
int
eet_init_devices
(
void
)
{
if
(
!
machine_is_pcm037
()
||
pcm037_variant
()
!=
PCM037_EET
)
return
0
;
mxc_iomux_setup_multiple_pins
(
pcm037_eet_pins
,
ARRAY_SIZE
(
pcm037_eet_pins
),
"pcm037_eet"
);
/* SPI */
spi_register_board_info
(
pcm037_spi_dev
,
ARRAY_SIZE
(
pcm037_spi_dev
));
#if defined(CONFIG_SPI_IMX) || defined(CONFIG_SPI_IMX_MODULE)
mxc_register_device
(
&
mxc_spi_device0
,
&
pcm037_spi1_master
);
#endif
platform_device_register
(
&
pcm037_gpio_keys_device
);
return
0
;
}
late_initcall
(
eet_init_devices
);
arch/arm/plat-mxc/include/mach/iomux-mx3.h
View file @
39bd8064
...
@@ -602,6 +602,8 @@ enum iomux_pins {
...
@@ -602,6 +602,8 @@ enum iomux_pins {
#define MX31_PIN_I2C_DAT__SDA IOMUX_MODE(MX31_PIN_I2C_DAT, IOMUX_CONFIG_FUNC)
#define MX31_PIN_I2C_DAT__SDA IOMUX_MODE(MX31_PIN_I2C_DAT, IOMUX_CONFIG_FUNC)
#define MX31_PIN_DCD_DTE1__I2C2_SDA IOMUX_MODE(MX31_PIN_DCD_DTE1, IOMUX_CONFIG_ALT2)
#define MX31_PIN_DCD_DTE1__I2C2_SDA IOMUX_MODE(MX31_PIN_DCD_DTE1, IOMUX_CONFIG_ALT2)
#define MX31_PIN_RI_DTE1__I2C2_SCL IOMUX_MODE(MX31_PIN_RI_DTE1, IOMUX_CONFIG_ALT2)
#define MX31_PIN_RI_DTE1__I2C2_SCL IOMUX_MODE(MX31_PIN_RI_DTE1, IOMUX_CONFIG_ALT2)
#define MX31_PIN_CSPI2_SS2__I2C3_SDA IOMUX_MODE(MX31_PIN_CSPI2_SS2, IOMUX_CONFIG_ALT1)
#define MX31_PIN_CSPI2_SCLK__I2C3_SCL IOMUX_MODE(MX31_PIN_CSPI2_SCLK, IOMUX_CONFIG_ALT1)
#define MX31_PIN_CSI_D4__CSI_D4 IOMUX_MODE(MX31_PIN_CSI_D4, IOMUX_CONFIG_FUNC)
#define MX31_PIN_CSI_D4__CSI_D4 IOMUX_MODE(MX31_PIN_CSI_D4, IOMUX_CONFIG_FUNC)
#define MX31_PIN_CSI_D5__CSI_D5 IOMUX_MODE(MX31_PIN_CSI_D5, IOMUX_CONFIG_FUNC)
#define MX31_PIN_CSI_D5__CSI_D5 IOMUX_MODE(MX31_PIN_CSI_D5, IOMUX_CONFIG_FUNC)
#define MX31_PIN_CSI_D6__CSI_D6 IOMUX_MODE(MX31_PIN_CSI_D6, IOMUX_CONFIG_FUNC)
#define MX31_PIN_CSI_D6__CSI_D6 IOMUX_MODE(MX31_PIN_CSI_D6, IOMUX_CONFIG_FUNC)
...
...
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