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
2fc42814
Commit
2fc42814
authored
Dec 04, 2009
by
Russell King
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'pending-dma-streaming' (early part) into devel
parents
c6baa196
29cb8d0d
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
56 additions
and
21 deletions
+56
-21
arch/arm/common/dmabounce.c
arch/arm/common/dmabounce.c
+18
-3
arch/arm/include/asm/dma-mapping.h
arch/arm/include/asm/dma-mapping.h
+14
-12
arch/arm/include/asm/memory.h
arch/arm/include/asm/memory.h
+8
-6
arch/arm/mach-iop13xx/include/mach/memory.h
arch/arm/mach-iop13xx/include/mach/memory.h
+2
-0
arch/arm/mach-ks8695/include/mach/memory.h
arch/arm/mach-ks8695/include/mach/memory.h
+7
-0
arch/arm/plat-omap/include/mach/memory.h
arch/arm/plat-omap/include/mach/memory.h
+7
-0
No files found.
arch/arm/common/dmabounce.c
View file @
2fc42814
...
...
@@ -342,6 +342,22 @@ dma_addr_t dma_map_single(struct device *dev, void *ptr, size_t size,
}
EXPORT_SYMBOL
(
dma_map_single
);
/*
* see if a mapped address was really a "safe" buffer and if so, copy
* the data from the safe buffer back to the unsafe buffer and free up
* the safe buffer. (basically return things back to the way they
* should be)
*/
void
dma_unmap_single
(
struct
device
*
dev
,
dma_addr_t
dma_addr
,
size_t
size
,
enum
dma_data_direction
dir
)
{
dev_dbg
(
dev
,
"%s(ptr=%p,size=%d,dir=%x)
\n
"
,
__func__
,
(
void
*
)
dma_addr
,
size
,
dir
);
unmap_single
(
dev
,
dma_addr
,
size
,
dir
);
}
EXPORT_SYMBOL
(
dma_unmap_single
);
dma_addr_t
dma_map_page
(
struct
device
*
dev
,
struct
page
*
page
,
unsigned
long
offset
,
size_t
size
,
enum
dma_data_direction
dir
)
{
...
...
@@ -366,8 +382,7 @@ EXPORT_SYMBOL(dma_map_page);
* the safe buffer. (basically return things back to the way they
* should be)
*/
void
dma_unmap_single
(
struct
device
*
dev
,
dma_addr_t
dma_addr
,
size_t
size
,
void
dma_unmap_page
(
struct
device
*
dev
,
dma_addr_t
dma_addr
,
size_t
size
,
enum
dma_data_direction
dir
)
{
dev_dbg
(
dev
,
"%s(ptr=%p,size=%d,dir=%x)
\n
"
,
...
...
@@ -375,7 +390,7 @@ void dma_unmap_single(struct device *dev, dma_addr_t dma_addr, size_t size,
unmap_single
(
dev
,
dma_addr
,
size
,
dir
);
}
EXPORT_SYMBOL
(
dma_unmap_
singl
e
);
EXPORT_SYMBOL
(
dma_unmap_
pag
e
);
int
dmabounce_sync_for_cpu
(
struct
device
*
dev
,
dma_addr_t
addr
,
unsigned
long
off
,
size_t
sz
,
enum
dma_data_direction
dir
)
...
...
arch/arm/include/asm/dma-mapping.h
View file @
2fc42814
...
...
@@ -15,20 +15,15 @@
* must not be used by drivers.
*/
#ifndef __arch_page_to_dma
#if !defined(CONFIG_HIGHMEM)
static
inline
dma_addr_t
page_to_dma
(
struct
device
*
dev
,
struct
page
*
page
)
{
return
(
dma_addr_t
)
__
virt_to_bus
((
unsigned
long
)
page_address
(
page
));
return
(
dma_addr_t
)
__
pfn_to_bus
(
page_to_pfn
(
page
));
}
#elif defined(__pfn_to_bus)
static
inline
dma_addr_t
page_to_dma
(
struct
device
*
dev
,
struct
page
*
page
)
static
inline
struct
page
*
dma_to_page
(
struct
device
*
dev
,
dma_addr_t
addr
)
{
return
(
dma_addr_t
)
__pfn_to_bus
(
page_to_pfn
(
page
));
return
pfn_to_page
(
__bus_to_pfn
(
addr
));
}
#else
#error "this machine class needs to define __arch_page_to_dma to use HIGHMEM"
#endif
static
inline
void
*
dma_to_virt
(
struct
device
*
dev
,
dma_addr_t
addr
)
{
...
...
@@ -45,6 +40,11 @@ static inline dma_addr_t page_to_dma(struct device *dev, struct page *page)
return
__arch_page_to_dma
(
dev
,
page
);
}
static
inline
struct
page
*
dma_to_page
(
struct
device
*
dev
,
dma_addr_t
addr
)
{
return
__arch_dma_to_page
(
dev
,
addr
);
}
static
inline
void
*
dma_to_virt
(
struct
device
*
dev
,
dma_addr_t
addr
)
{
return
__arch_dma_to_virt
(
dev
,
addr
);
...
...
@@ -257,9 +257,11 @@ extern int dma_needs_bounce(struct device*, dma_addr_t, size_t);
*/
extern
dma_addr_t
dma_map_single
(
struct
device
*
,
void
*
,
size_t
,
enum
dma_data_direction
);
extern
void
dma_unmap_single
(
struct
device
*
,
dma_addr_t
,
size_t
,
enum
dma_data_direction
);
extern
dma_addr_t
dma_map_page
(
struct
device
*
,
struct
page
*
,
unsigned
long
,
size_t
,
enum
dma_data_direction
);
extern
void
dma_unmap_
singl
e
(
struct
device
*
,
dma_addr_t
,
size_t
,
extern
void
dma_unmap_
pag
e
(
struct
device
*
,
dma_addr_t
,
size_t
,
enum
dma_data_direction
);
/*
...
...
@@ -352,7 +354,6 @@ static inline void dma_unmap_single(struct device *dev, dma_addr_t handle,
{
/* nothing to do */
}
#endif
/* CONFIG_DMABOUNCE */
/**
* dma_unmap_page - unmap a buffer previously mapped through dma_map_page()
...
...
@@ -371,8 +372,9 @@ static inline void dma_unmap_single(struct device *dev, dma_addr_t handle,
static
inline
void
dma_unmap_page
(
struct
device
*
dev
,
dma_addr_t
handle
,
size_t
size
,
enum
dma_data_direction
dir
)
{
dma_unmap_single
(
dev
,
handle
,
size
,
dir
);
/* nothing to do */
}
#endif
/* CONFIG_DMABOUNCE */
/**
* dma_sync_single_range_for_cpu
...
...
arch/arm/include/asm/memory.h
View file @
2fc42814
...
...
@@ -136,6 +136,12 @@
#define __phys_to_pfn(paddr) ((paddr) >> PAGE_SHIFT)
#define __pfn_to_phys(pfn) ((pfn) << PAGE_SHIFT)
/*
* Convert a page to/from a physical address
*/
#define page_to_phys(page) (__pfn_to_phys(page_to_pfn(page)))
#define phys_to_page(phys) (pfn_to_page(__phys_to_pfn(phys)))
#ifndef __ASSEMBLY__
/*
...
...
@@ -196,7 +202,8 @@ static inline void *phys_to_virt(unsigned long x)
#ifndef __virt_to_bus
#define __virt_to_bus __virt_to_phys
#define __bus_to_virt __phys_to_virt
#define __pfn_to_bus(x) ((x) << PAGE_SHIFT)
#define __pfn_to_bus(x) __pfn_to_phys(x)
#define __bus_to_pfn(x) __phys_to_pfn(x)
#endif
static
inline
__deprecated
unsigned
long
virt_to_bus
(
void
*
x
)
...
...
@@ -294,11 +301,6 @@ static inline __deprecated void *bus_to_virt(unsigned long x)
#endif
/* !CONFIG_DISCONTIGMEM */
/*
* For BIO. "will die". Kill me when bio_to_phys() and bvec_to_phys() die.
*/
#define page_to_phys(page) (page_to_pfn(page) << PAGE_SHIFT)
/*
* Optional coherency support. Currently used only by selected
* Intel XSC3-based systems.
...
...
arch/arm/mach-iop13xx/include/mach/memory.h
View file @
2fc42814
...
...
@@ -64,6 +64,8 @@ static inline unsigned long __lbus_to_virt(dma_addr_t x)
(dma_addr_t)page_to_phys(page); \
})
#define __arch_dma_to_page(dev, addr) phys_to_page(addr)
#endif
/* CONFIG_ARCH_IOP13XX */
#endif
/* !ASSEMBLY */
...
...
arch/arm/mach-ks8695/include/mach/memory.h
View file @
2fc42814
...
...
@@ -41,6 +41,13 @@ extern struct bus_type platform_bus_type;
__dma = __dma - PHYS_OFFSET + KS8695_PCIMEM_PA; \
__dma; })
#define __arch_dma_to_page(dev, x) \
({ dma_addr_t __dma = x; \
if (!is_lbus_device(dev)) \
__dma += PHYS_OFFSET - KS8695_PCIMEM_PA; \
phys_to_page(__dma); \
})
#endif
#endif
...
...
arch/arm/plat-omap/include/mach/memory.h
View file @
2fc42814
...
...
@@ -68,6 +68,13 @@
__dma = __dma - PHYS_OFFSET + OMAP1510_LB_OFFSET; \
__dma; })
#define __arch_dma_to_page(dev, addr) \
({ dma_addr_t __dma = addr; \
if (is_lbus_device(dev)) \
__dma += PHYS_OFFSET - OMAP1510_LB_OFFSET; \
phys_to_page(__dma); \
})
#define __arch_dma_to_virt(dev, addr) ({ (void *) (is_lbus_device(dev) ? \
lbus_to_virt(addr) : \
__phys_to_virt(addr)); })
...
...
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