diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-10-13 13:08:43 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-10-13 13:08:43 -0400 |
commit | 54cebc68c81eacac41a21bdfe99dc889d3882c60 (patch) | |
tree | da1d3872c6ddf208768e784bd1ea09054a81462d /arch/blackfin/mach-bf548 | |
parent | fffdedef691a0f6fa7ca1fc0a2a508cbb49def69 (diff) | |
parent | 71de1f8a6365ea65346881e526132563d93696d1 (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.c | 22 | ||||
-rw-r--r-- | arch/blackfin/mach-bf548/boards/ezkit.c | 58 | ||||
-rw-r--r-- | arch/blackfin/mach-bf548/head.S | 52 | ||||
-rw-r--r-- | arch/blackfin/mach-bf548/include/mach/anomaly.h | 93 | ||||
-rw-r--r-- | arch/blackfin/mach-bf548/include/mach/bf548.h | 25 | ||||
-rw-r--r-- | arch/blackfin/mach-bf548/include/mach/mem_map.h | 14 |
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 | ||
269 | static 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 | |||
271 | static struct musb_hdrc_platform_data musb_plat = { | 279 | static 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 | ||
282 | static u64 musb_dmamask = ~(u32)0; | 290 | static 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 | |||
189 | static 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 | |||
198 | static struct resource bfin_rotary_resources[] = { | ||
199 | { | ||
200 | .start = IRQ_CNT, | ||
201 | .end = IRQ_CNT, | ||
202 | .flags = IORESOURCE_IRQ, | ||
203 | }, | ||
204 | }; | ||
205 | |||
206 | static 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) |
190 | static struct platform_device rtc_device = { | 218 | static 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 | ||
345 | static 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 | |||
317 | static struct musb_hdrc_platform_data musb_plat = { | 355 | static 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 | ||
328 | static u64 musb_dmamask = ~(u32)0; | 366 | static 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 | ||
442 | static struct resource ezkit_flash_resource = { | 480 | static 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; |
195 | ENDPROC(_start_dma_code) | 157 | ENDPROC(_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 */ |