Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
9acacb13
K
Kernel
项目概览
openeuler
/
Kernel
大约 1 年 前同步成功
通知
7
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
9acacb13
编写于
2月 11, 2012
作者:
N
Nicolas Ferre
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'armsoc/at91/device-board' into at91-3.4-base2
上级
018b5e16
92b0b639
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
209 addition
and
23 deletion
+209
-23
arch/arm/mach-at91/at91sam9263_devices.c
arch/arm/mach-at91/at91sam9263_devices.c
+10
-3
arch/arm/mach-at91/at91sam9g45_devices.c
arch/arm/mach-at91/at91sam9g45_devices.c
+104
-9
arch/arm/mach-at91/at91sam9rl_devices.c
arch/arm/mach-at91/at91sam9rl_devices.c
+1
-7
arch/arm/mach-at91/board-flexibity.c
arch/arm/mach-at91/board-flexibity.c
+11
-1
arch/arm/mach-at91/board-sam9m10g45ek.c
arch/arm/mach-at91/board-sam9m10g45ek.c
+78
-2
arch/arm/mach-at91/include/mach/board.h
arch/arm/mach-at91/include/mach/board.h
+5
-1
未找到文件。
arch/arm/mach-at91/at91sam9263_devices.c
浏览文件 @
9acacb13
...
...
@@ -891,7 +891,8 @@ static struct platform_device at91sam9263_isi_device = {
.
num_resources
=
ARRAY_SIZE
(
isi_resources
),
};
void
__init
at91_add_device_isi
(
void
)
void
__init
at91_add_device_isi
(
struct
isi_platform_data
*
data
,
bool
use_pck_as_mck
)
{
at91_set_A_periph
(
AT91_PIN_PE0
,
0
);
/* ISI_D0 */
at91_set_A_periph
(
AT91_PIN_PE1
,
0
);
/* ISI_D1 */
...
...
@@ -904,14 +905,20 @@ void __init at91_add_device_isi(void)
at91_set_A_periph
(
AT91_PIN_PE8
,
0
);
/* ISI_PCK */
at91_set_A_periph
(
AT91_PIN_PE9
,
0
);
/* ISI_HSYNC */
at91_set_A_periph
(
AT91_PIN_PE10
,
0
);
/* ISI_VSYNC */
at91_set_B_periph
(
AT91_PIN_PE11
,
0
);
/* ISI_MCK (PCK3) */
at91_set_B_periph
(
AT91_PIN_PE12
,
0
);
/* ISI_PD8 */
at91_set_B_periph
(
AT91_PIN_PE13
,
0
);
/* ISI_PD9 */
at91_set_B_periph
(
AT91_PIN_PE14
,
0
);
/* ISI_PD10 */
at91_set_B_periph
(
AT91_PIN_PE15
,
0
);
/* ISI_PD11 */
if
(
use_pck_as_mck
)
{
at91_set_B_periph
(
AT91_PIN_PE11
,
0
);
/* ISI_MCK (PCK3) */
/* TODO: register the PCK for ISI_MCK and set its parent */
}
}
#else
void
__init
at91_add_device_isi
(
void
)
{}
void
__init
at91_add_device_isi
(
struct
isi_platform_data
*
data
,
bool
use_pck_as_mck
)
{}
#endif
...
...
arch/arm/mach-at91/at91sam9g45_devices.c
浏览文件 @
9acacb13
...
...
@@ -14,6 +14,7 @@
#include <linux/dma-mapping.h>
#include <linux/gpio.h>
#include <linux/clk.h>
#include <linux/platform_device.h>
#include <linux/i2c-gpio.h>
#include <linux/atmel-mci.h>
...
...
@@ -28,7 +29,10 @@
#include <mach/at_hdmac.h>
#include <mach/atmel-mci.h>
#include <media/atmel-isi.h>
#include "generic.h"
#include "clock.h"
/* --------------------------------------------------------------------
...
...
@@ -38,10 +42,6 @@
#if defined(CONFIG_AT_HDMAC) || defined(CONFIG_AT_HDMAC_MODULE)
static
u64
hdmac_dmamask
=
DMA_BIT_MASK
(
32
);
static
struct
at_dma_platform_data
atdma_pdata
=
{
.
nr_channels
=
8
,
};
static
struct
resource
hdmac_resources
[]
=
{
[
0
]
=
{
.
start
=
AT91SAM9G45_BASE_DMA
,
...
...
@@ -56,12 +56,11 @@ static struct resource hdmac_resources[] = {
};
static
struct
platform_device
at_hdmac_device
=
{
.
name
=
"at
_hdmac
"
,
.
name
=
"at
91sam9g45_dma
"
,
.
id
=
-
1
,
.
dev
=
{
.
dma_mask
=
&
hdmac_dmamask
,
.
coherent_dma_mask
=
DMA_BIT_MASK
(
32
),
.
platform_data
=
&
atdma_pdata
,
},
.
resource
=
hdmac_resources
,
.
num_resources
=
ARRAY_SIZE
(
hdmac_resources
),
...
...
@@ -69,9 +68,15 @@ static struct platform_device at_hdmac_device = {
void
__init
at91_add_device_hdmac
(
void
)
{
dma_cap_set
(
DMA_MEMCPY
,
atdma_pdata
.
cap_mask
);
dma_cap_set
(
DMA_SLAVE
,
atdma_pdata
.
cap_mask
);
platform_device_register
(
&
at_hdmac_device
);
#if defined(CONFIG_OF)
struct
device_node
*
of_node
=
of_find_node_by_name
(
NULL
,
"dma-controller"
);
if
(
of_node
)
of_node_put
(
of_node
);
else
#endif
platform_device_register
(
&
at_hdmac_device
);
}
#else
void
__init
at91_add_device_hdmac
(
void
)
{}
...
...
@@ -869,6 +874,96 @@ void __init at91_add_device_ac97(struct ac97c_platform_data *data)
void
__init
at91_add_device_ac97
(
struct
ac97c_platform_data
*
data
)
{}
#endif
/* --------------------------------------------------------------------
* Image Sensor Interface
* -------------------------------------------------------------------- */
#if defined(CONFIG_VIDEO_ATMEL_ISI) || defined(CONFIG_VIDEO_ATMEL_ISI_MODULE)
static
u64
isi_dmamask
=
DMA_BIT_MASK
(
32
);
static
struct
isi_platform_data
isi_data
;
struct
resource
isi_resources
[]
=
{
[
0
]
=
{
.
start
=
AT91SAM9G45_BASE_ISI
,
.
end
=
AT91SAM9G45_BASE_ISI
+
SZ_16K
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
AT91SAM9G45_ID_ISI
,
.
end
=
AT91SAM9G45_ID_ISI
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
platform_device
at91sam9g45_isi_device
=
{
.
name
=
"atmel_isi"
,
.
id
=
0
,
.
dev
=
{
.
dma_mask
=
&
isi_dmamask
,
.
coherent_dma_mask
=
DMA_BIT_MASK
(
32
),
.
platform_data
=
&
isi_data
,
},
.
resource
=
isi_resources
,
.
num_resources
=
ARRAY_SIZE
(
isi_resources
),
};
static
struct
clk_lookup
isi_mck_lookups
[]
=
{
CLKDEV_CON_DEV_ID
(
"isi_mck"
,
"atmel_isi.0"
,
NULL
),
};
void
__init
at91_add_device_isi
(
struct
isi_platform_data
*
data
,
bool
use_pck_as_mck
)
{
struct
clk
*
pck
;
struct
clk
*
parent
;
if
(
!
data
)
return
;
isi_data
=
*
data
;
at91_set_A_periph
(
AT91_PIN_PB20
,
0
);
/* ISI_D0 */
at91_set_A_periph
(
AT91_PIN_PB21
,
0
);
/* ISI_D1 */
at91_set_A_periph
(
AT91_PIN_PB22
,
0
);
/* ISI_D2 */
at91_set_A_periph
(
AT91_PIN_PB23
,
0
);
/* ISI_D3 */
at91_set_A_periph
(
AT91_PIN_PB24
,
0
);
/* ISI_D4 */
at91_set_A_periph
(
AT91_PIN_PB25
,
0
);
/* ISI_D5 */
at91_set_A_periph
(
AT91_PIN_PB26
,
0
);
/* ISI_D6 */
at91_set_A_periph
(
AT91_PIN_PB27
,
0
);
/* ISI_D7 */
at91_set_A_periph
(
AT91_PIN_PB28
,
0
);
/* ISI_PCK */
at91_set_A_periph
(
AT91_PIN_PB30
,
0
);
/* ISI_HSYNC */
at91_set_A_periph
(
AT91_PIN_PB29
,
0
);
/* ISI_VSYNC */
at91_set_B_periph
(
AT91_PIN_PB8
,
0
);
/* ISI_PD8 */
at91_set_B_periph
(
AT91_PIN_PB9
,
0
);
/* ISI_PD9 */
at91_set_B_periph
(
AT91_PIN_PB10
,
0
);
/* ISI_PD10 */
at91_set_B_periph
(
AT91_PIN_PB11
,
0
);
/* ISI_PD11 */
platform_device_register
(
&
at91sam9g45_isi_device
);
if
(
use_pck_as_mck
)
{
at91_set_B_periph
(
AT91_PIN_PB31
,
0
);
/* ISI_MCK (PCK1) */
pck
=
clk_get
(
NULL
,
"pck1"
);
parent
=
clk_get
(
NULL
,
"plla"
);
BUG_ON
(
IS_ERR
(
pck
)
||
IS_ERR
(
parent
));
if
(
clk_set_parent
(
pck
,
parent
))
{
pr_err
(
"Failed to set PCK's parent
\n
"
);
}
else
{
/* Register PCK as ISI_MCK */
isi_mck_lookups
[
0
].
clk
=
pck
;
clkdev_add_table
(
isi_mck_lookups
,
ARRAY_SIZE
(
isi_mck_lookups
));
}
clk_put
(
pck
);
clk_put
(
parent
);
}
}
#else
void
__init
at91_add_device_isi
(
struct
isi_platform_data
*
data
,
bool
use_pck_as_mck
)
{}
#endif
/* --------------------------------------------------------------------
* LCD Controller
...
...
arch/arm/mach-at91/at91sam9rl_devices.c
浏览文件 @
9acacb13
...
...
@@ -33,10 +33,6 @@
#if defined(CONFIG_AT_HDMAC) || defined(CONFIG_AT_HDMAC_MODULE)
static
u64
hdmac_dmamask
=
DMA_BIT_MASK
(
32
);
static
struct
at_dma_platform_data
atdma_pdata
=
{
.
nr_channels
=
2
,
};
static
struct
resource
hdmac_resources
[]
=
{
[
0
]
=
{
.
start
=
AT91SAM9RL_BASE_DMA
,
...
...
@@ -51,12 +47,11 @@ static struct resource hdmac_resources[] = {
};
static
struct
platform_device
at_hdmac_device
=
{
.
name
=
"at
_hdmac
"
,
.
name
=
"at
91sam9rl_dma
"
,
.
id
=
-
1
,
.
dev
=
{
.
dma_mask
=
&
hdmac_dmamask
,
.
coherent_dma_mask
=
DMA_BIT_MASK
(
32
),
.
platform_data
=
&
atdma_pdata
,
},
.
resource
=
hdmac_resources
,
.
num_resources
=
ARRAY_SIZE
(
hdmac_resources
),
...
...
@@ -64,7 +59,6 @@ static struct platform_device at_hdmac_device = {
void
__init
at91_add_device_hdmac
(
void
)
{
dma_cap_set
(
DMA_MEMCPY
,
atdma_pdata
.
cap_mask
);
platform_device_register
(
&
at_hdmac_device
);
}
#else
...
...
arch/arm/mach-at91/board-flexibity.c
浏览文件 @
9acacb13
/*
* linux/arch/arm/mach-at91/board-flexibity.c
*
* Copyright (C) 2010 Flexibity
* Copyright (C) 2010
-2011
Flexibity
* Copyright (C) 2005 SAN People
* Copyright (C) 2006 Atmel
*
...
...
@@ -62,6 +62,13 @@ static struct at91_udc_data __initdata flexibity_udc_data = {
.
pullup_pin
=
-
EINVAL
,
/* pull-up driven by UDC */
};
/* I2C devices */
static
struct
i2c_board_info
__initdata
flexibity_i2c_devices
[]
=
{
{
I2C_BOARD_INFO
(
"ds1307"
,
0x68
),
},
};
/* SPI devices */
static
struct
spi_board_info
flexibity_spi_devices
[]
=
{
{
/* DataFlash chip */
...
...
@@ -141,6 +148,9 @@ static void __init flexibity_board_init(void)
at91_add_device_usbh
(
&
flexibity_usbh_data
);
/* USB Device */
at91_add_device_udc
(
&
flexibity_udc_data
);
/* I2C */
at91_add_device_i2c
(
flexibity_i2c_devices
,
ARRAY_SIZE
(
flexibity_i2c_devices
));
/* SPI */
at91_add_device_spi
(
flexibity_spi_devices
,
ARRAY_SIZE
(
flexibity_spi_devices
));
...
...
arch/arm/mach-at91/board-sam9m10g45ek.c
浏览文件 @
9acacb13
...
...
@@ -24,11 +24,13 @@
#include <linux/gpio_keys.h>
#include <linux/input.h>
#include <linux/leds.h>
#include <linux/clk.h>
#include <linux/atmel-mci.h>
#include <linux/delay.h>
#include <mach/hardware.h>
#include <video/atmel_lcdc.h>
#include <media/soc_camera.h>
#include <media/atmel-isi.h>
#include <asm/setup.h>
#include <asm/mach-types.h>
...
...
@@ -184,6 +186,71 @@ static void __init ek_add_device_nand(void)
}
/*
* ISI
*/
static
struct
isi_platform_data
__initdata
isi_data
=
{
.
frate
=
ISI_CFG1_FRATE_CAPTURE_ALL
,
/* to use codec and preview path simultaneously */
.
full_mode
=
1
,
.
data_width_flags
=
ISI_DATAWIDTH_8
|
ISI_DATAWIDTH_10
,
/* ISI_MCK is provided by programmable clock or external clock */
.
mck_hz
=
25000000
,
};
/*
* soc-camera OV2640
*/
#if defined(CONFIG_SOC_CAMERA_OV2640) || \
defined(CONFIG_SOC_CAMERA_OV2640_MODULE)
static
unsigned
long
isi_camera_query_bus_param
(
struct
soc_camera_link
*
link
)
{
/* ISI board for ek using default 8-bits connection */
return
SOCAM_DATAWIDTH_8
;
}
static
int
i2c_camera_power
(
struct
device
*
dev
,
int
on
)
{
/* enable or disable the camera */
pr_debug
(
"%s: %s the camera
\n
"
,
__func__
,
on
?
"ENABLE"
:
"DISABLE"
);
at91_set_gpio_output
(
AT91_PIN_PD13
,
!
on
);
if
(
!
on
)
goto
out
;
/* If enabled, give a reset impulse */
at91_set_gpio_output
(
AT91_PIN_PD12
,
0
);
msleep
(
20
);
at91_set_gpio_output
(
AT91_PIN_PD12
,
1
);
msleep
(
100
);
out:
return
0
;
}
static
struct
i2c_board_info
i2c_camera
=
{
I2C_BOARD_INFO
(
"ov2640"
,
0x30
),
};
static
struct
soc_camera_link
iclink_ov2640
=
{
.
bus_id
=
0
,
.
board_info
=
&
i2c_camera
,
.
i2c_adapter_id
=
0
,
.
power
=
i2c_camera_power
,
.
query_bus_param
=
isi_camera_query_bus_param
,
};
static
struct
platform_device
isi_ov2640
=
{
.
name
=
"soc-camera-pdrv"
,
.
id
=
0
,
.
dev
=
{
.
platform_data
=
&
iclink_ov2640
,
},
};
#endif
/*
* LCD Controller
*/
...
...
@@ -377,7 +444,12 @@ static struct gpio_led ek_pwm_led[] = {
#endif
};
static
struct
platform_device
*
devices
[]
__initdata
=
{
#if defined(CONFIG_SOC_CAMERA_OV2640) || \
defined(CONFIG_SOC_CAMERA_OV2640_MODULE)
&
isi_ov2640
,
#endif
};
static
void
__init
ek_board_init
(
void
)
{
...
...
@@ -399,6 +471,8 @@ static void __init ek_board_init(void)
ek_add_device_nand
();
/* I2C */
at91_add_device_i2c
(
0
,
NULL
,
0
);
/* ISI, using programmable clock as ISI_MCK */
at91_add_device_isi
(
&
isi_data
,
true
);
/* LCD Controller */
at91_add_device_lcdc
(
&
ek_lcdc_data
);
/* Touch Screen */
...
...
@@ -410,6 +484,8 @@ static void __init ek_board_init(void)
/* LEDs */
at91_gpio_leds
(
ek_leds
,
ARRAY_SIZE
(
ek_leds
));
at91_pwm_leds
(
ek_pwm_led
,
ARRAY_SIZE
(
ek_pwm_led
));
/* Other platform devices */
platform_add_devices
(
devices
,
ARRAY_SIZE
(
devices
));
}
MACHINE_START
(
AT91SAM9M10G45EK
,
"Atmel AT91SAM9M10G45-EK"
)
...
...
arch/arm/mach-at91/include/mach/board.h
浏览文件 @
9acacb13
...
...
@@ -107,6 +107,8 @@ struct atmel_nand_data {
u8
ale
;
/* address line number connected to ALE */
u8
cle
;
/* address line number connected to CLE */
u8
bus_width_16
;
/* buswidth is 16 bit */
u8
correction_cap
;
/* PMECC correction capability */
u16
sector_size
;
/* Sector size for PMECC */
struct
mtd_partition
*
parts
;
unsigned
int
num_parts
;
};
...
...
@@ -179,7 +181,9 @@ extern void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data);
extern
void
__init
at91_add_device_ac97
(
struct
ac97c_platform_data
*
data
);
/* ISI */
extern
void
__init
at91_add_device_isi
(
void
);
struct
isi_platform_data
;
extern
void
__init
at91_add_device_isi
(
struct
isi_platform_data
*
data
,
bool
use_pck_as_mck
);
/* Touchscreen Controller */
struct
at91_tsadcc_data
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录