Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
de764fdc
R
raspberrypi-kernel
项目概览
openeuler
/
raspberrypi-kernel
通知
14
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
raspberrypi-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
de764fdc
编写于
8月 17, 2018
作者:
V
Vinod Koul
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'topic/ste' into for-linus
上级
89b7e78f
90ec93cb
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
19 addition
and
8 deletion
+19
-8
drivers/dma/ste_dma40.c
drivers/dma/ste_dma40.c
+13
-2
drivers/dma/stm32-dma.c
drivers/dma/stm32-dma.c
+2
-2
drivers/dma/stm32-mdma.c
drivers/dma/stm32-mdma.c
+4
-4
未找到文件。
drivers/dma/ste_dma40.c
浏览文件 @
de764fdc
...
@@ -555,6 +555,7 @@ struct d40_gen_dmac {
...
@@ -555,6 +555,7 @@ struct d40_gen_dmac {
* @reg_val_backup_v4: Backup of registers that only exits on dma40 v3 and
* @reg_val_backup_v4: Backup of registers that only exits on dma40 v3 and
* later
* later
* @reg_val_backup_chan: Backup data for standard channel parameter registers.
* @reg_val_backup_chan: Backup data for standard channel parameter registers.
* @regs_interrupt: Scratch space for registers during interrupt.
* @gcc_pwr_off_mask: Mask to maintain the channels that can be turned off.
* @gcc_pwr_off_mask: Mask to maintain the channels that can be turned off.
* @gen_dmac: the struct for generic registers values to represent u8500/8540
* @gen_dmac: the struct for generic registers values to represent u8500/8540
* DMA controller
* DMA controller
...
@@ -592,6 +593,7 @@ struct d40_base {
...
@@ -592,6 +593,7 @@ struct d40_base {
u32
reg_val_backup
[
BACKUP_REGS_SZ
];
u32
reg_val_backup
[
BACKUP_REGS_SZ
];
u32
reg_val_backup_v4
[
BACKUP_REGS_SZ_MAX
];
u32
reg_val_backup_v4
[
BACKUP_REGS_SZ_MAX
];
u32
*
reg_val_backup_chan
;
u32
*
reg_val_backup_chan
;
u32
*
regs_interrupt
;
u16
gcc_pwr_off_mask
;
u16
gcc_pwr_off_mask
;
struct
d40_gen_dmac
gen_dmac
;
struct
d40_gen_dmac
gen_dmac
;
};
};
...
@@ -1637,7 +1639,7 @@ static irqreturn_t d40_handle_interrupt(int irq, void *data)
...
@@ -1637,7 +1639,7 @@ static irqreturn_t d40_handle_interrupt(int irq, void *data)
struct
d40_chan
*
d40c
;
struct
d40_chan
*
d40c
;
unsigned
long
flags
;
unsigned
long
flags
;
struct
d40_base
*
base
=
data
;
struct
d40_base
*
base
=
data
;
u32
regs
[
base
->
gen_dmac
.
il_size
]
;
u32
*
regs
=
base
->
regs_interrupt
;
struct
d40_interrupt_lookup
*
il
=
base
->
gen_dmac
.
il
;
struct
d40_interrupt_lookup
*
il
=
base
->
gen_dmac
.
il
;
u32
il_size
=
base
->
gen_dmac
.
il_size
;
u32
il_size
=
base
->
gen_dmac
.
il_size
;
...
@@ -3258,13 +3260,22 @@ static struct d40_base * __init d40_hw_detect_init(struct platform_device *pdev)
...
@@ -3258,13 +3260,22 @@ static struct d40_base * __init d40_hw_detect_init(struct platform_device *pdev)
if
(
!
base
->
lcla_pool
.
alloc_map
)
if
(
!
base
->
lcla_pool
.
alloc_map
)
goto
free_backup_chan
;
goto
free_backup_chan
;
base
->
regs_interrupt
=
kmalloc_array
(
base
->
gen_dmac
.
il_size
,
sizeof
(
*
base
->
regs_interrupt
),
GFP_KERNEL
);
if
(
!
base
->
regs_interrupt
)
goto
free_map
;
base
->
desc_slab
=
kmem_cache_create
(
D40_NAME
,
sizeof
(
struct
d40_desc
),
base
->
desc_slab
=
kmem_cache_create
(
D40_NAME
,
sizeof
(
struct
d40_desc
),
0
,
SLAB_HWCACHE_ALIGN
,
0
,
SLAB_HWCACHE_ALIGN
,
NULL
);
NULL
);
if
(
base
->
desc_slab
==
NULL
)
if
(
base
->
desc_slab
==
NULL
)
goto
free_map
;
goto
free_regs
;
return
base
;
return
base
;
free_regs:
kfree
(
base
->
regs_interrupt
);
free_map:
free_map:
kfree
(
base
->
lcla_pool
.
alloc_map
);
kfree
(
base
->
lcla_pool
.
alloc_map
);
free_backup_chan:
free_backup_chan:
...
...
drivers/dma/stm32-dma.c
浏览文件 @
de764fdc
...
@@ -594,7 +594,7 @@ static void stm32_dma_start_transfer(struct stm32_dma_chan *chan)
...
@@ -594,7 +594,7 @@ static void stm32_dma_start_transfer(struct stm32_dma_chan *chan)
chan
->
busy
=
true
;
chan
->
busy
=
true
;
dev_dbg
(
chan2dev
(
chan
),
"vchan %p: started
\n
"
,
&
chan
->
vchan
);
dev_dbg
(
chan2dev
(
chan
),
"vchan %p
K
: started
\n
"
,
&
chan
->
vchan
);
}
}
static
void
stm32_dma_configure_next_sg
(
struct
stm32_dma_chan
*
chan
)
static
void
stm32_dma_configure_next_sg
(
struct
stm32_dma_chan
*
chan
)
...
@@ -693,7 +693,7 @@ static void stm32_dma_issue_pending(struct dma_chan *c)
...
@@ -693,7 +693,7 @@ static void stm32_dma_issue_pending(struct dma_chan *c)
spin_lock_irqsave
(
&
chan
->
vchan
.
lock
,
flags
);
spin_lock_irqsave
(
&
chan
->
vchan
.
lock
,
flags
);
if
(
vchan_issue_pending
(
&
chan
->
vchan
)
&&
!
chan
->
desc
&&
!
chan
->
busy
)
{
if
(
vchan_issue_pending
(
&
chan
->
vchan
)
&&
!
chan
->
desc
&&
!
chan
->
busy
)
{
dev_dbg
(
chan2dev
(
chan
),
"vchan %p: issued
\n
"
,
&
chan
->
vchan
);
dev_dbg
(
chan2dev
(
chan
),
"vchan %p
K
: issued
\n
"
,
&
chan
->
vchan
);
stm32_dma_start_transfer
(
chan
);
stm32_dma_start_transfer
(
chan
);
}
}
...
...
drivers/dma/stm32-mdma.c
浏览文件 @
de764fdc
...
@@ -1170,7 +1170,7 @@ static void stm32_mdma_start_transfer(struct stm32_mdma_chan *chan)
...
@@ -1170,7 +1170,7 @@ static void stm32_mdma_start_transfer(struct stm32_mdma_chan *chan)
chan
->
busy
=
true
;
chan
->
busy
=
true
;
dev_dbg
(
chan2dev
(
chan
),
"vchan %p: started
\n
"
,
&
chan
->
vchan
);
dev_dbg
(
chan2dev
(
chan
),
"vchan %p
K
: started
\n
"
,
&
chan
->
vchan
);
}
}
static
void
stm32_mdma_issue_pending
(
struct
dma_chan
*
c
)
static
void
stm32_mdma_issue_pending
(
struct
dma_chan
*
c
)
...
@@ -1183,7 +1183,7 @@ static void stm32_mdma_issue_pending(struct dma_chan *c)
...
@@ -1183,7 +1183,7 @@ static void stm32_mdma_issue_pending(struct dma_chan *c)
if
(
!
vchan_issue_pending
(
&
chan
->
vchan
))
if
(
!
vchan_issue_pending
(
&
chan
->
vchan
))
goto
end
;
goto
end
;
dev_dbg
(
chan2dev
(
chan
),
"vchan %p: issued
\n
"
,
&
chan
->
vchan
);
dev_dbg
(
chan2dev
(
chan
),
"vchan %p
K
: issued
\n
"
,
&
chan
->
vchan
);
if
(
!
chan
->
desc
&&
!
chan
->
busy
)
if
(
!
chan
->
desc
&&
!
chan
->
busy
)
stm32_mdma_start_transfer
(
chan
);
stm32_mdma_start_transfer
(
chan
);
...
@@ -1203,7 +1203,7 @@ static int stm32_mdma_pause(struct dma_chan *c)
...
@@ -1203,7 +1203,7 @@ static int stm32_mdma_pause(struct dma_chan *c)
spin_unlock_irqrestore
(
&
chan
->
vchan
.
lock
,
flags
);
spin_unlock_irqrestore
(
&
chan
->
vchan
.
lock
,
flags
);
if
(
!
ret
)
if
(
!
ret
)
dev_dbg
(
chan2dev
(
chan
),
"vchan %p: pause
\n
"
,
&
chan
->
vchan
);
dev_dbg
(
chan2dev
(
chan
),
"vchan %p
K
: pause
\n
"
,
&
chan
->
vchan
);
return
ret
;
return
ret
;
}
}
...
@@ -1240,7 +1240,7 @@ static int stm32_mdma_resume(struct dma_chan *c)
...
@@ -1240,7 +1240,7 @@ static int stm32_mdma_resume(struct dma_chan *c)
spin_unlock_irqrestore
(
&
chan
->
vchan
.
lock
,
flags
);
spin_unlock_irqrestore
(
&
chan
->
vchan
.
lock
,
flags
);
dev_dbg
(
chan2dev
(
chan
),
"vchan %p: resume
\n
"
,
&
chan
->
vchan
);
dev_dbg
(
chan2dev
(
chan
),
"vchan %p
K
: resume
\n
"
,
&
chan
->
vchan
);
return
0
;
return
0
;
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录