diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-02-23 00:20:09 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-02-23 00:20:09 -0500 |
commit | df24eef3e794afbac69a377d1d2e2e3f5869f67a (patch) | |
tree | cf7b0548462ada8fdd2c2d20a86b8e59a3114186 /arch/blackfin/kernel | |
parent | 5f32ed140dac726e880d292988ba20d16f545bda (diff) | |
parent | f656c240ae07c48ddf8552e83b64692121044c42 (diff) |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lliubbo/blackfin
Pull small blackfin update from Bob Liu.
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lliubbo/blackfin:
blackfin: time-ts: Remove duplicate assignment
blackfin: pm: fix build error
blackfin: sync data in blackfin write buffer
blackfin: use bitmap library functions
blackfin: mem_init: update dmc config register
Diffstat (limited to 'arch/blackfin/kernel')
-rw-r--r-- | arch/blackfin/kernel/dma-mapping.c | 23 | ||||
-rw-r--r-- | arch/blackfin/kernel/time-ts.c | 6 |
2 files changed, 7 insertions, 22 deletions
diff --git a/arch/blackfin/kernel/dma-mapping.c b/arch/blackfin/kernel/dma-mapping.c index e7be6532d6a0..df437e52d9df 100644 --- a/arch/blackfin/kernel/dma-mapping.c +++ b/arch/blackfin/kernel/dma-mapping.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <linux/dma-mapping.h> | 13 | #include <linux/dma-mapping.h> |
14 | #include <linux/scatterlist.h> | 14 | #include <linux/scatterlist.h> |
15 | #include <linux/export.h> | 15 | #include <linux/export.h> |
16 | #include <linux/bitmap.h> | ||
16 | 17 | ||
17 | static spinlock_t dma_page_lock; | 18 | static spinlock_t dma_page_lock; |
18 | static unsigned long *dma_page; | 19 | static unsigned long *dma_page; |
@@ -46,24 +47,17 @@ static inline unsigned int get_pages(size_t size) | |||
46 | static unsigned long __alloc_dma_pages(unsigned int pages) | 47 | static unsigned long __alloc_dma_pages(unsigned int pages) |
47 | { | 48 | { |
48 | unsigned long ret = 0, flags; | 49 | unsigned long ret = 0, flags; |
49 | int i, count = 0; | 50 | unsigned long start; |
50 | 51 | ||
51 | if (dma_initialized == 0) | 52 | if (dma_initialized == 0) |
52 | dma_alloc_init(_ramend - DMA_UNCACHED_REGION, _ramend); | 53 | dma_alloc_init(_ramend - DMA_UNCACHED_REGION, _ramend); |
53 | 54 | ||
54 | spin_lock_irqsave(&dma_page_lock, flags); | 55 | spin_lock_irqsave(&dma_page_lock, flags); |
55 | 56 | ||
56 | for (i = 0; i < dma_pages;) { | 57 | start = bitmap_find_next_zero_area(dma_page, dma_pages, 0, pages, 0); |
57 | if (test_bit(i++, dma_page) == 0) { | 58 | if (start < dma_pages) { |
58 | if (++count == pages) { | 59 | ret = dma_base + (start << PAGE_SHIFT); |
59 | while (count--) | 60 | bitmap_set(dma_page, start, pages); |
60 | __set_bit(--i, dma_page); | ||
61 | |||
62 | ret = dma_base + (i << PAGE_SHIFT); | ||
63 | break; | ||
64 | } | ||
65 | } else | ||
66 | count = 0; | ||
67 | } | 61 | } |
68 | spin_unlock_irqrestore(&dma_page_lock, flags); | 62 | spin_unlock_irqrestore(&dma_page_lock, flags); |
69 | return ret; | 63 | return ret; |
@@ -73,7 +67,6 @@ static void __free_dma_pages(unsigned long addr, unsigned int pages) | |||
73 | { | 67 | { |
74 | unsigned long page = (addr - dma_base) >> PAGE_SHIFT; | 68 | unsigned long page = (addr - dma_base) >> PAGE_SHIFT; |
75 | unsigned long flags; | 69 | unsigned long flags; |
76 | int i; | ||
77 | 70 | ||
78 | if ((page + pages) > dma_pages) { | 71 | if ((page + pages) > dma_pages) { |
79 | printk(KERN_ERR "%s: freeing outside range.\n", __func__); | 72 | printk(KERN_ERR "%s: freeing outside range.\n", __func__); |
@@ -81,9 +74,7 @@ static void __free_dma_pages(unsigned long addr, unsigned int pages) | |||
81 | } | 74 | } |
82 | 75 | ||
83 | spin_lock_irqsave(&dma_page_lock, flags); | 76 | spin_lock_irqsave(&dma_page_lock, flags); |
84 | for (i = page; i < page + pages; i++) | 77 | bitmap_clear(dma_page, page, pages); |
85 | __clear_bit(i, dma_page); | ||
86 | |||
87 | spin_unlock_irqrestore(&dma_page_lock, flags); | 78 | spin_unlock_irqrestore(&dma_page_lock, flags); |
88 | } | 79 | } |
89 | 80 | ||
diff --git a/arch/blackfin/kernel/time-ts.c b/arch/blackfin/kernel/time-ts.c index f608f02f29a3..cb0a4845339e 100644 --- a/arch/blackfin/kernel/time-ts.c +++ b/arch/blackfin/kernel/time-ts.c | |||
@@ -329,12 +329,6 @@ void bfin_coretmr_clockevent_init(void) | |||
329 | evt->broadcast = smp_timer_broadcast; | 329 | evt->broadcast = smp_timer_broadcast; |
330 | #endif | 330 | #endif |
331 | 331 | ||
332 | |||
333 | #ifdef CONFIG_SMP | ||
334 | evt->broadcast = smp_timer_broadcast; | ||
335 | #endif | ||
336 | |||
337 | |||
338 | evt->name = "bfin_core_timer"; | 332 | evt->name = "bfin_core_timer"; |
339 | evt->rating = 350; | 333 | evt->rating = 350; |
340 | evt->irq = -1; | 334 | evt->irq = -1; |