aboutsummaryrefslogtreecommitdiffstats
path: root/arch/blackfin/mach-bf548
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2008-10-13 13:08:43 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2008-10-13 13:08:43 -0400
commit54cebc68c81eacac41a21bdfe99dc889d3882c60 (patch)
treeda1d3872c6ddf208768e784bd1ea09054a81462d /arch/blackfin/mach-bf548
parentfffdedef691a0f6fa7ca1fc0a2a508cbb49def69 (diff)
parent71de1f8a6365ea65346881e526132563d93696d1 (diff)
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: (60 commits) Blackfin arch: make sure we include the fix for SPORT hysteresis when reprogramming clocks Blackfin arch: Fix bogus str_ident check in gpio code Blackfin arch: AD7879 Touchscreen driver Blackfin arch: introducing bfin_addr_dcachable Blackfin arch: fix a typo in comments Blackfin arch: Remove useless head file Blackfin arch: make sure L2 start and length are always defined (fixes building on BF542) Blackfin arch: use the Blackfin on-chip ROM to do software reset when possible Blackfin arch: update anomaly headers to match the latest sheet Blackfin arch: bfin_reset() is an internal reboot function ... everyone should go through machine_restart() Blackfin arch: print out error/warning if you are running on the incorrect CPU type Blackfin arch: remove non-bf54x ifdef logic since this file is only compiled on bf54x parts Blackfin arch: update board defconfigs Blackfin arch: Add optional verbose debug Blackfin arch: emulate a TTY over the EMUDAT/JTAG interface Blackfin arch: have is_user_addr_valid() check for overflows (like when address is -1) Blackfin arch: ptrace - fix off-by-one check on end of memory regions Blackfin arch: Enable framebuffer support for the BF526-EZkit TFT LCD display Blackfin arch: flash memory map and dm9000 resources updating Blackfin arch: early prink code still use uart core console functions to parse and set configure option string ...
Diffstat (limited to 'arch/blackfin/mach-bf548')
-rw-r--r--arch/blackfin/mach-bf548/boards/cm_bf548.c22
-rw-r--r--arch/blackfin/mach-bf548/boards/ezkit.c58
-rw-r--r--arch/blackfin/mach-bf548/head.S52
-rw-r--r--arch/blackfin/mach-bf548/include/mach/anomaly.h93
-rw-r--r--arch/blackfin/mach-bf548/include/mach/bf548.h25
-rw-r--r--arch/blackfin/mach-bf548/include/mach/mem_map.h14
6 files changed, 177 insertions, 87 deletions
diff --git a/arch/blackfin/mach-bf548/boards/cm_bf548.c b/arch/blackfin/mach-bf548/boards/cm_bf548.c
index ce934ee174e0..24192aaa9275 100644
--- a/arch/blackfin/mach-bf548/boards/cm_bf548.c
+++ b/arch/blackfin/mach-bf548/boards/cm_bf548.c
@@ -36,11 +36,8 @@
36#include <linux/spi/flash.h> 36#include <linux/spi/flash.h>
37#include <linux/irq.h> 37#include <linux/irq.h>
38#include <linux/interrupt.h> 38#include <linux/interrupt.h>
39#if defined(CONFIG_USB_MUSB_HDRC) || defined(CONFIG_USB_MUSB_HDRC_MODULE)
40#include <linux/usb/musb.h> 39#include <linux/usb/musb.h>
41#endif
42#include <asm/bfin5xx_spi.h> 40#include <asm/bfin5xx_spi.h>
43#include <asm/cplb.h>
44#include <asm/dma.h> 41#include <asm/dma.h>
45#include <asm/gpio.h> 42#include <asm/gpio.h>
46#include <asm/nand.h> 43#include <asm/nand.h>
@@ -175,6 +172,7 @@ static struct resource bfin_uart_resources[] = {
175 { 172 {
176 .start = 0xFFC03100, 173 .start = 0xFFC03100,
177 .end = 0xFFC031FF, 174 .end = 0xFFC031FF,
175 .flags = IORESOURCE_MEM,
178 }, 176 },
179#endif 177#endif
180}; 178};
@@ -268,6 +266,16 @@ static struct resource musb_resources[] = {
268 }, 266 },
269}; 267};
270 268
269static struct musb_hdrc_config musb_config = {
270 .multipoint = 0,
271 .dyn_fifo = 0,
272 .soft_con = 1,
273 .dma = 1,
274 .num_eps = 7,
275 .dma_channels = 7,
276 .gpio_vrsel = GPIO_PH6,
277};
278
271static struct musb_hdrc_platform_data musb_plat = { 279static struct musb_hdrc_platform_data musb_plat = {
272#if defined(CONFIG_USB_MUSB_OTG) 280#if defined(CONFIG_USB_MUSB_OTG)
273 .mode = MUSB_OTG, 281 .mode = MUSB_OTG,
@@ -276,7 +284,7 @@ static struct musb_hdrc_platform_data musb_plat = {
276#elif defined(CONFIG_USB_GADGET_MUSB_HDRC) 284#elif defined(CONFIG_USB_GADGET_MUSB_HDRC)
277 .mode = MUSB_PERIPHERAL, 285 .mode = MUSB_PERIPHERAL,
278#endif 286#endif
279 .multipoint = 0, 287 .config = &musb_config,
280}; 288};
281 289
282static u64 musb_dmamask = ~(u32)0; 290static u64 musb_dmamask = ~(u32)0;
@@ -321,12 +329,12 @@ static struct mtd_partition partition_info[] = {
321 { 329 {
322 .name = "linux kernel(nand)", 330 .name = "linux kernel(nand)",
323 .offset = 0, 331 .offset = 0,
324 .size = 4 * SIZE_1M, 332 .size = 4 * 1024 * 1024,
325 }, 333 },
326 { 334 {
327 .name = "file system(nand)", 335 .name = "file system(nand)",
328 .offset = 4 * SIZE_1M, 336 .offset = 4 * 1024 * 1024,
329 .size = (256 - 4) * SIZE_1M, 337 .size = (256 - 4) * 1024 * 1024,
330 }, 338 },
331}; 339};
332 340
diff --git a/arch/blackfin/mach-bf548/boards/ezkit.c b/arch/blackfin/mach-bf548/boards/ezkit.c
index 39357693046d..5288187a3ace 100644
--- a/arch/blackfin/mach-bf548/boards/ezkit.c
+++ b/arch/blackfin/mach-bf548/boards/ezkit.c
@@ -38,11 +38,8 @@
38#include <linux/irq.h> 38#include <linux/irq.h>
39#include <linux/i2c.h> 39#include <linux/i2c.h>
40#include <linux/interrupt.h> 40#include <linux/interrupt.h>
41#if defined(CONFIG_USB_MUSB_HDRC) || defined(CONFIG_USB_MUSB_HDRC_MODULE)
42#include <linux/usb/musb.h> 41#include <linux/usb/musb.h>
43#endif
44#include <asm/bfin5xx_spi.h> 42#include <asm/bfin5xx_spi.h>
45#include <asm/cplb.h>
46#include <asm/dma.h> 43#include <asm/dma.h>
47#include <asm/gpio.h> 44#include <asm/gpio.h>
48#include <asm/nand.h> 45#include <asm/nand.h>
@@ -186,6 +183,37 @@ static struct platform_device bf54x_kpad_device = {
186}; 183};
187#endif 184#endif
188 185
186#if defined(CONFIG_JOYSTICK_BFIN_ROTARY) || defined(CONFIG_JOYSTICK_BFIN_ROTARY_MODULE)
187#include <asm/bfin_rotary.h>
188
189static struct bfin_rotary_platform_data bfin_rotary_data = {
190 /*.rotary_up_key = KEY_UP,*/
191 /*.rotary_down_key = KEY_DOWN,*/
192 .rotary_rel_code = REL_WHEEL,
193 .rotary_button_key = KEY_ENTER,
194 .debounce = 10, /* 0..17 */
195 .mode = ROT_QUAD_ENC | ROT_DEBE,
196};
197
198static struct resource bfin_rotary_resources[] = {
199 {
200 .start = IRQ_CNT,
201 .end = IRQ_CNT,
202 .flags = IORESOURCE_IRQ,
203 },
204};
205
206static struct platform_device bfin_rotary_device = {
207 .name = "bfin-rotary",
208 .id = -1,
209 .num_resources = ARRAY_SIZE(bfin_rotary_resources),
210 .resource = bfin_rotary_resources,
211 .dev = {
212 .platform_data = &bfin_rotary_data,
213 },
214};
215#endif
216
189#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE) 217#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
190static struct platform_device rtc_device = { 218static struct platform_device rtc_device = {
191 .name = "rtc-bfin", 219 .name = "rtc-bfin",
@@ -314,6 +342,16 @@ static struct resource musb_resources[] = {
314 }, 342 },
315}; 343};
316 344
345static struct musb_hdrc_config musb_config = {
346 .multipoint = 0,
347 .dyn_fifo = 0,
348 .soft_con = 1,
349 .dma = 1,
350 .num_eps = 7,
351 .dma_channels = 7,
352 .gpio_vrsel = GPIO_PE7,
353};
354
317static struct musb_hdrc_platform_data musb_plat = { 355static struct musb_hdrc_platform_data musb_plat = {
318#if defined(CONFIG_USB_MUSB_OTG) 356#if defined(CONFIG_USB_MUSB_OTG)
319 .mode = MUSB_OTG, 357 .mode = MUSB_OTG,
@@ -322,7 +360,7 @@ static struct musb_hdrc_platform_data musb_plat = {
322#elif defined(CONFIG_USB_GADGET_MUSB_HDRC) 360#elif defined(CONFIG_USB_GADGET_MUSB_HDRC)
323 .mode = MUSB_PERIPHERAL, 361 .mode = MUSB_PERIPHERAL,
324#endif 362#endif
325 .multipoint = 0, 363 .config = &musb_config,
326}; 364};
327 365
328static u64 musb_dmamask = ~(u32)0; 366static u64 musb_dmamask = ~(u32)0;
@@ -367,7 +405,7 @@ static struct mtd_partition partition_info[] = {
367 { 405 {
368 .name = "linux kernel(nand)", 406 .name = "linux kernel(nand)",
369 .offset = 0, 407 .offset = 0,
370 .size = 4 * SIZE_1M, 408 .size = 4 * 1024 * 1024,
371 }, 409 },
372 { 410 {
373 .name = "file system(nand)", 411 .name = "file system(nand)",
@@ -424,7 +462,7 @@ static struct mtd_partition ezkit_partitions[] = {
424 .offset = 0, 462 .offset = 0,
425 }, { 463 }, {
426 .name = "linux kernel(nor)", 464 .name = "linux kernel(nor)",
427 .size = 0x1C0000, 465 .size = 0x400000,
428 .offset = MTDPART_OFS_APPEND, 466 .offset = MTDPART_OFS_APPEND,
429 }, { 467 }, {
430 .name = "file system(nor)", 468 .name = "file system(nor)",
@@ -441,7 +479,7 @@ static struct physmap_flash_data ezkit_flash_data = {
441 479
442static struct resource ezkit_flash_resource = { 480static struct resource ezkit_flash_resource = {
443 .start = 0x20000000, 481 .start = 0x20000000,
444 .end = 0x20ffffff, 482 .end = 0x21ffffff,
445 .flags = IORESOURCE_MEM, 483 .flags = IORESOURCE_MEM,
446}; 484};
447 485
@@ -551,7 +589,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
551{ 589{
552 .modalias = "ad7877", 590 .modalias = "ad7877",
553 .platform_data = &bfin_ad7877_ts_info, 591 .platform_data = &bfin_ad7877_ts_info,
554 .irq = IRQ_PJ11, 592 .irq = IRQ_PJ11, /* newer boards (Rev 1.4+) use IRQ_PB4 */
555 .max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */ 593 .max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */
556 .bus_num = 0, 594 .bus_num = 0,
557 .chip_select = 2, 595 .chip_select = 2,
@@ -810,6 +848,10 @@ static struct platform_device *ezkit_devices[] __initdata = {
810 &bf54x_kpad_device, 848 &bf54x_kpad_device,
811#endif 849#endif
812 850
851#if defined(CONFIG_JOYSTICK_BFIN_ROTARY) || defined(CONFIG_JOYSTICK_BFIN_ROTARY_MODULE)
852 &bfin_rotary_device,
853#endif
854
813#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE) 855#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE)
814 &i2c_bfin_twi0_device, 856 &i2c_bfin_twi0_device,
815#if !defined(CONFIG_BF542) 857#if !defined(CONFIG_BF542)
diff --git a/arch/blackfin/mach-bf548/head.S b/arch/blackfin/mach-bf548/head.S
index 4d5cfeacb123..051b05c88027 100644
--- a/arch/blackfin/mach-bf548/head.S
+++ b/arch/blackfin/mach-bf548/head.S
@@ -73,25 +73,19 @@ ENTRY(_start_dma_code)
73 w[p0] = r0.l; 73 w[p0] = r0.l;
74 ssync; 74 ssync;
75 75
76#if defined(CONFIG_BF54x) 76 /* enable self refresh via SRREQ */
77 P2.H = hi(EBIU_RSTCTL); 77 P2.H = hi(EBIU_RSTCTL);
78 P2.L = lo(EBIU_RSTCTL); 78 P2.L = lo(EBIU_RSTCTL);
79 R0 = [P2]; 79 R0 = [P2];
80 BITSET (R0, 3); 80 BITSET (R0, 3);
81#else
82 P2.H = hi(EBIU_SDGCTL);
83 P2.L = lo(EBIU_SDGCTL);
84 R0 = [P2];
85 BITSET (R0, 24);
86#endif
87 [P2] = R0; 81 [P2] = R0;
88 SSYNC; 82 SSYNC;
89#if defined(CONFIG_BF54x) 83
84 /* wait for SRACK bit to be set */
90.LSRR_MODE: 85.LSRR_MODE:
91 R0 = [P2]; 86 R0 = [P2];
92 CC = BITTST(R0, 4); 87 CC = BITTST(R0, 4);
93 if !CC JUMP .LSRR_MODE; 88 if !CC JUMP .LSRR_MODE;
94#endif
95 89
96 r0 = CONFIG_VCO_MULT & 63; /* Load the VCO multiplier */ 90 r0 = CONFIG_VCO_MULT & 63; /* Load the VCO multiplier */
97 r0 = r0 << 9; /* Shift it over, */ 91 r0 = r0 << 9; /* Shift it over, */
@@ -100,6 +94,9 @@ ENTRY(_start_dma_code)
100 r1 = PLL_BYPASS; /* Bypass the PLL? */ 94 r1 = PLL_BYPASS; /* Bypass the PLL? */
101 r1 = r1 << 8; /* Shift it over */ 95 r1 = r1 << 8; /* Shift it over */
102 r0 = r1 | r0; /* add them all together */ 96 r0 = r1 | r0; /* add them all together */
97#ifdef ANOMALY_05000265
98 r0 = BITSET(r0, 15); /* Add 250 mV of hysteresis to SPORT input pins */
99#endif
103 100
104 p0.h = hi(PLL_CTL); 101 p0.h = hi(PLL_CTL);
105 p0.l = lo(PLL_CTL); /* Load the address */ 102 p0.l = lo(PLL_CTL); /* Load the address */
@@ -123,7 +120,7 @@ ENTRY(_start_dma_code)
123 w[p0] = r0.l; 120 w[p0] = r0.l;
124 ssync; 121 ssync;
125 122
126#if defined(CONFIG_BF54x) 123 /* disable self refresh by clearing SRREQ */
127 P2.H = hi(EBIU_RSTCTL); 124 P2.H = hi(EBIU_RSTCTL);
128 P2.L = lo(EBIU_RSTCTL); 125 P2.L = lo(EBIU_RSTCTL);
129 R0 = [P2]; 126 R0 = [P2];
@@ -155,41 +152,6 @@ ENTRY(_start_dma_code)
155 r0.h = hi(mem_DDRCTL2); 152 r0.h = hi(mem_DDRCTL2);
156 [p0] = r0; 153 [p0] = r0;
157 ssync; 154 ssync;
158#else
159 p0.l = lo(EBIU_SDRRC);
160 p0.h = hi(EBIU_SDRRC);
161 r0 = mem_SDRRC;
162 w[p0] = r0.l;
163 ssync;
164
165 p0.l = LO(EBIU_SDBCTL);
166 p0.h = HI(EBIU_SDBCTL); /* SDRAM Memory Bank Control Register */
167 r0 = mem_SDBCTL;
168 w[p0] = r0.l;
169 ssync;
170
171 P2.H = hi(EBIU_SDGCTL);
172 P2.L = lo(EBIU_SDGCTL);
173 R0 = [P2];
174 BITCLR (R0, 24);
175 p0.h = hi(EBIU_SDSTAT);
176 p0.l = lo(EBIU_SDSTAT);
177 r2.l = w[p0];
178 cc = bittst(r2,3);
179 if !cc jump .Lskip;
180 NOP;
181 BITSET (R0, 23);
182.Lskip:
183 [P2] = R0;
184 SSYNC;
185
186 R0.L = lo(mem_SDGCTL);
187 R0.H = hi(mem_SDGCTL);
188 R1 = [p2];
189 R1 = R1 | R0;
190 [P2] = R1;
191 SSYNC;
192#endif
193 155
194 RTS; 156 RTS;
195ENDPROC(_start_dma_code) 157ENDPROC(_start_dma_code)
diff --git a/arch/blackfin/mach-bf548/include/mach/anomaly.h b/arch/blackfin/mach-bf548/include/mach/anomaly.h
index 3ad59655881a..816b09278f62 100644
--- a/arch/blackfin/mach-bf548/include/mach/anomaly.h
+++ b/arch/blackfin/mach-bf548/include/mach/anomaly.h
@@ -2,18 +2,18 @@
2 * File: include/asm-blackfin/mach-bf548/anomaly.h 2 * File: include/asm-blackfin/mach-bf548/anomaly.h
3 * Bugs: Enter bugs at http://blackfin.uclinux.org/ 3 * Bugs: Enter bugs at http://blackfin.uclinux.org/
4 * 4 *
5 * Copyright (C) 2004-2007 Analog Devices Inc. 5 * Copyright (C) 2004-2008 Analog Devices Inc.
6 * Licensed under the GPL-2 or later. 6 * Licensed under the GPL-2 or later.
7 */ 7 */
8 8
9/* This file shoule be up to date with: 9/* This file shoule be up to date with:
10 * - Revision E, 11/28/2007; ADSP-BF542/BF544/BF547/BF548/BF549 Blackfin Processor Anomaly List 10 * - Revision G, 08/07/2008; ADSP-BF542/BF544/BF547/BF548/BF549 Blackfin Processor Anomaly List
11 */ 11 */
12 12
13#ifndef _MACH_ANOMALY_H_ 13#ifndef _MACH_ANOMALY_H_
14#define _MACH_ANOMALY_H_ 14#define _MACH_ANOMALY_H_
15 15
16/* Multi-Issue Instruction with dsp32shiftimm in slot1 and P-reg Store in slot 2 Not Supported */ 16/* Multi-Issue Instruction with dsp32shiftimm in slot1 and P-reg Store in slot2 Not Supported */
17#define ANOMALY_05000074 (1) 17#define ANOMALY_05000074 (1)
18/* DMA_RUN Bit Is Not Valid after a Peripheral Receive Channel DMA Stops */ 18/* DMA_RUN Bit Is Not Valid after a Peripheral Receive Channel DMA Stops */
19#define ANOMALY_05000119 (1) 19#define ANOMALY_05000119 (1)
@@ -36,14 +36,14 @@
36/* TWI Slave Boot Mode Is Not Functional */ 36/* TWI Slave Boot Mode Is Not Functional */
37#define ANOMALY_05000324 (__SILICON_REVISION__ < 1) 37#define ANOMALY_05000324 (__SILICON_REVISION__ < 1)
38/* External FIFO Boot Mode Is Not Functional */ 38/* External FIFO Boot Mode Is Not Functional */
39#define ANOMALY_05000325 (__SILICON_REVISION__ < 1) 39#define ANOMALY_05000325 (__SILICON_REVISION__ < 2)
40/* Data Lost When Core and DMA Accesses Are Made to the USB FIFO Simultaneously */ 40/* Data Lost When Core and DMA Accesses Are Made to the USB FIFO Simultaneously */
41#define ANOMALY_05000327 (__SILICON_REVISION__ < 1) 41#define ANOMALY_05000327 (__SILICON_REVISION__ < 1)
42/* Incorrect Access of OTP_STATUS During otp_write() Function */ 42/* Incorrect Access of OTP_STATUS During otp_write() Function */
43#define ANOMALY_05000328 (__SILICON_REVISION__ < 1) 43#define ANOMALY_05000328 (__SILICON_REVISION__ < 1)
44/* Synchronous Burst Flash Boot Mode Is Not Functional */ 44/* Synchronous Burst Flash Boot Mode Is Not Functional */
45#define ANOMALY_05000329 (__SILICON_REVISION__ < 1) 45#define ANOMALY_05000329 (__SILICON_REVISION__ < 1)
46/* Host DMA Boot Mode Is Not Functional */ 46/* Host DMA Boot Modes Are Not Functional */
47#define ANOMALY_05000330 (__SILICON_REVISION__ < 1) 47#define ANOMALY_05000330 (__SILICON_REVISION__ < 1)
48/* Inadequate Timing Margins on DDR DQS to DQ and DQM Skew */ 48/* Inadequate Timing Margins on DDR DQS to DQ and DQM Skew */
49#define ANOMALY_05000334 (__SILICON_REVISION__ < 1) 49#define ANOMALY_05000334 (__SILICON_REVISION__ < 1)
@@ -61,26 +61,102 @@
61#define ANOMALY_05000344 (__SILICON_REVISION__ < 1) 61#define ANOMALY_05000344 (__SILICON_REVISION__ < 1)
62/* USB Calibration Value Is Not Intialized */ 62/* USB Calibration Value Is Not Intialized */
63#define ANOMALY_05000346 (__SILICON_REVISION__ < 1) 63#define ANOMALY_05000346 (__SILICON_REVISION__ < 1)
64/* Boot ROM Kernel Incorrectly Alters Reset Value of USB Register */ 64/* USB Calibration Value to use */
65#define ANOMALY_05000346_value 0x5411
66/* Preboot Routine Incorrectly Alters Reset Value of USB Register */
65#define ANOMALY_05000347 (__SILICON_REVISION__ < 1) 67#define ANOMALY_05000347 (__SILICON_REVISION__ < 1)
66/* Data Lost when Core Reads SDH Data FIFO */ 68/* Data Lost when Core Reads SDH Data FIFO */
67#define ANOMALY_05000349 (__SILICON_REVISION__ < 1) 69#define ANOMALY_05000349 (__SILICON_REVISION__ < 1)
68/* PLL Status Register Is Inaccurate */ 70/* PLL Status Register Is Inaccurate */
69#define ANOMALY_05000351 (__SILICON_REVISION__ < 1) 71#define ANOMALY_05000351 (__SILICON_REVISION__ < 1)
72/* bfrom_SysControl() Firmware Function Performs Improper System Reset */
73#define ANOMALY_05000353 (__SILICON_REVISION__ < 2)
74/* Regulator Programming Blocked when Hibernate Wakeup Source Remains Active */
75#define ANOMALY_05000355 (__SILICON_REVISION__ < 1)
76/* System Stalled During A Core Access To AMC While A Core Access To NFC FIFO Is Required */
77#define ANOMALY_05000356 (__SILICON_REVISION__ < 1)
70/* Serial Port (SPORT) Multichannel Transmit Failure when Channel 0 Is Disabled */ 78/* Serial Port (SPORT) Multichannel Transmit Failure when Channel 0 Is Disabled */
71#define ANOMALY_05000357 (1) 79#define ANOMALY_05000357 (1)
72/* External Memory Read Access Hangs Core With PLL Bypass */ 80/* External Memory Read Access Hangs Core With PLL Bypass */
73#define ANOMALY_05000360 (1) 81#define ANOMALY_05000360 (1)
74/* DMAs that Go Urgent during Tight Core Writes to External Memory Are Blocked */ 82/* DMAs that Go Urgent during Tight Core Writes to External Memory Are Blocked */
75#define ANOMALY_05000365 (1) 83#define ANOMALY_05000365 (1)
84/* WURESET Bit In SYSCR Register Does Not Properly Indicate Hibernate Wake-Up */
85#define ANOMALY_05000367 (__SILICON_REVISION__ < 1)
76/* Addressing Conflict between Boot ROM and Asynchronous Memory */ 86/* Addressing Conflict between Boot ROM and Asynchronous Memory */
77#define ANOMALY_05000369 (1) 87#define ANOMALY_05000369 (1)
88/* Default PLL MSEL and SSEL Settings Can Cause 400MHz Product To Violate Specifications */
89#define ANOMALY_05000370 (__SILICON_REVISION__ < 1)
78/* Possible RETS Register Corruption when Subroutine Is under 5 Cycles in Duration */ 90/* Possible RETS Register Corruption when Subroutine Is under 5 Cycles in Duration */
79#define ANOMALY_05000371 (1) 91#define ANOMALY_05000371 (__SILICON_REVISION__ < 2)
92/* USB DP/DM Data Pins May Lose State When Entering Hibernate */
93#define ANOMALY_05000372 (__SILICON_REVISION__ < 1)
80/* Mobile DDR Operation Not Functional */ 94/* Mobile DDR Operation Not Functional */
81#define ANOMALY_05000377 (1) 95#define ANOMALY_05000377 (1)
82/* Security/Authentication Speedpath Causes Authentication To Fail To Initiate */ 96/* Security/Authentication Speedpath Causes Authentication To Fail To Initiate */
83#define ANOMALY_05000378 (1) 97#define ANOMALY_05000378 (__SILICON_REVISION__ < 2)
98/* 16-Bit NAND FLASH Boot Mode Is Not Functional */
99#define ANOMALY_05000379 (1)
100/* 8-Bit NAND Flash Boot Mode Not Functional */
101#define ANOMALY_05000382 (__SILICON_REVISION__ < 1)
102/* Some ATAPI Modes Are Not Functional */
103#define ANOMALY_05000383 (1)
104/* Boot from OTP Memory Not Functional */
105#define ANOMALY_05000385 (__SILICON_REVISION__ < 1)
106/* bfrom_SysControl() Firmware Routine Not Functional */
107#define ANOMALY_05000386 (__SILICON_REVISION__ < 1)
108/* Programmable Preboot Settings Not Functional */
109#define ANOMALY_05000387 (__SILICON_REVISION__ < 1)
110/* CRC32 Checksum Support Not Functional */
111#define ANOMALY_05000388 (__SILICON_REVISION__ < 1)
112/* Reset Vector Must Not Be in SDRAM Memory Space */
113#define ANOMALY_05000389 (__SILICON_REVISION__ < 1)
114/* Changed Meaning of BCODE Field in SYSCR Register */
115#define ANOMALY_05000390 (__SILICON_REVISION__ < 1)
116/* Repeated Boot from Page-Mode or Burst-Mode Flash Memory May Fail */
117#define ANOMALY_05000391 (__SILICON_REVISION__ < 1)
118/* pTempCurrent Not Present in ADI_BOOT_DATA Structure */
119#define ANOMALY_05000392 (__SILICON_REVISION__ < 1)
120/* Deprecated Value of dTempByteCount in ADI_BOOT_DATA Structure */
121#define ANOMALY_05000393 (__SILICON_REVISION__ < 1)
122/* Log Buffer Not Functional */
123#define ANOMALY_05000394 (__SILICON_REVISION__ < 1)
124/* Hook Routine Not Functional */
125#define ANOMALY_05000395 (__SILICON_REVISION__ < 1)
126/* Header Indirect Bit Not Functional */
127#define ANOMALY_05000396 (__SILICON_REVISION__ < 1)
128/* BK_ONES, BK_ZEROS, and BK_DATECODE Constants Not Functional */
129#define ANOMALY_05000397 (__SILICON_REVISION__ < 1)
130/* Lockbox SESR Disallows Certain User Interrupts */
131#define ANOMALY_05000404 (__SILICON_REVISION__ < 2)
132/* Lockbox SESR Firmware Does Not Save/Restore Full Context */
133#define ANOMALY_05000405 (1)
134/* Lockbox SESR Argument Checking Does Not Check L2 Memory Protection Range */
135#define ANOMALY_05000406 (__SILICON_REVISION__ < 2)
136/* Lockbox SESR Firmware Arguments Are Not Retained After First Initialization */
137#define ANOMALY_05000407 (__SILICON_REVISION__ < 2)
138/* Lockbox Firmware Memory Cleanup Routine Does not Clear Registers */
139#define ANOMALY_05000408 (1)
140/* Lockbox firmware leaves MDMA0 channel enabled */
141#define ANOMALY_05000409 (__SILICON_REVISION__ < 2)
142/* bfrom_SysControl() Firmware Function Cannot be Used to Enter Power Saving Modes */
143#define ANOMALY_05000411 (__SILICON_REVISION__ < 2)
144/* NAND Boot Mode Not Compatible With Some NAND Flash Devices */
145#define ANOMALY_05000413 (__SILICON_REVISION__ < 2)
146/* OTP_CHECK_FOR_PREV_WRITE Bit is Not Functional in bfrom_OtpWrite() API */
147#define ANOMALY_05000414 (__SILICON_REVISION__ < 2)
148/* Speculative Fetches Can Cause Undesired External FIFO Operations */
149#define ANOMALY_05000416 (1)
150/* Multichannel SPORT Channel Misalignment Under Specific Configuration */
151#define ANOMALY_05000425 (1)
152/* Speculative Fetches of Indirect-Pointer Instructions Can Cause Spurious Hardware Errors */
153#define ANOMALY_05000426 (1)
154/* CORE_EPPI_PRIO bit and SYS_EPPI_PRIO bit in the HMDMA1_CONTROL register are not functional */
155#define ANOMALY_05000427 (__SILICON_REVISION__ < 2)
156/* WB_EDGE Bit in NFC_IRQSTAT Incorrectly Behaves as a Buffer Status Bit Instead of an IRQ Status Bit */
157#define ANOMALY_05000429 (__SILICON_REVISION__ < 2)
158/* Software System Reset Corrupts PLL_LOCKCNT Register */
159#define ANOMALY_05000430 (__SILICON_REVISION__ >= 2)
84 160
85/* Anomalies that don't exist on this proc */ 161/* Anomalies that don't exist on this proc */
86#define ANOMALY_05000125 (0) 162#define ANOMALY_05000125 (0)
@@ -93,6 +169,7 @@
93#define ANOMALY_05000263 (0) 169#define ANOMALY_05000263 (0)
94#define ANOMALY_05000266 (0) 170#define ANOMALY_05000266 (0)
95#define ANOMALY_05000273 (0) 171#define ANOMALY_05000273 (0)
172#define ANOMALY_05000307 (0)
96#define ANOMALY_05000311 (0) 173#define ANOMALY_05000311 (0)
97#define ANOMALY_05000323 (0) 174#define ANOMALY_05000323 (0)
98#define ANOMALY_05000363 (0) 175#define ANOMALY_05000363 (0)
diff --git a/arch/blackfin/mach-bf548/include/mach/bf548.h b/arch/blackfin/mach-bf548/include/mach/bf548.h
index e748588e8930..49f9b403d458 100644
--- a/arch/blackfin/mach-bf548/include/mach/bf548.h
+++ b/arch/blackfin/mach-bf548/include/mach/bf548.h
@@ -30,8 +30,6 @@
30#ifndef __MACH_BF548_H__ 30#ifndef __MACH_BF548_H__
31#define __MACH_BF548_H__ 31#define __MACH_BF548_H__
32 32
33#define SUPPORTED_REVID 0
34
35#define OFFSET_(x) ((x) & 0x0000FFFF) 33#define OFFSET_(x) ((x) & 0x0000FFFF)
36 34
37/*some misc defines*/ 35/*some misc defines*/
@@ -108,20 +106,23 @@
108 106
109#if defined(CONFIG_BF542) 107#if defined(CONFIG_BF542)
110# define CPU "BF542" 108# define CPU "BF542"
111# define CPUID 0x027c8000 109# define CPUID 0x27de
112#elif defined(CONFIG_BF544) 110#elif defined(CONFIG_BF544)
113# define CPU "BF544" 111# define CPU "BF544"
114# define CPUID 0x027c8000 112# define CPUID 0x27de
115#elif defined(CONFIG_BF547) 113#elif defined(CONFIG_BF547)
116# define CPU "BF547" 114# define CPU "BF547"
115# define CPUID 0x27de
117#elif defined(CONFIG_BF548) 116#elif defined(CONFIG_BF548)
118# define CPU "BF548" 117# define CPU "BF548"
119# define CPUID 0x027c6000 118# define CPUID 0x27de
120#elif defined(CONFIG_BF549) 119#elif defined(CONFIG_BF549)
121# define CPU "BF549" 120# define CPU "BF549"
122#else 121# define CPUID 0x27de
123# define CPU "UNKNOWN" 122#endif
124# define CPUID 0x0 123
124#ifndef CPU
125#error Unknown CPU type - This kernel doesn't seem to be configured properly
125#endif 126#endif
126 127
127#endif /* __MACH_BF48_H__ */ 128#endif /* __MACH_BF48_H__ */
diff --git a/arch/blackfin/mach-bf548/include/mach/mem_map.h b/arch/blackfin/mach-bf548/include/mach/mem_map.h
index f99f47bc3a07..a2228428dc06 100644
--- a/arch/blackfin/mach-bf548/include/mach/mem_map.h
+++ b/arch/blackfin/mach-bf548/include/mach/mem_map.h
@@ -94,13 +94,13 @@
94#endif /*CONFIG_BFIN_DCACHE*/ 94#endif /*CONFIG_BFIN_DCACHE*/
95 95
96/* Level 2 Memory */ 96/* Level 2 Memory */
97#if !defined(CONFIG_BF542) 97#define L2_START 0xFEB00000
98# define L2_START 0xFEB00000 98#if defined(CONFIG_BF542)
99# if defined(CONFIG_BF544) 99# define L2_LENGTH 0
100# define L2_LENGTH 0x10000 100#elif defined(CONFIG_BF544)
101# else 101# define L2_LENGTH 0x10000
102# define L2_LENGTH 0x20000 102#else
103# endif 103# define L2_LENGTH 0x20000
104#endif 104#endif
105 105
106/* Scratch Pad Memory */ 106/* Scratch Pad Memory */