mirror of
https://github.com/u-boot/u-boot.git
synced 2024-12-02 00:53:29 +08:00
Merge branch 'master' of git://git.denx.de/u-boot-nds32
* 'master' of git://git.denx.de/u-boot-nds32: nds32: asm/io.h: add __iormb __iowmb and inline io support nds32: cache: define ARCH_DMA_MINALIGN for DMA buffer alignment nds32: Use getenv_ulong() in place of getenv(), strtoul
This commit is contained in:
commit
b2b4449aa7
@ -51,4 +51,15 @@ DEFINE_GET_SYS_REG(DCM_CFG);
|
||||
#define DCM_CFG_OFF_DSZ 6 /* D-cache line size */
|
||||
#define DCM_CFG_MSK_DSZ (0x7UL << DCM_CFG_OFF_DSZ)
|
||||
|
||||
/*
|
||||
* The current upper bound for NDS32 L1 data cache line sizes is 32 bytes.
|
||||
* We use that value for aligning DMA buffers unless the board config has
|
||||
* specified an alternate cache line size.
|
||||
*/
|
||||
#ifdef CONFIG_SYS_CACHELINE_SIZE
|
||||
#define ARCH_DMA_MINALIGN CONFIG_SYS_CACHELINE_SIZE
|
||||
#else
|
||||
#define ARCH_DMA_MINALIGN 32
|
||||
#endif
|
||||
|
||||
#endif /* _ASM_CACHE_H */
|
||||
|
@ -98,13 +98,59 @@ extern void __raw_readsl(unsigned int addr, void *data, int longlen);
|
||||
#define __raw_readw(a) __arch_getw(a)
|
||||
#define __raw_readl(a) __arch_getl(a)
|
||||
|
||||
#define writeb(v, a) __arch_putb(v, a)
|
||||
#define writew(v, a) __arch_putw(v, a)
|
||||
#define writel(v, a) __arch_putl(v, a)
|
||||
/*
|
||||
* TODO: The kernel offers some more advanced versions of barriers, it might
|
||||
* have some advantages to use them instead of the simple one here.
|
||||
*/
|
||||
#define dmb() __asm__ __volatile__ ("" : : : "memory")
|
||||
#define __iormb() dmb()
|
||||
#define __iowmb() dmb()
|
||||
|
||||
#define readb(a) __arch_getb(a)
|
||||
#define readw(a) __arch_getw(a)
|
||||
#define readl(a) __arch_getl(a)
|
||||
static inline void writeb(unsigned char val, unsigned char *addr)
|
||||
{
|
||||
__iowmb();
|
||||
__arch_putb(val, addr);
|
||||
}
|
||||
|
||||
static inline void writew(unsigned short val, unsigned short *addr)
|
||||
{
|
||||
__iowmb();
|
||||
__arch_putw(val, addr);
|
||||
|
||||
}
|
||||
|
||||
static inline void writel(unsigned int val, unsigned int *addr)
|
||||
{
|
||||
__iowmb();
|
||||
__arch_putl(val, addr);
|
||||
}
|
||||
|
||||
static inline unsigned char readb(unsigned char *addr)
|
||||
{
|
||||
u8 val;
|
||||
|
||||
val = __arch_getb(addr);
|
||||
__iormb();
|
||||
return val;
|
||||
}
|
||||
|
||||
static inline unsigned short readw(unsigned short *addr)
|
||||
{
|
||||
u16 val;
|
||||
|
||||
val = __arch_getw(addr);
|
||||
__iormb();
|
||||
return val;
|
||||
}
|
||||
|
||||
static inline unsigned int readl(unsigned int *addr)
|
||||
{
|
||||
u32 val;
|
||||
|
||||
val = __arch_getl(addr);
|
||||
__iormb();
|
||||
return val;
|
||||
}
|
||||
|
||||
/*
|
||||
* The compiler seems to be incapable of optimising constants
|
||||
@ -338,20 +384,6 @@ check_signature(unsigned long io_addr, const unsigned char *signature,
|
||||
out:
|
||||
return retval;
|
||||
}
|
||||
|
||||
#elif !defined(readb)
|
||||
|
||||
#define readb(addr) (__readwrite_bug("readb"), 0)
|
||||
#define readw(addr) (__readwrite_bug("readw"), 0)
|
||||
#define readl(addr) (__readwrite_bug("readl"), 0)
|
||||
#define writeb(v, addr) __readwrite_bug("writeb")
|
||||
#define writew(v, addr) __readwrite_bug("writew")
|
||||
#define writel(v, addr) __readwrite_bug("writel")
|
||||
|
||||
#define eth_io_copy_and_sum(a, b, c, d) __readwrite_bug("eth_io_copy_and_sum")
|
||||
|
||||
#define check_signature(io, sig, len) (0)
|
||||
|
||||
#endif /* __mem_pci */
|
||||
|
||||
/*
|
||||
|
@ -50,13 +50,7 @@ ulong monitor_flash_len;
|
||||
#endif
|
||||
static int init_baudrate(void)
|
||||
{
|
||||
char tmp[64]; /* long enough for environment variables */
|
||||
int i = getenv_f("baudrate", tmp, sizeof(tmp));
|
||||
|
||||
gd->bd->bi_baudrate = gd->baudrate = (i > 0)
|
||||
? (int) simple_strtoul(tmp, NULL, 10)
|
||||
: CONFIG_BAUDRATE;
|
||||
|
||||
gd->baudrate = getenv_ulong("baudrate", 10, CONFIG_BAUDRATE);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -400,9 +394,7 @@ void board_init_r(gd_t *id, ulong dest_addr)
|
||||
#endif
|
||||
|
||||
/* Initialize from environment */
|
||||
s = getenv("loadaddr");
|
||||
if (s != NULL)
|
||||
load_addr = simple_strtoul(s, NULL, 16);
|
||||
load_addr = getenv_ulong("loadaddr", 16, load_addr);
|
||||
|
||||
#if defined(CONFIG_CMD_NET)
|
||||
s = getenv("bootfile");
|
||||
|
Loading…
Reference in New Issue
Block a user