Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xiphi1978
linux
提交
8df3a615
L
linux
项目概览
xiphi1978
/
linux
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
8df3a615
编写于
10月 27, 2010
作者:
P
Paul Mundt
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
sh: IPR IRQs irq_data conversion.
Signed-off-by:
N
Paul Mundt
<
lethal@linux-sh.org
>
上级
0d338071
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
12 addition
and
13 deletion
+12
-13
arch/sh/kernel/cpu/irq/ipr.c
arch/sh/kernel/cpu/irq/ipr.c
+12
-13
未找到文件。
arch/sh/kernel/cpu/irq/ipr.c
浏览文件 @
8df3a615
...
@@ -24,25 +24,25 @@
...
@@ -24,25 +24,25 @@
#include <linux/module.h>
#include <linux/module.h>
#include <linux/topology.h>
#include <linux/topology.h>
static
inline
struct
ipr_desc
*
get_ipr_desc
(
unsigned
int
irq
)
static
inline
struct
ipr_desc
*
get_ipr_desc
(
struct
irq_data
*
data
)
{
{
struct
irq_chip
*
chip
=
get_irq_chip
(
irq
);
struct
irq_chip
*
chip
=
irq_data_get_irq_chip
(
data
);
return
container_of
(
chip
,
struct
ipr_desc
,
chip
);
return
container_of
(
chip
,
struct
ipr_desc
,
chip
);
}
}
static
void
disable_ipr_irq
(
unsigned
int
irq
)
static
void
disable_ipr_irq
(
struct
irq_data
*
data
)
{
{
struct
ipr_data
*
p
=
get_irq_chip_data
(
irq
);
struct
ipr_data
*
p
=
irq_data_get_irq_chip_data
(
data
);
unsigned
long
addr
=
get_ipr_desc
(
irq
)
->
ipr_offsets
[
p
->
ipr_idx
];
unsigned
long
addr
=
get_ipr_desc
(
data
)
->
ipr_offsets
[
p
->
ipr_idx
];
/* Set the priority in IPR to 0 */
/* Set the priority in IPR to 0 */
__raw_writew
(
__raw_readw
(
addr
)
&
(
0xffff
^
(
0xf
<<
p
->
shift
)),
addr
);
__raw_writew
(
__raw_readw
(
addr
)
&
(
0xffff
^
(
0xf
<<
p
->
shift
)),
addr
);
(
void
)
__raw_readw
(
addr
);
/* Read back to flush write posting */
(
void
)
__raw_readw
(
addr
);
/* Read back to flush write posting */
}
}
static
void
enable_ipr_irq
(
unsigned
int
irq
)
static
void
enable_ipr_irq
(
struct
irq_data
*
data
)
{
{
struct
ipr_data
*
p
=
get_irq_chip_data
(
irq
);
struct
ipr_data
*
p
=
irq_data_get_irq_chip_data
(
data
);
unsigned
long
addr
=
get_ipr_desc
(
irq
)
->
ipr_offsets
[
p
->
ipr_idx
];
unsigned
long
addr
=
get_ipr_desc
(
data
)
->
ipr_offsets
[
p
->
ipr_idx
];
/* Set priority in IPR back to original value */
/* Set priority in IPR back to original value */
__raw_writew
(
__raw_readw
(
addr
)
|
(
p
->
priority
<<
p
->
shift
),
addr
);
__raw_writew
(
__raw_readw
(
addr
)
|
(
p
->
priority
<<
p
->
shift
),
addr
);
}
}
...
@@ -56,9 +56,8 @@ void register_ipr_controller(struct ipr_desc *desc)
...
@@ -56,9 +56,8 @@ void register_ipr_controller(struct ipr_desc *desc)
{
{
int
i
;
int
i
;
desc
->
chip
.
mask
=
disable_ipr_irq
;
desc
->
chip
.
irq_mask
=
disable_ipr_irq
;
desc
->
chip
.
unmask
=
enable_ipr_irq
;
desc
->
chip
.
irq_unmask
=
enable_ipr_irq
;
desc
->
chip
.
mask_ack
=
disable_ipr_irq
;
for
(
i
=
0
;
i
<
desc
->
nr_irqs
;
i
++
)
{
for
(
i
=
0
;
i
<
desc
->
nr_irqs
;
i
++
)
{
struct
ipr_data
*
p
=
desc
->
ipr_data
+
i
;
struct
ipr_data
*
p
=
desc
->
ipr_data
+
i
;
...
@@ -68,7 +67,7 @@ void register_ipr_controller(struct ipr_desc *desc)
...
@@ -68,7 +67,7 @@ void register_ipr_controller(struct ipr_desc *desc)
BUG_ON
(
!
desc
->
ipr_offsets
[
p
->
ipr_idx
]);
BUG_ON
(
!
desc
->
ipr_offsets
[
p
->
ipr_idx
]);
res
=
irq_alloc_desc_at
(
p
->
irq
,
numa_node_id
());
res
=
irq_alloc_desc_at
(
p
->
irq
,
numa_node_id
());
if
(
unlikely
(
res
!=
p
->
irq
&&
res
!=
-
EEXIST
))
if
(
unlikely
(
res
!=
p
->
irq
&&
res
!=
-
EEXIST
))
{
printk
(
KERN_INFO
"can not get irq_desc for %d
\n
"
,
printk
(
KERN_INFO
"can not get irq_desc for %d
\n
"
,
p
->
irq
);
p
->
irq
);
continue
;
continue
;
...
@@ -78,7 +77,7 @@ void register_ipr_controller(struct ipr_desc *desc)
...
@@ -78,7 +77,7 @@ void register_ipr_controller(struct ipr_desc *desc)
set_irq_chip_and_handler_name
(
p
->
irq
,
&
desc
->
chip
,
set_irq_chip_and_handler_name
(
p
->
irq
,
&
desc
->
chip
,
handle_level_irq
,
"level"
);
handle_level_irq
,
"level"
);
set_irq_chip_data
(
p
->
irq
,
p
);
set_irq_chip_data
(
p
->
irq
,
p
);
disable_ipr_irq
(
p
->
irq
);
disable_ipr_irq
(
irq_get_irq_data
(
p
->
irq
)
);
}
}
}
}
EXPORT_SYMBOL
(
register_ipr_controller
);
EXPORT_SYMBOL
(
register_ipr_controller
);
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录