Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lliubbo...
authorLinus Torvalds <torvalds@linux-foundation.org>
Sat, 23 Feb 2013 05:20:09 +0000 (21:20 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 23 Feb 2013 05:20:09 +0000 (21:20 -0800)
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

arch/blackfin/include/asm/mem_init.h
arch/blackfin/include/asm/uaccess.h
arch/blackfin/kernel/dma-mapping.c
arch/blackfin/kernel/time-ts.c
arch/blackfin/mach-common/ints-priority.c

index f019e9bcefe9ff1fd211e237fcf509a2d2d5deb6..9b33e7247864c2a14f236fac89ba30e40961c028 100644 (file)
@@ -411,7 +411,7 @@ static struct ddr_config ddr_config_table[] __attribute__((section(".data_l1")))
                .dmc_ddrcfg = 0x00000422,
                .dmc_ddrtr0 = 0x20E0A424,
                .dmc_ddrtr1 = 0x3020079E,
-               .dmc_ddrtr2 = 0x0032020D,
+               .dmc_ddrtr2 = 0x0032050D,
                .dmc_ddrmr  = 0x00000842,
                .dmc_ddrmr1 = 0x4,
        },
index 461bb542e2e8e9c40d3f07118a62f91f62447815..57701c3b8a591b35b60d88807c1d1f479b018423 100644 (file)
@@ -191,6 +191,7 @@ copy_to_user(void __user *to, const void *from, unsigned long n)
                memcpy((void __force *)to, from, n);
        else
                return n;
+       SSYNC();
        return 0;
 }
 
index e7be6532d6a04f00cf7d6d1de5d035e4f3b565a9..df437e52d9df20b9f3369d12a2939a9277687c0d 100644 (file)
@@ -13,6 +13,7 @@
 #include <linux/dma-mapping.h>
 #include <linux/scatterlist.h>
 #include <linux/export.h>
+#include <linux/bitmap.h>
 
 static spinlock_t dma_page_lock;
 static unsigned long *dma_page;
@@ -46,24 +47,17 @@ static inline unsigned int get_pages(size_t size)
 static unsigned long __alloc_dma_pages(unsigned int pages)
 {
        unsigned long ret = 0, flags;
-       int i, count = 0;
+       unsigned long start;
 
        if (dma_initialized == 0)
                dma_alloc_init(_ramend - DMA_UNCACHED_REGION, _ramend);
 
        spin_lock_irqsave(&dma_page_lock, flags);
 
-       for (i = 0; i < dma_pages;) {
-               if (test_bit(i++, dma_page) == 0) {
-                       if (++count == pages) {
-                               while (count--)
-                                       __set_bit(--i, dma_page);
-
-                               ret = dma_base + (i << PAGE_SHIFT);
-                               break;
-                       }
-               } else
-                       count = 0;
+       start = bitmap_find_next_zero_area(dma_page, dma_pages, 0, pages, 0);
+       if (start < dma_pages) {
+               ret = dma_base + (start << PAGE_SHIFT);
+               bitmap_set(dma_page, start, pages);
        }
        spin_unlock_irqrestore(&dma_page_lock, flags);
        return ret;
@@ -73,7 +67,6 @@ static void __free_dma_pages(unsigned long addr, unsigned int pages)
 {
        unsigned long page = (addr - dma_base) >> PAGE_SHIFT;
        unsigned long flags;
-       int i;
 
        if ((page + pages) > dma_pages) {
                printk(KERN_ERR "%s: freeing outside range.\n", __func__);
@@ -81,9 +74,7 @@ static void __free_dma_pages(unsigned long addr, unsigned int pages)
        }
 
        spin_lock_irqsave(&dma_page_lock, flags);
-       for (i = page; i < page + pages; i++)
-               __clear_bit(i, dma_page);
-
+       bitmap_clear(dma_page, page, pages);
        spin_unlock_irqrestore(&dma_page_lock, flags);
 }
 
index f608f02f29a3505dfe4c84055e90e782f2ebb795..cb0a4845339ecf56202cbebbf2f7e620480baeb6 100644 (file)
@@ -329,12 +329,6 @@ void bfin_coretmr_clockevent_init(void)
        evt->broadcast = smp_timer_broadcast;
 #endif
 
-
-#ifdef CONFIG_SMP
-       evt->broadcast = smp_timer_broadcast;
-#endif
-
-
        evt->name = "bfin_core_timer";
        evt->rating = 350;
        evt->irq = -1;
index 83ff311fd6ea413930673fd91adf4a61eefb8fea..6c0c6816a51a1f2c22ef7805d1c26999d1471874 100644 (file)
@@ -1195,6 +1195,7 @@ static struct syscore_ops sec_pm_syscore_ops = {
        .suspend = sec_suspend,
        .resume = sec_resume,
 };
+
 #endif
 #else
 # define bfin_gpio_set_wake NULL
@@ -1596,7 +1597,10 @@ int __init init_arch_irq(void)
        bfin_write_SEC_SCI(1, SEC_CCTL, SEC_CCTL_EN | SEC_CCTL_NMI_EN);
 
        init_software_driven_irq();
+
+#ifdef CONFIG_PM
        register_syscore_ops(&sec_pm_syscore_ops);
+#endif
 
        return 0;
 }