aboutsummaryrefslogtreecommitdiffstats
path: root/arch/blackfin/mach-bf533
diff options
context:
space:
mode:
Diffstat (limited to 'arch/blackfin/mach-bf533')
-rw-r--r--arch/blackfin/mach-bf533/boards/H8606.c34
-rw-r--r--arch/blackfin/mach-bf533/head.S3
-rw-r--r--arch/blackfin/mach-bf533/include/mach/anomaly.h49
-rw-r--r--arch/blackfin/mach-bf533/include/mach/bf533.h12
-rw-r--r--arch/blackfin/mach-bf533/include/mach/bfin_serial_5xx.h6
5 files changed, 57 insertions, 47 deletions
diff --git a/arch/blackfin/mach-bf533/boards/H8606.c b/arch/blackfin/mach-bf533/boards/H8606.c
index c66a68f30239..72ac3ac8ef76 100644
--- a/arch/blackfin/mach-bf533/boards/H8606.c
+++ b/arch/blackfin/mach-bf533/boards/H8606.c
@@ -9,7 +9,7 @@
9 * Modified: 9 * Modified:
10 * Copyright 2005 National ICT Australia (NICTA) 10 * Copyright 2005 National ICT Australia (NICTA)
11 * Copyright 2004-2006 Analog Devices Inc 11 * Copyright 2004-2006 Analog Devices Inc
12 * Copyright 2007 HV Sistemas S.L. 12 * Copyright 2007,2008 HV Sistemas S.L.
13 * 13 *
14 * Bugs: Enter bugs at http://blackfin.uclinux.org/ 14 * Bugs: Enter bugs at http://blackfin.uclinux.org/
15 * 15 *
@@ -64,18 +64,18 @@ static struct platform_device rtc_device = {
64static struct resource dm9000_resources[] = { 64static struct resource dm9000_resources[] = {
65 [0] = { 65 [0] = {
66 .start = 0x20300000, 66 .start = 0x20300000,
67 .end = 0x20300000 + 1, 67 .end = 0x20300002,
68 .flags = IORESOURCE_MEM, 68 .flags = IORESOURCE_MEM,
69 }, 69 },
70 [1] = { 70 [1] = {
71 .start = 0x20300000 + 4, 71 .start = 0x20300004,
72 .end = 0x20300000 + 5, 72 .end = 0x20300006,
73 .flags = IORESOURCE_MEM, 73 .flags = IORESOURCE_MEM,
74 }, 74 },
75 [2] = { 75 [2] = {
76 .start = IRQ_PF10, 76 .start = IRQ_PF10,
77 .end = IRQ_PF10, 77 .end = IRQ_PF10,
78 .flags = (IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE), 78 .flags = (IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE | IRQF_SHARED | IRQF_TRIGGER_HIGH),
79 }, 79 },
80}; 80};
81 81
@@ -140,18 +140,22 @@ static struct platform_device net2272_bfin_device = {
140#if defined(CONFIG_MTD_M25P80) || defined(CONFIG_MTD_M25P80_MODULE) 140#if defined(CONFIG_MTD_M25P80) || defined(CONFIG_MTD_M25P80_MODULE)
141static struct mtd_partition bfin_spi_flash_partitions[] = { 141static struct mtd_partition bfin_spi_flash_partitions[] = {
142 { 142 {
143 .name = "bootloader(spi)", 143 .name = "bootloader (spi)",
144 .size = 0x00060000, 144 .size = 0x40000,
145 .offset = 0, 145 .offset = 0,
146 .mask_flags = MTD_CAP_ROM 146 .mask_flags = MTD_CAP_ROM
147 }, { 147 }, {
148 .name = "linux kernel(spi)", 148 .name = "fpga (spi)",
149 .size = 0x100000, 149 .size = 0x30000,
150 .offset = 0x60000 150 .offset = 0x40000
151 }, { 151 }, {
152 .name = "file system(spi)", 152 .name = "linux kernel (spi)",
153 .size = 0x6a0000, 153 .size = 0x150000,
154 .offset = 0x00160000, 154 .offset = 0x70000
155 }, {
156 .name = "jffs2 root file system (spi)",
157 .size = 0x640000,
158 .offset = 0x1c0000,
155 } 159 }
156}; 160};
157 161
@@ -340,7 +344,7 @@ static struct platform_device bfin_sir_device = {
340 344
341static struct plat_serial8250_port serial8250_platform_data [] = { 345static struct plat_serial8250_port serial8250_platform_data [] = {
342 { 346 {
343 .membase = 0x20200000, 347 .membase = (void *)0x20200000,
344 .mapbase = 0x20200000, 348 .mapbase = 0x20200000,
345 .irq = IRQ_PF8, 349 .irq = IRQ_PF8,
346 .flags = UPF_BOOT_AUTOCONF | UART_CONFIG_TYPE, 350 .flags = UPF_BOOT_AUTOCONF | UART_CONFIG_TYPE,
@@ -348,7 +352,7 @@ static struct plat_serial8250_port serial8250_platform_data [] = {
348 .regshift = 1, 352 .regshift = 1,
349 .uartclk = 66666667, 353 .uartclk = 66666667,
350 }, { 354 }, {
351 .membase = 0x20200010, 355 .membase = (void *)0x20200010,
352 .mapbase = 0x20200010, 356 .mapbase = 0x20200010,
353 .irq = IRQ_PF8, 357 .irq = IRQ_PF8,
354 .flags = UPF_BOOT_AUTOCONF | UART_CONFIG_TYPE, 358 .flags = UPF_BOOT_AUTOCONF | UART_CONFIG_TYPE,
diff --git a/arch/blackfin/mach-bf533/head.S b/arch/blackfin/mach-bf533/head.S
index 01b2b7ead5ab..619685b94d90 100644
--- a/arch/blackfin/mach-bf533/head.S
+++ b/arch/blackfin/mach-bf533/head.S
@@ -78,6 +78,9 @@ ENTRY(_start_dma_code)
78 r1 = PLL_BYPASS; /* Bypass the PLL? */ 78 r1 = PLL_BYPASS; /* Bypass the PLL? */
79 r1 = r1 << 8; /* Shift it over */ 79 r1 = r1 << 8; /* Shift it over */
80 r0 = r1 | r0; /* add them all together */ 80 r0 = r1 | r0; /* add them all together */
81#ifdef ANOMALY_05000265
82 r0 = BITSET(r0, 15); /* Add 250 mV of hysteresis to SPORT input pins */
83#endif
81 84
82 p0.h = hi(PLL_CTL); 85 p0.h = hi(PLL_CTL);
83 p0.l = lo(PLL_CTL); /* Load the address */ 86 p0.l = lo(PLL_CTL); /* Load the address */
diff --git a/arch/blackfin/mach-bf533/include/mach/anomaly.h b/arch/blackfin/mach-bf533/include/mach/anomaly.h
index 8f7ea112fd3a..f544fc56959a 100644
--- a/arch/blackfin/mach-bf533/include/mach/anomaly.h
+++ b/arch/blackfin/mach-bf533/include/mach/anomaly.h
@@ -7,7 +7,7 @@
7 */ 7 */
8 8
9/* This file shoule be up to date with: 9/* This file shoule be up to date with:
10 * - Revision C, 02/08/2008; ADSP-BF531/BF532/BF533 Blackfin Processor Anomaly List 10 * - Revision D, 06/18/2008; ADSP-BF531/BF532/BF533 Blackfin Processor Anomaly List
11 */ 11 */
12 12
13#ifndef _MACH_ANOMALY_H_ 13#ifndef _MACH_ANOMALY_H_
@@ -97,11 +97,11 @@
97/* UART STB Bit Incorrectly Affects Receiver Setting */ 97/* UART STB Bit Incorrectly Affects Receiver Setting */
98#define ANOMALY_05000231 (__SILICON_REVISION__ < 5) 98#define ANOMALY_05000231 (__SILICON_REVISION__ < 5)
99/* PPI_FS3 Is Not Driven in 2 or 3 Internal Frame Sync Transmit Modes */ 99/* PPI_FS3 Is Not Driven in 2 or 3 Internal Frame Sync Transmit Modes */
100#define ANOMALY_05000233 (__SILICON_REVISION__ < 4) 100#define ANOMALY_05000233 (__SILICON_REVISION__ < 6)
101/* Incorrect Revision Number in DSPID Register */ 101/* Incorrect Revision Number in DSPID Register */
102#define ANOMALY_05000234 (__SILICON_REVISION__ == 4) 102#define ANOMALY_05000234 (__SILICON_REVISION__ == 4)
103/* DF Bit in PLL_CTL Register Does Not Respond to Hardware Reset */ 103/* DF Bit in PLL_CTL Register Does Not Respond to Hardware Reset */
104#define ANOMALY_05000242 (__SILICON_REVISION__ < 4) 104#define ANOMALY_05000242 (__SILICON_REVISION__ < 5)
105/* If I-Cache Is On, CSYNC/SSYNC/IDLE Around Change of Control Causes Failures */ 105/* If I-Cache Is On, CSYNC/SSYNC/IDLE Around Change of Control Causes Failures */
106#define ANOMALY_05000244 (__SILICON_REVISION__ < 5) 106#define ANOMALY_05000244 (__SILICON_REVISION__ < 5)
107/* Spurious Hardware Error from an Access in the Shadow of a Conditional Branch */ 107/* Spurious Hardware Error from an Access in the Shadow of a Conditional Branch */
@@ -131,7 +131,7 @@
131/* CSYNC/SSYNC/IDLE Causes Infinite Stall in Penultimate Instruction in Hardware Loop */ 131/* CSYNC/SSYNC/IDLE Causes Infinite Stall in Penultimate Instruction in Hardware Loop */
132#define ANOMALY_05000264 (__SILICON_REVISION__ < 5) 132#define ANOMALY_05000264 (__SILICON_REVISION__ < 5)
133/* Sensitivity To Noise with Slow Input Edge Rates on External SPORT TX and RX Clocks */ 133/* Sensitivity To Noise with Slow Input Edge Rates on External SPORT TX and RX Clocks */
134#define ANOMALY_05000265 (__SILICON_REVISION__ < 5) 134#define ANOMALY_05000265 (1)
135/* High I/O Activity Causes Output Voltage of Internal Voltage Regulator (Vddint) to Increase */ 135/* High I/O Activity Causes Output Voltage of Internal Voltage Regulator (Vddint) to Increase */
136#define ANOMALY_05000269 (__SILICON_REVISION__ < 5) 136#define ANOMALY_05000269 (__SILICON_REVISION__ < 5)
137/* High I/O Activity Causes Output Voltage of Internal Voltage Regulator (Vddint) to Decrease */ 137/* High I/O Activity Causes Output Voltage of Internal Voltage Regulator (Vddint) to Decrease */
@@ -141,56 +141,59 @@
141/* Certain Data Cache Writethrough Modes Fail for Vddint <= 0.9V */ 141/* Certain Data Cache Writethrough Modes Fail for Vddint <= 0.9V */
142#define ANOMALY_05000272 (1) 142#define ANOMALY_05000272 (1)
143/* Writes to Synchronous SDRAM Memory May Be Lost */ 143/* Writes to Synchronous SDRAM Memory May Be Lost */
144#define ANOMALY_05000273 (1) 144#define ANOMALY_05000273 (__SILICON_REVISION__ < 6)
145/* Timing Requirements Change for External Frame Sync PPI Modes with Non-Zero PPI_DELAY */ 145/* Timing Requirements Change for External Frame Sync PPI Modes with Non-Zero PPI_DELAY */
146#define ANOMALY_05000276 (1) 146#define ANOMALY_05000276 (1)
147/* Writes to an I/O Data Register One SCLK Cycle after an Edge Is Detected May Clear Interrupt */ 147/* Writes to an I/O Data Register One SCLK Cycle after an Edge Is Detected May Clear Interrupt */
148#define ANOMALY_05000277 (1) 148#define ANOMALY_05000277 (__SILICON_REVISION__ < 6)
149/* Disabling Peripherals with DMA Running May Cause DMA System Instability */ 149/* Disabling Peripherals with DMA Running May Cause DMA System Instability */
150#define ANOMALY_05000278 (1) 150#define ANOMALY_05000278 (__SILICON_REVISION__ < 6)
151/* False Hardware Error Exception When ISR Context Is Not Restored */ 151/* False Hardware Error Exception When ISR Context Is Not Restored */
152#define ANOMALY_05000281 (1) 152#define ANOMALY_05000281 (__SILICON_REVISION__ < 6)
153/* Memory DMA Corruption with 32-Bit Data and Traffic Control */ 153/* Memory DMA Corruption with 32-Bit Data and Traffic Control */
154#define ANOMALY_05000282 (1) 154#define ANOMALY_05000282 (__SILICON_REVISION__ < 6)
155/* System MMR Write Is Stalled Indefinitely When Killed in a Particular Stage */ 155/* System MMR Write Is Stalled Indefinitely When Killed in a Particular Stage */
156#define ANOMALY_05000283 (1) 156#define ANOMALY_05000283 (__SILICON_REVISION__ < 6)
157/* SPORTs May Receive Bad Data If FIFOs Fill Up */ 157/* SPORTs May Receive Bad Data If FIFOs Fill Up */
158#define ANOMALY_05000288 (1) 158#define ANOMALY_05000288 (__SILICON_REVISION__ < 6)
159/* Memory-To-Memory DMA Source/Destination Descriptors Must Be in Same Memory Space */ 159/* Memory-To-Memory DMA Source/Destination Descriptors Must Be in Same Memory Space */
160#define ANOMALY_05000301 (1) 160#define ANOMALY_05000301 (__SILICON_REVISION__ < 6)
161/* SSYNCs After Writes To DMA MMR Registers May Not Be Handled Correctly */ 161/* SSYNCs After Writes To DMA MMR Registers May Not Be Handled Correctly */
162#define ANOMALY_05000302 (__SILICON_REVISION__ < 5) 162#define ANOMALY_05000302 (__SILICON_REVISION__ < 5)
163/* New Feature: Additional Hysteresis on SPORT Input Pins (Not Available On Older Silicon) */ 163/* New Feature: Additional Hysteresis on SPORT Input Pins (Not Available On Older Silicon) */
164#define ANOMALY_05000305 (__SILICON_REVISION__ < 5) 164#define ANOMALY_05000305 (__SILICON_REVISION__ < 5)
165/* New Feature: Additional PPI Frame Sync Sampling Options (Not Available On Older Silicon) */ 165/* New Feature: Additional PPI Frame Sync Sampling Options (Not Available On Older Silicon) */
166#define ANOMALY_05000306 (__SILICON_REVISION__ < 5) 166#define ANOMALY_05000306 (__SILICON_REVISION__ < 5)
167/* SCKELOW Bit Does Not Maintain State Through Hibernate */
168#define ANOMALY_05000307 (1)
167/* False Hardware Errors Caused by Fetches at the Boundary of Reserved Memory */ 169/* False Hardware Errors Caused by Fetches at the Boundary of Reserved Memory */
168#define ANOMALY_05000310 (1) 170#define ANOMALY_05000310 (1)
169/* Erroneous Flag (GPIO) Pin Operations under Specific Sequences */ 171/* Erroneous Flag (GPIO) Pin Operations under Specific Sequences */
170#define ANOMALY_05000311 (1) 172#define ANOMALY_05000311 (__SILICON_REVISION__ < 6)
171/* Errors When SSYNC, CSYNC, or Loads to LT, LB and LC Registers Are Interrupted */ 173/* Errors When SSYNC, CSYNC, or Loads to LT, LB and LC Registers Are Interrupted */
172#define ANOMALY_05000312 (1) 174#define ANOMALY_05000312 (__SILICON_REVISION__ < 6)
173/* PPI Is Level-Sensitive on First Transfer */ 175/* PPI Is Level-Sensitive on First Transfer */
174#define ANOMALY_05000313 (1) 176#define ANOMALY_05000313 (__SILICON_REVISION__ < 6)
175/* Killed System MMR Write Completes Erroneously On Next System MMR Access */ 177/* Killed System MMR Write Completes Erroneously On Next System MMR Access */
176#define ANOMALY_05000315 (1) 178#define ANOMALY_05000315 (__SILICON_REVISION__ < 6)
177/* Internal Voltage Regulator Values of 1.05V, 1.10V and 1.15V Not Allowed for LQFP Packages */ 179/* Internal Voltage Regulator Values of 1.05V, 1.10V and 1.15V Not Allowed for LQFP Packages */
178#define ANOMALY_05000319 (ANOMALY_BF531 || ANOMALY_BF532) 180#define ANOMALY_05000319 ((ANOMALY_BF531 || ANOMALY_BF532) && __SILICON_REVISION__ < 6)
179/* Serial Port (SPORT) Multichannel Transmit Failure when Channel 0 Is Disabled */ 181/* Serial Port (SPORT) Multichannel Transmit Failure when Channel 0 Is Disabled */
180#define ANOMALY_05000357 (1) 182#define ANOMALY_05000357 (__SILICON_REVISION__ < 6)
181/* UART Break Signal Issues */ 183/* UART Break Signal Issues */
182#define ANOMALY_05000363 (__SILICON_REVISION__ < 5) 184#define ANOMALY_05000363 (__SILICON_REVISION__ < 5)
183/* PPI Underflow Error Goes Undetected in ITU-R 656 Mode */ 185/* PPI Underflow Error Goes Undetected in ITU-R 656 Mode */
184#define ANOMALY_05000366 (1) 186#define ANOMALY_05000366 (1)
185/* Possible RETS Register Corruption when Subroutine Is under 5 Cycles in Duration */ 187/* Possible RETS Register Corruption when Subroutine Is under 5 Cycles in Duration */
186#define ANOMALY_05000371 (1) 188#define ANOMALY_05000371 (__SILICON_REVISION__ < 6)
187/* PPI Does Not Start Properly In Specific Mode */ 189/* PPI Does Not Start Properly In Specific Mode */
188#define ANOMALY_05000400 (__SILICON_REVISION__ >= 5) 190#define ANOMALY_05000400 (__SILICON_REVISION__ == 5)
189/* SSYNC Stalls Processor when Executed from Non-Cacheable Memory */ 191/* SSYNC Stalls Processor when Executed from Non-Cacheable Memory */
190#define ANOMALY_05000402 (__SILICON_REVISION__ >= 5) 192#define ANOMALY_05000402 (__SILICON_REVISION__ == 5)
191/* Level-Sensitive External GPIO Wakeups May Cause Indefinite Stall */ 193/* Level-Sensitive External GPIO Wakeups May Cause Indefinite Stall */
192#define ANOMALY_05000403 (1) 194#define ANOMALY_05000403 (1)
193 195/* Speculative Fetches Can Cause Undesired External FIFO Operations */
196#define ANOMALY_05000416 (1)
194 197
195/* These anomalies have been "phased" out of analog.com anomaly sheets and are 198/* These anomalies have been "phased" out of analog.com anomaly sheets and are
196 * here to show running on older silicon just isn't feasible. 199 * here to show running on older silicon just isn't feasible.
@@ -268,5 +271,7 @@
268/* Anomalies that don't exist on this proc */ 271/* Anomalies that don't exist on this proc */
269#define ANOMALY_05000266 (0) 272#define ANOMALY_05000266 (0)
270#define ANOMALY_05000323 (0) 273#define ANOMALY_05000323 (0)
274#define ANOMALY_05000353 (1)
275#define ANOMALY_05000386 (1)
271 276
272#endif 277#endif
diff --git a/arch/blackfin/mach-bf533/include/mach/bf533.h b/arch/blackfin/mach-bf533/include/mach/bf533.h
index 12a416931991..dfc8c1ad2d7a 100644
--- a/arch/blackfin/mach-bf533/include/mach/bf533.h
+++ b/arch/blackfin/mach-bf533/include/mach/bf533.h
@@ -30,8 +30,6 @@
30#ifndef __MACH_BF533_H__ 30#ifndef __MACH_BF533_H__
31#define __MACH_BF533_H__ 31#define __MACH_BF533_H__
32 32
33#define SUPPORTED_REVID 2
34
35#define OFFSET_(x) ((x) & 0x0000FFFF) 33#define OFFSET_(x) ((x) & 0x0000FFFF)
36 34
37/*some misc defines*/ 35/*some misc defines*/
@@ -143,19 +141,19 @@
143 141
144#ifdef CONFIG_BF533 142#ifdef CONFIG_BF533
145#define CPU "BF533" 143#define CPU "BF533"
146#define CPUID 0x027a5000 144#define CPUID 0x27a5
147#endif 145#endif
148#ifdef CONFIG_BF532 146#ifdef CONFIG_BF532
149#define CPU "BF532" 147#define CPU "BF532"
150#define CPUID 0x0275A000 148#define CPUID 0x275A
151#endif 149#endif
152#ifdef CONFIG_BF531 150#ifdef CONFIG_BF531
153#define CPU "BF531" 151#define CPU "BF531"
154#define CPUID 0x027a5000 152#define CPUID 0x27a5
155#endif 153#endif
154
156#ifndef CPU 155#ifndef CPU
157#define CPU "UNKNOWN" 156#error Unknown CPU type - This kernel doesn't seem to be configured properly
158#define CPUID 0x0
159#endif 157#endif
160 158
161#endif /* __MACH_BF533_H__ */ 159#endif /* __MACH_BF533_H__ */
diff --git a/arch/blackfin/mach-bf533/include/mach/bfin_serial_5xx.h b/arch/blackfin/mach-bf533/include/mach/bfin_serial_5xx.h
index ebf592b59aab..34ab0e4e4242 100644
--- a/arch/blackfin/mach-bf533/include/mach/bfin_serial_5xx.h
+++ b/arch/blackfin/mach-bf533/include/mach/bfin_serial_5xx.h
@@ -69,6 +69,8 @@
69# endif 69# endif
70#endif 70#endif
71 71
72#define BFIN_UART_TX_FIFO_SIZE 2
73
72struct bfin_serial_port { 74struct bfin_serial_port {
73 struct uart_port port; 75 struct uart_port port;
74 unsigned int old_status; 76 unsigned int old_status;
@@ -83,7 +85,7 @@ struct bfin_serial_port {
83 unsigned int rx_dma_channel; 85 unsigned int rx_dma_channel;
84 struct work_struct tx_dma_workqueue; 86 struct work_struct tx_dma_workqueue;
85#else 87#else
86# if ANOMALY_05000230 88# if ANOMALY_05000363
87 unsigned int anomaly_threshold; 89 unsigned int anomaly_threshold;
88# endif 90# endif
89#endif 91#endif
@@ -111,7 +113,6 @@ static inline void UART_CLEAR_LSR(struct bfin_serial_port *uart)
111 bfin_write16(uart->port.membase + OFFSET_LSR, -1); 113 bfin_write16(uart->port.membase + OFFSET_LSR, -1);
112} 114}
113 115
114struct bfin_serial_port bfin_serial_ports[BFIN_UART_NR_PORTS];
115struct bfin_serial_res { 116struct bfin_serial_res {
116 unsigned long uart_base_addr; 117 unsigned long uart_base_addr;
117 int uart_irq; 118 int uart_irq;
@@ -142,7 +143,6 @@ struct bfin_serial_res bfin_serial_resource[] = {
142 143
143#define DRIVER_NAME "bfin-uart" 144#define DRIVER_NAME "bfin-uart"
144 145
145int nr_ports = BFIN_UART_NR_PORTS;
146static void bfin_serial_hw_init(struct bfin_serial_port *uart) 146static void bfin_serial_hw_init(struct bfin_serial_port *uart)
147{ 147{
148 148