Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
de764fdc
Commit
de764fdc
authored
Aug 17, 2018
by
Vinod Koul
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'topic/ste' into for-linus
parents
89b7e78f
90ec93cb
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
19 additions
and
8 deletions
+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
No files found.
drivers/dma/ste_dma40.c
View file @
de764fdc
...
...
@@ -555,6 +555,7 @@ struct d40_gen_dmac {
* @reg_val_backup_v4: Backup of registers that only exits on dma40 v3 and
* later
* @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.
* @gen_dmac: the struct for generic registers values to represent u8500/8540
* DMA controller
...
...
@@ -592,6 +593,7 @@ struct d40_base {
u32
reg_val_backup
[
BACKUP_REGS_SZ
];
u32
reg_val_backup_v4
[
BACKUP_REGS_SZ_MAX
];
u32
*
reg_val_backup_chan
;
u32
*
regs_interrupt
;
u16
gcc_pwr_off_mask
;
struct
d40_gen_dmac
gen_dmac
;
};
...
...
@@ -1637,7 +1639,7 @@ static irqreturn_t d40_handle_interrupt(int irq, void *data)
struct
d40_chan
*
d40c
;
unsigned
long
flags
;
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
;
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)
if
(
!
base
->
lcla_pool
.
alloc_map
)
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
),
0
,
SLAB_HWCACHE_ALIGN
,
NULL
);
if
(
base
->
desc_slab
==
NULL
)
goto
free_map
;
goto
free_regs
;
return
base
;
free_regs:
kfree
(
base
->
regs_interrupt
);
free_map:
kfree
(
base
->
lcla_pool
.
alloc_map
);
free_backup_chan:
...
...
drivers/dma/stm32-dma.c
View file @
de764fdc
...
...
@@ -594,7 +594,7 @@ static void stm32_dma_start_transfer(struct stm32_dma_chan *chan)
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
)
...
...
@@ -693,7 +693,7 @@ static void stm32_dma_issue_pending(struct dma_chan *c)
spin_lock_irqsave
(
&
chan
->
vchan
.
lock
,
flags
);
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
);
}
...
...
drivers/dma/stm32-mdma.c
View file @
de764fdc
...
...
@@ -1170,7 +1170,7 @@ static void stm32_mdma_start_transfer(struct stm32_mdma_chan *chan)
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
)
...
...
@@ -1183,7 +1183,7 @@ static void stm32_mdma_issue_pending(struct dma_chan *c)
if
(
!
vchan_issue_pending
(
&
chan
->
vchan
))
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
)
stm32_mdma_start_transfer
(
chan
);
...
...
@@ -1203,7 +1203,7 @@ static int stm32_mdma_pause(struct dma_chan *c)
spin_unlock_irqrestore
(
&
chan
->
vchan
.
lock
,
flags
);
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
;
}
...
...
@@ -1240,7 +1240,7 @@ static int stm32_mdma_resume(struct dma_chan *c)
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
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment