Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
2cb1800c
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看板
提交
2cb1800c
编写于
1月 31, 2018
作者:
V
Vinod Koul
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'topic/qcom_hidma' into for-linus
上级
c203f677
37fa4905
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
15 addition
and
46 deletion
+15
-46
drivers/dma/qcom/hidma_mgmt.c
drivers/dma/qcom/hidma_mgmt.c
+15
-46
未找到文件。
drivers/dma/qcom/hidma_mgmt.c
浏览文件 @
2cb1800c
...
...
@@ -17,6 +17,7 @@
#include <linux/acpi.h>
#include <linux/of.h>
#include <linux/property.h>
#include <linux/of_address.h>
#include <linux/of_irq.h>
#include <linux/of_platform.h>
#include <linux/module.h>
...
...
@@ -356,67 +357,37 @@ static int __init hidma_mgmt_of_populate_channels(struct device_node *np)
{
struct
platform_device
*
pdev_parent
=
of_find_device_by_node
(
np
);
struct
platform_device_info
pdevinfo
;
struct
of_phandle_args
out_irq
;
struct
device_node
*
child
;
struct
resource
*
res
=
NULL
;
const
__be32
*
cell
;
int
ret
=
0
,
size
,
i
,
num
;
u64
addr
,
addr_size
;
struct
resource
*
res
;
int
ret
=
0
;
/* allocate a resource array */
res
=
kcalloc
(
3
,
sizeof
(
*
res
),
GFP_KERNEL
);
if
(
!
res
)
return
-
ENOMEM
;
for_each_available_child_of_node
(
np
,
child
)
{
struct
resource
*
res_iter
;
struct
platform_device
*
new_pdev
;
cell
=
of_get_property
(
child
,
"reg"
,
&
size
);
if
(
!
cell
)
{
ret
=
-
EINVAL
;
ret
=
of_address_to_resource
(
child
,
0
,
&
res
[
0
]);
if
(
!
ret
)
goto
out
;
}
size
/=
sizeof
(
*
cell
);
num
=
size
/
(
of_n_addr_cells
(
child
)
+
of_n_size_cells
(
child
))
+
1
;
/* allocate a resource array */
res
=
kcalloc
(
num
,
sizeof
(
*
res
),
GFP_KERNEL
);
if
(
!
res
)
{
ret
=
-
ENOMEM
;
ret
=
of_address_to_resource
(
child
,
1
,
&
res
[
1
]);
if
(
!
ret
)
goto
out
;
}
/* read each reg value */
i
=
0
;
res_iter
=
res
;
while
(
i
<
size
)
{
addr
=
of_read_number
(
&
cell
[
i
],
of_n_addr_cells
(
child
));
i
+=
of_n_addr_cells
(
child
);
addr_size
=
of_read_number
(
&
cell
[
i
],
of_n_size_cells
(
child
));
i
+=
of_n_size_cells
(
child
);
res_iter
->
start
=
addr
;
res_iter
->
end
=
res_iter
->
start
+
addr_size
-
1
;
res_iter
->
flags
=
IORESOURCE_MEM
;
res_iter
++
;
}
ret
=
of_irq_
parse_one
(
child
,
0
,
&
out_irq
);
if
(
ret
)
ret
=
of_irq_
to_resource
(
child
,
0
,
&
res
[
2
]
);
if
(
ret
<=
0
)
goto
out
;
res_iter
->
start
=
irq_create_of_mapping
(
&
out_irq
);
res_iter
->
name
=
"hidma event irq"
;
res_iter
->
flags
=
IORESOURCE_IRQ
;
memset
(
&
pdevinfo
,
0
,
sizeof
(
pdevinfo
));
pdevinfo
.
fwnode
=
&
child
->
fwnode
;
pdevinfo
.
parent
=
pdev_parent
?
&
pdev_parent
->
dev
:
NULL
;
pdevinfo
.
name
=
child
->
name
;
pdevinfo
.
id
=
object_counter
++
;
pdevinfo
.
res
=
res
;
pdevinfo
.
num_res
=
num
;
pdevinfo
.
num_res
=
3
;
pdevinfo
.
data
=
NULL
;
pdevinfo
.
size_data
=
0
;
pdevinfo
.
dma_mask
=
DMA_BIT_MASK
(
64
);
...
...
@@ -434,8 +405,6 @@ static int __init hidma_mgmt_of_populate_channels(struct device_node *np)
*/
of_msi_configure
(
&
new_pdev
->
dev
,
child
);
of_node_put
(
child
);
kfree
(
res
);
res
=
NULL
;
}
out:
kfree
(
res
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录