Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
37d7035d
K
Kernel
项目概览
openeuler
/
Kernel
1 年多 前同步成功
通知
8
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看板
提交
37d7035d
编写于
7月 12, 2008
作者:
R
Russell King
提交者:
Russell King
7月 12, 2008
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'pxa-devel' into pxa
上级
0fc3ff31
54b23846
变更
21
隐藏空白更改
内联
并排
Showing
21 changed file
with
399 addition
and
74 deletion
+399
-74
arch/arm/mach-pxa/Kconfig
arch/arm/mach-pxa/Kconfig
+1
-1
arch/arm/mach-pxa/clock.h
arch/arm/mach-pxa/clock.h
+24
-0
arch/arm/mach-pxa/devices.c
arch/arm/mach-pxa/devices.c
+43
-0
arch/arm/mach-pxa/devices.h
arch/arm/mach-pxa/devices.h
+2
-0
arch/arm/mach-pxa/littleton.c
arch/arm/mach-pxa/littleton.c
+57
-4
arch/arm/mach-pxa/mainstone.c
arch/arm/mach-pxa/mainstone.c
+4
-4
arch/arm/mach-pxa/mfp-pxa2xx.c
arch/arm/mach-pxa/mfp-pxa2xx.c
+51
-20
arch/arm/mach-pxa/pxa300.c
arch/arm/mach-pxa/pxa300.c
+18
-1
arch/arm/mach-pxa/pxa320.c
arch/arm/mach-pxa/pxa320.c
+14
-7
arch/arm/mach-pxa/pxa3xx.c
arch/arm/mach-pxa/pxa3xx.c
+3
-22
arch/arm/mach-pxa/ssp.c
arch/arm/mach-pxa/ssp.c
+4
-9
arch/arm/mach-pxa/zylonite.c
arch/arm/mach-pxa/zylonite.c
+93
-1
arch/arm/mach-pxa/zylonite_pxa300.c
arch/arm/mach-pxa/zylonite_pxa300.c
+46
-0
arch/arm/mach-pxa/zylonite_pxa320.c
arch/arm/mach-pxa/zylonite_pxa320.c
+6
-0
arch/arm/mm/Makefile
arch/arm/mm/Makefile
+2
-0
include/asm-arm/arch-pxa/irqs.h
include/asm-arm/arch-pxa/irqs.h
+2
-0
include/asm-arm/arch-pxa/mfp-pxa2xx.h
include/asm-arm/arch-pxa/mfp-pxa2xx.h
+1
-0
include/asm-arm/arch-pxa/pxa3xx_nand.h
include/asm-arm/arch-pxa/pxa3xx_nand.h
+2
-0
include/asm-arm/arch-pxa/regs-ssp.h
include/asm-arm/arch-pxa/regs-ssp.h
+15
-1
include/asm-arm/arch-pxa/uncompress.h
include/asm-arm/arch-pxa/uncompress.h
+9
-4
include/asm-arm/arch-pxa/zylonite.h
include/asm-arm/arch-pxa/zylonite.h
+2
-0
未找到文件。
arch/arm/mach-pxa/Kconfig
浏览文件 @
37d7035d
...
...
@@ -184,7 +184,7 @@ config MACH_COLIBRI
select PXA27x
config MACH_ZYLONITE
bool "PXA3xx Development Platform"
bool "PXA3xx Development Platform
(aka Zylonite)
"
select PXA3xx
select HAVE_PWM
...
...
arch/arm/mach-pxa/clock.h
浏览文件 @
37d7035d
...
...
@@ -61,4 +61,28 @@ extern const struct clkops clk_cken_ops;
void
clk_cken_enable
(
struct
clk
*
clk
);
void
clk_cken_disable
(
struct
clk
*
clk
);
#ifdef CONFIG_PXA3xx
#define PXA3xx_CKEN(_name, _cken, _rate, _delay, _dev) \
{ \
.name = _name, \
.dev = _dev, \
.ops = &clk_pxa3xx_cken_ops, \
.rate = _rate, \
.cken = CKEN_##_cken, \
.delay = _delay, \
}
#define PXA3xx_CK(_name, _cken, _ops, _dev) \
{ \
.name = _name, \
.dev = _dev, \
.ops = _ops, \
.cken = CKEN_##_cken, \
}
extern
const
struct
clkops
clk_pxa3xx_cken_ops
;
extern
void
clk_pxa3xx_cken_enable
(
struct
clk
*
);
extern
void
clk_pxa3xx_cken_disable
(
struct
clk
*
);
#endif
void
clks_register
(
struct
clk
*
clks
,
size_t
num
);
arch/arm/mach-pxa/devices.c
浏览文件 @
37d7035d
...
...
@@ -16,6 +16,7 @@
#include <asm/arch/pxa2xx_spi.h>
#include <asm/arch/camera.h>
#include <asm/arch/audio.h>
#include <asm/arch/pxa3xx_nand.h>
#include "devices.h"
#include "generic.h"
...
...
@@ -831,6 +832,48 @@ void __init pxa3xx_set_mci3_info(struct pxamci_platform_data *info)
pxa_register_device
(
&
pxa3xx_device_mci3
,
info
);
}
static
struct
resource
pxa3xx_resources_nand
[]
=
{
[
0
]
=
{
.
start
=
0x43100000
,
.
end
=
0x43100053
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
IRQ_NAND
,
.
end
=
IRQ_NAND
,
.
flags
=
IORESOURCE_IRQ
,
},
[
2
]
=
{
/* DRCMR for Data DMA */
.
start
=
97
,
.
end
=
97
,
.
flags
=
IORESOURCE_DMA
,
},
[
3
]
=
{
/* DRCMR for Command DMA */
.
start
=
99
,
.
end
=
99
,
.
flags
=
IORESOURCE_DMA
,
},
};
static
u64
pxa3xx_nand_dma_mask
=
DMA_BIT_MASK
(
32
);
struct
platform_device
pxa3xx_device_nand
=
{
.
name
=
"pxa3xx-nand"
,
.
id
=
-
1
,
.
dev
=
{
.
dma_mask
=
&
pxa3xx_nand_dma_mask
,
.
coherent_dma_mask
=
DMA_BIT_MASK
(
32
),
},
.
num_resources
=
ARRAY_SIZE
(
pxa3xx_resources_nand
),
.
resource
=
pxa3xx_resources_nand
,
};
void
__init
pxa3xx_set_nand_info
(
struct
pxa3xx_nand_platform_data
*
info
)
{
pxa_register_device
(
&
pxa3xx_device_nand
,
info
);
}
#endif
/* CONFIG_PXA3xx */
/* pxa2xx-spi platform-device ID equals respective SSP platform-device ID + 1.
...
...
arch/arm/mach-pxa/devices.h
浏览文件 @
37d7035d
...
...
@@ -31,4 +31,6 @@ extern struct platform_device pxa25x_device_pwm1;
extern
struct
platform_device
pxa27x_device_pwm0
;
extern
struct
platform_device
pxa27x_device_pwm1
;
extern
struct
platform_device
pxa3xx_device_nand
;
void
__init
pxa_register_device
(
struct
platform_device
*
dev
,
void
*
data
);
arch/arm/mach-pxa/littleton.c
浏览文件 @
37d7035d
...
...
@@ -38,6 +38,7 @@
#include <asm/arch/pxafb.h>
#include <asm/arch/ssp.h>
#include <asm/arch/pxa27x_keypad.h>
#include <asm/arch/pxa3xx_nand.h>
#include <asm/arch/littleton.h>
#include "generic.h"
...
...
@@ -101,7 +102,7 @@ static struct resource smc91x_resources[] = {
[
1
]
=
{
.
start
=
IRQ_GPIO
(
mfp_to_gpio
(
MFP_PIN_GPIO90
)),
.
end
=
IRQ_GPIO
(
mfp_to_gpio
(
MFP_PIN_GPIO90
)),
.
flags
=
IORESOURCE_IRQ
|
I
RQF_TRIGGER_FALLING
,
.
flags
=
IORESOURCE_IRQ
|
I
ORESOURCE_IRQ_LOWEDGE
,
}
};
...
...
@@ -112,7 +113,7 @@ static struct platform_device smc91x_device = {
.
resource
=
smc91x_resources
,
};
#if defined(CONFIG_FB_PXA) || defined(CONFIG_FB_PXA_MODULE
S
)
#if defined(CONFIG_FB_PXA) || defined(CONFIG_FB_PXA_MODULE)
/* use bit 30, 31 as the indicator of command parameter number */
#define CMD0(x) ((0x00000000) | ((x) << 9))
#define CMD1(x, x1) ((0x40000000) | ((x) << 9) | 0x100 | (x1))
...
...
@@ -311,9 +312,9 @@ static void littleton_init_lcd(void)
}
#else
static
inline
void
littleton_init_lcd
(
void
)
{};
#endif
/* CONFIG_FB_PXA || CONFIG_FB_PXA_MODULE
S
*/
#endif
/* CONFIG_FB_PXA || CONFIG_FB_PXA_MODULE */
#if defined(CONFIG_KEYBOARD_PXA27x) || defined(CONFIG_KEYBOARD_PXA27x_MODULE
S
)
#if defined(CONFIG_KEYBOARD_PXA27x) || defined(CONFIG_KEYBOARD_PXA27x_MODULE)
static
unsigned
int
littleton_matrix_key_map
[]
=
{
/* KEY(row, col, key_code) */
KEY
(
1
,
3
,
KEY_0
),
KEY
(
0
,
0
,
KEY_1
),
KEY
(
1
,
0
,
KEY_2
),
KEY
(
2
,
0
,
KEY_3
),
...
...
@@ -361,6 +362,57 @@ static void __init littleton_init_keypad(void)
static
inline
void
littleton_init_keypad
(
void
)
{}
#endif
#if defined(CONFIG_MTD_NAND_PXA3xx) || defined(CONFIG_MTD_NAND_PXA3xx_MODULE)
static
struct
mtd_partition
littleton_nand_partitions
[]
=
{
[
0
]
=
{
.
name
=
"Bootloader"
,
.
offset
=
0
,
.
size
=
0x060000
,
.
mask_flags
=
MTD_WRITEABLE
,
/* force read-only */
},
[
1
]
=
{
.
name
=
"Kernel"
,
.
offset
=
0x060000
,
.
size
=
0x200000
,
.
mask_flags
=
MTD_WRITEABLE
,
/* force read-only */
},
[
2
]
=
{
.
name
=
"Filesystem"
,
.
offset
=
0x0260000
,
.
size
=
0x3000000
,
/* 48M - rootfs */
},
[
3
]
=
{
.
name
=
"MassStorage"
,
.
offset
=
0x3260000
,
.
size
=
0x3d40000
,
},
[
4
]
=
{
.
name
=
"BBT"
,
.
offset
=
0x6FA0000
,
.
size
=
0x80000
,
.
mask_flags
=
MTD_WRITEABLE
,
/* force read-only */
},
/* NOTE: we reserve some blocks at the end of the NAND flash for
* bad block management, and the max number of relocation blocks
* differs on different platforms. Please take care with it when
* defining the partition table.
*/
};
static
struct
pxa3xx_nand_platform_data
littleton_nand_info
=
{
.
enable_arbiter
=
1
,
.
parts
=
littleton_nand_partitions
,
.
nr_parts
=
ARRAY_SIZE
(
littleton_nand_partitions
),
};
static
void
__init
littleton_init_nand
(
void
)
{
pxa3xx_set_nand_info
(
&
littleton_nand_info
);
}
#else
static
inline
void
littleton_init_nand
(
void
)
{}
#endif
/* CONFIG_MTD_NAND_PXA3xx || CONFIG_MTD_NAND_PXA3xx_MODULE */
static
void
__init
littleton_init
(
void
)
{
/* initialize MFP configurations */
...
...
@@ -374,6 +426,7 @@ static void __init littleton_init(void)
littleton_init_lcd
();
littleton_init_keypad
();
littleton_init_nand
();
}
MACHINE_START
(
LITTLETON
,
"Marvell Form Factor Development Platform (aka Littleton)"
)
...
...
arch/arm/mach-pxa/mainstone.c
浏览文件 @
37d7035d
...
...
@@ -110,9 +110,9 @@ static unsigned long mainstone_pin_config[] = {
GPIO45_AC97_SYSCLK
,
/* Keypad */
GPIO93_KP_DKIN_0
|
WAKEUP_ON_LEVEL_HIGH
,
GPIO94_KP_DKIN_1
|
WAKEUP_ON_LEVEL_HIGH
,
GPIO95_KP_DKIN_2
|
WAKEUP_ON_LEVEL_HIGH
,
GPIO93_KP_DKIN_0
,
GPIO94_KP_DKIN_1
,
GPIO95_KP_DKIN_2
,
GPIO100_KP_MKIN_0
|
WAKEUP_ON_LEVEL_HIGH
,
GPIO101_KP_MKIN_1
|
WAKEUP_ON_LEVEL_HIGH
,
GPIO102_KP_MKIN_2
|
WAKEUP_ON_LEVEL_HIGH
,
...
...
@@ -514,7 +514,7 @@ static struct pxaohci_platform_data mainstone_ohci_platform_data = {
.
init
=
mainstone_ohci_init
,
};
#if defined(CONFIG_KEYBOARD_PXA27x) || defined(CONFIG_KEYBOARD_PXA27x_MODULE
S
)
#if defined(CONFIG_KEYBOARD_PXA27x) || defined(CONFIG_KEYBOARD_PXA27x_MODULE)
static
unsigned
int
mainstone_matrix_keys
[]
=
{
KEY
(
0
,
0
,
KEY_A
),
KEY
(
1
,
0
,
KEY_B
),
KEY
(
2
,
0
,
KEY_C
),
KEY
(
3
,
0
,
KEY_D
),
KEY
(
4
,
0
,
KEY_E
),
KEY
(
5
,
0
,
KEY_F
),
...
...
arch/arm/mach-pxa/mfp-pxa2xx.c
浏览文件 @
37d7035d
...
...
@@ -39,6 +39,28 @@ struct gpio_desc {
static
struct
gpio_desc
gpio_desc
[
MFP_PIN_GPIO127
+
1
];
static
int
__mfp_config_lpm
(
unsigned
gpio
,
unsigned
long
lpm
)
{
unsigned
mask
=
GPIO_bit
(
gpio
);
/* low power state */
switch
(
lpm
)
{
case
MFP_LPM_DRIVE_HIGH
:
PGSR
(
gpio
)
|=
mask
;
break
;
case
MFP_LPM_DRIVE_LOW
:
PGSR
(
gpio
)
&=
~
mask
;
break
;
case
MFP_LPM_INPUT
:
break
;
default:
pr_warning
(
"%s: invalid low power state for GPIO%d
\n
"
,
__func__
,
gpio
);
return
-
EINVAL
;
}
return
0
;
}
static
int
__mfp_config_gpio
(
unsigned
gpio
,
unsigned
long
c
)
{
unsigned
long
gafr
,
mask
=
GPIO_bit
(
gpio
);
...
...
@@ -57,21 +79,8 @@ static int __mfp_config_gpio(unsigned gpio, unsigned long c)
else
GPDR
(
gpio
)
&=
~
mask
;
/* low power state */
switch
(
c
&
MFP_LPM_STATE_MASK
)
{
case
MFP_LPM_DRIVE_HIGH
:
PGSR
(
gpio
)
|=
mask
;
break
;
case
MFP_LPM_DRIVE_LOW
:
PGSR
(
gpio
)
&=
~
mask
;
break
;
case
MFP_LPM_INPUT
:
break
;
default:
pr_warning
(
"%s: invalid low power state for GPIO%d
\n
"
,
__func__
,
gpio
);
if
(
__mfp_config_lpm
(
gpio
,
c
&
MFP_LPM_STATE_MASK
))
return
-
EINVAL
;
}
/* give early warning if MFP_LPM_CAN_WAKEUP is set on the
* configurations of those pins not able to wakeup
...
...
@@ -91,6 +100,18 @@ static int __mfp_config_gpio(unsigned gpio, unsigned long c)
return
0
;
}
static
inline
int
__mfp_validate
(
int
mfp
)
{
int
gpio
=
mfp_to_gpio
(
mfp
);
if
((
mfp
>
MFP_PIN_GPIO127
)
||
!
gpio_desc
[
gpio
].
valid
)
{
pr_warning
(
"%s: GPIO%d is invalid pin
\n
"
,
__func__
,
gpio
);
return
-
1
;
}
return
gpio
;
}
void
pxa2xx_mfp_config
(
unsigned
long
*
mfp_cfgs
,
int
num
)
{
unsigned
long
flags
;
...
...
@@ -99,13 +120,9 @@ void pxa2xx_mfp_config(unsigned long *mfp_cfgs, int num)
for
(
i
=
0
,
c
=
mfp_cfgs
;
i
<
num
;
i
++
,
c
++
)
{
gpio
=
mfp_to_gpio
(
MFP_PIN
(
*
c
));
if
(
!
gpio_desc
[
gpio
].
valid
)
{
pr_warning
(
"%s: GPIO%d is invalid pin
\n
"
,
__func__
,
gpio
);
gpio
=
__mfp_validate
(
MFP_PIN
(
*
c
));
if
(
gpio
<
0
)
continue
;
}
local_irq_save
(
flags
);
...
...
@@ -116,6 +133,20 @@ void pxa2xx_mfp_config(unsigned long *mfp_cfgs, int num)
}
}
void
pxa2xx_mfp_set_lpm
(
int
mfp
,
unsigned
long
lpm
)
{
unsigned
long
flags
;
int
gpio
;
gpio
=
__mfp_validate
(
mfp
);
if
(
gpio
<
0
)
return
;
local_irq_save
(
flags
);
__mfp_config_lpm
(
gpio
,
lpm
);
local_irq_restore
(
flags
);
}
int
gpio_set_wake
(
unsigned
int
gpio
,
unsigned
int
on
)
{
struct
gpio_desc
*
d
;
...
...
arch/arm/mach-pxa/pxa300.c
浏览文件 @
37d7035d
...
...
@@ -15,10 +15,16 @@
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/platform_device.h>
#include <asm/hardware.h>
#include <asm/arch/pxa3xx-regs.h>
#include <asm/arch/mfp-pxa300.h>
#include "generic.h"
#include "devices.h"
#include "clock.h"
static
struct
pxa3xx_mfp_addr_map
pxa300_mfp_addr_map
[]
__initdata
=
{
MFP_ADDR_X
(
GPIO0
,
GPIO2
,
0x00b4
),
...
...
@@ -79,15 +85,26 @@ static struct pxa3xx_mfp_addr_map pxa310_mfp_addr_map[] __initdata = {
MFP_ADDR_END
,
};
static
struct
clk
common_clks
[]
=
{
PXA3xx_CKEN
(
"NANDCLK"
,
NAND
,
156000000
,
0
,
&
pxa3xx_device_nand
.
dev
),
};
static
struct
clk
pxa310_clks
[]
=
{
PXA3xx_CKEN
(
"MMCCLK"
,
MMC3
,
19500000
,
0
,
&
pxa3xx_device_mci3
.
dev
),
};
static
int
__init
pxa300_init
(
void
)
{
if
(
cpu_is_pxa300
()
||
cpu_is_pxa310
())
{
pxa3xx_init_mfp
();
pxa3xx_mfp_init_addr
(
pxa300_mfp_addr_map
);
clks_register
(
ARRAY_AND_SIZE
(
common_clks
));
}
if
(
cpu_is_pxa310
())
if
(
cpu_is_pxa310
())
{
pxa3xx_mfp_init_addr
(
pxa310_mfp_addr_map
);
clks_register
(
ARRAY_AND_SIZE
(
pxa310_clks
));
}
return
0
;
}
...
...
arch/arm/mach-pxa/pxa320.c
浏览文件 @
37d7035d
...
...
@@ -15,11 +15,17 @@
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/platform_device.h>
#include <asm/hardware.h>
#include <asm/arch/mfp.h>
#include <asm/arch/pxa3xx-regs.h>
#include <asm/arch/mfp-pxa320.h>
#include "generic.h"
#include "devices.h"
#include "clock.h"
static
struct
pxa3xx_mfp_addr_map
pxa320_mfp_addr_map
[]
__initdata
=
{
MFP_ADDR_X
(
GPIO0
,
GPIO4
,
0x0124
),
...
...
@@ -74,16 +80,17 @@ static struct pxa3xx_mfp_addr_map pxa320_mfp_addr_map[] __initdata = {
MFP_ADDR_END
,
};
static
void
__init
pxa320_init_mfp
(
void
)
{
pxa3xx_init_mfp
();
pxa3xx_mfp_init_addr
(
pxa320_mfp_addr_map
);
}
static
struct
clk
pxa320_clks
[]
=
{
PXA3xx_CKEN
(
"NANDCLK"
,
NAND
,
104000000
,
0
,
&
pxa3xx_device_nand
.
dev
),
};
static
int
__init
pxa320_init
(
void
)
{
if
(
cpu_is_pxa320
())
pxa320_init_mfp
();
if
(
cpu_is_pxa320
())
{
pxa3xx_init_mfp
();
pxa3xx_mfp_init_addr
(
pxa320_mfp_addr_map
);
clks_register
(
ARRAY_AND_SIZE
(
pxa320_clks
));
}
return
0
;
}
...
...
arch/arm/mach-pxa/pxa3xx.c
浏览文件 @
37d7035d
...
...
@@ -144,7 +144,7 @@ static unsigned long clk_pxa3xx_hsio_getrate(struct clk *clk)
return
hsio_clk
;
}
static
void
clk_pxa3xx_cken_enable
(
struct
clk
*
clk
)
void
clk_pxa3xx_cken_enable
(
struct
clk
*
clk
)
{
unsigned
long
mask
=
1ul
<<
(
clk
->
cken
&
0x1f
);
...
...
@@ -154,7 +154,7 @@ static void clk_pxa3xx_cken_enable(struct clk *clk)
CKENB
|=
mask
;
}
static
void
clk_pxa3xx_cken_disable
(
struct
clk
*
clk
)
void
clk_pxa3xx_cken_disable
(
struct
clk
*
clk
)
{
unsigned
long
mask
=
1ul
<<
(
clk
->
cken
&
0x1f
);
...
...
@@ -164,7 +164,7 @@ static void clk_pxa3xx_cken_disable(struct clk *clk)
CKENB
&=
~
mask
;
}
static
const
struct
clkops
clk_pxa3xx_cken_ops
=
{
const
struct
clkops
clk_pxa3xx_cken_ops
=
{
.
enable
=
clk_pxa3xx_cken_enable
,
.
disable
=
clk_pxa3xx_cken_disable
,
};
...
...
@@ -196,24 +196,6 @@ static const struct clkops clk_pout_ops = {
.
disable
=
clk_pout_disable
,
};
#define PXA3xx_CKEN(_name, _cken, _rate, _delay, _dev) \
{ \
.name = _name, \
.dev = _dev, \
.ops = &clk_pxa3xx_cken_ops, \
.rate = _rate, \
.cken = CKEN_##_cken, \
.delay = _delay, \
}
#define PXA3xx_CK(_name, _cken, _ops, _dev) \
{ \
.name = _name, \
.dev = _dev, \
.ops = _ops, \
.cken = CKEN_##_cken, \
}
static
struct
clk
pxa3xx_clks
[]
=
{
{
.
name
=
"CLK_POUT"
,
...
...
@@ -244,7 +226,6 @@ static struct clk pxa3xx_clks[] = {
PXA3xx_CKEN
(
"MMCCLK"
,
MMC1
,
19500000
,
0
,
&
pxa_device_mci
.
dev
),
PXA3xx_CKEN
(
"MMCCLK"
,
MMC2
,
19500000
,
0
,
&
pxa3xx_device_mci2
.
dev
),
PXA3xx_CKEN
(
"MMCCLK"
,
MMC3
,
19500000
,
0
,
&
pxa3xx_device_mci3
.
dev
),
};
#ifdef CONFIG_PM
...
...
arch/arm/mach-pxa/ssp.c
浏览文件 @
37d7035d
...
...
@@ -14,13 +14,6 @@
* IO-based SSP applications and allows easy port setup for DMA access.
*
* Author: Liam Girdwood <liam.girdwood@wolfsonmicro.com>
*
* Revision history:
* 22nd Aug 2003 Initial version.
* 20th Dec 2004 Added ssp_config for changing port config without
* closing the port.
* 4th Aug 2005 Added option to disable irq handler registration and
* cleaned up irq and clock detection.
*/
#include <linux/module.h>
...
...
@@ -285,7 +278,7 @@ int ssp_init(struct ssp_dev *dev, u32 port, u32 init_flags)
goto
out_region
;
dev
->
irq
=
ssp
->
irq
;
}
else
dev
->
irq
=
0
;
dev
->
irq
=
NO_IRQ
;
/* turn on SSP port clock */
clk_enable
(
ssp
->
clk
);
...
...
@@ -306,7 +299,8 @@ void ssp_exit(struct ssp_dev *dev)
struct
ssp_device
*
ssp
=
dev
->
ssp
;
ssp_disable
(
dev
);
free_irq
(
dev
->
irq
,
dev
);
if
(
dev
->
irq
!=
NO_IRQ
)
free_irq
(
dev
->
irq
,
dev
);
clk_disable
(
ssp
->
clk
);
ssp_free
(
ssp
);
}
...
...
@@ -360,6 +354,7 @@ static int __devinit ssp_probe(struct platform_device *pdev, int type)
dev_err
(
&
pdev
->
dev
,
"failed to allocate memory"
);
return
-
ENOMEM
;
}
ssp
->
pdev
=
pdev
;
ssp
->
clk
=
clk_get
(
&
pdev
->
dev
,
"SSPCLK"
);
if
(
IS_ERR
(
ssp
->
clk
))
{
...
...
arch/arm/mach-pxa/zylonite.c
浏览文件 @
37d7035d
...
...
@@ -29,6 +29,7 @@
#include <asm/arch/zylonite.h>
#include <asm/arch/mmc.h>
#include <asm/arch/pxa27x_keypad.h>
#include <asm/arch/pxa3xx_nand.h>
#include "devices.h"
#include "generic.h"
...
...
@@ -37,6 +38,8 @@
struct
platform_mmc_slot
zylonite_mmc_slot
[
MAX_SLOTS
];
int
gpio_eth_irq
;
int
gpio_debug_led1
;
int
gpio_debug_led2
;
int
wm9713_irq
;
...
...
@@ -63,6 +66,42 @@ static struct platform_device smc91x_device = {
.
resource
=
smc91x_resources
,
};
#if defined(CONFIG_LEDS_GPIO) || defined(CONFIG_LEDS_GPIO_MODULE)
static
struct
gpio_led
zylonite_debug_leds
[]
=
{
[
0
]
=
{
.
name
=
"zylonite:yellow:1"
,
.
default_trigger
=
"heartbeat"
,
},
[
1
]
=
{
.
name
=
"zylonite:yellow:2"
,
.
default_trigger
=
"default-on"
,
},
};
static
struct
gpio_led_platform_data
zylonite_debug_leds_info
=
{
.
leds
=
zylonite_debug_leds
,
.
num_leds
=
ARRAY_SIZE
(
zylonite_debug_leds
),
};
static
struct
platform_device
zylonite_device_leds
=
{
.
name
=
"leds-gpio"
,
.
id
=
-
1
,
.
dev
=
{
.
platform_data
=
&
zylonite_debug_leds_info
,
}
};
static
void
__init
zylonite_init_leds
(
void
)
{
zylonite_debug_leds
[
0
].
gpio
=
gpio_debug_led1
;
zylonite_debug_leds
[
1
].
gpio
=
gpio_debug_led2
;
platform_device_register
(
&
zylonite_device_leds
);
}
#else
static
inline
void
zylonite_init_leds
(
void
)
{}
#endif
#if defined(CONFIG_FB_PXA) || defined(CONFIG_FB_PXA_MODULE)
static
struct
platform_pwm_backlight_data
zylonite_backlight_data
=
{
.
pwm_id
=
3
,
...
...
@@ -259,7 +298,7 @@ static void __init zylonite_init_mmc(void)
static
inline
void
zylonite_init_mmc
(
void
)
{}
#endif
#if defined(CONFIG_KEYBOARD_PXA27x) || defined(CONFIG_KEYBOARD_PXA27x_MODULE
S
)
#if defined(CONFIG_KEYBOARD_PXA27x) || defined(CONFIG_KEYBOARD_PXA27x_MODULE)
static
unsigned
int
zylonite_matrix_key_map
[]
=
{
/* KEY(row, col, key_code) */
KEY
(
0
,
0
,
KEY_A
),
KEY
(
0
,
1
,
KEY_B
),
KEY
(
0
,
2
,
KEY_C
),
KEY
(
0
,
5
,
KEY_D
),
...
...
@@ -324,6 +363,57 @@ static void __init zylonite_init_keypad(void)
static
inline
void
zylonite_init_keypad
(
void
)
{}
#endif
#if defined(CONFIG_MTD_NAND_PXA3xx) || defined(CONFIG_MTD_NAND_PXA3xx_MODULE)
static
struct
mtd_partition
zylonite_nand_partitions
[]
=
{
[
0
]
=
{
.
name
=
"Bootloader"
,
.
offset
=
0
,
.
size
=
0x060000
,
.
mask_flags
=
MTD_WRITEABLE
,
/* force read-only */
},
[
1
]
=
{
.
name
=
"Kernel"
,
.
offset
=
0x060000
,
.
size
=
0x200000
,
.
mask_flags
=
MTD_WRITEABLE
,
/* force read-only */
},
[
2
]
=
{
.
name
=
"Filesystem"
,
.
offset
=
0x0260000
,
.
size
=
0x3000000
,
/* 48M - rootfs */
},
[
3
]
=
{
.
name
=
"MassStorage"
,
.
offset
=
0x3260000
,
.
size
=
0x3d40000
,
},
[
4
]
=
{
.
name
=
"BBT"
,
.
offset
=
0x6FA0000
,
.
size
=
0x80000
,
.
mask_flags
=
MTD_WRITEABLE
,
/* force read-only */
},
/* NOTE: we reserve some blocks at the end of the NAND flash for
* bad block management, and the max number of relocation blocks
* differs on different platforms. Please take care with it when
* defining the partition table.
*/
};
static
struct
pxa3xx_nand_platform_data
zylonite_nand_info
=
{
.
enable_arbiter
=
1
,
.
parts
=
zylonite_nand_partitions
,
.
nr_parts
=
ARRAY_SIZE
(
zylonite_nand_partitions
),
};
static
void
__init
zylonite_init_nand
(
void
)
{
pxa3xx_set_nand_info
(
&
zylonite_nand_info
);
}
#else
static
inline
void
zylonite_init_nand
(
void
)
{}
#endif
/* CONFIG_MTD_NAND_PXA3xx || CONFIG_MTD_NAND_PXA3xx_MODULE */
static
void
__init
zylonite_init
(
void
)
{
/* board-processor specific initialization */
...
...
@@ -342,6 +432,8 @@ static void __init zylonite_init(void)
zylonite_init_lcd
();
zylonite_init_mmc
();
zylonite_init_keypad
();
zylonite_init_nand
();
zylonite_init_leds
();
}
MACHINE_START
(
ZYLONITE
,
"PXA3xx Platform Development Kit (aka Zylonite)"
)
...
...
arch/arm/mach-pxa/zylonite_pxa300.c
浏览文件 @
37d7035d
...
...
@@ -16,9 +16,12 @@
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/i2c.h>
#include <linux/i2c/pca953x.h>
#include <asm/gpio.h>
#include <asm/arch/mfp-pxa300.h>
#include <asm/arch/i2c.h>
#include <asm/arch/zylonite.h>
#include "generic.h"
...
...
@@ -109,6 +112,10 @@ static mfp_cfg_t common_mfp_cfg[] __initdata = {
GPIO12_MMC2_DAT3
,
GPIO13_MMC2_CLK
,
GPIO14_MMC2_CMD
,
/* Standard I2C */
GPIO21_I2C_SCL
,
GPIO22_I2C_SDA
,
};
static
mfp_cfg_t
pxa300_mfp_cfg
[]
__initdata
=
{
...
...
@@ -192,6 +199,39 @@ static void __init zylonite_detect_lcd_panel(void)
pxa3xx_mfp_write
(
lcd_detect_pins
[
i
],
mfpr_save
[
i
]);
}
#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
static
struct
pca953x_platform_data
gpio_exp
[]
=
{
[
0
]
=
{
.
gpio_base
=
128
,
},
[
1
]
=
{
.
gpio_base
=
144
,
},
};
struct
i2c_board_info
zylonite_i2c_board_info
[]
=
{
{
.
type
=
"pca9539"
,
.
addr
=
0x74
,
.
platform_data
=
&
gpio_exp
[
0
],
.
irq
=
IRQ_GPIO
(
18
),
},
{
.
type
=
"pca9539"
,
.
addr
=
0x75
,
.
platform_data
=
&
gpio_exp
[
1
],
.
irq
=
IRQ_GPIO
(
19
),
},
};
static
void
__init
zylonite_init_i2c
(
void
)
{
pxa_set_i2c_info
(
NULL
);
i2c_register_board_info
(
0
,
ARRAY_AND_SIZE
(
zylonite_i2c_board_info
));
}
#else
static
inline
void
zylonite_init_i2c
(
void
)
{}
#endif
void
__init
zylonite_pxa300_init
(
void
)
{
if
(
cpu_is_pxa300
()
||
cpu_is_pxa310
())
{
...
...
@@ -207,6 +247,8 @@ void __init zylonite_pxa300_init(void)
/* WM9713 IRQ */
wm9713_irq
=
mfp_to_gpio
(
MFP_PIN_GPIO26
);
zylonite_init_i2c
();
}
if
(
cpu_is_pxa300
())
{
...
...
@@ -222,4 +264,8 @@ void __init zylonite_pxa300_init(void)
zylonite_mmc_slot
[
2
].
gpio_cd
=
EXT_GPIO
(
30
);
zylonite_mmc_slot
[
2
].
gpio_wp
=
EXT_GPIO
(
31
);
}
/* GPIOs for Debug LEDs */
gpio_debug_led1
=
EXT_GPIO
(
25
);
gpio_debug_led2
=
EXT_GPIO
(
26
);
}
arch/arm/mach-pxa/zylonite_pxa320.c
浏览文件 @
37d7035d
...
...
@@ -116,6 +116,10 @@ static mfp_cfg_t mfp_cfg[] __initdata = {
GPIO27_MMC2_DAT3
,
GPIO28_MMC2_CLK
,
GPIO29_MMC2_CMD
,
/* Debug LEDs */
GPIO1_2_GPIO
|
MFP_LPM_DRIVE_HIGH
,
GPIO4_2_GPIO
|
MFP_LPM_DRIVE_HIGH
,
};
#define NUM_LCD_DETECT_PINS 7
...
...
@@ -189,6 +193,8 @@ void __init zylonite_pxa320_init(void)
/* GPIO pin assignment */
gpio_eth_irq
=
mfp_to_gpio
(
MFP_PIN_GPIO9
);
gpio_debug_led1
=
mfp_to_gpio
(
MFP_PIN_GPIO1_2
);
gpio_debug_led2
=
mfp_to_gpio
(
MFP_PIN_GPIO4_2
);
/* MMC card detect & write protect for controller 0 */
zylonite_mmc_slot
[
0
].
gpio_cd
=
mfp_to_gpio
(
MFP_PIN_GPIO1
);
...
...
arch/arm/mm/Makefile
浏览文件 @
37d7035d
...
...
@@ -74,3 +74,5 @@ obj-$(CONFIG_CPU_V6) += proc-v6.o
obj-$(CONFIG_CPU_V7)
+=
proc-v7.o
obj-$(CONFIG_CACHE_L2X0)
+=
cache-l2x0.o
obj-$(CONFIG_CACHE_XSC3L2)
+=
cache-xsc3l2.o
include/asm-arm/arch-pxa/irqs.h
浏览文件 @
37d7035d
...
...
@@ -185,6 +185,8 @@
defined(CONFIG_MACH_PCM027) || \
defined(CONFIG_MACH_MAGICIAN)
#define NR_IRQS (IRQ_BOARD_END)
#elif defined(CONFIG_MACH_ZYLONITE)
#define NR_IRQS (IRQ_BOARD_START + 32)
#else
#define NR_IRQS (IRQ_BOARD_START)
#endif
...
...
include/asm-arm/arch-pxa/mfp-pxa2xx.h
浏览文件 @
37d7035d
...
...
@@ -128,5 +128,6 @@
#define GPIO84_GPIO MFP_CFG_IN(GPIO84, AF0)
extern
void
pxa2xx_mfp_config
(
unsigned
long
*
mfp_cfgs
,
int
num
);
extern
void
pxa2xx_mfp_set_lpm
(
int
mfp
,
unsigned
long
lpm
);
extern
int
gpio_set_wake
(
unsigned
int
gpio
,
unsigned
int
on
);
#endif
/* __ASM_ARCH_MFP_PXA2XX_H */
include/asm-arm/arch-pxa/pxa3xx_nand.h
浏览文件 @
37d7035d
...
...
@@ -15,4 +15,6 @@ struct pxa3xx_nand_platform_data {
struct
mtd_partition
*
parts
;
unsigned
int
nr_parts
;
};
extern
void
pxa3xx_set_nand_info
(
struct
pxa3xx_nand_platform_data
*
info
);
#endif
/* __ASM_ARCH_PXA3XX_NAND_H */
include/asm-arm/arch-pxa/regs-ssp.h
浏览文件 @
37d7035d
...
...
@@ -20,6 +20,10 @@
#define SSTSS (0x38)
/* SSP Timeslot Status */
#define SSACD (0x3C)
/* SSP Audio Clock Divider */
#if defined(CONFIG_PXA3xx)
#define SSACDD (0x40)
/* SSP Audio Clock Dither Divider */
#endif
/* Common PXA2xx bits first */
#define SSCR0_DSS (0x0000000f)
/* Data Size Select (mask) */
#define SSCR0_DataSize(x) ((x) - 1)
/* Data Size Select [4..16] */
...
...
@@ -29,10 +33,12 @@
#define SSCR0_National (0x2 << 4)
/* National Microwire */
#define SSCR0_ECS (1 << 6)
/* External clock select */
#define SSCR0_SSE (1 << 7)
/* Synchronous Serial Port Enable */
#if defined(CONFIG_PXA25x)
#define SSCR0_SCR (0x0000ff00)
/* Serial Clock Rate (mask) */
#define SSCR0_SerClkDiv(x) ((((x) - 2)/2) << 8)
/* Divisor [2..512] */
#elif defined(CONFIG_PXA27x)
#elif defined(CONFIG_PXA27x) || defined(CONFIG_PXA3xx)
#define SSCR0_SCR (0x000fff00)
/* Serial Clock Rate (mask) */
#define SSCR0_SerClkDiv(x) (((x) - 1) << 8)
/* Divisor [1..4096] */
#define SSCR0_EDSS (1 << 20)
/* Extended data size select */
...
...
@@ -45,6 +51,10 @@
#define SSCR0_MOD (1 << 31)
/* Mode (normal or network) */
#endif
#if defined(CONFIG_PXA3xx)
#define SSCR0_FPCKE (1 << 29)
/* FIFO packing enable */
#endif
#define SSCR1_RIE (1 << 0)
/* Receive FIFO Interrupt Enable */
#define SSCR1_TIE (1 << 1)
/* Transmit FIFO Interrupt Enable */
#define SSCR1_LBM (1 << 2)
/* Loop-Back Mode */
...
...
@@ -109,5 +119,9 @@
#define SSACD_SCDB (1 << 3)
/* SSPSYSCLK Divider Bypass */
#define SSACD_ACPS(x) ((x) << 4)
/* Audio clock PLL select */
#define SSACD_ACDS(x) ((x) << 0)
/* Audio clock divider select */
#if defined(CONFIG_PXA3xx)
#define SSACD_SCDX8 (1 << 7)
/* SYSCLK division ratio select */
#endif
#endif
/* __ASM_ARCH_REGS_SSP_H */
include/asm-arm/arch-pxa/uncompress.h
浏览文件 @
37d7035d
...
...
@@ -11,11 +11,11 @@
#include <linux/serial_reg.h>
#include <asm/arch/pxa-regs.h>
#include <asm/mach-types.h>
#define __REG(x) ((volatile unsigned long *)x)
#define UART FFUART
#define __REG(x) ((volatile unsigned long *)x)
static
volatile
unsigned
long
*
UART
=
FFUART
;
static
inline
void
putc
(
char
c
)
{
...
...
@@ -33,8 +33,13 @@ static inline void flush(void)
{
}
static
inline
void
arch_decomp_setup
(
void
)
{
if
(
machine_is_littleton
())
UART
=
STUART
;
}
/*
* nothing to do
*/
#define arch_decomp_setup()
#define arch_decomp_wdog()
include/asm-arm/arch-pxa/zylonite.h
浏览文件 @
37d7035d
...
...
@@ -16,6 +16,8 @@ struct platform_mmc_slot {
extern
struct
platform_mmc_slot
zylonite_mmc_slot
[];
extern
int
gpio_eth_irq
;
extern
int
gpio_debug_led1
;
extern
int
gpio_debug_led2
;
extern
int
wm9713_irq
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录