mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-26 06:33:19 -04:00
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/blackfin-2.6
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/blackfin-2.6: (74 commits)
Blackfin serial driver: pending a unique anomaly id, tie the break flood issue to ANOMALY_05000230
blackfin enable arbitary speed serial setting
Blackfin arch: Remove cruft - CONFIG_DEBUG_SERIAL_EARLY_INIT and DEBUG_KERNEL_START
Blackfin arch: fix typo in register name
Blackfin arch: trim the Blackfin arch MAINTAINERS list
Blackfin arch: fix bug libstdc++ calling writev with an iovec containing { NULL, 0 } fails on Blackfin
Blackfin arch: Export strcpy - occasionally get module link failures otherwise
Blackfin arch: the load address is not safe to point to as a workaround for ANOMALY 05000281
Blackfin arch: show_mem can not be marked as init, since it is called during OOM condition
Blackfin arch: flush/inv the correct range when using write back cache and fix bugs find by dmacopy
Blackfin arch: update kgdb patch
Blackfin arch: Comply with revised Anomaly Workarounds for BF533 05000311 and BF561 05000323
Blackfin arch: Print out debug info, as early as possible
Blackfin arch: Enable earlyprintk earlier - so any error after our interrupt tables are set up will print out
Blackfin arch: fix endless loop bug when a double fault happens
Blackfin arch: Initial patch to add earlyprintk support
Blackfin arch: add TWIx_REGBASE and SPIx_REGBASE to specific CPU header files, use the new REGBASE for board platform resources
Blackfin arch: modify the insX/outsX and dma_insX/dma_outsX to be compatible with other archs
Blackfin arch: add more common defines for output sections
Blackfin arch: cleanup IO and DMA_IO API function definitions according to other arches
...
This commit is contained in:
commit
1ef3e36251
116 changed files with 6069 additions and 4804 deletions
|
|
@ -21,8 +21,6 @@
|
|||
#ifndef _SPI_CHANNEL_H_
|
||||
#define _SPI_CHANNEL_H_
|
||||
|
||||
#define SPI0_REGBASE 0xffc00500
|
||||
|
||||
#define SPI_READ 0
|
||||
#define SPI_WRITE 1
|
||||
|
||||
|
|
|
|||
|
|
@ -11,78 +11,57 @@
|
|||
#define HI(con32) (((con32) >> 16) & 0xFFFF)
|
||||
#define hi(con32) (((con32) >> 16) & 0xFFFF)
|
||||
|
||||
#include <asm/mach/blackfin.h>
|
||||
#include <asm/bfin-global.h>
|
||||
#include <asm/mach/anomaly.h>
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
/* SSYNC implementation for C file */
|
||||
#if defined(ANOMALY_05000312) && defined(ANOMALY_05000244)
|
||||
static inline void SSYNC (void)
|
||||
static inline void SSYNC(void)
|
||||
{
|
||||
int _tmp;
|
||||
__asm__ __volatile__ ("cli %0;\n\t"
|
||||
"nop;nop;\n\t"
|
||||
"ssync;\n\t"
|
||||
"sti %0;\n\t"
|
||||
:"=d"(_tmp):);
|
||||
if (ANOMALY_05000312)
|
||||
__asm__ __volatile__(
|
||||
"cli %0;"
|
||||
"nop;"
|
||||
"nop;"
|
||||
"ssync;"
|
||||
"sti %0;"
|
||||
: "=d" (_tmp)
|
||||
);
|
||||
else if (ANOMALY_05000244)
|
||||
__asm__ __volatile__(
|
||||
"nop;"
|
||||
"nop;"
|
||||
"nop;"
|
||||
"ssync;"
|
||||
);
|
||||
else
|
||||
__asm__ __volatile__("ssync;");
|
||||
}
|
||||
#elif defined(ANOMALY_05000312) && !defined(ANOMALY_05000244)
|
||||
static inline void SSYNC (void)
|
||||
{
|
||||
int _tmp;
|
||||
__asm__ __volatile__ ("cli %0;\n\t"
|
||||
"ssync;\n\t"
|
||||
"sti %0;\n\t"
|
||||
:"=d"(_tmp):);
|
||||
}
|
||||
#elif !defined(ANOMALY_05000312) && defined(ANOMALY_05000244)
|
||||
static inline void SSYNC (void)
|
||||
{
|
||||
__asm__ __volatile__ ("nop; nop; nop;\n\t"
|
||||
"ssync;\n\t"
|
||||
::);
|
||||
}
|
||||
#elif !defined(ANOMALY_05000312) && !defined(ANOMALY_05000244)
|
||||
static inline void SSYNC (void)
|
||||
{
|
||||
__asm__ __volatile__ ("ssync;\n\t");
|
||||
}
|
||||
#endif
|
||||
|
||||
/* CSYNC implementation for C file */
|
||||
#if defined(ANOMALY_05000312) && defined(ANOMALY_05000244)
|
||||
static inline void CSYNC (void)
|
||||
static inline void CSYNC(void)
|
||||
{
|
||||
int _tmp;
|
||||
__asm__ __volatile__ ("cli %0;\n\t"
|
||||
"nop;nop;\n\t"
|
||||
"csync;\n\t"
|
||||
"sti %0;\n\t"
|
||||
:"=d"(_tmp):);
|
||||
if (ANOMALY_05000312)
|
||||
__asm__ __volatile__(
|
||||
"cli %0;"
|
||||
"nop;"
|
||||
"nop;"
|
||||
"csync;"
|
||||
"sti %0;"
|
||||
: "=d" (_tmp)
|
||||
);
|
||||
else if (ANOMALY_05000244)
|
||||
__asm__ __volatile__(
|
||||
"nop;"
|
||||
"nop;"
|
||||
"nop;"
|
||||
"csync;"
|
||||
);
|
||||
else
|
||||
__asm__ __volatile__("csync;");
|
||||
}
|
||||
#elif defined(ANOMALY_05000312) && !defined(ANOMALY_05000244)
|
||||
static inline void CSYNC (void)
|
||||
{
|
||||
int _tmp;
|
||||
__asm__ __volatile__ ("cli %0;\n\t"
|
||||
"csync;\n\t"
|
||||
"sti %0;\n\t"
|
||||
:"=d"(_tmp):);
|
||||
}
|
||||
#elif !defined(ANOMALY_05000312) && defined(ANOMALY_05000244)
|
||||
static inline void CSYNC (void)
|
||||
{
|
||||
__asm__ __volatile__ ("nop; nop; nop;\n\t"
|
||||
"ssync;\n\t"
|
||||
::);
|
||||
}
|
||||
#elif !defined(ANOMALY_05000312) && !defined(ANOMALY_05000244)
|
||||
static inline void CSYNC (void)
|
||||
{
|
||||
__asm__ __volatile__ ("csync;\n\t");
|
||||
}
|
||||
#endif
|
||||
|
||||
#else /* __ASSEMBLY__ */
|
||||
|
||||
|
|
@ -91,19 +70,15 @@ static inline void CSYNC (void)
|
|||
#define ssync(x) SSYNC(x)
|
||||
#define csync(x) CSYNC(x)
|
||||
|
||||
#if defined(ANOMALY_05000312) && defined(ANOMALY_05000244)
|
||||
#if ANOMALY_05000312
|
||||
#define SSYNC(scratch) cli scratch; nop; nop; SSYNC; sti scratch;
|
||||
#define CSYNC(scratch) cli scratch; nop; nop; CSYNC; sti scratch;
|
||||
|
||||
#elif defined(ANOMALY_05000312) && !defined(ANOMALY_05000244)
|
||||
#define SSYNC(scratch) cli scratch; nop; nop; SSYNC; sti scratch;
|
||||
#define CSYNC(scratch) cli scratch; nop; nop; CSYNC; sti scratch;
|
||||
|
||||
#elif !defined(ANOMALY_05000312) && defined(ANOMALY_05000244)
|
||||
#elif ANOMALY_05000244
|
||||
#define SSYNC(scratch) nop; nop; nop; SSYNC;
|
||||
#define CSYNC(scratch) nop; nop; nop; CSYNC;
|
||||
|
||||
#elif !defined(ANOMALY_05000312) && !defined(ANOMALY_05000244)
|
||||
#else
|
||||
#define SSYNC(scratch) SSYNC;
|
||||
#define CSYNC(scratch) CSYNC;
|
||||
|
||||
|
|
@ -111,4 +86,7 @@ static inline void CSYNC (void)
|
|||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
|
||||
#include <asm/mach/blackfin.h>
|
||||
#include <asm/bfin-global.h>
|
||||
|
||||
#endif /* _BLACKFIN_H_ */
|
||||
|
|
|
|||
|
|
@ -48,9 +48,9 @@ extern void blackfin_dflush_page(void *);
|
|||
|
||||
static inline void flush_icache_range(unsigned start, unsigned end)
|
||||
{
|
||||
#if defined(CONFIG_BLKFIN_DCACHE) && defined(CONFIG_BLKFIN_CACHE)
|
||||
#if defined(CONFIG_BFIN_DCACHE) && defined(CONFIG_BFIN_ICACHE)
|
||||
|
||||
# if defined(CONFIG_BLKFIN_WT)
|
||||
# if defined(CONFIG_BFIN_WT)
|
||||
blackfin_icache_flush_range((start), (end));
|
||||
# else
|
||||
blackfin_icache_dcache_flush_range((start), (end));
|
||||
|
|
@ -58,10 +58,10 @@ static inline void flush_icache_range(unsigned start, unsigned end)
|
|||
|
||||
#else
|
||||
|
||||
# if defined(CONFIG_BLKFIN_CACHE)
|
||||
# if defined(CONFIG_BFIN_ICACHE)
|
||||
blackfin_icache_flush_range((start), (end));
|
||||
# endif
|
||||
# if defined(CONFIG_BLKFIN_DCACHE)
|
||||
# if defined(CONFIG_BFIN_DCACHE)
|
||||
blackfin_dcache_flush_range((start), (end));
|
||||
# endif
|
||||
|
||||
|
|
@ -74,12 +74,12 @@ do { memcpy(dst, src, len); \
|
|||
} while (0)
|
||||
#define copy_from_user_page(vma, page, vaddr, dst, src, len) memcpy(dst, src, len)
|
||||
|
||||
#if defined(CONFIG_BLKFIN_DCACHE)
|
||||
#if defined(CONFIG_BFIN_DCACHE)
|
||||
# define invalidate_dcache_range(start,end) blackfin_dcache_invalidate_range((start), (end))
|
||||
#else
|
||||
# define invalidate_dcache_range(start,end) do { } while (0)
|
||||
#endif
|
||||
#if defined(CONFIG_BLKFIN_DCACHE) && defined(CONFIG_BLKFIN_WB)
|
||||
#if defined(CONFIG_BFIN_DCACHE) && defined(CONFIG_BFIN_WB)
|
||||
# define flush_dcache_range(start,end) blackfin_dcache_flush_range((start), (end))
|
||||
# define flush_dcache_page(page) blackfin_dflush_page(page_address(page))
|
||||
#else
|
||||
|
|
@ -87,4 +87,4 @@ do { memcpy(dst, src, len); \
|
|||
# define flush_dcache_page(page) do { } while (0)
|
||||
#endif
|
||||
|
||||
#endif /* _BLACKFIN_CACHEFLUSH_H */
|
||||
#endif /* _BLACKFIN_ICACHEFLUSH_H */
|
||||
|
|
|
|||
|
|
@ -1,17 +1,100 @@
|
|||
/************************************************************************
|
||||
/*
|
||||
* File: include/asm-blackfin/cplb.h
|
||||
* Based on: include/asm-blackfin/mach-bf537/bf537.h
|
||||
* Author: Robin Getz <rgetz@blackfin.uclinux.org>
|
||||
*
|
||||
* cplb.h
|
||||
* Created: 2000
|
||||
* Description: Common CPLB definitions for CPLB init
|
||||
*
|
||||
* (c) Copyright 2002-2003 Analog Devices, Inc. All rights reserved.
|
||||
* Modified:
|
||||
* Copyright 2004-2007 Analog Devices Inc.
|
||||
*
|
||||
************************************************************************/
|
||||
|
||||
/* Defines necessary for cplb initialisation routines. */
|
||||
* Bugs: Enter bugs at http://blackfin.uclinux.org/
|
||||
*
|
||||
* 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 _CPLB_H
|
||||
#define _CPLB_H
|
||||
|
||||
# include <asm/blackfin.h>
|
||||
#include <asm/blackfin.h>
|
||||
#include <asm/mach/anomaly.h>
|
||||
|
||||
#define SDRAM_IGENERIC (CPLB_L1_CHBL | CPLB_USER_RD | CPLB_VALID | CPLB_PORTPRIO)
|
||||
#define SDRAM_IKERNEL (SDRAM_IGENERIC | CPLB_LOCK)
|
||||
#define L1_IMEMORY ( CPLB_USER_RD | CPLB_VALID | CPLB_LOCK)
|
||||
#define SDRAM_INON_CHBL ( CPLB_USER_RD | CPLB_VALID)
|
||||
|
||||
/*Use the menuconfig cache policy here - CONFIG_BFIN_WT/CONFIG_BFIN_WB*/
|
||||
|
||||
#if ANOMALY_05000158
|
||||
#define ANOMALY_05000158_WORKAROUND 0x200
|
||||
#else
|
||||
#define ANOMALY_05000158_WORKAROUND 0x0
|
||||
#endif
|
||||
|
||||
#define CPLB_COMMON (CPLB_DIRTY | CPLB_SUPV_WR | CPLB_USER_WR | CPLB_USER_RD | CPLB_VALID | ANOMALY_05000158_WORKAROUND)
|
||||
|
||||
#ifdef CONFIG_BFIN_WB /*Write Back Policy */
|
||||
#define SDRAM_DGENERIC (CPLB_L1_CHBL | CPLB_COMMON)
|
||||
#else /*Write Through */
|
||||
#define SDRAM_DGENERIC (CPLB_L1_CHBL | CPLB_WT | CPLB_L1_AOW | CPLB_COMMON)
|
||||
#endif
|
||||
|
||||
#define L1_DMEMORY (CPLB_LOCK | CPLB_COMMON)
|
||||
#define L2_MEMORY (CPLB_COMMON)
|
||||
#define SDRAM_DNON_CHBL (CPLB_COMMON)
|
||||
#define SDRAM_EBIU (CPLB_COMMON)
|
||||
#define SDRAM_OOPS (CPLB_VALID | ANOMALY_05000158_WORKAROUND | CPLB_LOCK | CPLB_DIRTY)
|
||||
|
||||
#define SIZE_1K 0x00000400 /* 1K */
|
||||
#define SIZE_4K 0x00001000 /* 4K */
|
||||
#define SIZE_1M 0x00100000 /* 1M */
|
||||
#define SIZE_4M 0x00400000 /* 4M */
|
||||
|
||||
#define MAX_CPLBS (16 * 2)
|
||||
|
||||
#define ASYNC_MEMORY_CPLB_COVERAGE ((ASYNC_BANK0_SIZE + ASYNC_BANK1_SIZE + \
|
||||
ASYNC_BANK2_SIZE + ASYNC_BANK3_SIZE) / SIZE_4M)
|
||||
|
||||
/*
|
||||
* Number of required data CPLB switchtable entries
|
||||
* MEMSIZE / 4 (we mostly install 4M page size CPLBs
|
||||
* approx 16 for smaller 1MB page size CPLBs for allignment purposes
|
||||
* 1 for L1 Data Memory
|
||||
* possibly 1 for L2 Data Memory
|
||||
* 1 for CONFIG_DEBUG_HUNT_FOR_ZERO
|
||||
* 1 for ASYNC Memory
|
||||
*/
|
||||
|
||||
|
||||
#define MAX_SWITCH_D_CPLBS (((CONFIG_MEM_SIZE / 4) + 16 + 1 + 1 + 1 \
|
||||
+ ASYNC_MEMORY_CPLB_COVERAGE) * 2)
|
||||
|
||||
/*
|
||||
* Number of required instruction CPLB switchtable entries
|
||||
* MEMSIZE / 4 (we mostly install 4M page size CPLBs
|
||||
* approx 12 for smaller 1MB page size CPLBs for allignment purposes
|
||||
* 1 for L1 Instruction Memory
|
||||
* possibly 1 for L2 Instruction Memory
|
||||
* 1 for CONFIG_DEBUG_HUNT_FOR_ZERO
|
||||
*/
|
||||
|
||||
#define MAX_SWITCH_I_CPLBS (((CONFIG_MEM_SIZE / 4) + 12 + 1 + 1 + 1) * 2)
|
||||
|
||||
|
||||
#define CPLB_ENABLE_ICACHE_P 0
|
||||
#define CPLB_ENABLE_DCACHE_P 1
|
||||
|
|
@ -39,8 +122,6 @@
|
|||
#define CPLB_DEF_CACHE CPLB_L1_CHBL | CPLB_WT
|
||||
#define CPLB_CACHE_ENABLED CPLB_L1_CHBL | CPLB_DIRTY
|
||||
|
||||
#define CPLB_ALL_ACCESS CPLB_SUPV_WR | CPLB_USER_RD | CPLB_USER_WR
|
||||
|
||||
#define CPLB_I_PAGE_MGMT CPLB_LOCK | CPLB_VALID
|
||||
#define CPLB_D_PAGE_MGMT CPLB_LOCK | CPLB_ALL_ACCESS | CPLB_VALID
|
||||
#define CPLB_DNOCACHE CPLB_ALL_ACCESS | CPLB_VALID
|
||||
|
|
|
|||
|
|
@ -152,6 +152,7 @@ struct dma_channel {
|
|||
/* functions to set register mode */
|
||||
void set_dma_start_addr(unsigned int channel, unsigned long addr);
|
||||
void set_dma_next_desc_addr(unsigned int channel, unsigned long addr);
|
||||
void set_dma_curr_desc_addr(unsigned int channel, unsigned long addr);
|
||||
void set_dma_x_count(unsigned int channel, unsigned short x_count);
|
||||
void set_dma_x_modify(unsigned int channel, short x_modify);
|
||||
void set_dma_y_count(unsigned int channel, unsigned short y_count);
|
||||
|
|
@ -159,6 +160,7 @@ void set_dma_y_modify(unsigned int channel, short y_modify);
|
|||
void set_dma_config(unsigned int channel, unsigned short config);
|
||||
unsigned short set_bfin_dma_config(char direction, char flow_mode,
|
||||
char intr_mode, char dma_mode, char width);
|
||||
void set_dma_curr_addr(unsigned int channel, unsigned long addr);
|
||||
|
||||
/* get curr status for polling */
|
||||
unsigned short get_dma_curr_irqstat(unsigned int channel);
|
||||
|
|
|
|||
28
include/asm-blackfin/early_printk.h
Normal file
28
include/asm-blackfin/early_printk.h
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
/*
|
||||
* File: include/asm-blackfin/early_printk.h
|
||||
* Author: Robin Getz <rgetz@blackfin.uclinux.org
|
||||
*
|
||||
* Created: 14Aug2007
|
||||
* Description: function prototpyes for early printk
|
||||
*
|
||||
* Modified:
|
||||
* Copyright 2004-2007 Analog Devices Inc.
|
||||
*
|
||||
* Bugs: Enter bugs at http://blackfin.uclinux.org/
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifdef CONFIG_EARLY_PRINTK
|
||||
extern int setup_early_printk(char *);
|
||||
#else
|
||||
#define setup_early_printk(fmt) do { } while (0)
|
||||
#endif /* CONFIG_EARLY_PRINTK */
|
||||
|
|
@ -144,6 +144,24 @@
|
|||
|
||||
#ifdef BF533_FAMILY
|
||||
#define MAX_BLACKFIN_GPIOS 16
|
||||
|
||||
#define GPIO_PF0 0
|
||||
#define GPIO_PF1 1
|
||||
#define GPIO_PF2 2
|
||||
#define GPIO_PF3 3
|
||||
#define GPIO_PF4 4
|
||||
#define GPIO_PF5 5
|
||||
#define GPIO_PF6 6
|
||||
#define GPIO_PF7 7
|
||||
#define GPIO_PF8 8
|
||||
#define GPIO_PF9 9
|
||||
#define GPIO_PF10 10
|
||||
#define GPIO_PF11 11
|
||||
#define GPIO_PF12 12
|
||||
#define GPIO_PF13 13
|
||||
#define GPIO_PF14 14
|
||||
#define GPIO_PF15 15
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef BF537_FAMILY
|
||||
|
|
@ -421,6 +439,19 @@ unsigned short gpio_get_value(unsigned short gpio);
|
|||
void gpio_direction_input(unsigned short gpio);
|
||||
void gpio_direction_output(unsigned short gpio);
|
||||
|
||||
#include <asm-generic/gpio.h> /* cansleep wrappers */
|
||||
#include <asm/irq.h>
|
||||
|
||||
static inline int gpio_to_irq(unsigned gpio)
|
||||
{
|
||||
return (gpio + GPIO_IRQ_BASE);
|
||||
}
|
||||
|
||||
static inline int irq_to_gpio(unsigned irq)
|
||||
{
|
||||
return (irq - GPIO_IRQ_BASE);
|
||||
}
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
|
||||
#endif /* __ARCH_BLACKFIN_GPIO_H__ */
|
||||
|
|
|
|||
|
|
@ -115,21 +115,21 @@ static inline unsigned int readl(const volatile void __iomem *addr)
|
|||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
extern void outsb(void __iomem *port, const void *addr, unsigned short count);
|
||||
extern void outsw(void __iomem *port, const void *addr, unsigned short count);
|
||||
extern void outsl(void __iomem *port, const void *addr, unsigned short count);
|
||||
extern void outsb(unsigned long port, const void *addr, unsigned long count);
|
||||
extern void outsw(unsigned long port, const void *addr, unsigned long count);
|
||||
extern void outsl(unsigned long port, const void *addr, unsigned long count);
|
||||
|
||||
extern void insb(const void __iomem *port, void *addr, unsigned short count);
|
||||
extern void insw(const void __iomem *port, void *addr, unsigned short count);
|
||||
extern void insl(const void __iomem *port, void *addr, unsigned short count);
|
||||
extern void insb(unsigned long port, void *addr, unsigned long count);
|
||||
extern void insw(unsigned long port, void *addr, unsigned long count);
|
||||
extern void insl(unsigned long port, void *addr, unsigned long count);
|
||||
|
||||
extern void dma_outsb(void __iomem *port, const void *addr, unsigned short count);
|
||||
extern void dma_outsw(void __iomem *port, const void *addr, unsigned short count);
|
||||
extern void dma_outsl(void __iomem *port, const void *addr, unsigned short count);
|
||||
extern void dma_outsb(unsigned long port, const void *addr, unsigned short count);
|
||||
extern void dma_outsw(unsigned long port, const void *addr, unsigned short count);
|
||||
extern void dma_outsl(unsigned long port, const void *addr, unsigned short count);
|
||||
|
||||
extern void dma_insb(const void __iomem *port, void *addr, unsigned short count);
|
||||
extern void dma_insw(const void __iomem *port, void *addr, unsigned short count);
|
||||
extern void dma_insl(const void __iomem *port, void *addr, unsigned short count);
|
||||
extern void dma_insb(unsigned long port, void *addr, unsigned short count);
|
||||
extern void dma_insw(unsigned long port, void *addr, unsigned short count);
|
||||
extern void dma_insl(unsigned long port, void *addr, unsigned short count);
|
||||
|
||||
/*
|
||||
* Map some physical address range into the kernel address space.
|
||||
|
|
|
|||
|
|
@ -47,8 +47,13 @@
|
|||
#define TIOCSBRK 0x5427 /* BSD compatibility */
|
||||
#define TIOCCBRK 0x5428 /* BSD compatibility */
|
||||
#define TIOCGSID 0x5429 /* Return the session ID of FD */
|
||||
#define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */
|
||||
#define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */
|
||||
#define TCGETS2 _IOR('T', 0x2A, struct termios2)
|
||||
#define TCSETS2 _IOW('T', 0x2B, struct termios2)
|
||||
#define TCSETSW2 _IOW('T', 0x2C, struct termios2)
|
||||
#define TCSETSF2 _IOW('T', 0x2D, struct termios2)
|
||||
/* Get Pty Number (of pty-mux device) */
|
||||
#define TIOCGPTN _IOR('T', 0x30, unsigned int)
|
||||
#define TIOCSPTLCK _IOW('T', 0x31, int) /* Lock/unlock Pty */
|
||||
|
||||
#define FIONCLEX 0x5450 /* these numbers need to be adjusted. */
|
||||
#define FIOCLEX 0x5451
|
||||
|
|
|
|||
|
|
@ -1,13 +1,15 @@
|
|||
#ifndef _IRQ_HANDLER_H
|
||||
#define _IRQ_HANDLER_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/linkage.h>
|
||||
|
||||
/* BASE LEVEL interrupt handler routines */
|
||||
asmlinkage void evt_emulation(void);
|
||||
asmlinkage void evt_exception(void);
|
||||
asmlinkage void trap(void);
|
||||
asmlinkage void evt_ivhw(void);
|
||||
asmlinkage void evt_timer(void);
|
||||
asmlinkage void evt_evt2(void);
|
||||
asmlinkage void evt_nmi(void);
|
||||
asmlinkage void evt_evt7(void);
|
||||
asmlinkage void evt_evt8(void);
|
||||
asmlinkage void evt_evt9(void);
|
||||
|
|
@ -18,5 +20,14 @@ asmlinkage void evt_evt13(void);
|
|||
asmlinkage void evt_soft_int1(void);
|
||||
asmlinkage void evt_system_call(void);
|
||||
asmlinkage void init_exception_buff(void);
|
||||
asmlinkage void trap_c(struct pt_regs *fp);
|
||||
asmlinkage void ex_replaceable(void);
|
||||
asmlinkage void early_trap(void);
|
||||
|
||||
extern void *ex_table[];
|
||||
extern void return_from_exception(void);
|
||||
|
||||
extern int bfin_request_exception(unsigned int exception, void (*handler)(void));
|
||||
extern int bfin_free_exception(unsigned int exception, void (*handler)(void));
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -179,5 +179,6 @@ enum regnames {
|
|||
#define STATDA1 0x80
|
||||
|
||||
extern void kgdb_print(const char *fmt, ...);
|
||||
extern void init_kgdb_uart(void);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
41
include/asm-blackfin/mach-bf527/anomaly.h
Normal file
41
include/asm-blackfin/mach-bf527/anomaly.h
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
/*
|
||||
* File: include/asm-blackfin/mach-bf527/anomaly.h
|
||||
* Bugs: Enter bugs at http://blackfin.uclinux.org/
|
||||
*
|
||||
* Copyright (C) 2004-2007 Analog Devices Inc.
|
||||
* Licensed under the GPL-2 or later.
|
||||
*/
|
||||
|
||||
/* This file shoule be up to date with:
|
||||
* - Revision A, May 30, 2007; ADSP-BF527 Blackfin Processor Anomaly List
|
||||
*/
|
||||
|
||||
#ifndef _MACH_ANOMALY_H_
|
||||
#define _MACH_ANOMALY_H_
|
||||
|
||||
/* Multi-Issue Instruction with dsp32shiftimm in slot1 and P-reg Store in slot2 Not Supported */
|
||||
#define ANOMALY_05000074 (1)
|
||||
/* DMA_RUN Bit Is Not Valid after a Peripheral Receive Channel DMA Stops */
|
||||
#define ANOMALY_05000119 (1)
|
||||
/* Rx.H Cannot Be Used to Access 16-bit System MMR Registers */
|
||||
#define ANOMALY_05000122 (1)
|
||||
/* Spurious Hardware Error from an Access in the Shadow of a Conditional Branch */
|
||||
#define ANOMALY_05000245 (1)
|
||||
/* Sensitivity To Noise with Slow Input Edge Rates on External SPORT TX and RX Clocks */
|
||||
#define ANOMALY_05000265 (1)
|
||||
/* Memory-To-Memory DMA Source/Destination Descriptors Must Be in Same Memory Space */
|
||||
#define ANOMALY_05000301 (1)
|
||||
/* Errors When SSYNC, CSYNC, or Loads to LT, LB and LC Registers Are Interrupted */
|
||||
#define ANOMALY_05000312 (1)
|
||||
/* Incorrect Access of OTP_STATUS During otp_write() Function */
|
||||
#define ANOMALY_05000328 (1)
|
||||
/* Disallowed Configuration Prevents Subsequent Allowed Configuration on Host DMA Port */
|
||||
#define ANOMALY_05000337 (1)
|
||||
/* TWI Does Not Operate Correctly Under Certain Signal Termination Conditions */
|
||||
#define ANOMALY_05000342 (1)
|
||||
/* Boot ROM Kernel Incorrectly Alters Reset Value of USB Register */
|
||||
#define ANOMALY_05000347 (1)
|
||||
|
||||
/* Anomalies that don't exist on this proc */
|
||||
#define ANOMALY_05000323 (0)
|
||||
#endif
|
||||
|
|
@ -102,6 +102,7 @@
|
|||
|
||||
|
||||
/* SPI Controller (0xFFC00500 - 0xFFC005FF) */
|
||||
#define SPI0_REGBASE 0xFFC00500
|
||||
#define SPI_CTL 0xFFC00500 /* SPI Control Register */
|
||||
#define SPI_FLG 0xFFC00504 /* SPI Flag register */
|
||||
#define SPI_STAT 0xFFC00508 /* SPI Status register */
|
||||
|
|
@ -480,6 +481,7 @@
|
|||
|
||||
|
||||
/* Two-Wire Interface (0xFFC01400 - 0xFFC014FF) */
|
||||
#define TWI0_REGBASE 0xFFC01400
|
||||
#define TWI_CLKDIV 0xFFC01400 /* Serial Clock Divider Register */
|
||||
#define TWI_CONTROL 0xFFC01404 /* TWI Control Register */
|
||||
#define TWI_SLAVE_CTL 0xFFC01408 /* Slave Mode Control Register */
|
||||
|
|
|
|||
|
|
@ -1,247 +1,259 @@
|
|||
/*
|
||||
* File: include/asm-blackfin/mach-bf533/anomaly.h
|
||||
* Based on:
|
||||
* Author:
|
||||
* File: include/asm-blackfin/mach-bf533/anomaly.h
|
||||
* Bugs: Enter bugs at http://blackfin.uclinux.org/
|
||||
*
|
||||
* Created:
|
||||
* Description:
|
||||
*
|
||||
* Rev:
|
||||
*
|
||||
* Modified:
|
||||
*
|
||||
* Bugs: Enter bugs at http://blackfin.uclinux.org/
|
||||
*
|
||||
* 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, 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; see the file COPYING.
|
||||
* If not, write to the Free Software Foundation,
|
||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
* Copyright (C) 2004-2007 Analog Devices Inc.
|
||||
* Licensed under the GPL-2 or later.
|
||||
*/
|
||||
|
||||
/* This file shoule be up to date with:
|
||||
* - Revision U, May 17, 2006; ADSP-BF533 Blackfin Processor Anomaly List
|
||||
* - Revision Y, May 17, 2006; ADSP-BF532 Blackfin Processor Anomaly List
|
||||
* - Revision T, May 17, 2006; ADSP-BF531 Blackfin Processor Anomaly List
|
||||
* - Revision X, March 23, 2007; ADSP-BF533 Blackfin Processor Anomaly List
|
||||
* - Revision AB, March 23, 2007; ADSP-BF532 Blackfin Processor Anomaly List
|
||||
* - Revision W, March 23, 2007; ADSP-BF531 Blackfin Processor Anomaly List
|
||||
*/
|
||||
|
||||
#ifndef _MACH_ANOMALY_H_
|
||||
#define _MACH_ANOMALY_H_
|
||||
|
||||
/* We do not support 0.1 or 0.2 silicon - sorry */
|
||||
#if (defined(CONFIG_BF_REV_0_1) || defined(CONFIG_BF_REV_0_2))
|
||||
#error Kernel will not work on BF533 Version 0.1 or 0.2
|
||||
#if __SILICON_REVISION__ < 3
|
||||
# error Kernel will not work on BF533 silicon version 0.0, 0.1, or 0.2
|
||||
#endif
|
||||
|
||||
/* Issues that are common to 0.5, 0.4, and 0.3 silicon */
|
||||
#if (defined(CONFIG_BF_REV_0_5) || defined(CONFIG_BF_REV_0_4) \
|
||||
|| defined(CONFIG_BF_REV_0_3))
|
||||
#define ANOMALY_05000074 /* A multi issue instruction with dsp32shiftimm in
|
||||
slot1 and store of a P register in slot 2 is not
|
||||
supported */
|
||||
#define ANOMALY_05000105 /* Watchpoint Status Register (WPSTAT) bits are set on
|
||||
every corresponding match */
|
||||
#define ANOMALY_05000119 /* DMA_RUN bit is not valid after a Peripheral Receive
|
||||
Channel DMA stops */
|
||||
#define ANOMALY_05000122 /* Rx.H can not be used to access 16-bit System MMR
|
||||
registers. */
|
||||
#define ANOMALY_05000166 /* PPI Data Lengths Between 8 and 16 do not zero out
|
||||
upper bits*/
|
||||
#define ANOMALY_05000167 /* Turning Serial Ports on With External Frame Syncs */
|
||||
#define ANOMALY_05000180 /* PPI_DELAY not functional in PPI modes with 0 frame
|
||||
syncs */
|
||||
#define ANOMALY_05000208 /* VSTAT status bit in PLL_STAT register is not
|
||||
functional */
|
||||
#define ANOMALY_05000219 /* NMI event at boot time results in unpredictable
|
||||
state */
|
||||
#define ANOMALY_05000229 /* SPI Slave Boot Mode modifies registers */
|
||||
#define ANOMALY_05000272 /* Certain data cache write through modes fail for
|
||||
VDDint <=0.9V */
|
||||
#define ANOMALY_05000273 /* Writes to Synchronous SDRAM memory may be lost */
|
||||
#define ANOMALY_05000277 /* Writes to a flag data register one SCLK cycle after
|
||||
an edge is detected may clear interrupt */
|
||||
#define ANOMALY_05000278 /* Disabling Peripherals with DMA running may cause
|
||||
DMA system instability */
|
||||
#define ANOMALY_05000281 /* False Hardware Error Exception when ISR context is
|
||||
not restored */
|
||||
#define ANOMALY_05000282 /* Memory DMA corruption with 32-bit data and traffic
|
||||
control */
|
||||
#define ANOMALY_05000283 /* A system MMR write is stalled indefinitely when
|
||||
killed in a particular stage*/
|
||||
#define ANOMALY_05000311 /* Erroneous flag pin operations under specific
|
||||
sequences */
|
||||
#define ANOMALY_05000312 /* Errors when SSYNC, CSYNC, or loads to LT, LB and LC
|
||||
registers are interrupted */
|
||||
#define ANOMALY_05000313 /* PPI Is Level-Sensitive on First Transfer */
|
||||
#define ANOMALY_05000315 /* Killed System MMR Write Completes Erroneously On
|
||||
* Next System MMR Access */
|
||||
#define ANOMALY_05000319 /* Internal Voltage Regulator Values of 1.05V, 1.10V
|
||||
* and 1.15V Not Allowed for LQFP Packages */
|
||||
#endif /* Issues that are common to 0.5, 0.4, and 0.3 silicon */
|
||||
|
||||
/* These issues only occur on 0.3 or 0.4 BF533 */
|
||||
#if (defined(CONFIG_BF_REV_0_4) || defined(CONFIG_BF_REV_0_3))
|
||||
#define ANOMALY_05000099 /* UART Line Status Register (UART_LSR) bits are not
|
||||
updated at the same time. */
|
||||
#define ANOMALY_05000158 /* Boot fails when data cache enabled: Data from a Data
|
||||
Cache Fill can be corrupted after or during
|
||||
Instruction DMA if certain core stalls exist */
|
||||
#define ANOMALY_05000179 /* PPI_COUNT cannot be programmed to 0 in General
|
||||
Purpose TX or RX modes */
|
||||
#define ANOMALY_05000198 /* Failing SYSTEM MMR accesses when stalled by
|
||||
preceding memory read */
|
||||
#define ANOMALY_05000200 /* SPORT TFS and DT are incorrectly driven during
|
||||
inactive channels in certain conditions */
|
||||
#define ANOMALY_05000202 /* Possible infinite stall with specific dual dag
|
||||
situation */
|
||||
#define ANOMALY_05000215 /* UART TX Interrupt masked erroneously */
|
||||
#define ANOMALY_05000225 /* Incorrect pulse-width of UART start-bit */
|
||||
#define ANOMALY_05000227 /* Scratchpad memory bank reads may return incorrect
|
||||
data*/
|
||||
#define ANOMALY_05000230 /* UART Receiver is less robust against Baudrate
|
||||
Differences in certain Conditions */
|
||||
#define ANOMALY_05000231 /* UART STB bit incorrectly affects receiver setting */
|
||||
#define ANOMALY_05000242 /* DF bit in PLL_CTL register does not respond to
|
||||
hardware reset */
|
||||
#define ANOMALY_05000244 /* With instruction cache enabled, a CSYNC or SSYNC or
|
||||
IDLE around a Change of Control causes
|
||||
unpredictable results */
|
||||
#define ANOMALY_05000245 /* Spurious Hardware Error from an access in the
|
||||
shadow of a conditional branch */
|
||||
#define ANOMALY_05000246 /* Data CPLB's should prevent spurious hardware
|
||||
errors */
|
||||
#define ANOMALY_05000253 /* Maximum external clock speed for Timers */
|
||||
#define ANOMALY_05000255 /* Entering Hibernate Mode with RTC Seconds event
|
||||
interrupt not functional */
|
||||
#define ANOMALY_05000257 /* An interrupt or exception during short Hardware
|
||||
loops may cause the instruction fetch unit to
|
||||
malfunction */
|
||||
#define ANOMALY_05000258 /* Instruction Cache is corrupted when bit 9 and 12 of
|
||||
the ICPLB Data registers differ */
|
||||
#define ANOMALY_05000260 /* ICPLB_STATUS MMR register may be corrupted */
|
||||
#define ANOMALY_05000261 /* DCPLB_FAULT_ADDR MMR register may be corrupted */
|
||||
#define ANOMALY_05000262 /* Stores to data cache may be lost */
|
||||
#define ANOMALY_05000263 /* Hardware loop corrupted when taking an ICPLB exception */
|
||||
#define ANOMALY_05000264 /* A Sync instruction (CSYNC, SSYNC) or an IDLE
|
||||
instruction will cause an infinite stall in the
|
||||
second to last instruction in a hardware loop */
|
||||
#define ANOMALY_05000265 /* Sensitivity to noise with slow input edge rates on
|
||||
SPORT external receive and transmit clocks. */
|
||||
#define ANOMALY_05000269 /* High I/O activity causes the output voltage of the
|
||||
internal voltage regulator (VDDint) to increase. */
|
||||
#define ANOMALY_05000270 /* High I/O activity causes the output voltage of the
|
||||
internal voltage regulator (VDDint) to decrease */
|
||||
#endif /* issues only occur on 0.3 or 0.4 BF533 */
|
||||
|
||||
/* These issues are only on 0.4 silicon */
|
||||
#if (defined(CONFIG_BF_REV_0_4))
|
||||
#define ANOMALY_05000234 /* Incorrect Revision Number in DSPID Register */
|
||||
#define ANOMALY_05000250 /* Incorrect Bit-Shift of Data Word in Multichannel
|
||||
(TDM) */
|
||||
#endif /* issues are only on 0.4 silicon */
|
||||
|
||||
/* These issues are only on 0.3 silicon */
|
||||
#if defined(CONFIG_BF_REV_0_3)
|
||||
#define ANOMALY_05000183 /* Timer Pin limitations for PPI TX Modes with
|
||||
External Frame Syncs */
|
||||
#define ANOMALY_05000189 /* False Protection Exceptions caused by Speculative
|
||||
Instruction or Data Fetches, or by Fetches at the
|
||||
boundary of reserved memory space */
|
||||
#define ANOMALY_05000193 /* False Flag Pin Interrupts on Edge Sensitive Inputs
|
||||
when polarity setting is changed */
|
||||
#define ANOMALY_05000194 /* Sport Restarting in specific modes may cause data
|
||||
corruption */
|
||||
#define ANOMALY_05000199 /* DMA current address shows wrong value during carry
|
||||
fix */
|
||||
#define ANOMALY_05000201 /* Receive frame sync not ignored during active
|
||||
frames in sport MCM */
|
||||
#define ANOMALY_05000203 /* Specific sequence that can cause DMA error or DMA
|
||||
stopping */
|
||||
#if defined(CONFIG_BF533)
|
||||
#define ANOMALY_05000204 /* Incorrect data read with write-through cache and
|
||||
allocate cache lines on reads only mode */
|
||||
#endif /* CONFIG_BF533 */
|
||||
#define ANOMALY_05000207 /* Recovery from "brown-out" condition */
|
||||
#define ANOMALY_05000209 /* Speed-Path in computational unit affects certain
|
||||
instructions */
|
||||
#define ANOMALY_05000233 /* PPI_FS3 is not driven in 2 or 3 internal Frame
|
||||
Sync Transmit Mode */
|
||||
#define ANOMALY_05000271 /* Spontaneous reset of Internal Voltage Regulator */
|
||||
#endif /* only on 0.3 silicon */
|
||||
|
||||
#if defined(CONFIG_BF_REV_0_2)
|
||||
#define ANOMALY_05000067 /* Watchpoints (Hardware Breakpoints) are not
|
||||
* supported */
|
||||
#define ANOMALY_05000109 /* Reserved bits in SYSCFG register not set at
|
||||
* power on */
|
||||
#define ANOMALY_05000116 /* Trace Buffers may record discontinuities into
|
||||
* emulation mode and/or exception, NMI, reset
|
||||
* handlers */
|
||||
#define ANOMALY_05000123 /* DTEST_COMMAND initiated memory access may be
|
||||
* incorrect if data cache or DMA is active */
|
||||
#define ANOMALY_05000124 /* DMA Lock-up at CCLK to SCLK ratios of 4:1, 2:1,
|
||||
* or 1:1 */
|
||||
#define ANOMALY_05000125 /* Erroneous exception when enabling cache */
|
||||
#define ANOMALY_05000126 /* SPI clock polarity and phase bits incorrect
|
||||
* during booting */
|
||||
#define ANOMALY_05000137 /* DMEM_CONTROL is not set on Reset */
|
||||
#define ANOMALY_05000138 /* SPI boot will not complete if there is a zero fill
|
||||
* block in the loader file */
|
||||
#define ANOMALY_05000140 /* Allowing the SPORT RX FIFO to fill will cause an
|
||||
* overflow */
|
||||
#define ANOMALY_05000141 /* An Infinite Stall occurs with a particular sequence
|
||||
* of consecutive dual dag events */
|
||||
#define ANOMALY_05000142 /* Interrupts may be lost when a programmable input
|
||||
* flag is configured to be edge sensitive */
|
||||
#define ANOMALY_05000143 /* A read from external memory may return a wrong
|
||||
* value with data cache enabled */
|
||||
#define ANOMALY_05000144 /* DMA and TESTSET conflict when both are accessing
|
||||
* external memory */
|
||||
#define ANOMALY_05000145 /* In PWM_OUT mode, you must enable the PPI block to
|
||||
* generate a waveform from PPI_CLK */
|
||||
#define ANOMALY_05000146 /* MDMA may lose the first few words of a descriptor
|
||||
* chain */
|
||||
#define ANOMALY_05000147 /* The source MDMA descriptor may stop with a DMA
|
||||
* Error */
|
||||
#define ANOMALY_05000148 /* When booting from a 16-bit asynchronous memory
|
||||
* device, the upper 8-bits of each word must be
|
||||
* 0x00 */
|
||||
#define ANOMALY_05000153 /* Frame Delay in SPORT Multichannel Mode */
|
||||
#define ANOMALY_05000154 /* SPORT TFS signal is active in Multi-channel mode
|
||||
* outside of valid channels */
|
||||
#define ANOMALY_05000155 /* Timer1 can not be used for PWMOUT mode when a
|
||||
* certain PPI mode is in use */
|
||||
#define ANOMALY_05000157 /* A killed 32-bit System MMR write will lead to
|
||||
* the next system MMR access thinking it should be
|
||||
* 32-bit. */
|
||||
#define ANOMALY_05000163 /* SPORT transmit data is not gated by external frame
|
||||
* sync in certain conditions */
|
||||
#define ANOMALY_05000168 /* SDRAM auto-refresh and subsequent Power Ups */
|
||||
#define ANOMALY_05000169 /* DATA CPLB page miss can result in lost
|
||||
* write-through cache data writes */
|
||||
#define ANOMALY_05000173 /* DMA vs Core accesses to external memory */
|
||||
#define ANOMALY_05000174 /* Cache Fill Buffer Data lost */
|
||||
#define ANOMALY_05000175 /* Overlapping Sequencer and Memory Stalls */
|
||||
#define ANOMALY_05000176 /* Multiplication of (-1) by (-1) followed by an
|
||||
* accumulator saturation */
|
||||
#define ANOMALY_05000181 /* Disabling the PPI resets the PPI configuration
|
||||
* registers */
|
||||
#define ANOMALY_05000185 /* PPI TX Mode with 2 External Frame Syncs */
|
||||
#define ANOMALY_05000191 /* PPI does not invert the Driving PPICLK edge in
|
||||
* Transmit Modes */
|
||||
#define ANOMALY_05000192 /* In PPI Transmit Modes with External Frame Syncs
|
||||
* POLC */
|
||||
#define ANOMALY_05000206 /* Internal Voltage Regulator may not start up */
|
||||
|
||||
#if defined(__ADSPBF531__)
|
||||
# define ANOMALY_BF531 1
|
||||
#else
|
||||
# define ANOMALY_BF531 0
|
||||
#endif
|
||||
#if defined(__ADSPBF532__)
|
||||
# define ANOMALY_BF532 1
|
||||
#else
|
||||
# define ANOMALY_BF532 0
|
||||
#endif
|
||||
#if defined(__ADSPBF533__)
|
||||
# define ANOMALY_BF533 1
|
||||
#else
|
||||
# define ANOMALY_BF533 0
|
||||
#endif
|
||||
|
||||
#endif /* _MACH_ANOMALY_H_ */
|
||||
/* Multi-Issue Instruction with dsp32shiftimm in slot1 and P-reg Store in slot 2 Not Supported */
|
||||
#define ANOMALY_05000074 (1)
|
||||
/* UART Line Status Register (UART_LSR) Bits Are Not Updated at the Same Time */
|
||||
#define ANOMALY_05000099 (__SILICON_REVISION__ < 5)
|
||||
/* Watchpoint Status Register (WPSTAT) Bits Are Set on Every Corresponding Match */
|
||||
#define ANOMALY_05000105 (1)
|
||||
/* DMA_RUN Bit Is Not Valid after a Peripheral Receive Channel DMA Stops */
|
||||
#define ANOMALY_05000119 (1)
|
||||
/* Rx.H Cannot Be Used to Access 16-bit System MMR Registers */
|
||||
#define ANOMALY_05000122 (1)
|
||||
/* Instruction DMA Can Cause Data Cache Fills to Fail (Boot Implications) */
|
||||
#define ANOMALY_05000158 (__SILICON_REVISION__ < 5)
|
||||
/* PPI Data Lengths Between 8 and 16 Do Not Zero Out Upper Bits */
|
||||
#define ANOMALY_05000166 (1)
|
||||
/* Turning Serial Ports on with External Frame Syncs */
|
||||
#define ANOMALY_05000167 (1)
|
||||
/* PPI_COUNT Cannot Be Programmed to 0 in General Purpose TX or RX Modes */
|
||||
#define ANOMALY_05000179 (__SILICON_REVISION__ < 5)
|
||||
/* PPI_DELAY Not Functional in PPI Modes with 0 Frame Syncs */
|
||||
#define ANOMALY_05000180 (1)
|
||||
/* Timer Pin Limitations for PPI TX Modes with External Frame Syncs */
|
||||
#define ANOMALY_05000183 (__SILICON_REVISION__ < 4)
|
||||
/* False Protection Exceptions */
|
||||
#define ANOMALY_05000189 (__SILICON_REVISION__ < 4)
|
||||
/* False I/O Pin Interrupts on Edge-Sensitive Inputs When Polarity Setting Is Changed */
|
||||
#define ANOMALY_05000193 (__SILICON_REVISION__ < 4)
|
||||
/* Restarting SPORT in Specific Modes May Cause Data Corruption */
|
||||
#define ANOMALY_05000194 (__SILICON_REVISION__ < 4)
|
||||
/* Failing MMR Accesses When Stalled by Preceding Memory Read */
|
||||
#define ANOMALY_05000198 (__SILICON_REVISION__ < 5)
|
||||
/* Current DMA Address Shows Wrong Value During Carry Fix */
|
||||
#define ANOMALY_05000199 (__SILICON_REVISION__ < 4)
|
||||
/* SPORT TFS and DT Are Incorrectly Driven During Inactive Channels in Certain Conditions */
|
||||
#define ANOMALY_05000200 (__SILICON_REVISION__ < 5)
|
||||
/* Receive Frame Sync Not Ignored During Active Frames in SPORT Multi-Channel Mode */
|
||||
#define ANOMALY_05000201 (__SILICON_REVISION__ < 4)
|
||||
/* Possible Infinite Stall with Specific Dual-DAG Situation */
|
||||
#define ANOMALY_05000202 (__SILICON_REVISION__ < 5)
|
||||
/* Specific Sequence That Can Cause DMA Error or DMA Stopping */
|
||||
#define ANOMALY_05000203 (__SILICON_REVISION__ < 4)
|
||||
/* Incorrect data read with write-through cache and allocate cache lines on reads only mode */
|
||||
#define ANOMALY_05000204 (__SILICON_REVISION__ < 4 && ANOMALY_BF533)
|
||||
/* Recovery from "Brown-Out" Condition */
|
||||
#define ANOMALY_05000207 (__SILICON_REVISION__ < 4)
|
||||
/* VSTAT Status Bit in PLL_STAT Register Is Not Functional */
|
||||
#define ANOMALY_05000208 (1)
|
||||
/* Speed Path in Computational Unit Affects Certain Instructions */
|
||||
#define ANOMALY_05000209 (__SILICON_REVISION__ < 4)
|
||||
/* UART TX Interrupt Masked Erroneously */
|
||||
#define ANOMALY_05000215 (__SILICON_REVISION__ < 5)
|
||||
/* NMI Event at Boot Time Results in Unpredictable State */
|
||||
#define ANOMALY_05000219 (1)
|
||||
/* Incorrect Pulse-Width of UART Start Bit */
|
||||
#define ANOMALY_05000225 (__SILICON_REVISION__ < 5)
|
||||
/* Scratchpad Memory Bank Reads May Return Incorrect Data */
|
||||
#define ANOMALY_05000227 (__SILICON_REVISION__ < 5)
|
||||
/* SPI Slave Boot Mode Modifies Registers from Reset Value */
|
||||
#define ANOMALY_05000229 (1)
|
||||
/* UART Receiver is Less Robust Against Baudrate Differences in Certain Conditions */
|
||||
#define ANOMALY_05000230 (__SILICON_REVISION__ < 5)
|
||||
/* UART STB Bit Incorrectly Affects Receiver Setting */
|
||||
#define ANOMALY_05000231 (__SILICON_REVISION__ < 5)
|
||||
/* PPI_FS3 Is Not Driven in 2 or 3 Internal Frame Sync Transmit Modes */
|
||||
#define ANOMALY_05000233 (__SILICON_REVISION__ < 4)
|
||||
/* Incorrect Revision Number in DSPID Register */
|
||||
#define ANOMALY_05000234 (__SILICON_REVISION__ == 4)
|
||||
/* DF Bit in PLL_CTL Register Does Not Respond to Hardware Reset */
|
||||
#define ANOMALY_05000242 (__SILICON_REVISION__ < 4)
|
||||
/* If I-Cache Is On, CSYNC/SSYNC/IDLE Around Change of Control Causes Failures */
|
||||
#define ANOMALY_05000244 (__SILICON_REVISION__ < 5)
|
||||
/* Spurious Hardware Error from an Access in the Shadow of a Conditional Branch */
|
||||
#define ANOMALY_05000245 (1)
|
||||
/* Data CPLBs Should Prevent Spurious Hardware Errors */
|
||||
#define ANOMALY_05000246 (__SILICON_REVISION__ < 5)
|
||||
/* Incorrect Bit Shift of Data Word in Multichannel (TDM) Mode in Certain Conditions */
|
||||
#define ANOMALY_05000250 (__SILICON_REVISION__ == 4)
|
||||
/* Maximum External Clock Speed for Timers */
|
||||
#define ANOMALY_05000253 (__SILICON_REVISION__ < 5)
|
||||
/* Incorrect Timer Pulse Width in Single-Shot PWM_OUT Mode with External Clock */
|
||||
#define ANOMALY_05000254 (__SILICON_REVISION__ > 4)
|
||||
/* Entering Hibernate State with RTC Seconds Interrupt Not Functional */
|
||||
#define ANOMALY_05000255 (__SILICON_REVISION__ < 5)
|
||||
/* Interrupt/Exception During Short Hardware Loop May Cause Bad Instruction Fetches */
|
||||
#define ANOMALY_05000257 (__SILICON_REVISION__ < 5)
|
||||
/* Instruction Cache Is Corrupted When Bits 9 and 12 of the ICPLB Data Registers Differ */
|
||||
#define ANOMALY_05000258 (__SILICON_REVISION__ < 5)
|
||||
/* ICPLB_STATUS MMR Register May Be Corrupted */
|
||||
#define ANOMALY_05000260 (__SILICON_REVISION__ < 5)
|
||||
/* DCPLB_FAULT_ADDR MMR Register May Be Corrupted */
|
||||
#define ANOMALY_05000261 (__SILICON_REVISION__ < 5)
|
||||
/* Stores To Data Cache May Be Lost */
|
||||
#define ANOMALY_05000262 (__SILICON_REVISION__ < 5)
|
||||
/* Hardware Loop Corrupted When Taking an ICPLB Exception */
|
||||
#define ANOMALY_05000263 (__SILICON_REVISION__ < 5)
|
||||
/* CSYNC/SSYNC/IDLE Causes Infinite Stall in Penultimate Instruction in Hardware Loop */
|
||||
#define ANOMALY_05000264 (__SILICON_REVISION__ < 5)
|
||||
/* Sensitivity To Noise with Slow Input Edge Rates on External SPORT TX and RX Clocks */
|
||||
#define ANOMALY_05000265 (__SILICON_REVISION__ < 5)
|
||||
/* High I/O Activity Causes Output Voltage of Internal Voltage Regulator (Vddint) to Increase */
|
||||
#define ANOMALY_05000269 (__SILICON_REVISION__ < 5)
|
||||
/* High I/O Activity Causes Output Voltage of Internal Voltage Regulator (Vddint) to Decrease */
|
||||
#define ANOMALY_05000270 (__SILICON_REVISION__ < 5)
|
||||
/* Spontaneous Reset of Internal Voltage Regulator */
|
||||
#define ANOMALY_05000271 (__SILICON_REVISION__ < 4)
|
||||
/* Certain Data Cache Writethrough Modes Fail for Vddint <= 0.9V */
|
||||
#define ANOMALY_05000272 (1)
|
||||
/* Writes to Synchronous SDRAM Memory May Be Lost */
|
||||
#define ANOMALY_05000273 (1)
|
||||
/* Timing Requirements Change for External Frame Sync PPI Modes with Non-Zero PPI_DELAY */
|
||||
#define ANOMALY_05000276 (1)
|
||||
/* Writes to an I/O Data Register One SCLK Cycle after an Edge Is Detected May Clear Interrupt */
|
||||
#define ANOMALY_05000277 (1)
|
||||
/* Disabling Peripherals with DMA Running May Cause DMA System Instability */
|
||||
#define ANOMALY_05000278 (1)
|
||||
/* False Hardware Error Exception When ISR Context Is Not Restored */
|
||||
#define ANOMALY_05000281 (1)
|
||||
/* Memory DMA Corruption with 32-Bit Data and Traffic Control */
|
||||
#define ANOMALY_05000282 (1)
|
||||
/* System MMR Write Is Stalled Indefinitely When Killed in a Particular Stage */
|
||||
#define ANOMALY_05000283 (1)
|
||||
/* SPORTs May Receive Bad Data If FIFOs Fill Up */
|
||||
#define ANOMALY_05000288 (1)
|
||||
/* Memory-To-Memory DMA Source/Destination Descriptors Must Be in Same Memory Space */
|
||||
#define ANOMALY_05000301 (1)
|
||||
/* SSYNCs After Writes To DMA MMR Registers May Not Be Handled Correctly */
|
||||
#define ANOMALY_05000302 (__SILICON_REVISION__ < 5)
|
||||
/* New Feature: Additional Hysteresis on SPORT Input Pins (Not Available On Older Silicon) */
|
||||
#define ANOMALY_05000305 (__SILICON_REVISION__ < 5)
|
||||
/* New Feature: Additional PPI Frame Sync Sampling Options (Not Available On Older Silicon) */
|
||||
#define ANOMALY_05000306 (__SILICON_REVISION__ < 5)
|
||||
/* False Hardware Errors Caused by Fetches at the Boundary of Reserved Memory */
|
||||
#define ANOMALY_05000310 (1)
|
||||
/* Erroneous Flag (GPIO) Pin Operations under Specific Sequences */
|
||||
#define ANOMALY_05000311 (1)
|
||||
/* Errors When SSYNC, CSYNC, or Loads to LT, LB and LC Registers Are Interrupted */
|
||||
#define ANOMALY_05000312 (1)
|
||||
/* PPI Is Level-Sensitive on First Transfer */
|
||||
#define ANOMALY_05000313 (1)
|
||||
/* Killed System MMR Write Completes Erroneously On Next System MMR Access */
|
||||
#define ANOMALY_05000315 (1)
|
||||
/* Internal Voltage Regulator Values of 1.05V, 1.10V and 1.15V Not Allowed for LQFP Packages */
|
||||
#define ANOMALY_05000319 (ANOMALY_BF531 || ANOMALY_BF532)
|
||||
|
||||
/* These anomalies have been "phased" out of analog.com anomaly sheets and are
|
||||
* here to show running on older silicon just isn't feasible.
|
||||
*/
|
||||
|
||||
/* Watchpoints (Hardware Breakpoints) are not supported */
|
||||
#define ANOMALY_05000067 (__SILICON_REVISION__ < 3)
|
||||
/* Reserved bits in SYSCFG register not set at power on */
|
||||
#define ANOMALY_05000109 (__SILICON_REVISION__ < 3)
|
||||
/* Trace Buffers may record discontinuities into emulation mode and/or exception, NMI, reset handlers */
|
||||
#define ANOMALY_05000116 (__SILICON_REVISION__ < 3)
|
||||
/* DTEST_COMMAND initiated memory access may be incorrect if data cache or DMA is active */
|
||||
#define ANOMALY_05000123 (__SILICON_REVISION__ < 3)
|
||||
/* DMA Lock-up at CCLK to SCLK ratios of 4:1, 2:1, or 1:1 */
|
||||
#define ANOMALY_05000124 (__SILICON_REVISION__ < 3)
|
||||
/* Erroneous exception when enabling cache */
|
||||
#define ANOMALY_05000125 (__SILICON_REVISION__ < 3)
|
||||
/* SPI clock polarity and phase bits incorrect during booting */
|
||||
#define ANOMALY_05000126 (__SILICON_REVISION__ < 3)
|
||||
/* DMEM_CONTROL is not set on Reset */
|
||||
#define ANOMALY_05000137 (__SILICON_REVISION__ < 3)
|
||||
/* SPI boot will not complete if there is a zero fill block in the loader file */
|
||||
#define ANOMALY_05000138 (__SILICON_REVISION__ < 3)
|
||||
/* Allowing the SPORT RX FIFO to fill will cause an overflow */
|
||||
#define ANOMALY_05000140 (__SILICON_REVISION__ < 3)
|
||||
/* An Infinite Stall occurs with a particular sequence of consecutive dual dag events */
|
||||
#define ANOMALY_05000141 (__SILICON_REVISION__ < 3)
|
||||
/* Interrupts may be lost when a programmable input flag is configured to be edge sensitive */
|
||||
#define ANOMALY_05000142 (__SILICON_REVISION__ < 3)
|
||||
/* A read from external memory may return a wrong value with data cache enabled */
|
||||
#define ANOMALY_05000143 (__SILICON_REVISION__ < 3)
|
||||
/* DMA and TESTSET conflict when both are accessing external memory */
|
||||
#define ANOMALY_05000144 (__SILICON_REVISION__ < 3)
|
||||
/* In PWM_OUT mode, you must enable the PPI block to generate a waveform from PPI_CLK */
|
||||
#define ANOMALY_05000145 (__SILICON_REVISION__ < 3)
|
||||
/* MDMA may lose the first few words of a descriptor chain */
|
||||
#define ANOMALY_05000146 (__SILICON_REVISION__ < 3)
|
||||
/* The source MDMA descriptor may stop with a DMA Error */
|
||||
#define ANOMALY_05000147 (__SILICON_REVISION__ < 3)
|
||||
/* When booting from a 16-bit asynchronous memory device, the upper 8-bits of each word must be 0x00 */
|
||||
#define ANOMALY_05000148 (__SILICON_REVISION__ < 3)
|
||||
/* Frame Delay in SPORT Multichannel Mode */
|
||||
#define ANOMALY_05000153 (__SILICON_REVISION__ < 3)
|
||||
/* SPORT TFS signal is active in Multi-channel mode outside of valid channels */
|
||||
#define ANOMALY_05000154 (__SILICON_REVISION__ < 3)
|
||||
/* Timer1 can not be used for PWMOUT mode when a certain PPI mode is in use */
|
||||
#define ANOMALY_05000155 (__SILICON_REVISION__ < 3)
|
||||
/* A killed 32-bit System MMR write will lead to the next system MMR access thinking it should be 32-bit. */
|
||||
#define ANOMALY_05000157 (__SILICON_REVISION__ < 3)
|
||||
/* SPORT transmit data is not gated by external frame sync in certain conditions */
|
||||
#define ANOMALY_05000163 (__SILICON_REVISION__ < 3)
|
||||
/* SDRAM auto-refresh and subsequent Power Ups */
|
||||
#define ANOMALY_05000168 (__SILICON_REVISION__ < 3)
|
||||
/* DATA CPLB page miss can result in lost write-through cache data writes */
|
||||
#define ANOMALY_05000169 (__SILICON_REVISION__ < 3)
|
||||
/* DMA vs Core accesses to external memory */
|
||||
#define ANOMALY_05000173 (__SILICON_REVISION__ < 3)
|
||||
/* Cache Fill Buffer Data lost */
|
||||
#define ANOMALY_05000174 (__SILICON_REVISION__ < 3)
|
||||
/* Overlapping Sequencer and Memory Stalls */
|
||||
#define ANOMALY_05000175 (__SILICON_REVISION__ < 3)
|
||||
/* Multiplication of (-1) by (-1) followed by an accumulator saturation */
|
||||
#define ANOMALY_05000176 (__SILICON_REVISION__ < 3)
|
||||
/* Disabling the PPI resets the PPI configuration registers */
|
||||
#define ANOMALY_05000181 (__SILICON_REVISION__ < 3)
|
||||
/* PPI TX Mode with 2 External Frame Syncs */
|
||||
#define ANOMALY_05000185 (__SILICON_REVISION__ < 3)
|
||||
/* PPI does not invert the Driving PPICLK edge in Transmit Modes */
|
||||
#define ANOMALY_05000191 (__SILICON_REVISION__ < 3)
|
||||
/* In PPI Transmit Modes with External Frame Syncs POLC */
|
||||
#define ANOMALY_05000192 (__SILICON_REVISION__ < 3)
|
||||
/* Internal Voltage Regulator may not start up */
|
||||
#define ANOMALY_05000206 (__SILICON_REVISION__ < 3)
|
||||
|
||||
/* Anomalies that don't exist on this proc */
|
||||
#define ANOMALY_05000266 (0)
|
||||
#define ANOMALY_05000323 (0)
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -52,12 +52,12 @@
|
|||
/***************************/
|
||||
|
||||
|
||||
#define BLKFIN_DSUBBANKS 4
|
||||
#define BLKFIN_DWAYS 2
|
||||
#define BLKFIN_DLINES 64
|
||||
#define BLKFIN_ISUBBANKS 4
|
||||
#define BLKFIN_IWAYS 4
|
||||
#define BLKFIN_ILINES 32
|
||||
#define BFIN_DSUBBANKS 4
|
||||
#define BFIN_DWAYS 2
|
||||
#define BFIN_DLINES 64
|
||||
#define BFIN_ISUBBANKS 4
|
||||
#define BFIN_IWAYS 4
|
||||
#define BFIN_ILINES 32
|
||||
|
||||
#define WAY0_L 0x1
|
||||
#define WAY1_L 0x2
|
||||
|
|
@ -141,97 +141,6 @@
|
|||
|
||||
#define AMGCTLVAL (V_AMBEN | V_AMCKEN | V_CDPRIO)
|
||||
|
||||
#define MAX_VC 650000000
|
||||
#define MIN_VC 50000000
|
||||
|
||||
#ifdef CONFIG_BFIN_KERNEL_CLOCK
|
||||
/********************************PLL Settings **************************************/
|
||||
#if (CONFIG_VCO_MULT < 0)
|
||||
#error "VCO Multiplier is less than 0. Please select a different value"
|
||||
#endif
|
||||
|
||||
#if (CONFIG_VCO_MULT == 0)
|
||||
#error "VCO Multiplier should be greater than 0. Please select a different value"
|
||||
#endif
|
||||
|
||||
#if (CONFIG_VCO_MULT > 64)
|
||||
#error "VCO Multiplier is more than 64. Please select a different value"
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_CLKIN_HALF
|
||||
#define CONFIG_VCO_HZ (CONFIG_CLKIN_HZ * CONFIG_VCO_MULT)
|
||||
#else
|
||||
#define CONFIG_VCO_HZ ((CONFIG_CLKIN_HZ * CONFIG_VCO_MULT)/2)
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_PLL_BYPASS
|
||||
#define CONFIG_CCLK_HZ (CONFIG_VCO_HZ/CONFIG_CCLK_DIV)
|
||||
#define CONFIG_SCLK_HZ (CONFIG_VCO_HZ/CONFIG_SCLK_DIV)
|
||||
#else
|
||||
#define CONFIG_CCLK_HZ CONFIG_CLKIN_HZ
|
||||
#define CONFIG_SCLK_HZ CONFIG_CLKIN_HZ
|
||||
#endif
|
||||
|
||||
#if (CONFIG_SCLK_DIV < 1)
|
||||
#error "SCLK DIV cannot be less than 1 or more than 15. Please select a proper value"
|
||||
#endif
|
||||
|
||||
#if (CONFIG_SCLK_DIV > 15)
|
||||
#error "SCLK DIV cannot be less than 1 or more than 15. Please select a proper value"
|
||||
#endif
|
||||
|
||||
#if (CONFIG_CCLK_DIV != 1)
|
||||
#if (CONFIG_CCLK_DIV != 2)
|
||||
#if (CONFIG_CCLK_DIV != 4)
|
||||
#if (CONFIG_CCLK_DIV != 8)
|
||||
#error "CCLK DIV can be 1,2,4 or 8 only. Please select a proper value"
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if (CONFIG_VCO_HZ > MAX_VC)
|
||||
#error "VCO selected is more than maximum value. Please change the VCO multipler"
|
||||
#endif
|
||||
|
||||
#if (CONFIG_SCLK_HZ > 133000000)
|
||||
#error "Sclk value selected is more than maximum. Please select a proper value for SCLK multiplier"
|
||||
#endif
|
||||
|
||||
#if (CONFIG_SCLK_HZ < 27000000)
|
||||
#error "Sclk value selected is less than minimum. Please select a proper value for SCLK multiplier"
|
||||
#endif
|
||||
|
||||
#if (CONFIG_SCLK_HZ > CONFIG_CCLK_HZ)
|
||||
#if (CONFIG_SCLK_HZ != CONFIG_CLKIN_HZ)
|
||||
#if (CONFIG_CCLK_HZ != CONFIG_CLKIN_HZ)
|
||||
#error "Please select sclk less than cclk"
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if (CONFIG_CCLK_DIV == 1)
|
||||
#define CONFIG_CCLK_ACT_DIV CCLK_DIV1
|
||||
#endif
|
||||
#if (CONFIG_CCLK_DIV == 2)
|
||||
#define CONFIG_CCLK_ACT_DIV CCLK_DIV2
|
||||
#endif
|
||||
#if (CONFIG_CCLK_DIV == 4)
|
||||
#define CONFIG_CCLK_ACT_DIV CCLK_DIV4
|
||||
#endif
|
||||
#if (CONFIG_CCLK_DIV == 8)
|
||||
#define CONFIG_CCLK_ACT_DIV CCLK_DIV8
|
||||
#endif
|
||||
#ifndef CONFIG_CCLK_ACT_DIV
|
||||
#define CONFIG_CCLK_ACT_DIV CONFIG_CCLK_DIV_not_defined_properly
|
||||
#endif
|
||||
|
||||
#if defined(ANOMALY_05000273) && (CONFIG_CCLK_DIV == 1)
|
||||
#error ANOMALY 05000273, please make sure CCLK is at least 2x SCLK
|
||||
#endif
|
||||
|
||||
#endif /* CONFIG_BFIN_KERNEL_CLOCK */
|
||||
|
||||
#ifdef CONFIG_BF533
|
||||
#define CPU "BF533"
|
||||
#define CPUID 0x027a5000
|
||||
|
|
@ -249,58 +158,4 @@
|
|||
#define CPUID 0x0
|
||||
#endif
|
||||
|
||||
#if (CONFIG_MEM_SIZE % 4)
|
||||
#error "SDRAM mem size must be multible of 4MB"
|
||||
#endif
|
||||
|
||||
#define SDRAM_IGENERIC (CPLB_L1_CHBL | CPLB_USER_RD | CPLB_VALID | CPLB_PORTPRIO)
|
||||
#define SDRAM_IKERNEL (SDRAM_IGENERIC | CPLB_LOCK)
|
||||
#define L1_IMEMORY ( CPLB_USER_RD | CPLB_VALID | CPLB_LOCK)
|
||||
#define SDRAM_INON_CHBL ( CPLB_USER_RD | CPLB_VALID)
|
||||
|
||||
/*Use the menuconfig cache policy here - CONFIG_BLKFIN_WT/CONFIG_BLKFIN_WB*/
|
||||
|
||||
#define ANOMALY_05000158_WORKAROUND 0x200
|
||||
#ifdef CONFIG_BLKFIN_WB /*Write Back Policy */
|
||||
#define SDRAM_DGENERIC (CPLB_L1_CHBL | CPLB_DIRTY \
|
||||
| CPLB_SUPV_WR | CPLB_USER_WR | CPLB_USER_RD | CPLB_VALID | ANOMALY_05000158_WORKAROUND)
|
||||
#else /*Write Through */
|
||||
#define SDRAM_DGENERIC (CPLB_L1_CHBL | CPLB_WT | CPLB_L1_AOW | CPLB_DIRTY \
|
||||
| CPLB_SUPV_WR | CPLB_USER_WR | CPLB_USER_RD | CPLB_VALID | ANOMALY_05000158_WORKAROUND)
|
||||
#endif
|
||||
|
||||
#define L1_DMEMORY (CPLB_SUPV_WR | CPLB_USER_WR | CPLB_USER_RD | CPLB_VALID | ANOMALY_05000158_WORKAROUND | CPLB_LOCK | CPLB_DIRTY)
|
||||
#define SDRAM_DNON_CHBL (CPLB_SUPV_WR | CPLB_USER_WR | CPLB_USER_RD | CPLB_VALID | ANOMALY_05000158_WORKAROUND | CPLB_DIRTY)
|
||||
#define SDRAM_EBIU (CPLB_SUPV_WR | CPLB_USER_WR | CPLB_USER_RD | CPLB_VALID | ANOMALY_05000158_WORKAROUND | CPLB_DIRTY)
|
||||
#define SDRAM_OOPS (CPLB_VALID | ANOMALY_05000158_WORKAROUND | CPLB_LOCK | CPLB_DIRTY)
|
||||
|
||||
#define SIZE_1K 0x00000400 /* 1K */
|
||||
#define SIZE_4K 0x00001000 /* 4K */
|
||||
#define SIZE_1M 0x00100000 /* 1M */
|
||||
#define SIZE_4M 0x00400000 /* 4M */
|
||||
|
||||
#define MAX_CPLBS (16 * 2)
|
||||
|
||||
/*
|
||||
* Number of required data CPLB switchtable entries
|
||||
* MEMSIZE / 4 (we mostly install 4M page size CPLBs
|
||||
* approx 16 for smaller 1MB page size CPLBs for allignment purposes
|
||||
* 1 for L1 Data Memory
|
||||
* 1 for CONFIG_DEBUG_HUNT_FOR_ZERO
|
||||
* 1 for ASYNC Memory
|
||||
*/
|
||||
|
||||
|
||||
#define MAX_SWITCH_D_CPLBS (((CONFIG_MEM_SIZE / 4) + 16 + 1 + 1 + 1) * 2)
|
||||
|
||||
/*
|
||||
* Number of required instruction CPLB switchtable entries
|
||||
* MEMSIZE / 4 (we mostly install 4M page size CPLBs
|
||||
* approx 12 for smaller 1MB page size CPLBs for allignment purposes
|
||||
* 1 for L1 Instruction Memory
|
||||
* 1 for CONFIG_DEBUG_HUNT_FOR_ZERO
|
||||
*/
|
||||
|
||||
#define MAX_SWITCH_I_CPLBS (((CONFIG_MEM_SIZE / 4) + 12 + 1 + 1) * 2)
|
||||
|
||||
#endif /* __MACH_BF533_H__ */
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@
|
|||
#include "defBF532.h"
|
||||
#include "anomaly.h"
|
||||
|
||||
#if !(defined(__ASSEMBLY__) || defined(ASSEMBLY))
|
||||
#if !defined(__ASSEMBLY__)
|
||||
#include "cdefBF532.h"
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -30,11 +30,9 @@
|
|||
|
||||
#ifndef _CDEF_BF532_H
|
||||
#define _CDEF_BF532_H
|
||||
/*
|
||||
#if !defined(__ADSPLPBLACKFIN__)
|
||||
#warning cdefBF532.h should only be included for 532 compatible chips.
|
||||
#endif
|
||||
*/
|
||||
|
||||
#include <asm/blackfin.h>
|
||||
|
||||
/*include all Core registers and bit definitions*/
|
||||
#include "defBF532.h"
|
||||
|
||||
|
|
@ -65,7 +63,7 @@ static __inline__ void bfin_write_VR_CTL(unsigned int val)
|
|||
bfin_write32(SIC_IWR, IWR_ENABLE(0));
|
||||
|
||||
bfin_write16(VR_CTL, val);
|
||||
__builtin_bfin_ssync();
|
||||
SSYNC();
|
||||
|
||||
local_irq_save(flags);
|
||||
asm("IDLE;");
|
||||
|
|
@ -132,10 +130,6 @@ static __inline__ void bfin_write_VR_CTL(unsigned int val)
|
|||
/* General Purpose IO (0xFFC0 2400-0xFFC0 27FF) */
|
||||
#define bfin_read_FIO_DIR() bfin_read16(FIO_DIR)
|
||||
#define bfin_write_FIO_DIR(val) bfin_write16(FIO_DIR,val)
|
||||
#define bfin_read_FIO_FLAG_C() bfin_read16(FIO_FLAG_C)
|
||||
#define bfin_write_FIO_FLAG_C(val) bfin_write16(FIO_FLAG_C,val)
|
||||
#define bfin_read_FIO_FLAG_S() bfin_read16(FIO_FLAG_S)
|
||||
#define bfin_write_FIO_FLAG_S(val) bfin_write16(FIO_FLAG_S,val)
|
||||
#define bfin_read_FIO_MASKA_C() bfin_read16(FIO_MASKA_C)
|
||||
#define bfin_write_FIO_MASKA_C(val) bfin_write16(FIO_MASKA_C,val)
|
||||
#define bfin_read_FIO_MASKA_S() bfin_read16(FIO_MASKA_S)
|
||||
|
|
@ -152,10 +146,6 @@ static __inline__ void bfin_write_VR_CTL(unsigned int val)
|
|||
#define bfin_write_FIO_BOTH(val) bfin_write16(FIO_BOTH,val)
|
||||
#define bfin_read_FIO_INEN() bfin_read16(FIO_INEN)
|
||||
#define bfin_write_FIO_INEN(val) bfin_write16(FIO_INEN,val)
|
||||
#define bfin_read_FIO_FLAG_D() bfin_read16(FIO_FLAG_D)
|
||||
#define bfin_write_FIO_FLAG_D(val) bfin_write16(FIO_FLAG_D,val)
|
||||
#define bfin_read_FIO_FLAG_T() bfin_read16(FIO_FLAG_T)
|
||||
#define bfin_write_FIO_FLAG_T(val) bfin_write16(FIO_FLAG_T,val)
|
||||
#define bfin_read_FIO_MASKA_D() bfin_read16(FIO_MASKA_D)
|
||||
#define bfin_write_FIO_MASKA_D(val) bfin_write16(FIO_MASKA_D,val)
|
||||
#define bfin_read_FIO_MASKA_T() bfin_read16(FIO_MASKA_T)
|
||||
|
|
@ -165,6 +155,50 @@ static __inline__ void bfin_write_VR_CTL(unsigned int val)
|
|||
#define bfin_read_FIO_MASKB_T() bfin_read16(FIO_MASKB_T)
|
||||
#define bfin_write_FIO_MASKB_T(val) bfin_write16(FIO_MASKB_T,val)
|
||||
|
||||
|
||||
#if ANOMALY_05000311
|
||||
#define BFIN_WRITE_FIO_FLAG(name) \
|
||||
static __inline__ void bfin_write_FIO_FLAG_ ## name (unsigned short val)\
|
||||
{\
|
||||
unsigned long flags;\
|
||||
local_irq_save(flags);\
|
||||
bfin_write16(FIO_FLAG_ ## name,val);\
|
||||
bfin_read_CHIPID();\
|
||||
local_irq_restore(flags);\
|
||||
}
|
||||
BFIN_WRITE_FIO_FLAG(D)
|
||||
BFIN_WRITE_FIO_FLAG(C)
|
||||
BFIN_WRITE_FIO_FLAG(S)
|
||||
BFIN_WRITE_FIO_FLAG(T)
|
||||
|
||||
#define BFIN_READ_FIO_FLAG(name) \
|
||||
static __inline__ unsigned short bfin_read_FIO_FLAG_ ## name (void)\
|
||||
{\
|
||||
unsigned long flags;\
|
||||
unsigned short ret;\
|
||||
local_irq_save(flags);\
|
||||
ret = bfin_read16(FIO_FLAG_ ## name);\
|
||||
bfin_read_CHIPID();\
|
||||
local_irq_restore(flags);\
|
||||
return ret;\
|
||||
}
|
||||
BFIN_READ_FIO_FLAG(D)
|
||||
BFIN_READ_FIO_FLAG(C)
|
||||
BFIN_READ_FIO_FLAG(S)
|
||||
BFIN_READ_FIO_FLAG(T)
|
||||
|
||||
#else
|
||||
#define bfin_write_FIO_FLAG_D(val) bfin_write16(FIO_FLAG_D,val)
|
||||
#define bfin_write_FIO_FLAG_C(val) bfin_write16(FIO_FLAG_C,val)
|
||||
#define bfin_write_FIO_FLAG_S(val) bfin_write16(FIO_FLAG_S,val)
|
||||
#define bfin_write_FIO_FLAG_T(val) bfin_write16(FIO_FLAG_T,val)
|
||||
#define bfin_read_FIO_FLAG_T() bfin_read16(FIO_FLAG_T)
|
||||
#define bfin_read_FIO_FLAG_C() bfin_read16(FIO_FLAG_C)
|
||||
#define bfin_read_FIO_FLAG_S() bfin_read16(FIO_FLAG_S)
|
||||
#define bfin_read_FIO_FLAG_D() bfin_read16(FIO_FLAG_D)
|
||||
#endif
|
||||
|
||||
|
||||
/* DMA Controller */
|
||||
#define bfin_read_DMA0_CONFIG() bfin_read16(DMA0_CONFIG)
|
||||
#define bfin_write_DMA0_CONFIG(val) bfin_write16(DMA0_CONFIG,val)
|
||||
|
|
|
|||
|
|
@ -104,6 +104,7 @@
|
|||
#define UART_GCTL 0xFFC00424 /* Global Control Register */
|
||||
|
||||
/* SPI Controller (0xFFC00500 - 0xFFC005FF) */
|
||||
#define SPI0_REGBASE 0xFFC00500
|
||||
#define SPI_CTL 0xFFC00500 /* SPI Control Register */
|
||||
#define SPI_FLG 0xFFC00504 /* SPI Flag register */
|
||||
#define SPI_STAT 0xFFC00508 /* SPI Status register */
|
||||
|
|
@ -928,7 +929,7 @@
|
|||
#define GM 0x00000008 /* When RDBR full, get more (=1) data or discard (=0) incoming Data */
|
||||
#define PSSE 0x00000010 /* Enable (=1) Slave-Select input for Master. */
|
||||
#define EMISO 0x00000020 /* Enable (=1) MISO pin as an output. */
|
||||
#define SPI_LEN 0x00000100 /* Word length (0 => 8 bits, 1 => 16 bits) */
|
||||
#define SIZE 0x00000100 /* Word length (0 => 8 bits, 1 => 16 bits) */
|
||||
#define LSBF 0x00000200 /* Data format (0 => MSB sent/received first 1 => LSB sent/received first) */
|
||||
#define CPHA 0x00000400 /* Clock phase (0 => SPICLK starts toggling in middle of xfer, 1 => SPICLK toggles at the beginning of xfer. */
|
||||
#define CPOL 0x00000800 /* Clock polarity (0 => active-high, 1 => active-low) */
|
||||
|
|
|
|||
|
|
@ -128,6 +128,8 @@ Core Emulation **
|
|||
#define IRQ_PF14 47
|
||||
#define IRQ_PF15 48
|
||||
|
||||
#define GPIO_IRQ_BASE IRQ_PF0
|
||||
|
||||
#ifdef CONFIG_IRQCHIP_DEMUX_GPIO
|
||||
#define NR_IRQS (IRQ_PF15+1)
|
||||
#else
|
||||
|
|
|
|||
|
|
@ -51,10 +51,10 @@
|
|||
|
||||
/* Level 1 Memory */
|
||||
|
||||
#ifdef CONFIG_BLKFIN_CACHE
|
||||
#define BLKFIN_ICACHESIZE (16*1024)
|
||||
#ifdef CONFIG_BFIN_ICACHE
|
||||
#define BFIN_ICACHESIZE (16*1024)
|
||||
#else
|
||||
#define BLKFIN_ICACHESIZE (0*1024)
|
||||
#define BFIN_ICACHESIZE (0*1024)
|
||||
#endif
|
||||
|
||||
/* Memory Map for ADSP-BF533 processors */
|
||||
|
|
@ -64,35 +64,35 @@
|
|||
#define L1_DATA_A_START 0xFF800000
|
||||
#define L1_DATA_B_START 0xFF900000
|
||||
|
||||
#ifdef CONFIG_BLKFIN_CACHE
|
||||
#ifdef CONFIG_BFIN_ICACHE
|
||||
#define L1_CODE_LENGTH (0x14000 - 0x4000)
|
||||
#else
|
||||
#define L1_CODE_LENGTH 0x14000
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_BLKFIN_DCACHE
|
||||
#ifdef CONFIG_BFIN_DCACHE
|
||||
|
||||
#ifdef CONFIG_BLKFIN_DCACHE_BANKA
|
||||
#ifdef CONFIG_BFIN_DCACHE_BANKA
|
||||
#define DMEM_CNTR (ACACHE_BSRAM | ENDCPLB | PORT_PREF0)
|
||||
#define L1_DATA_A_LENGTH (0x8000 - 0x4000)
|
||||
#define L1_DATA_B_LENGTH 0x8000
|
||||
#define BLKFIN_DCACHESIZE (16*1024)
|
||||
#define BLKFIN_DSUPBANKS 1
|
||||
#define BFIN_DCACHESIZE (16*1024)
|
||||
#define BFIN_DSUPBANKS 1
|
||||
#else
|
||||
#define DMEM_CNTR (ACACHE_BCACHE | ENDCPLB | PORT_PREF0)
|
||||
#define L1_DATA_A_LENGTH (0x8000 - 0x4000)
|
||||
#define L1_DATA_B_LENGTH (0x8000 - 0x4000)
|
||||
#define BLKFIN_DCACHESIZE (32*1024)
|
||||
#define BLKFIN_DSUPBANKS 2
|
||||
#define BFIN_DCACHESIZE (32*1024)
|
||||
#define BFIN_DSUPBANKS 2
|
||||
#endif
|
||||
|
||||
#else
|
||||
#define DMEM_CNTR (ASRAM_BSRAM | ENDCPLB | PORT_PREF0)
|
||||
#define L1_DATA_A_LENGTH 0x8000
|
||||
#define L1_DATA_B_LENGTH 0x8000
|
||||
#define BLKFIN_DCACHESIZE (0*1024)
|
||||
#define BLKFIN_DSUPBANKS 0
|
||||
#endif /*CONFIG_BLKFIN_DCACHE*/
|
||||
#define BFIN_DCACHESIZE (0*1024)
|
||||
#define BFIN_DSUPBANKS 0
|
||||
#endif /*CONFIG_BFIN_DCACHE*/
|
||||
#endif
|
||||
|
||||
/* Memory Map for ADSP-BF532 processors */
|
||||
|
|
@ -102,36 +102,36 @@
|
|||
#define L1_DATA_A_START 0xFF804000
|
||||
#define L1_DATA_B_START 0xFF904000
|
||||
|
||||
#ifdef CONFIG_BLKFIN_CACHE
|
||||
#ifdef CONFIG_BFIN_ICACHE
|
||||
#define L1_CODE_LENGTH (0xC000 - 0x4000)
|
||||
#else
|
||||
#define L1_CODE_LENGTH 0xC000
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_BLKFIN_DCACHE
|
||||
#ifdef CONFIG_BFIN_DCACHE
|
||||
|
||||
#ifdef CONFIG_BLKFIN_DCACHE_BANKA
|
||||
#ifdef CONFIG_BFIN_DCACHE_BANKA
|
||||
#define DMEM_CNTR (ACACHE_BSRAM | ENDCPLB | PORT_PREF0)
|
||||
#define L1_DATA_A_LENGTH (0x4000 - 0x4000)
|
||||
#define L1_DATA_B_LENGTH 0x4000
|
||||
#define BLKFIN_DCACHESIZE (16*1024)
|
||||
#define BLKFIN_DSUPBANKS 1
|
||||
#define BFIN_DCACHESIZE (16*1024)
|
||||
#define BFIN_DSUPBANKS 1
|
||||
|
||||
#else
|
||||
#define DMEM_CNTR (ACACHE_BCACHE | ENDCPLB | PORT_PREF0)
|
||||
#define L1_DATA_A_LENGTH (0x4000 - 0x4000)
|
||||
#define L1_DATA_B_LENGTH (0x4000 - 0x4000)
|
||||
#define BLKFIN_DCACHESIZE (32*1024)
|
||||
#define BLKFIN_DSUPBANKS 2
|
||||
#define BFIN_DCACHESIZE (32*1024)
|
||||
#define BFIN_DSUPBANKS 2
|
||||
#endif
|
||||
|
||||
#else
|
||||
#define DMEM_CNTR (ASRAM_BSRAM | ENDCPLB | PORT_PREF0)
|
||||
#define L1_DATA_A_LENGTH 0x4000
|
||||
#define L1_DATA_B_LENGTH 0x4000
|
||||
#define BLKFIN_DCACHESIZE (0*1024)
|
||||
#define BLKFIN_DSUPBANKS 0
|
||||
#endif /*CONFIG_BLKFIN_DCACHE*/
|
||||
#define BFIN_DCACHESIZE (0*1024)
|
||||
#define BFIN_DSUPBANKS 0
|
||||
#endif /*CONFIG_BFIN_DCACHE*/
|
||||
#endif
|
||||
|
||||
/* Memory Map for ADSP-BF531 processors */
|
||||
|
|
@ -144,16 +144,16 @@
|
|||
#define L1_DATA_B_LENGTH 0x0000
|
||||
|
||||
|
||||
#ifdef CONFIG_BLKFIN_DCACHE
|
||||
#ifdef CONFIG_BFIN_DCACHE
|
||||
#define DMEM_CNTR (ACACHE_BSRAM | ENDCPLB | PORT_PREF0)
|
||||
#define L1_DATA_A_LENGTH (0x4000 - 0x4000)
|
||||
#define BLKFIN_DCACHESIZE (16*1024)
|
||||
#define BLKFIN_DSUPBANKS 1
|
||||
#define BFIN_DCACHESIZE (16*1024)
|
||||
#define BFIN_DSUPBANKS 1
|
||||
#else
|
||||
#define DMEM_CNTR (ASRAM_BSRAM | ENDCPLB | PORT_PREF0)
|
||||
#define L1_DATA_A_LENGTH 0x4000
|
||||
#define BLKFIN_DCACHESIZE (0*1024)
|
||||
#define BLKFIN_DSUPBANKS 0
|
||||
#define BFIN_DCACHESIZE (0*1024)
|
||||
#define BFIN_DSUPBANKS 0
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,139 +1,144 @@
|
|||
|
||||
/*
|
||||
* File: include/asm-blackfin/mach-bf537/anomaly.h
|
||||
* Based on:
|
||||
* Author:
|
||||
* File: include/asm-blackfin/mach-bf537/anomaly.h
|
||||
* Bugs: Enter bugs at http://blackfin.uclinux.org/
|
||||
*
|
||||
* Created:
|
||||
* Description:
|
||||
*
|
||||
* Rev:
|
||||
*
|
||||
* Modified:
|
||||
*
|
||||
*
|
||||
* Bugs: Enter bugs at http://blackfin.uclinux.org/
|
||||
*
|
||||
* 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, 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; see the file COPYING.
|
||||
* If not, write to the Free Software Foundation,
|
||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
* Copyright (C) 2004-2007 Analog Devices Inc.
|
||||
* Licensed under the GPL-2 or later.
|
||||
*/
|
||||
|
||||
/* This file shoule be up to date with:
|
||||
* - Revision J, June 1, 2006; ADSP-BF537 Blackfin Processor Anomaly List
|
||||
* - Revision I, June 1, 2006; ADSP-BF536 Blackfin Processor Anomaly List
|
||||
* - Revision J, June 1, 2006; ADSP-BF534 Blackfin Processor Anomaly List
|
||||
* - Revision M, March 13, 2007; ADSP-BF537 Blackfin Processor Anomaly List
|
||||
* - Revision L, March 13, 2007; ADSP-BF536 Blackfin Processor Anomaly List
|
||||
* - Revision M, March 13, 2007; ADSP-BF534 Blackfin Processor Anomaly List
|
||||
*/
|
||||
|
||||
#ifndef _MACH_ANOMALY_H_
|
||||
#define _MACH_ANOMALY_H_
|
||||
|
||||
/* We do not support 0.1 silicon - sorry */
|
||||
#if (defined(CONFIG_BF_REV_0_1))
|
||||
#error Kernel will not work on BF537/6/4 Version 0.1
|
||||
#if __SILICON_REVISION__ < 2
|
||||
# error Kernel will not work on BF537 silicon version 0.0 or 0.1
|
||||
#endif
|
||||
|
||||
#if (defined(CONFIG_BF_REV_0_3) || defined(CONFIG_BF_REV_0_2))
|
||||
#define ANOMALY_05000074 /* A multi issue instruction with dsp32shiftimm in
|
||||
slot1 and store of a P register in slot 2 is not
|
||||
supported */
|
||||
#define ANOMALY_05000119 /* DMA_RUN bit is not valid after a Peripheral Receive
|
||||
Channel DMA stops */
|
||||
#define ANOMALY_05000122 /* Rx.H can not be used to access 16-bit System MMR
|
||||
registers. */
|
||||
#define ANOMALY_05000166 /* PPI Data Lengths Between 8 and 16 do not zero out
|
||||
upper bits*/
|
||||
#define ANOMALY_05000180 /* PPI_DELAY not functional in PPI modes with 0 frame
|
||||
syncs */
|
||||
#if (defined(CONFIG_BF537) || defined(CONFIG_BF536))
|
||||
#define ANOMALY_05000247 /* CLKIN Buffer Output Enable Reset Behavior Is
|
||||
Changed */
|
||||
#if defined(__ADSPBF534__)
|
||||
# define ANOMALY_BF534 1
|
||||
#else
|
||||
# define ANOMALY_BF534 0
|
||||
#endif
|
||||
#define ANOMALY_05000265 /* Sensitivity to noise with slow input edge rates on
|
||||
SPORT external receive and transmit clocks. */
|
||||
#define ANOMALY_05000272 /* Certain data cache write through modes fail for
|
||||
VDDint <=0.9V */
|
||||
#define ANOMALY_05000273 /* Writes to Synchronous SDRAM memory may be lost */
|
||||
#define ANOMALY_05000277 /* Writes to a flag data register one SCLK cycle after
|
||||
an edge is detected may clear interrupt */
|
||||
#define ANOMALY_05000281 /* False Hardware Error Exception when ISR context is
|
||||
not restored */
|
||||
#define ANOMALY_05000282 /* Memory DMA corruption with 32-bit data and traffic
|
||||
control */
|
||||
#define ANOMALY_05000283 /* A system MMR write is stalled indefinitely when
|
||||
killed in a particular stage*/
|
||||
#define ANOMALY_05000310 /* False hardware errors caused by fetches at the
|
||||
* boundary of reserved memory */
|
||||
#define ANOMALY_05000312 /* Errors when SSYNC, CSYNC, or loads to LT, LB and LC
|
||||
registers are interrupted */
|
||||
#define ANOMALY_05000313 /* PPI is level sensitive on first transfer */
|
||||
#define ANOMALY_05000322 /* EMAC RMII mode at 10-Base-T speed: RX frames not
|
||||
* received properly */
|
||||
#if defined(__ADSPBF536__)
|
||||
# define ANOMALY_BF536 1
|
||||
#else
|
||||
# define ANOMALY_BF536 0
|
||||
#endif
|
||||
#if defined(__ADSPBF537__)
|
||||
# define ANOMALY_BF537 1
|
||||
#else
|
||||
# define ANOMALY_BF537 0
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_BF_REV_0_2)
|
||||
#define ANOMALY_05000244 /* With instruction cache enabled, a CSYNC or SSYNC or
|
||||
IDLE around a Change of Control causes
|
||||
unpredictable results */
|
||||
#define ANOMALY_05000250 /* Incorrect Bit-Shift of Data Word in Multichannel
|
||||
(TDM) */
|
||||
#if (defined(CONFIG_BF537) || defined(CONFIG_BF536))
|
||||
#define ANOMALY_05000252 /* EMAC Tx DMA error after an early frame abort */
|
||||
#endif
|
||||
#define ANOMALY_05000253 /* Maximum external clock speed for Timers */
|
||||
#define ANOMALY_05000255 /* Entering Hibernate Mode with RTC Seconds event
|
||||
interrupt not functional */
|
||||
#if (defined(CONFIG_BF537) || defined(CONFIG_BF536))
|
||||
#define ANOMALY_05000256 /* EMAC MDIO input latched on wrong MDC edge */
|
||||
#endif
|
||||
#define ANOMALY_05000257 /* An interrupt or exception during short Hardware
|
||||
loops may cause the instruction fetch unit to
|
||||
malfunction */
|
||||
#define ANOMALY_05000258 /* Instruction Cache is corrupted when bit 9 and 12 of
|
||||
the ICPLB Data registers differ */
|
||||
#define ANOMALY_05000260 /* ICPLB_STATUS MMR register may be corrupted */
|
||||
#define ANOMALY_05000261 /* DCPLB_FAULT_ADDR MMR register may be corrupted */
|
||||
#define ANOMALY_05000262 /* Stores to data cache may be lost */
|
||||
#define ANOMALY_05000263 /* Hardware loop corrupted when taking an ICPLB exception */
|
||||
#define ANOMALY_05000264 /* A Sync instruction (CSYNC, SSYNC) or an IDLE
|
||||
instruction will cause an infinite stall in the
|
||||
second to last instruction in a hardware loop */
|
||||
#define ANOMALY_05000268 /* Memory DMA error when peripheral DMA is running
|
||||
and non-zero DEB_TRAFFIC_PERIOD value */
|
||||
#define ANOMALY_05000270 /* High I/O activity causes the output voltage of the
|
||||
internal voltage regulator (VDDint) to decrease */
|
||||
#define ANOMALY_05000277 /* Writes to a flag data register one SCLK cycle after
|
||||
an edge is detected may clear interrupt */
|
||||
#define ANOMALY_05000278 /* Disabling Peripherals with DMA running may cause
|
||||
DMA system instability */
|
||||
#define ANOMALY_05000280 /* SPI Master boot mode does not work well with
|
||||
Atmel Dataflash devices */
|
||||
#define ANOMALY_05000281 /* False Hardware Error Exception when ISR context
|
||||
* is not restored */
|
||||
#define ANOMALY_05000282 /* Memory DMA corruption with 32-bit data and traffic
|
||||
* control */
|
||||
#define ANOMALY_05000283 /* System MMR Write Is Stalled Indefinitely When
|
||||
* Killed in a Particular Stage */
|
||||
#define ANOMALY_05000285 /* New Feature: EMAC TX DMA Word Alignment
|
||||
* (Not Available On Older Silicon) */
|
||||
#define ANOMALY_05000288 /* SPORTs may receive bad data if FIFOs fill up */
|
||||
#define ANOMALY_05000315 /* Killed System MMR Write Completes Erroneously
|
||||
* On Next System MMR Access */
|
||||
#define ANOMALY_05000316 /* EMAC RMII mode: collisions occur in Full Duplex
|
||||
* mode */
|
||||
#define ANOMALY_05000321 /* EMAC RMII mode: TX frames in half duplex fail with
|
||||
* status No Carrier */
|
||||
#endif /* CONFIG_BF_REV_0_2 */
|
||||
/* Multi-issue instruction with dsp32shiftimm in slot1 and P-reg store in slot 2 not supported */
|
||||
#define ANOMALY_05000074 (1)
|
||||
/* DMA_RUN bit is not valid after a Peripheral Receive Channel DMA stops */
|
||||
#define ANOMALY_05000119 (1)
|
||||
/* Rx.H cannot be used to access 16-bit System MMR registers */
|
||||
#define ANOMALY_05000122 (1)
|
||||
/* Killed 32-bit MMR write leads to next system MMR access thinking it should be 32-bit */
|
||||
#define ANOMALY_05000157 (__SILICON_REVISION__ < 2)
|
||||
/* PPI_DELAY not functional in PPI modes with 0 frame syncs */
|
||||
#define ANOMALY_05000180 (1)
|
||||
/* Instruction Cache Is Not Functional */
|
||||
#define ANOMALY_05000237 (__SILICON_REVISION__ < 2)
|
||||
/* If i-cache is on, CSYNC/SSYNC/IDLE around Change of Control causes failures */
|
||||
#define ANOMALY_05000244 (__SILICON_REVISION__ < 3)
|
||||
/* Spurious Hardware Error from an access in the shadow of a conditional branch */
|
||||
#define ANOMALY_05000245 (1)
|
||||
/* CLKIN Buffer Output Enable Reset Behavior Is Changed */
|
||||
#define ANOMALY_05000247 (1)
|
||||
/* Incorrect Bit-Shift of Data Word in Multichannel (TDM) mode in certain conditions */
|
||||
#define ANOMALY_05000250 (__SILICON_REVISION__ < 3)
|
||||
/* EMAC Tx DMA error after an early frame abort */
|
||||
#define ANOMALY_05000252 (__SILICON_REVISION__ < 3)
|
||||
/* Maximum external clock speed for Timers */
|
||||
#define ANOMALY_05000253 (__SILICON_REVISION__ < 3)
|
||||
/* Incorrect Timer Pulse Width in Single-Shot PWM_OUT mode with external clock */
|
||||
#define ANOMALY_05000254 (__SILICON_REVISION__ > 2)
|
||||
/* Entering Hibernate Mode with RTC Seconds event interrupt not functional */
|
||||
#define ANOMALY_05000255 (__SILICON_REVISION__ < 3)
|
||||
/* EMAC MDIO input latched on wrong MDC edge */
|
||||
#define ANOMALY_05000256 (__SILICON_REVISION__ < 3)
|
||||
/* Interrupt/Exception during short hardware loop may cause bad instruction fetches */
|
||||
#define ANOMALY_05000257 (__SILICON_REVISION__ < 3)
|
||||
/* Instruction Cache is corrupted when bits 9 and 12 of the ICPLB Data registers differ */
|
||||
#define ANOMALY_05000258 (((ANOMALY_BF536 || ANOMALY_BF537) && __SILICON_REVISION__ == 1) || __SILICON_REVISION__ == 2)
|
||||
/* ICPLB_STATUS MMR register may be corrupted */
|
||||
#define ANOMALY_05000260 (__SILICON_REVISION__ == 2)
|
||||
/* DCPLB_FAULT_ADDR MMR register may be corrupted */
|
||||
#define ANOMALY_05000261 (__SILICON_REVISION__ < 3)
|
||||
/* Stores to data cache may be lost */
|
||||
#define ANOMALY_05000262 (__SILICON_REVISION__ < 3)
|
||||
/* Hardware loop corrupted when taking an ICPLB exception */
|
||||
#define ANOMALY_05000263 (__SILICON_REVISION__ == 2)
|
||||
/* CSYNC/SSYNC/IDLE causes infinite stall in second to last instruction in hardware loop */
|
||||
#define ANOMALY_05000264 (__SILICON_REVISION__ < 3)
|
||||
/* Sensitivity to noise with slow input edge rates on external SPORT TX and RX clocks */
|
||||
#define ANOMALY_05000265 (1)
|
||||
/* Memory DMA error when peripheral DMA is running with non-zero DEB_TRAFFIC_PERIOD */
|
||||
#define ANOMALY_05000268 (__SILICON_REVISION__ < 3)
|
||||
/* High I/O activity causes output voltage of internal voltage regulator (VDDint) to decrease */
|
||||
#define ANOMALY_05000270 (__SILICON_REVISION__ < 3)
|
||||
/* Certain data cache write through modes fail for VDDint <=0.9V */
|
||||
#define ANOMALY_05000272 (1)
|
||||
/* Writes to Synchronous SDRAM memory may be lost */
|
||||
#define ANOMALY_05000273 (__SILICON_REVISION__ < 3)
|
||||
/* Writes to an I/O data register one SCLK cycle after an edge is detected may clear interrupt */
|
||||
#define ANOMALY_05000277 (__SILICON_REVISION__ < 3)
|
||||
/* Disabling Peripherals with DMA running may cause DMA system instability */
|
||||
#define ANOMALY_05000278 (((ANOMALY_BF536 || ANOMALY_BF537) && __SILICON_REVISION__ < 3) || (ANOMALY_BF534 && __SILICON_REVISION__ < 2))
|
||||
/* SPI Master boot mode does not work well with Atmel Data flash devices */
|
||||
#define ANOMALY_05000280 (1)
|
||||
/* False Hardware Error Exception when ISR context is not restored */
|
||||
#define ANOMALY_05000281 (__SILICON_REVISION__ < 3)
|
||||
/* Memory DMA corruption with 32-bit data and traffic control */
|
||||
#define ANOMALY_05000282 (__SILICON_REVISION__ < 3)
|
||||
/* System MMR Write Is Stalled Indefinitely When Killed in a Particular Stage */
|
||||
#define ANOMALY_05000283 (__SILICON_REVISION__ < 3)
|
||||
/* New Feature: EMAC TX DMA Word Alignment (Not Available On Older Silicon) */
|
||||
#define ANOMALY_05000285 (__SILICON_REVISION__ < 3)
|
||||
/* SPORTs may receive bad data if FIFOs fill up */
|
||||
#define ANOMALY_05000288 (__SILICON_REVISION__ < 3)
|
||||
/* Memory to memory DMA source/destination descriptors must be in same memory space */
|
||||
#define ANOMALY_05000301 (1)
|
||||
/* SSYNCs After Writes To CAN/DMA MMR Registers Are Not Always Handled Correctly */
|
||||
#define ANOMALY_05000304 (__SILICON_REVISION__ < 3)
|
||||
/* New Feature: Additional Hysteresis on SPORT Input Pins (Not Available On Older Silicon) */
|
||||
#define ANOMALY_05000305 (__SILICON_REVISION__ < 3)
|
||||
/* SCKELOW Bit Does Not Maintain State Through Hibernate */
|
||||
#define ANOMALY_05000307 (__SILICON_REVISION__ < 3)
|
||||
/* Writing UART_THR while UART clock is disabled sends erroneous start bit */
|
||||
#define ANOMALY_05000309 (__SILICON_REVISION__ < 3)
|
||||
/* False hardware errors caused by fetches at the boundary of reserved memory */
|
||||
#define ANOMALY_05000310 (1)
|
||||
/* Errors when SSYNC, CSYNC, or loads to LT, LB and LC registers are interrupted */
|
||||
#define ANOMALY_05000312 (1)
|
||||
/* PPI is level sensitive on first transfer */
|
||||
#define ANOMALY_05000313 (1)
|
||||
/* Killed System MMR Write Completes Erroneously On Next System MMR Access */
|
||||
#define ANOMALY_05000315 (__SILICON_REVISION__ < 3)
|
||||
/* EMAC RMII mode: collisions occur in Full Duplex mode */
|
||||
#define ANOMALY_05000316 (__SILICON_REVISION__ < 3)
|
||||
/* EMAC RMII mode: TX frames in half duplex fail with status No Carrier */
|
||||
#define ANOMALY_05000321 (__SILICON_REVISION__ < 3)
|
||||
/* EMAC RMII mode at 10-Base-T speed: RX frames not received properly */
|
||||
#define ANOMALY_05000322 (1)
|
||||
|
||||
#endif /* _MACH_ANOMALY_H_ */
|
||||
/* Anomalies that don't exist on this proc */
|
||||
#define ANOMALY_05000125 (0)
|
||||
#define ANOMALY_05000158 (0)
|
||||
#define ANOMALY_05000183 (0)
|
||||
#define ANOMALY_05000198 (0)
|
||||
#define ANOMALY_05000230 (0)
|
||||
#define ANOMALY_05000266 (0)
|
||||
#define ANOMALY_05000311 (0)
|
||||
#define ANOMALY_05000323 (0)
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -62,12 +62,12 @@
|
|||
/***************************/
|
||||
|
||||
|
||||
#define BLKFIN_DSUBBANKS 4
|
||||
#define BLKFIN_DWAYS 2
|
||||
#define BLKFIN_DLINES 64
|
||||
#define BLKFIN_ISUBBANKS 4
|
||||
#define BLKFIN_IWAYS 4
|
||||
#define BLKFIN_ILINES 32
|
||||
#define BFIN_DSUBBANKS 4
|
||||
#define BFIN_DWAYS 2
|
||||
#define BFIN_DLINES 64
|
||||
#define BFIN_ISUBBANKS 4
|
||||
#define BFIN_IWAYS 4
|
||||
#define BFIN_ILINES 32
|
||||
|
||||
#define WAY0_L 0x1
|
||||
#define WAY1_L 0x2
|
||||
|
|
@ -121,97 +121,6 @@
|
|||
|
||||
#define AMGCTLVAL (V_AMBEN | V_AMCKEN | V_CDPRIO)
|
||||
|
||||
#define MAX_VC 650000000
|
||||
#define MIN_VC 50000000
|
||||
|
||||
/********************************PLL Settings **************************************/
|
||||
#ifdef CONFIG_BFIN_KERNEL_CLOCK
|
||||
#if (CONFIG_VCO_MULT < 0)
|
||||
#error "VCO Multiplier is less than 0. Please select a different value"
|
||||
#endif
|
||||
|
||||
#if (CONFIG_VCO_MULT == 0)
|
||||
#error "VCO Multiplier should be greater than 0. Please select a different value"
|
||||
#endif
|
||||
|
||||
#if (CONFIG_VCO_MULT > 64)
|
||||
#error "VCO Multiplier is more than 64. Please select a different value"
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_CLKIN_HALF
|
||||
#define CONFIG_VCO_HZ (CONFIG_CLKIN_HZ * CONFIG_VCO_MULT)
|
||||
#else
|
||||
#define CONFIG_VCO_HZ ((CONFIG_CLKIN_HZ * CONFIG_VCO_MULT)/2)
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_PLL_BYPASS
|
||||
#define CONFIG_CCLK_HZ (CONFIG_VCO_HZ/CONFIG_CCLK_DIV)
|
||||
#define CONFIG_SCLK_HZ (CONFIG_VCO_HZ/CONFIG_SCLK_DIV)
|
||||
#else
|
||||
#define CONFIG_CCLK_HZ CONFIG_CLKIN_HZ
|
||||
#define CONFIG_SCLK_HZ CONFIG_CLKIN_HZ
|
||||
#endif
|
||||
|
||||
#if (CONFIG_SCLK_DIV < 1)
|
||||
#error "SCLK DIV cannot be less than 1 or more than 15. Please select a proper value"
|
||||
#endif
|
||||
|
||||
#if (CONFIG_SCLK_DIV > 15)
|
||||
#error "SCLK DIV cannot be less than 1 or more than 15. Please select a proper value"
|
||||
#endif
|
||||
|
||||
#if (CONFIG_CCLK_DIV != 1)
|
||||
#if (CONFIG_CCLK_DIV != 2)
|
||||
#if (CONFIG_CCLK_DIV != 4)
|
||||
#if (CONFIG_CCLK_DIV != 8)
|
||||
#error "CCLK DIV can be 1,2,4 or 8 only. Please select a proper value"
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if (CONFIG_VCO_HZ > MAX_VC)
|
||||
#error "VCO selected is more than maximum value. Please change the VCO multipler"
|
||||
#endif
|
||||
|
||||
#if (CONFIG_SCLK_HZ > 133000000)
|
||||
#error "Sclk value selected is more than maximum. Please select a proper value for SCLK multiplier"
|
||||
#endif
|
||||
|
||||
#if (CONFIG_SCLK_HZ < 27000000)
|
||||
#error "Sclk value selected is less than minimum. Please select a proper value for SCLK multiplier"
|
||||
#endif
|
||||
|
||||
#if (CONFIG_SCLK_HZ >= CONFIG_CCLK_HZ)
|
||||
#if (CONFIG_SCLK_HZ != CONFIG_CLKIN_HZ)
|
||||
#if (CONFIG_CCLK_HZ != CONFIG_CLKIN_HZ)
|
||||
#error "Please select sclk less than cclk"
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if (CONFIG_CCLK_DIV == 1)
|
||||
#define CONFIG_CCLK_ACT_DIV CCLK_DIV1
|
||||
#endif
|
||||
#if (CONFIG_CCLK_DIV == 2)
|
||||
#define CONFIG_CCLK_ACT_DIV CCLK_DIV2
|
||||
#endif
|
||||
#if (CONFIG_CCLK_DIV == 4)
|
||||
#define CONFIG_CCLK_ACT_DIV CCLK_DIV4
|
||||
#endif
|
||||
#if (CONFIG_CCLK_DIV == 8)
|
||||
#define CONFIG_CCLK_ACT_DIV CCLK_DIV8
|
||||
#endif
|
||||
#ifndef CONFIG_CCLK_ACT_DIV
|
||||
#define CONFIG_CCLK_ACT_DIV CONFIG_CCLK_DIV_not_defined_properly
|
||||
#endif
|
||||
|
||||
#if defined(ANOMALY_05000273) && (CONFIG_CCLK_DIV == 1)
|
||||
#error ANOMALY 05000273, please make sure CCLK is at least 2x SCLK
|
||||
#endif
|
||||
|
||||
#endif /* CONFIG_BFIN_KERNEL_CLOCK */
|
||||
|
||||
#ifdef CONFIG_BF537
|
||||
#define CPU "BF537"
|
||||
#define CPUID 0x027c8000
|
||||
|
|
@ -229,59 +138,4 @@
|
|||
#define CPUID 0x0
|
||||
#endif
|
||||
|
||||
#if (CONFIG_MEM_SIZE % 4)
|
||||
#error "SDRAM mem size must be multible of 4MB"
|
||||
#endif
|
||||
|
||||
#define SDRAM_IGENERIC (CPLB_L1_CHBL | CPLB_USER_RD | CPLB_VALID | CPLB_PORTPRIO)
|
||||
#define SDRAM_IKERNEL (SDRAM_IGENERIC | CPLB_LOCK)
|
||||
#define L1_IMEMORY ( CPLB_USER_RD | CPLB_VALID | CPLB_LOCK)
|
||||
#define SDRAM_INON_CHBL ( CPLB_USER_RD | CPLB_VALID)
|
||||
|
||||
/*Use the menuconfig cache policy here - CONFIG_BLKFIN_WT/CONFIG_BLKFIN_WB*/
|
||||
|
||||
#define ANOMALY_05000158_WORKAROUND 0x200
|
||||
#ifdef CONFIG_BLKFIN_WB /*Write Back Policy */
|
||||
#define SDRAM_DGENERIC (CPLB_L1_CHBL | CPLB_DIRTY \
|
||||
| CPLB_SUPV_WR | CPLB_USER_WR | CPLB_USER_RD | CPLB_VALID | ANOMALY_05000158_WORKAROUND)
|
||||
#else /*Write Through */
|
||||
#define SDRAM_DGENERIC (CPLB_L1_CHBL | CPLB_WT | CPLB_L1_AOW \
|
||||
| CPLB_SUPV_WR | CPLB_USER_WR | CPLB_USER_RD | CPLB_VALID | ANOMALY_05000158_WORKAROUND | CPLB_DIRTY )
|
||||
#endif
|
||||
|
||||
|
||||
#define L1_DMEMORY (CPLB_SUPV_WR | CPLB_USER_WR | CPLB_USER_RD | CPLB_VALID | ANOMALY_05000158_WORKAROUND | CPLB_LOCK | CPLB_DIRTY )
|
||||
#define SDRAM_DNON_CHBL (CPLB_SUPV_WR | CPLB_USER_WR | CPLB_USER_RD | CPLB_VALID | ANOMALY_05000158_WORKAROUND | CPLB_DIRTY )
|
||||
#define SDRAM_EBIU (CPLB_SUPV_WR | CPLB_USER_WR | CPLB_USER_RD | CPLB_VALID | ANOMALY_05000158_WORKAROUND | CPLB_DIRTY )
|
||||
#define SDRAM_OOPS (CPLB_VALID | ANOMALY_05000158_WORKAROUND | CPLB_LOCK | CPLB_DIRTY )
|
||||
|
||||
#define SIZE_1K 0x00000400 /* 1K */
|
||||
#define SIZE_4K 0x00001000 /* 4K */
|
||||
#define SIZE_1M 0x00100000 /* 1M */
|
||||
#define SIZE_4M 0x00400000 /* 4M */
|
||||
|
||||
#define MAX_CPLBS (16 * 2)
|
||||
|
||||
/*
|
||||
* Number of required data CPLB switchtable entries
|
||||
* MEMSIZE / 4 (we mostly install 4M page size CPLBs
|
||||
* approx 16 for smaller 1MB page size CPLBs for allignment purposes
|
||||
* 1 for L1 Data Memory
|
||||
* 1 for CONFIG_DEBUG_HUNT_FOR_ZERO
|
||||
* 1 for ASYNC Memory
|
||||
*/
|
||||
|
||||
|
||||
#define MAX_SWITCH_D_CPLBS (((CONFIG_MEM_SIZE / 4) + 16 + 1 + 1 + 1) * 2)
|
||||
|
||||
/*
|
||||
* Number of required instruction CPLB switchtable entries
|
||||
* MEMSIZE / 4 (we mostly install 4M page size CPLBs
|
||||
* approx 12 for smaller 1MB page size CPLBs for allignment purposes
|
||||
* 1 for L1 Instruction Memory
|
||||
* 1 for CONFIG_DEBUG_HUNT_FOR_ZERO
|
||||
*/
|
||||
|
||||
#define MAX_SWITCH_I_CPLBS (((CONFIG_MEM_SIZE / 4) + 12 + 1 + 1) * 2)
|
||||
|
||||
#endif /* __MACH_BF537_H__ */
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@
|
|||
#include "defBF537.h"
|
||||
#endif
|
||||
|
||||
#if !(defined(__ASSEMBLY__) || defined(ASSEMBLY))
|
||||
#if !defined(__ASSEMBLY__)
|
||||
#include "cdefBF534.h"
|
||||
|
||||
/* UART 0*/
|
||||
|
|
@ -143,284 +143,6 @@
|
|||
#define bfin_write_STOPCK_OFF(val) bfin_write_STOPCK(val)
|
||||
#define STOPCK_OFF STOPCK
|
||||
|
||||
/* FIO USE PORT F*/
|
||||
#ifdef CONFIG_BF537_PORT_F
|
||||
#define bfin_read_PORT_FER() bfin_read_PORTF_FER()
|
||||
#define bfin_write_PORT_FER(val) bfin_write_PORTF_FER(val)
|
||||
#define bfin_read_FIO_FLAG_D() bfin_read_PORTFIO()
|
||||
#define bfin_write_FIO_FLAG_D(val) bfin_write_PORTFIO(val)
|
||||
#define bfin_read_FIO_FLAG_C() bfin_read_PORTFIO_CLEAR()
|
||||
#define bfin_write_FIO_FLAG_C(val) bfin_write_PORTFIO_CLEAR(val)
|
||||
#define bfin_read_FIO_FLAG_S() bfin_read_PORTFIO_SET()
|
||||
#define bfin_write_FIO_FLAG_S(val) bfin_write_PORTFIO_SET(val)
|
||||
#define bfin_read_FIO_FLAG_T() bfin_read_PORTFIO_TOGGLE()
|
||||
#define bfin_write_FIO_FLAG_T(val) bfin_write_PORTFIO_TOGGLE(val)
|
||||
#define bfin_read_FIO_MASKA_D() bfin_read_PORTFIO_MASKA()
|
||||
#define bfin_write_FIO_MASKA_D(val) bfin_write_PORTFIO_MASKA(val)
|
||||
#define bfin_read_FIO_MASKA_C() bfin_read_PORTFIO_MASKA_CLEAR()
|
||||
#define bfin_write_FIO_MASKA_C(val) bfin_write_PORTFIO_MASKA_CLEAR(val)
|
||||
#define bfin_read_FIO_MASKA_S() bfin_read_PORTFIO_MASKA_SET()
|
||||
#define bfin_write_FIO_MASKA_S(val) bfin_write_PORTFIO_MASKA_SET(val)
|
||||
#define bfin_read_FIO_MASKA_T() bfin_read_PORTFIO_MASKA_TOGGLE()
|
||||
#define bfin_write_FIO_MASKA_T(val) bfin_write_PORTFIO_MASKA_TOGGLE(val)
|
||||
#define bfin_read_FIO_MASKB_D() bfin_read_PORTFIO_MASKB()
|
||||
#define bfin_write_FIO_MASKB_D(val) bfin_write_PORTFIO_MASKB(val)
|
||||
#define bfin_read_FIO_MASKB_C() bfin_read_PORTFIO_MASKB_CLEAR()
|
||||
#define bfin_write_FIO_MASKB_C(val) bfin_write_PORTFIO_MASKB_CLEAR(val)
|
||||
#define bfin_read_FIO_MASKB_S() bfin_read_PORTFIO_MASKB_SET()
|
||||
#define bfin_write_FIO_MASKB_S(val) bfin_write_PORTFIO_MASKB_SET(val)
|
||||
#define bfin_read_FIO_MASKB_T() bfin_read_PORTFIO_MASKB_TOGGLE()
|
||||
#define bfin_write_FIO_MASKB_T(val) bfin_write_PORTFIO_MASKB_TOGGLE(val)
|
||||
#define bfin_read_FIO_DIR() bfin_read_PORTFIO_DIR()
|
||||
#define bfin_write_FIO_DIR(val) bfin_write_PORTFIO_DIR(val)
|
||||
#define bfin_read_FIO_POLAR() bfin_read_PORTFIO_POLAR()
|
||||
#define bfin_write_FIO_POLAR(val) bfin_write_PORTFIO_POLAR(val)
|
||||
#define bfin_read_FIO_EDGE() bfin_read_PORTFIO_EDGE()
|
||||
#define bfin_write_FIO_EDGE(val) bfin_write_PORTFIO_EDGE(val)
|
||||
#define bfin_read_FIO_BOTH() bfin_read_PORTFIO_BOTH()
|
||||
#define bfin_write_FIO_BOTH(val) bfin_write_PORTFIO_BOTH(val)
|
||||
#define bfin_read_FIO_INEN() bfin_read_PORTFIO_INEN()
|
||||
#define bfin_write_FIO_INEN(val) bfin_write_PORTFIO_INEN(val)
|
||||
|
||||
#define bfin_read_FIO_FLAG_D() bfin_read_PORTFIO()
|
||||
#define bfin_write_FIO_FLAG_D(val) bfin_write_PORTFIO(val)
|
||||
#define FIO_FLAG_D PORTFIO
|
||||
#define bfin_read_FIO_FLAG_C() bfin_read_PORTFIO_CLEAR()
|
||||
#define bfin_write_FIO_FLAG_C(val) bfin_write_PORTFIO_CLEAR(val)
|
||||
#define FIO_FLAG_C PORTFIO_CLEAR
|
||||
#define bfin_read_FIO_FLAG_S() bfin_read_PORTFIO_SET()
|
||||
#define bfin_write_FIO_FLAG_S(val) bfin_write_PORTFIO_SET(val)
|
||||
#define FIO_FLAG_S PORTFIO_SET
|
||||
#define bfin_read_FIO_FLAG_T() bfin_read_PORTFIO_TOGGLE()
|
||||
#define bfin_write_FIO_FLAG_T(val) bfin_write_PORTFIO_TOGGLE(val)
|
||||
#define FIO_FLAG_T PORTFIO_TOGGLE
|
||||
#define bfin_read_FIO_MASKA_D() bfin_read_PORTFIO_MASKA()
|
||||
#define bfin_write_FIO_MASKA_D(val) bfin_write_PORTFIO_MASKA(val)
|
||||
#define FIO_MASKA_D PORTFIO_MASKA
|
||||
#define bfin_read_FIO_MASKA_C() bfin_read_PORTFIO_MASKA_CLEAR()
|
||||
#define bfin_write_FIO_MASKA_C(val) bfin_write_PORTFIO_MASKA_CLEAR(val)
|
||||
#define FIO_MASKA_C PORTFIO_MASKA_CLEAR
|
||||
#define bfin_read_FIO_MASKA_S() bfin_read_PORTFIO_MASKA_SET()
|
||||
#define bfin_write_FIO_MASKA_S(val) bfin_write_PORTFIO_MASKA_SET(val)
|
||||
#define FIO_MASKA_S PORTFIO_MASKA_SET
|
||||
#define bfin_read_FIO_MASKA_T() bfin_read_PORTFIO_MASKA_TOGGLE()
|
||||
#define bfin_write_FIO_MASKA_T(val) bfin_write_PORTFIO_MASKA_TOGGLE(val)
|
||||
#define FIO_MASKA_T PORTFIO_MASKA_TOGGLE
|
||||
#define bfin_read_FIO_MASKB_D() bfin_read_PORTFIO_MASKB()
|
||||
#define bfin_write_FIO_MASKB_D(val) bfin_write_PORTFIO_MASKB(val)
|
||||
#define FIO_MASKB_D PORTFIO_MASKB
|
||||
#define bfin_read_FIO_MASKB_C() bfin_read_PORTFIO_MASKB_CLEAR()
|
||||
#define bfin_write_FIO_MASKB_C(val) bfin_write_PORTFIO_MASKB_CLEAR(val)
|
||||
#define FIO_MASKB_C PORTFIO_MASKB_CLEAR
|
||||
#define bfin_read_FIO_MASKB_S() bfin_read_PORTFIO_MASKB_SET()
|
||||
#define bfin_write_FIO_MASKB_S(val) bfin_write_PORTFIO_MASKB_SET(val)
|
||||
#define FIO_MASKB_S PORTFIO_MASKB_SET
|
||||
#define bfin_read_FIO_MASKB_T() bfin_read_PORTFIO_MASKB_TOGGLE()
|
||||
#define bfin_write_FIO_MASKB_T(val) bfin_write_PORTFIO_MASKB_TOGGLE(val)
|
||||
#define FIO_MASKB_T PORTFIO_MASKB_TOGGLE
|
||||
#define bfin_read_FIO_DIR() bfin_read_PORTFIO_DIR()
|
||||
#define bfin_write_FIO_DIR(val) bfin_write_PORTFIO_DIR(val)
|
||||
#define FIO_DIR PORTFIO_DIR
|
||||
#define bfin_read_FIO_POLAR() bfin_read_PORTFIO_POLAR()
|
||||
#define bfin_write_FIO_POLAR(val) bfin_write_PORTFIO_POLAR(val)
|
||||
#define FIO_POLAR PORTFIO_POLAR
|
||||
#define bfin_read_FIO_EDGE() bfin_read_PORTFIO_EDGE()
|
||||
#define bfin_write_FIO_EDGE(val) bfin_write_PORTFIO_EDGE(val)
|
||||
#define FIO_EDGE PORTFIO_EDGE
|
||||
#define bfin_read_FIO_BOTH() bfin_read_PORTFIO_BOTH()
|
||||
#define bfin_write_FIO_BOTH(val) bfin_write_PORTFIO_BOTH(val)
|
||||
#define FIO_BOTH PORTFIO_BOTH
|
||||
#define bfin_read_FIO_INEN() bfin_read_PORTFIO_INEN()
|
||||
#define bfin_write_FIO_INEN(val) bfin_write_PORTFIO_INEN(val)
|
||||
#define FIO_INEN PORTFIO_INEN
|
||||
#endif
|
||||
|
||||
/* FIO USE PORT G*/
|
||||
#ifdef CONFIG_BF537_PORT_G
|
||||
#define bfin_read_PORT_FER() bfin_read_PORTG_FER()
|
||||
#define bfin_write_PORT_FER(val) bfin_write_PORTG_FER(val)
|
||||
#define bfin_read_FIO_FLAG_D() bfin_read_PORTGIO()
|
||||
#define bfin_write_FIO_FLAG_D(val) bfin_write_PORTGIO(val)
|
||||
#define bfin_read_FIO_FLAG_C() bfin_read_PORTGIO_CLEAR()
|
||||
#define bfin_write_FIO_FLAG_C(val) bfin_write_PORTGIO_CLEAR(val)
|
||||
#define bfin_read_FIO_FLAG_S() bfin_read_PORTGIO_SET()
|
||||
#define bfin_write_FIO_FLAG_S(val) bfin_write_PORTGIO_SET(val)
|
||||
#define bfin_read_FIO_FLAG_T() bfin_read_PORTGIO_TOGGLE()
|
||||
#define bfin_write_FIO_FLAG_T(val) bfin_write_PORTGIO_TOGGLE(val)
|
||||
#define bfin_read_FIO_MASKA_D() bfin_read_PORTGIO_MASKA()
|
||||
#define bfin_write_FIO_MASKA_D(val) bfin_write_PORTGIO_MASKA(val)
|
||||
#define bfin_read_FIO_MASKA_C() bfin_read_PORTGIO_MASKA_CLEAR()
|
||||
#define bfin_write_FIO_MASKA_C(val) bfin_write_PORTGIO_MASKA_CLEAR(val)
|
||||
#define bfin_read_FIO_MASKA_S() bfin_read_PORTGIO_MASKA_SET()
|
||||
#define bfin_write_FIO_MASKA_S(val) bfin_write_PORTGIO_MASKA_SET(val)
|
||||
#define bfin_read_FIO_MASKA_T() bfin_read_PORTGIO_MASKA_TOGGLE()
|
||||
#define bfin_write_FIO_MASKA_T(val) bfin_write_PORTGIO_MASKA_TOGGLE(val)
|
||||
#define bfin_read_FIO_MASKB_D() bfin_read_PORTGIO_MASKB()
|
||||
#define bfin_write_FIO_MASKB_D(val) bfin_write_PORTGIO_MASKB(val)
|
||||
#define bfin_read_FIO_MASKB_C() bfin_read_PORTGIO_MASKB_CLEAR()
|
||||
#define bfin_write_FIO_MASKB_C(val) bfin_write_PORTGIO_MASKB_CLEAR(val)
|
||||
#define bfin_read_FIO_MASKB_S() bfin_read_PORTGIO_MASKB_SET()
|
||||
#define bfin_write_FIO_MASKB_S(val) bfin_write_PORTGIO_MASKB_SET(val)
|
||||
#define bfin_read_FIO_MASKB_T() bfin_read_PORTGIO_MASKB_TOGGLE()
|
||||
#define bfin_write_FIO_MASKB_T(val) bfin_write_PORTGIO_MASKB_TOGGLE(val)
|
||||
#define bfin_read_FIO_DIR() bfin_read_PORTGIO_DIR()
|
||||
#define bfin_write_FIO_DIR(val) bfin_write_PORTGIO_DIR(val)
|
||||
#define bfin_read_FIO_POLAR() bfin_read_PORTGIO_POLAR()
|
||||
#define bfin_write_FIO_POLAR(val) bfin_write_PORTGIO_POLAR(val)
|
||||
#define bfin_read_FIO_EDGE() bfin_read_PORTGIO_EDGE()
|
||||
#define bfin_write_FIO_EDGE(val) bfin_write_PORTGIO_EDGE(val)
|
||||
#define bfin_read_FIO_BOTH() bfin_read_PORTGIO_BOTH()
|
||||
#define bfin_write_FIO_BOTH(val) bfin_write_PORTGIO_BOTH(val)
|
||||
#define bfin_read_FIO_INEN() bfin_read_PORTGIO_INEN()
|
||||
#define bfin_write_FIO_INEN(val) bfin_write_PORTGIO_INEN(val)
|
||||
|
||||
#define bfin_read_FIO_FLAG_D() bfin_read_PORTGIO()
|
||||
#define bfin_write_FIO_FLAG_D(val) bfin_write_PORTGIO(val)
|
||||
#define FIO_FLAG_D PORTGIO
|
||||
#define bfin_read_FIO_FLAG_C() bfin_read_PORTGIO_CLEAR()
|
||||
#define bfin_write_FIO_FLAG_C(val) bfin_write_PORTGIO_CLEAR(val)
|
||||
#define FIO_FLAG_C PORTGIO_CLEAR
|
||||
#define bfin_read_FIO_FLAG_S() bfin_read_PORTGIO_SET()
|
||||
#define bfin_write_FIO_FLAG_S(val) bfin_write_PORTGIO_SET(val)
|
||||
#define FIO_FLAG_S PORTGIO_SET
|
||||
#define bfin_read_FIO_FLAG_T() bfin_read_PORTGIO_TOGGLE()
|
||||
#define bfin_write_FIO_FLAG_T(val) bfin_write_PORTGIO_TOGGLE(val)
|
||||
#define FIO_FLAG_T PORTGIO_TOGGLE
|
||||
#define bfin_read_FIO_MASKA_D() bfin_read_PORTGIO_MASKA()
|
||||
#define bfin_write_FIO_MASKA_D(val) bfin_write_PORTGIO_MASKA(val)
|
||||
#define FIO_MASKA_D PORTGIO_MASKA
|
||||
#define bfin_read_FIO_MASKA_C() bfin_read_PORTGIO_MASKA_CLEAR()
|
||||
#define bfin_write_FIO_MASKA_C(val) bfin_write_PORTGIO_MASKA_CLEAR(val)
|
||||
#define FIO_MASKA_C PORTGIO_MASKA_CLEAR
|
||||
#define bfin_read_FIO_MASKA_S() bfin_read_PORTGIO_MASKA_SET()
|
||||
#define bfin_write_FIO_MASKA_S(val) bfin_write_PORTGIO_MASKA_SET(val)
|
||||
#define FIO_MASKA_S PORTGIO_MASKA_SET
|
||||
#define bfin_read_FIO_MASKA_T() bfin_read_PORTGIO_MASKA_TOGGLE()
|
||||
#define bfin_write_FIO_MASKA_T(val) bfin_write_PORTGIO_MASKA_TOGGLE(val)
|
||||
#define FIO_MASKA_T PORTGIO_MASKA_TOGGLE
|
||||
#define bfin_read_FIO_MASKB_D() bfin_read_PORTGIO_MASKB()
|
||||
#define bfin_write_FIO_MASKB_D(val) bfin_write_PORTGIO_MASKB(val)
|
||||
#define FIO_MASKB_D PORTGIO_MASKB
|
||||
#define bfin_read_FIO_MASKB_C() bfin_read_PORTGIO_MASKB_CLEAR()
|
||||
#define bfin_write_FIO_MASKB_C(val) bfin_write_PORTGIO_MASKB_CLEAR(val)
|
||||
#define FIO_MASKB_C PORTGIO_MASKB_CLEAR
|
||||
#define bfin_read_FIO_MASKB_S() bfin_read_PORTGIO_MASKB_SET()
|
||||
#define bfin_write_FIO_MASKB_S(val) bfin_write_PORTGIO_MASKB_SET(val)
|
||||
#define FIO_MASKB_S PORTGIO_MASKB_SET
|
||||
#define bfin_read_FIO_MASKB_T() bfin_read_PORTGIO_MASKB_TOGGLE()
|
||||
#define bfin_write_FIO_MASKB_T(val) bfin_write_PORTGIO_MASKB_TOGGLE(val)
|
||||
#define FIO_MASKB_T PORTGIO_MASKB_TOGGLE
|
||||
#define bfin_read_FIO_DIR() bfin_read_PORTGIO_DIR()
|
||||
#define bfin_write_FIO_DIR(val) bfin_write_PORTGIO_DIR(val)
|
||||
#define FIO_DIR PORTGIO_DIR
|
||||
#define bfin_read_FIO_POLAR() bfin_read_PORTGIO_POLAR()
|
||||
#define bfin_write_FIO_POLAR(val) bfin_write_PORTGIO_POLAR(val)
|
||||
#define FIO_POLAR PORTGIO_POLAR
|
||||
#define bfin_read_FIO_EDGE() bfin_read_PORTGIO_EDGE()
|
||||
#define bfin_write_FIO_EDGE(val) bfin_write_PORTGIO_EDGE(val)
|
||||
#define FIO_EDGE PORTGIO_EDGE
|
||||
#define bfin_read_FIO_BOTH() bfin_read_PORTGIO_BOTH()
|
||||
#define bfin_write_FIO_BOTH(val) bfin_write_PORTGIO_BOTH(val)
|
||||
#define FIO_BOTH PORTGIO_BOTH
|
||||
#define bfin_read_FIO_INEN() bfin_read_PORTGIO_INEN()
|
||||
#define bfin_write_FIO_INEN(val) bfin_write_PORTGIO_INEN(val)
|
||||
#define FIO_INEN PORTGIO_INEN
|
||||
|
||||
#endif
|
||||
|
||||
/* FIO USE PORT H*/
|
||||
#ifdef CONFIG_BF537_PORT_H
|
||||
#define bfin_read_PORT_FER() bfin_read_PORTH_FER()
|
||||
#define bfin_write_PORT_FER(val) bfin_write_PORTH_FER(val)
|
||||
#define bfin_read_FIO_FLAG_D() bfin_read_PORTHIO()
|
||||
#define bfin_write_FIO_FLAG_D(val) bfin_write_PORTHIO(val)
|
||||
#define bfin_read_FIO_FLAG_C() bfin_read_PORTHIO_CLEAR()
|
||||
#define bfin_write_FIO_FLAG_C(val) bfin_write_PORTHIO_CLEAR(val)
|
||||
#define bfin_read_FIO_FLAG_S() bfin_read_PORTHIO_SET()
|
||||
#define bfin_write_FIO_FLAG_S(val) bfin_write_PORTHIO_SET(val)
|
||||
#define bfin_read_FIO_FLAG_T() bfin_read_PORTHIO_TOGGLE()
|
||||
#define bfin_write_FIO_FLAG_T(val) bfin_write_PORTHIO_TOGGLE(val)
|
||||
#define bfin_read_FIO_MASKA_D() bfin_read_PORTHIO_MASKA()
|
||||
#define bfin_write_FIO_MASKA_D(val) bfin_write_PORTHIO_MASKA(val)
|
||||
#define bfin_read_FIO_MASKA_C() bfin_read_PORTHIO_MASKA_CLEAR()
|
||||
#define bfin_write_FIO_MASKA_C(val) bfin_write_PORTHIO_MASKA_CLEAR(val)
|
||||
#define bfin_read_FIO_MASKA_S() bfin_read_PORTHIO_MASKA_SET()
|
||||
#define bfin_write_FIO_MASKA_S(val) bfin_write_PORTHIO_MASKA_SET(val)
|
||||
#define bfin_read_FIO_MASKA_T() bfin_read_PORTHIO_MASKA_TOGGLE()
|
||||
#define bfin_write_FIO_MASKA_T(val) bfin_write_PORTHIO_MASKA_TOGGLE(val)
|
||||
#define bfin_read_FIO_MASKB_D() bfin_read_PORTHIO_MASKB()
|
||||
#define bfin_write_FIO_MASKB_D(val) bfin_write_PORTHIO_MASKB(val)
|
||||
#define bfin_read_FIO_MASKB_C() bfin_read_PORTHIO_MASKB_CLEAR()
|
||||
#define bfin_write_FIO_MASKB_C(val) bfin_write_PORTHIO_MASKB_CLEAR(val)
|
||||
#define bfin_read_FIO_MASKB_S() bfin_read_PORTHIO_MASKB_SET()
|
||||
#define bfin_write_FIO_MASKB_S(val) bfin_write_PORTHIO_MASKB_SET(val)
|
||||
#define bfin_read_FIO_MASKB_T() bfin_read_PORTHIO_MASKB_TOGGLE()
|
||||
#define bfin_write_FIO_MASKB_T(val) bfin_write_PORTHIO_MASKB_TOGGLE(val)
|
||||
#define bfin_read_FIO_DIR() bfin_read_PORTHIO_DIR()
|
||||
#define bfin_write_FIO_DIR(val) bfin_write_PORTHIO_DIR(val)
|
||||
#define bfin_read_FIO_POLAR() bfin_read_PORTHIO_POLAR()
|
||||
#define bfin_write_FIO_POLAR(val) bfin_write_PORTHIO_POLAR(val)
|
||||
#define bfin_read_FIO_EDGE() bfin_read_PORTHIO_EDGE()
|
||||
#define bfin_write_FIO_EDGE(val) bfin_write_PORTHIO_EDGE(val)
|
||||
#define bfin_read_FIO_BOTH() bfin_read_PORTHIO_BOTH()
|
||||
#define bfin_write_FIO_BOTH(val) bfin_write_PORTHIO_BOTH(val)
|
||||
#define bfin_read_FIO_INEN() bfin_read_PORTHIO_INEN()
|
||||
#define bfin_write_FIO_INEN(val) bfin_write_PORTHIO_INEN(val)
|
||||
|
||||
#define bfin_read_FIO_FLAG_D() bfin_read_PORTHIO()
|
||||
#define bfin_write_FIO_FLAG_D(val) bfin_write_PORTHIO(val)
|
||||
#define FIO_FLAG_D PORTHIO
|
||||
#define bfin_read_FIO_FLAG_C() bfin_read_PORTHIO_CLEAR()
|
||||
#define bfin_write_FIO_FLAG_C(val) bfin_write_PORTHIO_CLEAR(val)
|
||||
#define FIO_FLAG_C PORTHIO_CLEAR
|
||||
#define bfin_read_FIO_FLAG_S() bfin_read_PORTHIO_SET()
|
||||
#define bfin_write_FIO_FLAG_S(val) bfin_write_PORTHIO_SET(val)
|
||||
#define FIO_FLAG_S PORTHIO_SET
|
||||
#define bfin_read_FIO_FLAG_T() bfin_read_PORTHIO_TOGGLE()
|
||||
#define bfin_write_FIO_FLAG_T(val) bfin_write_PORTHIO_TOGGLE(val)
|
||||
#define FIO_FLAG_T PORTHIO_TOGGLE
|
||||
#define bfin_read_FIO_MASKA_D() bfin_read_PORTHIO_MASKA()
|
||||
#define bfin_write_FIO_MASKA_D(val) bfin_write_PORTHIO_MASKA(val)
|
||||
#define FIO_MASKA_D PORTHIO_MASKA
|
||||
#define bfin_read_FIO_MASKA_C() bfin_read_PORTHIO_MASKA_CLEAR()
|
||||
#define bfin_write_FIO_MASKA_C(val) bfin_write_PORTHIO_MASKA_CLEAR(val)
|
||||
#define FIO_MASKA_C PORTHIO_MASKA_CLEAR
|
||||
#define bfin_read_FIO_MASKA_S() bfin_read_PORTHIO_MASKA_SET()
|
||||
#define bfin_write_FIO_MASKA_S(val) bfin_write_PORTHIO_MASKA_SET(val)
|
||||
#define FIO_MASKA_S PORTHIO_MASKA_SET
|
||||
#define bfin_read_FIO_MASKA_T() bfin_read_PORTHIO_MASKA_TOGGLE()
|
||||
#define bfin_write_FIO_MASKA_T(val) bfin_write_PORTHIO_MASKA_TOGGLE(val)
|
||||
#define FIO_MASKA_T PORTHIO_MASKA_TOGGLE
|
||||
#define bfin_read_FIO_MASKB_D() bfin_read_PORTHIO_MASKB()
|
||||
#define bfin_write_FIO_MASKB_D(val) bfin_write_PORTHIO_MASKB(val)
|
||||
#define FIO_MASKB_D PORTHIO_MASKB
|
||||
#define bfin_read_FIO_MASKB_C() bfin_read_PORTHIO_MASKB_CLEAR()
|
||||
#define bfin_write_FIO_MASKB_C(val) bfin_write_PORTHIO_MASKB_CLEAR(val)
|
||||
#define FIO_MASKB_C PORTHIO_MASKB_CLEAR
|
||||
#define bfin_read_FIO_MASKB_S() bfin_read_PORTHIO_MASKB_SET()
|
||||
#define bfin_write_FIO_MASKB_S(val) bfin_write_PORTHIO_MASKB_SET(val)
|
||||
#define FIO_MASKB_S PORTHIO_MASKB_SET
|
||||
#define bfin_read_FIO_MASKB_T() bfin_read_PORTHIO_MASKB_TOGGLE()
|
||||
#define bfin_write_FIO_MASKB_T(val) bfin_write_PORTHIO_MASKB_TOGGLE(val)
|
||||
#define FIO_MASKB_T PORTHIO_MASKB_TOGGLE
|
||||
#define bfin_read_FIO_DIR() bfin_read_PORTHIO_DIR()
|
||||
#define bfin_write_FIO_DIR(val) bfin_write_PORTHIO_DIR(val)
|
||||
#define FIO_DIR PORTHIO_DIR
|
||||
#define bfin_read_FIO_POLAR() bfin_read_PORTHIO_POLAR()
|
||||
#define bfin_write_FIO_POLAR(val) bfin_write_PORTHIO_POLAR(val)
|
||||
#define FIO_POLAR PORTHIO_POLAR
|
||||
#define bfin_read_FIO_EDGE() bfin_read_PORTHIO_EDGE()
|
||||
#define bfin_write_FIO_EDGE(val) bfin_write_PORTHIO_EDGE(val)
|
||||
#define FIO_EDGE PORTHIO_EDGE
|
||||
#define bfin_read_FIO_BOTH() bfin_read_PORTHIO_BOTH()
|
||||
#define bfin_write_FIO_BOTH(val) bfin_write_PORTHIO_BOTH(val)
|
||||
#define FIO_BOTH PORTHIO_BOTH
|
||||
#define bfin_read_FIO_INEN() bfin_read_PORTHIO_INEN()
|
||||
#define bfin_write_FIO_INEN(val) bfin_write_PORTHIO_INEN(val)
|
||||
#define FIO_INEN PORTHIO_INEN
|
||||
|
||||
#endif
|
||||
|
||||
/* PLL_DIV Masks */
|
||||
#define CCLK_DIV1 CSEL_DIV1 /* CCLK = VCO / 1 */
|
||||
#define CCLK_DIV2 CSEL_DIV2 /* CCLK = VCO / 2 */
|
||||
|
|
|
|||
|
|
@ -32,6 +32,8 @@
|
|||
#ifndef _CDEF_BF534_H
|
||||
#define _CDEF_BF534_H
|
||||
|
||||
#include <asm/blackfin.h>
|
||||
|
||||
/* Include all Core registers and bit definitions */
|
||||
#include "defBF534.h"
|
||||
|
||||
|
|
@ -57,7 +59,7 @@ static __inline__ void bfin_write_VR_CTL(unsigned int val)
|
|||
bfin_write32(SIC_IWR, IWR_ENABLE(0));
|
||||
|
||||
bfin_write16(VR_CTL, val);
|
||||
__builtin_bfin_ssync();
|
||||
SSYNC();
|
||||
|
||||
local_irq_save(flags);
|
||||
asm("IDLE;");
|
||||
|
|
|
|||
|
|
@ -86,6 +86,7 @@
|
|||
#define UART0_GCTL 0xFFC00424 /* Global Control Register */
|
||||
|
||||
/* SPI Controller (0xFFC00500 - 0xFFC005FF) */
|
||||
#define SPI0_REGBASE 0xFFC00500
|
||||
#define SPI_CTL 0xFFC00500 /* SPI Control Register */
|
||||
#define SPI_FLG 0xFFC00504 /* SPI Flag register */
|
||||
#define SPI_STAT 0xFFC00508 /* SPI Status register */
|
||||
|
|
@ -456,6 +457,7 @@
|
|||
#define PPI_FRAME 0xFFC01010 /* PPI Frame Length Register */
|
||||
|
||||
/* Two-Wire Interface (0xFFC01400 - 0xFFC014FF) */
|
||||
#define TWI0_REGBASE 0xFFC01400
|
||||
#define TWI_CLKDIV 0xFFC01400 /* Serial Clock Divider Register */
|
||||
#define TWI_CONTROL 0xFFC01404 /* TWI Control Register */
|
||||
#define TWI_SLAVE_CTL 0xFFC01408 /* Slave Mode Control Register */
|
||||
|
|
@ -1165,7 +1167,7 @@
|
|||
#define GM 0x0008 /* Get More (When RDBR Full, Overwrite/Discard*) */
|
||||
#define PSSE 0x0010 /* Slave-Select Input Enable */
|
||||
#define EMISO 0x0020 /* Enable MISO As Output */
|
||||
#define SPI_SIZE 0x0100 /* Size of Words (16/8* Bits) */
|
||||
#define SIZE 0x0100 /* Size of Words (16/8* Bits) */
|
||||
#define LSBF 0x0200 /* LSB First */
|
||||
#define CPHA 0x0400 /* Clock Phase */
|
||||
#define CPOL 0x0800 /* Clock Polarity */
|
||||
|
|
|
|||
|
|
@ -160,6 +160,8 @@ Core Emulation **
|
|||
#define IRQ_PH14 96
|
||||
#define IRQ_PH15 97
|
||||
|
||||
#define GPIO_IRQ_BASE IRQ_PF0
|
||||
|
||||
#ifdef CONFIG_IRQCHIP_DEMUX_GPIO
|
||||
#define NR_IRQS (IRQ_PH15+1)
|
||||
#else
|
||||
|
|
|
|||
|
|
@ -52,10 +52,10 @@
|
|||
|
||||
/* Memory Map for ADSP-BF537 processors */
|
||||
|
||||
#ifdef CONFIG_BLKFIN_CACHE
|
||||
#define BLKFIN_ICACHESIZE (16*1024)
|
||||
#ifdef CONFIG_BFIN_ICACHE
|
||||
#define BFIN_ICACHESIZE (16*1024)
|
||||
#else
|
||||
#define BLKFIN_ICACHESIZE (0*1024)
|
||||
#define BFIN_ICACHESIZE (0*1024)
|
||||
#endif
|
||||
|
||||
|
||||
|
|
@ -66,29 +66,29 @@
|
|||
|
||||
#define L1_CODE_LENGTH 0xC000
|
||||
|
||||
#ifdef CONFIG_BLKFIN_DCACHE
|
||||
#ifdef CONFIG_BFIN_DCACHE
|
||||
|
||||
#ifdef CONFIG_BLKFIN_DCACHE_BANKA
|
||||
#ifdef CONFIG_BFIN_DCACHE_BANKA
|
||||
#define DMEM_CNTR (ACACHE_BSRAM | ENDCPLB | PORT_PREF0)
|
||||
#define L1_DATA_A_LENGTH (0x8000 - 0x4000)
|
||||
#define L1_DATA_B_LENGTH 0x8000
|
||||
#define BLKFIN_DCACHESIZE (16*1024)
|
||||
#define BLKFIN_DSUPBANKS 1
|
||||
#define BFIN_DCACHESIZE (16*1024)
|
||||
#define BFIN_DSUPBANKS 1
|
||||
#else
|
||||
#define DMEM_CNTR (ACACHE_BCACHE | ENDCPLB | PORT_PREF0)
|
||||
#define L1_DATA_A_LENGTH (0x8000 - 0x4000)
|
||||
#define L1_DATA_B_LENGTH (0x8000 - 0x4000)
|
||||
#define BLKFIN_DCACHESIZE (32*1024)
|
||||
#define BLKFIN_DSUPBANKS 2
|
||||
#define BFIN_DCACHESIZE (32*1024)
|
||||
#define BFIN_DSUPBANKS 2
|
||||
#endif
|
||||
|
||||
#else
|
||||
#define DMEM_CNTR (ASRAM_BSRAM | ENDCPLB | PORT_PREF0)
|
||||
#define L1_DATA_A_LENGTH 0x8000
|
||||
#define L1_DATA_B_LENGTH 0x8000
|
||||
#define BLKFIN_DCACHESIZE (0*1024)
|
||||
#define BLKFIN_DSUPBANKS 0
|
||||
#endif /*CONFIG_BLKFIN_DCACHE*/
|
||||
#define BFIN_DCACHESIZE (0*1024)
|
||||
#define BFIN_DSUPBANKS 0
|
||||
#endif /*CONFIG_BFIN_DCACHE*/
|
||||
|
||||
#endif /*CONFIG_BF537*/
|
||||
|
||||
|
|
@ -102,30 +102,30 @@
|
|||
#define L1_CODE_LENGTH 0xC000
|
||||
|
||||
|
||||
#ifdef CONFIG_BLKFIN_DCACHE
|
||||
#ifdef CONFIG_BFIN_DCACHE
|
||||
|
||||
#ifdef CONFIG_BLKFIN_DCACHE_BANKA
|
||||
#ifdef CONFIG_BFIN_DCACHE_BANKA
|
||||
#define DMEM_CNTR (ACACHE_BSRAM | ENDCPLB | PORT_PREF0)
|
||||
#define L1_DATA_A_LENGTH (0x4000 - 0x4000)
|
||||
#define L1_DATA_B_LENGTH 0x4000
|
||||
#define BLKFIN_DCACHESIZE (16*1024)
|
||||
#define BLKFIN_DSUPBANKS 1
|
||||
#define BFIN_DCACHESIZE (16*1024)
|
||||
#define BFIN_DSUPBANKS 1
|
||||
|
||||
#else
|
||||
#define DMEM_CNTR (ACACHE_BCACHE | ENDCPLB | PORT_PREF0)
|
||||
#define L1_DATA_A_LENGTH (0x4000 - 0x4000)
|
||||
#define L1_DATA_B_LENGTH (0x4000 - 0x4000)
|
||||
#define BLKFIN_DCACHESIZE (32*1024)
|
||||
#define BLKFIN_DSUPBANKS 2
|
||||
#define BFIN_DCACHESIZE (32*1024)
|
||||
#define BFIN_DSUPBANKS 2
|
||||
#endif
|
||||
|
||||
#else
|
||||
#define DMEM_CNTR (ASRAM_BSRAM | ENDCPLB | PORT_PREF0)
|
||||
#define L1_DATA_A_LENGTH 0x4000
|
||||
#define L1_DATA_B_LENGTH 0x4000
|
||||
#define BLKFIN_DCACHESIZE (0*1024)
|
||||
#define BLKFIN_DSUPBANKS 0
|
||||
#endif /*CONFIG_BLKFIN_DCACHE*/
|
||||
#define BFIN_DCACHESIZE (0*1024)
|
||||
#define BFIN_DSUPBANKS 0
|
||||
#endif /*CONFIG_BFIN_DCACHE*/
|
||||
|
||||
#endif
|
||||
|
||||
|
|
@ -138,30 +138,30 @@
|
|||
|
||||
#define L1_CODE_LENGTH 0xC000
|
||||
|
||||
#ifdef CONFIG_BLKFIN_DCACHE
|
||||
#ifdef CONFIG_BFIN_DCACHE
|
||||
|
||||
#ifdef CONFIG_BLKFIN_DCACHE_BANKA
|
||||
#ifdef CONFIG_BFIN_DCACHE_BANKA
|
||||
#define DMEM_CNTR (ACACHE_BSRAM | ENDCPLB | PORT_PREF0)
|
||||
#define L1_DATA_A_LENGTH (0x8000 - 0x4000)
|
||||
#define L1_DATA_B_LENGTH 0x8000
|
||||
#define BLKFIN_DCACHESIZE (16*1024)
|
||||
#define BLKFIN_DSUPBANKS 1
|
||||
#define BFIN_DCACHESIZE (16*1024)
|
||||
#define BFIN_DSUPBANKS 1
|
||||
|
||||
#else
|
||||
#define DMEM_CNTR (ACACHE_BCACHE | ENDCPLB | PORT_PREF0)
|
||||
#define L1_DATA_A_LENGTH (0x8000 - 0x4000)
|
||||
#define L1_DATA_B_LENGTH (0x8000 - 0x4000)
|
||||
#define BLKFIN_DCACHESIZE (32*1024)
|
||||
#define BLKFIN_DSUPBANKS 2
|
||||
#define BFIN_DCACHESIZE (32*1024)
|
||||
#define BFIN_DSUPBANKS 2
|
||||
#endif
|
||||
|
||||
#else
|
||||
#define DMEM_CNTR (ASRAM_BSRAM | ENDCPLB | PORT_PREF0)
|
||||
#define L1_DATA_A_LENGTH 0x8000
|
||||
#define L1_DATA_B_LENGTH 0x8000
|
||||
#define BLKFIN_DCACHESIZE (0*1024)
|
||||
#define BLKFIN_DSUPBANKS 0
|
||||
#endif /*CONFIG_BLKFIN_DCACHE*/
|
||||
#define BFIN_DCACHESIZE (0*1024)
|
||||
#define BFIN_DSUPBANKS 0
|
||||
#endif /*CONFIG_BFIN_DCACHE*/
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -99,7 +99,7 @@
|
|||
#define P_SPORT0_DRPRI (P_DEFINED | P_IDENT(PORT_PJ8) | P_FUNCT(0))
|
||||
#define P_SPORT0_TSCLK (P_DEFINED | P_IDENT(PORT_PJ9) | P_FUNCT(0))
|
||||
#define P_SPORT0_TFS (P_DEFINED | P_IDENT(PORT_PJ10) | P_FUNCT(0))
|
||||
#define P_SPORT0_DTPRI (P_DEFINED | P_IDENT(PORT_PJ11) | P_FUNCT(1))
|
||||
#define P_SPORT0_DTPRI (P_DEFINED | P_IDENT(PORT_PJ11) | P_FUNCT(0))
|
||||
#define P_CAN0_RX (P_DEFINED | P_IDENT(PORT_PJ4) | P_FUNCT(1))
|
||||
#define P_CAN0_TX (P_DEFINED | P_IDENT(PORT_PJ5) | P_FUNCT(1))
|
||||
#define P_SPI0_SSEL3 (P_DEFINED | P_IDENT(PORT_PJ10) | P_FUNCT(1))
|
||||
|
|
|
|||
|
|
@ -1,74 +1,85 @@
|
|||
|
||||
/*
|
||||
* File: include/asm-blackfin/mach-bf548/anomaly.h
|
||||
* Based on:
|
||||
* Author:
|
||||
* File: include/asm-blackfin/mach-bf548/anomaly.h
|
||||
* Bugs: Enter bugs at http://blackfin.uclinux.org/
|
||||
*
|
||||
* Created:
|
||||
* Description:
|
||||
*
|
||||
* Rev:
|
||||
*
|
||||
* Modified:
|
||||
*
|
||||
*
|
||||
* Bugs: Enter bugs at http://blackfin.uclinux.org/
|
||||
*
|
||||
* 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, 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; see the file COPYING.
|
||||
* If not, write to the Free Software Foundation,
|
||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
* Copyright (C) 2004-2007 Analog Devices Inc.
|
||||
* Licensed under the GPL-2 or later.
|
||||
*/
|
||||
|
||||
/* This file shoule be up to date with:
|
||||
* - Revision C, July 16, 2007; ADSP-BF549 Silicon Anomaly List
|
||||
*/
|
||||
|
||||
#ifndef _MACH_ANOMALY_H_
|
||||
#define _MACH_ANOMALY_H_
|
||||
#define ANOMALY_05000074 /* A multi issue instruction with dsp32shiftimm in
|
||||
slot1 and store of a P register in slot 2 is not
|
||||
supported */
|
||||
#define ANOMALY_05000119 /* DMA_RUN bit is not valid after a Peripheral Receive
|
||||
Channel DMA stops */
|
||||
#define ANOMALY_05000122 /* Rx.H can not be used to access 16-bit System MMR
|
||||
registers. */
|
||||
#define ANOMALY_05000245 /* Spurious Hardware Error from an Access in the
|
||||
Shadow of a Conditional Branch */
|
||||
#define ANOMALY_05000255 /* Entering Hibernate Mode with RTC Seconds event
|
||||
interrupt not functional */
|
||||
#define ANOMALY_05000265 /* Sensitivity to noise with slow input edge rates on
|
||||
SPORT external receive and transmit clocks. */
|
||||
#define ANOMALY_05000272 /* Certain data cache write through modes fail for
|
||||
VDDint <=0.9V */
|
||||
#define ANOMALY_05000281 /* False Hardware Error Exception when ISR context is
|
||||
not restored */
|
||||
#define ANOMALY_05000310 /* False Hardware Errors Caused by Fetches at the
|
||||
Boundary of Reserved Memory */
|
||||
#define ANOMALY_05000312 /* Errors When SSYNC, CSYNC, or Loads to LT, LB and
|
||||
LC Registers Are Interrupted */
|
||||
#define ANOMALY_05000324 /* TWI Slave Boot Mode Is Not Functional */
|
||||
#define ANOMALY_05000325 /* External FIFO Boot Mode Is Not Functional */
|
||||
#define ANOMALY_05000327 /* Data Lost When Core and DMA Accesses Are Made to
|
||||
the USB FIFO Simultaneously */
|
||||
#define ANOMALY_05000328 /* Incorrect Access of OTP_STATUS During otp_write()
|
||||
function */
|
||||
#define ANOMALY_05000329 /* Synchronous Burst Flash Boot Mode Is Not Functional
|
||||
*/
|
||||
#define ANOMALY_05000330 /* Host DMA Boot Mode Is Not Functional */
|
||||
#define ANOMALY_05000334 /* Inadequate Timing Margins on DDR DQS to DQ and DQM
|
||||
Skew */
|
||||
#define ANOMALY_05000335 /* Inadequate Rotary Debounce Logic Duration */
|
||||
#define ANOMALY_05000336 /* Phantom Interrupt Occurs After First Configuration
|
||||
of Host DMA Port */
|
||||
#define ANOMALY_05000337 /* Disallowed Configuration Prevents Subsequent
|
||||
Allowed Configuration on Host DMA Port */
|
||||
#define ANOMALY_05000338 /* Slave-Mode SPI0 MISO Failure With CPHA = 0 */
|
||||
|
||||
#endif /* _MACH_ANOMALY_H_ */
|
||||
/* Multi-Issue Instruction with dsp32shiftimm in slot1 and P-reg Store in slot 2 Not Supported */
|
||||
#define ANOMALY_05000074 (1)
|
||||
/* DMA_RUN Bit Is Not Valid after a Peripheral Receive Channel DMA Stops */
|
||||
#define ANOMALY_05000119 (1)
|
||||
/* Rx.H Cannot Be Used to Access 16-bit System MMR Registers */
|
||||
#define ANOMALY_05000122 (1)
|
||||
/* Spurious Hardware Error from an Access in the Shadow of a Conditional Branch */
|
||||
#define ANOMALY_05000245 (1)
|
||||
/* Sensitivity To Noise with Slow Input Edge Rates on External SPORT TX and RX Clocks */
|
||||
#define ANOMALY_05000265 (1)
|
||||
/* Certain Data Cache Writethrough Modes Fail for Vddint <= 0.9V */
|
||||
#define ANOMALY_05000272 (1)
|
||||
/* False Hardware Error Exception when ISR context is not restored */
|
||||
#define ANOMALY_05000281 (1)
|
||||
/* SSYNCs After Writes To CAN/DMA MMR Registers Are Not Always Handled Correctly */
|
||||
#define ANOMALY_05000304 (1)
|
||||
/* False Hardware Errors Caused by Fetches at the Boundary of Reserved Memory */
|
||||
#define ANOMALY_05000310 (1)
|
||||
/* Errors When SSYNC, CSYNC, or Loads to LT, LB and LC Registers Are Interrupted */
|
||||
#define ANOMALY_05000312 (1)
|
||||
/* TWI Slave Boot Mode Is Not Functional */
|
||||
#define ANOMALY_05000324 (1)
|
||||
/* External FIFO Boot Mode Is Not Functional */
|
||||
#define ANOMALY_05000325 (1)
|
||||
/* Data Lost When Core and DMA Accesses Are Made to the USB FIFO Simultaneously */
|
||||
#define ANOMALY_05000327 (1)
|
||||
/* Incorrect Access of OTP_STATUS During otp_write() Function */
|
||||
#define ANOMALY_05000328 (1)
|
||||
/* Synchronous Burst Flash Boot Mode Is Not Functional */
|
||||
#define ANOMALY_05000329 (1)
|
||||
/* Host DMA Boot Mode Is Not Functional */
|
||||
#define ANOMALY_05000330 (1)
|
||||
/* Inadequate Timing Margins on DDR DQS to DQ and DQM Skew */
|
||||
#define ANOMALY_05000334 (1)
|
||||
/* Inadequate Rotary Debounce Logic Duration */
|
||||
#define ANOMALY_05000335 (1)
|
||||
/* Phantom Interrupt Occurs After First Configuration of Host DMA Port */
|
||||
#define ANOMALY_05000336 (1)
|
||||
/* Disallowed Configuration Prevents Subsequent Allowed Configuration on Host DMA Port */
|
||||
#define ANOMALY_05000337 (1)
|
||||
/* Slave-Mode SPI0 MISO Failure With CPHA = 0 */
|
||||
#define ANOMALY_05000338 (1)
|
||||
/* If Memory Reads Are Enabled on SDH or HOSTDP, Other DMAC1 Peripherals Cannot Read */
|
||||
#define ANOMALY_05000340 (1)
|
||||
/* Boot Host Wait (HWAIT) and Boot Host Wait Alternate (HWAITA) Signals Are Swapped */
|
||||
#define ANOMALY_05000344 (1)
|
||||
/* USB Calibration Value Is Not Intialized */
|
||||
#define ANOMALY_05000346 (1)
|
||||
/* Boot ROM Kernel Incorrectly Alters Reset Value of USB Register */
|
||||
#define ANOMALY_05000347 (1)
|
||||
/* Data Lost when Core Reads SDH Data FIFO */
|
||||
#define ANOMALY_05000349 (1)
|
||||
/* PLL Status Register Is Inaccurate */
|
||||
#define ANOMALY_05000351 (1)
|
||||
|
||||
/* Anomalies that don't exist on this proc */
|
||||
#define ANOMALY_05000125 (0)
|
||||
#define ANOMALY_05000158 (0)
|
||||
#define ANOMALY_05000183 (0)
|
||||
#define ANOMALY_05000198 (0)
|
||||
#define ANOMALY_05000230 (0)
|
||||
#define ANOMALY_05000244 (0)
|
||||
#define ANOMALY_05000261 (0)
|
||||
#define ANOMALY_05000263 (0)
|
||||
#define ANOMALY_05000266 (0)
|
||||
#define ANOMALY_05000273 (0)
|
||||
#define ANOMALY_05000311 (0)
|
||||
#define ANOMALY_05000323 (0)
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -52,12 +52,12 @@
|
|||
/***************************/
|
||||
|
||||
|
||||
#define BLKFIN_DSUBBANKS 4
|
||||
#define BLKFIN_DWAYS 2
|
||||
#define BLKFIN_DLINES 64
|
||||
#define BLKFIN_ISUBBANKS 4
|
||||
#define BLKFIN_IWAYS 4
|
||||
#define BLKFIN_ILINES 32
|
||||
#define BFIN_DSUBBANKS 4
|
||||
#define BFIN_DWAYS 2
|
||||
#define BFIN_DLINES 64
|
||||
#define BFIN_ISUBBANKS 4
|
||||
#define BFIN_IWAYS 4
|
||||
#define BFIN_ILINES 32
|
||||
|
||||
#define WAY0_L 0x1
|
||||
#define WAY1_L 0x2
|
||||
|
|
@ -106,93 +106,6 @@
|
|||
|
||||
#define AMGCTLVAL (V_AMBEN | V_AMCKEN)
|
||||
|
||||
#define MAX_VC 650000000
|
||||
#define MIN_VC 50000000
|
||||
|
||||
/********************************PLL Settings **************************************/
|
||||
#ifdef CONFIG_BFIN_KERNEL_CLOCK
|
||||
#if (CONFIG_VCO_MULT < 0)
|
||||
#error "VCO Multiplier is less than 0. Please select a different value"
|
||||
#endif
|
||||
|
||||
#if (CONFIG_VCO_MULT == 0)
|
||||
#error "VCO Multiplier should be greater than 0. Please select a different value"
|
||||
#endif
|
||||
|
||||
#if (CONFIG_VCO_MULT > 64)
|
||||
#error "VCO Multiplier is more than 64. Please select a different value"
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_CLKIN_HALF
|
||||
#define CONFIG_VCO_HZ (CONFIG_CLKIN_HZ * CONFIG_VCO_MULT)
|
||||
#else
|
||||
#define CONFIG_VCO_HZ ((CONFIG_CLKIN_HZ * CONFIG_VCO_MULT)/2)
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_PLL_BYPASS
|
||||
#define CONFIG_CCLK_HZ (CONFIG_VCO_HZ/CONFIG_CCLK_DIV)
|
||||
#define CONFIG_SCLK_HZ (CONFIG_VCO_HZ/CONFIG_SCLK_DIV)
|
||||
#else
|
||||
#define CONFIG_CCLK_HZ CONFIG_CLKIN_HZ
|
||||
#define CONFIG_SCLK_HZ CONFIG_CLKIN_HZ
|
||||
#endif
|
||||
|
||||
#if (CONFIG_SCLK_DIV < 1)
|
||||
#error "SCLK DIV cannot be less than 1 or more than 15. Please select a proper value"
|
||||
#endif
|
||||
|
||||
#if (CONFIG_SCLK_DIV > 15)
|
||||
#error "SCLK DIV cannot be less than 1 or more than 15. Please select a proper value"
|
||||
#endif
|
||||
|
||||
#if (CONFIG_CCLK_DIV != 1)
|
||||
#if (CONFIG_CCLK_DIV != 2)
|
||||
#if (CONFIG_CCLK_DIV != 4)
|
||||
#if (CONFIG_CCLK_DIV != 8)
|
||||
#error "CCLK DIV can be 1,2,4 or 8 only. Please select a proper value"
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if (CONFIG_VCO_HZ > MAX_VC)
|
||||
#error "VCO selected is more than maximum value. Please change the VCO multipler"
|
||||
#endif
|
||||
|
||||
#if (CONFIG_SCLK_HZ > 133000000)
|
||||
#error "Sclk value selected is more than maximum. Please select a proper value for SCLK multiplier"
|
||||
#endif
|
||||
|
||||
#if (CONFIG_SCLK_HZ < 27000000)
|
||||
#error "Sclk value selected is less than minimum. Please select a proper value for SCLK multiplier"
|
||||
#endif
|
||||
|
||||
#if (CONFIG_SCLK_HZ >= CONFIG_CCLK_HZ)
|
||||
#if (CONFIG_SCLK_HZ != CONFIG_CLKIN_HZ)
|
||||
#if (CONFIG_CCLK_HZ != CONFIG_CLKIN_HZ)
|
||||
#error "Please select sclk less than cclk"
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if (CONFIG_CCLK_DIV == 1)
|
||||
#define CONFIG_CCLK_ACT_DIV CCLK_DIV1
|
||||
#endif
|
||||
#if (CONFIG_CCLK_DIV == 2)
|
||||
#define CONFIG_CCLK_ACT_DIV CCLK_DIV2
|
||||
#endif
|
||||
#if (CONFIG_CCLK_DIV == 4)
|
||||
#define CONFIG_CCLK_ACT_DIV CCLK_DIV4
|
||||
#endif
|
||||
#if (CONFIG_CCLK_DIV == 8)
|
||||
#define CONFIG_CCLK_ACT_DIV CCLK_DIV8
|
||||
#endif
|
||||
#ifndef CONFIG_CCLK_ACT_DIV
|
||||
#define CONFIG_CCLK_ACT_DIV CONFIG_CCLK_DIV_not_defined_properly
|
||||
#endif
|
||||
|
||||
#endif /* CONFIG_BFIN_KERNEL_CLOCK */
|
||||
|
||||
#ifdef CONFIG_BF542
|
||||
#define CPU "BF542"
|
||||
#define CPUID 0x027c8000
|
||||
|
|
@ -213,59 +126,4 @@
|
|||
#define CPUID 0x0
|
||||
#endif
|
||||
|
||||
#if (CONFIG_MEM_SIZE % 4)
|
||||
#error "SDRAM mem size must be multible of 4MB"
|
||||
#endif
|
||||
|
||||
#define SDRAM_IGENERIC (CPLB_L1_CHBL | CPLB_USER_RD | CPLB_VALID | CPLB_PORTPRIO)
|
||||
#define SDRAM_IKERNEL (SDRAM_IGENERIC | CPLB_LOCK)
|
||||
#define L1_IMEMORY ( CPLB_USER_RD | CPLB_VALID | CPLB_LOCK)
|
||||
#define SDRAM_INON_CHBL ( CPLB_USER_RD | CPLB_VALID)
|
||||
|
||||
/*Use the menuconfig cache policy here - CONFIG_BLKFIN_WT/CONFIG_BLKFIN_WB*/
|
||||
|
||||
#define ANOMALY_05000158_WORKAROUND 0x200
|
||||
#ifdef CONFIG_BLKFIN_WB /*Write Back Policy */
|
||||
#define SDRAM_DGENERIC (CPLB_L1_CHBL | CPLB_DIRTY \
|
||||
| CPLB_SUPV_WR | CPLB_USER_WR | CPLB_USER_RD | CPLB_VALID | ANOMALY_05000158_WORKAROUND)
|
||||
#else /*Write Through */
|
||||
#define SDRAM_DGENERIC (CPLB_L1_CHBL | CPLB_WT | CPLB_L1_AOW \
|
||||
| CPLB_SUPV_WR | CPLB_USER_WR | CPLB_USER_RD | CPLB_VALID | ANOMALY_05000158_WORKAROUND | CPLB_DIRTY )
|
||||
#endif
|
||||
|
||||
|
||||
#define L1_DMEMORY (CPLB_SUPV_WR | CPLB_USER_WR | CPLB_USER_RD | CPLB_VALID | ANOMALY_05000158_WORKAROUND | CPLB_LOCK | CPLB_DIRTY )
|
||||
#define SDRAM_DNON_CHBL (CPLB_SUPV_WR | CPLB_USER_WR | CPLB_USER_RD | CPLB_VALID | ANOMALY_05000158_WORKAROUND | CPLB_DIRTY )
|
||||
#define SDRAM_EBIU (CPLB_SUPV_WR | CPLB_USER_WR | CPLB_USER_RD | CPLB_VALID | ANOMALY_05000158_WORKAROUND | CPLB_DIRTY )
|
||||
#define SDRAM_OOPS (CPLB_VALID | ANOMALY_05000158_WORKAROUND | CPLB_LOCK | CPLB_DIRTY )
|
||||
|
||||
#define SIZE_1K 0x00000400 /* 1K */
|
||||
#define SIZE_4K 0x00001000 /* 4K */
|
||||
#define SIZE_1M 0x00100000 /* 1M */
|
||||
#define SIZE_4M 0x00400000 /* 4M */
|
||||
|
||||
#define MAX_CPLBS (16 * 2)
|
||||
|
||||
/*
|
||||
* Number of required data CPLB switchtable entries
|
||||
* MEMSIZE / 4 (we mostly install 4M page size CPLBs
|
||||
* approx 16 for smaller 1MB page size CPLBs for allignment purposes
|
||||
* 1 for L1 Data Memory
|
||||
* 1 for CONFIG_DEBUG_HUNT_FOR_ZERO
|
||||
* 1 for ASYNC Memory
|
||||
*/
|
||||
|
||||
|
||||
#define MAX_SWITCH_D_CPLBS (((CONFIG_MEM_SIZE / 4) + 16 + 1 + 1 + 1) * 2)
|
||||
|
||||
/*
|
||||
* Number of required instruction CPLB switchtable entries
|
||||
* MEMSIZE / 4 (we mostly install 4M page size CPLBs
|
||||
* approx 12 for smaller 1MB page size CPLBs for allignment purposes
|
||||
* 1 for L1 Instruction Memory
|
||||
* 1 for CONFIG_DEBUG_HUNT_FOR_ZERO
|
||||
*/
|
||||
|
||||
#define MAX_SWITCH_I_CPLBS (((CONFIG_MEM_SIZE / 4) + 12 + 1 + 1) * 2)
|
||||
|
||||
#endif /* __MACH_BF48_H__ */
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
#include <linux/serial.h>
|
||||
#include <asm/dma.h>
|
||||
#include <asm/portmux.h>
|
||||
|
||||
#define NR_PORTS 4
|
||||
|
||||
|
|
@ -143,50 +144,48 @@ struct bfin_serial_res bfin_serial_resource[] = {
|
|||
|
||||
int nr_ports = ARRAY_SIZE(bfin_serial_resource);
|
||||
|
||||
#define DRIVER_NAME "bfin-uart"
|
||||
|
||||
static void bfin_serial_hw_init(struct bfin_serial_port *uart)
|
||||
{
|
||||
#ifdef CONFIG_SERIAL_BFIN_UART0
|
||||
/* Enable UART0 RX and TX on pin 7 & 8 of PORT E */
|
||||
bfin_write_PORTE_FER(0x180 | bfin_read_PORTE_FER());
|
||||
bfin_write_PORTE_MUX(0x3C000 | bfin_read_PORTE_MUX());
|
||||
peripheral_request(P_UART0_TX, DRIVER_NAME);
|
||||
peripheral_request(P_UART0_RX, DRIVER_NAME);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SERIAL_BFIN_UART1
|
||||
/* Enable UART1 RX and TX on pin 0 & 1 of PORT H */
|
||||
bfin_write_PORTH_FER(0x3 | bfin_read_PORTH_FER());
|
||||
bfin_write_PORTH_MUX(~0xF & bfin_read_PORTH_MUX());
|
||||
peripheral_request(P_UART1_TX, DRIVER_NAME);
|
||||
peripheral_request(P_UART1_RX, DRIVER_NAME);
|
||||
|
||||
#ifdef CONFIG_BFIN_UART1_CTSRTS
|
||||
/* Enable UART1 RTS and CTS on pin 9 & 10 of PORT E */
|
||||
bfin_write_PORTE_FER(0x600 | bfin_read_PORTE_FER());
|
||||
bfin_write_PORTE_MUX(~0x3C0000 & bfin_read_PORTE_MUX());
|
||||
peripheral_request(P_UART1_RTS, DRIVER_NAME);
|
||||
peripheral_request(P_UART1_CTS DRIVER_NAME);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SERIAL_BFIN_UART2
|
||||
/* Enable UART2 RX and TX on pin 4 & 5 of PORT B */
|
||||
bfin_write_PORTB_FER(0x30 | bfin_read_PORTB_FER());
|
||||
bfin_write_PORTB_MUX(~0xF00 & bfin_read_PORTB_MUX());
|
||||
peripheral_request(P_UART2_TX, DRIVER_NAME);
|
||||
peripheral_request(P_UART2_RX, DRIVER_NAME);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SERIAL_BFIN_UART3
|
||||
/* Enable UART3 RX and TX on pin 6 & 7 of PORT B */
|
||||
bfin_write_PORTB_FER(0xC0 | bfin_read_PORTB_FER());
|
||||
bfin_write_PORTB_MUX(~0xF000 | bfin_read_PORTB_MUX());
|
||||
peripheral_request(P_UART3_TX, DRIVER_NAME);
|
||||
peripheral_request(P_UART3_RX, DRIVER_NAME);
|
||||
|
||||
#ifdef CONFIG_BFIN_UART3_CTSRTS
|
||||
/* Enable UART3 RTS and CTS on pin 2 & 3 of PORT B */
|
||||
bfin_write_PORTB_FER(0xC | bfin_read_PORTB_FER());
|
||||
bfin_write_PORTB_MUX(~0xF0 | bfin_read_PORTB_MUX());
|
||||
peripheral_request(P_UART3_RTS, DRIVER_NAME);
|
||||
peripheral_request(P_UART3_CTS DRIVER_NAME);
|
||||
#endif
|
||||
#endif
|
||||
SSYNC();
|
||||
#ifdef CONFIG_SERIAL_BFIN_CTSRTS
|
||||
if (uart->cts_pin >= 0) {
|
||||
gpio_request(uart->cts_pin, NULL);
|
||||
gpio_request(uart->cts_pin, DRIVER_NAME);
|
||||
gpio_direction_input(uart->cts_pin);
|
||||
}
|
||||
|
||||
if (uart->rts_pin >= 0) {
|
||||
gpio_request(uart->rts_pin, NULL);
|
||||
gpio_request(uart->rts_pin, DRIVER_NAME);
|
||||
gpio_direction_output(uart->rts_pin);
|
||||
}
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@
|
|||
#include "defBF549.h"
|
||||
#endif
|
||||
|
||||
#if !(defined(__ASSEMBLY__) || defined(ASSEMBLY))
|
||||
#if !defined(__ASSEMBLY__)
|
||||
#ifdef CONFIG_BF542
|
||||
#include "cdefBF542.h"
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -31,6 +31,8 @@
|
|||
#ifndef _CDEF_BF54X_H
|
||||
#define _CDEF_BF54X_H
|
||||
|
||||
#include <asm/blackfin.h>
|
||||
|
||||
#include "defBF54x_base.h"
|
||||
#include <asm/system.h>
|
||||
|
||||
|
|
@ -60,7 +62,7 @@ static __inline__ void bfin_write_VR_CTL(unsigned int val)
|
|||
bfin_write32(SIC_IWR2, 0);
|
||||
|
||||
bfin_write16(VR_CTL, val);
|
||||
__builtin_bfin_ssync();
|
||||
SSYNC();
|
||||
|
||||
local_irq_save(flags);
|
||||
asm("IDLE;");
|
||||
|
|
|
|||
|
|
@ -81,6 +81,7 @@
|
|||
|
||||
/* Two Wire Interface Registers (TWI1) */
|
||||
|
||||
#define TWI1_REGBASE 0xffc02200
|
||||
#define TWI1_CLKDIV 0xffc02200 /* Clock Divider Register */
|
||||
#define TWI1_CONTROL 0xffc02204 /* TWI Control Register */
|
||||
#define TWI1_SLAVE_CTRL 0xffc02208 /* TWI Slave Mode Control Register */
|
||||
|
|
|
|||
|
|
@ -120,6 +120,7 @@
|
|||
|
||||
/* Two Wire Interface Registers (TWI1) */
|
||||
|
||||
#define TWI1_REGBASE 0xffc02200
|
||||
#define TWI1_CLKDIV 0xffc02200 /* Clock Divider Register */
|
||||
#define TWI1_CONTROL 0xffc02204 /* TWI Control Register */
|
||||
#define TWI1_SLAVE_CTRL 0xffc02208 /* TWI Slave Mode Control Register */
|
||||
|
|
@ -139,6 +140,7 @@
|
|||
|
||||
/* SPI2 Registers */
|
||||
|
||||
#define SPI2_REGBASE 0xffc02400
|
||||
#define SPI2_CTL 0xffc02400 /* SPI2 Control Register */
|
||||
#define SPI2_FLG 0xffc02404 /* SPI2 Flag Register */
|
||||
#define SPI2_STAT 0xffc02408 /* SPI2 Status Register */
|
||||
|
|
|
|||
|
|
@ -121,6 +121,7 @@
|
|||
|
||||
/* Two Wire Interface Registers (TWI1) */
|
||||
|
||||
#define TWI1_REGBASE 0xffc02200
|
||||
#define TWI1_CLKDIV 0xffc02200 /* Clock Divider Register */
|
||||
#define TWI1_CONTROL 0xffc02204 /* TWI Control Register */
|
||||
#define TWI1_SLAVE_CTRL 0xffc02208 /* TWI Slave Mode Control Register */
|
||||
|
|
@ -140,6 +141,7 @@
|
|||
|
||||
/* SPI2 Registers */
|
||||
|
||||
#define SPI2_REGBASE 0xffc02400
|
||||
#define SPI2_CTL 0xffc02400 /* SPI2 Control Register */
|
||||
#define SPI2_FLG 0xffc02404 /* SPI2 Flag Register */
|
||||
#define SPI2_STAT 0xffc02408 /* SPI2 Status Register */
|
||||
|
|
|
|||
|
|
@ -109,6 +109,7 @@
|
|||
|
||||
/* SPI0 Registers */
|
||||
|
||||
#define SPI0_REGBASE 0xffc00500
|
||||
#define SPI0_CTL 0xffc00500 /* SPI0 Control Register */
|
||||
#define SPI0_FLG 0xffc00504 /* SPI0 Flag Register */
|
||||
#define SPI0_STAT 0xffc00508 /* SPI0 Status Register */
|
||||
|
|
@ -121,6 +122,7 @@
|
|||
|
||||
/* Two Wire Interface Registers (TWI0) */
|
||||
|
||||
#define TWI0_REGBASE 0xffc00700
|
||||
#define TWI0_CLKDIV 0xffc00700 /* Clock Divider Register */
|
||||
#define TWI0_CONTROL 0xffc00704 /* TWI Control Register */
|
||||
#define TWI0_SLAVE_CTRL 0xffc00708 /* TWI Slave Mode Control Register */
|
||||
|
|
@ -978,6 +980,7 @@
|
|||
|
||||
/* SPI1 Registers */
|
||||
|
||||
#define SPI1_REGBASE 0xffc02300
|
||||
#define SPI1_CTL 0xffc02300 /* SPI1 Control Register */
|
||||
#define SPI1_FLG 0xffc02304 /* SPI1 Flag Register */
|
||||
#define SPI1_STAT 0xffc02308 /* SPI1 Status Register */
|
||||
|
|
|
|||
|
|
@ -209,8 +209,3 @@ struct gpio_port_t {
|
|||
unsigned short dummy7;
|
||||
unsigned int port_mux;
|
||||
};
|
||||
|
||||
int gpio_request(unsigned short gpio, const char *label);
|
||||
void peripheral_free(unsigned short per);
|
||||
int peripheral_request_list(unsigned short per[], const char *label);
|
||||
void peripheral_free_list(unsigned short per[]);
|
||||
|
|
|
|||
|
|
@ -55,287 +55,288 @@ Events (highest priority) EMU 0
|
|||
|
||||
/* The ABSTRACT IRQ definitions */
|
||||
/** the first seven of the following are fixed, the rest you change if you need to **/
|
||||
#define IRQ_EMU 0 /* Emulation */
|
||||
#define IRQ_RST 1 /* reset */
|
||||
#define IRQ_NMI 2 /* Non Maskable */
|
||||
#define IRQ_EVX 3 /* Exception */
|
||||
#define IRQ_UNUSED 4 /* - unused interrupt*/
|
||||
#define IRQ_HWERR 5 /* Hardware Error */
|
||||
#define IRQ_CORETMR 6 /* Core timer */
|
||||
#define IRQ_EMU 0 /* Emulation */
|
||||
#define IRQ_RST 1 /* reset */
|
||||
#define IRQ_NMI 2 /* Non Maskable */
|
||||
#define IRQ_EVX 3 /* Exception */
|
||||
#define IRQ_UNUSED 4 /* - unused interrupt*/
|
||||
#define IRQ_HWERR 5 /* Hardware Error */
|
||||
#define IRQ_CORETMR 6 /* Core timer */
|
||||
|
||||
#define BFIN_IRQ(x) ((x) + 7)
|
||||
#define BFIN_IRQ(x) ((x) + 7)
|
||||
|
||||
#define IRQ_PLL_WAKEUP BFIN_IRQ(0) /* PLL Wakeup Interrupt */
|
||||
#define IRQ_DMAC0_ERR BFIN_IRQ(1) /* DMAC0 Status Interrupt */
|
||||
#define IRQ_EPPI0_ERR BFIN_IRQ(2) /* EPPI0 Error Interrupt */
|
||||
#define IRQ_SPORT0_ERR BFIN_IRQ(3) /* SPORT0 Error Interrupt */
|
||||
#define IRQ_SPORT1_ERR BFIN_IRQ(4) /* SPORT1 Error Interrupt */
|
||||
#define IRQ_SPI0_ERR BFIN_IRQ(5) /* SPI0 Status(Error) Interrupt */
|
||||
#define IRQ_UART0_ERR BFIN_IRQ(6) /* UART0 Status(Error) Interrupt */
|
||||
#define IRQ_RTC BFIN_IRQ(7) /* RTC Interrupt */
|
||||
#define IRQ_EPPI0 BFIN_IRQ(8) /* EPPI0 Interrupt (DMA12) */
|
||||
#define IRQ_SPORT0_RX BFIN_IRQ(9) /* SPORT0 RX Interrupt (DMA0) */
|
||||
#define IRQ_SPORT0_TX BFIN_IRQ(10) /* SPORT0 TX Interrupt (DMA1) */
|
||||
#define IRQ_SPORT1_RX BFIN_IRQ(11) /* SPORT1 RX Interrupt (DMA2) */
|
||||
#define IRQ_SPORT1_TX BFIN_IRQ(12) /* SPORT1 TX Interrupt (DMA3) */
|
||||
#define IRQ_SPI0 BFIN_IRQ(13) /* SPI0 Interrupt (DMA4) */
|
||||
#define IRQ_UART0_RX BFIN_IRQ(14) /* UART0 RX Interrupt (DMA6) */
|
||||
#define IRQ_UART0_TX BFIN_IRQ(15) /* UART0 TX Interrupt (DMA7) */
|
||||
#define IRQ_TIMER8 BFIN_IRQ(16) /* TIMER 8 Interrupt */
|
||||
#define IRQ_TIMER9 BFIN_IRQ(17) /* TIMER 9 Interrupt */
|
||||
#define IRQ_TIMER10 BFIN_IRQ(18) /* TIMER 10 Interrupt */
|
||||
#define IRQ_PINT0 BFIN_IRQ(19) /* PINT0 Interrupt */
|
||||
#define IRQ_PINT1 BFIN_IRQ(20) /* PINT1 Interrupt */
|
||||
#define IRQ_MDMAS0 BFIN_IRQ(21) /* MDMA Stream 0 Interrupt */
|
||||
#define IRQ_MDMAS1 BFIN_IRQ(22) /* MDMA Stream 1 Interrupt */
|
||||
#define IRQ_WATCHDOG BFIN_IRQ(23) /* Watchdog Interrupt */
|
||||
#define IRQ_DMAC1_ERR BFIN_IRQ(24) /* DMAC1 Status (Error) Interrupt */
|
||||
#define IRQ_SPORT2_ERR BFIN_IRQ(25) /* SPORT2 Error Interrupt */
|
||||
#define IRQ_SPORT3_ERR BFIN_IRQ(26) /* SPORT3 Error Interrupt */
|
||||
#define IRQ_MXVR_DATA BFIN_IRQ(27) /* MXVR Data Interrupt */
|
||||
#define IRQ_SPI1_ERR BFIN_IRQ(28) /* SPI1 Status (Error) Interrupt */
|
||||
#define IRQ_SPI2_ERR BFIN_IRQ(29) /* SPI2 Status (Error) Interrupt */
|
||||
#define IRQ_UART1_ERR BFIN_IRQ(30) /* UART1 Status (Error) Interrupt */
|
||||
#define IRQ_UART2_ERR BFIN_IRQ(31) /* UART2 Status (Error) Interrupt */
|
||||
#define IRQ_CAN0_ERR BFIN_IRQ(32) /* CAN0 Status (Error) Interrupt */
|
||||
#define IRQ_SPORT2_RX BFIN_IRQ(33) /* SPORT2 RX (DMA18) Interrupt */
|
||||
#define IRQ_SPORT2_TX BFIN_IRQ(34) /* SPORT2 TX (DMA19) Interrupt */
|
||||
#define IRQ_SPORT3_RX BFIN_IRQ(35) /* SPORT3 RX (DMA20) Interrupt */
|
||||
#define IRQ_SPORT3_TX BFIN_IRQ(36) /* SPORT3 TX (DMA21) Interrupt */
|
||||
#define IRQ_EPPI1 BFIN_IRQ(37) /* EPP1 (DMA13) Interrupt */
|
||||
#define IRQ_EPPI2 BFIN_IRQ(38) /* EPP2 (DMA14) Interrupt */
|
||||
#define IRQ_SPI1 BFIN_IRQ(39) /* SPI1 (DMA5) Interrupt */
|
||||
#define IRQ_SPI2 BFIN_IRQ(40) /* SPI2 (DMA23) Interrupt */
|
||||
#define IRQ_UART1_RX BFIN_IRQ(41) /* UART1 RX (DMA8) Interrupt */
|
||||
#define IRQ_UART1_TX BFIN_IRQ(42) /* UART1 TX (DMA9) Interrupt */
|
||||
#define IRQ_ATAPI_RX BFIN_IRQ(43) /* ATAPI RX (DMA10) Interrupt */
|
||||
#define IRQ_ATAPI_TX BFIN_IRQ(44) /* ATAPI TX (DMA11) Interrupt */
|
||||
#define IRQ_TWI0 BFIN_IRQ(45) /* TWI0 Interrupt */
|
||||
#define IRQ_TWI1 BFIN_IRQ(46) /* TWI1 Interrupt */
|
||||
#define IRQ_TWI IRQ_TWI0 /* TWI Interrupt */
|
||||
#define IRQ_CAN0_RX BFIN_IRQ(47) /* CAN0 Receive Interrupt */
|
||||
#define IRQ_CAN0_TX BFIN_IRQ(48) /* CAN0 Transmit Interrupt */
|
||||
#define IRQ_MDMAS2 BFIN_IRQ(49) /* MDMA Stream 2 Interrupt */
|
||||
#define IRQ_MDMAS3 BFIN_IRQ(50) /* MDMA Stream 3 Interrupt */
|
||||
#define IRQ_MXVR_ERR BFIN_IRQ(51) /* MXVR Status (Error) Interrupt */
|
||||
#define IRQ_MXVR_MSG BFIN_IRQ(52) /* MXVR Message Interrupt */
|
||||
#define IRQ_MXVR_PKT BFIN_IRQ(53) /* MXVR Packet Interrupt */
|
||||
#define IRQ_EPP1_ERR BFIN_IRQ(54) /* EPPI1 Error Interrupt */
|
||||
#define IRQ_EPP2_ERR BFIN_IRQ(55) /* EPPI2 Error Interrupt */
|
||||
#define IRQ_UART3_ERR BFIN_IRQ(56) /* UART3 Status (Error) Interrupt */
|
||||
#define IRQ_HOST_ERR BFIN_IRQ(57) /* HOST Status (Error) Interrupt */
|
||||
#define IRQ_PIXC_ERR BFIN_IRQ(59) /* PIXC Status (Error) Interrupt */
|
||||
#define IRQ_NFC_ERR BFIN_IRQ(60) /* NFC Error Interrupt */
|
||||
#define IRQ_ATAPI_ERR BFIN_IRQ(61) /* ATAPI Error Interrupt */
|
||||
#define IRQ_CAN1_ERR BFIN_IRQ(62) /* CAN1 Status (Error) Interrupt */
|
||||
#define IRQ_HS_DMA_ERR BFIN_IRQ(63) /* Handshake DMA Status Interrupt */
|
||||
#define IRQ_PIXC_IN0 BFIN_IRQ(64) /* PIXC IN0 (DMA15) Interrupt */
|
||||
#define IRQ_PIXC_IN1 BFIN_IRQ(65) /* PIXC IN1 (DMA16) Interrupt */
|
||||
#define IRQ_PIXC_OUT BFIN_IRQ(66) /* PIXC OUT (DMA17) Interrupt */
|
||||
#define IRQ_SDH BFIN_IRQ(67) /* SDH/NFC (DMA22) Interrupt */
|
||||
#define IRQ_CNT BFIN_IRQ(68) /* CNT Interrupt */
|
||||
#define IRQ_KEY BFIN_IRQ(69) /* KEY Interrupt */
|
||||
#define IRQ_CAN1_RX BFIN_IRQ(70) /* CAN1 RX Interrupt */
|
||||
#define IRQ_CAN1_TX BFIN_IRQ(71) /* CAN1 TX Interrupt */
|
||||
#define IRQ_SDH_MASK0 BFIN_IRQ(72) /* SDH Mask 0 Interrupt */
|
||||
#define IRQ_SDH_MASK1 BFIN_IRQ(73) /* SDH Mask 1 Interrupt */
|
||||
#define IRQ_USB_INT0 BFIN_IRQ(75) /* USB INT0 Interrupt */
|
||||
#define IRQ_USB_INT1 BFIN_IRQ(76) /* USB INT1 Interrupt */
|
||||
#define IRQ_USB_INT2 BFIN_IRQ(77) /* USB INT2 Interrupt */
|
||||
#define IRQ_USB_DMA BFIN_IRQ(78) /* USB DMA Interrupt */
|
||||
#define IRQ_OPTSEC BFIN_IRQ(79) /* OTPSEC Interrupt */
|
||||
#define IRQ_TIMER0 BFIN_IRQ(86) /* Timer 0 Interrupt */
|
||||
#define IRQ_TIMER1 BFIN_IRQ(87) /* Timer 1 Interrupt */
|
||||
#define IRQ_TIMER2 BFIN_IRQ(88) /* Timer 2 Interrupt */
|
||||
#define IRQ_TIMER3 BFIN_IRQ(89) /* Timer 3 Interrupt */
|
||||
#define IRQ_TIMER4 BFIN_IRQ(90) /* Timer 4 Interrupt */
|
||||
#define IRQ_TIMER5 BFIN_IRQ(91) /* Timer 5 Interrupt */
|
||||
#define IRQ_TIMER6 BFIN_IRQ(92) /* Timer 6 Interrupt */
|
||||
#define IRQ_TIMER7 BFIN_IRQ(93) /* Timer 7 Interrupt */
|
||||
#define IRQ_PINT2 BFIN_IRQ(94) /* PINT2 Interrupt */
|
||||
#define IRQ_PINT3 BFIN_IRQ(95) /* PINT3 Interrupt */
|
||||
#define IRQ_PLL_WAKEUP BFIN_IRQ(0) /* PLL Wakeup Interrupt */
|
||||
#define IRQ_DMAC0_ERROR BFIN_IRQ(1) /* DMAC0 Status Interrupt */
|
||||
#define IRQ_EPPI0_ERROR BFIN_IRQ(2) /* EPPI0 Error Interrupt */
|
||||
#define IRQ_SPORT0_ERROR BFIN_IRQ(3) /* SPORT0 Error Interrupt */
|
||||
#define IRQ_SPORT1_ERROR BFIN_IRQ(4) /* SPORT1 Error Interrupt */
|
||||
#define IRQ_SPI0_ERROR BFIN_IRQ(5) /* SPI0 Status(Error) Interrupt */
|
||||
#define IRQ_UART0_ERROR BFIN_IRQ(6) /* UART0 Status(Error) Interrupt */
|
||||
#define IRQ_RTC BFIN_IRQ(7) /* RTC Interrupt */
|
||||
#define IRQ_EPPI0 BFIN_IRQ(8) /* EPPI0 Interrupt (DMA12) */
|
||||
#define IRQ_SPORT0_RX BFIN_IRQ(9) /* SPORT0 RX Interrupt (DMA0) */
|
||||
#define IRQ_SPORT0_TX BFIN_IRQ(10) /* SPORT0 TX Interrupt (DMA1) */
|
||||
#define IRQ_SPORT1_RX BFIN_IRQ(11) /* SPORT1 RX Interrupt (DMA2) */
|
||||
#define IRQ_SPORT1_TX BFIN_IRQ(12) /* SPORT1 TX Interrupt (DMA3) */
|
||||
#define IRQ_SPI0 BFIN_IRQ(13) /* SPI0 Interrupt (DMA4) */
|
||||
#define IRQ_UART0_RX BFIN_IRQ(14) /* UART0 RX Interrupt (DMA6) */
|
||||
#define IRQ_UART0_TX BFIN_IRQ(15) /* UART0 TX Interrupt (DMA7) */
|
||||
#define IRQ_TIMER8 BFIN_IRQ(16) /* TIMER 8 Interrupt */
|
||||
#define IRQ_TIMER9 BFIN_IRQ(17) /* TIMER 9 Interrupt */
|
||||
#define IRQ_TIMER10 BFIN_IRQ(18) /* TIMER 10 Interrupt */
|
||||
#define IRQ_PINT0 BFIN_IRQ(19) /* PINT0 Interrupt */
|
||||
#define IRQ_PINT1 BFIN_IRQ(20) /* PINT1 Interrupt */
|
||||
#define IRQ_MDMAS0 BFIN_IRQ(21) /* MDMA Stream 0 Interrupt */
|
||||
#define IRQ_MDMAS1 BFIN_IRQ(22) /* MDMA Stream 1 Interrupt */
|
||||
#define IRQ_WATCHDOG BFIN_IRQ(23) /* Watchdog Interrupt */
|
||||
#define IRQ_DMAC1_ERROR BFIN_IRQ(24) /* DMAC1 Status (Error) Interrupt */
|
||||
#define IRQ_SPORT2_ERROR BFIN_IRQ(25) /* SPORT2 Error Interrupt */
|
||||
#define IRQ_SPORT3_ERROR BFIN_IRQ(26) /* SPORT3 Error Interrupt */
|
||||
#define IRQ_MXVR_DATA BFIN_IRQ(27) /* MXVR Data Interrupt */
|
||||
#define IRQ_SPI1_ERROR BFIN_IRQ(28) /* SPI1 Status (Error) Interrupt */
|
||||
#define IRQ_SPI2_ERROR BFIN_IRQ(29) /* SPI2 Status (Error) Interrupt */
|
||||
#define IRQ_UART1_ERROR BFIN_IRQ(30) /* UART1 Status (Error) Interrupt */
|
||||
#define IRQ_UART2_ERROR BFIN_IRQ(31) /* UART2 Status (Error) Interrupt */
|
||||
#define IRQ_CAN0_ERROR BFIN_IRQ(32) /* CAN0 Status (Error) Interrupt */
|
||||
#define IRQ_SPORT2_RX BFIN_IRQ(33) /* SPORT2 RX (DMA18) Interrupt */
|
||||
#define IRQ_SPORT2_TX BFIN_IRQ(34) /* SPORT2 TX (DMA19) Interrupt */
|
||||
#define IRQ_SPORT3_RX BFIN_IRQ(35) /* SPORT3 RX (DMA20) Interrupt */
|
||||
#define IRQ_SPORT3_TX BFIN_IRQ(36) /* SPORT3 TX (DMA21) Interrupt */
|
||||
#define IRQ_EPPI1 BFIN_IRQ(37) /* EPP1 (DMA13) Interrupt */
|
||||
#define IRQ_EPPI2 BFIN_IRQ(38) /* EPP2 (DMA14) Interrupt */
|
||||
#define IRQ_SPI1 BFIN_IRQ(39) /* SPI1 (DMA5) Interrupt */
|
||||
#define IRQ_SPI2 BFIN_IRQ(40) /* SPI2 (DMA23) Interrupt */
|
||||
#define IRQ_UART1_RX BFIN_IRQ(41) /* UART1 RX (DMA8) Interrupt */
|
||||
#define IRQ_UART1_TX BFIN_IRQ(42) /* UART1 TX (DMA9) Interrupt */
|
||||
#define IRQ_ATAPI_RX BFIN_IRQ(43) /* ATAPI RX (DMA10) Interrupt */
|
||||
#define IRQ_ATAPI_TX BFIN_IRQ(44) /* ATAPI TX (DMA11) Interrupt */
|
||||
#define IRQ_TWI0 BFIN_IRQ(45) /* TWI0 Interrupt */
|
||||
#define IRQ_TWI1 BFIN_IRQ(46) /* TWI1 Interrupt */
|
||||
#define IRQ_CAN0_RX BFIN_IRQ(47) /* CAN0 Receive Interrupt */
|
||||
#define IRQ_CAN0_TX BFIN_IRQ(48) /* CAN0 Transmit Interrupt */
|
||||
#define IRQ_MDMAS2 BFIN_IRQ(49) /* MDMA Stream 2 Interrupt */
|
||||
#define IRQ_MDMAS3 BFIN_IRQ(50) /* MDMA Stream 3 Interrupt */
|
||||
#define IRQ_MXVR_ERROR BFIN_IRQ(51) /* MXVR Status (Error) Interrupt */
|
||||
#define IRQ_MXVR_MSG BFIN_IRQ(52) /* MXVR Message Interrupt */
|
||||
#define IRQ_MXVR_PKT BFIN_IRQ(53) /* MXVR Packet Interrupt */
|
||||
#define IRQ_EPP1_ERROR BFIN_IRQ(54) /* EPPI1 Error Interrupt */
|
||||
#define IRQ_EPP2_ERROR BFIN_IRQ(55) /* EPPI2 Error Interrupt */
|
||||
#define IRQ_UART3_ERROR BFIN_IRQ(56) /* UART3 Status (Error) Interrupt */
|
||||
#define IRQ_HOST_ERROR BFIN_IRQ(57) /* HOST Status (Error) Interrupt */
|
||||
#define IRQ_PIXC_ERROR BFIN_IRQ(59) /* PIXC Status (Error) Interrupt */
|
||||
#define IRQ_NFC_ERROR BFIN_IRQ(60) /* NFC Error Interrupt */
|
||||
#define IRQ_ATAPI_ERROR BFIN_IRQ(61) /* ATAPI Error Interrupt */
|
||||
#define IRQ_CAN1_ERROR BFIN_IRQ(62) /* CAN1 Status (Error) Interrupt */
|
||||
#define IRQ_HS_DMA_ERROR BFIN_IRQ(63) /* Handshake DMA Status Interrupt */
|
||||
#define IRQ_PIXC_IN0 BFIN_IRQ(64) /* PIXC IN0 (DMA15) Interrupt */
|
||||
#define IRQ_PIXC_IN1 BFIN_IRQ(65) /* PIXC IN1 (DMA16) Interrupt */
|
||||
#define IRQ_PIXC_OUT BFIN_IRQ(66) /* PIXC OUT (DMA17) Interrupt */
|
||||
#define IRQ_SDH BFIN_IRQ(67) /* SDH/NFC (DMA22) Interrupt */
|
||||
#define IRQ_CNT BFIN_IRQ(68) /* CNT Interrupt */
|
||||
#define IRQ_KEY BFIN_IRQ(69) /* KEY Interrupt */
|
||||
#define IRQ_CAN1_RX BFIN_IRQ(70) /* CAN1 RX Interrupt */
|
||||
#define IRQ_CAN1_TX BFIN_IRQ(71) /* CAN1 TX Interrupt */
|
||||
#define IRQ_SDH_MASK0 BFIN_IRQ(72) /* SDH Mask 0 Interrupt */
|
||||
#define IRQ_SDH_MASK1 BFIN_IRQ(73) /* SDH Mask 1 Interrupt */
|
||||
#define IRQ_USB_INT0 BFIN_IRQ(75) /* USB INT0 Interrupt */
|
||||
#define IRQ_USB_INT1 BFIN_IRQ(76) /* USB INT1 Interrupt */
|
||||
#define IRQ_USB_INT2 BFIN_IRQ(77) /* USB INT2 Interrupt */
|
||||
#define IRQ_USB_DMA BFIN_IRQ(78) /* USB DMA Interrupt */
|
||||
#define IRQ_OPTSEC BFIN_IRQ(79) /* OTPSEC Interrupt */
|
||||
#define IRQ_TIMER0 BFIN_IRQ(86) /* Timer 0 Interrupt */
|
||||
#define IRQ_TIMER1 BFIN_IRQ(87) /* Timer 1 Interrupt */
|
||||
#define IRQ_TIMER2 BFIN_IRQ(88) /* Timer 2 Interrupt */
|
||||
#define IRQ_TIMER3 BFIN_IRQ(89) /* Timer 3 Interrupt */
|
||||
#define IRQ_TIMER4 BFIN_IRQ(90) /* Timer 4 Interrupt */
|
||||
#define IRQ_TIMER5 BFIN_IRQ(91) /* Timer 5 Interrupt */
|
||||
#define IRQ_TIMER6 BFIN_IRQ(92) /* Timer 6 Interrupt */
|
||||
#define IRQ_TIMER7 BFIN_IRQ(93) /* Timer 7 Interrupt */
|
||||
#define IRQ_PINT2 BFIN_IRQ(94) /* PINT2 Interrupt */
|
||||
#define IRQ_PINT3 BFIN_IRQ(95) /* PINT3 Interrupt */
|
||||
|
||||
#define SYS_IRQS IRQ_PINT3
|
||||
#define SYS_IRQS IRQ_PINT3
|
||||
|
||||
#define BFIN_PA_IRQ(x) ((x) + SYS_IRQS + 1)
|
||||
#define IRQ_PA0 BFIN_PA_IRQ(0)
|
||||
#define IRQ_PA1 BFIN_PA_IRQ(1)
|
||||
#define IRQ_PA2 BFIN_PA_IRQ(2)
|
||||
#define IRQ_PA3 BFIN_PA_IRQ(3)
|
||||
#define IRQ_PA4 BFIN_PA_IRQ(4)
|
||||
#define IRQ_PA5 BFIN_PA_IRQ(5)
|
||||
#define IRQ_PA6 BFIN_PA_IRQ(6)
|
||||
#define IRQ_PA7 BFIN_PA_IRQ(7)
|
||||
#define IRQ_PA8 BFIN_PA_IRQ(8)
|
||||
#define IRQ_PA9 BFIN_PA_IRQ(9)
|
||||
#define IRQ_PA10 BFIN_PA_IRQ(10)
|
||||
#define IRQ_PA11 BFIN_PA_IRQ(11)
|
||||
#define IRQ_PA12 BFIN_PA_IRQ(12)
|
||||
#define IRQ_PA13 BFIN_PA_IRQ(13)
|
||||
#define IRQ_PA14 BFIN_PA_IRQ(14)
|
||||
#define IRQ_PA15 BFIN_PA_IRQ(15)
|
||||
#define BFIN_PA_IRQ(x) ((x) + SYS_IRQS + 1)
|
||||
#define IRQ_PA0 BFIN_PA_IRQ(0)
|
||||
#define IRQ_PA1 BFIN_PA_IRQ(1)
|
||||
#define IRQ_PA2 BFIN_PA_IRQ(2)
|
||||
#define IRQ_PA3 BFIN_PA_IRQ(3)
|
||||
#define IRQ_PA4 BFIN_PA_IRQ(4)
|
||||
#define IRQ_PA5 BFIN_PA_IRQ(5)
|
||||
#define IRQ_PA6 BFIN_PA_IRQ(6)
|
||||
#define IRQ_PA7 BFIN_PA_IRQ(7)
|
||||
#define IRQ_PA8 BFIN_PA_IRQ(8)
|
||||
#define IRQ_PA9 BFIN_PA_IRQ(9)
|
||||
#define IRQ_PA10 BFIN_PA_IRQ(10)
|
||||
#define IRQ_PA11 BFIN_PA_IRQ(11)
|
||||
#define IRQ_PA12 BFIN_PA_IRQ(12)
|
||||
#define IRQ_PA13 BFIN_PA_IRQ(13)
|
||||
#define IRQ_PA14 BFIN_PA_IRQ(14)
|
||||
#define IRQ_PA15 BFIN_PA_IRQ(15)
|
||||
|
||||
#define BFIN_PB_IRQ(x) ((x) + IRQ_PA15 + 1)
|
||||
#define IRQ_PB0 BFIN_PB_IRQ(0)
|
||||
#define IRQ_PB1 BFIN_PB_IRQ(1)
|
||||
#define IRQ_PB2 BFIN_PB_IRQ(2)
|
||||
#define IRQ_PB3 BFIN_PB_IRQ(3)
|
||||
#define IRQ_PB4 BFIN_PB_IRQ(4)
|
||||
#define IRQ_PB5 BFIN_PB_IRQ(5)
|
||||
#define IRQ_PB6 BFIN_PB_IRQ(6)
|
||||
#define IRQ_PB7 BFIN_PB_IRQ(7)
|
||||
#define IRQ_PB8 BFIN_PB_IRQ(8)
|
||||
#define IRQ_PB9 BFIN_PB_IRQ(9)
|
||||
#define IRQ_PB10 BFIN_PB_IRQ(10)
|
||||
#define IRQ_PB11 BFIN_PB_IRQ(11)
|
||||
#define IRQ_PB12 BFIN_PB_IRQ(12)
|
||||
#define IRQ_PB13 BFIN_PB_IRQ(13)
|
||||
#define IRQ_PB14 BFIN_PB_IRQ(14)
|
||||
#define IRQ_PB15 BFIN_PB_IRQ(15) /* N/A */
|
||||
#define BFIN_PB_IRQ(x) ((x) + IRQ_PA15 + 1)
|
||||
#define IRQ_PB0 BFIN_PB_IRQ(0)
|
||||
#define IRQ_PB1 BFIN_PB_IRQ(1)
|
||||
#define IRQ_PB2 BFIN_PB_IRQ(2)
|
||||
#define IRQ_PB3 BFIN_PB_IRQ(3)
|
||||
#define IRQ_PB4 BFIN_PB_IRQ(4)
|
||||
#define IRQ_PB5 BFIN_PB_IRQ(5)
|
||||
#define IRQ_PB6 BFIN_PB_IRQ(6)
|
||||
#define IRQ_PB7 BFIN_PB_IRQ(7)
|
||||
#define IRQ_PB8 BFIN_PB_IRQ(8)
|
||||
#define IRQ_PB9 BFIN_PB_IRQ(9)
|
||||
#define IRQ_PB10 BFIN_PB_IRQ(10)
|
||||
#define IRQ_PB11 BFIN_PB_IRQ(11)
|
||||
#define IRQ_PB12 BFIN_PB_IRQ(12)
|
||||
#define IRQ_PB13 BFIN_PB_IRQ(13)
|
||||
#define IRQ_PB14 BFIN_PB_IRQ(14)
|
||||
#define IRQ_PB15 BFIN_PB_IRQ(15) /* N/A */
|
||||
|
||||
#define BFIN_PC_IRQ(x) ((x) + IRQ_PB15 + 1)
|
||||
#define IRQ_PC0 BFIN_PC_IRQ(0)
|
||||
#define IRQ_PC1 BFIN_PC_IRQ(1)
|
||||
#define IRQ_PC2 BFIN_PC_IRQ(2)
|
||||
#define IRQ_PC3 BFIN_PC_IRQ(3)
|
||||
#define IRQ_PC4 BFIN_PC_IRQ(4)
|
||||
#define IRQ_PC5 BFIN_PC_IRQ(5)
|
||||
#define IRQ_PC6 BFIN_PC_IRQ(6)
|
||||
#define IRQ_PC7 BFIN_PC_IRQ(7)
|
||||
#define IRQ_PC8 BFIN_PC_IRQ(8)
|
||||
#define IRQ_PC9 BFIN_PC_IRQ(9)
|
||||
#define IRQ_PC10 BFIN_PC_IRQ(10)
|
||||
#define IRQ_PC11 BFIN_PC_IRQ(11)
|
||||
#define IRQ_PC12 BFIN_PC_IRQ(12)
|
||||
#define IRQ_PC13 BFIN_PC_IRQ(13)
|
||||
#define IRQ_PC14 BFIN_PC_IRQ(14) /* N/A */
|
||||
#define IRQ_PC15 BFIN_PC_IRQ(15) /* N/A */
|
||||
#define BFIN_PC_IRQ(x) ((x) + IRQ_PB15 + 1)
|
||||
#define IRQ_PC0 BFIN_PC_IRQ(0)
|
||||
#define IRQ_PC1 BFIN_PC_IRQ(1)
|
||||
#define IRQ_PC2 BFIN_PC_IRQ(2)
|
||||
#define IRQ_PC3 BFIN_PC_IRQ(3)
|
||||
#define IRQ_PC4 BFIN_PC_IRQ(4)
|
||||
#define IRQ_PC5 BFIN_PC_IRQ(5)
|
||||
#define IRQ_PC6 BFIN_PC_IRQ(6)
|
||||
#define IRQ_PC7 BFIN_PC_IRQ(7)
|
||||
#define IRQ_PC8 BFIN_PC_IRQ(8)
|
||||
#define IRQ_PC9 BFIN_PC_IRQ(9)
|
||||
#define IRQ_PC10 BFIN_PC_IRQ(10)
|
||||
#define IRQ_PC11 BFIN_PC_IRQ(11)
|
||||
#define IRQ_PC12 BFIN_PC_IRQ(12)
|
||||
#define IRQ_PC13 BFIN_PC_IRQ(13)
|
||||
#define IRQ_PC14 BFIN_PC_IRQ(14) /* N/A */
|
||||
#define IRQ_PC15 BFIN_PC_IRQ(15) /* N/A */
|
||||
|
||||
#define BFIN_PD_IRQ(x) ((x) + IRQ_PC15 + 1)
|
||||
#define IRQ_PD0 BFIN_PD_IRQ(0)
|
||||
#define IRQ_PD1 BFIN_PD_IRQ(1)
|
||||
#define IRQ_PD2 BFIN_PD_IRQ(2)
|
||||
#define IRQ_PD3 BFIN_PD_IRQ(3)
|
||||
#define IRQ_PD4 BFIN_PD_IRQ(4)
|
||||
#define IRQ_PD5 BFIN_PD_IRQ(5)
|
||||
#define IRQ_PD6 BFIN_PD_IRQ(6)
|
||||
#define IRQ_PD7 BFIN_PD_IRQ(7)
|
||||
#define IRQ_PD8 BFIN_PD_IRQ(8)
|
||||
#define IRQ_PD9 BFIN_PD_IRQ(9)
|
||||
#define IRQ_PD10 BFIN_PD_IRQ(10)
|
||||
#define IRQ_PD11 BFIN_PD_IRQ(11)
|
||||
#define IRQ_PD12 BFIN_PD_IRQ(12)
|
||||
#define IRQ_PD13 BFIN_PD_IRQ(13)
|
||||
#define IRQ_PD14 BFIN_PD_IRQ(14)
|
||||
#define IRQ_PD15 BFIN_PD_IRQ(15)
|
||||
#define BFIN_PD_IRQ(x) ((x) + IRQ_PC15 + 1)
|
||||
#define IRQ_PD0 BFIN_PD_IRQ(0)
|
||||
#define IRQ_PD1 BFIN_PD_IRQ(1)
|
||||
#define IRQ_PD2 BFIN_PD_IRQ(2)
|
||||
#define IRQ_PD3 BFIN_PD_IRQ(3)
|
||||
#define IRQ_PD4 BFIN_PD_IRQ(4)
|
||||
#define IRQ_PD5 BFIN_PD_IRQ(5)
|
||||
#define IRQ_PD6 BFIN_PD_IRQ(6)
|
||||
#define IRQ_PD7 BFIN_PD_IRQ(7)
|
||||
#define IRQ_PD8 BFIN_PD_IRQ(8)
|
||||
#define IRQ_PD9 BFIN_PD_IRQ(9)
|
||||
#define IRQ_PD10 BFIN_PD_IRQ(10)
|
||||
#define IRQ_PD11 BFIN_PD_IRQ(11)
|
||||
#define IRQ_PD12 BFIN_PD_IRQ(12)
|
||||
#define IRQ_PD13 BFIN_PD_IRQ(13)
|
||||
#define IRQ_PD14 BFIN_PD_IRQ(14)
|
||||
#define IRQ_PD15 BFIN_PD_IRQ(15)
|
||||
|
||||
#define BFIN_PE_IRQ(x) ((x) + IRQ_PD15 + 1)
|
||||
#define IRQ_PE0 BFIN_PE_IRQ(0)
|
||||
#define IRQ_PE1 BFIN_PE_IRQ(1)
|
||||
#define IRQ_PE2 BFIN_PE_IRQ(2)
|
||||
#define IRQ_PE3 BFIN_PE_IRQ(3)
|
||||
#define IRQ_PE4 BFIN_PE_IRQ(4)
|
||||
#define IRQ_PE5 BFIN_PE_IRQ(5)
|
||||
#define IRQ_PE6 BFIN_PE_IRQ(6)
|
||||
#define IRQ_PE7 BFIN_PE_IRQ(7)
|
||||
#define IRQ_PE8 BFIN_PE_IRQ(8)
|
||||
#define IRQ_PE9 BFIN_PE_IRQ(9)
|
||||
#define IRQ_PE10 BFIN_PE_IRQ(10)
|
||||
#define IRQ_PE11 BFIN_PE_IRQ(11)
|
||||
#define IRQ_PE12 BFIN_PE_IRQ(12)
|
||||
#define IRQ_PE13 BFIN_PE_IRQ(13)
|
||||
#define IRQ_PE14 BFIN_PE_IRQ(14)
|
||||
#define IRQ_PE15 BFIN_PE_IRQ(15)
|
||||
#define BFIN_PE_IRQ(x) ((x) + IRQ_PD15 + 1)
|
||||
#define IRQ_PE0 BFIN_PE_IRQ(0)
|
||||
#define IRQ_PE1 BFIN_PE_IRQ(1)
|
||||
#define IRQ_PE2 BFIN_PE_IRQ(2)
|
||||
#define IRQ_PE3 BFIN_PE_IRQ(3)
|
||||
#define IRQ_PE4 BFIN_PE_IRQ(4)
|
||||
#define IRQ_PE5 BFIN_PE_IRQ(5)
|
||||
#define IRQ_PE6 BFIN_PE_IRQ(6)
|
||||
#define IRQ_PE7 BFIN_PE_IRQ(7)
|
||||
#define IRQ_PE8 BFIN_PE_IRQ(8)
|
||||
#define IRQ_PE9 BFIN_PE_IRQ(9)
|
||||
#define IRQ_PE10 BFIN_PE_IRQ(10)
|
||||
#define IRQ_PE11 BFIN_PE_IRQ(11)
|
||||
#define IRQ_PE12 BFIN_PE_IRQ(12)
|
||||
#define IRQ_PE13 BFIN_PE_IRQ(13)
|
||||
#define IRQ_PE14 BFIN_PE_IRQ(14)
|
||||
#define IRQ_PE15 BFIN_PE_IRQ(15)
|
||||
|
||||
#define BFIN_PF_IRQ(x) ((x) + IRQ_PE15 + 1)
|
||||
#define IRQ_PF0 BFIN_PF_IRQ(0)
|
||||
#define IRQ_PF1 BFIN_PF_IRQ(1)
|
||||
#define IRQ_PF2 BFIN_PF_IRQ(2)
|
||||
#define IRQ_PF3 BFIN_PF_IRQ(3)
|
||||
#define IRQ_PF4 BFIN_PF_IRQ(4)
|
||||
#define IRQ_PF5 BFIN_PF_IRQ(5)
|
||||
#define IRQ_PF6 BFIN_PF_IRQ(6)
|
||||
#define IRQ_PF7 BFIN_PF_IRQ(7)
|
||||
#define IRQ_PF8 BFIN_PF_IRQ(8)
|
||||
#define IRQ_PF9 BFIN_PF_IRQ(9)
|
||||
#define IRQ_PF10 BFIN_PF_IRQ(10)
|
||||
#define IRQ_PF11 BFIN_PF_IRQ(11)
|
||||
#define IRQ_PF12 BFIN_PF_IRQ(12)
|
||||
#define IRQ_PF13 BFIN_PF_IRQ(13)
|
||||
#define IRQ_PF14 BFIN_PF_IRQ(14)
|
||||
#define IRQ_PF15 BFIN_PF_IRQ(15)
|
||||
#define BFIN_PF_IRQ(x) ((x) + IRQ_PE15 + 1)
|
||||
#define IRQ_PF0 BFIN_PF_IRQ(0)
|
||||
#define IRQ_PF1 BFIN_PF_IRQ(1)
|
||||
#define IRQ_PF2 BFIN_PF_IRQ(2)
|
||||
#define IRQ_PF3 BFIN_PF_IRQ(3)
|
||||
#define IRQ_PF4 BFIN_PF_IRQ(4)
|
||||
#define IRQ_PF5 BFIN_PF_IRQ(5)
|
||||
#define IRQ_PF6 BFIN_PF_IRQ(6)
|
||||
#define IRQ_PF7 BFIN_PF_IRQ(7)
|
||||
#define IRQ_PF8 BFIN_PF_IRQ(8)
|
||||
#define IRQ_PF9 BFIN_PF_IRQ(9)
|
||||
#define IRQ_PF10 BFIN_PF_IRQ(10)
|
||||
#define IRQ_PF11 BFIN_PF_IRQ(11)
|
||||
#define IRQ_PF12 BFIN_PF_IRQ(12)
|
||||
#define IRQ_PF13 BFIN_PF_IRQ(13)
|
||||
#define IRQ_PF14 BFIN_PF_IRQ(14)
|
||||
#define IRQ_PF15 BFIN_PF_IRQ(15)
|
||||
|
||||
#define BFIN_PG_IRQ(x) ((x) + IRQ_PF15 + 1)
|
||||
#define IRQ_PG0 BFIN_PG_IRQ(0)
|
||||
#define IRQ_PG1 BFIN_PG_IRQ(1)
|
||||
#define IRQ_PG2 BFIN_PG_IRQ(2)
|
||||
#define IRQ_PG3 BFIN_PG_IRQ(3)
|
||||
#define IRQ_PG4 BFIN_PG_IRQ(4)
|
||||
#define IRQ_PG5 BFIN_PG_IRQ(5)
|
||||
#define IRQ_PG6 BFIN_PG_IRQ(6)
|
||||
#define IRQ_PG7 BFIN_PG_IRQ(7)
|
||||
#define IRQ_PG8 BFIN_PG_IRQ(8)
|
||||
#define IRQ_PG9 BFIN_PG_IRQ(9)
|
||||
#define IRQ_PG10 BFIN_PG_IRQ(10)
|
||||
#define IRQ_PG11 BFIN_PG_IRQ(11)
|
||||
#define IRQ_PG12 BFIN_PG_IRQ(12)
|
||||
#define IRQ_PG13 BFIN_PG_IRQ(13)
|
||||
#define IRQ_PG14 BFIN_PG_IRQ(14)
|
||||
#define IRQ_PG15 BFIN_PG_IRQ(15)
|
||||
#define BFIN_PG_IRQ(x) ((x) + IRQ_PF15 + 1)
|
||||
#define IRQ_PG0 BFIN_PG_IRQ(0)
|
||||
#define IRQ_PG1 BFIN_PG_IRQ(1)
|
||||
#define IRQ_PG2 BFIN_PG_IRQ(2)
|
||||
#define IRQ_PG3 BFIN_PG_IRQ(3)
|
||||
#define IRQ_PG4 BFIN_PG_IRQ(4)
|
||||
#define IRQ_PG5 BFIN_PG_IRQ(5)
|
||||
#define IRQ_PG6 BFIN_PG_IRQ(6)
|
||||
#define IRQ_PG7 BFIN_PG_IRQ(7)
|
||||
#define IRQ_PG8 BFIN_PG_IRQ(8)
|
||||
#define IRQ_PG9 BFIN_PG_IRQ(9)
|
||||
#define IRQ_PG10 BFIN_PG_IRQ(10)
|
||||
#define IRQ_PG11 BFIN_PG_IRQ(11)
|
||||
#define IRQ_PG12 BFIN_PG_IRQ(12)
|
||||
#define IRQ_PG13 BFIN_PG_IRQ(13)
|
||||
#define IRQ_PG14 BFIN_PG_IRQ(14)
|
||||
#define IRQ_PG15 BFIN_PG_IRQ(15)
|
||||
|
||||
#define BFIN_PH_IRQ(x) ((x) + IRQ_PG15 + 1)
|
||||
#define IRQ_PH0 BFIN_PH_IRQ(0)
|
||||
#define IRQ_PH1 BFIN_PH_IRQ(1)
|
||||
#define IRQ_PH2 BFIN_PH_IRQ(2)
|
||||
#define IRQ_PH3 BFIN_PH_IRQ(3)
|
||||
#define IRQ_PH4 BFIN_PH_IRQ(4)
|
||||
#define IRQ_PH5 BFIN_PH_IRQ(5)
|
||||
#define IRQ_PH6 BFIN_PH_IRQ(6)
|
||||
#define IRQ_PH7 BFIN_PH_IRQ(7)
|
||||
#define IRQ_PH8 BFIN_PH_IRQ(8)
|
||||
#define IRQ_PH9 BFIN_PH_IRQ(9)
|
||||
#define IRQ_PH10 BFIN_PH_IRQ(10)
|
||||
#define IRQ_PH11 BFIN_PH_IRQ(11)
|
||||
#define IRQ_PH12 BFIN_PH_IRQ(12)
|
||||
#define IRQ_PH13 BFIN_PH_IRQ(13)
|
||||
#define IRQ_PH14 BFIN_PH_IRQ(14) /* N/A */
|
||||
#define IRQ_PH15 BFIN_PH_IRQ(15) /* N/A */
|
||||
#define BFIN_PH_IRQ(x) ((x) + IRQ_PG15 + 1)
|
||||
#define IRQ_PH0 BFIN_PH_IRQ(0)
|
||||
#define IRQ_PH1 BFIN_PH_IRQ(1)
|
||||
#define IRQ_PH2 BFIN_PH_IRQ(2)
|
||||
#define IRQ_PH3 BFIN_PH_IRQ(3)
|
||||
#define IRQ_PH4 BFIN_PH_IRQ(4)
|
||||
#define IRQ_PH5 BFIN_PH_IRQ(5)
|
||||
#define IRQ_PH6 BFIN_PH_IRQ(6)
|
||||
#define IRQ_PH7 BFIN_PH_IRQ(7)
|
||||
#define IRQ_PH8 BFIN_PH_IRQ(8)
|
||||
#define IRQ_PH9 BFIN_PH_IRQ(9)
|
||||
#define IRQ_PH10 BFIN_PH_IRQ(10)
|
||||
#define IRQ_PH11 BFIN_PH_IRQ(11)
|
||||
#define IRQ_PH12 BFIN_PH_IRQ(12)
|
||||
#define IRQ_PH13 BFIN_PH_IRQ(13)
|
||||
#define IRQ_PH14 BFIN_PH_IRQ(14) /* N/A */
|
||||
#define IRQ_PH15 BFIN_PH_IRQ(15) /* N/A */
|
||||
|
||||
#define BFIN_PI_IRQ(x) ((x) + IRQ_PH15 + 1)
|
||||
#define IRQ_PI0 BFIN_PI_IRQ(0)
|
||||
#define IRQ_PI1 BFIN_PI_IRQ(1)
|
||||
#define IRQ_PI2 BFIN_PI_IRQ(2)
|
||||
#define IRQ_PI3 BFIN_PI_IRQ(3)
|
||||
#define IRQ_PI4 BFIN_PI_IRQ(4)
|
||||
#define IRQ_PI5 BFIN_PI_IRQ(5)
|
||||
#define IRQ_PI6 BFIN_PI_IRQ(6)
|
||||
#define IRQ_PI7 BFIN_PI_IRQ(7)
|
||||
#define IRQ_PI8 BFIN_PI_IRQ(8)
|
||||
#define IRQ_PI9 BFIN_PI_IRQ(9)
|
||||
#define IRQ_PI10 BFIN_PI_IRQ(10)
|
||||
#define IRQ_PI11 BFIN_PI_IRQ(11)
|
||||
#define IRQ_PI12 BFIN_PI_IRQ(12)
|
||||
#define IRQ_PI13 BFIN_PI_IRQ(13)
|
||||
#define IRQ_PI14 BFIN_PI_IRQ(14)
|
||||
#define IRQ_PI15 BFIN_PI_IRQ(15)
|
||||
#define BFIN_PI_IRQ(x) ((x) + IRQ_PH15 + 1)
|
||||
#define IRQ_PI0 BFIN_PI_IRQ(0)
|
||||
#define IRQ_PI1 BFIN_PI_IRQ(1)
|
||||
#define IRQ_PI2 BFIN_PI_IRQ(2)
|
||||
#define IRQ_PI3 BFIN_PI_IRQ(3)
|
||||
#define IRQ_PI4 BFIN_PI_IRQ(4)
|
||||
#define IRQ_PI5 BFIN_PI_IRQ(5)
|
||||
#define IRQ_PI6 BFIN_PI_IRQ(6)
|
||||
#define IRQ_PI7 BFIN_PI_IRQ(7)
|
||||
#define IRQ_PI8 BFIN_PI_IRQ(8)
|
||||
#define IRQ_PI9 BFIN_PI_IRQ(9)
|
||||
#define IRQ_PI10 BFIN_PI_IRQ(10)
|
||||
#define IRQ_PI11 BFIN_PI_IRQ(11)
|
||||
#define IRQ_PI12 BFIN_PI_IRQ(12)
|
||||
#define IRQ_PI13 BFIN_PI_IRQ(13)
|
||||
#define IRQ_PI14 BFIN_PI_IRQ(14)
|
||||
#define IRQ_PI15 BFIN_PI_IRQ(15)
|
||||
|
||||
#define BFIN_PJ_IRQ(x) ((x) + IRQ_PI15 + 1)
|
||||
#define IRQ_PJ0 BFIN_PJ_IRQ(0)
|
||||
#define IRQ_PJ1 BFIN_PJ_IRQ(1)
|
||||
#define IRQ_PJ2 BFIN_PJ_IRQ(2)
|
||||
#define IRQ_PJ3 BFIN_PJ_IRQ(3)
|
||||
#define IRQ_PJ4 BFIN_PJ_IRQ(4)
|
||||
#define IRQ_PJ5 BFIN_PJ_IRQ(5)
|
||||
#define IRQ_PJ6 BFIN_PJ_IRQ(6)
|
||||
#define IRQ_PJ7 BFIN_PJ_IRQ(7)
|
||||
#define IRQ_PJ8 BFIN_PJ_IRQ(8)
|
||||
#define IRQ_PJ9 BFIN_PJ_IRQ(9)
|
||||
#define IRQ_PJ10 BFIN_PJ_IRQ(10)
|
||||
#define IRQ_PJ11 BFIN_PJ_IRQ(11)
|
||||
#define IRQ_PJ12 BFIN_PJ_IRQ(12)
|
||||
#define IRQ_PJ13 BFIN_PJ_IRQ(13)
|
||||
#define IRQ_PJ14 BFIN_PJ_IRQ(14) /* N/A */
|
||||
#define IRQ_PJ15 BFIN_PJ_IRQ(15) /* N/A */
|
||||
#define BFIN_PJ_IRQ(x) ((x) + IRQ_PI15 + 1)
|
||||
#define IRQ_PJ0 BFIN_PJ_IRQ(0)
|
||||
#define IRQ_PJ1 BFIN_PJ_IRQ(1)
|
||||
#define IRQ_PJ2 BFIN_PJ_IRQ(2)
|
||||
#define IRQ_PJ3 BFIN_PJ_IRQ(3)
|
||||
#define IRQ_PJ4 BFIN_PJ_IRQ(4)
|
||||
#define IRQ_PJ5 BFIN_PJ_IRQ(5)
|
||||
#define IRQ_PJ6 BFIN_PJ_IRQ(6)
|
||||
#define IRQ_PJ7 BFIN_PJ_IRQ(7)
|
||||
#define IRQ_PJ8 BFIN_PJ_IRQ(8)
|
||||
#define IRQ_PJ9 BFIN_PJ_IRQ(9)
|
||||
#define IRQ_PJ10 BFIN_PJ_IRQ(10)
|
||||
#define IRQ_PJ11 BFIN_PJ_IRQ(11)
|
||||
#define IRQ_PJ12 BFIN_PJ_IRQ(12)
|
||||
#define IRQ_PJ13 BFIN_PJ_IRQ(13)
|
||||
#define IRQ_PJ14 BFIN_PJ_IRQ(14) /* N/A */
|
||||
#define IRQ_PJ15 BFIN_PJ_IRQ(15) /* N/A */
|
||||
|
||||
#define GPIO_IRQ_BASE IRQ_PA0
|
||||
|
||||
#ifdef CONFIG_IRQCHIP_DEMUX_GPIO
|
||||
#define NR_IRQS (IRQ_PJ15+1)
|
||||
|
|
@ -343,6 +344,34 @@ Events (highest priority) EMU 0
|
|||
#define NR_IRQS (SYS_IRQS+1)
|
||||
#endif
|
||||
|
||||
/* For compatibility reasons with existing code */
|
||||
|
||||
#define IRQ_DMAC0_ERR IRQ_DMAC0_ERROR
|
||||
#define IRQ_EPPI0_ERR IRQ_EPPI0_ERROR
|
||||
#define IRQ_SPORT0_ERR IRQ_SPORT0_ERROR
|
||||
#define IRQ_SPORT1_ERR IRQ_SPORT1_ERROR
|
||||
#define IRQ_SPI0_ERR IRQ_SPI0_ERROR
|
||||
#define IRQ_UART0_ERR IRQ_UART0_ERROR
|
||||
#define IRQ_DMAC1_ERR IRQ_DMAC1_ERROR
|
||||
#define IRQ_SPORT2_ERR IRQ_SPORT2_ERROR
|
||||
#define IRQ_SPORT3_ERR IRQ_SPORT3_ERROR
|
||||
#define IRQ_SPI1_ERR IRQ_SPI1_ERROR
|
||||
#define IRQ_SPI2_ERR IRQ_SPI2_ERROR
|
||||
#define IRQ_UART1_ERR IRQ_UART1_ERROR
|
||||
#define IRQ_UART2_ERR IRQ_UART2_ERROR
|
||||
#define IRQ_CAN0_ERR IRQ_CAN0_ERROR
|
||||
#define IRQ_MXVR_ERR IRQ_MXVR_ERROR
|
||||
#define IRQ_EPP1_ERR IRQ_EPP1_ERROR
|
||||
#define IRQ_EPP2_ERR IRQ_EPP2_ERROR
|
||||
#define IRQ_UART3_ERR IRQ_UART3_ERROR
|
||||
#define IRQ_HOST_ERR IRQ_HOST_ERROR
|
||||
#define IRQ_PIXC_ERR IRQ_PIXC_ERROR
|
||||
#define IRQ_NFC_ERR IRQ_NFC_ERROR
|
||||
#define IRQ_ATAPI_ERR IRQ_ATAPI_ERROR
|
||||
#define IRQ_CAN1_ERR IRQ_CAN1_ERROR
|
||||
#define IRQ_HS_DMA_ERR IRQ_HS_DMA_ERROR
|
||||
|
||||
|
||||
#define IVG7 7
|
||||
#define IVG8 8
|
||||
#define IVG9 9
|
||||
|
|
|
|||
|
|
@ -51,10 +51,10 @@
|
|||
/* Level 1 Memory */
|
||||
|
||||
/* Memory Map for ADSP-BF548 processors */
|
||||
#ifdef CONFIG_BLKFIN_ICACHE
|
||||
#define BLKFIN_ICACHESIZE (16*1024)
|
||||
#ifdef CONFIG_BFIN_ICACHE
|
||||
#define BFIN_ICACHESIZE (16*1024)
|
||||
#else
|
||||
#define BLKFIN_ICACHESIZE (0*1024)
|
||||
#define BFIN_ICACHESIZE (0*1024)
|
||||
#endif
|
||||
|
||||
#define L1_CODE_START 0xFFA00000
|
||||
|
|
@ -63,29 +63,29 @@
|
|||
|
||||
#define L1_CODE_LENGTH 0xC000
|
||||
|
||||
#ifdef CONFIG_BLKFIN_DCACHE
|
||||
#ifdef CONFIG_BFIN_DCACHE
|
||||
|
||||
#ifdef CONFIG_BLKFIN_DCACHE_BANKA
|
||||
#ifdef CONFIG_BFIN_DCACHE_BANKA
|
||||
#define DMEM_CNTR (ACACHE_BSRAM | ENDCPLB | PORT_PREF0)
|
||||
#define L1_DATA_A_LENGTH (0x8000 - 0x4000)
|
||||
#define L1_DATA_B_LENGTH 0x8000
|
||||
#define BLKFIN_DCACHESIZE (16*1024)
|
||||
#define BLKFIN_DSUPBANKS 1
|
||||
#define BFIN_DCACHESIZE (16*1024)
|
||||
#define BFIN_DSUPBANKS 1
|
||||
#else
|
||||
#define DMEM_CNTR (ACACHE_BCACHE | ENDCPLB | PORT_PREF0)
|
||||
#define L1_DATA_A_LENGTH (0x8000 - 0x4000)
|
||||
#define L1_DATA_B_LENGTH (0x8000 - 0x4000)
|
||||
#define BLKFIN_DCACHESIZE (32*1024)
|
||||
#define BLKFIN_DSUPBANKS 2
|
||||
#define BFIN_DCACHESIZE (32*1024)
|
||||
#define BFIN_DSUPBANKS 2
|
||||
#endif
|
||||
|
||||
#else
|
||||
#define DMEM_CNTR (ASRAM_BSRAM | ENDCPLB | PORT_PREF0)
|
||||
#define L1_DATA_A_LENGTH 0x8000
|
||||
#define L1_DATA_B_LENGTH 0x8000
|
||||
#define BLKFIN_DCACHESIZE (0*1024)
|
||||
#define BLKFIN_DSUPBANKS 0
|
||||
#endif /*CONFIG_BLKFIN_DCACHE*/
|
||||
#define BFIN_DCACHESIZE (0*1024)
|
||||
#define BFIN_DSUPBANKS 0
|
||||
#endif /*CONFIG_BFIN_DCACHE*/
|
||||
|
||||
/* Scratch Pad Memory */
|
||||
|
||||
|
|
|
|||
|
|
@ -1,184 +1,256 @@
|
|||
|
||||
/*
|
||||
* File: include/asm-blackfin/mach-bf561/anomaly.h
|
||||
* Based on:
|
||||
* Author:
|
||||
* File: include/asm-blackfin/mach-bf561/anomaly.h
|
||||
* Bugs: Enter bugs at http://blackfin.uclinux.org/
|
||||
*
|
||||
* Created:
|
||||
* Description:
|
||||
*
|
||||
* Rev:
|
||||
*
|
||||
* Modified:
|
||||
*
|
||||
* Bugs: Enter bugs at http://blackfin.uclinux.org/
|
||||
*
|
||||
* 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, 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; see the file COPYING.
|
||||
* If not, write to the Free Software Foundation,
|
||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
* Copyright (C) 2004-2007 Analog Devices Inc.
|
||||
* Licensed under the GPL-2 or later.
|
||||
*/
|
||||
|
||||
/* This file shoule be up to date with:
|
||||
* - Revision L, 10Aug2006; ADSP-BF561 Silicon Anomaly List
|
||||
* - Revision N, March 28, 2007; ADSP-BF561 Silicon Anomaly List
|
||||
*/
|
||||
|
||||
#ifndef _MACH_ANOMALY_H_
|
||||
#define _MACH_ANOMALY_H_
|
||||
|
||||
/* We do not support 0.1 or 0.4 silicon - sorry */
|
||||
#if (defined(CONFIG_BF_REV_0_1) || defined(CONFIG_BF_REV_0_2) || defined(CONFIG_BF_REV_0_4))
|
||||
#error Kernel will not work on BF561 Version 0.1, 0.2, or 0.4
|
||||
/* We do not support 0.1, 0.2, or 0.4 silicon - sorry */
|
||||
#if __SILICON_REVISION__ < 3 || __SILICON_REVISION__ == 4
|
||||
# error Kernel will not work on BF561 silicon version 0.0, 0.1, 0.2, or 0.4
|
||||
#endif
|
||||
|
||||
/* Issues that are common to 0.5 and 0.3 silicon */
|
||||
#if (defined(CONFIG_BF_REV_0_5) || defined(CONFIG_BF_REV_0_3))
|
||||
#define ANOMALY_05000074 /* A multi issue instruction with dsp32shiftimm in
|
||||
slot1 and store of a P register in slot 2 is not
|
||||
supported */
|
||||
#define ANOMALY_05000099 /* UART Line Status Register (UART_LSR) bits are not
|
||||
updated at the same time. */
|
||||
#define ANOMALY_05000120 /* Testset instructions restricted to 32-bit aligned
|
||||
memory locations */
|
||||
#define ANOMALY_05000122 /* Rx.H cannot be used to access 16-bit System MMR
|
||||
registers */
|
||||
#define ANOMALY_05000127 /* Signbits instruction not functional under certain
|
||||
conditions */
|
||||
#define ANOMALY_05000149 /* IMDMA S1/D1 channel may stall */
|
||||
#define ANOMALY_05000166 /* PPI Data Lengths Between 8 and 16 do not zero out
|
||||
upper bits */
|
||||
#define ANOMALY_05000167 /* Turning Serial Ports on With External Frame Syncs */
|
||||
#define ANOMALY_05000180 /* PPI_DELAY not functional in PPI modes with 0 frame
|
||||
syncs */
|
||||
#define ANOMALY_05000182 /* IMDMA does not operate to full speed for 600MHz
|
||||
and higher devices */
|
||||
#define ANOMALY_05000187 /* IMDMA Corrupted Data after a Halt */
|
||||
#define ANOMALY_05000190 /* PPI not functional at core voltage < 1Volt */
|
||||
#define ANOMALY_05000208 /* VSTAT status bit in PLL_STAT register is not
|
||||
functional */
|
||||
#define ANOMALY_05000245 /* Spurious Hardware Error from an access in the
|
||||
shadow of a conditional branch */
|
||||
#define ANOMALY_05000257 /* Interrupt/Exception during short hardware loop
|
||||
may cause bad instruction fetches */
|
||||
#define ANOMALY_05000265 /* Sensitivity to noise with slow input edge rates on
|
||||
external SPORT TX and RX clocks */
|
||||
#define ANOMALY_05000267 /* IMDMA may corrupt data under certain conditions */
|
||||
#define ANOMALY_05000269 /* High I/O activity causes output voltage of internal
|
||||
voltage regulator (VDDint) to increase */
|
||||
#define ANOMALY_05000270 /* High I/O activity causes output voltage of internal
|
||||
voltage regulator (VDDint) to decrease */
|
||||
#define ANOMALY_05000272 /* Certain data cache write through modes fail for
|
||||
VDDint <=0.9V */
|
||||
#define ANOMALY_05000274 /* Data cache write back to external synchronous memory
|
||||
may be lost */
|
||||
#define ANOMALY_05000275 /* PPI Timing and sampling informaton updates */
|
||||
#define ANOMALY_05000312 /* Errors when SSYNC, CSYNC, or loads to LT, LB and LC
|
||||
registers are interrupted */
|
||||
/* Multi-Issue Instruction with dsp32shiftimm in slot1 and P-reg Store in slot 2 Not Supported */
|
||||
#define ANOMALY_05000074 (1)
|
||||
/* UART Line Status Register (UART_LSR) Bits Are Not Updated at the Same Time */
|
||||
#define ANOMALY_05000099 (__SILICON_REVISION__ < 5)
|
||||
/* Trace Buffers may contain errors in emulation mode and/or exception, NMI, reset handlers */
|
||||
#define ANOMALY_05000116 (__SILICON_REVISION__ < 3)
|
||||
/* Testset instructions restricted to 32-bit aligned memory locations */
|
||||
#define ANOMALY_05000120 (1)
|
||||
/* Rx.H Cannot Be Used to Access 16-bit System MMR Registers */
|
||||
#define ANOMALY_05000122 (1)
|
||||
/* Erroneous exception when enabling cache */
|
||||
#define ANOMALY_05000125 (__SILICON_REVISION__ < 3)
|
||||
/* Signbits instruction not functional under certain conditions */
|
||||
#define ANOMALY_05000127 (1)
|
||||
/* Two bits in the Watchpoint Status Register (WPSTAT) are swapped */
|
||||
#define ANOMALY_05000134 (__SILICON_REVISION__ < 3)
|
||||
/* Enable wires from the Data Watchpoint Address Control Register (WPDACTL) are swapped */
|
||||
#define ANOMALY_05000135 (__SILICON_REVISION__ < 3)
|
||||
/* Stall in multi-unit DMA operations */
|
||||
#define ANOMALY_05000136 (__SILICON_REVISION__ < 3)
|
||||
/* Allowing the SPORT RX FIFO to fill will cause an overflow */
|
||||
#define ANOMALY_05000140 (__SILICON_REVISION__ < 3)
|
||||
/* Infinite Stall may occur with a particular sequence of consecutive dual dag events */
|
||||
#define ANOMALY_05000141 (__SILICON_REVISION__ < 3)
|
||||
/* Interrupts may be lost when a programmable input flag is configured to be edge sensitive */
|
||||
#define ANOMALY_05000142 (__SILICON_REVISION__ < 3)
|
||||
/* DMA and TESTSET conflict when both are accessing external memory */
|
||||
#define ANOMALY_05000144 (__SILICON_REVISION__ < 3)
|
||||
/* In PWM_OUT mode, you must enable the PPI block to generate a waveform from PPI_CLK */
|
||||
#define ANOMALY_05000145 (__SILICON_REVISION__ < 3)
|
||||
/* MDMA may lose the first few words of a descriptor chain */
|
||||
#define ANOMALY_05000146 (__SILICON_REVISION__ < 3)
|
||||
/* Source MDMA descriptor may stop with a DMA Error near beginning of descriptor fetch */
|
||||
#define ANOMALY_05000147 (__SILICON_REVISION__ < 3)
|
||||
/* IMDMA S1/D1 channel may stall */
|
||||
#define ANOMALY_05000149 (1)
|
||||
/* DMA engine may lose data due to incorrect handshaking */
|
||||
#define ANOMALY_05000150 (__SILICON_REVISION__ < 3)
|
||||
/* DMA stalls when all three controllers read data from the same source */
|
||||
#define ANOMALY_05000151 (__SILICON_REVISION__ < 3)
|
||||
/* Execution stall when executing in L2 and doing external accesses */
|
||||
#define ANOMALY_05000152 (__SILICON_REVISION__ < 3)
|
||||
/* Frame Delay in SPORT Multichannel Mode */
|
||||
#define ANOMALY_05000153 (__SILICON_REVISION__ < 3)
|
||||
/* SPORT TFS signal stays active in multichannel mode outside of valid channels */
|
||||
#define ANOMALY_05000154 (__SILICON_REVISION__ < 3)
|
||||
/* Timers in PWM-Out Mode with PPI GP Receive (Input) Mode with 0 Frame Syncs */
|
||||
#define ANOMALY_05000156 (__SILICON_REVISION__ < 4)
|
||||
/* Killed 32-bit MMR write leads to next system MMR access thinking it should be 32-bit */
|
||||
#define ANOMALY_05000157 (__SILICON_REVISION__ < 3)
|
||||
/* DMA Lock-up at CCLK to SCLK ratios of 4:1, 2:1, or 1:1 */
|
||||
#define ANOMALY_05000159 (__SILICON_REVISION__ < 3)
|
||||
/* A read from external memory may return a wrong value with data cache enabled */
|
||||
#define ANOMALY_05000160 (__SILICON_REVISION__ < 3)
|
||||
/* Data Cache Fill data can be corrupted after/during Instruction DMA if certain core stalls exist */
|
||||
#define ANOMALY_05000161 (__SILICON_REVISION__ < 3)
|
||||
/* DMEM_CONTROL<12> is not set on Reset */
|
||||
#define ANOMALY_05000162 (__SILICON_REVISION__ < 3)
|
||||
/* SPORT transmit data is not gated by external frame sync in certain conditions */
|
||||
#define ANOMALY_05000163 (__SILICON_REVISION__ < 3)
|
||||
/* PPI Data Lengths Between 8 and 16 Do Not Zero Out Upper Bits */
|
||||
#define ANOMALY_05000166 (1)
|
||||
/* Turning Serial Ports on with External Frame Syncs */
|
||||
#define ANOMALY_05000167 (1)
|
||||
/* SDRAM auto-refresh and subsequent Power Ups */
|
||||
#define ANOMALY_05000168 (__SILICON_REVISION__ < 5)
|
||||
/* DATA CPLB page miss can result in lost write-through cache data writes */
|
||||
#define ANOMALY_05000169 (__SILICON_REVISION__ < 5)
|
||||
/* Boot-ROM code modifies SICA_IWRx wakeup registers */
|
||||
#define ANOMALY_05000171 (__SILICON_REVISION__ < 5)
|
||||
/* DSPID register values incorrect */
|
||||
#define ANOMALY_05000172 (__SILICON_REVISION__ < 3)
|
||||
/* DMA vs Core accesses to external memory */
|
||||
#define ANOMALY_05000173 (__SILICON_REVISION__ < 3)
|
||||
/* Cache Fill Buffer Data lost */
|
||||
#define ANOMALY_05000174 (__SILICON_REVISION__ < 5)
|
||||
/* Overlapping Sequencer and Memory Stalls */
|
||||
#define ANOMALY_05000175 (__SILICON_REVISION__ < 5)
|
||||
/* Multiplication of (-1) by (-1) followed by an accumulator saturation */
|
||||
#define ANOMALY_05000176 (__SILICON_REVISION__ < 5)
|
||||
/* PPI_COUNT Cannot Be Programmed to 0 in General Purpose TX or RX Modes */
|
||||
#define ANOMALY_05000179 (__SILICON_REVISION__ < 5)
|
||||
/* PPI_DELAY Not Functional in PPI Modes with 0 Frame Syncs */
|
||||
#define ANOMALY_05000180 (1)
|
||||
/* Disabling the PPI resets the PPI configuration registers */
|
||||
#define ANOMALY_05000181 (__SILICON_REVISION__ < 5)
|
||||
/* IMDMA does not operate to full speed for 600MHz and higher devices */
|
||||
#define ANOMALY_05000182 (1)
|
||||
/* Timer Pin limitations for PPI TX Modes with External Frame Syncs */
|
||||
#define ANOMALY_05000184 (__SILICON_REVISION__ < 5)
|
||||
/* PPI TX Mode with 2 External Frame Syncs */
|
||||
#define ANOMALY_05000185 (__SILICON_REVISION__ < 5)
|
||||
/* PPI packing with Data Length greater than 8 bits (not a meaningful mode) */
|
||||
#define ANOMALY_05000186 (__SILICON_REVISION__ < 5)
|
||||
/* IMDMA Corrupted Data after a Halt */
|
||||
#define ANOMALY_05000187 (1)
|
||||
/* IMDMA Restrictions on Descriptor and Buffer Placement in Memory */
|
||||
#define ANOMALY_05000188 (__SILICON_REVISION__ < 5)
|
||||
/* False Protection Exceptions */
|
||||
#define ANOMALY_05000189 (__SILICON_REVISION__ < 5)
|
||||
/* PPI not functional at core voltage < 1Volt */
|
||||
#define ANOMALY_05000190 (1)
|
||||
/* PPI does not invert the Driving PPICLK edge in Transmit Modes */
|
||||
#define ANOMALY_05000191 (__SILICON_REVISION__ < 3)
|
||||
/* False I/O Pin Interrupts on Edge-Sensitive Inputs When Polarity Setting Is Changed */
|
||||
#define ANOMALY_05000193 (__SILICON_REVISION__ < 5)
|
||||
/* Restarting SPORT in Specific Modes May Cause Data Corruption */
|
||||
#define ANOMALY_05000194 (__SILICON_REVISION__ < 5)
|
||||
/* Failing MMR Accesses When Stalled by Preceding Memory Read */
|
||||
#define ANOMALY_05000198 (__SILICON_REVISION__ < 5)
|
||||
/* Current DMA Address Shows Wrong Value During Carry Fix */
|
||||
#define ANOMALY_05000199 (__SILICON_REVISION__ < 5)
|
||||
/* SPORT TFS and DT Are Incorrectly Driven During Inactive Channels in Certain Conditions */
|
||||
#define ANOMALY_05000200 (__SILICON_REVISION__ < 5)
|
||||
/* Possible Infinite Stall with Specific Dual-DAG Situation */
|
||||
#define ANOMALY_05000202 (__SILICON_REVISION__ < 5)
|
||||
/* Incorrect data read with write-through cache and allocate cache lines on reads only mode */
|
||||
#define ANOMALY_05000204 (__SILICON_REVISION__ < 5)
|
||||
/* Specific sequence that can cause DMA error or DMA stopping */
|
||||
#define ANOMALY_05000205 (__SILICON_REVISION__ < 5)
|
||||
/* Recovery from "Brown-Out" Condition */
|
||||
#define ANOMALY_05000207 (__SILICON_REVISION__ < 5)
|
||||
/* VSTAT Status Bit in PLL_STAT Register Is Not Functional */
|
||||
#define ANOMALY_05000208 (1)
|
||||
/* Speed Path in Computational Unit Affects Certain Instructions */
|
||||
#define ANOMALY_05000209 (__SILICON_REVISION__ < 5)
|
||||
/* UART TX Interrupt Masked Erroneously */
|
||||
#define ANOMALY_05000215 (__SILICON_REVISION__ < 5)
|
||||
/* NMI Event at Boot Time Results in Unpredictable State */
|
||||
#define ANOMALY_05000219 (__SILICON_REVISION__ < 5)
|
||||
/* Data Corruption with Cached External Memory and Non-Cached On-Chip L2 Memory */
|
||||
#define ANOMALY_05000220 (__SILICON_REVISION__ < 5)
|
||||
/* Incorrect Pulse-Width of UART Start Bit */
|
||||
#define ANOMALY_05000225 (__SILICON_REVISION__ < 5)
|
||||
/* Scratchpad Memory Bank Reads May Return Incorrect Data */
|
||||
#define ANOMALY_05000227 (__SILICON_REVISION__ < 5)
|
||||
/* UART Receiver is Less Robust Against Baudrate Differences in Certain Conditions */
|
||||
#define ANOMALY_05000230 (__SILICON_REVISION__ < 5)
|
||||
/* UART STB Bit Incorrectly Affects Receiver Setting */
|
||||
#define ANOMALY_05000231 (__SILICON_REVISION__ < 5)
|
||||
/* SPORT data transmit lines are incorrectly driven in multichannel mode */
|
||||
#define ANOMALY_05000232 (__SILICON_REVISION__ < 5)
|
||||
/* DF Bit in PLL_CTL Register Does Not Respond to Hardware Reset */
|
||||
#define ANOMALY_05000242 (__SILICON_REVISION__ < 5)
|
||||
/* If I-Cache Is On, CSYNC/SSYNC/IDLE Around Change of Control Causes Failures */
|
||||
#define ANOMALY_05000244 (__SILICON_REVISION__ < 5)
|
||||
/* Spurious Hardware Error from an Access in the Shadow of a Conditional Branch */
|
||||
#define ANOMALY_05000245 (__SILICON_REVISION__ < 5)
|
||||
/* TESTSET operation forces stall on the other core */
|
||||
#define ANOMALY_05000248 (__SILICON_REVISION__ < 5)
|
||||
/* Incorrect Bit Shift of Data Word in Multichannel (TDM) Mode in Certain Conditions */
|
||||
#define ANOMALY_05000250 (__SILICON_REVISION__ > 2 && __SILICON_REVISION__ < 5)
|
||||
/* Exception Not Generated for MMR Accesses in Reserved Region */
|
||||
#define ANOMALY_05000251 (__SILICON_REVISION__ < 5)
|
||||
/* Maximum External Clock Speed for Timers */
|
||||
#define ANOMALY_05000253 (__SILICON_REVISION__ < 5)
|
||||
/* Incorrect Timer Pulse Width in Single-Shot PWM_OUT Mode with External Clock */
|
||||
#define ANOMALY_05000254 (__SILICON_REVISION__ > 3)
|
||||
/* Interrupt/Exception During Short Hardware Loop May Cause Bad Instruction Fetches */
|
||||
#define ANOMALY_05000257 (__SILICON_REVISION__ < 5)
|
||||
/* Instruction Cache Is Corrupted When Bits 9 and 12 of the ICPLB Data Registers Differ */
|
||||
#define ANOMALY_05000258 (__SILICON_REVISION__ < 5)
|
||||
/* ICPLB_STATUS MMR Register May Be Corrupted */
|
||||
#define ANOMALY_05000260 (__SILICON_REVISION__ < 5)
|
||||
/* DCPLB_FAULT_ADDR MMR Register May Be Corrupted */
|
||||
#define ANOMALY_05000261 (__SILICON_REVISION__ < 5)
|
||||
/* Stores To Data Cache May Be Lost */
|
||||
#define ANOMALY_05000262 (__SILICON_REVISION__ < 5)
|
||||
/* Hardware Loop Corrupted When Taking an ICPLB Exception */
|
||||
#define ANOMALY_05000263 (__SILICON_REVISION__ < 5)
|
||||
/* CSYNC/SSYNC/IDLE Causes Infinite Stall in Penultimate Instruction in Hardware Loop */
|
||||
#define ANOMALY_05000264 (__SILICON_REVISION__ < 5)
|
||||
/* Sensitivity To Noise with Slow Input Edge Rates on External SPORT TX and RX Clocks */
|
||||
#define ANOMALY_05000265 (__SILICON_REVISION__ < 5)
|
||||
/* IMDMA destination IRQ status must be read prior to using IMDMA */
|
||||
#define ANOMALY_05000266 (__SILICON_REVISION__ > 3)
|
||||
/* IMDMA may corrupt data under certain conditions */
|
||||
#define ANOMALY_05000267 (1)
|
||||
/* High I/O Activity Causes Output Voltage of Internal Voltage Regulator (Vddint) to Increase */
|
||||
#define ANOMALY_05000269 (1)
|
||||
/* High I/O Activity Causes Output Voltage of Internal Voltage Regulator (Vddint) to Decrease */
|
||||
#define ANOMALY_05000270 (1)
|
||||
/* Certain Data Cache Writethrough Modes Fail for Vddint <= 0.9V */
|
||||
#define ANOMALY_05000272 (1)
|
||||
/* Data cache write back to external synchronous memory may be lost */
|
||||
#define ANOMALY_05000274 (1)
|
||||
/* PPI Timing and Sampling Information Updates */
|
||||
#define ANOMALY_05000275 (__SILICON_REVISION__ > 2)
|
||||
/* Timing Requirements Change for External Frame Sync PPI Modes with Non-Zero PPI_DELAY */
|
||||
#define ANOMALY_05000276 (__SILICON_REVISION__ < 5)
|
||||
/* Disabling Peripherals with DMA Running May Cause DMA System Instability */
|
||||
#define ANOMALY_05000278 (__SILICON_REVISION__ < 5)
|
||||
/* False Hardware Error Exception When ISR Context Is Not Restored */
|
||||
#define ANOMALY_05000281 (__SILICON_REVISION__ < 5)
|
||||
/* System MMR Write Is Stalled Indefinitely When Killed in a Particular Stage */
|
||||
#define ANOMALY_05000283 (1)
|
||||
/* A read will receive incorrect data under certain conditions */
|
||||
#define ANOMALY_05000287 (__SILICON_REVISION__ < 5)
|
||||
/* SPORTs May Receive Bad Data If FIFOs Fill Up */
|
||||
#define ANOMALY_05000288 (__SILICON_REVISION__ < 5)
|
||||
/* Memory-To-Memory DMA Source/Destination Descriptors Must Be in Same Memory Space */
|
||||
#define ANOMALY_05000301 (1)
|
||||
/* SSYNCs After Writes To DMA MMR Registers May Not Be Handled Correctly */
|
||||
#define ANOMALY_05000302 (1)
|
||||
/* New Feature: Additional Hysteresis on SPORT Input Pins (Not Available On Older Silicon) */
|
||||
#define ANOMALY_05000305 (__SILICON_REVISION__ < 5)
|
||||
/* SCKELOW Bit Does Not Maintain State Through Hibernate */
|
||||
#define ANOMALY_05000307 (__SILICON_REVISION__ < 5)
|
||||
/* False Hardware Errors Caused by Fetches at the Boundary of Reserved Memory */
|
||||
#define ANOMALY_05000310 (1)
|
||||
/* Errors When SSYNC, CSYNC, or Loads to LT, LB and LC Registers Are Interrupted */
|
||||
#define ANOMALY_05000312 (1)
|
||||
/* PPI Is Level-Sensitive on First Transfer */
|
||||
#define ANOMALY_05000313 (1)
|
||||
/* Killed System MMR Write Completes Erroneously On Next System MMR Access */
|
||||
#define ANOMALY_05000315 (1)
|
||||
/* PF2 Output Remains Asserted After SPI Master Boot */
|
||||
#define ANOMALY_05000320 (__SILICON_REVISION__ > 3)
|
||||
/* Erroneous GPIO Flag Pin Operations Under Specific Sequences */
|
||||
#define ANOMALY_05000323 (1)
|
||||
/* SPORT Secondary Receive Channel Not Functional When Word Length Exceeds 16 Bits */
|
||||
#define ANOMALY_05000326 (__SILICON_REVISION__ > 3)
|
||||
/* New Feature: 24-Bit SPI Boot Mode Support (Not Available On Older Silicon) */
|
||||
#define ANOMALY_05000331 (__SILICON_REVISION__ < 5)
|
||||
/* New Feature: Slave SPI Boot Mode Supported (Not Available On Older Silicon) */
|
||||
#define ANOMALY_05000332 (__SILICON_REVISION__ < 5)
|
||||
/* Flag Data Register Writes One SCLK Cycle After Edge Is Detected May Clear Interrupt Status */
|
||||
#define ANOMALY_05000333 (__SILICON_REVISION__ < 5)
|
||||
|
||||
#endif /* (defined(CONFIG_BF_REV_0_5) || defined(CONFIG_BF_REV_0_3)) */
|
||||
/* Anomalies that don't exist on this proc */
|
||||
#define ANOMALY_05000158 (0)
|
||||
#define ANOMALY_05000183 (0)
|
||||
#define ANOMALY_05000273 (0)
|
||||
#define ANOMALY_05000311 (0)
|
||||
|
||||
#if (defined(CONFIG_BF_REV_0_5))
|
||||
#define ANOMALY_05000254 /* Incorrect Timer Pulse Width in Single-Shot PWM_OUT
|
||||
mode with external clock */
|
||||
#define ANOMALY_05000266 /* IMDMA destination IRQ status must be read prior to
|
||||
using IMDMA */
|
||||
#endif
|
||||
|
||||
#if (defined(CONFIG_BF_REV_0_3))
|
||||
#define ANOMALY_05000156 /* Timers in PWM-Out Mode with PPI GP Receive (Input)
|
||||
Mode with 0 Frame Syncs */
|
||||
#define ANOMALY_05000168 /* SDRAM auto-refresh and subsequent Power Ups */
|
||||
#define ANOMALY_05000169 /* DATA CPLB page miss can result in lost write-through
|
||||
cache data writes */
|
||||
#define ANOMALY_05000171 /* Boot-ROM code modifies SICA_IWRx wakeup registers */
|
||||
#define ANOMALY_05000174 /* Cache Fill Buffer Data lost */
|
||||
#define ANOMALY_05000175 /* Overlapping Sequencer and Memory Stalls */
|
||||
#define ANOMALY_05000176 /* Multiplication of (-1) by (-1) followed by an
|
||||
accumulator saturation */
|
||||
#define ANOMALY_05000179 /* PPI_COUNT cannot be programmed to 0 in General
|
||||
Purpose TX or RX modes */
|
||||
#define ANOMALY_05000181 /* Disabling the PPI resets the PPI configuration
|
||||
registers */
|
||||
#define ANOMALY_05000184 /* Timer Pin limitations for PPI TX Modes with
|
||||
External Frame Syncs */
|
||||
#define ANOMALY_05000185 /* PPI TX Mode with 2 External Frame Syncs */
|
||||
#define ANOMALY_05000186 /* PPI packing with Data Length greater than 8 bits
|
||||
(not a meaningful mode) */
|
||||
#define ANOMALY_05000188 /* IMDMA Restrictions on Descriptor and Buffer
|
||||
Placement in Memory */
|
||||
#define ANOMALY_05000189 /* False Protection Exception */
|
||||
#define ANOMALY_05000193 /* False Flag Pin Interrupts on Edge Sensitive Inputs
|
||||
when polarity setting is changed */
|
||||
#define ANOMALY_05000194 /* Restarting SPORT in specific modes may cause data
|
||||
corruption */
|
||||
#define ANOMALY_05000198 /* Failing MMR accesses when stalled by preceding
|
||||
memory read */
|
||||
#define ANOMALY_05000199 /* DMA current address shows wrong value during carry
|
||||
fix */
|
||||
#define ANOMALY_05000200 /* SPORT TFS and DT are incorrectly driven during
|
||||
inactive channels in certain conditions */
|
||||
#define ANOMALY_05000202 /* Possible infinite stall with specific dual-DAG
|
||||
situation */
|
||||
#define ANOMALY_05000204 /* Incorrect data read with write-through cache and
|
||||
allocate cache lines on reads only mode */
|
||||
#define ANOMALY_05000205 /* Specific sequence that can cause DMA error or DMA
|
||||
stopping */
|
||||
#define ANOMALY_05000207 /* Recovery from "brown-out" condition */
|
||||
#define ANOMALY_05000209 /* Speed-Path in computational unit affects certain
|
||||
instructions */
|
||||
#define ANOMALY_05000215 /* UART TX Interrupt masked erroneously */
|
||||
#define ANOMALY_05000219 /* NMI event at boot time results in unpredictable
|
||||
state */
|
||||
#define ANOMALY_05000220 /* Data Corruption with Cached External Memory and
|
||||
Non-Cached On-Chip L2 Memory */
|
||||
#define ANOMALY_05000225 /* Incorrect pulse-width of UART start-bit */
|
||||
#define ANOMALY_05000227 /* Scratchpad memory bank reads may return incorrect
|
||||
data */
|
||||
#define ANOMALY_05000230 /* UART Receiver is less robust against Baudrate
|
||||
Differences in certain Conditions */
|
||||
#define ANOMALY_05000231 /* UART STB bit incorrectly affects receiver setting */
|
||||
#define ANOMALY_05000232 /* SPORT data transmit lines are incorrectly driven in
|
||||
multichannel mode */
|
||||
#define ANOMALY_05000242 /* DF bit in PLL_CTL register does not respond to
|
||||
hardware reset */
|
||||
#define ANOMALY_05000244 /* If i-cache is on, CSYNC/SSYNC/IDLE around Change of
|
||||
Control causes failures */
|
||||
#define ANOMALY_05000248 /* TESTSET operation forces stall on the other core */
|
||||
#define ANOMALY_05000250 /* Incorrect Bit-Shift of Data Word in Multichannel
|
||||
(TDM) mode in certain conditions */
|
||||
#define ANOMALY_05000251 /* Exception not generated for MMR accesses in
|
||||
reserved region */
|
||||
#define ANOMALY_05000253 /* Maximum external clock speed for Timers */
|
||||
#define ANOMALY_05000258 /* Instruction Cache is corrupted when bits 9 and 12
|
||||
of the ICPLB Data registers differ */
|
||||
#define ANOMALY_05000260 /* ICPLB_STATUS MMR register may be corrupted */
|
||||
#define ANOMALY_05000261 /* DCPLB_FAULT_ADDR MMR register may be corrupted */
|
||||
#define ANOMALY_05000262 /* Stores to data cache may be lost */
|
||||
#define ANOMALY_05000263 /* Hardware loop corrupted when taking an ICPLB
|
||||
exception */
|
||||
#define ANOMALY_05000264 /* CSYNC/SSYNC/IDLE causes infinite stall in second
|
||||
to last instruction in hardware loop */
|
||||
#define ANOMALY_05000276 /* Timing requirements change for External Frame
|
||||
Sync PPI Modes with non-zero PPI_DELAY */
|
||||
#define ANOMALY_05000278 /* Disabling Peripherals with DMA running may cause
|
||||
DMA system instability */
|
||||
#define ANOMALY_05000281 /* False Hardware Error Exception when ISR context is
|
||||
not restored */
|
||||
#define ANOMALY_05000283 /* An MMR write is stalled indefinitely when killed
|
||||
in a particular stage */
|
||||
#define ANOMALY_05000287 /* A read will receive incorrect data under certain
|
||||
conditions */
|
||||
#define ANOMALY_05000288 /* SPORTs may receive bad data if FIFOs fill up */
|
||||
#endif
|
||||
|
||||
#endif /* _MACH_ANOMALY_H_ */
|
||||
|
|
|
|||
|
|
@ -73,13 +73,13 @@
|
|||
*/
|
||||
|
||||
|
||||
#define BLKFIN_ISUBBANKS 4
|
||||
#define BLKFIN_IWAYS 4
|
||||
#define BLKFIN_ILINES 32
|
||||
#define BFIN_ISUBBANKS 4
|
||||
#define BFIN_IWAYS 4
|
||||
#define BFIN_ILINES 32
|
||||
|
||||
#define BLKFIN_DSUBBANKS 4
|
||||
#define BLKFIN_DWAYS 2
|
||||
#define BLKFIN_DLINES 64
|
||||
#define BFIN_DSUBBANKS 4
|
||||
#define BFIN_DWAYS 2
|
||||
#define BFIN_DLINES 64
|
||||
|
||||
#define WAY0_L 0x1
|
||||
#define WAY1_L 0x2
|
||||
|
|
@ -230,93 +230,6 @@
|
|||
|
||||
#define AMGCTLVAL (V_AMBEN | V_AMCKEN | V_CDPRIO | V_B0PEN | V_B1PEN | V_B2PEN | V_B3PEN | 0x0002)
|
||||
|
||||
#define MAX_VC 600000000
|
||||
#define MIN_VC 50000000
|
||||
|
||||
/******************************* PLL Settings ********************************/
|
||||
#ifdef CONFIG_BFIN_KERNEL_CLOCK
|
||||
#if (CONFIG_VCO_MULT < 0)
|
||||
#error "VCO Multiplier is less than 0. Please select a different value"
|
||||
#endif
|
||||
|
||||
#if (CONFIG_VCO_MULT == 0)
|
||||
#error "VCO Multiplier should be greater than 0. Please select a different value"
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_CLKIN_HALF
|
||||
#define CONFIG_VCO_HZ (CONFIG_CLKIN_HZ * CONFIG_VCO_MULT)
|
||||
#else
|
||||
#define CONFIG_VCO_HZ ((CONFIG_CLKIN_HZ * CONFIG_VCO_MULT)/2)
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_PLL_BYPASS
|
||||
#define CONFIG_CCLK_HZ (CONFIG_VCO_HZ/CONFIG_CCLK_DIV)
|
||||
#define CONFIG_SCLK_HZ (CONFIG_VCO_HZ/CONFIG_SCLK_DIV)
|
||||
#else
|
||||
#define CONFIG_CCLK_HZ CONFIG_CLKIN_HZ
|
||||
#define CONFIG_SCLK_HZ CONFIG_CLKIN_HZ
|
||||
#endif
|
||||
|
||||
#if (CONFIG_SCLK_DIV < 1)
|
||||
#error "SCLK DIV cannot be less than 1 or more than 15. Please select a proper value"
|
||||
#endif
|
||||
|
||||
#if (CONFIG_SCLK_DIV > 15)
|
||||
#error "SCLK DIV cannot be less than 1 or more than 15. Please select a proper value"
|
||||
#endif
|
||||
|
||||
#if (CONFIG_CCLK_DIV != 1)
|
||||
#if (CONFIG_CCLK_DIV != 2)
|
||||
#if (CONFIG_CCLK_DIV != 4)
|
||||
#if (CONFIG_CCLK_DIV != 8)
|
||||
#error "CCLK DIV can be 1,2,4 or 8 only. Please select a proper value"
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if (CONFIG_VCO_HZ > MAX_VC)
|
||||
#error "VCO selected is more than maximum value. Please change the VCO multipler"
|
||||
#endif
|
||||
|
||||
#if (CONFIG_SCLK_HZ > 133000000)
|
||||
#error "Sclk value selected is more than maximum. Please select a proper value for SCLK multiplier"
|
||||
#endif
|
||||
|
||||
#if (CONFIG_SCLK_HZ < 27000000)
|
||||
#error "Sclk value selected is less than minimum. Please select a proper value for SCLK multiplier"
|
||||
#endif
|
||||
|
||||
#if (CONFIG_SCLK_HZ >= CONFIG_CCLK_HZ)
|
||||
#if (CONFIG_SCLK_HZ != CONFIG_CLKIN_HZ)
|
||||
#if (CONFIG_CCLK_HZ != CONFIG_CLKIN_HZ)
|
||||
#error "Please select sclk less than cclk"
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if (CONFIG_CCLK_DIV == 1)
|
||||
#define CONFIG_CCLK_ACT_DIV CCLK_DIV1
|
||||
#endif
|
||||
#if (CONFIG_CCLK_DIV == 2)
|
||||
#define CONFIG_CCLK_ACT_DIV CCLK_DIV2
|
||||
#endif
|
||||
#if (CONFIG_CCLK_DIV == 4)
|
||||
#define CONFIG_CCLK_ACT_DIV CCLK_DIV4
|
||||
#endif
|
||||
#if (CONFIG_CCLK_DIV == 8)
|
||||
#define CONFIG_CCLK_ACT_DIV CCLK_DIV8
|
||||
#endif
|
||||
#ifndef CONFIG_CCLK_ACT_DIV
|
||||
#define CONFIG_CCLK_ACT_DIV CONFIG_CCLK_DIV_not_defined_properly
|
||||
#endif
|
||||
|
||||
#if defined(ANOMALY_05000273) && (CONFIG_CCLK_DIV == 1)
|
||||
#error ANOMALY 05000273, please make sure CCLK is at least 2x SCLK
|
||||
#endif
|
||||
|
||||
#endif /* CONFIG_BFIN_KERNEL_CLOCK */
|
||||
|
||||
#ifdef CONFIG_BF561
|
||||
#define CPU "BF561"
|
||||
#define CPUID 0x027bb000
|
||||
|
|
@ -326,83 +239,4 @@
|
|||
#define CPUID 0x0
|
||||
#endif
|
||||
|
||||
#if (CONFIG_MEM_SIZE % 4)
|
||||
#error "SDRAM memory size must be a multiple of 4MB!"
|
||||
#endif
|
||||
#define SDRAM_IGENERIC (CPLB_L1_CHBL | CPLB_USER_RD | CPLB_VALID | CPLB_PORTPRIO)
|
||||
#define SDRAM_IKERNEL (SDRAM_IGENERIC | CPLB_LOCK)
|
||||
#define L1_IMEMORY ( CPLB_USER_RD | CPLB_VALID | CPLB_LOCK)
|
||||
#define SDRAM_INON_CHBL ( CPLB_USER_RD | CPLB_VALID)
|
||||
|
||||
/*Use the menuconfig cache policy here - CONFIG_BLKFIN_WT/CONFIG_BLKFIN_WB*/
|
||||
|
||||
#define ANOMALY_05000158_WORKAROUND 0x200
|
||||
#ifdef CONFIG_BLKFIN_WB /*Write Back Policy */
|
||||
#define SDRAM_DGENERIC (CPLB_L1_CHBL | CPLB_DIRTY \
|
||||
| CPLB_SUPV_WR | CPLB_USER_WR | CPLB_USER_RD | CPLB_VALID | ANOMALY_05000158_WORKAROUND)
|
||||
#else /*Write Through */
|
||||
#define SDRAM_DGENERIC (CPLB_L1_CHBL | CPLB_WT | CPLB_L1_AOW | CPLB_DIRTY \
|
||||
| CPLB_SUPV_WR | CPLB_USER_WR | CPLB_USER_RD | CPLB_VALID | ANOMALY_05000158_WORKAROUND)
|
||||
#endif
|
||||
|
||||
|
||||
#define L1_DMEMORY (CPLB_SUPV_WR | CPLB_USER_WR | CPLB_USER_RD | CPLB_VALID | ANOMALY_05000158_WORKAROUND | CPLB_LOCK | CPLB_DIRTY)
|
||||
#define SDRAM_DNON_CHBL (CPLB_SUPV_WR | CPLB_USER_WR | CPLB_USER_RD | CPLB_VALID | ANOMALY_05000158_WORKAROUND | CPLB_DIRTY)
|
||||
#define SDRAM_EBIU (CPLB_SUPV_WR | CPLB_USER_WR | CPLB_USER_RD | CPLB_VALID | ANOMALY_05000158_WORKAROUND | CPLB_DIRTY)
|
||||
#define SDRAM_OOPS (CPLB_VALID | ANOMALY_05000158_WORKAROUND | CPLB_LOCK | CPLB_DIRTY)
|
||||
|
||||
#define L2_MEMORY (CPLB_SUPV_WR | CPLB_USER_WR | CPLB_USER_RD | CPLB_VALID | ANOMALY_05000158_WORKAROUND | CPLB_DIRTY)
|
||||
|
||||
#define SIZE_1K 0x00000400 /* 1K */
|
||||
#define SIZE_4K 0x00001000 /* 4K */
|
||||
#define SIZE_1M 0x00100000 /* 1M */
|
||||
#define SIZE_4M 0x00400000 /* 4M */
|
||||
|
||||
#define MAX_CPLBS (16 * 2)
|
||||
|
||||
/*
|
||||
* Number of required data CPLB switchtable entries
|
||||
* MEMSIZE / 4 (we mostly install 4M page size CPLBs
|
||||
* approx 16 for smaller 1MB page size CPLBs for allignment purposes
|
||||
* 1 for L1 Data Memory
|
||||
* 1 for L2 Data Memory
|
||||
* 1 for CONFIG_DEBUG_HUNT_FOR_ZERO
|
||||
* 64 for ASYNC Memory
|
||||
*/
|
||||
|
||||
|
||||
#define MAX_SWITCH_D_CPLBS (((CONFIG_MEM_SIZE / 4) + 16 + 1 + 1 + 1 + 64) * 2)
|
||||
|
||||
/*
|
||||
* Number of required instruction CPLB switchtable entries
|
||||
* MEMSIZE / 4 (we mostly install 4M page size CPLBs
|
||||
* approx 12 for smaller 1MB page size CPLBs for allignment purposes
|
||||
* 1 for L1 Instruction Memory
|
||||
* 1 for L2 Instruction Memory
|
||||
* 1 for CONFIG_DEBUG_HUNT_FOR_ZERO
|
||||
*/
|
||||
|
||||
#define MAX_SWITCH_I_CPLBS (((CONFIG_MEM_SIZE / 4) + 12 + 1 + 1 + 1) * 2)
|
||||
|
||||
#if 0 /* comment by mhfan */
|
||||
/* Event Vector Table Address */
|
||||
#define EVT_EMULATION_ADDR 0xffe02000
|
||||
#define EVT_RESET_ADDR 0xffe02004
|
||||
#define EVT_NMI_ADDR 0xffe02008
|
||||
#define EVT_EXCEPTION_ADDR 0xffe0200c
|
||||
#define EVT_GLOBAL_INT_ENB_ADDR 0xffe02010
|
||||
#define EVT_HARDWARE_ERROR_ADDR 0xffe02014
|
||||
#define EVT_TIMER_ADDR 0xffe02018
|
||||
#define EVT_IVG7_ADDR 0xffe0201c
|
||||
#define EVT_IVG8_ADDR 0xffe02020
|
||||
#define EVT_IVG9_ADDR 0xffe02024
|
||||
#define EVT_IVG10_ADDR 0xffe02028
|
||||
#define EVT_IVG11_ADDR 0xffe0202c
|
||||
#define EVT_IVG12_ADDR 0xffe02030
|
||||
#define EVT_IVG13_ADDR 0xffe02034
|
||||
#define EVT_IVG14_ADDR 0xffe02038
|
||||
#define EVT_IVG15_ADDR 0xffe0203c
|
||||
#define EVT_OVERRIDE_ADDR 0xffe02100
|
||||
#endif /* comment by mhfan */
|
||||
|
||||
#endif /* __MACH_BF561_H__ */
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@
|
|||
#include "defBF561.h"
|
||||
#include "anomaly.h"
|
||||
|
||||
#if !(defined(__ASSEMBLY__) || defined(ASSEMBLY))
|
||||
#if !defined(__ASSEMBLY__)
|
||||
#include "cdefBF561.h"
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -31,11 +31,8 @@
|
|||
#ifndef _CDEF_BF561_H
|
||||
#define _CDEF_BF561_H
|
||||
|
||||
/*
|
||||
#if !defined(__ADSPBF561__)
|
||||
#warning cdefBF561.h should only be included for BF561 chip.
|
||||
#endif
|
||||
*/
|
||||
#include <asm/blackfin.h>
|
||||
|
||||
/* include all Core registers and bit definitions */
|
||||
#include "defBF561.h"
|
||||
|
||||
|
|
@ -67,7 +64,7 @@ static __inline__ void bfin_write_VR_CTL(unsigned int val)
|
|||
bfin_write32(SICA_IWR1, 0);
|
||||
|
||||
bfin_write16(VR_CTL, val);
|
||||
__builtin_bfin_ssync();
|
||||
SSYNC();
|
||||
|
||||
local_irq_save(flags);
|
||||
asm("IDLE;");
|
||||
|
|
|
|||
|
|
@ -120,6 +120,7 @@
|
|||
#define UART_GCTL 0xFFC00424 /* Global Control Register */
|
||||
|
||||
/* SPI Controller (0xFFC00500 - 0xFFC005FF) */
|
||||
#define SPI0_REGBASE 0xFFC00500
|
||||
#define SPI_CTL 0xFFC00500 /* SPI Control Register */
|
||||
#define SPI_FLG 0xFFC00504 /* SPI Flag register */
|
||||
#define SPI_STAT 0xFFC00508 /* SPI Status register */
|
||||
|
|
|
|||
|
|
@ -289,6 +289,8 @@
|
|||
#define IRQ_PF46 119
|
||||
#define IRQ_PF47 120
|
||||
|
||||
#define GPIO_IRQ_BASE IRQ_PF0
|
||||
|
||||
#ifdef CONFIG_IRQCHIP_DEMUX_GPIO
|
||||
#define NR_IRQS (IRQ_PF47 + 1)
|
||||
#else
|
||||
|
|
|
|||
|
|
@ -21,10 +21,10 @@
|
|||
|
||||
/* Level 1 Memory */
|
||||
|
||||
#ifdef CONFIG_BLKFIN_CACHE
|
||||
#define BLKFIN_ICACHESIZE (16*1024)
|
||||
#ifdef CONFIG_BFIN_ICACHE
|
||||
#define BFIN_ICACHESIZE (16*1024)
|
||||
#else
|
||||
#define BLKFIN_ICACHESIZE (0*1024)
|
||||
#define BFIN_ICACHESIZE (0*1024)
|
||||
#endif
|
||||
|
||||
/* Memory Map for ADSP-BF561 processors */
|
||||
|
|
@ -36,29 +36,29 @@
|
|||
|
||||
#define L1_CODE_LENGTH 0x4000
|
||||
|
||||
#ifdef CONFIG_BLKFIN_DCACHE
|
||||
#ifdef CONFIG_BFIN_DCACHE
|
||||
|
||||
#ifdef CONFIG_BLKFIN_DCACHE_BANKA
|
||||
#ifdef CONFIG_BFIN_DCACHE_BANKA
|
||||
#define DMEM_CNTR (ACACHE_BSRAM | ENDCPLB | PORT_PREF0)
|
||||
#define L1_DATA_A_LENGTH (0x8000 - 0x4000)
|
||||
#define L1_DATA_B_LENGTH 0x8000
|
||||
#define BLKFIN_DCACHESIZE (16*1024)
|
||||
#define BLKFIN_DSUPBANKS 1
|
||||
#define BFIN_DCACHESIZE (16*1024)
|
||||
#define BFIN_DSUPBANKS 1
|
||||
#else
|
||||
#define DMEM_CNTR (ACACHE_BCACHE | ENDCPLB | PORT_PREF0)
|
||||
#define L1_DATA_A_LENGTH (0x8000 - 0x4000)
|
||||
#define L1_DATA_B_LENGTH (0x8000 - 0x4000)
|
||||
#define BLKFIN_DCACHESIZE (32*1024)
|
||||
#define BLKFIN_DSUPBANKS 2
|
||||
#define BFIN_DCACHESIZE (32*1024)
|
||||
#define BFIN_DSUPBANKS 2
|
||||
#endif
|
||||
|
||||
#else
|
||||
#define DMEM_CNTR (ASRAM_BSRAM | ENDCPLB | PORT_PREF0)
|
||||
#define L1_DATA_A_LENGTH 0x8000
|
||||
#define L1_DATA_B_LENGTH 0x8000
|
||||
#define BLKFIN_DCACHESIZE (0*1024)
|
||||
#define BLKFIN_DSUPBANKS 0
|
||||
#endif /*CONFIG_BLKFIN_DCACHE*/
|
||||
#define BFIN_DCACHESIZE (0*1024)
|
||||
#define BFIN_DSUPBANKS 0
|
||||
#endif /*CONFIG_BFIN_DCACHE*/
|
||||
#endif
|
||||
|
||||
/* Level 2 Memory */
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@
|
|||
#define P_TMR1 (P_DEFINED | P_IDENT(GPIO_PF1))
|
||||
#define P_TMR0 (P_DEFINED | P_IDENT(GPIO_PF0))
|
||||
#define P_SPI0_MOSI (P_DONTCARE)
|
||||
#define P_SPI0_MIS0 (P_DONTCARE)
|
||||
#define P_SPI0_MISO (P_DONTCARE)
|
||||
#define P_SPI0_SCK (P_DONTCARE)
|
||||
|
||||
#endif /* _MACH_PORTMUX_H_ */
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@
|
|||
#define bfin_read_SRAM_BASE_ADDRESS() bfin_read32(SRAM_BASE_ADDRESS)
|
||||
#define bfin_write_SRAM_BASE_ADDRESS(val) bfin_write32(SRAM_BASE_ADDRESS,val)
|
||||
#define bfin_read_DMEM_CONTROL() bfin_read32(DMEM_CONTROL)
|
||||
#ifdef ANOMALY_05000125
|
||||
#if ANOMALY_05000125
|
||||
extern void bfin_write_DMEM_CONTROL(unsigned int val);
|
||||
#else
|
||||
#define bfin_write_DMEM_CONTROL(val) bfin_write32(DMEM_CONTROL,val)
|
||||
|
|
@ -129,7 +129,7 @@ extern void bfin_write_DMEM_CONTROL(unsigned int val);
|
|||
#define DTEST_DATA3 0xFFE0040C
|
||||
*/
|
||||
#define bfin_read_IMEM_CONTROL() bfin_read32(IMEM_CONTROL)
|
||||
#ifdef ANOMALY_05000125
|
||||
#if ANOMALY_05000125
|
||||
extern void bfin_write_IMEM_CONTROL(unsigned int val);
|
||||
#else
|
||||
#define bfin_write_IMEM_CONTROL(val) bfin_write32(IMEM_CONTROL,val)
|
||||
|
|
|
|||
70
include/asm-blackfin/mach-common/clocks.h
Normal file
70
include/asm-blackfin/mach-common/clocks.h
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
/*
|
||||
* File: include/asm-blackfin/mach-common/clocks.h
|
||||
* Based on: include/asm-blackfin/mach-bf537/bf537.h
|
||||
* Author: Robin Getz <rgetz@blackfin.uclinux.org>
|
||||
*
|
||||
* Created: 25Jul07
|
||||
* Description: Common Clock definitions for various kernel files
|
||||
*
|
||||
* Modified:
|
||||
* Copyright 2004-2007 Analog Devices Inc.
|
||||
*
|
||||
* Bugs: Enter bugs at http://blackfin.uclinux.org/
|
||||
*
|
||||
* 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 _BFIN_CLOCKS_H
|
||||
#define _BFIN_CLOCKS_H
|
||||
|
||||
#ifdef CONFIG_CCLK_DIV_1
|
||||
# define CONFIG_CCLK_ACT_DIV CCLK_DIV1
|
||||
# define CONFIG_CCLK_DIV 1
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_CCLK_DIV_2
|
||||
# define CONFIG_CCLK_ACT_DIV CCLK_DIV2
|
||||
# define CONFIG_CCLK_DIV 2
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_CCLK_DIV_4
|
||||
# define CONFIG_CCLK_ACT_DIV CCLK_DIV4
|
||||
# define CONFIG_CCLK_DIV 4
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_CCLK_DIV_8
|
||||
# define CONFIG_CCLK_ACT_DIV CCLK_DIV8
|
||||
# define CONFIG_CCLK_DIV 8
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_PLL_BYPASS
|
||||
# ifndef CONFIG_CLKIN_HALF
|
||||
# define CONFIG_VCO_HZ (CONFIG_CLKIN_HZ * CONFIG_VCO_MULT)
|
||||
# else
|
||||
# define CONFIG_VCO_HZ ((CONFIG_CLKIN_HZ * CONFIG_VCO_MULT)/2)
|
||||
# endif
|
||||
|
||||
# define CONFIG_CCLK_HZ (CONFIG_VCO_HZ/CONFIG_CCLK_DIV)
|
||||
# define CONFIG_SCLK_HZ (CONFIG_VCO_HZ/CONFIG_SCLK_DIV)
|
||||
|
||||
#else
|
||||
# define CONFIG_VCO_HZ (CONFIG_CLKIN_HZ)
|
||||
# define CONFIG_CCLK_HZ (CONFIG_CLKIN_HZ)
|
||||
# define CONFIG_SCLK_HZ (CONFIG_CLKIN_HZ)
|
||||
# define CONFIG_VCO_MULT 0
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
@ -33,81 +33,77 @@
|
|||
|
||||
#include <asm/mach/anomaly.h>
|
||||
|
||||
/*#if !defined(__ADSPLPBLACKFIN__)
|
||||
#warning def_LPBlackfin.h should only be included for 532 compatible chips.
|
||||
#endif
|
||||
*/
|
||||
|
||||
#define MK_BMSK_(x) (1<<x)
|
||||
|
||||
#if defined(ANOMALY_05000198)
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
#define bfin_read8(addr) ({ unsigned char __v; \
|
||||
__asm__ __volatile__ ("NOP;\n\t" \
|
||||
"%0 = b[%1] (z);\n\t" \
|
||||
: "=d"(__v) : "a"(addr)); \
|
||||
__v; })
|
||||
|
||||
#define bfin_read16(addr) ({ unsigned __v; \
|
||||
__asm__ __volatile__ ("NOP;\n\t"\
|
||||
"%0 = w[%1] (z);\n\t"\
|
||||
: "=d"(__v) : "a"(addr)); (unsigned short)__v; })
|
||||
|
||||
#define bfin_read32(addr) ({ unsigned __v; \
|
||||
__asm__ __volatile__ ("NOP;\n\t"\
|
||||
"%0 = [%1];\n\t"\
|
||||
: "=d"(__v) : "a"(addr)); __v; })
|
||||
|
||||
#define bfin_write8(addr, val) ({ \
|
||||
__asm__ __volatile__ ("NOP;\n\t" \
|
||||
"b[%0] = %1;\n\t" \
|
||||
: : "a"(addr), "d"(val) : "memory");})
|
||||
|
||||
#define bfin_write16(addr,val) ({\
|
||||
__asm__ __volatile__ ("NOP;\n\t"\
|
||||
"w[%0] = %1;\n\t"\
|
||||
: : "a"(addr) , "d"(val) : "memory");})
|
||||
|
||||
#define bfin_write32(addr,val) ({\
|
||||
__asm__ __volatile__ ("NOP;\n\t"\
|
||||
"[%0] = %1;\n\t"\
|
||||
: : "a"(addr) , "d"(val) : "memory");})
|
||||
#include <linux/types.h>
|
||||
|
||||
#if ANOMALY_05000198
|
||||
# define NOP_PAD_ANOMALY_05000198 "nop;"
|
||||
#else
|
||||
|
||||
#define bfin_read8(addr) ({ unsigned char __v; \
|
||||
__asm__ __volatile__ ( \
|
||||
"%0 = b[%1] (z);\n\t" \
|
||||
:"=d"(__v) : "a"(addr)); \
|
||||
__v; })
|
||||
|
||||
#define bfin_read16(addr) ({ unsigned __v; \
|
||||
__asm__ __volatile__ (\
|
||||
"%0 = w[%1] (z);\n\t"\
|
||||
: "=d"(__v) : "a"(addr)); (unsigned short)__v; })
|
||||
|
||||
#define bfin_read32(addr) ({ unsigned __v; \
|
||||
__asm__ __volatile__ (\
|
||||
"%0 = [%1];\n\t"\
|
||||
: "=d"(__v) : "a"(addr)); __v; })
|
||||
|
||||
#define bfin_write8(addr, val) ({ \
|
||||
__asm__ __volatile__ ( \
|
||||
"b[%0] = %1; \n\t" \
|
||||
::"a"(addr), "d"(val) : "memory");})
|
||||
|
||||
#define bfin_write16(addr,val) ({\
|
||||
__asm__ __volatile__ (\
|
||||
"w[%0] = %1;\n\t"\
|
||||
: : "a"(addr) , "d"(val) : "memory");})
|
||||
|
||||
#define bfin_write32(addr,val) ({\
|
||||
__asm__ __volatile__ (\
|
||||
"[%0] = %1;\n\t"\
|
||||
: : "a"(addr) , "d"(val) : "memory");})
|
||||
|
||||
# define NOP_PAD_ANOMALY_05000198
|
||||
#endif
|
||||
|
||||
#define bfin_read8(addr) ({ \
|
||||
uint8_t __v; \
|
||||
__asm__ __volatile__( \
|
||||
NOP_PAD_ANOMALY_05000198 \
|
||||
"%0 = b[%1] (z);" \
|
||||
: "=d" (__v) \
|
||||
: "a" (addr) \
|
||||
); \
|
||||
__v; })
|
||||
|
||||
#define bfin_read16(addr) ({ \
|
||||
uint16_t __v; \
|
||||
__asm__ __volatile__( \
|
||||
NOP_PAD_ANOMALY_05000198 \
|
||||
"%0 = w[%1] (z);" \
|
||||
: "=d" (__v) \
|
||||
: "a" (addr) \
|
||||
); \
|
||||
__v; })
|
||||
|
||||
#define bfin_read32(addr) ({ \
|
||||
uint32_t __v; \
|
||||
__asm__ __volatile__( \
|
||||
NOP_PAD_ANOMALY_05000198 \
|
||||
"%0 = [%1];" \
|
||||
: "=d" (__v) \
|
||||
: "a" (addr) \
|
||||
); \
|
||||
__v; })
|
||||
|
||||
#define bfin_write8(addr, val) \
|
||||
__asm__ __volatile__( \
|
||||
NOP_PAD_ANOMALY_05000198 \
|
||||
"b[%0] = %1;" \
|
||||
: \
|
||||
: "a" (addr), "d" (val) \
|
||||
: "memory" \
|
||||
)
|
||||
|
||||
#define bfin_write16(addr, val) \
|
||||
__asm__ __volatile__( \
|
||||
NOP_PAD_ANOMALY_05000198 \
|
||||
"w[%0] = %1;" \
|
||||
: \
|
||||
: "a" (addr), "d" (val) \
|
||||
: "memory" \
|
||||
)
|
||||
|
||||
#define bfin_write32(addr, val) \
|
||||
__asm__ __volatile__( \
|
||||
NOP_PAD_ANOMALY_05000198 \
|
||||
"[%0] = %1;" \
|
||||
: \
|
||||
: "a" (addr), "d" (val) \
|
||||
: "memory" \
|
||||
)
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
|
||||
/**************************************************
|
||||
* System Register Bits
|
||||
**************************************************/
|
||||
|
|
@ -643,6 +639,7 @@
|
|||
#define CPLB_USER_RD 0x00000004 /* 0=no read access, 1=read access
|
||||
* allowed (user mode)
|
||||
*/
|
||||
|
||||
#define PAGE_SIZE_1KB 0x00000000 /* 1 KB page size */
|
||||
#define PAGE_SIZE_4KB 0x00010000 /* 4 KB page size */
|
||||
#define PAGE_SIZE_1MB 0x00020000 /* 1 MB page size */
|
||||
|
|
@ -675,6 +672,8 @@
|
|||
*/
|
||||
#define CPLB_WT 0x00004000 /* 0=write-back, 1=write-through */
|
||||
|
||||
#define CPLB_ALL_ACCESS CPLB_SUPV_WR | CPLB_USER_RD | CPLB_USER_WR
|
||||
|
||||
/* TBUFCTL Masks */
|
||||
#define TBUFPWR 0x0001
|
||||
#define TBUFEN 0x0002
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
#include <asm-generic/4level-fixup.h>
|
||||
|
||||
#include <asm/page.h>
|
||||
#include <asm/cplb.h>
|
||||
#include <asm/mach-common/def_LPBlackfin.h>
|
||||
|
||||
typedef pte_t *pte_addr_t;
|
||||
/*
|
||||
|
|
|
|||
20
include/asm-blackfin/reboot.h
Normal file
20
include/asm-blackfin/reboot.h
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
/*
|
||||
* include/asm-blackfin/reboot.h - shutdown/reboot header
|
||||
*
|
||||
* Copyright 2004-2007 Analog Devices Inc.
|
||||
*
|
||||
* Licensed under the GPL-2 or later.
|
||||
*/
|
||||
|
||||
#ifndef __ASM_REBOOT_H__
|
||||
#define __ASM_REBOOT_H__
|
||||
|
||||
/* optional board specific hooks */
|
||||
extern void native_machine_restart(char *cmd);
|
||||
extern void native_machine_halt(void);
|
||||
extern void native_machine_power_off(void);
|
||||
|
||||
/* common reboot workarounds */
|
||||
extern void bfin_gpio_reset_spi0_ssel1(void);
|
||||
|
||||
#endif
|
||||
|
|
@ -36,6 +36,7 @@
|
|||
|
||||
#include <linux/linkage.h>
|
||||
#include <linux/compiler.h>
|
||||
#include <asm/mach/anomaly.h>
|
||||
|
||||
/*
|
||||
* Interrupt configuring macros.
|
||||
|
|
@ -43,53 +44,60 @@
|
|||
|
||||
extern unsigned long irq_flags;
|
||||
|
||||
#define local_irq_enable() do { \
|
||||
__asm__ __volatile__ ( \
|
||||
"sti %0;" \
|
||||
::"d"(irq_flags)); \
|
||||
} while (0)
|
||||
#define local_irq_enable() \
|
||||
__asm__ __volatile__( \
|
||||
"sti %0;" \
|
||||
: \
|
||||
: "d" (irq_flags) \
|
||||
)
|
||||
|
||||
#define local_irq_disable() do { \
|
||||
int _tmp_dummy; \
|
||||
__asm__ __volatile__ ( \
|
||||
"cli %0;" \
|
||||
:"=d" (_tmp_dummy):); \
|
||||
} while (0)
|
||||
#define local_irq_disable() \
|
||||
do { \
|
||||
int __tmp_dummy; \
|
||||
__asm__ __volatile__( \
|
||||
"cli %0;" \
|
||||
: "=d" (__tmp_dummy) \
|
||||
); \
|
||||
} while (0)
|
||||
|
||||
#if defined(ANOMALY_05000244) && defined (CONFIG_BLKFIN_CACHE)
|
||||
#define idle_with_irq_disabled() do { \
|
||||
__asm__ __volatile__ ( \
|
||||
"nop; nop;\n" \
|
||||
".align 8;\n" \
|
||||
"sti %0; idle;\n" \
|
||||
::"d" (irq_flags)); \
|
||||
} while (0)
|
||||
#if ANOMALY_05000244 && defined(CONFIG_BFIN_ICACHE)
|
||||
# define NOP_PAD_ANOMALY_05000244 "nop; nop;"
|
||||
#else
|
||||
#define idle_with_irq_disabled() do { \
|
||||
__asm__ __volatile__ ( \
|
||||
".align 8;\n" \
|
||||
"sti %0; idle;\n" \
|
||||
::"d" (irq_flags)); \
|
||||
} while (0)
|
||||
# define NOP_PAD_ANOMALY_05000244
|
||||
#endif
|
||||
|
||||
#define idle_with_irq_disabled() \
|
||||
__asm__ __volatile__( \
|
||||
NOP_PAD_ANOMALY_05000244 \
|
||||
".align 8;" \
|
||||
"sti %0;" \
|
||||
"idle;" \
|
||||
: \
|
||||
: "d" (irq_flags) \
|
||||
)
|
||||
|
||||
#ifdef CONFIG_DEBUG_HWERR
|
||||
#define __save_and_cli(x) do { \
|
||||
__asm__ __volatile__ ( \
|
||||
"cli %0;\n\tsti %1;" \
|
||||
:"=&d"(x): "d" (0x3F)); \
|
||||
} while (0)
|
||||
# define __save_and_cli(x) \
|
||||
__asm__ __volatile__( \
|
||||
"cli %0;" \
|
||||
"sti %1;" \
|
||||
: "=&d" (x) \
|
||||
: "d" (0x3F) \
|
||||
)
|
||||
#else
|
||||
#define __save_and_cli(x) do { \
|
||||
__asm__ __volatile__ ( \
|
||||
"cli %0;" \
|
||||
:"=&d"(x):); \
|
||||
} while (0)
|
||||
# define __save_and_cli(x) \
|
||||
__asm__ __volatile__( \
|
||||
"cli %0;" \
|
||||
: "=&d" (x) \
|
||||
)
|
||||
#endif
|
||||
|
||||
#define local_save_flags(x) asm volatile ("cli %0;" \
|
||||
"sti %0;" \
|
||||
:"=d"(x):);
|
||||
#define local_save_flags(x) \
|
||||
__asm__ __volatile__( \
|
||||
"cli %0;" \
|
||||
"sti %0;" \
|
||||
: "=d" (x) \
|
||||
)
|
||||
|
||||
#ifdef CONFIG_DEBUG_HWERR
|
||||
#define irqs_enabled_from_flags(x) (((x) & ~0x3f) != 0)
|
||||
|
|
@ -97,10 +105,11 @@ extern unsigned long irq_flags;
|
|||
#define irqs_enabled_from_flags(x) ((x) != 0x1f)
|
||||
#endif
|
||||
|
||||
#define local_irq_restore(x) do { \
|
||||
if (irqs_enabled_from_flags(x)) \
|
||||
local_irq_enable (); \
|
||||
} while (0)
|
||||
#define local_irq_restore(x) \
|
||||
do { \
|
||||
if (irqs_enabled_from_flags(x)) \
|
||||
local_irq_enable(); \
|
||||
} while (0)
|
||||
|
||||
/* For spinlocks etc */
|
||||
#define local_irq_save(x) __save_and_cli(x)
|
||||
|
|
|
|||
|
|
@ -140,6 +140,7 @@ struct ktermios {
|
|||
#define HUPCL 0002000
|
||||
#define CLOCAL 0004000
|
||||
#define CBAUDEX 0010000
|
||||
#define BOTHER 0010000
|
||||
#define B57600 0010001
|
||||
#define B115200 0010002
|
||||
#define B230400 0010003
|
||||
|
|
@ -155,10 +156,12 @@ struct ktermios {
|
|||
#define B3000000 0010015
|
||||
#define B3500000 0010016
|
||||
#define B4000000 0010017
|
||||
#define CIBAUD 002003600000 /* input baud rate (not used) */
|
||||
#define CIBAUD 002003600000 /* input baud rate */
|
||||
#define CMSPAR 010000000000 /* mark or space (stick) parity */
|
||||
#define CRTSCTS 020000000000 /* flow control */
|
||||
|
||||
#define IBSHIFT 16 /* Shift from CBAUD to CIBAUD */
|
||||
|
||||
/* c_lflag bits */
|
||||
#define ISIG 0000001
|
||||
#define ICANON 0000002
|
||||
|
|
|
|||
|
|
@ -98,8 +98,14 @@ struct termio {
|
|||
copy_to_user((termio)->c_cc, (termios)->c_cc, NCC); \
|
||||
})
|
||||
|
||||
#define user_termios_to_kernel_termios(k, u) copy_from_user(k, u, sizeof(struct termios))
|
||||
#define kernel_termios_to_user_termios(u, k) copy_to_user(u, k, sizeof(struct termios))
|
||||
#define user_termios_to_kernel_termios(k, u) \
|
||||
copy_from_user(k, u, sizeof(struct termios2))
|
||||
#define kernel_termios_to_user_termios(u, k) \
|
||||
copy_to_user(u, k, sizeof(struct termios2))
|
||||
#define user_termios_to_kernel_termios_1(k, u) \
|
||||
copy_from_user(k, u, sizeof(struct termios))
|
||||
#define kernel_termios_to_user_termios_1(u, k) \
|
||||
copy_to_user(u, k, sizeof(struct termios))
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
|
|
|
|||
|
|
@ -6,23 +6,46 @@
|
|||
#ifndef _BLACKFIN_TRACE_
|
||||
#define _BLACKFIN_TRACE_
|
||||
|
||||
/* Normally, we use ON, but you can't turn on software expansion until
|
||||
* interrupts subsystem is ready
|
||||
*/
|
||||
|
||||
#define BFIN_TRACE_INIT ((CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION << 4) | 0x03)
|
||||
#ifdef CONFIG_DEBUG_BFIN_HWTRACE_EXPAND
|
||||
#define BFIN_TRACE_ON (BFIN_TRACE_INIT | (CONFIG_DEBUG_BFIN_HWTRACE_EXPAND << 2))
|
||||
#else
|
||||
#define BFIN_TRACE_ON (BFIN_TRACE_INIT)
|
||||
#endif
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
extern unsigned long trace_buff_offset;
|
||||
extern unsigned long software_trace_buff[];
|
||||
|
||||
/* Trace Macros for C files */
|
||||
|
||||
#ifdef CONFIG_DEBUG_BFIN_HWTRACE_ON
|
||||
|
||||
#define trace_buffer_save(x) \
|
||||
do { \
|
||||
(x) = bfin_read_TBUFCTL(); \
|
||||
bfin_write_TBUFCTL((x) & ~TBUFEN); \
|
||||
} while (0)
|
||||
do { \
|
||||
(x) = bfin_read_TBUFCTL(); \
|
||||
bfin_write_TBUFCTL((x) & ~TBUFEN); \
|
||||
} while (0)
|
||||
|
||||
#define trace_buffer_restore(x) \
|
||||
do { \
|
||||
bfin_write_TBUFCTL((x)); \
|
||||
} while (0)
|
||||
do { \
|
||||
bfin_write_TBUFCTL((x)); \
|
||||
} while (0)
|
||||
#else /* DEBUG_BFIN_HWTRACE_ON */
|
||||
|
||||
#define trace_buffer_save(x)
|
||||
#define trace_buffer_restore(x)
|
||||
#endif /* CONFIG_DEBUG_BFIN_HWTRACE_ON */
|
||||
|
||||
#else
|
||||
/* Trace Macros for Assembly files */
|
||||
|
||||
#ifdef CONFIG_DEBUG_BFIN_HWTRACE_ON
|
||||
|
||||
#define TRACE_BUFFER_START(preg, dreg) trace_buffer_start(preg, dreg)
|
||||
#define TRACE_BUFFER_STOP(preg, dreg) trace_buffer_stop(preg, dreg)
|
||||
|
||||
|
|
@ -32,12 +55,26 @@
|
|||
dreg = 0x1; \
|
||||
[preg] = dreg;
|
||||
|
||||
#define trace_buffer_start(preg, dreg) \
|
||||
#define trace_buffer_start(preg, dreg) \
|
||||
preg.L = LO(TBUFCTL); \
|
||||
preg.H = HI(TBUFCTL); \
|
||||
dreg = 0x13; \
|
||||
dreg = BFIN_TRACE_ON; \
|
||||
[preg] = dreg;
|
||||
|
||||
#define trace_buffer_init(preg, dreg) \
|
||||
preg.L = LO(TBUFCTL); \
|
||||
preg.H = HI(TBUFCTL); \
|
||||
dreg = BFIN_TRACE_INIT; \
|
||||
[preg] = dreg;
|
||||
|
||||
#else /* CONFIG_DEBUG_BFIN_HWTRACE_ON */
|
||||
|
||||
#define trace_buffer_stop(preg, dreg)
|
||||
#define trace_buffer_start(preg, dreg)
|
||||
#define trace_buffer_init(preg, dreg)
|
||||
|
||||
#endif /* CONFIG_DEBUG_BFIN_HWTRACE_ON */
|
||||
|
||||
#ifdef CONFIG_DEBUG_BFIN_NO_KERN_HWTRACE
|
||||
# define DEBUG_START_HWTRACE(preg, dreg) trace_buffer_start(preg, dreg)
|
||||
# define DEBUG_STOP_HWTRACE(preg, dreg) trace_buffer_stop(preg, dreg)
|
||||
|
|
|
|||
Loading…
Reference in a new issue