Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 48892
b: refs/heads/master
c: ab2c215
h: refs/heads/master
v: v3
  • Loading branch information
Russell King authored and Russell King committed Feb 12, 2007
1 parent 59d628f commit f37d0ce
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 26 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 44b18693904e65d840ae999ac8aa717551cf509f
refs/heads/master: ab2c21529df6ee0f06787773882a1abc6bc2d665
31 changes: 7 additions & 24 deletions trunk/arch/arm/common/dmabounce.c
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,6 @@ struct dmabounce_pool {
};

struct dmabounce_device_info {
struct list_head node;

struct device *dev;
struct list_head safe_buffers;
#ifdef STATS
Expand All @@ -81,8 +79,6 @@ struct dmabounce_device_info {
rwlock_t lock;
};

static LIST_HEAD(dmabounce_devs);

#ifdef STATS
static void print_alloc_stats(struct dmabounce_device_info *device_info)
{
Expand All @@ -96,19 +92,6 @@ static void print_alloc_stats(struct dmabounce_device_info *device_info)
}
#endif

/* find the given device in the dmabounce device list */
static inline struct dmabounce_device_info *
find_dmabounce_dev(struct device *dev)
{
struct dmabounce_device_info *d;

list_for_each_entry(d, &dmabounce_devs, node)
if (d->dev == dev)
return d;

return NULL;
}


/* allocate a 'safe' buffer and keep track of it */
static inline struct safe_buffer *
Expand Down Expand Up @@ -231,7 +214,7 @@ static inline dma_addr_t
map_single(struct device *dev, void *ptr, size_t size,
enum dma_data_direction dir)
{
struct dmabounce_device_info *device_info = find_dmabounce_dev(dev);
struct dmabounce_device_info *device_info = dev->archdata.dmabounce;
dma_addr_t dma_addr;
int needs_bounce = 0;

Expand Down Expand Up @@ -292,7 +275,7 @@ static inline void
unmap_single(struct device *dev, dma_addr_t dma_addr, size_t size,
enum dma_data_direction dir)
{
struct dmabounce_device_info *device_info = find_dmabounce_dev(dev);
struct dmabounce_device_info *device_info = dev->archdata.dmabounce;
struct safe_buffer *buf = NULL;

/*
Expand Down Expand Up @@ -343,7 +326,7 @@ static inline void
sync_single(struct device *dev, dma_addr_t dma_addr, size_t size,
enum dma_data_direction dir)
{
struct dmabounce_device_info *device_info = find_dmabounce_dev(dev);
struct dmabounce_device_info *device_info = dev->archdata.dmabounce;
struct safe_buffer *buf = NULL;

if (device_info)
Expand Down Expand Up @@ -606,7 +589,7 @@ dmabounce_register_dev(struct device *dev, unsigned long small_buffer_size,
device_info->bounce_count = 0;
#endif

list_add(&device_info->node, &dmabounce_devs);
dev->archdata.dmabounce = device_info;

printk(KERN_INFO "dmabounce: registered device %s on %s bus\n",
dev->bus_id, dev->bus->name);
Expand All @@ -623,7 +606,9 @@ dmabounce_register_dev(struct device *dev, unsigned long small_buffer_size,
void
dmabounce_unregister_dev(struct device *dev)
{
struct dmabounce_device_info *device_info = find_dmabounce_dev(dev);
struct dmabounce_device_info *device_info = dev->archdata.dmabounce;

dev->archdata.dmabounce = NULL;

if (!device_info) {
printk(KERN_WARNING
Expand All @@ -649,8 +634,6 @@ dmabounce_unregister_dev(struct device *dev)
print_map_stats(device_info);
#endif

list_del(&device_info->node);

kfree(device_info);

printk(KERN_INFO "dmabounce: device %s on %s bus unregistered\n",
Expand Down
10 changes: 9 additions & 1 deletion trunk/include/asm-arm/device.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,13 @@
*
* This file is released under the GPLv2
*/
#include <asm-generic/device.h>
#ifndef ASMARM_DEVICE_H
#define ASMARM_DEVICE_H

struct dev_archdata {
#ifdef CONFIG_DMABOUNCE
struct dmabounce_device_info *dmabounce;
#endif
};

#endif

0 comments on commit f37d0ce

Please sign in to comment.