Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
87fee06c
K
Kernel
项目概览
openeuler
/
Kernel
12 个月 前同步成功
通知
5
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看板
体验新版 GitCode,发现更多精彩内容 >>
提交
87fee06c
编写于
1月 10, 2013
作者:
M
Mark Brown
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'asoc/fix/pxa' into tmp
上级
c31b71de
3b4bc7bc
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
28 addition
and
5 deletion
+28
-5
arch/arm/mach-pxa/include/mach/mfp-pxa27x.h
arch/arm/mach-pxa/include/mach/mfp-pxa27x.h
+3
-0
arch/arm/mach-pxa/pxa27x.c
arch/arm/mach-pxa/pxa27x.c
+2
-2
sound/arm/pxa2xx-ac97-lib.c
sound/arm/pxa2xx-ac97-lib.c
+23
-3
未找到文件。
arch/arm/mach-pxa/include/mach/mfp-pxa27x.h
浏览文件 @
87fee06c
...
...
@@ -463,6 +463,9 @@
GPIO76_LCD_PCLK, \
GPIO77_LCD_BIAS
/* these enable a work-around for a hw bug in pxa27x during ac97 warm reset */
#define GPIO113_AC97_nRESET_GPIO_HIGH MFP_CFG_OUT(GPIO113, AF0, DEFAULT)
#define GPIO95_AC97_nRESET_GPIO_HIGH MFP_CFG_OUT(GPIO95, AF0, DEFAULT)
extern
int
keypad_set_wake
(
unsigned
int
on
);
#endif
/* __ASM_ARCH_MFP_PXA27X_H */
arch/arm/mach-pxa/pxa27x.c
浏览文件 @
87fee06c
...
...
@@ -47,9 +47,9 @@ void pxa27x_clear_otgph(void)
EXPORT_SYMBOL
(
pxa27x_clear_otgph
);
static
unsigned
long
ac97_reset_config
[]
=
{
GPIO113_
GPIO
,
GPIO113_
AC97_nRESET_GPIO_HIGH
,
GPIO113_AC97_nRESET
,
GPIO95_
GPIO
,
GPIO95_
AC97_nRESET_GPIO_HIGH
,
GPIO95_AC97_nRESET
,
};
...
...
sound/arm/pxa2xx-ac97-lib.c
浏览文件 @
87fee06c
...
...
@@ -18,6 +18,7 @@
#include <linux/delay.h>
#include <linux/module.h>
#include <linux/io.h>
#include <linux/gpio.h>
#include <sound/ac97_codec.h>
#include <sound/pxa2xx-lib.h>
...
...
@@ -148,6 +149,8 @@ static inline void pxa_ac97_warm_pxa27x(void)
static
inline
void
pxa_ac97_cold_pxa27x
(
void
)
{
unsigned
int
timeout
;
GCR
&=
GCR_COLD_RST
;
/* clear everything but nCRST */
GCR
&=
~
GCR_COLD_RST
;
/* then assert nCRST */
...
...
@@ -157,8 +160,10 @@ static inline void pxa_ac97_cold_pxa27x(void)
clk_enable
(
ac97conf_clk
);
udelay
(
5
);
clk_disable
(
ac97conf_clk
);
GCR
=
GCR_COLD_RST
;
udelay
(
50
);
GCR
=
GCR_COLD_RST
|
GCR_WARM_RST
;
timeout
=
100
;
/* wait for the codec-ready bit to be set */
while
(
!
((
GSR
|
gsr_bits
)
&
(
GSR_PCR
|
GSR_SCR
))
&&
timeout
--
)
mdelay
(
1
);
}
#endif
...
...
@@ -340,8 +345,21 @@ int pxa2xx_ac97_hw_probe(struct platform_device *dev)
}
if
(
cpu_is_pxa27x
())
{
/* Use GPIO 113 as AC97 Reset on Bulverde */
/*
* This gpio is needed for a work-around to a bug in the ac97
* controller during warm reset. The direction and level is set
* here so that it is an output driven high when switching from
* AC97_nRESET alt function to generic gpio.
*/
ret
=
gpio_request_one
(
reset_gpio
,
GPIOF_OUT_INIT_HIGH
,
"pxa27x ac97 reset"
);
if
(
ret
<
0
)
{
pr_err
(
"%s: gpio_request_one() failed: %d
\n
"
,
__func__
,
ret
);
goto
err_conf
;
}
pxa27x_assert_ac97reset
(
reset_gpio
,
0
);
ac97conf_clk
=
clk_get
(
&
dev
->
dev
,
"AC97CONFCLK"
);
if
(
IS_ERR
(
ac97conf_clk
))
{
ret
=
PTR_ERR
(
ac97conf_clk
);
...
...
@@ -384,6 +402,8 @@ EXPORT_SYMBOL_GPL(pxa2xx_ac97_hw_probe);
void
pxa2xx_ac97_hw_remove
(
struct
platform_device
*
dev
)
{
if
(
cpu_is_pxa27x
())
gpio_free
(
reset_gpio
);
GCR
|=
GCR_ACLINK_OFF
;
free_irq
(
IRQ_AC97
,
NULL
);
if
(
ac97conf_clk
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录