mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-12 13:34:10 +08:00
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
This commit is contained in:
commit
df24eef3e7
@ -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,
|
||||
},
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user