Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
22d8a73a
cloud-kernel
项目概览
openanolis
/
cloud-kernel
1 年多 前同步成功
通知
160
Star
36
Fork
7
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
2
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
cloud-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
22d8a73a
编写于
8月 20, 2007
作者:
R
Russell King
提交者:
Russell King
10月 12, 2007
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[ARM] pxa: update pxa27x keypad driver to use clk support
Signed-off-by:
N
Russell King
<
rmk+kernel@arm.linux.org.uk
>
上级
c3cef3f3
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
20 addition
and
5 deletion
+20
-5
drivers/input/keyboard/pxa27x_keyboard.c
drivers/input/keyboard/pxa27x_keyboard.c
+20
-5
未找到文件。
drivers/input/keyboard/pxa27x_keyboard.c
浏览文件 @
22d8a73a
...
...
@@ -23,6 +23,8 @@
#include <linux/input.h>
#include <linux/device.h>
#include <linux/platform_device.h>
#include <linux/clk.h>
#include <linux/err.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
...
...
@@ -40,6 +42,8 @@
col/2 == 2 ? KPASMKP2 : KPASMKP3)
#define KPASMKPx_MKC(row, col) (1 << (row + 16 * (col % 2)))
static
struct
clk
*
pxakbd_clk
;
static
irqreturn_t
pxakbd_irq_handler
(
int
irq
,
void
*
dev_id
)
{
struct
platform_device
*
pdev
=
dev_id
;
...
...
@@ -104,7 +108,7 @@ static int pxakbd_open(struct input_dev *dev)
KPREC
=
0x7F
;
/* Enable unit clock */
pxa_set_cken
(
CKEN_KEYPAD
,
1
);
clk_enable
(
pxakbd_clk
);
return
0
;
}
...
...
@@ -112,7 +116,7 @@ static int pxakbd_open(struct input_dev *dev)
static
void
pxakbd_close
(
struct
input_dev
*
dev
)
{
/* Disable clock unit */
pxa_set_cken
(
CKEN_KEYPAD
,
0
);
clk_disable
(
pxakbd_clk
);
}
#ifdef CONFIG_PM
...
...
@@ -140,7 +144,8 @@ static int pxakbd_resume(struct platform_device *pdev)
KPREC
=
pdata
->
reg_kprec
;
/* Enable unit clock */
pxa_set_cken
(
CKEN_KEYPAD
,
1
);
clk_disable
(
pxakbd_clk
);
clk_enable
(
pxakbd_clk
);
}
mutex_unlock
(
&
input_dev
->
mutex
);
...
...
@@ -158,11 +163,18 @@ static int __devinit pxakbd_probe(struct platform_device *pdev)
struct
input_dev
*
input_dev
;
int
i
,
row
,
col
,
error
;
pxakbd_clk
=
clk_get
(
&
pdev
->
dev
,
"KBDCLK"
);
if
(
IS_ERR
(
pxakbd_clk
))
{
error
=
PTR_ERR
(
pxakbd_clk
);
goto
err_clk
;
}
/* Create and register the input driver. */
input_dev
=
input_allocate_device
();
if
(
!
input_dev
)
{
printk
(
KERN_ERR
"Cannot request keypad device
\n
"
);
return
-
ENOMEM
;
error
=
-
ENOMEM
;
goto
err_alloc
;
}
input_dev
->
name
=
DRIVER_NAME
;
...
...
@@ -185,7 +197,6 @@ static int __devinit pxakbd_probe(struct platform_device *pdev)
DRIVER_NAME
,
pdev
);
if
(
error
)
{
printk
(
KERN_ERR
"Cannot request keypad IRQ
\n
"
);
pxa_set_cken
(
CKEN_KEYPAD
,
0
);
goto
err_free_dev
;
}
...
...
@@ -217,6 +228,9 @@ static int __devinit pxakbd_probe(struct platform_device *pdev)
free_irq
(
IRQ_KEYPAD
,
pdev
);
err_free_dev:
input_free_device
(
input_dev
);
err_alloc:
clk_put
(
pxakbd_clk
);
err_clk:
return
error
;
}
...
...
@@ -226,6 +240,7 @@ static int __devexit pxakbd_remove(struct platform_device *pdev)
input_unregister_device
(
input_dev
);
free_irq
(
IRQ_KEYPAD
,
pdev
);
clk_put
(
pxakbd_clk
);
platform_set_drvdata
(
pdev
,
NULL
);
return
0
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录