Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Librem5
uboot-imx
Commits
04563939
Commit
04563939
authored
Feb 07, 2009
by
Wolfgang Denk
Browse files
Merge branch 'master' of
git://git.denx.de/u-boot-blackfin
parents
0ab5410a
4b7e3d04
Changes
9
Hide whitespace changes
Inline
Side-by-side
board/bf537-stamp/spi_flash.c
View file @
04563939
...
...
@@ -180,13 +180,7 @@ static struct manufacturer_info flash_manufacturers[] = {
* BF51x, BF533, BF561: SSEL2
*/
#ifndef CONFIG_SPI_FLASH_SSEL
# if defined(__ADSPBF531__) || defined(__ADSPBF532__) || defined(__ADSPBF533__) || \
defined(__ADSPBF538__) || defined(__ADSPBF539__) || defined(__ADSPBF561__) || \
defined(__ADSPBF51x__)
# define CONFIG_SPI_FLASH_SSEL 2
# else
# define CONFIG_SPI_FLASH_SSEL 1
# endif
# define CONFIG_SPI_FLASH_SSEL BFIN_BOOT_SPI_SSEL
#endif
#define SSEL_MASK (1 << CONFIG_SPI_FLASH_SSEL)
...
...
cpu/blackfin/initcode.c
View file @
04563939
...
...
@@ -20,7 +20,7 @@
#include "serial.h"
__attribute__
((
always_inline
))
static
inline
uint32_t
serial_init
(
void
)
static
inline
void
serial_init
(
void
)
{
#ifdef __ADSPBF54x__
# ifdef BFIN_BOOT_UART_USE_RTS
...
...
@@ -61,25 +61,16 @@ static inline uint32_t serial_init(void)
}
#endif
uint32_t
old_baud
;
if
(
BFIN_DEBUG_EARLY_SERIAL
||
CONFIG_BFIN_BOOT_MODE
==
BFIN_BOOT_UART
)
old_baud
=
serial_early_get_baud
();
else
old_baud
=
CONFIG_BAUDRATE
;
if
(
BFIN_DEBUG_EARLY_SERIAL
)
{
int
ucen
=
*
pUART_GCTL
&
UCEN
;
serial_early_init
();
/* If the UART is off, that means we need to program
* the baud rate ourselves initially.
*/
if
(
!
old_baud
)
{
old_baud
=
CONFIG_BAUDRATE
;
if
(
ucen
!=
UCEN
)
serial_early_set_baud
(
CONFIG_BAUDRATE
);
}
}
return
old_baud
;
}
__attribute__
((
always_inline
))
...
...
@@ -93,30 +84,6 @@ static inline void serial_deinit(void)
#endif
}
/* We need to reset the baud rate when we have early debug turned on
* or when we are booting over the UART.
* XXX: we should fix this to calc the old baud and restore it rather
* than hardcoding it via CONFIG_LDR_LOAD_BAUD ... but we have
* to figure out how to avoid the division in the baud calc ...
*/
__attribute__
((
always_inline
))
static
inline
void
serial_reset_baud
(
uint32_t
baud
)
{
if
(
!
BFIN_DEBUG_EARLY_SERIAL
&&
CONFIG_BFIN_BOOT_MODE
!=
BFIN_BOOT_UART
)
return
;
#ifndef CONFIG_LDR_LOAD_BAUD
# define CONFIG_LDR_LOAD_BAUD 115200
#endif
if
(
CONFIG_BFIN_BOOT_MODE
==
BFIN_BOOT_BYPASS
)
serial_early_set_baud
(
baud
);
else
if
(
CONFIG_BFIN_BOOT_MODE
==
BFIN_BOOT_UART
)
serial_early_set_baud
(
CONFIG_LDR_LOAD_BAUD
);
else
serial_early_set_baud
(
CONFIG_BAUDRATE
);
}
__attribute__
((
always_inline
))
static
inline
void
serial_putc
(
char
c
)
{
...
...
@@ -133,12 +100,22 @@ static inline void serial_putc(char c)
}
/* Max SCLK can be 133MHz ... dividing that by
4
gives
* us a freq of
33
MHz for SPI which should generally be
/* Max SCLK can be 133MHz ... dividing that by
(2*4)
gives
* us a freq of
16
MHz for SPI which should generally be
* slow enough for the slow reads the bootrom uses.
*/
#if !defined(CONFIG_SPI_FLASH_SLOW_READ) && \
((defined(__ADSPBF52x__) && __SILICON_REVISION__ >= 2) || \
(defined(__ADSPBF54x__) && __SILICON_REVISION__ >= 1))
# define BOOTROM_SUPPORTS_SPI_FAST_READ 1
#else
# define BOOTROM_SUPPORTS_SPI_FAST_READ 0
#endif
#ifndef CONFIG_SPI_BAUD_INITBLOCK
# define CONFIG_SPI_BAUD_INITBLOCK 4
# define CONFIG_SPI_BAUD_INITBLOCK (BOOTROM_SUPPORTS_SPI_FAST_READ ? 2 : 4)
#endif
#ifdef SPI0_BAUD
# define bfin_write_SPI_BAUD bfin_write_SPI0_BAUD
#endif
/* PLL_DIV defines */
...
...
@@ -168,11 +145,18 @@ static inline void serial_putc(char c)
#ifndef CONFIG_EBIU_RSTCTL_VAL
# define CONFIG_EBIU_RSTCTL_VAL 0
/* only MDDRENABLE is useful */
#endif
#if ((CONFIG_EBIU_RSTCTL_VAL & 0xFFFFFFC4) != 0)
# error invalid EBIU_RSTCTL value: must not set reserved bits
#endif
#ifndef CONFIG_EBIU_MBSCTL_VAL
# define CONFIG_EBIU_MBSCTL_VAL 0
#endif
#if defined(CONFIG_EBIU_DDRQUE_VAL) && ((CONFIG_EBIU_DDRQUE_VAL & 0xFFFF8000) != 0)
# error invalid EBIU_DDRQUE value: must not set reserved bits
#endif
/* Make sure our voltage value is sane so we don't blow up! */
#ifndef CONFIG_VR_CTL_VAL
# define BFIN_CCLK ((CONFIG_CLKIN_HZ * CONFIG_VCO_MULT) / CONFIG_CCLK_DIV)
...
...
@@ -199,6 +183,9 @@ static inline void serial_putc(char c)
# elif defined(__ADSPBF54x__)
/* TBD; use default */
# undef CONFIG_VR_CTL_VLEV
# define CONFIG_VR_CTL_VLEV VLEV_120
# elif defined(__ADSPBF538__) || defined(__ADSPBF539__)
/* TBD; use default */
# undef CONFIG_VR_CTL_VLEV
# define CONFIG_VR_CTL_VLEV VLEV_125
# endif
# ifdef CONFIG_BFIN_MAC
...
...
@@ -216,10 +203,17 @@ static inline void serial_putc(char c)
# define CONFIG_VR_CTL_VAL (CONFIG_VR_CTL_CLKBUF | CONFIG_VR_CTL_VLEV | CONFIG_VR_CTL_FREQ)
#endif
__attribute__
((
saveall
))
BOOTROM_CALLED_FUNC_ATTR
void
initcode
(
ADI_BOOT_DATA
*
bootstruct
)
{
uint32_t
old_baud
=
serial_init
();
/* Save the clock pieces that are used in baud rate calculation */
unsigned
int
sdivB
,
divB
,
vcoB
;
serial_init
();
if
(
BFIN_DEBUG_EARLY_SERIAL
||
CONFIG_BFIN_BOOT_MODE
==
BFIN_BOOT_UART
)
{
sdivB
=
bfin_read_PLL_DIV
()
&
0xf
;
vcoB
=
(
bfin_read_PLL_CTL
()
>>
9
)
&
0x3f
;
divB
=
serial_early_get_div
();
}
#ifdef CONFIG_HW_WATCHDOG
# ifndef CONFIG_HW_WATCHDOG_TIMEOUT_INITCODE
...
...
@@ -244,12 +238,11 @@ void initcode(ADI_BOOT_DATA *bootstruct)
* boot. Once we switch over to u-boot's SPI flash driver, we'll
* increase the speed appropriately.
*/
if
(
CONFIG_BFIN_BOOT_MODE
==
BFIN_BOOT_SPI_MASTER
)
#ifdef SPI0_BAUD
bfin_write_SPI0_BAUD
(
CONFIG_SPI_BAUD_INITBLOCK
);
#else
if
(
CONFIG_BFIN_BOOT_MODE
==
BFIN_BOOT_SPI_MASTER
)
{
if
(
BOOTROM_SUPPORTS_SPI_FAST_READ
&&
CONFIG_SPI_BAUD_INITBLOCK
<
4
)
bootstruct
->
dFlags
|=
BFLAG_FASTREAD
;
bfin_write_SPI_BAUD
(
CONFIG_SPI_BAUD_INITBLOCK
);
#endif
}
serial_putc
(
'B'
);
...
...
@@ -267,40 +260,68 @@ void initcode(ADI_BOOT_DATA *bootstruct)
bfin_write_SIC_IWR
(
1
);
#endif
serial_putc
(
'L'
);
/* With newer bootroms, we use the helper function to set up
* the memory controller. Older bootroms lacks such helpers
* so we do it ourselves.
*/
if
(
BOOTROM_CAPS_SYSCONTROL
)
{
serial_putc
(
'S'
);
ADI_SYSCTRL_VALUES
memory_settings
;
memory_settings
.
uwVrCtl
=
CONFIG_VR_CTL_VAL
;
memory_settings
.
uwPllCtl
=
CONFIG_PLL_CTL_VAL
;
memory_settings
.
uwPllDiv
=
CONFIG_PLL_DIV_VAL
;
memory_settings
.
uwPllLockCnt
=
CONFIG_PLL_LOCKCNT_VAL
;
syscontrol
(
SYSCTRL_WRITE
|
SYSCTRL_VRCTL
|
SYSCTRL_PLLCTL
|
SYSCTRL_PLLDIV
|
SYSCTRL_LOCKCNT
|
(
CONFIG_VR_CTL_VAL
&
FREQ_MASK
?
SYSCTRL_INTVOLTAGE
:
SYSCTRL_EXTVOLTAGE
),
&
memory_settings
,
NULL
);
}
else
{
serial_putc
(
'L'
);
bfin_write_PLL_LOCKCNT
(
CONFIG_PLL_LOCKCNT_VAL
);
bfin_write_PLL_LOCKCNT
(
CONFIG_PLL_LOCKCNT_VAL
);
serial_putc
(
'A'
);
serial_putc
(
'A'
);
/* Only reprogram when needed to avoid triggering unnecessary
* PLL relock sequences.
*/
if
(
bfin_read_VR_CTL
()
!=
CONFIG_VR_CTL_VAL
)
{
serial_putc
(
'!'
);
bfin_write_VR_CTL
(
CONFIG_VR_CTL_VAL
);
asm
(
"idle;"
);
}
/* Only reprogram when needed to avoid triggering unnecessary
* PLL relock sequences.
*/
if
(
bfin_read_VR_CTL
()
!=
CONFIG_VR_CTL_VAL
)
{
serial_putc
(
'!'
);
bfin_write_VR_CTL
(
CONFIG_VR_CTL_VAL
);
asm
(
"idle;"
);
}
serial_putc
(
'C'
);
serial_putc
(
'C'
);
bfin_write_PLL_DIV
(
CONFIG_PLL_DIV_VAL
);
bfin_write_PLL_DIV
(
CONFIG_PLL_DIV_VAL
);
serial_putc
(
'K'
);
serial_putc
(
'K'
);
/* Only reprogram when needed to avoid triggering unnecessary
* PLL relock sequences.
*/
if
(
bfin_read_PLL_CTL
()
!=
CONFIG_PLL_CTL_VAL
)
{
serial_putc
(
'!'
);
bfin_write_PLL_CTL
(
CONFIG_PLL_CTL_VAL
);
asm
(
"idle;"
);
/* Only reprogram when needed to avoid triggering unnecessary
* PLL relock sequences.
*/
if
(
bfin_read_PLL_CTL
()
!=
CONFIG_PLL_CTL_VAL
)
{
serial_putc
(
'!'
);
bfin_write_PLL_CTL
(
CONFIG_PLL_CTL_VAL
);
asm
(
"idle;"
);
}
}
/* Since we've changed the SCLK above, we may need to update
* the UART divisors (UART baud rates are based on SCLK).
* Do the division by hand as there are no native instructions
* for dividing which means we'd generate a libgcc reference.
*/
serial_reset_baud
(
old_baud
);
if
(
CONFIG_BFIN_BOOT_MODE
==
BFIN_BOOT_UART
)
{
unsigned
int
sdivR
,
vcoR
;
sdivR
=
bfin_read_PLL_DIV
()
&
0xf
;
vcoR
=
(
bfin_read_PLL_CTL
()
>>
9
)
&
0x3f
;
int
dividend
=
sdivB
*
divB
*
vcoR
;
int
divisor
=
vcoB
*
sdivR
;
unsigned
int
quotient
;
for
(
quotient
=
0
;
dividend
>
0
;
++
quotient
)
dividend
-=
divisor
;
serial_early_put_div
(
quotient
-
ANOMALY_05000230
);
}
serial_putc
(
'F'
);
...
...
cpu/blackfin/serial.h
View file @
04563939
...
...
@@ -156,16 +156,25 @@ static inline void serial_early_init(void)
}
__attribute__
((
always_inline
))
static
inline
uint32_t
serial_early_
get_baud
(
void
)
static
inline
void
serial_early_
put_div
(
uint16_t
divisor
)
{
/* If the UART isnt enabled, then we are booting an LDR
* from a non-UART source (so like flash) which means
* the baud rate here is meaningless.
*/
if
((
*
pUART_GCTL
&
UCEN
)
!=
UCEN
)
return
0
;
/* Set DLAB in LCR to Access DLL and DLH */
ACCESS_LATCH
();
SSYNC
();
#if (0)
/* See comment for serial_reset_baud() in initcode.c */
/* Program the divisor to get the baud rate we want */
*
pUART_DLL
=
LOB
(
divisor
);
*
pUART_DLH
=
HIB
(
divisor
);
SSYNC
();
/* Clear DLAB in LCR to Access THR RBR IER */
ACCESS_PORT_IER
();
SSYNC
();
}
__attribute__
((
always_inline
))
static
inline
uint16_t
serial_early_get_div
(
void
)
{
/* Set DLAB in LCR to Access DLL and DLH */
ACCESS_LATCH
();
SSYNC
();
...
...
@@ -173,16 +182,12 @@ static inline uint32_t serial_early_get_baud(void)
uint8_t
dll
=
*
pUART_DLL
;
uint8_t
dlh
=
*
pUART_DLH
;
uint16_t
divisor
=
(
dlh
<<
8
)
|
dll
;
uint32_t
baud
=
get_sclk
()
/
(
divisor
*
16
);
/* Clear DLAB in LCR to Access THR RBR IER */
ACCESS_PORT_IER
();
SSYNC
();
return
baud
;
#else
return
CONFIG_BAUDRATE
;
#endif
return
divisor
;
}
__attribute__
((
always_inline
))
...
...
@@ -192,20 +197,7 @@ static inline void serial_early_set_baud(uint32_t baud)
* weird multiplication is to make sure we over sample just
* a little rather than under sample the incoming signals.
*/
uint16_t
divisor
=
(
get_sclk
()
+
(
baud
*
8
))
/
(
baud
*
16
)
-
ANOMALY_05000230
;
/* Set DLAB in LCR to Access DLL and DLH */
ACCESS_LATCH
();
SSYNC
();
/* Program the divisor to get the baud rate we want */
*
pUART_DLL
=
LOB
(
divisor
);
*
pUART_DLH
=
HIB
(
divisor
);
SSYNC
();
/* Clear DLAB in LCR to Access THR RBR IER */
ACCESS_PORT_IER
();
SSYNC
();
serial_early_put_div
((
get_sclk
()
+
(
baud
*
8
))
/
(
baud
*
16
)
-
ANOMALY_05000230
);
}
#ifndef BFIN_IN_INITCODE
...
...
@@ -235,32 +227,6 @@ static inline void serial_early_puts(const char *s)
#endif
.
endm
/* Recursively expand calls to _serial_putc for every byte
* passed to us. Append a newline when we're all done.
*/
.
macro
_serial_early_putc
byte
:
req
morebytes
:
vararg
#ifdef CONFIG_DEBUG_EARLY_SERIAL
R0
=
\
byte
;
call
_serial_putc
;
.
ifnb
\
morebytes
_serial_early_putc
\
morebytes
.
else
.
if
(
\
byte
!=
'\n'
)
_serial_early_putc
'\n'
.
endif
.
endif
#endif
.
endm
/* Wrapper around recurisve _serial_early_putc macro which
* simply prepends the string "Early: "
*/
.
macro
serial_early_putc
byte
:
req
morebytes
:
vararg
#ifdef CONFIG_DEBUG_EARLY_SERIAL
_serial_early_putc
'E'
,
'a'
,
'r'
,
'l'
,
'y'
,
':'
,
' '
,
\
byte
,
\
morebytes
#endif
.
endm
/* Since we embed the string right into our .text section, we need
* to find its address. We do this by getting our PC and adding 2
* bytes (which is the length of the jump instruction). Then we
...
...
include/asm-blackfin/blackfin-config-pre.h
View file @
04563939
...
...
@@ -60,4 +60,13 @@ static inline const char *get_bfin_boot_mode(int bfin_boot)
}
#endif
/* Define the default SPI CS used when booting out of SPI */
#if defined(__ADSPBF531__) || defined(__ADSPBF532__) || defined(__ADSPBF533__) || \
defined(__ADSPBF538__) || defined(__ADSPBF539__) || defined(__ADSPBF561__) || \
defined(__ADSPBF51x__)
# define BFIN_BOOT_SPI_SSEL 2
#else
# define BFIN_BOOT_SPI_SSEL 1
#endif
#endif
include/asm-blackfin/mach-bf527/anomaly.h
View file @
04563939
...
...
@@ -7,82 +7,154 @@
*/
/* This file shoule be up to date with:
* - Revision C, 01/25/2008; ADSP-BF527 Blackfin Processor Anomaly List
* - Revision B, 08/12/2008; ADSP-BF526 Blackfin Processor Anomaly List
* - Revision E, 08/18/2008; ADSP-BF527 Blackfin Processor Anomaly List
*/
#ifndef _MACH_ANOMALY_H_
#define _MACH_ANOMALY_H_
#if defined(__ADSPBF522__) || defined(__ADSPBF524__) || defined(__ADSPBF526__)
# define ANOMALY_BF526 1
#else
# define ANOMALY_BF526 0
#endif
#if defined(__ADSPBF523__) || defined(__ADSPBF525__) || defined(__ADSPBF527__)
# define ANOMALY_BF527 1
#else
# define ANOMALY_BF527 0
#endif
/* 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)
#define ANOMALY_05000119 (1)
/* note: brokenness is noted in documentation, not anomaly sheet */
/* 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)
/* Errors when SSYNC, CSYNC, or Loads to LT, LB and LC Registers Are Interrupted */
#define ANOMALY_05000312 (1)
/* False Hardware Errors Caused by Fetches at the Boundary of Reserved Memory */
#define ANOMALY_05000310 (1)
/* PPI Is Level-Sensitive on First Transfer In Single Frame Sync Modes */
#define ANOMALY_05000313 (__SILICON_REVISION__ < 2)
/* Incorrect Access of OTP_STATUS During otp_write() Function */
#define ANOMALY_05000328 (
1
)
#define ANOMALY_05000328 (
ANOMALY_BF527 && __SILICON_REVISION__ < 2
)
/* Disallowed Configuration Prevents Subsequent Allowed Configuration on Host DMA Port */
#define ANOMALY_05000337 (
1
)
#define ANOMALY_05000337 (
ANOMALY_BF527 && __SILICON_REVISION__ < 2
)
/* Ethernet MAC MDIO Reads Do Not Meet IEEE Specification */
#define ANOMALY_05000341 (
1
)
#define ANOMALY_05000341 (
ANOMALY_BF527 && __SILICON_REVISION__ < 2
)
/* TWI May Not Operate Correctly Under Certain Signal Termination Conditions */
#define ANOMALY_05000342 (
1
)
#define ANOMALY_05000342 (
ANOMALY_BF527 && __SILICON_REVISION__ < 2
)
/* USB Calibration Value Is Not Initialized */
#define ANOMALY_05000346 (1)
#define ANOMALY_05000346 (ANOMALY_BF527 && __SILICON_REVISION__ < 2)
/* USB Calibration Value to use */
#define ANOMALY_05000346_value 0xE510
/* Preboot Routine Incorrectly Alters Reset Value of USB Register */
#define ANOMALY_05000347 (
1
)
#define ANOMALY_05000347 (
ANOMALY_BF527 && __SILICON_REVISION__ < 2
)
/* Security Features Are Not Functional */
#define ANOMALY_05000348 (__SILICON_REVISION__ < 1)
#define ANOMALY_05000348 (ANOMALY_BF527 && __SILICON_REVISION__ < 1)
/* bfrom_SysControl() Firmware Function Performs Improper System Reset */
#define ANOMALY_05000353 (ANOMALY_BF526)
/* Regulator Programming Blocked when Hibernate Wakeup Source Remains Active */
#define ANOMALY_05000355 (
1
)
#define ANOMALY_05000355 (
ANOMALY_BF527 && __SILICON_REVISION__ < 2
)
/* Serial Port (SPORT) Multichannel Transmit Failure when Channel 0 Is Disabled */
#define ANOMALY_05000357 (
1
)
#define ANOMALY_05000357 (
ANOMALY_BF527 && __SILICON_REVISION__ < 2
)
/* Incorrect Revision Number in DSPID Register */
#define ANOMALY_05000364 (__SILICON_REVISION__
> 0
)
#define ANOMALY_05000364 (
ANOMALY_BF527 &&
__SILICON_REVISION__
== 1
)
/* PPI Underflow Error Goes Undetected in ITU-R 656 Mode */
#define ANOMALY_05000366 (1)
/*
New Feature: Higher Default CCLK Rate
*/
#define ANOMALY_05000368 (
1
)
/*
Incorrect Default CSEL Value in PLL_DIV
*/
#define ANOMALY_05000368 (
ANOMALY_BF527 && __SILICON_REVISION__ < 2
)
/* Possible RETS Register Corruption when Subroutine Is under 5 Cycles in Duration */
#define ANOMALY_05000371 (
1
)
#define ANOMALY_05000371 (
ANOMALY_BF527 && __SILICON_REVISION__ < 2
)
/* Authentication Fails To Initiate */
#define ANOMALY_05000376 (__SILICON_REVISION__
> 0
)
#define ANOMALY_05000376 (
ANOMALY_BF527 &&
__SILICON_REVISION__
< 2
)
/* Data Read From L3 Memory by USB DMA May be Corrupted */
#define ANOMALY_05000380 (1)
/* USB Full-speed Mode not Fully Tested */
#define ANOMALY_05000381 (1)
/* New Feature: Boot from OTP Memory */
#define ANOMALY_05000385 (1)
/* New Feature: bfrom_SysControl() Routine */
#define ANOMALY_05000386 (1)
/* New Feature: Programmable Preboot Settings */
#define ANOMALY_05000387 (1)
#define ANOMALY_05000380 (ANOMALY_BF527 && __SILICON_REVISION__ < 2)
/* 8-Bit NAND Flash Boot Mode Not Functional */
#define ANOMALY_05000382 (__SILICON_REVISION__ < 2)
/* Host Must Not Read Back During Host DMA Boot */
#define ANOMALY_05000384 (ANOMALY_BF527 && __SILICON_REVISION__ < 2)
/* Boot from OTP Memory Not Functional */
#define ANOMALY_05000385 (ANOMALY_BF527 && __SILICON_REVISION__ < 2)
/* bfrom_SysControl() Firmware Routine Not Functional */
#define ANOMALY_05000386 (ANOMALY_BF527 && __SILICON_REVISION__ < 2)
/* Programmable Preboot Settings Not Functional */
#define ANOMALY_05000387 (ANOMALY_BF527 && __SILICON_REVISION__ < 2)
/* CRC32 Checksum Support Not Functional */
#define ANOMALY_05000388 (__SILICON_REVISION__ < 2)
/* Reset Vector Must Not Be in SDRAM Memory Space */
#define ANOMALY_05000389 (
1
)
/*
New Feature: pTempCurrent Added to
ADI_BOOT_DATA Structure */
#define ANOMALY_05000392 (
1
)
/*
New Feature: dTempByteCount Value Increased
in ADI_BOOT_DATA Structure */
#define ANOMALY_05000393 (
1
)
/*
New Feature:
Log Buffer Functional
ity
*/
#define ANOMALY_05000394 (
1
)
/*
New Feature:
Hook Routine Functional
ity
*/
#define ANOMALY_05000395 (
1
)
/*
New Feature:
Header Indirect Bit */
#define ANOMALY_05000396 (
1
)
/*
New Feature:
BK_ONES, BK_ZEROS, and BK_DATECODE Constants */
#define ANOMALY_05000397 (
1
)
/*
New Feature:
SWRESET, DFRESET and WDRESET Bits
Added to
SYSCR Register */
#define ANOMALY_05000398 (
1
)
/*
New Feature:
BCODE_NOBOOT
Added to
BCODE Field of SYSCR Register */
#define ANOMALY_05000399 (
1
)
#define ANOMALY_05000389 (
ANOMALY_BF527 && __SILICON_REVISION__ < 2
)
/*
pTempCurrent Not Present in
ADI_BOOT_DATA Structure */
#define ANOMALY_05000392 (
ANOMALY_BF527 && __SILICON_REVISION__ < 2
)
/*
Deprecated Value of dTempByteCount
in ADI_BOOT_DATA Structure */
#define ANOMALY_05000393 (
ANOMALY_BF527 && __SILICON_REVISION__ < 2
)
/* Log Buffer
Not
Functional */
#define ANOMALY_05000394 (
ANOMALY_BF527 && __SILICON_REVISION__ < 2
)
/* Hook Routine
Not
Functional */
#define ANOMALY_05000395 (
ANOMALY_BF527 && __SILICON_REVISION__ < 2
)
/* Header Indirect Bit
Not Functional
*/
#define ANOMALY_05000396 (
ANOMALY_BF527 && __SILICON_REVISION__ < 2
)
/* BK_ONES, BK_ZEROS, and BK_DATECODE Constants
Not Functional
*/
#define ANOMALY_05000397 (
ANOMALY_BF527 && __SILICON_REVISION__ < 2
)
/* SWRESET, DFRESET and WDRESET Bits
in the
SYSCR Register
Not Functional
*/
#define ANOMALY_05000398 (
ANOMALY_BF527 && __SILICON_REVISION__ < 2
)
/* BCODE_NOBOOT
in
BCODE Field of SYSCR Register
Not Functional
*/
#define ANOMALY_05000399 (
ANOMALY_BF527 && __SILICON_REVISION__ < 2
)
/* PPI Data Signals D0 and D8 do not Tristate After Disabling PPI */
#define ANOMALY_05000401 (1)
#define ANOMALY_05000401 (__SILICON_REVISION__ < 2)
/* Level-Sensitive External GPIO Wakeups May Cause Indefinite Stall */
#define ANOMALY_05000403 (__SILICON_REVISION__ < 2)
/* Lockbox SESR Disallows Certain User Interrupts */
#define ANOMALY_05000404 (__SILICON_REVISION__ < 2)
/* Lockbox SESR Firmware Does Not Save/Restore Full Context */
#define ANOMALY_05000405 (1)
/* Lockbox SESR Firmware Arguments Are Not Retained After First Initialization */
#define ANOMALY_05000407 (__SILICON_REVISION__ < 2)
/* Lockbox Firmware Memory Cleanup Routine Does not Clear Registers */
#define ANOMALY_05000408 (1)
/* Lockbox firmware leaves MDMA0 channel enabled */
#define ANOMALY_05000409 (__SILICON_REVISION__ < 2)
/* Incorrect Default Internal Voltage Regulator Setting */
#define ANOMALY_05000410 (ANOMALY_BF527 && __SILICON_REVISION__ < 2)
/* bfrom_SysControl() Firmware Function Cannot be Used to Enter Power Saving Modes */
#define ANOMALY_05000411 (__SILICON_REVISION__ < 2)
/* OTP_CHECK_FOR_PREV_WRITE Bit is Not Functional in bfrom_OtpWrite() API */
#define ANOMALY_05000414 (__SILICON_REVISION__ < 2)
/* DEB2_URGENT Bit Not Functional */
#define ANOMALY_05000415 (__SILICON_REVISION__ < 2)
/* Speculative Fetches Can Cause Undesired External FIFO Operations */
#define ANOMALY_05000416 (1)
/* SPORT0 Ignores External TSCLK0 on PG14 When TMR6 is an Output */
#define ANOMALY_05000417 (ANOMALY_BF527 && __SILICON_REVISION__ < 2)
/* tSFSPE and tHFSPE Do Not Meet Data Sheet Specifications */
#define ANOMALY_05000418 (__SILICON_REVISION__ < 2)
/* USB PLL_STABLE Bit May Not Accurately Reflect the USB PLL's Status */
#define ANOMALY_05000420 (__SILICON_REVISION__ < 2)
/* TWI Fall Time (Tof) May Violate the Minimum I2C Specification */
#define ANOMALY_05000421 (1)
/* TWI Input Capacitance (Ci) May Violate the Maximum I2C Specification */
#define ANOMALY_05000422 (ANOMALY_BF527 && __SILICON_REVISION__ > 1)
/* Certain Ethernet Frames With Errors are Misclassified in RMII Mode */
#define ANOMALY_05000423 (__SILICON_REVISION__ < 2)
/* Internal Voltage Regulator Not Trimmed */
#define ANOMALY_05000424 (ANOMALY_BF527 && __SILICON_REVISION__ < 2)
/* Multichannel SPORT Channel Misalignment Under Specific Configuration */
#define ANOMALY_05000425 (__SILICON_REVISION__ < 2)
/* Speculative Fetches of Indirect-Pointer Instructions Can Cause Spurious Hardware Errors */
#define ANOMALY_05000426 (1)
/* WB_EDGE Bit in NFC_IRQSTAT Incorrectly Reflects Buffer Status Instead of IRQ Status */
#define ANOMALY_05000429 (__SILICON_REVISION__ < 2)
/* Software System Reset Corrupts PLL_LOCKCNT Register */
#define ANOMALY_05000430 (ANOMALY_BF527 && __SILICON_REVISION__ > 1)
/* bfrom_SysControl() Does Not Clear SIC_IWR1 Before Executing PLL Programming Sequence */
#define ANOMALY_05000432 (ANOMALY_BF526)
/* Certain SIC Registers are not Reset After Soft or Core Double Fault Reset */
#define ANOMALY_05000435 ((ANOMALY_BF526 && __SILICON_REVISION__ < 1) || ANOMALY_BF527)
/* IFLUSH Instruction at End of Hardware Loop Causes Infinite Stall */
#define ANOMALY_05000443 (1)
/* Anomalies that don't exist on this proc */
#define ANOMALY_05000125 (0)
...
...
@@ -95,10 +167,12 @@
#define ANOMALY_05000263 (0)
#define ANOMALY_05000266 (0)
#define ANOMALY_05000273 (0)
#define ANOMALY_05000285 (0)
#define ANOMALY_05000307 (0)
#define ANOMALY_05000311 (0)
#define ANOMALY_05000312 (0)
#define ANOMALY_05000323 (0)
#define ANOMALY_05000353 (1)
#define ANOMALY_05000363 (0)
#define ANOMALY_05000412 (0)
#endif
include/asm-blackfin/mach-bf533/anomaly.h
View file @
04563939
...
...
@@ -7,7 +7,7 @@
*/
/* This file shoule be up to date with:
* - Revision
C
, 0
2/0
8/2008; ADSP-BF531/BF532/BF533 Blackfin Processor Anomaly List
* - Revision
E
, 0
9/1
8/2008; ADSP-BF531/BF532/BF533 Blackfin Processor Anomaly List
*/
#ifndef _MACH_ANOMALY_H_
...
...
@@ -97,11 +97,11 @@
/* 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
)
#define ANOMALY_05000233 (__SILICON_REVISION__ <
6
)
/* 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
)
#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 */
...
...
@@ -131,7 +131,7 @@
/* 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
)
#define ANOMALY_05000265 (
1
)
/* 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 */
...
...
@@ -141,23 +141,23 @@
/* 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
)