[Blackfin][PATCH] Kill off a bunch of common local prototypes

This commit is contained in:
Aubrey Li 2007-04-05 18:34:06 +08:00
parent 7b7e30aa64
commit c0707ce656
3 changed files with 77 additions and 49 deletions

View File

@ -30,12 +30,7 @@
#include <config.h> #include <config.h>
#include <asm/blackfin.h> #include <asm/blackfin.h>
#include <asm/io.h> #include <asm/io.h>
#include "cache.h"
extern void blackfin_icache_flush_range(const void *, const void *);
extern void blackfin_dcache_flush_range(const void *, const void *);
extern void *memcpy_ASM(void *dest, const void *src, size_t count);
void *dma_memcpy(void *, const void *, size_t);
char *strcpy(char *dest, const char *src) char *strcpy(char *dest, const char *src)
{ {
@ -117,44 +112,7 @@ int strncmp(const char *cs, const char *ct, size_t count)
return __res1; return __res1;
} }
/* static void *dma_memcpy(void *dest, const void *src, size_t count)
* memcpy - Copy one area of memory to another
* @dest: Where to copy to
* @src: Where to copy from
* @count: The size of the area.
*
* You should not use this function to access IO space, use memcpy_toio()
* or memcpy_fromio() instead.
*/
void *memcpy(void *dest, const void *src, size_t count)
{
char *tmp = (char *)dest, *s = (char *)src;
/* L1_ISRAM can only be accessed via dma */
if ((tmp >= (char *)L1_ISRAM) && (tmp < (char *)L1_ISRAM_END)) {
/* L1 is the destination */
dma_memcpy(dest, src, count);
if (icache_status()) {
blackfin_icache_flush_range(src, src + count);
}
} else if ((s >= (char *)L1_ISRAM) && (s < (char *)L1_ISRAM_END)) {
/* L1 is the source */
dma_memcpy(dest, src, count);
if (icache_status()) {
blackfin_icache_flush_range(dest, dest + count);
}
if (dcache_status()) {
blackfin_dcache_flush_range(dest, dest + count);
}
} else {
memcpy_ASM(dest, src, count);
}
return dest;
}
void *dma_memcpy(void *dest, const void *src, size_t count)
{ {
*pMDMA_D0_IRQ_STATUS = DMA_DONE | DMA_ERR; *pMDMA_D0_IRQ_STATUS = DMA_DONE | DMA_ERR;
@ -188,3 +146,40 @@ void *dma_memcpy(void *dest, const void *src, size_t count)
src += count; src += count;
return dest; return dest;
} }
/*
* memcpy - Copy one area of memory to another
* @dest: Where to copy to
* @src: Where to copy from
* @count: The size of the area.
*
* You should not use this function to access IO space, use memcpy_toio()
* or memcpy_fromio() instead.
*/
extern void *memcpy_ASM(void *dest, const void *src, size_t count);
void *memcpy(void *dest, const void *src, size_t count)
{
char *tmp = (char *) dest, *s = (char *) src;
if (dcache_status()) {
blackfin_dcache_flush_range(src, src+count);
}
/* L1_ISRAM can only be accessed via dma */
if ((tmp >= (char *)L1_ISRAM) && (tmp < (char *)L1_ISRAM_END)) {
/* L1 is the destination */
dma_memcpy(dest,src,count);
} else if ((s >= (char *)L1_ISRAM) && (s < (char *)L1_ISRAM_END)) {
/* L1 is the source */
dma_memcpy(dest,src,count);
if (icache_status()) {
blackfin_icache_flush_range(dest, dest+count);
}
if (dcache_status()) {
blackfin_dcache_invalidate_range(dest, dest+count);
}
} else {
memcpy_ASM(dest,src,count);
}
return dest;
}

View File

@ -29,9 +29,7 @@
#include <config.h> #include <config.h>
#include <common.h> #include <common.h>
#include <asm/blackfin.h> #include <asm/blackfin.h>
#include "cache.h"
extern void blackfin_icache_flush_range(unsigned long, unsigned long);
extern void blackfin_dcache_flush_range(unsigned long, unsigned long);
void flush_cache(unsigned long dummy1, unsigned long dummy2) void flush_cache(unsigned long dummy1, unsigned long dummy2)
{ {
@ -43,9 +41,9 @@ void flush_cache(unsigned long dummy1, unsigned long dummy2)
return; return;
if (icache_status()) if (icache_status())
blackfin_icache_flush_range(dummy1, dummy1 + dummy2); blackfin_icache_flush_range((void*)dummy1, (void*)(dummy1 + dummy2));
if (dcache_status()) if (dcache_status())
blackfin_dcache_flush_range(dummy1, dummy1 + dummy2); blackfin_dcache_flush_range((void*)dummy1, (void*)(dummy1 + dummy2));
return; return;
} }

35
lib_blackfin/cache.h Normal file
View File

@ -0,0 +1,35 @@
/*
* U-boot - prototypes for cache handling functions.
*
* Copyright (c) 2005-2007 Analog Devices Inc.
*
* (C) Copyright 2000-2004
* Wolfgang Denk, DENX Software Engineering, wd@denx.de.
*
* See file CREDITS for list of people who contributed to this
* project.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see the file COPYING, or write
* to the Free Software Foundation, Inc.,
* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef _LIB_BLACKFIN_CACHE_H_
#define _LIB_BLACKFIN_CACHE_H_
extern void blackfin_icache_flush_range(const void *, const void *);
extern void blackfin_dcache_flush_range(const void *, const void *);
extern void blackfin_dcache_invalidate_range(const void *, const void *);
#endif