diff options
31 files changed, 1052 insertions, 268 deletions
diff --git a/arch/blackfin/Kconfig b/arch/blackfin/Kconfig index 7888551ed939..9f9de3e95826 100644 --- a/arch/blackfin/Kconfig +++ b/arch/blackfin/Kconfig | |||
| @@ -295,6 +295,12 @@ config PNAV10 | |||
| 295 | help | 295 | help |
| 296 | PNAV 1.0 board Support. | 296 | PNAV 1.0 board Support. |
| 297 | 297 | ||
| 298 | config H8606_HVSISTEMAS | ||
| 299 | bool "HV Sistemas H8606" | ||
| 300 | depends on (BF532) | ||
| 301 | help | ||
| 302 | HV Sistemas H8606 board support. | ||
| 303 | |||
| 298 | config GENERIC_BOARD | 304 | config GENERIC_BOARD |
| 299 | bool "Custom" | 305 | bool "Custom" |
| 300 | depends on (BF537 || BF536 \ | 306 | depends on (BF537 || BF536 \ |
| @@ -317,7 +323,8 @@ config MEM_MT48LC64M4A2FB_7E | |||
| 317 | config MEM_MT48LC16M16A2TG_75 | 323 | config MEM_MT48LC16M16A2TG_75 |
| 318 | bool | 324 | bool |
| 319 | depends on (BFIN533_EZKIT || BFIN561_EZKIT \ | 325 | depends on (BFIN533_EZKIT || BFIN561_EZKIT \ |
| 320 | || BFIN533_BLUETECHNIX_CM || BFIN537_BLUETECHNIX_CM) | 326 | || BFIN533_BLUETECHNIX_CM || BFIN537_BLUETECHNIX_CM \ |
| 327 | || H8606_HVSISTEMAS) | ||
| 321 | default y | 328 | default y |
| 322 | 329 | ||
| 323 | config MEM_MT48LC32M8A2_75 | 330 | config MEM_MT48LC32M8A2_75 |
| @@ -366,7 +373,7 @@ config CLKIN_HZ | |||
| 366 | int "Crystal Frequency in Hz" | 373 | int "Crystal Frequency in Hz" |
| 367 | default "11059200" if BFIN533_STAMP | 374 | default "11059200" if BFIN533_STAMP |
| 368 | default "27000000" if BFIN533_EZKIT | 375 | default "27000000" if BFIN533_EZKIT |
| 369 | default "25000000" if (BFIN537_STAMP || BFIN527_EZKIT) | 376 | default "25000000" if (BFIN537_STAMP || BFIN527_EZKIT || H8606_HVSISTEMAS) |
| 370 | default "30000000" if BFIN561_EZKIT | 377 | default "30000000" if BFIN561_EZKIT |
| 371 | default "24576000" if PNAV10 | 378 | default "24576000" if PNAV10 |
| 372 | help | 379 | help |
| @@ -404,6 +411,7 @@ config VCO_MULT | |||
| 404 | default "20" if BFIN537_BLUETECHNIX_CM | 411 | default "20" if BFIN537_BLUETECHNIX_CM |
| 405 | default "20" if BFIN561_BLUETECHNIX_CM | 412 | default "20" if BFIN561_BLUETECHNIX_CM |
| 406 | default "20" if BFIN561_EZKIT | 413 | default "20" if BFIN561_EZKIT |
| 414 | default "16" if H8606_HVSISTEMAS | ||
| 407 | help | 415 | help |
| 408 | This controls the frequency of the on-chip PLL. This can be between 1 and 64. | 416 | This controls the frequency of the on-chip PLL. This can be between 1 and 64. |
| 409 | PLL Frequency = (Crystal Frequency) * (this setting) | 417 | PLL Frequency = (Crystal Frequency) * (this setting) |
| @@ -440,6 +448,7 @@ config SCLK_DIV | |||
| 440 | default 4 if BFIN537_BLUETECHNIX_CM | 448 | default 4 if BFIN537_BLUETECHNIX_CM |
| 441 | default 4 if BFIN561_BLUETECHNIX_CM | 449 | default 4 if BFIN561_BLUETECHNIX_CM |
| 442 | default 5 if BFIN561_EZKIT | 450 | default 5 if BFIN561_EZKIT |
| 451 | default 3 if H8606_HVSISTEMAS | ||
| 443 | help | 452 | help |
| 444 | This sets the frequency of the system clock (including SDRAM or DDR). | 453 | This sets the frequency of the system clock (including SDRAM or DDR). |
| 445 | This can be between 1 and 15 | 454 | This can be between 1 and 15 |
| @@ -492,11 +501,13 @@ config MEM_SIZE | |||
| 492 | default 64 if BFIN561_EZKIT | 501 | default 64 if BFIN561_EZKIT |
| 493 | default 128 if BFIN533_STAMP | 502 | default 128 if BFIN533_STAMP |
| 494 | default 64 if PNAV10 | 503 | default 64 if PNAV10 |
| 504 | default 32 if H8606_HVSISTEMAS | ||
| 495 | 505 | ||
| 496 | config MEM_ADD_WIDTH | 506 | config MEM_ADD_WIDTH |
| 497 | int "SDRAM Memory Address Width" | 507 | int "SDRAM Memory Address Width" |
| 498 | default 9 if BFIN533_EZKIT | 508 | default 9 if BFIN533_EZKIT |
| 499 | default 9 if BFIN561_EZKIT | 509 | default 9 if BFIN561_EZKIT |
| 510 | default 9 if H8606_HVSISTEMAS | ||
| 500 | default 10 if BFIN527_EZKIT | 511 | default 10 if BFIN527_EZKIT |
| 501 | default 10 if BFIN537_STAMP | 512 | default 10 if BFIN537_STAMP |
| 502 | default 11 if BFIN533_STAMP | 513 | default 11 if BFIN533_STAMP |
diff --git a/arch/blackfin/configs/BF527-EZKIT_defconfig b/arch/blackfin/configs/BF527-EZKIT_defconfig index df974e785ee2..1f6a93df6b32 100644 --- a/arch/blackfin/configs/BF527-EZKIT_defconfig +++ b/arch/blackfin/configs/BF527-EZKIT_defconfig | |||
| @@ -244,7 +244,7 @@ CONFIG_CLKIN_HZ=25000000 | |||
| 244 | # CONFIG_BFIN_KERNEL_CLOCK is not set | 244 | # CONFIG_BFIN_KERNEL_CLOCK is not set |
| 245 | CONFIG_MAX_VCO_HZ=600000000 | 245 | CONFIG_MAX_VCO_HZ=600000000 |
| 246 | CONFIG_MIN_VCO_HZ=50000000 | 246 | CONFIG_MIN_VCO_HZ=50000000 |
| 247 | CONFIG_MAX_SCLK_HZ=133000000 | 247 | CONFIG_MAX_SCLK_HZ=133333333 |
| 248 | CONFIG_MIN_SCLK_HZ=27000000 | 248 | CONFIG_MIN_SCLK_HZ=27000000 |
| 249 | 249 | ||
| 250 | # | 250 | # |
diff --git a/arch/blackfin/configs/BF533-EZKIT_defconfig b/arch/blackfin/configs/BF533-EZKIT_defconfig index 57f58d5cd47a..9e9b420342d1 100644 --- a/arch/blackfin/configs/BF533-EZKIT_defconfig +++ b/arch/blackfin/configs/BF533-EZKIT_defconfig | |||
| @@ -198,7 +198,7 @@ CONFIG_CLKIN_HZ=27000000 | |||
| 198 | # CONFIG_BFIN_KERNEL_CLOCK is not set | 198 | # CONFIG_BFIN_KERNEL_CLOCK is not set |
| 199 | CONFIG_MAX_VCO_HZ=750000000 | 199 | CONFIG_MAX_VCO_HZ=750000000 |
| 200 | CONFIG_MIN_VCO_HZ=50000000 | 200 | CONFIG_MIN_VCO_HZ=50000000 |
| 201 | CONFIG_MAX_SCLK_HZ=133000000 | 201 | CONFIG_MAX_SCLK_HZ=133333333 |
| 202 | CONFIG_MIN_SCLK_HZ=27000000 | 202 | CONFIG_MIN_SCLK_HZ=27000000 |
| 203 | 203 | ||
| 204 | # | 204 | # |
diff --git a/arch/blackfin/configs/BF533-STAMP_defconfig b/arch/blackfin/configs/BF533-STAMP_defconfig index 306302baff06..f59ade980109 100644 --- a/arch/blackfin/configs/BF533-STAMP_defconfig +++ b/arch/blackfin/configs/BF533-STAMP_defconfig | |||
| @@ -199,7 +199,7 @@ CONFIG_CLKIN_HZ=11059200 | |||
| 199 | # CONFIG_BFIN_KERNEL_CLOCK is not set | 199 | # CONFIG_BFIN_KERNEL_CLOCK is not set |
| 200 | CONFIG_MAX_VCO_HZ=750000000 | 200 | CONFIG_MAX_VCO_HZ=750000000 |
| 201 | CONFIG_MIN_VCO_HZ=50000000 | 201 | CONFIG_MIN_VCO_HZ=50000000 |
| 202 | CONFIG_MAX_SCLK_HZ=133000000 | 202 | CONFIG_MAX_SCLK_HZ=133333333 |
| 203 | CONFIG_MIN_SCLK_HZ=27000000 | 203 | CONFIG_MIN_SCLK_HZ=27000000 |
| 204 | 204 | ||
| 205 | # | 205 | # |
diff --git a/arch/blackfin/configs/BF537-STAMP_defconfig b/arch/blackfin/configs/BF537-STAMP_defconfig index 828b604438eb..07eb63dc25e0 100644 --- a/arch/blackfin/configs/BF537-STAMP_defconfig +++ b/arch/blackfin/configs/BF537-STAMP_defconfig | |||
| @@ -206,7 +206,7 @@ CONFIG_CLKIN_HZ=25000000 | |||
| 206 | # CONFIG_BFIN_KERNEL_CLOCK is not set | 206 | # CONFIG_BFIN_KERNEL_CLOCK is not set |
| 207 | CONFIG_MAX_VCO_HZ=600000000 | 207 | CONFIG_MAX_VCO_HZ=600000000 |
| 208 | CONFIG_MIN_VCO_HZ=50000000 | 208 | CONFIG_MIN_VCO_HZ=50000000 |
| 209 | CONFIG_MAX_SCLK_HZ=133000000 | 209 | CONFIG_MAX_SCLK_HZ=133333333 |
| 210 | CONFIG_MIN_SCLK_HZ=27000000 | 210 | CONFIG_MIN_SCLK_HZ=27000000 |
| 211 | 211 | ||
| 212 | # | 212 | # |
diff --git a/arch/blackfin/configs/BF548-EZKIT_defconfig b/arch/blackfin/configs/BF548-EZKIT_defconfig index d8569888a1c8..0dd3d2253dc2 100644 --- a/arch/blackfin/configs/BF548-EZKIT_defconfig +++ b/arch/blackfin/configs/BF548-EZKIT_defconfig | |||
| @@ -1,6 +1,7 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # Linux kernel version: 2.6.22.6 | 3 | # Linux kernel version: 2.6.22.10 |
| 4 | # Sat Oct 27 02:34:07 2007 | ||
| 4 | # | 5 | # |
| 5 | # CONFIG_MMU is not set | 6 | # CONFIG_MMU is not set |
| 6 | # CONFIG_FPU is not set | 7 | # CONFIG_FPU is not set |
| @@ -64,7 +65,6 @@ CONFIG_FUTEX=y | |||
| 64 | CONFIG_ANON_INODES=y | 65 | CONFIG_ANON_INODES=y |
| 65 | CONFIG_EPOLL=y | 66 | CONFIG_EPOLL=y |
| 66 | CONFIG_SIGNALFD=y | 67 | CONFIG_SIGNALFD=y |
| 67 | CONFIG_TIMERFD=y | ||
| 68 | CONFIG_EVENTFD=y | 68 | CONFIG_EVENTFD=y |
| 69 | CONFIG_VM_EVENT_COUNTERS=y | 69 | CONFIG_VM_EVENT_COUNTERS=y |
| 70 | CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3 | 70 | CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3 |
| @@ -117,6 +117,9 @@ CONFIG_PREEMPT_VOLUNTARY=y | |||
| 117 | # | 117 | # |
| 118 | # Processor and Board Settings | 118 | # Processor and Board Settings |
| 119 | # | 119 | # |
| 120 | # CONFIG_BF522 is not set | ||
| 121 | # CONFIG_BF525 is not set | ||
| 122 | # CONFIG_BF527 is not set | ||
| 120 | # CONFIG_BF531 is not set | 123 | # CONFIG_BF531 is not set |
| 121 | # CONFIG_BF532 is not set | 124 | # CONFIG_BF532 is not set |
| 122 | # CONFIG_BF533 is not set | 125 | # CONFIG_BF533 is not set |
| @@ -129,6 +132,7 @@ CONFIG_PREEMPT_VOLUNTARY=y | |||
| 129 | CONFIG_BF549=y | 132 | CONFIG_BF549=y |
| 130 | # CONFIG_BF561 is not set | 133 | # CONFIG_BF561 is not set |
| 131 | CONFIG_BF_REV_0_0=y | 134 | CONFIG_BF_REV_0_0=y |
| 135 | # CONFIG_BF_REV_0_1 is not set | ||
| 132 | # CONFIG_BF_REV_0_2 is not set | 136 | # CONFIG_BF_REV_0_2 is not set |
| 133 | # CONFIG_BF_REV_0_3 is not set | 137 | # CONFIG_BF_REV_0_3 is not set |
| 134 | # CONFIG_BF_REV_0_4 is not set | 138 | # CONFIG_BF_REV_0_4 is not set |
| @@ -137,6 +141,7 @@ CONFIG_BF_REV_0_0=y | |||
| 137 | # CONFIG_BF_REV_NONE is not set | 141 | # CONFIG_BF_REV_NONE is not set |
| 138 | CONFIG_BF54x=y | 142 | CONFIG_BF54x=y |
| 139 | CONFIG_BFIN_SINGLE_CORE=y | 143 | CONFIG_BFIN_SINGLE_CORE=y |
| 144 | # CONFIG_BFIN527_EZKIT is not set | ||
| 140 | # CONFIG_BFIN533_EZKIT is not set | 145 | # CONFIG_BFIN533_EZKIT is not set |
| 141 | # CONFIG_BFIN533_STAMP is not set | 146 | # CONFIG_BFIN533_STAMP is not set |
| 142 | # CONFIG_BFIN537_STAMP is not set | 147 | # CONFIG_BFIN537_STAMP is not set |
| @@ -147,8 +152,23 @@ CONFIG_BFIN548_EZKIT=y | |||
| 147 | # CONFIG_BFIN561_EZKIT is not set | 152 | # CONFIG_BFIN561_EZKIT is not set |
| 148 | # CONFIG_BFIN561_TEPLA is not set | 153 | # CONFIG_BFIN561_TEPLA is not set |
| 149 | # CONFIG_PNAV10 is not set | 154 | # CONFIG_PNAV10 is not set |
| 155 | # CONFIG_H8606_HVSISTEMAS is not set | ||
| 150 | # CONFIG_GENERIC_BOARD is not set | 156 | # CONFIG_GENERIC_BOARD is not set |
| 151 | CONFIG_IRQ_PLL_WAKEUP=7 | 157 | CONFIG_IRQ_PLL_WAKEUP=7 |
| 158 | CONFIG_IRQ_RTC=8 | ||
| 159 | CONFIG_IRQ_SPORT0_RX=9 | ||
| 160 | CONFIG_IRQ_SPORT0_TX=9 | ||
| 161 | CONFIG_IRQ_SPORT1_RX=9 | ||
| 162 | CONFIG_IRQ_SPORT1_TX=9 | ||
| 163 | CONFIG_IRQ_UART0_RX=10 | ||
| 164 | CONFIG_IRQ_UART0_TX=10 | ||
| 165 | CONFIG_IRQ_UART1_RX=10 | ||
| 166 | CONFIG_IRQ_UART1_TX=10 | ||
| 167 | CONFIG_IRQ_CNT=8 | ||
| 168 | CONFIG_IRQ_USB_INT0=11 | ||
| 169 | CONFIG_IRQ_USB_INT1=11 | ||
| 170 | CONFIG_IRQ_USB_INT2=11 | ||
| 171 | CONFIG_IRQ_USB_DMA=11 | ||
| 152 | CONFIG_IRQ_TIMER0=11 | 172 | CONFIG_IRQ_TIMER0=11 |
| 153 | CONFIG_IRQ_TIMER1=11 | 173 | CONFIG_IRQ_TIMER1=11 |
| 154 | CONFIG_IRQ_TIMER2=11 | 174 | CONFIG_IRQ_TIMER2=11 |
| @@ -160,15 +180,6 @@ CONFIG_IRQ_TIMER7=11 | |||
| 160 | CONFIG_IRQ_TIMER8=11 | 180 | CONFIG_IRQ_TIMER8=11 |
| 161 | CONFIG_IRQ_TIMER9=11 | 181 | CONFIG_IRQ_TIMER9=11 |
| 162 | CONFIG_IRQ_TIMER10=11 | 182 | CONFIG_IRQ_TIMER10=11 |
| 163 | CONFIG_IRQ_RTC=8 | ||
| 164 | CONFIG_IRQ_SPORT0_RX=9 | ||
| 165 | CONFIG_IRQ_SPORT0_TX=9 | ||
| 166 | CONFIG_IRQ_SPORT1_RX=9 | ||
| 167 | CONFIG_IRQ_SPORT1_TX=9 | ||
| 168 | CONFIG_IRQ_UART0_RX=10 | ||
| 169 | CONFIG_IRQ_UART0_TX=10 | ||
| 170 | CONFIG_IRQ_UART1_RX=10 | ||
| 171 | CONFIG_IRQ_UART1_TX=10 | ||
| 172 | 183 | ||
| 173 | # | 184 | # |
| 174 | # BF548 Specific Configuration | 185 | # BF548 Specific Configuration |
| @@ -236,16 +247,11 @@ CONFIG_IRQ_PIXC_IN0=8 | |||
| 236 | CONFIG_IRQ_PIXC_IN1=8 | 247 | CONFIG_IRQ_PIXC_IN1=8 |
| 237 | CONFIG_IRQ_PIXC_OUT=8 | 248 | CONFIG_IRQ_PIXC_OUT=8 |
| 238 | CONFIG_IRQ_SDH=8 | 249 | CONFIG_IRQ_SDH=8 |
| 239 | CONFIG_IRQ_CNT=8 | ||
| 240 | CONFIG_IRQ_KEY=8 | 250 | CONFIG_IRQ_KEY=8 |
| 241 | CONFIG_IRQ_CAN1_RX=11 | 251 | CONFIG_IRQ_CAN1_RX=11 |
| 242 | CONFIG_IRQ_CAN1_TX=11 | 252 | CONFIG_IRQ_CAN1_TX=11 |
| 243 | CONFIG_IRQ_SDH_MASK0=11 | 253 | CONFIG_IRQ_SDH_MASK0=11 |
| 244 | CONFIG_IRQ_SDH_MASK1=11 | 254 | CONFIG_IRQ_SDH_MASK1=11 |
| 245 | CONFIG_IRQ_USB_INT0=11 | ||
| 246 | CONFIG_IRQ_USB_INT1=11 | ||
| 247 | CONFIG_IRQ_USB_INT2=11 | ||
| 248 | CONFIG_IRQ_USB_DMA=11 | ||
| 249 | CONFIG_IRQ_OTPSEC=11 | 255 | CONFIG_IRQ_OTPSEC=11 |
| 250 | CONFIG_IRQ_PINT2=11 | 256 | CONFIG_IRQ_PINT2=11 |
| 251 | CONFIG_IRQ_PINT3=11 | 257 | CONFIG_IRQ_PINT3=11 |
| @@ -273,9 +279,9 @@ CONFIG_PINT3_ASSIGN=0x02020303 | |||
| 273 | # | 279 | # |
| 274 | CONFIG_CLKIN_HZ=25000000 | 280 | CONFIG_CLKIN_HZ=25000000 |
| 275 | # CONFIG_BFIN_KERNEL_CLOCK is not set | 281 | # CONFIG_BFIN_KERNEL_CLOCK is not set |
| 276 | CONFIG_MAX_VCO_HZ=533000000 | 282 | CONFIG_MAX_VCO_HZ=533333333 |
| 277 | CONFIG_MIN_VCO_HZ=50000000 | 283 | CONFIG_MIN_VCO_HZ=50000000 |
| 278 | CONFIG_MAX_SCLK_HZ=133000000 | 284 | CONFIG_MAX_SCLK_HZ=133333333 |
| 279 | CONFIG_MIN_SCLK_HZ=27000000 | 285 | CONFIG_MIN_SCLK_HZ=27000000 |
| 280 | 286 | ||
| 281 | # | 287 | # |
| @@ -332,9 +338,10 @@ CONFIG_SPLIT_PTLOCK_CPUS=4 | |||
| 332 | # CONFIG_RESOURCES_64BIT is not set | 338 | # CONFIG_RESOURCES_64BIT is not set |
| 333 | CONFIG_ZONE_DMA_FLAG=1 | 339 | CONFIG_ZONE_DMA_FLAG=1 |
| 334 | CONFIG_LARGE_ALLOCS=y | 340 | CONFIG_LARGE_ALLOCS=y |
| 341 | # CONFIG_BFIN_GPTIMERS is not set | ||
| 335 | CONFIG_BFIN_DMA_5XX=y | 342 | CONFIG_BFIN_DMA_5XX=y |
| 336 | # CONFIG_DMA_UNCACHED_2M is not set | 343 | CONFIG_DMA_UNCACHED_2M=y |
| 337 | CONFIG_DMA_UNCACHED_1M=y | 344 | # CONFIG_DMA_UNCACHED_1M is not set |
| 338 | # CONFIG_DMA_UNCACHED_NONE is not set | 345 | # CONFIG_DMA_UNCACHED_NONE is not set |
| 339 | 346 | ||
| 340 | # | 347 | # |
| @@ -353,7 +360,7 @@ CONFIG_L1_MAX_PIECE=16 | |||
| 353 | # | 360 | # |
| 354 | 361 | ||
| 355 | # | 362 | # |
| 356 | # EBIU_AMBCTL Global Control | 363 | # EBIU_AMGCTL Global Control |
| 357 | # | 364 | # |
| 358 | CONFIG_C_AMCKEN=y | 365 | CONFIG_C_AMCKEN=y |
| 359 | # CONFIG_C_AMBEN is not set | 366 | # CONFIG_C_AMBEN is not set |
| @@ -722,7 +729,7 @@ CONFIG_NETDEV_10000=y | |||
| 722 | # | 729 | # |
| 723 | # Input device support | 730 | # Input device support |
| 724 | # | 731 | # |
| 725 | CONFIG_INPUT=y | 732 | CONFIG_INPUT=m |
| 726 | # CONFIG_INPUT_FF_MEMLESS is not set | 733 | # CONFIG_INPUT_FF_MEMLESS is not set |
| 727 | # CONFIG_INPUT_POLLDEV is not set | 734 | # CONFIG_INPUT_POLLDEV is not set |
| 728 | 735 | ||
| @@ -731,18 +738,39 @@ CONFIG_INPUT=y | |||
| 731 | # | 738 | # |
| 732 | # CONFIG_INPUT_MOUSEDEV is not set | 739 | # CONFIG_INPUT_MOUSEDEV is not set |
| 733 | # CONFIG_INPUT_JOYDEV is not set | 740 | # CONFIG_INPUT_JOYDEV is not set |
| 734 | # CONFIG_INPUT_TSDEV is not set | 741 | CONFIG_INPUT_TSDEV=m |
| 735 | # CONFIG_INPUT_EVDEV is not set | 742 | CONFIG_INPUT_TSDEV_SCREEN_X=240 |
| 736 | # CONFIG_INPUT_EVBUG is not set | 743 | CONFIG_INPUT_TSDEV_SCREEN_Y=320 |
| 744 | CONFIG_INPUT_EVDEV=m | ||
| 745 | CONFIG_INPUT_EVBUG=m | ||
| 737 | 746 | ||
| 738 | # | 747 | # |
| 739 | # Input Device Drivers | 748 | # Input Device Drivers |
| 740 | # | 749 | # |
| 741 | # CONFIG_INPUT_KEYBOARD is not set | 750 | CONFIG_INPUT_KEYBOARD=y |
| 751 | # CONFIG_KEYBOARD_ATKBD is not set | ||
| 752 | # CONFIG_KEYBOARD_SUNKBD is not set | ||
| 753 | # CONFIG_KEYBOARD_LKKBD is not set | ||
| 754 | # CONFIG_KEYBOARD_XTKBD is not set | ||
| 755 | # CONFIG_KEYBOARD_NEWTON is not set | ||
| 756 | # CONFIG_KEYBOARD_STOWAWAY is not set | ||
| 757 | # CONFIG_KEYBOARD_GPIO is not set | ||
| 758 | CONFIG_KEYBOARD_BFIN=m | ||
| 742 | # CONFIG_INPUT_MOUSE is not set | 759 | # CONFIG_INPUT_MOUSE is not set |
| 743 | # CONFIG_INPUT_JOYSTICK is not set | 760 | # CONFIG_INPUT_JOYSTICK is not set |
| 744 | # CONFIG_INPUT_TABLET is not set | 761 | # CONFIG_INPUT_TABLET is not set |
| 745 | # CONFIG_INPUT_TOUCHSCREEN is not set | 762 | CONFIG_INPUT_TOUCHSCREEN=y |
| 763 | # CONFIG_TOUCHSCREEN_ADS7846 is not set | ||
| 764 | CONFIG_TOUCHSCREEN_AD7877=m | ||
| 765 | # CONFIG_TOUCHSCREEN_GUNZE is not set | ||
| 766 | # CONFIG_TOUCHSCREEN_ELO is not set | ||
| 767 | # CONFIG_TOUCHSCREEN_MTOUCH is not set | ||
| 768 | # CONFIG_TOUCHSCREEN_MK712 is not set | ||
| 769 | # CONFIG_TOUCHSCREEN_PENMOUNT is not set | ||
| 770 | # CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set | ||
| 771 | # CONFIG_TOUCHSCREEN_TOUCHWIN is not set | ||
| 772 | # CONFIG_TOUCHSCREEN_UCB1400 is not set | ||
| 773 | # CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set | ||
| 746 | CONFIG_INPUT_MISC=y | 774 | CONFIG_INPUT_MISC=y |
| 747 | # CONFIG_INPUT_ATI_REMOTE is not set | 775 | # CONFIG_INPUT_ATI_REMOTE is not set |
| 748 | # CONFIG_INPUT_ATI_REMOTE2 is not set | 776 | # CONFIG_INPUT_ATI_REMOTE2 is not set |
| @@ -764,9 +792,9 @@ CONFIG_INPUT_MISC=y | |||
| 764 | # | 792 | # |
| 765 | # CONFIG_AD9960 is not set | 793 | # CONFIG_AD9960 is not set |
| 766 | # CONFIG_SPI_ADC_BF533 is not set | 794 | # CONFIG_SPI_ADC_BF533 is not set |
| 767 | # CONFIG_BFIN_PFLAGS is not set | 795 | # CONFIG_BF5xx_PFLAGS is not set |
| 768 | # CONFIG_BF5xx_PPIFCD is not set | 796 | # CONFIG_BF5xx_PPIFCD is not set |
| 769 | # CONFIG_BF5xx_TIMERS is not set | 797 | # CONFIG_BFIN_SIMPLE_TIMER is not set |
| 770 | # CONFIG_BF5xx_PPI is not set | 798 | # CONFIG_BF5xx_PPI is not set |
| 771 | # CONFIG_BFIN_SPORT is not set | 799 | # CONFIG_BFIN_SPORT is not set |
| 772 | # CONFIG_BFIN_TIMER_LATENCY is not set | 800 | # CONFIG_BFIN_TIMER_LATENCY is not set |
| @@ -958,17 +986,92 @@ CONFIG_DAB=y | |||
| 958 | # | 986 | # |
| 959 | # CONFIG_DISPLAY_SUPPORT is not set | 987 | # CONFIG_DISPLAY_SUPPORT is not set |
| 960 | # CONFIG_VGASTATE is not set | 988 | # CONFIG_VGASTATE is not set |
| 961 | # CONFIG_FB is not set | 989 | CONFIG_FB=m |
| 990 | CONFIG_FIRMWARE_EDID=y | ||
| 991 | # CONFIG_FB_DDC is not set | ||
| 992 | CONFIG_FB_CFB_FILLRECT=m | ||
| 993 | CONFIG_FB_CFB_COPYAREA=m | ||
| 994 | CONFIG_FB_CFB_IMAGEBLIT=m | ||
| 995 | # CONFIG_FB_SYS_FILLRECT is not set | ||
| 996 | # CONFIG_FB_SYS_COPYAREA is not set | ||
| 997 | # CONFIG_FB_SYS_IMAGEBLIT is not set | ||
| 998 | # CONFIG_FB_SYS_FOPS is not set | ||
| 999 | CONFIG_FB_DEFERRED_IO=y | ||
| 1000 | # CONFIG_FB_SVGALIB is not set | ||
| 1001 | # CONFIG_FB_MACMODES is not set | ||
| 1002 | # CONFIG_FB_BACKLIGHT is not set | ||
| 1003 | # CONFIG_FB_MODE_HELPERS is not set | ||
| 1004 | # CONFIG_FB_TILEBLITTING is not set | ||
| 1005 | |||
| 1006 | # | ||
| 1007 | # Frame buffer hardware drivers | ||
| 1008 | # | ||
| 1009 | # CONFIG_FB_BFIN_7171 is not set | ||
| 1010 | # CONFIG_FB_BFIN_7393 is not set | ||
| 1011 | CONFIG_FB_BF54X_LQ043=m | ||
| 1012 | # CONFIG_FB_BFIN_T350MCQB is not set | ||
| 1013 | # CONFIG_FB_S1D13XXX is not set | ||
| 1014 | # CONFIG_FB_VIRTUAL is not set | ||
| 1015 | # CONFIG_LOGO is not set | ||
| 962 | 1016 | ||
| 963 | # | 1017 | # |
| 964 | # Sound | 1018 | # Sound |
| 965 | # | 1019 | # |
| 966 | # CONFIG_SOUND is not set | 1020 | CONFIG_SOUND=y |
| 1021 | |||
| 1022 | # | ||
| 1023 | # Advanced Linux Sound Architecture | ||
| 1024 | # | ||
| 1025 | CONFIG_SND=y | ||
| 1026 | CONFIG_SND_TIMER=y | ||
| 1027 | CONFIG_SND_PCM=y | ||
| 1028 | # CONFIG_SND_SEQUENCER is not set | ||
| 1029 | CONFIG_SND_OSSEMUL=y | ||
| 1030 | CONFIG_SND_MIXER_OSS=y | ||
| 1031 | CONFIG_SND_PCM_OSS=y | ||
| 1032 | CONFIG_SND_PCM_OSS_PLUGINS=y | ||
| 1033 | # CONFIG_SND_DYNAMIC_MINORS is not set | ||
| 1034 | CONFIG_SND_SUPPORT_OLD_API=y | ||
| 1035 | CONFIG_SND_VERBOSE_PROCFS=y | ||
| 1036 | # CONFIG_SND_VERBOSE_PRINTK is not set | ||
| 1037 | # CONFIG_SND_DEBUG is not set | ||
| 1038 | |||
| 1039 | # | ||
| 1040 | # Generic devices | ||
| 1041 | # | ||
| 1042 | # CONFIG_SND_DUMMY is not set | ||
| 1043 | # CONFIG_SND_MTPAV is not set | ||
| 1044 | # CONFIG_SND_SERIAL_U16550 is not set | ||
| 1045 | # CONFIG_SND_MPU401 is not set | ||
| 1046 | |||
| 1047 | # | ||
| 1048 | # ALSA Blackfin devices | ||
| 1049 | # | ||
| 1050 | # CONFIG_SND_BLACKFIN_AD1836 is not set | ||
| 1051 | # CONFIG_SND_BFIN_AD73311 is not set | ||
| 1052 | |||
| 1053 | # | ||
| 1054 | # System on Chip audio support | ||
| 1055 | # | ||
| 1056 | CONFIG_SND_SOC_AC97_BUS=y | ||
| 1057 | CONFIG_SND_SOC=y | ||
| 1058 | CONFIG_SND_BF5XX_SOC=y | ||
| 1059 | CONFIG_SND_BF5XX_SOC_AC97=y | ||
| 1060 | CONFIG_SND_BF5XX_SOC_BF548_EZKIT=y | ||
| 1061 | CONFIG_SND_BF5XX_SPORT_NUM=0 | ||
| 1062 | # CONFIG_SND_BF5XX_HAVE_COLD_RESET is not set | ||
| 1063 | CONFIG_SND_SOC_AD1980=y | ||
| 1064 | |||
| 1065 | # | ||
| 1066 | # Open Sound System | ||
| 1067 | # | ||
| 1068 | # CONFIG_SOUND_PRIME is not set | ||
| 1069 | CONFIG_AC97_BUS=y | ||
| 967 | 1070 | ||
| 968 | # | 1071 | # |
| 969 | # HID Devices | 1072 | # HID Devices |
| 970 | # | 1073 | # |
| 971 | CONFIG_HID=y | 1074 | CONFIG_HID=m |
| 972 | # CONFIG_HID_DEBUG is not set | 1075 | # CONFIG_HID_DEBUG is not set |
| 973 | 1076 | ||
| 974 | # | 1077 | # |
| @@ -1101,8 +1204,13 @@ CONFIG_EXT2_FS=y | |||
| 1101 | CONFIG_EXT2_FS_XATTR=y | 1204 | CONFIG_EXT2_FS_XATTR=y |
| 1102 | # CONFIG_EXT2_FS_POSIX_ACL is not set | 1205 | # CONFIG_EXT2_FS_POSIX_ACL is not set |
| 1103 | # CONFIG_EXT2_FS_SECURITY is not set | 1206 | # CONFIG_EXT2_FS_SECURITY is not set |
| 1104 | # CONFIG_EXT3_FS is not set | 1207 | CONFIG_EXT3_FS=y |
| 1208 | CONFIG_EXT3_FS_XATTR=y | ||
| 1209 | # CONFIG_EXT3_FS_POSIX_ACL is not set | ||
| 1210 | # CONFIG_EXT3_FS_SECURITY is not set | ||
| 1105 | # CONFIG_EXT4DEV_FS is not set | 1211 | # CONFIG_EXT4DEV_FS is not set |
| 1212 | CONFIG_JBD=y | ||
| 1213 | # CONFIG_JBD_DEBUG is not set | ||
| 1106 | CONFIG_FS_MBCACHE=y | 1214 | CONFIG_FS_MBCACHE=y |
| 1107 | # CONFIG_REISERFS_FS is not set | 1215 | # CONFIG_REISERFS_FS is not set |
| 1108 | # CONFIG_JFS_FS is not set | 1216 | # CONFIG_JFS_FS is not set |
| @@ -1123,15 +1231,22 @@ CONFIG_DNOTIFY=y | |||
| 1123 | # | 1231 | # |
| 1124 | # CD-ROM/DVD Filesystems | 1232 | # CD-ROM/DVD Filesystems |
| 1125 | # | 1233 | # |
| 1126 | # CONFIG_ISO9660_FS is not set | 1234 | CONFIG_ISO9660_FS=m |
| 1235 | CONFIG_JOLIET=y | ||
| 1236 | CONFIG_ZISOFS=y | ||
| 1127 | # CONFIG_UDF_FS is not set | 1237 | # CONFIG_UDF_FS is not set |
| 1128 | 1238 | ||
| 1129 | # | 1239 | # |
| 1130 | # DOS/FAT/NT Filesystems | 1240 | # DOS/FAT/NT Filesystems |
| 1131 | # | 1241 | # |
| 1132 | # CONFIG_MSDOS_FS is not set | 1242 | CONFIG_FAT_FS=m |
| 1133 | # CONFIG_VFAT_FS is not set | 1243 | CONFIG_MSDOS_FS=m |
| 1134 | # CONFIG_NTFS_FS is not set | 1244 | CONFIG_VFAT_FS=m |
| 1245 | CONFIG_FAT_DEFAULT_CODEPAGE=437 | ||
| 1246 | CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | ||
| 1247 | CONFIG_NTFS_FS=m | ||
| 1248 | # CONFIG_NTFS_DEBUG is not set | ||
| 1249 | CONFIG_NTFS_RW=y | ||
| 1135 | 1250 | ||
| 1136 | # | 1251 | # |
| 1137 | # Pseudo filesystems | 1252 | # Pseudo filesystems |
| @@ -1183,10 +1298,33 @@ CONFIG_JFFS2_RTIME=y | |||
| 1183 | # | 1298 | # |
| 1184 | # Network File Systems | 1299 | # Network File Systems |
| 1185 | # | 1300 | # |
| 1186 | # CONFIG_NFS_FS is not set | 1301 | CONFIG_NFS_FS=m |
| 1187 | # CONFIG_NFSD is not set | 1302 | CONFIG_NFS_V3=y |
| 1188 | # CONFIG_SMB_FS is not set | 1303 | # CONFIG_NFS_V3_ACL is not set |
| 1189 | # CONFIG_CIFS is not set | 1304 | # CONFIG_NFS_V4 is not set |
| 1305 | # CONFIG_NFS_DIRECTIO is not set | ||
| 1306 | CONFIG_NFSD=m | ||
| 1307 | CONFIG_NFSD_V3=y | ||
| 1308 | # CONFIG_NFSD_V3_ACL is not set | ||
| 1309 | # CONFIG_NFSD_V4 is not set | ||
| 1310 | CONFIG_NFSD_TCP=y | ||
| 1311 | CONFIG_LOCKD=m | ||
| 1312 | CONFIG_LOCKD_V4=y | ||
| 1313 | CONFIG_EXPORTFS=m | ||
| 1314 | CONFIG_NFS_COMMON=y | ||
| 1315 | CONFIG_SUNRPC=m | ||
| 1316 | # CONFIG_SUNRPC_BIND34 is not set | ||
| 1317 | # CONFIG_RPCSEC_GSS_KRB5 is not set | ||
| 1318 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | ||
| 1319 | CONFIG_SMB_FS=m | ||
| 1320 | CONFIG_SMB_NLS_DEFAULT=y | ||
| 1321 | CONFIG_SMB_NLS_REMOTE="cp437" | ||
| 1322 | CONFIG_CIFS=y | ||
| 1323 | # CONFIG_CIFS_STATS is not set | ||
| 1324 | # CONFIG_CIFS_WEAK_PW_HASH is not set | ||
| 1325 | # CONFIG_CIFS_XATTR is not set | ||
| 1326 | # CONFIG_CIFS_DEBUG2 is not set | ||
| 1327 | # CONFIG_CIFS_EXPERIMENTAL is not set | ||
| 1190 | # CONFIG_NCP_FS is not set | 1328 | # CONFIG_NCP_FS is not set |
| 1191 | # CONFIG_CODA_FS is not set | 1329 | # CONFIG_CODA_FS is not set |
| 1192 | # CONFIG_AFS_FS is not set | 1330 | # CONFIG_AFS_FS is not set |
| @@ -1195,13 +1333,68 @@ CONFIG_JFFS2_RTIME=y | |||
| 1195 | # | 1333 | # |
| 1196 | # Partition Types | 1334 | # Partition Types |
| 1197 | # | 1335 | # |
| 1198 | # CONFIG_PARTITION_ADVANCED is not set | 1336 | CONFIG_PARTITION_ADVANCED=y |
| 1337 | # CONFIG_ACORN_PARTITION is not set | ||
| 1338 | # CONFIG_OSF_PARTITION is not set | ||
| 1339 | # CONFIG_AMIGA_PARTITION is not set | ||
| 1340 | # CONFIG_ATARI_PARTITION is not set | ||
| 1341 | # CONFIG_MAC_PARTITION is not set | ||
| 1199 | CONFIG_MSDOS_PARTITION=y | 1342 | CONFIG_MSDOS_PARTITION=y |
| 1343 | # CONFIG_BSD_DISKLABEL is not set | ||
| 1344 | # CONFIG_MINIX_SUBPARTITION is not set | ||
| 1345 | # CONFIG_SOLARIS_X86_PARTITION is not set | ||
| 1346 | # CONFIG_UNIXWARE_DISKLABEL is not set | ||
| 1347 | # CONFIG_LDM_PARTITION is not set | ||
| 1348 | # CONFIG_SGI_PARTITION is not set | ||
| 1349 | # CONFIG_ULTRIX_PARTITION is not set | ||
| 1350 | # CONFIG_SUN_PARTITION is not set | ||
| 1351 | # CONFIG_KARMA_PARTITION is not set | ||
| 1352 | # CONFIG_EFI_PARTITION is not set | ||
| 1353 | # CONFIG_SYSV68_PARTITION is not set | ||
| 1200 | 1354 | ||
| 1201 | # | 1355 | # |
| 1202 | # Native Language Support | 1356 | # Native Language Support |
| 1203 | # | 1357 | # |
| 1204 | # CONFIG_NLS is not set | 1358 | CONFIG_NLS=y |
| 1359 | CONFIG_NLS_DEFAULT="iso8859-1" | ||
| 1360 | CONFIG_NLS_CODEPAGE_437=m | ||
| 1361 | CONFIG_NLS_CODEPAGE_737=m | ||
| 1362 | CONFIG_NLS_CODEPAGE_775=m | ||
| 1363 | CONFIG_NLS_CODEPAGE_850=m | ||
| 1364 | CONFIG_NLS_CODEPAGE_852=m | ||
| 1365 | CONFIG_NLS_CODEPAGE_855=m | ||
| 1366 | CONFIG_NLS_CODEPAGE_857=m | ||
| 1367 | CONFIG_NLS_CODEPAGE_860=m | ||
| 1368 | CONFIG_NLS_CODEPAGE_861=m | ||
| 1369 | CONFIG_NLS_CODEPAGE_862=m | ||
| 1370 | CONFIG_NLS_CODEPAGE_863=m | ||
| 1371 | CONFIG_NLS_CODEPAGE_864=m | ||
| 1372 | CONFIG_NLS_CODEPAGE_865=m | ||
| 1373 | CONFIG_NLS_CODEPAGE_866=m | ||
| 1374 | CONFIG_NLS_CODEPAGE_869=m | ||
| 1375 | CONFIG_NLS_CODEPAGE_936=m | ||
| 1376 | CONFIG_NLS_CODEPAGE_950=m | ||
| 1377 | CONFIG_NLS_CODEPAGE_932=m | ||
| 1378 | CONFIG_NLS_CODEPAGE_949=m | ||
| 1379 | CONFIG_NLS_CODEPAGE_874=m | ||
| 1380 | CONFIG_NLS_ISO8859_8=m | ||
| 1381 | CONFIG_NLS_CODEPAGE_1250=m | ||
| 1382 | CONFIG_NLS_CODEPAGE_1251=m | ||
| 1383 | CONFIG_NLS_ASCII=m | ||
| 1384 | CONFIG_NLS_ISO8859_1=m | ||
| 1385 | CONFIG_NLS_ISO8859_2=m | ||
| 1386 | CONFIG_NLS_ISO8859_3=m | ||
| 1387 | CONFIG_NLS_ISO8859_4=m | ||
| 1388 | CONFIG_NLS_ISO8859_5=m | ||
| 1389 | CONFIG_NLS_ISO8859_6=m | ||
| 1390 | CONFIG_NLS_ISO8859_7=m | ||
| 1391 | CONFIG_NLS_ISO8859_9=m | ||
| 1392 | CONFIG_NLS_ISO8859_13=m | ||
| 1393 | CONFIG_NLS_ISO8859_14=m | ||
| 1394 | CONFIG_NLS_ISO8859_15=m | ||
| 1395 | CONFIG_NLS_KOI8_R=m | ||
| 1396 | CONFIG_NLS_KOI8_U=m | ||
| 1397 | CONFIG_NLS_UTF8=m | ||
| 1205 | 1398 | ||
| 1206 | # | 1399 | # |
| 1207 | # Distributed Lock Manager | 1400 | # Distributed Lock Manager |
diff --git a/arch/blackfin/configs/BF561-EZKIT_defconfig b/arch/blackfin/configs/BF561-EZKIT_defconfig index 85e647f87759..277d72dac0f9 100644 --- a/arch/blackfin/configs/BF561-EZKIT_defconfig +++ b/arch/blackfin/configs/BF561-EZKIT_defconfig | |||
| @@ -243,7 +243,7 @@ CONFIG_CLKIN_HZ=30000000 | |||
| 243 | # CONFIG_BFIN_KERNEL_CLOCK is not set | 243 | # CONFIG_BFIN_KERNEL_CLOCK is not set |
| 244 | CONFIG_MAX_VCO_HZ=600000000 | 244 | CONFIG_MAX_VCO_HZ=600000000 |
| 245 | CONFIG_MIN_VCO_HZ=50000000 | 245 | CONFIG_MIN_VCO_HZ=50000000 |
| 246 | CONFIG_MAX_SCLK_HZ=133000000 | 246 | CONFIG_MAX_SCLK_HZ=133333333 |
| 247 | CONFIG_MIN_SCLK_HZ=27000000 | 247 | CONFIG_MIN_SCLK_HZ=27000000 |
| 248 | 248 | ||
| 249 | # | 249 | # |
diff --git a/arch/blackfin/configs/PNAV-10_defconfig b/arch/blackfin/configs/PNAV-10_defconfig index 15e36aaf2186..3d403e0b82c2 100644 --- a/arch/blackfin/configs/PNAV-10_defconfig +++ b/arch/blackfin/configs/PNAV-10_defconfig | |||
| @@ -204,7 +204,7 @@ CONFIG_CLKIN_HZ=24576000 | |||
| 204 | # CONFIG_BFIN_KERNEL_CLOCK is not set | 204 | # CONFIG_BFIN_KERNEL_CLOCK is not set |
| 205 | CONFIG_MAX_VCO_HZ=600000000 | 205 | CONFIG_MAX_VCO_HZ=600000000 |
| 206 | CONFIG_MIN_VCO_HZ=50000000 | 206 | CONFIG_MIN_VCO_HZ=50000000 |
| 207 | CONFIG_MAX_SCLK_HZ=133000000 | 207 | CONFIG_MAX_SCLK_HZ=133333333 |
| 208 | CONFIG_MIN_SCLK_HZ=27000000 | 208 | CONFIG_MIN_SCLK_HZ=27000000 |
| 209 | 209 | ||
| 210 | # | 210 | # |
diff --git a/arch/blackfin/kernel/entry.S b/arch/blackfin/kernel/entry.S index 65c5ba4260b0..65f4e67a65c4 100644 --- a/arch/blackfin/kernel/entry.S +++ b/arch/blackfin/kernel/entry.S | |||
| @@ -54,9 +54,11 @@ ENTRY(_ret_from_fork) | |||
| 54 | [sp + PT_IPEND] = r0; | 54 | [sp + PT_IPEND] = r0; |
| 55 | /* do a 'fake' RTI by jumping to [RETI] | 55 | /* do a 'fake' RTI by jumping to [RETI] |
| 56 | * to avoid clearing supervisor mode in child | 56 | * to avoid clearing supervisor mode in child |
| 57 | */ | 57 | */ |
| 58 | r0 = [sp + PT_PC]; | ||
| 59 | [sp + PT_P0] = r0; | ||
| 60 | |||
| 58 | RESTORE_ALL_SYS | 61 | RESTORE_ALL_SYS |
| 59 | p0 = reti; | ||
| 60 | jump (p0); | 62 | jump (p0); |
| 61 | ENDPROC(_ret_from_fork) | 63 | ENDPROC(_ret_from_fork) |
| 62 | 64 | ||
diff --git a/arch/blackfin/kernel/fixed_code.S b/arch/blackfin/kernel/fixed_code.S index d8b1ebc70996..90262691b11a 100644 --- a/arch/blackfin/kernel/fixed_code.S +++ b/arch/blackfin/kernel/fixed_code.S | |||
| @@ -129,4 +129,18 @@ ENTRY(_atomic_xor32) | |||
| 129 | rts; | 129 | rts; |
| 130 | ENDPROC (_atomic_ior32) | 130 | ENDPROC (_atomic_ior32) |
| 131 | 131 | ||
| 132 | .align 16 | ||
| 133 | /* | ||
| 134 | * safe_user_instruction | ||
| 135 | * Four NOPS are enough to allow the pipeline to speculativily load | ||
| 136 | * execute anything it wants. After that, things have gone bad, and | ||
| 137 | * we are stuck - so panic. Since we might be in user space, we can't | ||
| 138 | * call panic, so just cause a unhandled exception, this should cause | ||
| 139 | * a dump of the trace buffer so we can tell were we are, and a reboot | ||
| 140 | */ | ||
| 141 | ENTRY(_safe_user_instruction) | ||
| 142 | NOP; NOP; NOP; NOP; | ||
| 143 | EXCPT 0x4; | ||
| 144 | ENDPROC(_safe_user_instruction) | ||
| 145 | |||
| 132 | ENTRY(_fixed_code_end) | 146 | ENTRY(_fixed_code_end) |
diff --git a/arch/blackfin/kernel/gptimers.c b/arch/blackfin/kernel/gptimers.c index cb7ba9bfc79c..5cf4bdb1df3b 100644 --- a/arch/blackfin/kernel/gptimers.c +++ b/arch/blackfin/kernel/gptimers.c | |||
| @@ -20,8 +20,7 @@ | |||
| 20 | #else | 20 | #else |
| 21 | # define tassert(expr) \ | 21 | # define tassert(expr) \ |
| 22 | if (!(expr)) \ | 22 | if (!(expr)) \ |
| 23 | printk(KERN_DEBUG "%s:%s:%i: Assertion failed: " #expr "\n", \ | 23 | printk(KERN_DEBUG "%s:%s:%i: Assertion failed: " #expr "\n", __FILE__, __func__, __LINE__); |
| 24 | __FILE__, __func__, __LINE__); | ||
| 25 | #endif | 24 | #endif |
| 26 | 25 | ||
| 27 | #define BFIN_TIMER_NUM_GROUP (BFIN_TIMER_OCTET(MAX_BLACKFIN_GPTIMERS - 1) + 1) | 26 | #define BFIN_TIMER_NUM_GROUP (BFIN_TIMER_OCTET(MAX_BLACKFIN_GPTIMERS - 1) + 1) |
| @@ -70,7 +69,7 @@ static volatile GPTIMER_group_regs *const group_regs[BFIN_TIMER_NUM_GROUP] = | |||
| 70 | #endif | 69 | #endif |
| 71 | }; | 70 | }; |
| 72 | 71 | ||
| 73 | static uint32_t const dis_mask[MAX_BLACKFIN_GPTIMERS] = | 72 | static uint32_t const trun_mask[MAX_BLACKFIN_GPTIMERS] = |
| 74 | { | 73 | { |
| 75 | TIMER_STATUS_TRUN0, | 74 | TIMER_STATUS_TRUN0, |
| 76 | TIMER_STATUS_TRUN1, | 75 | TIMER_STATUS_TRUN1, |
| @@ -90,7 +89,27 @@ static uint32_t const dis_mask[MAX_BLACKFIN_GPTIMERS] = | |||
| 90 | #endif | 89 | #endif |
| 91 | }; | 90 | }; |
| 92 | 91 | ||
| 93 | static uint32_t const irq_mask[MAX_BLACKFIN_GPTIMERS] = | 92 | static uint32_t const tovf_mask[MAX_BLACKFIN_GPTIMERS] = |
| 93 | { | ||
| 94 | TIMER_STATUS_TOVF0, | ||
| 95 | TIMER_STATUS_TOVF1, | ||
| 96 | TIMER_STATUS_TOVF2, | ||
| 97 | #if (MAX_BLACKFIN_GPTIMERS > 3) | ||
| 98 | TIMER_STATUS_TOVF3, | ||
| 99 | TIMER_STATUS_TOVF4, | ||
| 100 | TIMER_STATUS_TOVF5, | ||
| 101 | TIMER_STATUS_TOVF6, | ||
| 102 | TIMER_STATUS_TOVF7, | ||
| 103 | #endif | ||
| 104 | #if (MAX_BLACKFIN_GPTIMERS > 8) | ||
| 105 | TIMER_STATUS_TOVF8, | ||
| 106 | TIMER_STATUS_TOVF9, | ||
| 107 | TIMER_STATUS_TOVF10, | ||
| 108 | TIMER_STATUS_TOVF11, | ||
| 109 | #endif | ||
| 110 | }; | ||
| 111 | |||
| 112 | static uint32_t const timil_mask[MAX_BLACKFIN_GPTIMERS] = | ||
| 94 | { | 113 | { |
| 95 | TIMER_STATUS_TIMIL0, | 114 | TIMER_STATUS_TIMIL0, |
| 96 | TIMER_STATUS_TIMIL1, | 115 | TIMER_STATUS_TIMIL1, |
| @@ -165,17 +184,31 @@ EXPORT_SYMBOL(set_gptimer_status); | |||
| 165 | uint16_t get_gptimer_intr(int timer_id) | 184 | uint16_t get_gptimer_intr(int timer_id) |
| 166 | { | 185 | { |
| 167 | tassert(timer_id < MAX_BLACKFIN_GPTIMERS); | 186 | tassert(timer_id < MAX_BLACKFIN_GPTIMERS); |
| 168 | return (group_regs[BFIN_TIMER_OCTET(timer_id)]->status & irq_mask[timer_id]) ? 1 : 0; | 187 | return (group_regs[BFIN_TIMER_OCTET(timer_id)]->status & timil_mask[timer_id]) ? 1 : 0; |
| 169 | } | 188 | } |
| 170 | EXPORT_SYMBOL(get_gptimer_intr); | 189 | EXPORT_SYMBOL(get_gptimer_intr); |
| 171 | 190 | ||
| 172 | void clear_gptimer_intr(int timer_id) | 191 | void clear_gptimer_intr(int timer_id) |
| 173 | { | 192 | { |
| 174 | tassert(timer_id < MAX_BLACKFIN_GPTIMERS); | 193 | tassert(timer_id < MAX_BLACKFIN_GPTIMERS); |
| 175 | group_regs[BFIN_TIMER_OCTET(timer_id)]->status = irq_mask[timer_id]; | 194 | group_regs[BFIN_TIMER_OCTET(timer_id)]->status = timil_mask[timer_id]; |
| 176 | } | 195 | } |
| 177 | EXPORT_SYMBOL(clear_gptimer_intr); | 196 | EXPORT_SYMBOL(clear_gptimer_intr); |
| 178 | 197 | ||
| 198 | uint16_t get_gptimer_over(int timer_id) | ||
| 199 | { | ||
| 200 | tassert(timer_id < MAX_BLACKFIN_GPTIMERS); | ||
| 201 | return (group_regs[BFIN_TIMER_OCTET(timer_id)]->status & tovf_mask[timer_id]) ? 1 : 0; | ||
| 202 | } | ||
| 203 | EXPORT_SYMBOL(get_gptimer_over); | ||
| 204 | |||
| 205 | void clear_gptimer_over(int timer_id) | ||
| 206 | { | ||
| 207 | tassert(timer_id < MAX_BLACKFIN_GPTIMERS); | ||
| 208 | group_regs[BFIN_TIMER_OCTET(timer_id)]->status = tovf_mask[timer_id]; | ||
| 209 | } | ||
| 210 | EXPORT_SYMBOL(clear_gptimer_over); | ||
| 211 | |||
| 179 | void set_gptimer_config(int timer_id, uint16_t config) | 212 | void set_gptimer_config(int timer_id, uint16_t config) |
| 180 | { | 213 | { |
| 181 | tassert(timer_id < MAX_BLACKFIN_GPTIMERS); | 214 | tassert(timer_id < MAX_BLACKFIN_GPTIMERS); |
| @@ -214,7 +247,7 @@ void disable_gptimers(uint16_t mask) | |||
| 214 | } | 247 | } |
| 215 | for (i = 0; i < MAX_BLACKFIN_GPTIMERS; ++i) | 248 | for (i = 0; i < MAX_BLACKFIN_GPTIMERS; ++i) |
| 216 | if (mask & (1 << i)) | 249 | if (mask & (1 << i)) |
| 217 | group_regs[BFIN_TIMER_OCTET(i)]->status |= dis_mask[i]; | 250 | group_regs[BFIN_TIMER_OCTET(i)]->status |= trun_mask[i]; |
| 218 | SSYNC(); | 251 | SSYNC(); |
| 219 | } | 252 | } |
| 220 | EXPORT_SYMBOL(disable_gptimers); | 253 | EXPORT_SYMBOL(disable_gptimers); |
diff --git a/arch/blackfin/kernel/setup.c b/arch/blackfin/kernel/setup.c index f1b059e5a06c..934234f43839 100644 --- a/arch/blackfin/kernel/setup.c +++ b/arch/blackfin/kernel/setup.c | |||
| @@ -316,6 +316,15 @@ void __init setup_arch(char **cmdline_p) | |||
| 316 | 316 | ||
| 317 | init_leds(); | 317 | init_leds(); |
| 318 | 318 | ||
| 319 | _bfin_swrst = bfin_read_SWRST(); | ||
| 320 | |||
| 321 | if (_bfin_swrst & RESET_DOUBLE) | ||
| 322 | printk(KERN_INFO "Recovering from Double Fault event\n"); | ||
| 323 | else if (_bfin_swrst & RESET_WDOG) | ||
| 324 | printk(KERN_INFO "Recovering from Watchdog event\n"); | ||
| 325 | else if (_bfin_swrst & RESET_SOFTWARE) | ||
| 326 | printk(KERN_NOTICE "Reset caused by Software reset\n"); | ||
| 327 | |||
| 319 | printk(KERN_INFO "Blackfin support (C) 2004-2007 Analog Devices, Inc.\n"); | 328 | printk(KERN_INFO "Blackfin support (C) 2004-2007 Analog Devices, Inc.\n"); |
| 320 | if (bfin_compiled_revid() == 0xffff) | 329 | if (bfin_compiled_revid() == 0xffff) |
| 321 | printk(KERN_INFO "Compiled for ADSP-%s Rev any\n", CPU); | 330 | printk(KERN_INFO "Compiled for ADSP-%s Rev any\n", CPU); |
| @@ -402,8 +411,6 @@ void __init setup_arch(char **cmdline_p) | |||
| 402 | if (l1_length > L1_DATA_A_LENGTH) | 411 | if (l1_length > L1_DATA_A_LENGTH) |
| 403 | panic("L1 data memory overflow\n"); | 412 | panic("L1 data memory overflow\n"); |
| 404 | 413 | ||
| 405 | _bfin_swrst = bfin_read_SWRST(); | ||
| 406 | |||
| 407 | /* Copy atomic sequences to their fixed location, and sanity check that | 414 | /* Copy atomic sequences to their fixed location, and sanity check that |
| 408 | these locations are the ones that we advertise to userspace. */ | 415 | these locations are the ones that we advertise to userspace. */ |
| 409 | memcpy((void *)FIXED_CODE_START, &fixed_code_start, | 416 | memcpy((void *)FIXED_CODE_START, &fixed_code_start, |
| @@ -424,6 +431,8 @@ void __init setup_arch(char **cmdline_p) | |||
| 424 | != ATOMIC_AND32 - FIXED_CODE_START); | 431 | != ATOMIC_AND32 - FIXED_CODE_START); |
| 425 | BUG_ON((char *)&atomic_xor32 - (char *)&fixed_code_start | 432 | BUG_ON((char *)&atomic_xor32 - (char *)&fixed_code_start |
| 426 | != ATOMIC_XOR32 - FIXED_CODE_START); | 433 | != ATOMIC_XOR32 - FIXED_CODE_START); |
| 434 | BUG_ON((char *)&safe_user_instruction - (char *)&fixed_code_start | ||
| 435 | != SAFE_USER_INSTRUCTION - FIXED_CODE_START); | ||
| 427 | 436 | ||
| 428 | init_exception_vectors(); | 437 | init_exception_vectors(); |
| 429 | bf53x_cache_init(); | 438 | bf53x_cache_init(); |
diff --git a/arch/blackfin/kernel/traps.c b/arch/blackfin/kernel/traps.c index afd044e78af6..cfa05436c972 100644 --- a/arch/blackfin/kernel/traps.c +++ b/arch/blackfin/kernel/traps.c | |||
| @@ -37,10 +37,24 @@ | |||
| 37 | #include <asm/blackfin.h> | 37 | #include <asm/blackfin.h> |
| 38 | #include <asm/irq_handler.h> | 38 | #include <asm/irq_handler.h> |
| 39 | #include <asm/trace.h> | 39 | #include <asm/trace.h> |
| 40 | #include <asm/fixed_code.h> | ||
| 40 | 41 | ||
| 41 | #ifdef CONFIG_KGDB | 42 | #ifdef CONFIG_KGDB |
| 42 | # include <linux/debugger.h> | 43 | # include <linux/debugger.h> |
| 43 | # include <linux/kgdb.h> | 44 | # include <linux/kgdb.h> |
| 45 | |||
| 46 | # define CHK_DEBUGGER_TRAP() \ | ||
| 47 | do { \ | ||
| 48 | CHK_DEBUGGER(trapnr, sig, info.si_code, fp, ); \ | ||
| 49 | } while (0) | ||
| 50 | # define CHK_DEBUGGER_TRAP_MAYBE() \ | ||
| 51 | do { \ | ||
| 52 | if (kgdb_connected) \ | ||
| 53 | CHK_DEBUGGER_TRAP(); \ | ||
| 54 | } while (0) | ||
| 55 | #else | ||
| 56 | # define CHK_DEBUGGER_TRAP() do { } while (0) | ||
| 57 | # define CHK_DEBUGGER_TRAP_MAYBE() do { } while (0) | ||
| 44 | #endif | 58 | #endif |
| 45 | 59 | ||
| 46 | /* Initiate the event table handler */ | 60 | /* Initiate the event table handler */ |
| @@ -53,13 +67,13 @@ void __init trap_init(void) | |||
| 53 | 67 | ||
| 54 | int kstack_depth_to_print = 48; | 68 | int kstack_depth_to_print = 48; |
| 55 | 69 | ||
| 56 | #ifdef CONFIG_DEBUG_BFIN_HWTRACE_ON | 70 | static void decode_address(char *buf, unsigned long address) |
| 57 | static int printk_address(unsigned long address) | ||
| 58 | { | 71 | { |
| 59 | struct vm_list_struct *vml; | 72 | struct vm_list_struct *vml; |
| 60 | struct task_struct *p; | 73 | struct task_struct *p; |
| 61 | struct mm_struct *mm; | 74 | struct mm_struct *mm; |
| 62 | unsigned long offset; | 75 | unsigned long flags, offset; |
| 76 | unsigned int in_exception = bfin_read_IPEND() & 0x10; | ||
| 63 | 77 | ||
| 64 | #ifdef CONFIG_KALLSYMS | 78 | #ifdef CONFIG_KALLSYMS |
| 65 | unsigned long symsize; | 79 | unsigned long symsize; |
| @@ -75,20 +89,33 @@ static int printk_address(unsigned long address) | |||
| 75 | /* yeah! kernel space! */ | 89 | /* yeah! kernel space! */ |
| 76 | if (!modname) | 90 | if (!modname) |
| 77 | modname = delim = ""; | 91 | modname = delim = ""; |
| 78 | return printk("<0x%p> { %s%s%s%s + 0x%lx }", | 92 | sprintf(buf, "<0x%p> { %s%s%s%s + 0x%lx }", |
| 79 | (void *)address, delim, modname, delim, symname, | 93 | (void *)address, delim, modname, delim, symname, |
| 80 | (unsigned long)offset); | 94 | (unsigned long)offset); |
| 95 | return; | ||
| 81 | 96 | ||
| 82 | } | 97 | } |
| 83 | #endif | 98 | #endif |
| 84 | 99 | ||
| 100 | /* Problem in fixed code section? */ | ||
| 101 | if (address >= FIXED_CODE_START && address < FIXED_CODE_END) { | ||
| 102 | sprintf(buf, "<0x%p> /* Maybe fixed code section */", (void *)address); | ||
| 103 | return; | ||
| 104 | } | ||
| 105 | |||
| 106 | /* Problem somewhere before the kernel start address */ | ||
| 107 | if (address < CONFIG_BOOT_LOAD) { | ||
| 108 | sprintf(buf, "<0x%p> /* Maybe null pointer? */", (void *)address); | ||
| 109 | return; | ||
| 110 | } | ||
| 111 | |||
| 85 | /* looks like we're off in user-land, so let's walk all the | 112 | /* looks like we're off in user-land, so let's walk all the |
| 86 | * mappings of all our processes and see if we can't be a whee | 113 | * mappings of all our processes and see if we can't be a whee |
| 87 | * bit more specific | 114 | * bit more specific |
| 88 | */ | 115 | */ |
| 89 | write_lock_irq(&tasklist_lock); | 116 | write_lock_irqsave(&tasklist_lock, flags); |
| 90 | for_each_process(p) { | 117 | for_each_process(p) { |
| 91 | mm = get_task_mm(p); | 118 | mm = (in_exception ? p->mm : get_task_mm(p)); |
| 92 | if (!mm) | 119 | if (!mm) |
| 93 | continue; | 120 | continue; |
| 94 | 121 | ||
| @@ -117,25 +144,30 @@ static int printk_address(unsigned long address) | |||
| 117 | else | 144 | else |
| 118 | offset = (address - vma->vm_start) + (vma->vm_pgoff << PAGE_SHIFT); | 145 | offset = (address - vma->vm_start) + (vma->vm_pgoff << PAGE_SHIFT); |
| 119 | 146 | ||
| 120 | write_unlock_irq(&tasklist_lock); | 147 | sprintf(buf, "<0x%p> [ %s + 0x%lx ]", |
| 121 | mmput(mm); | 148 | (void *)address, name, offset); |
| 122 | return printk("<0x%p> [ %s + 0x%lx ]", | 149 | if (!in_exception) |
| 123 | (void *)address, name, offset); | 150 | mmput(mm); |
| 151 | goto done; | ||
| 124 | } | 152 | } |
| 125 | 153 | ||
| 126 | vml = vml->next; | 154 | vml = vml->next; |
| 127 | } | 155 | } |
| 128 | mmput(mm); | 156 | if (!in_exception) |
| 157 | mmput(mm); | ||
| 129 | } | 158 | } |
| 130 | write_unlock_irq(&tasklist_lock); | ||
| 131 | 159 | ||
| 132 | /* we were unable to find this address anywhere */ | 160 | /* we were unable to find this address anywhere */ |
| 133 | return printk("[<0x%p>]", (void *)address); | 161 | sprintf(buf, "[<0x%p>]", (void *)address); |
| 162 | |||
| 163 | done: | ||
| 164 | write_unlock_irqrestore(&tasklist_lock, flags); | ||
| 134 | } | 165 | } |
| 135 | #endif | ||
| 136 | 166 | ||
| 137 | asmlinkage void double_fault_c(struct pt_regs *fp) | 167 | asmlinkage void double_fault_c(struct pt_regs *fp) |
| 138 | { | 168 | { |
| 169 | console_verbose(); | ||
| 170 | oops_in_progress = 1; | ||
| 139 | printk(KERN_EMERG "\n" KERN_EMERG "Double Fault\n"); | 171 | printk(KERN_EMERG "\n" KERN_EMERG "Double Fault\n"); |
| 140 | dump_bfin_regs(fp, (void *)fp->retx); | 172 | dump_bfin_regs(fp, (void *)fp->retx); |
| 141 | panic("Double Fault - unrecoverable event\n"); | 173 | panic("Double Fault - unrecoverable event\n"); |
| @@ -151,22 +183,29 @@ asmlinkage void trap_c(struct pt_regs *fp) | |||
| 151 | siginfo_t info; | 183 | siginfo_t info; |
| 152 | unsigned long trapnr = fp->seqstat & SEQSTAT_EXCAUSE; | 184 | unsigned long trapnr = fp->seqstat & SEQSTAT_EXCAUSE; |
| 153 | 185 | ||
| 186 | trace_buffer_save(j); | ||
| 187 | |||
| 188 | /* Important - be very careful dereferncing pointers - will lead to | ||
| 189 | * double faults if the stack has become corrupt | ||
| 190 | */ | ||
| 191 | |||
| 192 | /* If the fault was caused by a kernel thread, or interrupt handler | ||
| 193 | * we will kernel panic, so the system reboots. | ||
| 194 | * If KGDB is enabled, don't set this for kernel breakpoints | ||
| 195 | */ | ||
| 196 | if ((bfin_read_IPEND() & 0xFFC0) | ||
| 154 | #ifdef CONFIG_KGDB | 197 | #ifdef CONFIG_KGDB |
| 155 | # define CHK_DEBUGGER_TRAP() \ | 198 | && trapnr != VEC_EXCPT02 |
| 156 | do { \ | ||
| 157 | CHK_DEBUGGER(trapnr, sig, info.si_code, fp, ); \ | ||
| 158 | } while (0) | ||
| 159 | # define CHK_DEBUGGER_TRAP_MAYBE() \ | ||
| 160 | do { \ | ||
| 161 | if (kgdb_connected) \ | ||
| 162 | CHK_DEBUGGER_TRAP(); \ | ||
| 163 | } while (0) | ||
| 164 | #else | ||
| 165 | # define CHK_DEBUGGER_TRAP() do { } while (0) | ||
| 166 | # define CHK_DEBUGGER_TRAP_MAYBE() do { } while (0) | ||
| 167 | #endif | 199 | #endif |
| 168 | 200 | ){ | |
| 169 | trace_buffer_save(j); | 201 | console_verbose(); |
| 202 | oops_in_progress = 1; | ||
| 203 | } else if (current) { | ||
| 204 | if (current->mm == NULL) { | ||
| 205 | console_verbose(); | ||
| 206 | oops_in_progress = 1; | ||
| 207 | } | ||
| 208 | } | ||
| 170 | 209 | ||
| 171 | /* trap_c() will be called for exceptions. During exceptions | 210 | /* trap_c() will be called for exceptions. During exceptions |
| 172 | * processing, the pc value should be set with retx value. | 211 | * processing, the pc value should be set with retx value. |
| @@ -211,7 +250,7 @@ asmlinkage void trap_c(struct pt_regs *fp) | |||
| 211 | case VEC_EXCPT03: | 250 | case VEC_EXCPT03: |
| 212 | info.si_code = SEGV_STACKFLOW; | 251 | info.si_code = SEGV_STACKFLOW; |
| 213 | sig = SIGSEGV; | 252 | sig = SIGSEGV; |
| 214 | printk(KERN_EMERG EXC_0x03); | 253 | printk(KERN_NOTICE EXC_0x03); |
| 215 | CHK_DEBUGGER_TRAP(); | 254 | CHK_DEBUGGER_TRAP(); |
| 216 | break; | 255 | break; |
| 217 | /* 0x04 - User Defined, Caught by default */ | 256 | /* 0x04 - User Defined, Caught by default */ |
| @@ -240,7 +279,7 @@ asmlinkage void trap_c(struct pt_regs *fp) | |||
| 240 | case VEC_OVFLOW: | 279 | case VEC_OVFLOW: |
| 241 | info.si_code = TRAP_TRACEFLOW; | 280 | info.si_code = TRAP_TRACEFLOW; |
| 242 | sig = SIGTRAP; | 281 | sig = SIGTRAP; |
| 243 | printk(KERN_EMERG EXC_0x11); | 282 | printk(KERN_NOTICE EXC_0x11); |
| 244 | CHK_DEBUGGER_TRAP(); | 283 | CHK_DEBUGGER_TRAP(); |
| 245 | break; | 284 | break; |
| 246 | /* 0x12 - Reserved, Caught by default */ | 285 | /* 0x12 - Reserved, Caught by default */ |
| @@ -262,14 +301,14 @@ asmlinkage void trap_c(struct pt_regs *fp) | |||
| 262 | case VEC_UNDEF_I: | 301 | case VEC_UNDEF_I: |
| 263 | info.si_code = ILL_ILLOPC; | 302 | info.si_code = ILL_ILLOPC; |
| 264 | sig = SIGILL; | 303 | sig = SIGILL; |
| 265 | printk(KERN_EMERG EXC_0x21); | 304 | printk(KERN_NOTICE EXC_0x21); |
| 266 | CHK_DEBUGGER_TRAP(); | 305 | CHK_DEBUGGER_TRAP(); |
| 267 | break; | 306 | break; |
| 268 | /* 0x22 - Illegal Instruction Combination, handled here */ | 307 | /* 0x22 - Illegal Instruction Combination, handled here */ |
| 269 | case VEC_ILGAL_I: | 308 | case VEC_ILGAL_I: |
| 270 | info.si_code = ILL_ILLPARAOP; | 309 | info.si_code = ILL_ILLPARAOP; |
| 271 | sig = SIGILL; | 310 | sig = SIGILL; |
| 272 | printk(KERN_EMERG EXC_0x22); | 311 | printk(KERN_NOTICE EXC_0x22); |
| 273 | CHK_DEBUGGER_TRAP(); | 312 | CHK_DEBUGGER_TRAP(); |
| 274 | break; | 313 | break; |
| 275 | /* 0x23 - Data CPLB Protection Violation, | 314 | /* 0x23 - Data CPLB Protection Violation, |
| @@ -277,21 +316,21 @@ asmlinkage void trap_c(struct pt_regs *fp) | |||
| 277 | case VEC_CPLB_VL: | 316 | case VEC_CPLB_VL: |
| 278 | info.si_code = ILL_CPLB_VI; | 317 | info.si_code = ILL_CPLB_VI; |
| 279 | sig = SIGILL; | 318 | sig = SIGILL; |
| 280 | printk(KERN_EMERG EXC_0x23); | 319 | printk(KERN_NOTICE EXC_0x23); |
| 281 | CHK_DEBUGGER_TRAP(); | 320 | CHK_DEBUGGER_TRAP(); |
| 282 | break; | 321 | break; |
| 283 | /* 0x24 - Data access misaligned, handled here */ | 322 | /* 0x24 - Data access misaligned, handled here */ |
| 284 | case VEC_MISALI_D: | 323 | case VEC_MISALI_D: |
| 285 | info.si_code = BUS_ADRALN; | 324 | info.si_code = BUS_ADRALN; |
| 286 | sig = SIGBUS; | 325 | sig = SIGBUS; |
| 287 | printk(KERN_EMERG EXC_0x24); | 326 | printk(KERN_NOTICE EXC_0x24); |
| 288 | CHK_DEBUGGER_TRAP(); | 327 | CHK_DEBUGGER_TRAP(); |
| 289 | break; | 328 | break; |
| 290 | /* 0x25 - Unrecoverable Event, handled here */ | 329 | /* 0x25 - Unrecoverable Event, handled here */ |
| 291 | case VEC_UNCOV: | 330 | case VEC_UNCOV: |
| 292 | info.si_code = ILL_ILLEXCPT; | 331 | info.si_code = ILL_ILLEXCPT; |
| 293 | sig = SIGILL; | 332 | sig = SIGILL; |
| 294 | printk(KERN_EMERG EXC_0x25); | 333 | printk(KERN_NOTICE EXC_0x25); |
| 295 | CHK_DEBUGGER_TRAP(); | 334 | CHK_DEBUGGER_TRAP(); |
| 296 | break; | 335 | break; |
| 297 | /* 0x26 - Data CPLB Miss, normal case is handled in _cplb_hdr, | 336 | /* 0x26 - Data CPLB Miss, normal case is handled in _cplb_hdr, |
| @@ -299,7 +338,7 @@ asmlinkage void trap_c(struct pt_regs *fp) | |||
| 299 | case VEC_CPLB_M: | 338 | case VEC_CPLB_M: |
| 300 | info.si_code = BUS_ADRALN; | 339 | info.si_code = BUS_ADRALN; |
| 301 | sig = SIGBUS; | 340 | sig = SIGBUS; |
| 302 | printk(KERN_EMERG EXC_0x26); | 341 | printk(KERN_NOTICE EXC_0x26); |
| 303 | CHK_DEBUGGER_TRAP(); | 342 | CHK_DEBUGGER_TRAP(); |
| 304 | break; | 343 | break; |
| 305 | /* 0x27 - Data CPLB Multiple Hits - Linux Trap Zero, handled here */ | 344 | /* 0x27 - Data CPLB Multiple Hits - Linux Trap Zero, handled here */ |
| @@ -307,11 +346,10 @@ asmlinkage void trap_c(struct pt_regs *fp) | |||
| 307 | info.si_code = ILL_CPLB_MULHIT; | 346 | info.si_code = ILL_CPLB_MULHIT; |
| 308 | #ifdef CONFIG_DEBUG_HUNT_FOR_ZERO | 347 | #ifdef CONFIG_DEBUG_HUNT_FOR_ZERO |
| 309 | sig = SIGSEGV; | 348 | sig = SIGSEGV; |
| 310 | printk(KERN_EMERG "\n" | 349 | printk(KERN_NOTICE "NULL pointer access (probably)\n"); |
| 311 | KERN_EMERG "NULL pointer access (probably)\n"); | ||
| 312 | #else | 350 | #else |
| 313 | sig = SIGILL; | 351 | sig = SIGILL; |
| 314 | printk(KERN_EMERG EXC_0x27); | 352 | printk(KERN_NOTICE EXC_0x27); |
| 315 | #endif | 353 | #endif |
| 316 | CHK_DEBUGGER_TRAP(); | 354 | CHK_DEBUGGER_TRAP(); |
| 317 | break; | 355 | break; |
| @@ -331,7 +369,7 @@ asmlinkage void trap_c(struct pt_regs *fp) | |||
| 331 | case VEC_ISTRU_VL: /* ADSP-BF535 only (MH) */ | 369 | case VEC_ISTRU_VL: /* ADSP-BF535 only (MH) */ |
| 332 | info.si_code = BUS_OPFETCH; | 370 | info.si_code = BUS_OPFETCH; |
| 333 | sig = SIGBUS; | 371 | sig = SIGBUS; |
| 334 | printk(KERN_EMERG "BF535: VEC_ISTRU_VL\n"); | 372 | printk(KERN_NOTICE "BF535: VEC_ISTRU_VL\n"); |
| 335 | CHK_DEBUGGER_TRAP(); | 373 | CHK_DEBUGGER_TRAP(); |
| 336 | break; | 374 | break; |
| 337 | #else | 375 | #else |
| @@ -341,7 +379,7 @@ asmlinkage void trap_c(struct pt_regs *fp) | |||
| 341 | case VEC_MISALI_I: | 379 | case VEC_MISALI_I: |
| 342 | info.si_code = BUS_ADRALN; | 380 | info.si_code = BUS_ADRALN; |
| 343 | sig = SIGBUS; | 381 | sig = SIGBUS; |
| 344 | printk(KERN_EMERG EXC_0x2A); | 382 | printk(KERN_NOTICE EXC_0x2A); |
| 345 | CHK_DEBUGGER_TRAP(); | 383 | CHK_DEBUGGER_TRAP(); |
| 346 | break; | 384 | break; |
| 347 | /* 0x2B - Instruction CPLB protection Violation, | 385 | /* 0x2B - Instruction CPLB protection Violation, |
| @@ -349,14 +387,14 @@ asmlinkage void trap_c(struct pt_regs *fp) | |||
| 349 | case VEC_CPLB_I_VL: | 387 | case VEC_CPLB_I_VL: |
| 350 | info.si_code = ILL_CPLB_VI; | 388 | info.si_code = ILL_CPLB_VI; |
| 351 | sig = SIGILL; | 389 | sig = SIGILL; |
| 352 | printk(KERN_EMERG EXC_0x2B); | 390 | printk(KERN_NOTICE EXC_0x2B); |
| 353 | CHK_DEBUGGER_TRAP(); | 391 | CHK_DEBUGGER_TRAP(); |
| 354 | break; | 392 | break; |
| 355 | /* 0x2C - Instruction CPLB miss, handled in _cplb_hdr */ | 393 | /* 0x2C - Instruction CPLB miss, handled in _cplb_hdr */ |
| 356 | case VEC_CPLB_I_M: | 394 | case VEC_CPLB_I_M: |
| 357 | info.si_code = ILL_CPLB_MISS; | 395 | info.si_code = ILL_CPLB_MISS; |
| 358 | sig = SIGBUS; | 396 | sig = SIGBUS; |
| 359 | printk(KERN_EMERG EXC_0x2C); | 397 | printk(KERN_NOTICE EXC_0x2C); |
| 360 | CHK_DEBUGGER_TRAP(); | 398 | CHK_DEBUGGER_TRAP(); |
| 361 | break; | 399 | break; |
| 362 | /* 0x2D - Instruction CPLB Multiple Hits, handled here */ | 400 | /* 0x2D - Instruction CPLB Multiple Hits, handled here */ |
| @@ -364,10 +402,10 @@ asmlinkage void trap_c(struct pt_regs *fp) | |||
| 364 | info.si_code = ILL_CPLB_MULHIT; | 402 | info.si_code = ILL_CPLB_MULHIT; |
| 365 | #ifdef CONFIG_DEBUG_HUNT_FOR_ZERO | 403 | #ifdef CONFIG_DEBUG_HUNT_FOR_ZERO |
| 366 | sig = SIGSEGV; | 404 | sig = SIGSEGV; |
| 367 | printk(KERN_EMERG "\n\nJump to address 0 - 0x0fff\n"); | 405 | printk(KERN_NOTICE "Jump to address 0 - 0x0fff\n"); |
| 368 | #else | 406 | #else |
| 369 | sig = SIGILL; | 407 | sig = SIGILL; |
| 370 | printk(KERN_EMERG EXC_0x2D); | 408 | printk(KERN_NOTICE EXC_0x2D); |
| 371 | #endif | 409 | #endif |
| 372 | CHK_DEBUGGER_TRAP(); | 410 | CHK_DEBUGGER_TRAP(); |
| 373 | break; | 411 | break; |
| @@ -375,7 +413,7 @@ asmlinkage void trap_c(struct pt_regs *fp) | |||
| 375 | case VEC_ILL_RES: | 413 | case VEC_ILL_RES: |
| 376 | info.si_code = ILL_PRVOPC; | 414 | info.si_code = ILL_PRVOPC; |
| 377 | sig = SIGILL; | 415 | sig = SIGILL; |
| 378 | printk(KERN_EMERG EXC_0x2E); | 416 | printk(KERN_NOTICE EXC_0x2E); |
| 379 | CHK_DEBUGGER_TRAP(); | 417 | CHK_DEBUGGER_TRAP(); |
| 380 | break; | 418 | break; |
| 381 | /* 0x2F - Reserved, Caught by default */ | 419 | /* 0x2F - Reserved, Caught by default */ |
| @@ -404,38 +442,40 @@ asmlinkage void trap_c(struct pt_regs *fp) | |||
| 404 | break; | 442 | break; |
| 405 | } | 443 | } |
| 406 | 444 | ||
| 407 | if (sig != 0 && sig != SIGTRAP) { | 445 | BUG_ON(sig == 0); |
| 446 | |||
| 447 | if (sig != SIGTRAP) { | ||
| 408 | unsigned long stack; | 448 | unsigned long stack; |
| 409 | dump_bfin_regs(fp, (void *)fp->retx); | 449 | dump_bfin_regs(fp, (void *)fp->retx); |
| 410 | dump_bfin_trace_buffer(); | 450 | |
| 451 | /* Print out the trace buffer if it makes sense */ | ||
| 452 | #ifndef CONFIG_DEBUG_BFIN_NO_KERN_HWTRACE | ||
| 453 | if (trapnr == VEC_CPLB_I_M || trapnr == VEC_CPLB_M) | ||
| 454 | printk(KERN_NOTICE "No trace since you do not have " | ||
| 455 | "CONFIG_DEBUG_BFIN_NO_KERN_HWTRACE enabled\n" | ||
| 456 | KERN_NOTICE "\n"); | ||
| 457 | else | ||
| 458 | #endif | ||
| 459 | dump_bfin_trace_buffer(); | ||
| 411 | show_stack(current, &stack); | 460 | show_stack(current, &stack); |
| 412 | if (current->mm == NULL) | 461 | if (oops_in_progress) { |
| 462 | #ifndef CONFIG_ACCESS_CHECK | ||
| 463 | printk(KERN_EMERG "Hey - dork - please turn on " | ||
| 464 | "CONFIG_ACCESS_CHECK\n"); | ||
| 465 | #endif | ||
| 413 | panic("Kernel exception"); | 466 | panic("Kernel exception"); |
| 467 | } | ||
| 468 | |||
| 469 | /* Ensure that bad return addresses don't end up in an infinite | ||
| 470 | * loop, due to speculative loads/reads | ||
| 471 | */ | ||
| 472 | fp->pc = SAFE_USER_INSTRUCTION; | ||
| 414 | } | 473 | } |
| 415 | info.si_signo = sig; | 474 | info.si_signo = sig; |
| 416 | info.si_errno = 0; | 475 | info.si_errno = 0; |
| 417 | info.si_addr = (void *)fp->pc; | 476 | info.si_addr = (void *)fp->pc; |
| 418 | force_sig_info(sig, &info, current); | 477 | force_sig_info(sig, &info, current); |
| 419 | 478 | ||
| 420 | /* if the address that we are about to return to is not valid, set it | ||
| 421 | * to a valid address, if we have a current application or panic | ||
| 422 | */ | ||
| 423 | if (!(fp->pc <= physical_mem_end | ||
| 424 | #if L1_CODE_LENGTH != 0 | ||
| 425 | || (fp->pc >= L1_CODE_START && | ||
| 426 | fp->pc <= (L1_CODE_START + L1_CODE_LENGTH)) | ||
| 427 | #endif | ||
| 428 | )) { | ||
| 429 | if (current->mm) { | ||
| 430 | fp->pc = current->mm->start_code; | ||
| 431 | } else { | ||
| 432 | printk(KERN_EMERG | ||
| 433 | "I can't return to memory that doesn't exist" | ||
| 434 | " - bad things happen\n"); | ||
| 435 | panic("Help - I've fallen and can't get up\n"); | ||
| 436 | } | ||
| 437 | } | ||
| 438 | |||
| 439 | trace_buffer_restore(j); | 479 | trace_buffer_restore(j); |
| 440 | return; | 480 | return; |
| 441 | } | 481 | } |
| @@ -448,21 +488,21 @@ void dump_bfin_trace_buffer(void) | |||
| 448 | { | 488 | { |
| 449 | #ifdef CONFIG_DEBUG_BFIN_HWTRACE_ON | 489 | #ifdef CONFIG_DEBUG_BFIN_HWTRACE_ON |
| 450 | int tflags, i = 0; | 490 | int tflags, i = 0; |
| 491 | char buf[150]; | ||
| 451 | #ifdef CONFIG_DEBUG_BFIN_HWTRACE_EXPAND | 492 | #ifdef CONFIG_DEBUG_BFIN_HWTRACE_EXPAND |
| 452 | int j, index; | 493 | int j, index; |
| 453 | #endif | 494 | #endif |
| 454 | 495 | ||
| 455 | trace_buffer_save(tflags); | 496 | trace_buffer_save(tflags); |
| 456 | 497 | ||
| 457 | printk(KERN_EMERG "Hardware Trace:\n"); | 498 | printk(KERN_NOTICE "Hardware Trace:\n"); |
| 458 | 499 | ||
| 459 | if (likely(bfin_read_TBUFSTAT() & TBUFCNT)) { | 500 | if (likely(bfin_read_TBUFSTAT() & TBUFCNT)) { |
| 460 | for (; bfin_read_TBUFSTAT() & TBUFCNT; i++) { | 501 | for (; bfin_read_TBUFSTAT() & TBUFCNT; i++) { |
| 461 | printk(KERN_EMERG "%4i Target : ", i); | 502 | decode_address(buf, (unsigned long)bfin_read_TBUF()); |
| 462 | printk_address((unsigned long)bfin_read_TBUF()); | 503 | printk(KERN_NOTICE "%4i Target : %s\n", i, buf); |
| 463 | printk("\n" KERN_EMERG " Source : "); | 504 | decode_address(buf, (unsigned long)bfin_read_TBUF()); |
| 464 | printk_address((unsigned long)bfin_read_TBUF()); | 505 | printk(KERN_NOTICE " Source : %s\n", buf); |
| 465 | printk("\n"); | ||
| 466 | } | 506 | } |
| 467 | } | 507 | } |
| 468 | 508 | ||
| @@ -474,17 +514,16 @@ void dump_bfin_trace_buffer(void) | |||
| 474 | 514 | ||
| 475 | j = (1 << CONFIG_DEBUG_BFIN_HWTRACE_EXPAND_LEN) * 128; | 515 | j = (1 << CONFIG_DEBUG_BFIN_HWTRACE_EXPAND_LEN) * 128; |
| 476 | while (j) { | 516 | while (j) { |
| 477 | printk(KERN_EMERG "%4i Target : ", i); | 517 | decode_address(buf, software_trace_buff[index]); |
| 478 | printk_address(software_trace_buff[index]); | 518 | printk(KERN_NOTICE "%4i Target : %s\n", i, buf); |
| 479 | index -= 1; | 519 | index -= 1; |
| 480 | if (index < 0 ) | 520 | if (index < 0 ) |
| 481 | index = EXPAND_LEN; | 521 | index = EXPAND_LEN; |
| 482 | printk("\n" KERN_EMERG " Source : "); | 522 | decode_address(buf, software_trace_buff[index]); |
| 483 | printk_address(software_trace_buff[index]); | 523 | printk(KERN_NOTICE " Source : %s\n", buf); |
| 484 | index -= 1; | 524 | index -= 1; |
| 485 | if (index < 0) | 525 | if (index < 0) |
| 486 | index = EXPAND_LEN; | 526 | index = EXPAND_LEN; |
| 487 | printk("\n"); | ||
| 488 | j--; | 527 | j--; |
| 489 | i++; | 528 | i++; |
| 490 | } | 529 | } |
| @@ -499,10 +538,7 @@ static void show_trace(struct task_struct *tsk, unsigned long *sp) | |||
| 499 | { | 538 | { |
| 500 | unsigned long addr; | 539 | unsigned long addr; |
| 501 | 540 | ||
| 502 | printk("\nCall Trace:"); | 541 | printk(KERN_NOTICE "\n" KERN_NOTICE "Call Trace:\n"); |
| 503 | #ifdef CONFIG_KALLSYMS | ||
| 504 | printk("\n"); | ||
| 505 | #endif | ||
| 506 | 542 | ||
| 507 | while (!kstack_end(sp)) { | 543 | while (!kstack_end(sp)) { |
| 508 | addr = *sp++; | 544 | addr = *sp++; |
| @@ -518,7 +554,7 @@ static void show_trace(struct task_struct *tsk, unsigned long *sp) | |||
| 518 | print_ip_sym(addr); | 554 | print_ip_sym(addr); |
| 519 | } | 555 | } |
| 520 | 556 | ||
| 521 | printk("\n"); | 557 | printk(KERN_NOTICE "\n"); |
| 522 | } | 558 | } |
| 523 | 559 | ||
| 524 | void show_stack(struct task_struct *task, unsigned long *stack) | 560 | void show_stack(struct task_struct *task, unsigned long *stack) |
| @@ -540,14 +576,15 @@ void show_stack(struct task_struct *task, unsigned long *stack) | |||
| 540 | addr = (unsigned long)stack; | 576 | addr = (unsigned long)stack; |
| 541 | endstack = (unsigned long *)PAGE_ALIGN(addr); | 577 | endstack = (unsigned long *)PAGE_ALIGN(addr); |
| 542 | 578 | ||
| 543 | printk(KERN_EMERG "Stack from %08lx:", (unsigned long)stack); | 579 | printk(KERN_NOTICE "Stack from %08lx:", (unsigned long)stack); |
| 544 | for (i = 0; i < kstack_depth_to_print; i++) { | 580 | for (i = 0; i < kstack_depth_to_print; i++) { |
| 545 | if (stack + 1 > endstack) | 581 | if (stack + 1 > endstack) |
| 546 | break; | 582 | break; |
| 547 | if (i % 8 == 0) | 583 | if (i % 8 == 0) |
| 548 | printk("\n" KERN_EMERG " "); | 584 | printk("\n" KERN_NOTICE " "); |
| 549 | printk(" %08lx", *stack++); | 585 | printk(" %08lx", *stack++); |
| 550 | } | 586 | } |
| 587 | printk("\n"); | ||
| 551 | 588 | ||
| 552 | show_trace(task, stack); | 589 | show_trace(task, stack); |
| 553 | } | 590 | } |
| @@ -568,33 +605,34 @@ EXPORT_SYMBOL(dump_stack); | |||
| 568 | 605 | ||
| 569 | void dump_bfin_regs(struct pt_regs *fp, void *retaddr) | 606 | void dump_bfin_regs(struct pt_regs *fp, void *retaddr) |
| 570 | { | 607 | { |
| 571 | if (current->pid) { | 608 | char buf [150]; |
| 572 | printk(KERN_EMERG "\n" KERN_EMERG "CURRENT PROCESS:\n" | 609 | |
| 573 | KERN_EMERG "\n"); | 610 | if (!oops_in_progress) { |
| 574 | printk(KERN_EMERG "COMM=%s PID=%d\n", | 611 | if (current->pid && current->mm) { |
| 575 | current->comm, current->pid); | 612 | printk(KERN_NOTICE "\n" KERN_NOTICE "CURRENT PROCESS:\n"); |
| 613 | printk(KERN_NOTICE "COMM=%s PID=%d\n", | ||
| 614 | current->comm, current->pid); | ||
| 615 | |||
| 616 | printk(KERN_NOTICE "TEXT = 0x%p-0x%p DATA = 0x%p-0x%p\n" | ||
| 617 | KERN_NOTICE "BSS = 0x%p-0x%p USER-STACK = 0x%p\n" | ||
| 618 | KERN_NOTICE "\n", | ||
| 619 | (void *)current->mm->start_code, | ||
| 620 | (void *)current->mm->end_code, | ||
| 621 | (void *)current->mm->start_data, | ||
| 622 | (void *)current->mm->end_data, | ||
| 623 | (void *)current->mm->end_data, | ||
| 624 | (void *)current->mm->brk, | ||
| 625 | (void *)current->mm->start_stack); | ||
| 626 | } else { | ||
| 627 | printk (KERN_NOTICE "\n" KERN_NOTICE | ||
| 628 | "No Valid pid - Either things are really messed up," | ||
| 629 | " or you are in the kernel\n"); | ||
| 630 | } | ||
| 576 | } else { | 631 | } else { |
| 577 | printk | 632 | printk(KERN_NOTICE "Kernel or interrupt exception\n"); |
| 578 | (KERN_EMERG "\n" KERN_EMERG | ||
| 579 | "No Valid pid - Either things are really messed up," | ||
| 580 | " or you are in the kernel\n"); | ||
| 581 | } | ||
| 582 | |||
| 583 | if (current->mm) { | ||
| 584 | printk(KERN_EMERG "TEXT = 0x%p-0x%p DATA = 0x%p-0x%p\n" | ||
| 585 | KERN_EMERG "BSS = 0x%p-0x%p USER-STACK = 0x%p\n" | ||
| 586 | KERN_EMERG "\n", | ||
| 587 | (void *)current->mm->start_code, | ||
| 588 | (void *)current->mm->end_code, | ||
| 589 | (void *)current->mm->start_data, | ||
| 590 | (void *)current->mm->end_data, | ||
| 591 | (void *)current->mm->end_data, | ||
| 592 | (void *)current->mm->brk, | ||
| 593 | (void *)current->mm->start_stack); | ||
| 594 | } | 633 | } |
| 595 | 634 | ||
| 596 | printk(KERN_EMERG "return address: [0x%p]; contents of:", retaddr); | 635 | if (retaddr >= (void *)FIXED_CODE_START && retaddr < (void *)physical_mem_end |
| 597 | if (retaddr != 0 && retaddr <= (void *)physical_mem_end | ||
| 598 | #if L1_CODE_LENGTH != 0 | 636 | #if L1_CODE_LENGTH != 0 |
| 599 | /* FIXME: Copy the code out of L1 Instruction SRAM through dma | 637 | /* FIXME: Copy the code out of L1 Instruction SRAM through dma |
| 600 | memcpy. */ | 638 | memcpy. */ |
| @@ -604,18 +642,20 @@ void dump_bfin_regs(struct pt_regs *fp, void *retaddr) | |||
| 604 | ) { | 642 | ) { |
| 605 | int i = ((unsigned int)retaddr & 0xFFFFFFF0) - 32; | 643 | int i = ((unsigned int)retaddr & 0xFFFFFFF0) - 32; |
| 606 | unsigned short x = 0; | 644 | unsigned short x = 0; |
| 645 | printk(KERN_NOTICE "return address: [0x%p]; contents of:", retaddr); | ||
| 607 | for (; i < ((unsigned int)retaddr & 0xFFFFFFF0) + 32; i += 2) { | 646 | for (; i < ((unsigned int)retaddr & 0xFFFFFFF0) + 32; i += 2) { |
| 608 | if (!(i & 0xF)) | 647 | if (!(i & 0xF)) |
| 609 | printk("\n" KERN_EMERG "0x%08x: ", i); | 648 | printk("\n" KERN_NOTICE "0x%08x: ", i); |
| 610 | 649 | ||
| 611 | if (get_user(x, (unsigned short *)i)) | 650 | if (get_user(x, (unsigned short *)i)) |
| 612 | break; | 651 | break; |
| 613 | #ifndef CONFIG_DEBUG_HWERR | 652 | #ifndef CONFIG_DEBUG_HWERR |
| 614 | /* If one of the last few instructions was a STI | 653 | /* If one of the last few instructions was a STI |
| 615 | * it is likely that the error occured awhile ago | 654 | * it is likely that the error occured awhile ago |
| 616 | * and we just noticed | 655 | * and we just noticed. This only happens in kernel |
| 656 | * context, which should mean an oops is happening | ||
| 617 | */ | 657 | */ |
| 618 | if (x >= 0x0040 && x <= 0x0047 && i <= 0) | 658 | if (oops_in_progress && x >= 0x0040 && x <= 0x0047 && i <= 0) |
| 619 | panic("\n\nWARNING : You should reconfigure" | 659 | panic("\n\nWARNING : You should reconfigure" |
| 620 | " the kernel to turn on\n" | 660 | " the kernel to turn on\n" |
| 621 | " 'Hardware error interrupt" | 661 | " 'Hardware error interrupt" |
| @@ -628,56 +668,60 @@ void dump_bfin_regs(struct pt_regs *fp, void *retaddr) | |||
| 628 | else | 668 | else |
| 629 | printk(" %04x ", x); | 669 | printk(" %04x ", x); |
| 630 | } | 670 | } |
| 631 | printk("\n" KERN_EMERG "\n"); | 671 | printk("\n"); |
| 632 | } else | 672 | } else |
| 633 | printk(KERN_EMERG | 673 | printk("\n" KERN_NOTICE |
| 634 | "Cannot look at the [PC] for it is" | 674 | "Cannot look at the [PC] for it is" |
| 635 | "in unreadable L1 SRAM - sorry\n"); | 675 | " in unreadable memory - sorry\n"); |
| 676 | |||
| 677 | printk(KERN_NOTICE "\n" KERN_NOTICE "SEQUENCER STATUS:\n"); | ||
| 678 | printk(KERN_NOTICE " SEQSTAT: %08lx IPEND: %04lx SYSCFG: %04lx\n", | ||
| 679 | (long)fp->seqstat, fp->ipend, fp->syscfg); | ||
| 636 | 680 | ||
| 681 | decode_address(buf, fp->rete); | ||
| 682 | printk(KERN_NOTICE " RETE: %s\n", buf); | ||
| 683 | decode_address(buf, fp->retn); | ||
| 684 | printk(KERN_NOTICE " RETN: %s\n", buf); | ||
| 685 | decode_address(buf, fp->retx); | ||
| 686 | printk(KERN_NOTICE " RETX: %s\n", buf); | ||
| 687 | decode_address(buf, fp->rets); | ||
| 688 | printk(KERN_NOTICE " RETS: %s\n", buf); | ||
| 637 | 689 | ||
| 638 | printk(KERN_EMERG | 690 | if ((long)fp->seqstat & SEQSTAT_EXCAUSE) { |
| 639 | "RETE: %08lx RETN: %08lx RETX: %08lx RETS: %08lx\n", | 691 | decode_address(buf, bfin_read_DCPLB_FAULT_ADDR()); |
| 640 | fp->rete, fp->retn, fp->retx, fp->rets); | 692 | printk(KERN_NOTICE "DCPLB_FAULT_ADDR: %s\n", buf); |
| 641 | printk(KERN_EMERG "IPEND: %04lx SYSCFG: %04lx\n", | 693 | decode_address(buf, bfin_read_ICPLB_FAULT_ADDR()); |
| 642 | fp->ipend, fp->syscfg); | 694 | printk(KERN_NOTICE "ICPLB_FAULT_ADDR: %s\n", buf); |
| 643 | printk(KERN_EMERG "SEQSTAT: %08lx SP: %08lx\n", | 695 | } |
| 644 | (long)fp->seqstat, (long)fp); | 696 | |
| 645 | printk(KERN_EMERG "R0: %08lx R1: %08lx R2: %08lx R3: %08lx\n", | 697 | printk(KERN_NOTICE "\n" KERN_NOTICE "PROCESSOR STATE:\n"); |
| 698 | printk(KERN_NOTICE " R0 : %08lx R1 : %08lx R2 : %08lx R3 : %08lx\n", | ||
| 646 | fp->r0, fp->r1, fp->r2, fp->r3); | 699 | fp->r0, fp->r1, fp->r2, fp->r3); |
| 647 | printk(KERN_EMERG "R4: %08lx R5: %08lx R6: %08lx R7: %08lx\n", | 700 | printk(KERN_NOTICE " R4 : %08lx R5 : %08lx R6 : %08lx R7 : %08lx\n", |
| 648 | fp->r4, fp->r5, fp->r6, fp->r7); | 701 | fp->r4, fp->r5, fp->r6, fp->r7); |
| 649 | printk(KERN_EMERG "P0: %08lx P1: %08lx P2: %08lx P3: %08lx\n", | 702 | printk(KERN_NOTICE " P0 : %08lx P1 : %08lx P2 : %08lx P3 : %08lx\n", |
| 650 | fp->p0, fp->p1, fp->p2, fp->p3); | 703 | fp->p0, fp->p1, fp->p2, fp->p3); |
| 651 | printk(KERN_EMERG | 704 | printk(KERN_NOTICE " P4 : %08lx P5 : %08lx FP : %08lx SP : %08lx\n", |
| 652 | "P4: %08lx P5: %08lx FP: %08lx\n", | 705 | fp->p4, fp->p5, fp->fp, (long)fp); |
| 653 | fp->p4, fp->p5, fp->fp); | 706 | printk(KERN_NOTICE " LB0: %08lx LT0: %08lx LC0: %08lx\n", |
| 654 | printk(KERN_EMERG | ||
| 655 | "A0.w: %08lx A0.x: %08lx A1.w: %08lx A1.x: %08lx\n", | ||
| 656 | fp->a0w, fp->a0x, fp->a1w, fp->a1x); | ||
| 657 | |||
| 658 | printk(KERN_EMERG "LB0: %08lx LT0: %08lx LC0: %08lx\n", | ||
| 659 | fp->lb0, fp->lt0, fp->lc0); | 707 | fp->lb0, fp->lt0, fp->lc0); |
| 660 | printk(KERN_EMERG "LB1: %08lx LT1: %08lx LC1: %08lx\n", | 708 | printk(KERN_NOTICE " LB1: %08lx LT1: %08lx LC1: %08lx\n", |
| 661 | fp->lb1, fp->lt1, fp->lc1); | 709 | fp->lb1, fp->lt1, fp->lc1); |
| 662 | printk(KERN_EMERG "B0: %08lx L0: %08lx M0: %08lx I0: %08lx\n", | 710 | printk(KERN_NOTICE " B0 : %08lx L0 : %08lx M0 : %08lx I0 : %08lx\n", |
| 663 | fp->b0, fp->l0, fp->m0, fp->i0); | 711 | fp->b0, fp->l0, fp->m0, fp->i0); |
| 664 | printk(KERN_EMERG "B1: %08lx L1: %08lx M1: %08lx I1: %08lx\n", | 712 | printk(KERN_NOTICE " B1 : %08lx L1 : %08lx M1 : %08lx I1 : %08lx\n", |
| 665 | fp->b1, fp->l1, fp->m1, fp->i1); | 713 | fp->b1, fp->l1, fp->m1, fp->i1); |
| 666 | printk(KERN_EMERG "B2: %08lx L2: %08lx M2: %08lx I2: %08lx\n", | 714 | printk(KERN_NOTICE " B2 : %08lx L2 : %08lx M2 : %08lx I2 : %08lx\n", |
| 667 | fp->b2, fp->l2, fp->m2, fp->i2); | 715 | fp->b2, fp->l2, fp->m2, fp->i2); |
| 668 | printk(KERN_EMERG "B3: %08lx L3: %08lx M3: %08lx I3: %08lx\n", | 716 | printk(KERN_NOTICE " B3 : %08lx L3 : %08lx M3 : %08lx I3 : %08lx\n", |
| 669 | fp->b3, fp->l3, fp->m3, fp->i3); | 717 | fp->b3, fp->l3, fp->m3, fp->i3); |
| 718 | printk(KERN_NOTICE "A0.w: %08lx A0.x: %08lx A1.w: %08lx A1.x: %08lx\n", | ||
| 719 | fp->a0w, fp->a0x, fp->a1w, fp->a1x); | ||
| 670 | 720 | ||
| 671 | printk(KERN_EMERG "\n" KERN_EMERG "USP: %08lx ASTAT: %08lx\n", | 721 | printk(KERN_NOTICE "USP : %08lx ASTAT: %08lx\n", |
| 672 | rdusp(), fp->astat); | 722 | rdusp(), fp->astat); |
| 673 | if ((long)fp->seqstat & SEQSTAT_EXCAUSE) { | ||
| 674 | printk(KERN_EMERG "DCPLB_FAULT_ADDR=%p\n", | ||
| 675 | (void *)bfin_read_DCPLB_FAULT_ADDR()); | ||
| 676 | printk(KERN_EMERG "ICPLB_FAULT_ADDR=%p\n", | ||
| 677 | (void *)bfin_read_ICPLB_FAULT_ADDR()); | ||
| 678 | } | ||
| 679 | 723 | ||
| 680 | printk("\n\n"); | 724 | printk(KERN_NOTICE "\n"); |
| 681 | } | 725 | } |
| 682 | 726 | ||
| 683 | #ifdef CONFIG_SYS_BFIN_SPINLOCK_L1 | 727 | #ifdef CONFIG_SYS_BFIN_SPINLOCK_L1 |
| @@ -752,6 +796,8 @@ void panic_cplb_error(int cplb_panic, struct pt_regs *fp) | |||
| 752 | break; | 796 | break; |
| 753 | } | 797 | } |
| 754 | 798 | ||
| 799 | oops_in_progress = 1; | ||
| 800 | |||
| 755 | printk(KERN_EMERG "DCPLB_FAULT_ADDR=%p\n", (void *)bfin_read_DCPLB_FAULT_ADDR()); | 801 | printk(KERN_EMERG "DCPLB_FAULT_ADDR=%p\n", (void *)bfin_read_DCPLB_FAULT_ADDR()); |
| 756 | printk(KERN_EMERG "ICPLB_FAULT_ADDR=%p\n", (void *)bfin_read_ICPLB_FAULT_ADDR()); | 802 | printk(KERN_EMERG "ICPLB_FAULT_ADDR=%p\n", (void *)bfin_read_ICPLB_FAULT_ADDR()); |
| 757 | dump_bfin_regs(fp, (void *)fp->retx); | 803 | dump_bfin_regs(fp, (void *)fp->retx); |
diff --git a/arch/blackfin/kernel/vmlinux.lds.S b/arch/blackfin/kernel/vmlinux.lds.S index eec43674a465..9b75bc83c71f 100644 --- a/arch/blackfin/kernel/vmlinux.lds.S +++ b/arch/blackfin/kernel/vmlinux.lds.S | |||
| @@ -172,9 +172,14 @@ SECTIONS | |||
| 172 | __ebss_b_l1 = .; | 172 | __ebss_b_l1 = .; |
| 173 | } | 173 | } |
| 174 | 174 | ||
| 175 | ___init_end = LOADADDR(.data_b_l1) + SIZEOF(.data_b_l1); | 175 | /* Force trailing alignment of our init section so that when we |
| 176 | 176 | * free our init memory, we don't leave behind a partial page. | |
| 177 | .bss LOADADDR(.data_b_l1) + SIZEOF(.data_b_l1) : | 177 | */ |
| 178 | . = LOADADDR(.data_b_l1) + SIZEOF(.data_b_l1); | ||
| 179 | . = ALIGN(PAGE_SIZE); | ||
| 180 | ___init_end = .; | ||
| 181 | |||
| 182 | .bss : | ||
| 178 | { | 183 | { |
| 179 | . = ALIGN(4); | 184 | . = ALIGN(4); |
| 180 | ___bss_start = .; | 185 | ___bss_start = .; |
diff --git a/arch/blackfin/mach-bf527/boards/ezkit.c b/arch/blackfin/mach-bf527/boards/ezkit.c index 3e884f3a8182..bf1bedcc8868 100644 --- a/arch/blackfin/mach-bf527/boards/ezkit.c +++ b/arch/blackfin/mach-bf527/boards/ezkit.c | |||
| @@ -41,9 +41,11 @@ | |||
| 41 | #include <linux/irq.h> | 41 | #include <linux/irq.h> |
| 42 | #include <linux/interrupt.h> | 42 | #include <linux/interrupt.h> |
| 43 | #include <linux/usb_sl811.h> | 43 | #include <linux/usb_sl811.h> |
| 44 | #include <asm/cplb.h> | ||
| 44 | #include <asm/dma.h> | 45 | #include <asm/dma.h> |
| 45 | #include <asm/bfin5xx_spi.h> | 46 | #include <asm/bfin5xx_spi.h> |
| 46 | #include <asm/reboot.h> | 47 | #include <asm/reboot.h> |
| 48 | #include <asm/nand.h> | ||
| 47 | #include <linux/spi/ad7877.h> | 49 | #include <linux/spi/ad7877.h> |
| 48 | 50 | ||
| 49 | /* | 51 | /* |
| @@ -102,6 +104,53 @@ void __exit bfin_isp1761_exit(void) | |||
| 102 | arch_initcall(bfin_isp1761_init); | 104 | arch_initcall(bfin_isp1761_init); |
| 103 | #endif | 105 | #endif |
| 104 | 106 | ||
| 107 | #if defined(CONFIG_MTD_NAND_BF5XX) || defined(CONFIG_MTD_NAND_BF5XX_MODULE) | ||
| 108 | static struct mtd_partition partition_info[] = { | ||
| 109 | { | ||
| 110 | .name = "Linux Kernel", | ||
| 111 | .offset = 0, | ||
| 112 | .size = 4 * SIZE_1M, | ||
| 113 | }, | ||
| 114 | { | ||
| 115 | .name = "File System", | ||
| 116 | .offset = 4 * SIZE_1M, | ||
| 117 | .size = (256 - 4) * SIZE_1M, | ||
| 118 | }, | ||
| 119 | }; | ||
| 120 | |||
| 121 | static struct bf5xx_nand_platform bf5xx_nand_platform = { | ||
| 122 | .page_size = NFC_PG_SIZE_256, | ||
| 123 | .data_width = NFC_NWIDTH_8, | ||
| 124 | .partitions = partition_info, | ||
| 125 | .nr_partitions = ARRAY_SIZE(partition_info), | ||
| 126 | .rd_dly = 3, | ||
| 127 | .wr_dly = 3, | ||
| 128 | }; | ||
| 129 | |||
| 130 | static struct resource bf5xx_nand_resources[] = { | ||
| 131 | { | ||
| 132 | .start = NFC_CTL, | ||
| 133 | .end = NFC_DATA_RD + 2, | ||
| 134 | .flags = IORESOURCE_MEM, | ||
| 135 | }, | ||
| 136 | { | ||
| 137 | .start = CH_NFC, | ||
| 138 | .end = CH_NFC, | ||
| 139 | .flags = IORESOURCE_IRQ, | ||
| 140 | }, | ||
| 141 | }; | ||
| 142 | |||
| 143 | static struct platform_device bf5xx_nand_device = { | ||
| 144 | .name = "bf5xx-nand", | ||
| 145 | .id = 0, | ||
| 146 | .num_resources = ARRAY_SIZE(bf5xx_nand_resources), | ||
| 147 | .resource = bf5xx_nand_resources, | ||
| 148 | .dev = { | ||
| 149 | .platform_data = &bf5xx_nand_platform, | ||
| 150 | }, | ||
| 151 | }; | ||
| 152 | #endif | ||
| 153 | |||
| 105 | #if defined(CONFIG_BFIN_CFPCMCIA) || defined(CONFIG_BFIN_CFPCMCIA_MODULE) | 154 | #if defined(CONFIG_BFIN_CFPCMCIA) || defined(CONFIG_BFIN_CFPCMCIA_MODULE) |
| 106 | static struct resource bfin_pcmcia_cf_resources[] = { | 155 | static struct resource bfin_pcmcia_cf_resources[] = { |
| 107 | { | 156 | { |
| @@ -650,6 +699,10 @@ static struct platform_device bfin_pata_device = { | |||
| 650 | #endif | 699 | #endif |
| 651 | 700 | ||
| 652 | static struct platform_device *stamp_devices[] __initdata = { | 701 | static struct platform_device *stamp_devices[] __initdata = { |
| 702 | #if defined(CONFIG_MTD_NAND_BF5XX) || defined(CONFIG_MTD_NAND_BF5XX_MODULE) | ||
| 703 | &bf5xx_nand_device, | ||
| 704 | #endif | ||
| 705 | |||
| 653 | #if defined(CONFIG_BFIN_CFPCMCIA) || defined(CONFIG_BFIN_CFPCMCIA_MODULE) | 706 | #if defined(CONFIG_BFIN_CFPCMCIA) || defined(CONFIG_BFIN_CFPCMCIA_MODULE) |
| 654 | &bfin_pcmcia_cf_device, | 707 | &bfin_pcmcia_cf_device, |
| 655 | #endif | 708 | #endif |
diff --git a/arch/blackfin/mach-bf533/boards/H8606.c b/arch/blackfin/mach-bf533/boards/H8606.c new file mode 100644 index 000000000000..b941550f9568 --- /dev/null +++ b/arch/blackfin/mach-bf533/boards/H8606.c | |||
| @@ -0,0 +1,345 @@ | |||
| 1 | /* | ||
| 2 | * File: arch/blackfin/mach-bf533/H8606.c | ||
| 3 | * Based on: arch/blackfin/mach-bf533/stamp.c | ||
| 4 | * Author: Javier Herrero <jherrero@hvsistemas.es> | ||
| 5 | * | ||
| 6 | * Created: 2007 | ||
| 7 | * Description: Board Info File for the HV Sistemas H8606 board | ||
| 8 | * | ||
| 9 | * Modified: | ||
| 10 | * Copyright 2005 National ICT Australia (NICTA) | ||
| 11 | * Copyright 2004-2006 Analog Devices Inc | ||
| 12 | * Copyright 2007 HV Sistemas S.L. | ||
| 13 | * | ||
| 14 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ | ||
| 15 | * | ||
| 16 | * This program is free software; you can redistribute it and/or modify | ||
| 17 | * it under the terms of the GNU General Public License as published by | ||
| 18 | * the Free Software Foundation; either version 2 of the License, or | ||
| 19 | * (at your option) any later version. | ||
| 20 | * | ||
| 21 | * This program is distributed in the hope that it will be useful, | ||
| 22 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 23 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 24 | * GNU General Public License for more details. | ||
| 25 | * | ||
| 26 | * You should have received a copy of the GNU General Public License | ||
| 27 | * along with this program; if not, see the file COPYING, or write | ||
| 28 | * to the Free Software Foundation, Inc., | ||
| 29 | * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | ||
| 30 | */ | ||
| 31 | |||
| 32 | #include <linux/device.h> | ||
| 33 | #include <linux/platform_device.h> | ||
| 34 | #include <linux/mtd/mtd.h> | ||
| 35 | #include <linux/mtd/partitions.h> | ||
| 36 | #include <linux/spi/spi.h> | ||
| 37 | #include <linux/spi/flash.h> | ||
| 38 | #if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE) | ||
| 39 | #include <linux/usb_isp1362.h> | ||
| 40 | #endif | ||
| 41 | #include <linux/pata_platform.h> | ||
| 42 | #include <linux/irq.h> | ||
| 43 | #include <asm/dma.h> | ||
| 44 | #include <asm/bfin5xx_spi.h> | ||
| 45 | #include <asm/reboot.h> | ||
| 46 | |||
| 47 | /* | ||
| 48 | * Name the Board for the /proc/cpuinfo | ||
| 49 | */ | ||
| 50 | const char bfin_board_name[] = "HV Sistemas H8606"; | ||
| 51 | |||
| 52 | #if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_BFIN_MODULE) | ||
| 53 | static struct platform_device rtc_device = { | ||
| 54 | .name = "rtc-bfin", | ||
| 55 | .id = -1, | ||
| 56 | }; | ||
| 57 | #endif | ||
| 58 | |||
| 59 | /* | ||
| 60 | * Driver needs to know address, irq and flag pin. | ||
| 61 | */ | ||
| 62 | #if defined(CONFIG_DM9000) || defined(CONFIG_DM9000_MODULE) | ||
| 63 | static struct resource dm9000_resources[] = { | ||
| 64 | [0] = { | ||
| 65 | .start = 0x20300000, | ||
| 66 | .end = 0x20300000 + 8, | ||
| 67 | .flags = IORESOURCE_MEM, | ||
| 68 | }, | ||
| 69 | [1] = { | ||
| 70 | .start = IRQ_PF10, | ||
| 71 | .end = IRQ_PF10, | ||
| 72 | .flags = (IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE), | ||
| 73 | }, | ||
| 74 | }; | ||
| 75 | |||
| 76 | static struct platform_device dm9000_device = { | ||
| 77 | .id = 0, | ||
| 78 | .name = "dm9000", | ||
| 79 | .resource = dm9000_resources, | ||
| 80 | .num_resources = ARRAY_SIZE(dm9000_resources), | ||
| 81 | }; | ||
| 82 | #endif | ||
| 83 | |||
| 84 | #if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE) | ||
| 85 | static struct resource smc91x_resources[] = { | ||
| 86 | { | ||
| 87 | .name = "smc91x-regs", | ||
| 88 | .start = 0x20300300, | ||
| 89 | .end = 0x20300300 + 16, | ||
| 90 | .flags = IORESOURCE_MEM, | ||
| 91 | }, { | ||
| 92 | .start = IRQ_PROG_INTB, | ||
| 93 | .end = IRQ_PROG_INTB, | ||
| 94 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, | ||
| 95 | }, { | ||
| 96 | /* | ||
| 97 | * denotes the flag pin and is used directly if | ||
| 98 | * CONFIG_IRQCHIP_DEMUX_GPIO is defined. | ||
| 99 | */ | ||
| 100 | .start = IRQ_PF7, | ||
| 101 | .end = IRQ_PF7, | ||
| 102 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, | ||
| 103 | }, | ||
| 104 | }; | ||
| 105 | |||
| 106 | static struct platform_device smc91x_device = { | ||
| 107 | .name = "smc91x", | ||
| 108 | .id = 0, | ||
| 109 | .num_resources = ARRAY_SIZE(smc91x_resources), | ||
| 110 | .resource = smc91x_resources, | ||
| 111 | }; | ||
| 112 | #endif | ||
| 113 | |||
| 114 | #if defined(CONFIG_USB_NET2272) || defined(CONFIG_USB_NET2272_MODULE) | ||
| 115 | static struct resource net2272_bfin_resources[] = { | ||
| 116 | { | ||
| 117 | .start = 0x20300000, | ||
| 118 | .end = 0x20300000 + 0x100, | ||
| 119 | .flags = IORESOURCE_MEM, | ||
| 120 | }, { | ||
| 121 | .start = IRQ_PF10, | ||
| 122 | .end = IRQ_PF10, | ||
| 123 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, | ||
| 124 | }, | ||
| 125 | }; | ||
| 126 | |||
| 127 | static struct platform_device net2272_bfin_device = { | ||
| 128 | .name = "net2272", | ||
| 129 | .id = -1, | ||
| 130 | .num_resources = ARRAY_SIZE(net2272_bfin_resources), | ||
| 131 | .resource = net2272_bfin_resources, | ||
| 132 | }; | ||
| 133 | #endif | ||
| 134 | |||
| 135 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) | ||
| 136 | /* all SPI peripherals info goes here */ | ||
| 137 | |||
| 138 | #if defined(CONFIG_MTD_M25P80) || defined(CONFIG_MTD_M25P80_MODULE) | ||
| 139 | static struct mtd_partition bfin_spi_flash_partitions[] = { | ||
| 140 | { | ||
| 141 | .name = "bootloader", | ||
| 142 | .size = 0x00060000, | ||
| 143 | .offset = 0, | ||
| 144 | .mask_flags = MTD_CAP_ROM | ||
| 145 | }, { | ||
| 146 | .name = "kernel", | ||
| 147 | .size = 0x100000, | ||
| 148 | .offset = 0x60000 | ||
| 149 | }, { | ||
| 150 | .name = "file system", | ||
| 151 | .size = 0x6a0000, | ||
| 152 | .offset = 0x00160000, | ||
| 153 | } | ||
| 154 | }; | ||
| 155 | |||
| 156 | static struct flash_platform_data bfin_spi_flash_data = { | ||
| 157 | .name = "m25p80", | ||
| 158 | .parts = bfin_spi_flash_partitions, | ||
| 159 | .nr_parts = ARRAY_SIZE(bfin_spi_flash_partitions), | ||
| 160 | .type = "m25p64", | ||
| 161 | }; | ||
| 162 | |||
| 163 | /* SPI flash chip (m25p64) */ | ||
| 164 | static struct bfin5xx_spi_chip spi_flash_chip_info = { | ||
| 165 | .enable_dma = 0, /* use dma transfer with this chip*/ | ||
| 166 | .bits_per_word = 8, | ||
| 167 | }; | ||
| 168 | #endif | ||
| 169 | |||
| 170 | #if defined(CONFIG_SPI_ADC_BF533) || defined(CONFIG_SPI_ADC_BF533_MODULE) | ||
| 171 | /* SPI ADC chip */ | ||
| 172 | static struct bfin5xx_spi_chip spi_adc_chip_info = { | ||
| 173 | .ctl_reg = 0x1000, | ||
| 174 | .enable_dma = 1, /* use dma transfer with this chip*/ | ||
| 175 | .bits_per_word = 16, | ||
| 176 | }; | ||
| 177 | #endif | ||
| 178 | |||
| 179 | #if defined(CONFIG_SND_BLACKFIN_AD1836) || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE) | ||
| 180 | static struct bfin5xx_spi_chip ad1836_spi_chip_info = { | ||
| 181 | .ctl_reg = 0x1000, | ||
| 182 | .enable_dma = 0, | ||
| 183 | .bits_per_word = 16, | ||
| 184 | }; | ||
| 185 | #endif | ||
| 186 | |||
| 187 | #if defined(CONFIG_PBX) | ||
| 188 | static struct bfin5xx_spi_chip spi_si3xxx_chip_info = { | ||
| 189 | .ctl_reg = 0x1c04, | ||
| 190 | .enable_dma = 0, | ||
| 191 | .bits_per_word = 8, | ||
| 192 | .cs_change_per_word = 1, | ||
| 193 | }; | ||
| 194 | #endif | ||
| 195 | |||
| 196 | /* Notice: for blackfin, the speed_hz is the value of register | ||
| 197 | * SPI_BAUD, not the real baudrate */ | ||
| 198 | static struct spi_board_info bfin_spi_board_info[] __initdata = { | ||
| 199 | #if defined(CONFIG_MTD_M25P80) || defined(CONFIG_MTD_M25P80_MODULE) | ||
| 200 | { | ||
| 201 | /* the modalias must be the same as spi device driver name */ | ||
| 202 | .modalias = "m25p80", /* Name of spi_driver for this device */ | ||
| 203 | /* this value is the baudrate divisor */ | ||
| 204 | .max_speed_hz = 50000000, /* actual baudrate is SCLK/(2xspeed_hz) */ | ||
| 205 | .bus_num = 0, /* Framework bus number */ | ||
| 206 | .chip_select = 2, /* Framework chip select. On STAMP537 it is SPISSEL2*/ | ||
| 207 | .platform_data = &bfin_spi_flash_data, | ||
| 208 | .controller_data = &spi_flash_chip_info, | ||
| 209 | .mode = SPI_MODE_3, | ||
| 210 | }, | ||
| 211 | #endif | ||
| 212 | |||
| 213 | #if defined(CONFIG_SPI_ADC_BF533) || defined(CONFIG_SPI_ADC_BF533_MODULE) | ||
| 214 | { | ||
| 215 | .modalias = "bfin_spi_adc", /* Name of spi_driver for this device */ | ||
| 216 | .max_speed_hz = 4, /* actual baudrate is SCLK/(2xspeed_hz) */ | ||
| 217 | .bus_num = 1, /* Framework bus number */ | ||
| 218 | .chip_select = 1, /* Framework chip select. */ | ||
| 219 | .platform_data = NULL, /* No spi_driver specific config */ | ||
| 220 | .controller_data = &spi_adc_chip_info, | ||
| 221 | }, | ||
| 222 | #endif | ||
| 223 | |||
| 224 | #if defined(CONFIG_SND_BLACKFIN_AD1836) || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE) | ||
| 225 | { | ||
| 226 | .modalias = "ad1836-spi", | ||
| 227 | .max_speed_hz = 16, | ||
| 228 | .bus_num = 1, | ||
| 229 | .chip_select = CONFIG_SND_BLACKFIN_SPI_PFBIT, | ||
| 230 | .controller_data = &ad1836_spi_chip_info, | ||
| 231 | }, | ||
| 232 | #endif | ||
| 233 | |||
| 234 | #if defined(CONFIG_PBX) | ||
| 235 | { | ||
| 236 | .modalias = "fxs-spi", | ||
| 237 | .max_speed_hz = 4, | ||
| 238 | .bus_num = 1, | ||
| 239 | .chip_select = 3, | ||
| 240 | .controller_data = &spi_si3xxx_chip_info, | ||
| 241 | }, | ||
| 242 | |||
| 243 | { | ||
| 244 | .modalias = "fxo-spi", | ||
| 245 | .max_speed_hz = 4, | ||
| 246 | .bus_num = 1, | ||
| 247 | .chip_select = 2, | ||
| 248 | .controller_data = &spi_si3xxx_chip_info, | ||
| 249 | }, | ||
| 250 | #endif | ||
| 251 | }; | ||
| 252 | |||
| 253 | /* SPI (0) */ | ||
| 254 | static struct resource bfin_spi0_resource[] = { | ||
| 255 | [0] = { | ||
| 256 | .start = SPI0_REGBASE, | ||
| 257 | .end = SPI0_REGBASE + 0xFF, | ||
| 258 | .flags = IORESOURCE_MEM, | ||
| 259 | }, | ||
| 260 | [1] = { | ||
| 261 | .start = CH_SPI, | ||
| 262 | .end = CH_SPI, | ||
| 263 | .flags = IORESOURCE_IRQ, | ||
| 264 | } | ||
| 265 | }; | ||
| 266 | |||
| 267 | |||
| 268 | /* SPI controller data */ | ||
| 269 | static struct bfin5xx_spi_master bfin_spi0_info = { | ||
| 270 | .num_chipselect = 8, | ||
| 271 | .enable_dma = 1, /* master has the ability to do dma transfer */ | ||
| 272 | }; | ||
| 273 | |||
| 274 | static struct platform_device bfin_spi0_device = { | ||
| 275 | .name = "bfin-spi", | ||
| 276 | .id = 0, /* Bus number */ | ||
| 277 | .num_resources = ARRAY_SIZE(bfin_spi0_resource), | ||
| 278 | .resource = bfin_spi0_resource, | ||
| 279 | .dev = { | ||
| 280 | .platform_data = &bfin_spi0_info, /* Passed to driver */ | ||
| 281 | }, | ||
| 282 | }; | ||
| 283 | #endif /* spi master and devices */ | ||
| 284 | |||
| 285 | #if defined(CONFIG_FB_BF537_LQ035) || defined(CONFIG_FB_BF537_LQ035_MODULE) | ||
| 286 | static struct platform_device bfin_fb_device = { | ||
| 287 | .name = "bf537-fb", | ||
| 288 | }; | ||
| 289 | #endif | ||
| 290 | |||
| 291 | #if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) | ||
| 292 | static struct resource bfin_uart_resources[] = { | ||
| 293 | { | ||
| 294 | .start = 0xFFC00400, | ||
| 295 | .end = 0xFFC004FF, | ||
| 296 | .flags = IORESOURCE_MEM, | ||
| 297 | }, | ||
| 298 | }; | ||
| 299 | |||
| 300 | static struct platform_device bfin_uart_device = { | ||
| 301 | .name = "bfin-uart", | ||
| 302 | .id = 1, | ||
| 303 | .num_resources = ARRAY_SIZE(bfin_uart_resources), | ||
| 304 | .resource = bfin_uart_resources, | ||
| 305 | }; | ||
| 306 | #endif | ||
| 307 | |||
| 308 | static struct platform_device *stamp_devices[] __initdata = { | ||
| 309 | #if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE) | ||
| 310 | &rtc_device, | ||
| 311 | #endif | ||
| 312 | |||
| 313 | #if defined(CONFIG_DM9000) || defined(CONFIG_DM9000_MODULE) | ||
| 314 | &dm9000_device, | ||
| 315 | #endif | ||
| 316 | |||
| 317 | #if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE) | ||
| 318 | &smc91x_device, | ||
| 319 | #endif | ||
| 320 | |||
| 321 | #if defined(CONFIG_USB_NET2272) || defined(CONFIG_USB_NET2272_MODULE) | ||
| 322 | &net2272_bfin_device, | ||
| 323 | #endif | ||
| 324 | |||
| 325 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) | ||
| 326 | &bfin_spi0_device, | ||
| 327 | #endif | ||
| 328 | |||
| 329 | #if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) | ||
| 330 | &bfin_uart_device, | ||
| 331 | #endif | ||
| 332 | }; | ||
| 333 | |||
| 334 | static int __init H8606_init(void) | ||
| 335 | { | ||
| 336 | printk(KERN_INFO "HV Sistemas H8606 board support by http://www.hvsistemas.com\n"); | ||
| 337 | printk(KERN_INFO "%s(): registering device resources\n", __FUNCTION__); | ||
| 338 | platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices)); | ||
| 339 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) | ||
| 340 | spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info)); | ||
| 341 | #endif | ||
| 342 | return 0; | ||
| 343 | } | ||
| 344 | |||
| 345 | arch_initcall(H8606_init); \ No newline at end of file | ||
diff --git a/arch/blackfin/mach-bf533/boards/Makefile b/arch/blackfin/mach-bf533/boards/Makefile index 12a631ab389d..2452b456ccbd 100644 --- a/arch/blackfin/mach-bf533/boards/Makefile +++ b/arch/blackfin/mach-bf533/boards/Makefile | |||
| @@ -6,3 +6,4 @@ obj-$(CONFIG_GENERIC_BOARD) += generic_board.o | |||
| 6 | obj-$(CONFIG_BFIN533_STAMP) += stamp.o | 6 | obj-$(CONFIG_BFIN533_STAMP) += stamp.o |
| 7 | obj-$(CONFIG_BFIN533_EZKIT) += ezkit.o | 7 | obj-$(CONFIG_BFIN533_EZKIT) += ezkit.o |
| 8 | obj-$(CONFIG_BFIN533_BLUETECHNIX_CM) += cm_bf533.o | 8 | obj-$(CONFIG_BFIN533_BLUETECHNIX_CM) += cm_bf533.o |
| 9 | obj-$(CONFIG_H8606_HVSISTEMAS) += H8606.o | ||
diff --git a/arch/blackfin/mach-bf533/boards/cm_bf533.c b/arch/blackfin/mach-bf533/boards/cm_bf533.c index 1c5a86adfab7..a863522a4467 100644 --- a/arch/blackfin/mach-bf533/boards/cm_bf533.c +++ b/arch/blackfin/mach-bf533/boards/cm_bf533.c | |||
| @@ -46,7 +46,7 @@ const char bfin_board_name[] = "Bluetechnix CM BF533"; | |||
| 46 | 46 | ||
| 47 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) | 47 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) |
| 48 | /* all SPI peripherals info goes here */ | 48 | /* all SPI peripherals info goes here */ |
| 49 | 49 | #if defined(CONFIG_MTD_M25P80) || defined(CONFIG_MTD_M25P80_MODULE) | |
| 50 | static struct mtd_partition bfin_spi_flash_partitions[] = { | 50 | static struct mtd_partition bfin_spi_flash_partitions[] = { |
| 51 | { | 51 | { |
| 52 | .name = "bootloader", | 52 | .name = "bootloader", |
| @@ -76,12 +76,15 @@ static struct bfin5xx_spi_chip spi_flash_chip_info = { | |||
| 76 | .enable_dma = 0, /* use dma transfer with this chip*/ | 76 | .enable_dma = 0, /* use dma transfer with this chip*/ |
| 77 | .bits_per_word = 8, | 77 | .bits_per_word = 8, |
| 78 | }; | 78 | }; |
| 79 | #endif | ||
| 79 | 80 | ||
| 80 | /* SPI ADC chip */ | 81 | /* SPI ADC chip */ |
| 82 | #if defined(CONFIG_SPI_ADC_BF533) || defined(CONFIG_SPI_ADC_BF533_MODULE) | ||
| 81 | static struct bfin5xx_spi_chip spi_adc_chip_info = { | 83 | static struct bfin5xx_spi_chip spi_adc_chip_info = { |
| 82 | .enable_dma = 1, /* use dma transfer with this chip*/ | 84 | .enable_dma = 1, /* use dma transfer with this chip*/ |
| 83 | .bits_per_word = 16, | 85 | .bits_per_word = 16, |
| 84 | }; | 86 | }; |
| 87 | #endif | ||
| 85 | 88 | ||
| 86 | #if defined(CONFIG_SND_BLACKFIN_AD1836) || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE) | 89 | #if defined(CONFIG_SND_BLACKFIN_AD1836) || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE) |
| 87 | static struct bfin5xx_spi_chip ad1836_spi_chip_info = { | 90 | static struct bfin5xx_spi_chip ad1836_spi_chip_info = { |
| @@ -90,7 +93,15 @@ static struct bfin5xx_spi_chip ad1836_spi_chip_info = { | |||
| 90 | }; | 93 | }; |
| 91 | #endif | 94 | #endif |
| 92 | 95 | ||
| 96 | #if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE) | ||
| 97 | static struct bfin5xx_spi_chip spi_mmc_chip_info = { | ||
| 98 | .enable_dma = 1, | ||
| 99 | .bits_per_word = 8, | ||
| 100 | }; | ||
| 101 | #endif | ||
| 102 | |||
| 93 | static struct spi_board_info bfin_spi_board_info[] __initdata = { | 103 | static struct spi_board_info bfin_spi_board_info[] __initdata = { |
| 104 | #if defined(CONFIG_MTD_M25P80) || defined(CONFIG_MTD_M25P80_MODULE) | ||
| 94 | { | 105 | { |
| 95 | /* the modalias must be the same as spi device driver name */ | 106 | /* the modalias must be the same as spi device driver name */ |
| 96 | .modalias = "m25p80", /* Name of spi_driver for this device */ | 107 | .modalias = "m25p80", /* Name of spi_driver for this device */ |
| @@ -100,7 +111,11 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { | |||
| 100 | .platform_data = &bfin_spi_flash_data, | 111 | .platform_data = &bfin_spi_flash_data, |
| 101 | .controller_data = &spi_flash_chip_info, | 112 | .controller_data = &spi_flash_chip_info, |
| 102 | .mode = SPI_MODE_3, | 113 | .mode = SPI_MODE_3, |
| 103 | }, { | 114 | }, |
| 115 | #endif | ||
| 116 | |||
| 117 | #if defined(CONFIG_SPI_ADC_BF533) || defined(CONFIG_SPI_ADC_BF533_MODULE) | ||
| 118 | { | ||
| 104 | .modalias = "bfin_spi_adc", /* Name of spi_driver for this device */ | 119 | .modalias = "bfin_spi_adc", /* Name of spi_driver for this device */ |
| 105 | .max_speed_hz = 6250000, /* max spi clock (SCK) speed in HZ */ | 120 | .max_speed_hz = 6250000, /* max spi clock (SCK) speed in HZ */ |
| 106 | .bus_num = 0, /* Framework bus number */ | 121 | .bus_num = 0, /* Framework bus number */ |
| @@ -108,6 +123,8 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { | |||
| 108 | .platform_data = NULL, /* No spi_driver specific config */ | 123 | .platform_data = NULL, /* No spi_driver specific config */ |
| 109 | .controller_data = &spi_adc_chip_info, | 124 | .controller_data = &spi_adc_chip_info, |
| 110 | }, | 125 | }, |
| 126 | #endif | ||
| 127 | |||
| 111 | #if defined(CONFIG_SND_BLACKFIN_AD1836) || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE) | 128 | #if defined(CONFIG_SND_BLACKFIN_AD1836) || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE) |
| 112 | { | 129 | { |
| 113 | .modalias = "ad1836-spi", | 130 | .modalias = "ad1836-spi", |
| @@ -117,6 +134,27 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { | |||
| 117 | .controller_data = &ad1836_spi_chip_info, | 134 | .controller_data = &ad1836_spi_chip_info, |
| 118 | }, | 135 | }, |
| 119 | #endif | 136 | #endif |
| 137 | |||
| 138 | #if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE) | ||
| 139 | { | ||
| 140 | .modalias = "spi_mmc_dummy", | ||
| 141 | .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */ | ||
| 142 | .bus_num = 0, | ||
| 143 | .chip_select = 0, | ||
| 144 | .platform_data = NULL, | ||
| 145 | .controller_data = &spi_mmc_chip_info, | ||
| 146 | .mode = SPI_MODE_3, | ||
| 147 | }, | ||
| 148 | { | ||
| 149 | .modalias = "spi_mmc", | ||
| 150 | .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */ | ||
| 151 | .bus_num = 0, | ||
| 152 | .chip_select = CONFIG_SPI_MMC_CS_CHAN, | ||
| 153 | .platform_data = NULL, | ||
| 154 | .controller_data = &spi_mmc_chip_info, | ||
| 155 | .mode = SPI_MODE_3, | ||
| 156 | }, | ||
| 157 | #endif | ||
| 120 | }; | 158 | }; |
| 121 | 159 | ||
| 122 | /* SPI (0) */ | 160 | /* SPI (0) */ |
diff --git a/arch/blackfin/mach-bf533/boards/stamp.c b/arch/blackfin/mach-bf533/boards/stamp.c index f84be4eabfd1..62ffa500420f 100644 --- a/arch/blackfin/mach-bf533/boards/stamp.c +++ b/arch/blackfin/mach-bf533/boards/stamp.c | |||
| @@ -218,7 +218,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { | |||
| 218 | #if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE) | 218 | #if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE) |
| 219 | { | 219 | { |
| 220 | .modalias = "spi_mmc_dummy", | 220 | .modalias = "spi_mmc_dummy", |
| 221 | .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */ | 221 | .max_speed_hz = 20000000, /* max spi clock (SCK) speed in HZ */ |
| 222 | .bus_num = 0, | 222 | .bus_num = 0, |
| 223 | .chip_select = 0, | 223 | .chip_select = 0, |
| 224 | .platform_data = NULL, | 224 | .platform_data = NULL, |
| @@ -227,7 +227,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { | |||
| 227 | }, | 227 | }, |
| 228 | { | 228 | { |
| 229 | .modalias = "spi_mmc", | 229 | .modalias = "spi_mmc", |
| 230 | .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */ | 230 | .max_speed_hz = 20000000, /* max spi clock (SCK) speed in HZ */ |
| 231 | .bus_num = 0, | 231 | .bus_num = 0, |
| 232 | .chip_select = CONFIG_SPI_MMC_CS_CHAN, | 232 | .chip_select = CONFIG_SPI_MMC_CS_CHAN, |
| 233 | .platform_data = NULL, | 233 | .platform_data = NULL, |
diff --git a/arch/blackfin/mach-bf537/boards/cm_bf537.c b/arch/blackfin/mach-bf537/boards/cm_bf537.c index 52e2320307de..2915931045e3 100644 --- a/arch/blackfin/mach-bf537/boards/cm_bf537.c +++ b/arch/blackfin/mach-bf537/boards/cm_bf537.c | |||
| @@ -281,8 +281,8 @@ static struct resource net2272_bfin_resources[] = { | |||
| 281 | .end = 0x20200000 + 0x100, | 281 | .end = 0x20200000 + 0x100, |
| 282 | .flags = IORESOURCE_MEM, | 282 | .flags = IORESOURCE_MEM, |
| 283 | }, { | 283 | }, { |
| 284 | .start = IRQ_PF7, | 284 | .start = IRQ_PH14, |
| 285 | .end = IRQ_PF7, | 285 | .end = IRQ_PH14, |
| 286 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, | 286 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, |
| 287 | }, | 287 | }, |
| 288 | }; | 288 | }; |
diff --git a/arch/blackfin/mach-bf537/boards/stamp.c b/arch/blackfin/mach-bf537/boards/stamp.c index cc41f6c2ef4f..5f7b91fbafe8 100644 --- a/arch/blackfin/mach-bf537/boards/stamp.c +++ b/arch/blackfin/mach-bf537/boards/stamp.c | |||
| @@ -450,7 +450,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { | |||
| 450 | #if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE) | 450 | #if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE) |
| 451 | { | 451 | { |
| 452 | .modalias = "spi_mmc_dummy", | 452 | .modalias = "spi_mmc_dummy", |
| 453 | .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */ | 453 | .max_speed_hz = 20000000, /* max spi clock (SCK) speed in HZ */ |
| 454 | .bus_num = 0, | 454 | .bus_num = 0, |
| 455 | .chip_select = 0, | 455 | .chip_select = 0, |
| 456 | .platform_data = NULL, | 456 | .platform_data = NULL, |
| @@ -459,7 +459,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { | |||
| 459 | }, | 459 | }, |
| 460 | { | 460 | { |
| 461 | .modalias = "spi_mmc", | 461 | .modalias = "spi_mmc", |
| 462 | .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */ | 462 | .max_speed_hz = 20000000, /* max spi clock (SCK) speed in HZ */ |
| 463 | .bus_num = 0, | 463 | .bus_num = 0, |
| 464 | .chip_select = CONFIG_SPI_MMC_CS_CHAN, | 464 | .chip_select = CONFIG_SPI_MMC_CS_CHAN, |
| 465 | .platform_data = NULL, | 465 | .platform_data = NULL, |
| @@ -612,7 +612,7 @@ static struct platform_device bfin_sport1_uart_device = { | |||
| 612 | 612 | ||
| 613 | static struct pata_platform_info bfin_pata_platform_data = { | 613 | static struct pata_platform_info bfin_pata_platform_data = { |
| 614 | .ioport_shift = 1, | 614 | .ioport_shift = 1, |
| 615 | .irq_type = IRQF_TRIGGER_HIGH | IRQF_DISABLED, | 615 | .irq_flags = IRQF_TRIGGER_HIGH | IRQF_DISABLED, |
| 616 | }; | 616 | }; |
| 617 | 617 | ||
| 618 | static struct resource bfin_pata_resources[] = { | 618 | static struct resource bfin_pata_resources[] = { |
diff --git a/arch/blackfin/mach-common/entry.S b/arch/blackfin/mach-common/entry.S index e3ad5802868a..1b13fa470977 100644 --- a/arch/blackfin/mach-common/entry.S +++ b/arch/blackfin/mach-common/entry.S | |||
| @@ -917,7 +917,7 @@ ENTRY(_ex_table) | |||
| 917 | .long _ex_soft_bp /* 0x01 - User Defined - Software breakpoint */ | 917 | .long _ex_soft_bp /* 0x01 - User Defined - Software breakpoint */ |
| 918 | .long _ex_replaceable /* 0x02 - User Defined */ | 918 | .long _ex_replaceable /* 0x02 - User Defined */ |
| 919 | .long _ex_trap_c /* 0x03 - User Defined - userspace stack overflow */ | 919 | .long _ex_trap_c /* 0x03 - User Defined - userspace stack overflow */ |
| 920 | .long _ex_replaceable /* 0x04 - User Defined */ | 920 | .long _ex_trap_c /* 0x04 - User Defined - dump trace buffer */ |
| 921 | .long _ex_replaceable /* 0x05 - User Defined */ | 921 | .long _ex_replaceable /* 0x05 - User Defined */ |
| 922 | .long _ex_replaceable /* 0x06 - User Defined */ | 922 | .long _ex_replaceable /* 0x06 - User Defined */ |
| 923 | .long _ex_replaceable /* 0x07 - User Defined */ | 923 | .long _ex_replaceable /* 0x07 - User Defined */ |
diff --git a/include/asm-blackfin/bfin-global.h b/include/asm-blackfin/bfin-global.h index 14cb8d35924e..0212e180b90e 100644 --- a/include/asm-blackfin/bfin-global.h +++ b/include/asm-blackfin/bfin-global.h | |||
| @@ -80,6 +80,7 @@ extern int atomic_sub32(void); | |||
| 80 | extern int atomic_ior32(void); | 80 | extern int atomic_ior32(void); |
| 81 | extern int atomic_and32(void); | 81 | extern int atomic_and32(void); |
| 82 | extern int atomic_xor32(void); | 82 | extern int atomic_xor32(void); |
| 83 | extern void safe_user_instruction(void); | ||
| 83 | extern void sigreturn_stub(void); | 84 | extern void sigreturn_stub(void); |
| 84 | 85 | ||
| 85 | extern void *l1_data_A_sram_alloc(size_t); | 86 | extern void *l1_data_A_sram_alloc(size_t); |
diff --git a/include/asm-blackfin/fixed_code.h b/include/asm-blackfin/fixed_code.h index e6df84ee1557..37db66c7030d 100644 --- a/include/asm-blackfin/fixed_code.h +++ b/include/asm-blackfin/fixed_code.h | |||
| @@ -17,4 +17,6 @@ | |||
| 17 | 17 | ||
| 18 | #define ATOMIC_SEQS_END 0x480 | 18 | #define ATOMIC_SEQS_END 0x480 |
| 19 | 19 | ||
| 20 | #define FIXED_CODE_END 0x480 | 20 | #define SAFE_USER_INSTRUCTION 0x480 |
| 21 | |||
| 22 | #define FIXED_CODE_END 0x490 | ||
diff --git a/include/asm-blackfin/gptimers.h b/include/asm-blackfin/gptimers.h index c97ab03e43a6..8265ea473d5b 100644 --- a/include/asm-blackfin/gptimers.h +++ b/include/asm-blackfin/gptimers.h | |||
| @@ -197,6 +197,8 @@ uint32_t get_gptimer_period (int timer_id); | |||
| 197 | uint32_t get_gptimer_count (int timer_id); | 197 | uint32_t get_gptimer_count (int timer_id); |
| 198 | uint16_t get_gptimer_intr (int timer_id); | 198 | uint16_t get_gptimer_intr (int timer_id); |
| 199 | void clear_gptimer_intr (int timer_id); | 199 | void clear_gptimer_intr (int timer_id); |
| 200 | uint16_t get_gptimer_over (int timer_id); | ||
| 201 | void clear_gptimer_over (int timer_id); | ||
| 200 | void set_gptimer_config (int timer_id, uint16_t config); | 202 | void set_gptimer_config (int timer_id, uint16_t config); |
| 201 | uint16_t get_gptimer_config (int timer_id); | 203 | uint16_t get_gptimer_config (int timer_id); |
| 202 | void set_gptimer_pulse_hi (int timer_id); | 204 | void set_gptimer_pulse_hi (int timer_id); |
diff --git a/include/asm-blackfin/mach-bf527/defBF52x_base.h b/include/asm-blackfin/mach-bf527/defBF52x_base.h index d6c24c54699d..fc69cf93f149 100644 --- a/include/asm-blackfin/mach-bf527/defBF52x_base.h +++ b/include/asm-blackfin/mach-bf527/defBF52x_base.h | |||
| @@ -1718,55 +1718,55 @@ | |||
| 1718 | 1718 | ||
| 1719 | /* Bit masks for HOST_CONTROL */ | 1719 | /* Bit masks for HOST_CONTROL */ |
| 1720 | 1720 | ||
| 1721 | #define HOST_EN 0x1 /* Host Enable */ | 1721 | #define HOST_CNTR_HOST_EN 0x1 /* Host Enable */ |
| 1722 | #define nHOST_EN 0x0 | 1722 | #define HOST_CNTR_nHOST_EN 0x0 |
| 1723 | #define HOST_END 0x2 /* Host Endianess */ | 1723 | #define HOST_CNTR_HOST_END 0x2 /* Host Endianess */ |
| 1724 | #define nHOST_END 0x0 | 1724 | #define HOST_CNTR_nHOST_END 0x0 |
| 1725 | #define DATA_SIZE 0x4 /* Data Size */ | 1725 | #define HOST_CNTR_DATA_SIZE 0x4 /* Data Size */ |
| 1726 | #define nDATA_SIZE 0x0 | 1726 | #define HOST_CNTR_nDATA_SIZE 0x0 |
| 1727 | #define HOST_RST 0x8 /* Host Reset */ | 1727 | #define HOST_CNTR_HOST_RST 0x8 /* Host Reset */ |
| 1728 | #define nHOST_RST 0x0 | 1728 | #define HOST_CNTR_nHOST_RST 0x0 |
| 1729 | #define HRDY_OVR 0x20 /* Host Ready Override */ | 1729 | #define HOST_CNTR_HRDY_OVR 0x20 /* Host Ready Override */ |
| 1730 | #define nHRDY_OVR 0x0 | 1730 | #define HOST_CNTR_nHRDY_OVR 0x0 |
| 1731 | #define INT_MODE 0x40 /* Interrupt Mode */ | 1731 | #define HOST_CNTR_INT_MODE 0x40 /* Interrupt Mode */ |
| 1732 | #define nINT_MODE 0x0 | 1732 | #define HOST_CNTR_nINT_MODE 0x0 |
| 1733 | #define BT_EN 0x80 /* Bus Timeout Enable */ | 1733 | #define HOST_CNTR_BT_EN 0x80 /* Bus Timeout Enable */ |
| 1734 | #define nBT_EN 0x0 | 1734 | #define HOST_CNTR_ nBT_EN 0x0 |
| 1735 | #define EHW 0x100 /* Enable Host Write */ | 1735 | #define HOST_CNTR_EHW 0x100 /* Enable Host Write */ |
| 1736 | #define nEHW 0x0 | 1736 | #define HOST_CNTR_nEHW 0x0 |
| 1737 | #define EHR 0x200 /* Enable Host Read */ | 1737 | #define HOST_CNTR_EHR 0x200 /* Enable Host Read */ |
| 1738 | #define nEHR 0x0 | 1738 | #define HOST_CNTR_nEHR 0x0 |
| 1739 | #define BDR 0x400 /* Burst DMA Requests */ | 1739 | #define HOST_CNTR_BDR 0x400 /* Burst DMA Requests */ |
| 1740 | #define nBDR 0x0 | 1740 | #define HOST_CNTR_nBDR 0x0 |
| 1741 | 1741 | ||
| 1742 | /* Bit masks for HOST_STATUS */ | 1742 | /* Bit masks for HOST_STATUS */ |
| 1743 | 1743 | ||
| 1744 | #define READY 0x1 /* DMA Ready */ | 1744 | #define HOST_STAT_READY 0x1 /* DMA Ready */ |
| 1745 | #define nREADY 0x0 | 1745 | #define HOST_STAT_nREADY 0x0 |
| 1746 | #define FIFOFULL 0x2 /* FIFO Full */ | 1746 | #define HOST_STAT_FIFOFULL 0x2 /* FIFO Full */ |
| 1747 | #define nFIFOFULL 0x0 | 1747 | #define HOST_STAT_nFIFOFULL 0x0 |
| 1748 | #define FIFOEMPTY 0x4 /* FIFO Empty */ | 1748 | #define HOST_STAT_FIFOEMPTY 0x4 /* FIFO Empty */ |
| 1749 | #define nFIFOEMPTY 0x0 | 1749 | #define HOST_STAT_nFIFOEMPTY 0x0 |
| 1750 | #define COMPLETE 0x8 /* DMA Complete */ | 1750 | #define HOST_STAT_COMPLETE 0x8 /* DMA Complete */ |
| 1751 | #define nCOMPLETE 0x0 | 1751 | #define HOST_STAT_nCOMPLETE 0x0 |
| 1752 | #define HSHK 0x10 /* Host Handshake */ | 1752 | #define HOST_STAT_HSHK 0x10 /* Host Handshake */ |
| 1753 | #define nHSHK 0x0 | 1753 | #define HOST_STAT_nHSHK 0x0 |
| 1754 | #define TIMEOUT 0x20 /* Host Timeout */ | 1754 | #define HOST_STAT_TIMEOUT 0x20 /* Host Timeout */ |
| 1755 | #define nTIMEOUT 0x0 | 1755 | #define HOST_STAT_nTIMEOUT 0x0 |
| 1756 | #define HIRQ 0x40 /* Host Interrupt Request */ | 1756 | #define HOST_STAT_HIRQ 0x40 /* Host Interrupt Request */ |
| 1757 | #define nHIRQ 0x0 | 1757 | #define HOST_STAT_nHIRQ 0x0 |
| 1758 | #define ALLOW_CNFG 0x80 /* Allow New Configuration */ | 1758 | #define HOST_STAT_ALLOW_CNFG 0x80 /* Allow New Configuration */ |
| 1759 | #define nALLOW_CNFG 0x0 | 1759 | #define HOST_STAT_nALLOW_CNFG 0x0 |
| 1760 | #define DMA_DIR 0x100 /* DMA Direction */ | 1760 | #define HOST_STAT_DMA_DIR 0x100 /* DMA Direction */ |
| 1761 | #define nDMA_DIR 0x0 | 1761 | #define HOST_STAT_nDMA_DIR 0x0 |
| 1762 | #define BTE 0x200 /* Bus Timeout Enabled */ | 1762 | #define HOST_STAT_BTE 0x200 /* Bus Timeout Enabled */ |
| 1763 | #define nBTE 0x0 | 1763 | #define HOST_STAT_nBTE 0x0 |
| 1764 | #define HOSTRD_DONE 0x8000 /* Host Read Completion Interrupt */ | 1764 | #define HOST_STAT_HOSTRD_DONE 0x8000 /* Host Read Completion Interrupt */ |
| 1765 | #define nHOSTRD_DONE 0x0 | 1765 | #define HOST_STAT_nHOSTRD_DONE 0x0 |
| 1766 | 1766 | ||
| 1767 | /* Bit masks for HOST_TIMEOUT */ | 1767 | /* Bit masks for HOST_TIMEOUT */ |
| 1768 | 1768 | ||
| 1769 | #define COUNT_TIMEOUT 0x7ff /* Host Timeout count */ | 1769 | #define HOST_COUNT_TIMEOUT 0x7ff /* Host Timeout count */ |
| 1770 | 1770 | ||
| 1771 | /* Bit masks for CNT_CONFIG */ | 1771 | /* Bit masks for CNT_CONFIG */ |
| 1772 | 1772 | ||
diff --git a/include/asm-blackfin/mach-bf527/dma.h b/include/asm-blackfin/mach-bf527/dma.h index a41627ae9134..2dfee12864f6 100644 --- a/include/asm-blackfin/mach-bf527/dma.h +++ b/include/asm-blackfin/mach-bf527/dma.h | |||
| @@ -35,7 +35,6 @@ | |||
| 35 | #define MAX_BLACKFIN_DMA_CHANNEL 16 | 35 | #define MAX_BLACKFIN_DMA_CHANNEL 16 |
| 36 | 36 | ||
| 37 | #define CH_PPI 0 /* PPI receive/transmit or NFC */ | 37 | #define CH_PPI 0 /* PPI receive/transmit or NFC */ |
| 38 | #define CH_NFC 0 /* PPI receive/transmit or NFC */ | ||
| 39 | #define CH_EMAC_RX 1 /* Ethernet MAC receive or HOSTDP */ | 38 | #define CH_EMAC_RX 1 /* Ethernet MAC receive or HOSTDP */ |
| 40 | #define CH_EMAC_HOSTDP 1 /* Ethernet MAC receive or HOSTDP */ | 39 | #define CH_EMAC_HOSTDP 1 /* Ethernet MAC receive or HOSTDP */ |
| 41 | #define CH_EMAC_TX 2 /* Ethernet MAC transmit or NFC */ | 40 | #define CH_EMAC_TX 2 /* Ethernet MAC transmit or NFC */ |
| @@ -54,6 +53,12 @@ | |||
| 54 | #define CH_MEM_STREAM1_DEST 14 /* TX */ | 53 | #define CH_MEM_STREAM1_DEST 14 /* TX */ |
| 55 | #define CH_MEM_STREAM1_SRC 15 /* RX */ | 54 | #define CH_MEM_STREAM1_SRC 15 /* RX */ |
| 56 | 55 | ||
| 56 | #if defined(CONFIG_BF527_NAND_D_PORTF) | ||
| 57 | #define CH_NFC CH_PPI /* PPI receive/transmit or NFC */ | ||
| 58 | #elif defined(CONFIG_BF527_NAND_D_PORTH) | ||
| 59 | #define CH_NFC CH_EMAC_TX /* PPI receive/transmit or NFC */ | ||
| 60 | #endif | ||
| 61 | |||
| 57 | extern int channel2irq(unsigned int channel); | 62 | extern int channel2irq(unsigned int channel); |
| 58 | extern struct dma_register *base_addr[]; | 63 | extern struct dma_register *base_addr[]; |
| 59 | 64 | ||
diff --git a/include/asm-blackfin/mach-bf548/defBF549.h b/include/asm-blackfin/mach-bf548/defBF549.h index 4e46d657e50e..fcb72b41e007 100644 --- a/include/asm-blackfin/mach-bf548/defBF549.h +++ b/include/asm-blackfin/mach-bf548/defBF549.h | |||
| @@ -1671,7 +1671,7 @@ | |||
| 1671 | /* Bit masks for MXVR_DMAx_CONFIG */ | 1671 | /* Bit masks for MXVR_DMAx_CONFIG */ |
| 1672 | 1672 | ||
| 1673 | #define MDMAEN 0x1 /* DMA Channel Enable */ | 1673 | #define MDMAEN 0x1 /* DMA Channel Enable */ |
| 1674 | #define DD 0x2 /* DMA Channel Direction */ | 1674 | #define DMADD 0x2 /* DMA Channel Direction */ |
| 1675 | #define BY4SWAPEN 0x20 /* DMA Channel Four Byte Swap Enable */ | 1675 | #define BY4SWAPEN 0x20 /* DMA Channel Four Byte Swap Enable */ |
| 1676 | #define LCHAN 0x3c0 /* DMA Channel Logical Channel */ | 1676 | #define LCHAN 0x3c0 /* DMA Channel Logical Channel */ |
| 1677 | #define BITSWAPEN 0x400 /* DMA Channel Bit Swap Enable */ | 1677 | #define BITSWAPEN 0x400 /* DMA Channel Bit Swap Enable */ |
diff --git a/include/asm-blackfin/mach-bf548/defBF54x_base.h b/include/asm-blackfin/mach-bf548/defBF54x_base.h index 1d365c844ffe..da979cb62f7d 100644 --- a/include/asm-blackfin/mach-bf548/defBF54x_base.h +++ b/include/asm-blackfin/mach-bf548/defBF54x_base.h | |||
| @@ -2252,6 +2252,13 @@ | |||
| 2252 | #define PLL_OFF 0x2 /* Disable PLL */ | 2252 | #define PLL_OFF 0x2 /* Disable PLL */ |
| 2253 | #define DF 0x1 /* Divide Frequency */ | 2253 | #define DF 0x1 /* Divide Frequency */ |
| 2254 | 2254 | ||
| 2255 | /* SWRST Masks */ | ||
| 2256 | #define SYSTEM_RESET 0x0007 /* Initiates A System Software Reset */ | ||
| 2257 | #define DOUBLE_FAULT 0x0008 /* Core Double Fault Causes Reset */ | ||
| 2258 | #define RESET_DOUBLE 0x2000 /* SW Reset Generated By Core Double-Fault */ | ||
| 2259 | #define RESET_WDOG 0x4000 /* SW Reset Generated By Watchdog Timer */ | ||
| 2260 | #define RESET_SOFTWARE 0x8000 /* SW Reset Occurred Since Last Read Of SWRST */ | ||
| 2261 | |||
| 2255 | /* Bit masks for PLL_STAT */ | 2262 | /* Bit masks for PLL_STAT */ |
| 2256 | 2263 | ||
| 2257 | #define PLL_LOCKED 0x20 /* PLL Locked Status */ | 2264 | #define PLL_LOCKED 0x20 /* PLL Locked Status */ |
diff --git a/include/asm-blackfin/mach-bf548/portmux.h b/include/asm-blackfin/mach-bf548/portmux.h index b382deb501a7..6b485120015f 100644 --- a/include/asm-blackfin/mach-bf548/portmux.h +++ b/include/asm-blackfin/mach-bf548/portmux.h | |||
| @@ -267,4 +267,18 @@ | |||
| 267 | #define P_AMC_BG (P_DEFINED | P_IDENT(GPIO_PJ12) | P_FUNCT(0)) | 267 | #define P_AMC_BG (P_DEFINED | P_IDENT(GPIO_PJ12) | P_FUNCT(0)) |
| 268 | #define P_AMC_BGH (P_DEFINED | P_IDENT(GPIO_PJ13) | P_FUNCT(0)) | 268 | #define P_AMC_BGH (P_DEFINED | P_IDENT(GPIO_PJ13) | P_FUNCT(0)) |
| 269 | 269 | ||
| 270 | |||
| 271 | #define P_NAND_D0 (P_DONTCARE) | ||
| 272 | #define P_NAND_D1 (P_DONTCARE) | ||
| 273 | #define P_NAND_D2 (P_DONTCARE) | ||
| 274 | #define P_NAND_D3 (P_DONTCARE) | ||
| 275 | #define P_NAND_D4 (P_DONTCARE) | ||
| 276 | #define P_NAND_D5 (P_DONTCARE) | ||
| 277 | #define P_NAND_D6 (P_DONTCARE) | ||
| 278 | #define P_NAND_D7 (P_DONTCARE) | ||
| 279 | #define P_NAND_WE (P_DONTCARE) | ||
| 280 | #define P_NAND_RE (P_DONTCARE) | ||
| 281 | #define P_NAND_CLE (P_DONTCARE) | ||
| 282 | #define P_NAND_ALE (P_DONTCARE) | ||
| 283 | |||
| 270 | #endif /* _MACH_PORTMUX_H_ */ | 284 | #endif /* _MACH_PORTMUX_H_ */ |
diff --git a/include/asm-blackfin/mach-bf561/defBF561.h b/include/asm-blackfin/mach-bf561/defBF561.h index bf7dc4e00065..7945e8a3a841 100644 --- a/include/asm-blackfin/mach-bf561/defBF561.h +++ b/include/asm-blackfin/mach-bf561/defBF561.h | |||
| @@ -55,6 +55,9 @@ | |||
| 55 | /* For MMR's that are reserved on Core B, set up defines to better integrate with other ports */ | 55 | /* For MMR's that are reserved on Core B, set up defines to better integrate with other ports */ |
| 56 | #define SWRST SICA_SWRST | 56 | #define SWRST SICA_SWRST |
| 57 | #define SYSCR SICA_SYSCR | 57 | #define SYSCR SICA_SYSCR |
| 58 | #define RESET_DOUBLE (SWRST_DBL_FAULT_B|SWRST_DBL_FAULT_A) | ||
| 59 | #define RESET_WDOG (SWRST_WDT_B|SWRST_WDT_A) | ||
| 60 | #define RESET_SOFTWARE (SWRST_OCCURRED) | ||
| 58 | 61 | ||
| 59 | /* System Reset and Interrupt Controller registers for core A (0xFFC0 0100-0xFFC0 01FF) */ | 62 | /* System Reset and Interrupt Controller registers for core A (0xFFC0 0100-0xFFC0 01FF) */ |
| 60 | #define SICA_SWRST 0xFFC00100 /* Software Reset register */ | 63 | #define SICA_SWRST 0xFFC00100 /* Software Reset register */ |
