Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
kernel_linux
提交
39bd8064
K
kernel_linux
项目概览
OpenHarmony
/
kernel_linux
上一次同步 4 年多
通知
15
Star
8
Fork
2
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
kernel_linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
39bd8064
编写于
7月 09, 2009
作者:
R
Russell King
提交者:
Russell King
7月 09, 2009
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'for-rmk' of
git://git.pengutronix.de/git/imx/linux-2.6
上级
db78450a
574ec547
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
454 addition
and
19 deletion
+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
未找到文件。
arch/arm/mach-mx3/Kconfig
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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,19 +299,43 @@ static struct mxc_nand_platform_data pcm037_nand_board_info = {
...
@@ -250,19 +299,43 @@ 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 */
.
platform_data
=
&
board_eeprom
,
.
platform_data
=
&
board_eeprom
,
},
{
},
{
...
@@ -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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录