Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 1 | /* |
Mike Frysinger | 287050f | 2007-07-24 15:23:20 +0800 | [diff] [blame^] | 2 | * File: include/asm-blackfin/mach-bf537/anomaly.h |
| 3 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ |
Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 4 | * |
Mike Frysinger | 287050f | 2007-07-24 15:23:20 +0800 | [diff] [blame^] | 5 | * Copyright (C) 2004-2007 Analog Devices Inc. |
| 6 | * Licensed under the GPL-2 or later. |
Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 7 | */ |
| 8 | |
| 9 | /* This file shoule be up to date with: |
| 10 | * - Revision J, June 1, 2006; ADSP-BF537 Blackfin Processor Anomaly List |
| 11 | * - Revision I, June 1, 2006; ADSP-BF536 Blackfin Processor Anomaly List |
| 12 | * - Revision J, June 1, 2006; ADSP-BF534 Blackfin Processor Anomaly List |
| 13 | */ |
| 14 | |
| 15 | #ifndef _MACH_ANOMALY_H_ |
| 16 | #define _MACH_ANOMALY_H_ |
| 17 | |
| 18 | /* We do not support 0.1 silicon - sorry */ |
| 19 | #if (defined(CONFIG_BF_REV_0_1)) |
| 20 | #error Kernel will not work on BF537/6/4 Version 0.1 |
| 21 | #endif |
| 22 | |
| 23 | #if (defined(CONFIG_BF_REV_0_3) || defined(CONFIG_BF_REV_0_2)) |
| 24 | #define ANOMALY_05000074 /* A multi issue instruction with dsp32shiftimm in |
Mike Frysinger | 287050f | 2007-07-24 15:23:20 +0800 | [diff] [blame^] | 25 | * slot1 and store of a P register in slot 2 is not |
| 26 | * supported */ |
Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 27 | #define ANOMALY_05000119 /* DMA_RUN bit is not valid after a Peripheral Receive |
Mike Frysinger | 287050f | 2007-07-24 15:23:20 +0800 | [diff] [blame^] | 28 | * Channel DMA stops */ |
Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 29 | #define ANOMALY_05000122 /* Rx.H can not be used to access 16-bit System MMR |
Mike Frysinger | 287050f | 2007-07-24 15:23:20 +0800 | [diff] [blame^] | 30 | * registers. */ |
Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 31 | #define ANOMALY_05000166 /* PPI Data Lengths Between 8 and 16 do not zero out |
Mike Frysinger | 287050f | 2007-07-24 15:23:20 +0800 | [diff] [blame^] | 32 | * upper bits*/ |
Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 33 | #define ANOMALY_05000180 /* PPI_DELAY not functional in PPI modes with 0 frame |
Mike Frysinger | 287050f | 2007-07-24 15:23:20 +0800 | [diff] [blame^] | 34 | * syncs */ |
Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 35 | #if (defined(CONFIG_BF537) || defined(CONFIG_BF536)) |
| 36 | #define ANOMALY_05000247 /* CLKIN Buffer Output Enable Reset Behavior Is |
Mike Frysinger | 287050f | 2007-07-24 15:23:20 +0800 | [diff] [blame^] | 37 | * Changed */ |
Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 38 | #endif |
| 39 | #define ANOMALY_05000265 /* Sensitivity to noise with slow input edge rates on |
Mike Frysinger | 287050f | 2007-07-24 15:23:20 +0800 | [diff] [blame^] | 40 | * SPORT external receive and transmit clocks. */ |
Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 41 | #define ANOMALY_05000272 /* Certain data cache write through modes fail for |
Mike Frysinger | 287050f | 2007-07-24 15:23:20 +0800 | [diff] [blame^] | 42 | * VDDint <=0.9V */ |
Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 43 | #define ANOMALY_05000273 /* Writes to Synchronous SDRAM memory may be lost */ |
| 44 | #define ANOMALY_05000277 /* Writes to a flag data register one SCLK cycle after |
Mike Frysinger | 287050f | 2007-07-24 15:23:20 +0800 | [diff] [blame^] | 45 | * an edge is detected may clear interrupt */ |
Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 46 | #define ANOMALY_05000281 /* False Hardware Error Exception when ISR context is |
Mike Frysinger | 287050f | 2007-07-24 15:23:20 +0800 | [diff] [blame^] | 47 | * not restored */ |
Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 48 | #define ANOMALY_05000282 /* Memory DMA corruption with 32-bit data and traffic |
Mike Frysinger | 287050f | 2007-07-24 15:23:20 +0800 | [diff] [blame^] | 49 | * control */ |
Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 50 | #define ANOMALY_05000283 /* A system MMR write is stalled indefinitely when |
Mike Frysinger | 287050f | 2007-07-24 15:23:20 +0800 | [diff] [blame^] | 51 | * killed in a particular stage*/ |
Robin Getz | 4bf3f3c | 2007-06-21 11:34:16 +0800 | [diff] [blame] | 52 | #define ANOMALY_05000310 /* False hardware errors caused by fetches at the |
| 53 | * boundary of reserved memory */ |
Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 54 | #define ANOMALY_05000312 /* Errors when SSYNC, CSYNC, or loads to LT, LB and LC |
Mike Frysinger | 287050f | 2007-07-24 15:23:20 +0800 | [diff] [blame^] | 55 | * registers are interrupted */ |
Robin Getz | 4bf3f3c | 2007-06-21 11:34:16 +0800 | [diff] [blame] | 56 | #define ANOMALY_05000313 /* PPI is level sensitive on first transfer */ |
| 57 | #define ANOMALY_05000322 /* EMAC RMII mode at 10-Base-T speed: RX frames not |
| 58 | * received properly */ |
Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 59 | #endif |
| 60 | |
| 61 | #if defined(CONFIG_BF_REV_0_2) |
| 62 | #define ANOMALY_05000244 /* With instruction cache enabled, a CSYNC or SSYNC or |
Mike Frysinger | 287050f | 2007-07-24 15:23:20 +0800 | [diff] [blame^] | 63 | * IDLE around a Change of Control causes |
| 64 | * unpredictable results */ |
Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 65 | #define ANOMALY_05000250 /* Incorrect Bit-Shift of Data Word in Multichannel |
Mike Frysinger | 287050f | 2007-07-24 15:23:20 +0800 | [diff] [blame^] | 66 | * (TDM) */ |
Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 67 | #if (defined(CONFIG_BF537) || defined(CONFIG_BF536)) |
| 68 | #define ANOMALY_05000252 /* EMAC Tx DMA error after an early frame abort */ |
| 69 | #endif |
| 70 | #define ANOMALY_05000253 /* Maximum external clock speed for Timers */ |
| 71 | #define ANOMALY_05000255 /* Entering Hibernate Mode with RTC Seconds event |
Mike Frysinger | 287050f | 2007-07-24 15:23:20 +0800 | [diff] [blame^] | 72 | * interrupt not functional */ |
Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 73 | #if (defined(CONFIG_BF537) || defined(CONFIG_BF536)) |
| 74 | #define ANOMALY_05000256 /* EMAC MDIO input latched on wrong MDC edge */ |
| 75 | #endif |
| 76 | #define ANOMALY_05000257 /* An interrupt or exception during short Hardware |
Mike Frysinger | 287050f | 2007-07-24 15:23:20 +0800 | [diff] [blame^] | 77 | * loops may cause the instruction fetch unit to |
| 78 | * malfunction */ |
Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 79 | #define ANOMALY_05000258 /* Instruction Cache is corrupted when bit 9 and 12 of |
Mike Frysinger | 287050f | 2007-07-24 15:23:20 +0800 | [diff] [blame^] | 80 | * the ICPLB Data registers differ */ |
Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 81 | #define ANOMALY_05000260 /* ICPLB_STATUS MMR register may be corrupted */ |
| 82 | #define ANOMALY_05000261 /* DCPLB_FAULT_ADDR MMR register may be corrupted */ |
| 83 | #define ANOMALY_05000262 /* Stores to data cache may be lost */ |
| 84 | #define ANOMALY_05000263 /* Hardware loop corrupted when taking an ICPLB exception */ |
| 85 | #define ANOMALY_05000264 /* A Sync instruction (CSYNC, SSYNC) or an IDLE |
Mike Frysinger | 287050f | 2007-07-24 15:23:20 +0800 | [diff] [blame^] | 86 | * instruction will cause an infinite stall in the |
| 87 | * second to last instruction in a hardware loop */ |
Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 88 | #define ANOMALY_05000268 /* Memory DMA error when peripheral DMA is running |
Mike Frysinger | 287050f | 2007-07-24 15:23:20 +0800 | [diff] [blame^] | 89 | * and non-zero DEB_TRAFFIC_PERIOD value */ |
Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 90 | #define ANOMALY_05000270 /* High I/O activity causes the output voltage of the |
Mike Frysinger | 287050f | 2007-07-24 15:23:20 +0800 | [diff] [blame^] | 91 | * internal voltage regulator (VDDint) to decrease */ |
Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 92 | #define ANOMALY_05000277 /* Writes to a flag data register one SCLK cycle after |
Mike Frysinger | 287050f | 2007-07-24 15:23:20 +0800 | [diff] [blame^] | 93 | * an edge is detected may clear interrupt */ |
Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 94 | #define ANOMALY_05000278 /* Disabling Peripherals with DMA running may cause |
Mike Frysinger | 287050f | 2007-07-24 15:23:20 +0800 | [diff] [blame^] | 95 | * DMA system instability */ |
Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 96 | #define ANOMALY_05000280 /* SPI Master boot mode does not work well with |
Mike Frysinger | 287050f | 2007-07-24 15:23:20 +0800 | [diff] [blame^] | 97 | * Atmel Dataflash devices */ |
Robin Getz | 4bf3f3c | 2007-06-21 11:34:16 +0800 | [diff] [blame] | 98 | #define ANOMALY_05000281 /* False Hardware Error Exception when ISR context |
| 99 | * is not restored */ |
| 100 | #define ANOMALY_05000282 /* Memory DMA corruption with 32-bit data and traffic |
| 101 | * control */ |
| 102 | #define ANOMALY_05000283 /* System MMR Write Is Stalled Indefinitely When |
| 103 | * Killed in a Particular Stage */ |
| 104 | #define ANOMALY_05000285 /* New Feature: EMAC TX DMA Word Alignment |
| 105 | * (Not Available On Older Silicon) */ |
| 106 | #define ANOMALY_05000288 /* SPORTs may receive bad data if FIFOs fill up */ |
| 107 | #define ANOMALY_05000315 /* Killed System MMR Write Completes Erroneously |
| 108 | * On Next System MMR Access */ |
| 109 | #define ANOMALY_05000316 /* EMAC RMII mode: collisions occur in Full Duplex |
| 110 | * mode */ |
| 111 | #define ANOMALY_05000321 /* EMAC RMII mode: TX frames in half duplex fail with |
| 112 | * status No Carrier */ |
Mike Frysinger | 287050f | 2007-07-24 15:23:20 +0800 | [diff] [blame^] | 113 | #endif /* CONFIG_BF_REV_0_2 */ |
Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 114 | |
| 115 | #endif /* _MACH_ANOMALY_H_ */ |