Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
linux
linux-davinci
Commits
2638b4db
Commit
2638b4db
authored
Sep 25, 2008
by
Russell King
Committed by
Russell King
Sep 29, 2008
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[ARM] dma: Reduce to one dma_sync_sg_* implementation
Signed-off-by:
Russell King
<
rmk+kernel@arm.linux.org.uk
>
parent
01135d92
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
31 additions
and
38 deletions
+31
-38
arch/arm/common/dmabounce.c
arch/arm/common/dmabounce.c
+12
-36
arch/arm/include/asm/dma-mapping.h
arch/arm/include/asm/dma-mapping.h
+11
-0
arch/arm/mm/dma-mapping.c
arch/arm/mm/dma-mapping.c
+8
-2
No files found.
arch/arm/common/dmabounce.c
View file @
2638b4db
...
@@ -468,45 +468,23 @@ void dma_sync_single_range_for_device(struct device *dev, dma_addr_t dma_addr,
...
@@ -468,45 +468,23 @@ void dma_sync_single_range_for_device(struct device *dev, dma_addr_t dma_addr,
}
}
EXPORT_SYMBOL
(
dma_sync_single_range_for_device
);
EXPORT_SYMBOL
(
dma_sync_single_range_for_device
);
void
int
dmabounce_sync_for_cpu
(
struct
device
*
dev
,
dma_addr_t
addr
,
dma_sync_sg_for_cpu
(
struct
device
*
dev
,
struct
scatterlist
*
sg
,
int
nents
,
unsigned
long
off
,
size_t
sz
,
enum
dma_data_direction
dir
)
enum
dma_data_direction
dir
)
{
{
struct
scatterlist
*
s
;
dev_dbg
(
dev
,
"%s(dma=%#lx,off=%#lx,sz=%zx,dir=%x)
\n
"
,
int
i
;
__func__
,
addr
,
off
,
sz
,
dir
);
return
sync_single
(
dev
,
addr
,
off
+
sz
,
dir
);
dev_dbg
(
dev
,
"%s(sg=%p,nents=%d,dir=%x)
\n
"
,
__func__
,
sg
,
nents
,
dir
);
BUG_ON
(
dir
==
DMA_NONE
);
for_each_sg
(
sg
,
s
,
nents
,
i
)
{
dma_addr_t
dma_addr
=
s
->
dma_address
;
unsigned
int
length
=
s
->
length
;
sync_single
(
dev
,
dma_addr
,
length
,
dir
);
}
}
}
EXPORT_SYMBOL
(
dmabounce_sync_for_cpu
);
void
int
dmabounce_sync_for_device
(
struct
device
*
dev
,
dma_addr_t
addr
,
dma_sync_sg_for_device
(
struct
device
*
dev
,
struct
scatterlist
*
sg
,
int
nents
,
unsigned
long
off
,
size_t
sz
,
enum
dma_data_direction
dir
)
enum
dma_data_direction
dir
)
{
{
struct
scatterlist
*
s
;
dev_dbg
(
dev
,
"%s(dma=%#lx,off=%#lx,sz=%zx,dir=%x)
\n
"
,
int
i
;
__func__
,
addr
,
off
,
sz
,
dir
);
return
sync_single
(
dev
,
addr
,
off
+
sz
,
dir
);
dev_dbg
(
dev
,
"%s(sg=%p,nents=%d,dir=%x)
\n
"
,
__func__
,
sg
,
nents
,
dir
);
BUG_ON
(
dir
==
DMA_NONE
);
for_each_sg
(
sg
,
s
,
nents
,
i
)
{
dma_addr_t
dma_addr
=
s
->
dma_address
;
unsigned
int
length
=
s
->
length
;
sync_single
(
dev
,
dma_addr
,
length
,
dir
);
}
}
}
EXPORT_SYMBOL
(
dmabounce_sync_for_device
);
static
int
static
int
dmabounce_init_pool
(
struct
dmabounce_pool
*
pool
,
struct
device
*
dev
,
const
char
*
name
,
dmabounce_init_pool
(
struct
dmabounce_pool
*
pool
,
struct
device
*
dev
,
const
char
*
name
,
...
@@ -618,8 +596,6 @@ dmabounce_unregister_dev(struct device *dev)
...
@@ -618,8 +596,6 @@ dmabounce_unregister_dev(struct device *dev)
EXPORT_SYMBOL
(
dma_map_single
);
EXPORT_SYMBOL
(
dma_map_single
);
EXPORT_SYMBOL
(
dma_unmap_single
);
EXPORT_SYMBOL
(
dma_unmap_single
);
EXPORT_SYMBOL
(
dma_sync_sg_for_cpu
);
EXPORT_SYMBOL
(
dma_sync_sg_for_device
);
EXPORT_SYMBOL
(
dmabounce_register_dev
);
EXPORT_SYMBOL
(
dmabounce_register_dev
);
EXPORT_SYMBOL
(
dmabounce_unregister_dev
);
EXPORT_SYMBOL
(
dmabounce_unregister_dev
);
...
...
arch/arm/include/asm/dma-mapping.h
View file @
2638b4db
...
@@ -410,6 +410,17 @@ extern void dmabounce_unregister_dev(struct device *);
...
@@ -410,6 +410,17 @@ extern void dmabounce_unregister_dev(struct device *);
*
*
*/
*/
extern
int
dma_needs_bounce
(
struct
device
*
,
dma_addr_t
,
size_t
);
extern
int
dma_needs_bounce
(
struct
device
*
,
dma_addr_t
,
size_t
);
/*
* Private functions
*/
int
dmabounce_sync_for_cpu
(
struct
device
*
,
dma_addr_t
,
unsigned
long
,
size_t
,
enum
dma_data_direction
);
int
dmabounce_sync_for_device
(
struct
device
*
,
dma_addr_t
,
unsigned
long
,
size_t
,
enum
dma_data_direction
);
#else
#define dmabounce_sync_for_cpu(dev,dma,off,sz,dir) (1)
#define dmabounce_sync_for_device(dev,dma,off,sz,dir) (1)
#endif
/* CONFIG_DMABOUNCE */
#endif
/* CONFIG_DMABOUNCE */
#endif
/* __KERNEL__ */
#endif
/* __KERNEL__ */
...
...
arch/arm/mm/dma-mapping.c
View file @
2638b4db
...
@@ -571,7 +571,6 @@ void dma_unmap_sg(struct device *dev, struct scatterlist *sg, int nents,
...
@@ -571,7 +571,6 @@ void dma_unmap_sg(struct device *dev, struct scatterlist *sg, int nents,
}
}
EXPORT_SYMBOL
(
dma_unmap_sg
);
EXPORT_SYMBOL
(
dma_unmap_sg
);
#ifndef CONFIG_DMABOUNCE
/**
/**
* dma_sync_sg_for_cpu
* dma_sync_sg_for_cpu
* @dev: valid struct device pointer, or NULL for ISA and EISA-like devices
* @dev: valid struct device pointer, or NULL for ISA and EISA-like devices
...
@@ -586,6 +585,10 @@ void dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg,
...
@@ -586,6 +585,10 @@ void dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg,
int
i
;
int
i
;
for_each_sg
(
sg
,
s
,
nents
,
i
)
{
for_each_sg
(
sg
,
s
,
nents
,
i
)
{
if
(
!
dmabounce_sync_for_cpu
(
dev
,
sg_dma_address
(
s
),
0
,
sg_dma_len
(
s
),
dir
))
continue
;
if
(
!
arch_is_coherent
())
if
(
!
arch_is_coherent
())
dma_cache_maint
(
sg_virt
(
s
),
s
->
length
,
dir
);
dma_cache_maint
(
sg_virt
(
s
),
s
->
length
,
dir
);
}
}
...
@@ -606,9 +609,12 @@ void dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg,
...
@@ -606,9 +609,12 @@ void dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg,
int
i
;
int
i
;
for_each_sg
(
sg
,
s
,
nents
,
i
)
{
for_each_sg
(
sg
,
s
,
nents
,
i
)
{
if
(
!
dmabounce_sync_for_device
(
dev
,
sg_dma_address
(
s
),
0
,
sg_dma_len
(
s
),
dir
))
continue
;
if
(
!
arch_is_coherent
())
if
(
!
arch_is_coherent
())
dma_cache_maint
(
sg_virt
(
s
),
s
->
length
,
dir
);
dma_cache_maint
(
sg_virt
(
s
),
s
->
length
,
dir
);
}
}
}
}
EXPORT_SYMBOL
(
dma_sync_sg_for_device
);
EXPORT_SYMBOL
(
dma_sync_sg_for_device
);
#endif
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