blob: 5a7986a83beea59bca33e0e7210fd7a0d0ff0855 [file] [log] [blame]
Bryan Wu1394f032007-05-06 14:50:22 -07001/*
Mike Frysinger287050f2007-07-24 15:23:20 +08002 * File: include/asm-blackfin/mach-bf561/anomaly.h
3 * Bugs: Enter bugs at http://blackfin.uclinux.org/
Bryan Wu1394f032007-05-06 14:50:22 -07004 *
Mike Frysinger287050f2007-07-24 15:23:20 +08005 * Copyright (C) 2004-2007 Analog Devices Inc.
6 * Licensed under the GPL-2 or later.
Bryan Wu1394f032007-05-06 14:50:22 -07007 */
8
9/* This file shoule be up to date with:
Mike Frysinger287050f2007-07-24 15:23:20 +080010 * - Revision L, Aug 10, 2006; ADSP-BF561 Silicon Anomaly List
Bryan Wu1394f032007-05-06 14:50:22 -070011 */
12
13#ifndef _MACH_ANOMALY_H_
14#define _MACH_ANOMALY_H_
15
16/* We do not support 0.1 or 0.4 silicon - sorry */
17#if (defined(CONFIG_BF_REV_0_1) || defined(CONFIG_BF_REV_0_2) || defined(CONFIG_BF_REV_0_4))
18#error Kernel will not work on BF561 Version 0.1, 0.2, or 0.4
19#endif
20
21/* Issues that are common to 0.5 and 0.3 silicon */
Mike Frysinger287050f2007-07-24 15:23:20 +080022#if (defined(CONFIG_BF_REV_0_5) || defined(CONFIG_BF_REV_0_3))
Bryan Wu1394f032007-05-06 14:50:22 -070023#define ANOMALY_05000074 /* A multi issue instruction with dsp32shiftimm in
Mike Frysinger287050f2007-07-24 15:23:20 +080024 * slot1 and store of a P register in slot 2 is not
25 * supported */
Bryan Wu1394f032007-05-06 14:50:22 -070026#define ANOMALY_05000099 /* UART Line Status Register (UART_LSR) bits are not
Mike Frysinger287050f2007-07-24 15:23:20 +080027 * updated at the same time. */
Bryan Wu1394f032007-05-06 14:50:22 -070028#define ANOMALY_05000120 /* Testset instructions restricted to 32-bit aligned
Mike Frysinger287050f2007-07-24 15:23:20 +080029 * memory locations */
Bryan Wu1394f032007-05-06 14:50:22 -070030#define ANOMALY_05000122 /* Rx.H cannot be used to access 16-bit System MMR
Mike Frysinger287050f2007-07-24 15:23:20 +080031 * registers */
Bryan Wu1394f032007-05-06 14:50:22 -070032#define ANOMALY_05000127 /* Signbits instruction not functional under certain
Mike Frysinger287050f2007-07-24 15:23:20 +080033 * conditions */
Bryan Wu1394f032007-05-06 14:50:22 -070034#define ANOMALY_05000149 /* IMDMA S1/D1 channel may stall */
35#define ANOMALY_05000166 /* PPI Data Lengths Between 8 and 16 do not zero out
Mike Frysinger287050f2007-07-24 15:23:20 +080036 * upper bits */
Bryan Wu1394f032007-05-06 14:50:22 -070037#define ANOMALY_05000167 /* Turning Serial Ports on With External Frame Syncs */
38#define ANOMALY_05000180 /* PPI_DELAY not functional in PPI modes with 0 frame
Mike Frysinger287050f2007-07-24 15:23:20 +080039 * syncs */
Bryan Wu1394f032007-05-06 14:50:22 -070040#define ANOMALY_05000182 /* IMDMA does not operate to full speed for 600MHz
Mike Frysinger287050f2007-07-24 15:23:20 +080041 * and higher devices */
Bryan Wu1394f032007-05-06 14:50:22 -070042#define ANOMALY_05000187 /* IMDMA Corrupted Data after a Halt */
43#define ANOMALY_05000190 /* PPI not functional at core voltage < 1Volt */
44#define ANOMALY_05000208 /* VSTAT status bit in PLL_STAT register is not
Mike Frysinger287050f2007-07-24 15:23:20 +080045 * functional */
Bryan Wu1394f032007-05-06 14:50:22 -070046#define ANOMALY_05000245 /* Spurious Hardware Error from an access in the
Mike Frysinger287050f2007-07-24 15:23:20 +080047 * shadow of a conditional branch */
Bryan Wu1394f032007-05-06 14:50:22 -070048#define ANOMALY_05000257 /* Interrupt/Exception during short hardware loop
Mike Frysinger287050f2007-07-24 15:23:20 +080049 * may cause bad instruction fetches */
Bryan Wu1394f032007-05-06 14:50:22 -070050#define ANOMALY_05000265 /* Sensitivity to noise with slow input edge rates on
Mike Frysinger287050f2007-07-24 15:23:20 +080051 * external SPORT TX and RX clocks */
Bryan Wu1394f032007-05-06 14:50:22 -070052#define ANOMALY_05000267 /* IMDMA may corrupt data under certain conditions */
53#define ANOMALY_05000269 /* High I/O activity causes output voltage of internal
Mike Frysinger287050f2007-07-24 15:23:20 +080054 * voltage regulator (VDDint) to increase */
Bryan Wu1394f032007-05-06 14:50:22 -070055#define ANOMALY_05000270 /* High I/O activity causes output voltage of internal
Mike Frysinger287050f2007-07-24 15:23:20 +080056 * voltage regulator (VDDint) to decrease */
Bryan Wu1394f032007-05-06 14:50:22 -070057#define ANOMALY_05000272 /* Certain data cache write through modes fail for
Mike Frysinger287050f2007-07-24 15:23:20 +080058 * VDDint <=0.9V */
Bryan Wu1394f032007-05-06 14:50:22 -070059#define ANOMALY_05000274 /* Data cache write back to external synchronous memory
Mike Frysinger287050f2007-07-24 15:23:20 +080060 * may be lost */
Bryan Wu1394f032007-05-06 14:50:22 -070061#define ANOMALY_05000275 /* PPI Timing and sampling informaton updates */
62#define ANOMALY_05000312 /* Errors when SSYNC, CSYNC, or loads to LT, LB and LC
Mike Frysinger287050f2007-07-24 15:23:20 +080063 * registers are interrupted */
Bryan Wu1394f032007-05-06 14:50:22 -070064
65#endif /* (defined(CONFIG_BF_REV_0_5) || defined(CONFIG_BF_REV_0_3)) */
66
Mike Frysinger287050f2007-07-24 15:23:20 +080067#if (defined(CONFIG_BF_REV_0_5))
Bryan Wu1394f032007-05-06 14:50:22 -070068#define ANOMALY_05000254 /* Incorrect Timer Pulse Width in Single-Shot PWM_OUT
Mike Frysinger287050f2007-07-24 15:23:20 +080069 * mode with external clock */
Bryan Wu1394f032007-05-06 14:50:22 -070070#define ANOMALY_05000266 /* IMDMA destination IRQ status must be read prior to
Mike Frysinger287050f2007-07-24 15:23:20 +080071 * using IMDMA */
Bryan Wu1394f032007-05-06 14:50:22 -070072#endif
73
Mike Frysinger287050f2007-07-24 15:23:20 +080074#if (defined(CONFIG_BF_REV_0_3))
Bryan Wu1394f032007-05-06 14:50:22 -070075#define ANOMALY_05000156 /* Timers in PWM-Out Mode with PPI GP Receive (Input)
Mike Frysinger287050f2007-07-24 15:23:20 +080076 * Mode with 0 Frame Syncs */
Bryan Wu1394f032007-05-06 14:50:22 -070077#define ANOMALY_05000168 /* SDRAM auto-refresh and subsequent Power Ups */
78#define ANOMALY_05000169 /* DATA CPLB page miss can result in lost write-through
Mike Frysinger287050f2007-07-24 15:23:20 +080079 * cache data writes */
Bryan Wu1394f032007-05-06 14:50:22 -070080#define ANOMALY_05000171 /* Boot-ROM code modifies SICA_IWRx wakeup registers */
81#define ANOMALY_05000174 /* Cache Fill Buffer Data lost */
82#define ANOMALY_05000175 /* Overlapping Sequencer and Memory Stalls */
83#define ANOMALY_05000176 /* Multiplication of (-1) by (-1) followed by an
Mike Frysinger287050f2007-07-24 15:23:20 +080084 * accumulator saturation */
Bryan Wu1394f032007-05-06 14:50:22 -070085#define ANOMALY_05000179 /* PPI_COUNT cannot be programmed to 0 in General
Mike Frysinger287050f2007-07-24 15:23:20 +080086 * Purpose TX or RX modes */
Bryan Wu1394f032007-05-06 14:50:22 -070087#define ANOMALY_05000181 /* Disabling the PPI resets the PPI configuration
Mike Frysinger287050f2007-07-24 15:23:20 +080088 * registers */
Bryan Wu1394f032007-05-06 14:50:22 -070089#define ANOMALY_05000184 /* Timer Pin limitations for PPI TX Modes with
Mike Frysinger287050f2007-07-24 15:23:20 +080090 * External Frame Syncs */
Bryan Wu1394f032007-05-06 14:50:22 -070091#define ANOMALY_05000185 /* PPI TX Mode with 2 External Frame Syncs */
92#define ANOMALY_05000186 /* PPI packing with Data Length greater than 8 bits
Mike Frysinger287050f2007-07-24 15:23:20 +080093 * (not a meaningful mode) */
Bryan Wu1394f032007-05-06 14:50:22 -070094#define ANOMALY_05000188 /* IMDMA Restrictions on Descriptor and Buffer
Mike Frysinger287050f2007-07-24 15:23:20 +080095 * Placement in Memory */
Bryan Wu1394f032007-05-06 14:50:22 -070096#define ANOMALY_05000189 /* False Protection Exception */
97#define ANOMALY_05000193 /* False Flag Pin Interrupts on Edge Sensitive Inputs
Mike Frysinger287050f2007-07-24 15:23:20 +080098 * when polarity setting is changed */
Bryan Wu1394f032007-05-06 14:50:22 -070099#define ANOMALY_05000194 /* Restarting SPORT in specific modes may cause data
Mike Frysinger287050f2007-07-24 15:23:20 +0800100 * corruption */
Bryan Wu1394f032007-05-06 14:50:22 -0700101#define ANOMALY_05000198 /* Failing MMR accesses when stalled by preceding
Mike Frysinger287050f2007-07-24 15:23:20 +0800102 * memory read */
Bryan Wu1394f032007-05-06 14:50:22 -0700103#define ANOMALY_05000199 /* DMA current address shows wrong value during carry
Mike Frysinger287050f2007-07-24 15:23:20 +0800104 * fix */
Bryan Wu1394f032007-05-06 14:50:22 -0700105#define ANOMALY_05000200 /* SPORT TFS and DT are incorrectly driven during
Mike Frysinger287050f2007-07-24 15:23:20 +0800106 * inactive channels in certain conditions */
Bryan Wu1394f032007-05-06 14:50:22 -0700107#define ANOMALY_05000202 /* Possible infinite stall with specific dual-DAG
Mike Frysinger287050f2007-07-24 15:23:20 +0800108 * situation */
Bryan Wu1394f032007-05-06 14:50:22 -0700109#define ANOMALY_05000204 /* Incorrect data read with write-through cache and
Mike Frysinger287050f2007-07-24 15:23:20 +0800110 * allocate cache lines on reads only mode */
Bryan Wu1394f032007-05-06 14:50:22 -0700111#define ANOMALY_05000205 /* Specific sequence that can cause DMA error or DMA
Mike Frysinger287050f2007-07-24 15:23:20 +0800112 * stopping */
Bryan Wu1394f032007-05-06 14:50:22 -0700113#define ANOMALY_05000207 /* Recovery from "brown-out" condition */
114#define ANOMALY_05000209 /* Speed-Path in computational unit affects certain
Mike Frysinger287050f2007-07-24 15:23:20 +0800115 * instructions */
Bryan Wu1394f032007-05-06 14:50:22 -0700116#define ANOMALY_05000215 /* UART TX Interrupt masked erroneously */
117#define ANOMALY_05000219 /* NMI event at boot time results in unpredictable
Mike Frysinger287050f2007-07-24 15:23:20 +0800118 * state */
Bryan Wu1394f032007-05-06 14:50:22 -0700119#define ANOMALY_05000220 /* Data Corruption with Cached External Memory and
Mike Frysinger287050f2007-07-24 15:23:20 +0800120 * Non-Cached On-Chip L2 Memory */
Bryan Wu1394f032007-05-06 14:50:22 -0700121#define ANOMALY_05000225 /* Incorrect pulse-width of UART start-bit */
122#define ANOMALY_05000227 /* Scratchpad memory bank reads may return incorrect
Mike Frysinger287050f2007-07-24 15:23:20 +0800123 * data */
Bryan Wu1394f032007-05-06 14:50:22 -0700124#define ANOMALY_05000230 /* UART Receiver is less robust against Baudrate
Mike Frysinger287050f2007-07-24 15:23:20 +0800125 * Differences in certain Conditions */
Bryan Wu1394f032007-05-06 14:50:22 -0700126#define ANOMALY_05000231 /* UART STB bit incorrectly affects receiver setting */
127#define ANOMALY_05000232 /* SPORT data transmit lines are incorrectly driven in
Mike Frysinger287050f2007-07-24 15:23:20 +0800128 * multichannel mode */
Bryan Wu1394f032007-05-06 14:50:22 -0700129#define ANOMALY_05000242 /* DF bit in PLL_CTL register does not respond to
Mike Frysinger287050f2007-07-24 15:23:20 +0800130 * hardware reset */
Bryan Wu1394f032007-05-06 14:50:22 -0700131#define ANOMALY_05000244 /* If i-cache is on, CSYNC/SSYNC/IDLE around Change of
Mike Frysinger287050f2007-07-24 15:23:20 +0800132 * Control causes failures */
Bryan Wu1394f032007-05-06 14:50:22 -0700133#define ANOMALY_05000248 /* TESTSET operation forces stall on the other core */
134#define ANOMALY_05000250 /* Incorrect Bit-Shift of Data Word in Multichannel
Mike Frysinger287050f2007-07-24 15:23:20 +0800135 * (TDM) mode in certain conditions */
Bryan Wu1394f032007-05-06 14:50:22 -0700136#define ANOMALY_05000251 /* Exception not generated for MMR accesses in
Mike Frysinger287050f2007-07-24 15:23:20 +0800137 * reserved region */
Bryan Wu1394f032007-05-06 14:50:22 -0700138#define ANOMALY_05000253 /* Maximum external clock speed for Timers */
139#define ANOMALY_05000258 /* Instruction Cache is corrupted when bits 9 and 12
Mike Frysinger287050f2007-07-24 15:23:20 +0800140 * of the ICPLB Data registers differ */
Bryan Wu1394f032007-05-06 14:50:22 -0700141#define ANOMALY_05000260 /* ICPLB_STATUS MMR register may be corrupted */
142#define ANOMALY_05000261 /* DCPLB_FAULT_ADDR MMR register may be corrupted */
143#define ANOMALY_05000262 /* Stores to data cache may be lost */
144#define ANOMALY_05000263 /* Hardware loop corrupted when taking an ICPLB
Mike Frysinger287050f2007-07-24 15:23:20 +0800145 * exception */
Bryan Wu1394f032007-05-06 14:50:22 -0700146#define ANOMALY_05000264 /* CSYNC/SSYNC/IDLE causes infinite stall in second
Mike Frysinger287050f2007-07-24 15:23:20 +0800147 * to last instruction in hardware loop */
Bryan Wu1394f032007-05-06 14:50:22 -0700148#define ANOMALY_05000276 /* Timing requirements change for External Frame
Mike Frysinger287050f2007-07-24 15:23:20 +0800149 * Sync PPI Modes with non-zero PPI_DELAY */
Bryan Wu1394f032007-05-06 14:50:22 -0700150#define ANOMALY_05000278 /* Disabling Peripherals with DMA running may cause
Mike Frysinger287050f2007-07-24 15:23:20 +0800151 * DMA system instability */
Bryan Wu1394f032007-05-06 14:50:22 -0700152#define ANOMALY_05000281 /* False Hardware Error Exception when ISR context is
Mike Frysinger287050f2007-07-24 15:23:20 +0800153 * not restored */
Bryan Wu1394f032007-05-06 14:50:22 -0700154#define ANOMALY_05000283 /* An MMR write is stalled indefinitely when killed
Mike Frysinger287050f2007-07-24 15:23:20 +0800155 * in a particular stage */
Bryan Wu1394f032007-05-06 14:50:22 -0700156#define ANOMALY_05000287 /* A read will receive incorrect data under certain
Mike Frysinger287050f2007-07-24 15:23:20 +0800157 * conditions */
Bryan Wu1394f032007-05-06 14:50:22 -0700158#define ANOMALY_05000288 /* SPORTs may receive bad data if FIFOs fill up */
159#endif
160
161#endif /* _MACH_ANOMALY_H_ */