diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-08-16 19:48:45 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-08-16 19:48:45 -0400 |
| commit | 9c0d2a20fe331946c1a65a5865faf56e93255c5c (patch) | |
| tree | 9d47a9239b6249a5dd4244195ec4cc1e55fda3cd /arch | |
| parent | 5e6b83ed8c00f2e2ae5b2413c5907bed735b600d (diff) | |
| parent | 66bfa2f03191aec2e2958414b1dfb80a56637133 (diff) | |
Merge master.kernel.org:/home/rmk/linux-2.6-arm
* master.kernel.org:/home/rmk/linux-2.6-arm: (38 commits)
[ARM] 5191/1: ARM: remove CVS keywords
[ARM] pxafb: fix the warning of incorrect lccr when lcd_conn is specified
[ARM] pxafb: add flag to specify output format on LDD pins when base is RGBT16
[ARM] pxafb: fix the incorrect configuration of GPIO77 as ACBIAS for TFT LCD
[ARM] 5198/1: PalmTX: PCMCIA fixes
[ARM] Fix a pile of broken watchdog drivers
[ARM] update mach-types
[ARM] 5196/1: fix inline asm constraints for preload
[ARM] 5194/1: update .gitignore
[ARM] add proc-macros.S include to proc-arm940 and proc-arm946
[ARM] 5192/1: ARM TLB: add v7wbi_{possible,always}_flags to {possible,always}_tlb_flags
[ARM] 5193/1: Wire up missing syscalls
[ARM] traps: don't call undef hook functions with spinlock held
[ARM] 5183/2: Provide Poodle LoCoMo GPIO names
[ARM] dma-mapping: provide sync_range APIs
[ARM] dma-mapping: improve type-safeness of DMA translations
[ARM] Kirkwood: instantiate the orion_spi driver in the platform code
[ARM] prevent crashing when too much RAM installed
[ARM] Kirkwood: Instantiate mv_xor driver
[ARM] Orion: Instantiate mv_xor driver for 5182
...
Diffstat (limited to 'arch')
75 files changed, 926 insertions, 155 deletions
diff --git a/arch/arm/boot/compressed/.gitignore b/arch/arm/boot/compressed/.gitignore index b15f927a5926..ab204db594d3 100644 --- a/arch/arm/boot/compressed/.gitignore +++ b/arch/arm/boot/compressed/.gitignore | |||
| @@ -1,2 +1,3 @@ | |||
| 1 | piggy.gz | ||
| 2 | font.c | 1 | font.c |
| 2 | piggy.gz | ||
| 3 | vmlinux.lds | ||
diff --git a/arch/arm/common/dmabounce.c b/arch/arm/common/dmabounce.c index 69130f365904..aecc6c3f908f 100644 --- a/arch/arm/common/dmabounce.c +++ b/arch/arm/common/dmabounce.c | |||
| @@ -246,9 +246,9 @@ map_single(struct device *dev, void *ptr, size_t size, | |||
| 246 | } | 246 | } |
| 247 | 247 | ||
| 248 | dev_dbg(dev, | 248 | dev_dbg(dev, |
| 249 | "%s: unsafe buffer %p (phy=%p) mapped to %p (phy=%p)\n", | 249 | "%s: unsafe buffer %p (dma=%#x) mapped to %p (dma=%#x)\n", |
| 250 | __func__, buf->ptr, (void *) virt_to_dma(dev, buf->ptr), | 250 | __func__, buf->ptr, virt_to_dma(dev, buf->ptr), |
| 251 | buf->safe, (void *) buf->safe_dma_addr); | 251 | buf->safe, buf->safe_dma_addr); |
| 252 | 252 | ||
| 253 | if ((dir == DMA_TO_DEVICE) || | 253 | if ((dir == DMA_TO_DEVICE) || |
| 254 | (dir == DMA_BIDIRECTIONAL)) { | 254 | (dir == DMA_BIDIRECTIONAL)) { |
| @@ -292,9 +292,9 @@ unmap_single(struct device *dev, dma_addr_t dma_addr, size_t size, | |||
| 292 | BUG_ON(buf->size != size); | 292 | BUG_ON(buf->size != size); |
| 293 | 293 | ||
| 294 | dev_dbg(dev, | 294 | dev_dbg(dev, |
| 295 | "%s: unsafe buffer %p (phy=%p) mapped to %p (phy=%p)\n", | 295 | "%s: unsafe buffer %p (dma=%#x) mapped to %p (dma=%#x)\n", |
| 296 | __func__, buf->ptr, (void *) virt_to_dma(dev, buf->ptr), | 296 | __func__, buf->ptr, virt_to_dma(dev, buf->ptr), |
| 297 | buf->safe, (void *) buf->safe_dma_addr); | 297 | buf->safe, buf->safe_dma_addr); |
| 298 | 298 | ||
| 299 | DO_STATS ( device_info->bounce_count++ ); | 299 | DO_STATS ( device_info->bounce_count++ ); |
| 300 | 300 | ||
| @@ -321,9 +321,8 @@ unmap_single(struct device *dev, dma_addr_t dma_addr, size_t size, | |||
| 321 | } | 321 | } |
| 322 | } | 322 | } |
| 323 | 323 | ||
| 324 | static inline void | 324 | static int sync_single(struct device *dev, dma_addr_t dma_addr, size_t size, |
| 325 | sync_single(struct device *dev, dma_addr_t dma_addr, size_t size, | 325 | enum dma_data_direction dir) |
| 326 | enum dma_data_direction dir) | ||
| 327 | { | 326 | { |
| 328 | struct dmabounce_device_info *device_info = dev->archdata.dmabounce; | 327 | struct dmabounce_device_info *device_info = dev->archdata.dmabounce; |
| 329 | struct safe_buffer *buf = NULL; | 328 | struct safe_buffer *buf = NULL; |
| @@ -355,9 +354,9 @@ sync_single(struct device *dev, dma_addr_t dma_addr, size_t size, | |||
| 355 | */ | 354 | */ |
| 356 | 355 | ||
| 357 | dev_dbg(dev, | 356 | dev_dbg(dev, |
| 358 | "%s: unsafe buffer %p (phy=%p) mapped to %p (phy=%p)\n", | 357 | "%s: unsafe buffer %p (dma=%#x) mapped to %p (dma=%#x)\n", |
| 359 | __func__, buf->ptr, (void *) virt_to_dma(dev, buf->ptr), | 358 | __func__, buf->ptr, virt_to_dma(dev, buf->ptr), |
| 360 | buf->safe, (void *) buf->safe_dma_addr); | 359 | buf->safe, buf->safe_dma_addr); |
| 361 | 360 | ||
| 362 | DO_STATS ( device_info->bounce_count++ ); | 361 | DO_STATS ( device_info->bounce_count++ ); |
| 363 | 362 | ||
| @@ -383,8 +382,9 @@ sync_single(struct device *dev, dma_addr_t dma_addr, size_t size, | |||
| 383 | * No need to sync the safe buffer - it was allocated | 382 | * No need to sync the safe buffer - it was allocated |
| 384 | * via the coherent allocators. | 383 | * via the coherent allocators. |
| 385 | */ | 384 | */ |
| 385 | return 0; | ||
| 386 | } else { | 386 | } else { |
| 387 | dma_cache_maint(dma_to_virt(dev, dma_addr), size, dir); | 387 | return 1; |
| 388 | } | 388 | } |
| 389 | } | 389 | } |
| 390 | 390 | ||
| @@ -474,25 +474,29 @@ dma_unmap_sg(struct device *dev, struct scatterlist *sg, int nents, | |||
| 474 | } | 474 | } |
| 475 | } | 475 | } |
| 476 | 476 | ||
| 477 | void | 477 | void dma_sync_single_range_for_cpu(struct device *dev, dma_addr_t dma_addr, |
| 478 | dma_sync_single_for_cpu(struct device *dev, dma_addr_t dma_addr, size_t size, | 478 | unsigned long offset, size_t size, |
| 479 | enum dma_data_direction dir) | 479 | enum dma_data_direction dir) |
| 480 | { | 480 | { |
| 481 | dev_dbg(dev, "%s(ptr=%p,size=%d,dir=%x)\n", | 481 | dev_dbg(dev, "%s(dma=%#x,off=%#lx,size=%zx,dir=%x)\n", |
| 482 | __func__, (void *) dma_addr, size, dir); | 482 | __func__, dma_addr, offset, size, dir); |
| 483 | 483 | ||
| 484 | sync_single(dev, dma_addr, size, dir); | 484 | if (sync_single(dev, dma_addr, offset + size, dir)) |
| 485 | dma_cache_maint(dma_to_virt(dev, dma_addr) + offset, size, dir); | ||
| 485 | } | 486 | } |
| 487 | EXPORT_SYMBOL(dma_sync_single_range_for_cpu); | ||
| 486 | 488 | ||
| 487 | void | 489 | void dma_sync_single_range_for_device(struct device *dev, dma_addr_t dma_addr, |
| 488 | dma_sync_single_for_device(struct device *dev, dma_addr_t dma_addr, size_t size, | 490 | unsigned long offset, size_t size, |
| 489 | enum dma_data_direction dir) | 491 | enum dma_data_direction dir) |
| 490 | { | 492 | { |
| 491 | dev_dbg(dev, "%s(ptr=%p,size=%d,dir=%x)\n", | 493 | dev_dbg(dev, "%s(dma=%#x,off=%#lx,size=%zx,dir=%x)\n", |
| 492 | __func__, (void *) dma_addr, size, dir); | 494 | __func__, dma_addr, offset, size, dir); |
| 493 | 495 | ||
| 494 | sync_single(dev, dma_addr, size, dir); | 496 | if (sync_single(dev, dma_addr, offset + size, dir)) |
| 497 | dma_cache_maint(dma_to_virt(dev, dma_addr) + offset, size, dir); | ||
| 495 | } | 498 | } |
| 499 | EXPORT_SYMBOL(dma_sync_single_range_for_device); | ||
| 496 | 500 | ||
| 497 | void | 501 | void |
| 498 | dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg, int nents, | 502 | dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg, int nents, |
| @@ -644,8 +648,6 @@ EXPORT_SYMBOL(dma_map_single); | |||
| 644 | EXPORT_SYMBOL(dma_unmap_single); | 648 | EXPORT_SYMBOL(dma_unmap_single); |
| 645 | EXPORT_SYMBOL(dma_map_sg); | 649 | EXPORT_SYMBOL(dma_map_sg); |
| 646 | EXPORT_SYMBOL(dma_unmap_sg); | 650 | EXPORT_SYMBOL(dma_unmap_sg); |
| 647 | EXPORT_SYMBOL(dma_sync_single_for_cpu); | ||
| 648 | EXPORT_SYMBOL(dma_sync_single_for_device); | ||
| 649 | EXPORT_SYMBOL(dma_sync_sg_for_cpu); | 651 | EXPORT_SYMBOL(dma_sync_sg_for_cpu); |
| 650 | EXPORT_SYMBOL(dma_sync_sg_for_device); | 652 | EXPORT_SYMBOL(dma_sync_sg_for_device); |
| 651 | EXPORT_SYMBOL(dmabounce_register_dev); | 653 | EXPORT_SYMBOL(dmabounce_register_dev); |
diff --git a/arch/arm/configs/orion5x_defconfig b/arch/arm/configs/orion5x_defconfig index 9578b5d9f9c7..1464ffe71717 100644 --- a/arch/arm/configs/orion5x_defconfig +++ b/arch/arm/configs/orion5x_defconfig | |||
| @@ -757,7 +757,14 @@ CONFIG_INPUT_EVDEV=y | |||
| 757 | # | 757 | # |
| 758 | # Input Device Drivers | 758 | # Input Device Drivers |
| 759 | # | 759 | # |
| 760 | # CONFIG_INPUT_KEYBOARD is not set | 760 | CONFIG_INPUT_KEYBOARD=y |
| 761 | # CONFIG_KEYBOARD_ATKBD is not set | ||
| 762 | # CONFIG_KEYBOARD_SUNKBD is not set | ||
| 763 | # CONFIG_KEYBOARD_LKKBD is not set | ||
| 764 | # CONFIG_KEYBOARD_XTKBD is not set | ||
| 765 | # CONFIG_KEYBOARD_NEWTON is not set | ||
| 766 | # CONFIG_KEYBOARD_STOWAWAY is not set | ||
| 767 | CONFIG_KEYBOARD_GPIO=y | ||
| 761 | # CONFIG_INPUT_MOUSE is not set | 768 | # CONFIG_INPUT_MOUSE is not set |
| 762 | # CONFIG_INPUT_JOYSTICK is not set | 769 | # CONFIG_INPUT_JOYSTICK is not set |
| 763 | # CONFIG_INPUT_TABLET is not set | 770 | # CONFIG_INPUT_TABLET is not set |
| @@ -1111,11 +1118,11 @@ CONFIG_RTC_DRV_DS1307=y | |||
| 1111 | CONFIG_RTC_DRV_RS5C372=y | 1118 | CONFIG_RTC_DRV_RS5C372=y |
| 1112 | # CONFIG_RTC_DRV_ISL1208 is not set | 1119 | # CONFIG_RTC_DRV_ISL1208 is not set |
| 1113 | # CONFIG_RTC_DRV_X1205 is not set | 1120 | # CONFIG_RTC_DRV_X1205 is not set |
| 1114 | # CONFIG_RTC_DRV_PCF8563 is not set | 1121 | CONFIG_RTC_DRV_PCF8563=y |
| 1115 | # CONFIG_RTC_DRV_PCF8583 is not set | 1122 | # CONFIG_RTC_DRV_PCF8583 is not set |
| 1116 | CONFIG_RTC_DRV_M41T80=y | 1123 | CONFIG_RTC_DRV_M41T80=y |
| 1117 | # CONFIG_RTC_DRV_M41T80_WDT is not set | 1124 | # CONFIG_RTC_DRV_M41T80_WDT is not set |
| 1118 | # CONFIG_RTC_DRV_S35390A is not set | 1125 | CONFIG_RTC_DRV_S35390A=y |
| 1119 | 1126 | ||
| 1120 | # | 1127 | # |
| 1121 | # SPI RTC drivers | 1128 | # SPI RTC drivers |
diff --git a/arch/arm/include/asm/dma-mapping.h b/arch/arm/include/asm/dma-mapping.h index 45329fca1b64..7b95d2058395 100644 --- a/arch/arm/include/asm/dma-mapping.h +++ b/arch/arm/include/asm/dma-mapping.h | |||
| @@ -3,11 +3,48 @@ | |||
| 3 | 3 | ||
| 4 | #ifdef __KERNEL__ | 4 | #ifdef __KERNEL__ |
| 5 | 5 | ||
| 6 | #include <linux/mm.h> /* need struct page */ | 6 | #include <linux/mm_types.h> |
| 7 | |||
| 8 | #include <linux/scatterlist.h> | 7 | #include <linux/scatterlist.h> |
| 9 | 8 | ||
| 10 | #include <asm-generic/dma-coherent.h> | 9 | #include <asm-generic/dma-coherent.h> |
| 10 | #include <asm/memory.h> | ||
| 11 | |||
| 12 | /* | ||
| 13 | * page_to_dma/dma_to_virt/virt_to_dma are architecture private functions | ||
| 14 | * used internally by the DMA-mapping API to provide DMA addresses. They | ||
| 15 | * must not be used by drivers. | ||
| 16 | */ | ||
| 17 | #ifndef __arch_page_to_dma | ||
| 18 | static inline dma_addr_t page_to_dma(struct device *dev, struct page *page) | ||
| 19 | { | ||
| 20 | return (dma_addr_t)__virt_to_bus((unsigned long)page_address(page)); | ||
| 21 | } | ||
| 22 | |||
| 23 | static inline void *dma_to_virt(struct device *dev, dma_addr_t addr) | ||
| 24 | { | ||
| 25 | return (void *)__bus_to_virt(addr); | ||
| 26 | } | ||
| 27 | |||
| 28 | static inline dma_addr_t virt_to_dma(struct device *dev, void *addr) | ||
| 29 | { | ||
| 30 | return (dma_addr_t)__virt_to_bus((unsigned long)(addr)); | ||
| 31 | } | ||
| 32 | #else | ||
| 33 | static inline dma_addr_t page_to_dma(struct device *dev, struct page *page) | ||
| 34 | { | ||
| 35 | return __arch_page_to_dma(dev, page); | ||
| 36 | } | ||
| 37 | |||
| 38 | static inline void *dma_to_virt(struct device *dev, dma_addr_t addr) | ||
| 39 | { | ||
| 40 | return __arch_dma_to_virt(dev, addr); | ||
| 41 | } | ||
| 42 | |||
| 43 | static inline dma_addr_t virt_to_dma(struct device *dev, void *addr) | ||
| 44 | { | ||
| 45 | return __arch_virt_to_dma(dev, addr); | ||
| 46 | } | ||
| 47 | #endif | ||
| 11 | 48 | ||
| 12 | /* | 49 | /* |
| 13 | * DMA-consistent mapping functions. These allocate/free a region of | 50 | * DMA-consistent mapping functions. These allocate/free a region of |
| @@ -169,7 +206,7 @@ dma_map_single(struct device *dev, void *cpu_addr, size_t size, | |||
| 169 | if (!arch_is_coherent()) | 206 | if (!arch_is_coherent()) |
| 170 | dma_cache_maint(cpu_addr, size, dir); | 207 | dma_cache_maint(cpu_addr, size, dir); |
| 171 | 208 | ||
| 172 | return virt_to_dma(dev, (unsigned long)cpu_addr); | 209 | return virt_to_dma(dev, cpu_addr); |
| 173 | } | 210 | } |
| 174 | #else | 211 | #else |
| 175 | extern dma_addr_t dma_map_single(struct device *,void *, size_t, enum dma_data_direction); | 212 | extern dma_addr_t dma_map_single(struct device *,void *, size_t, enum dma_data_direction); |
| @@ -195,7 +232,7 @@ dma_map_page(struct device *dev, struct page *page, | |||
| 195 | unsigned long offset, size_t size, | 232 | unsigned long offset, size_t size, |
| 196 | enum dma_data_direction dir) | 233 | enum dma_data_direction dir) |
| 197 | { | 234 | { |
| 198 | return dma_map_single(dev, page_address(page) + offset, size, (int)dir); | 235 | return dma_map_single(dev, page_address(page) + offset, size, dir); |
| 199 | } | 236 | } |
| 200 | 237 | ||
| 201 | /** | 238 | /** |
| @@ -241,7 +278,7 @@ static inline void | |||
| 241 | dma_unmap_page(struct device *dev, dma_addr_t handle, size_t size, | 278 | dma_unmap_page(struct device *dev, dma_addr_t handle, size_t size, |
| 242 | enum dma_data_direction dir) | 279 | enum dma_data_direction dir) |
| 243 | { | 280 | { |
| 244 | dma_unmap_single(dev, handle, size, (int)dir); | 281 | dma_unmap_single(dev, handle, size, dir); |
| 245 | } | 282 | } |
| 246 | 283 | ||
| 247 | /** | 284 | /** |
| @@ -314,11 +351,12 @@ extern void dma_unmap_sg(struct device *, struct scatterlist *, int, enum dma_da | |||
| 314 | 351 | ||
| 315 | 352 | ||
| 316 | /** | 353 | /** |
| 317 | * dma_sync_single_for_cpu | 354 | * dma_sync_single_range_for_cpu |
| 318 | * @dev: valid struct device pointer, or NULL for ISA and EISA-like devices | 355 | * @dev: valid struct device pointer, or NULL for ISA and EISA-like devices |
| 319 | * @handle: DMA address of buffer | 356 | * @handle: DMA address of buffer |
| 320 | * @size: size of buffer to map | 357 | * @offset: offset of region to start sync |
| 321 | * @dir: DMA transfer direction | 358 | * @size: size of region to sync |
| 359 | * @dir: DMA transfer direction (same as passed to dma_map_single) | ||
| 322 | * | 360 | * |
| 323 | * Make physical memory consistent for a single streaming mode DMA | 361 | * Make physical memory consistent for a single streaming mode DMA |
| 324 | * translation after a transfer. | 362 | * translation after a transfer. |
| @@ -332,25 +370,41 @@ extern void dma_unmap_sg(struct device *, struct scatterlist *, int, enum dma_da | |||
| 332 | */ | 370 | */ |
| 333 | #ifndef CONFIG_DMABOUNCE | 371 | #ifndef CONFIG_DMABOUNCE |
| 334 | static inline void | 372 | static inline void |
| 335 | dma_sync_single_for_cpu(struct device *dev, dma_addr_t handle, size_t size, | 373 | dma_sync_single_range_for_cpu(struct device *dev, dma_addr_t handle, |
| 336 | enum dma_data_direction dir) | 374 | unsigned long offset, size_t size, |
| 375 | enum dma_data_direction dir) | ||
| 337 | { | 376 | { |
| 338 | if (!arch_is_coherent()) | 377 | if (!arch_is_coherent()) |
| 339 | dma_cache_maint((void *)dma_to_virt(dev, handle), size, dir); | 378 | dma_cache_maint(dma_to_virt(dev, handle) + offset, size, dir); |
| 340 | } | 379 | } |
| 341 | 380 | ||
| 342 | static inline void | 381 | static inline void |
| 343 | dma_sync_single_for_device(struct device *dev, dma_addr_t handle, size_t size, | 382 | dma_sync_single_range_for_device(struct device *dev, dma_addr_t handle, |
| 344 | enum dma_data_direction dir) | 383 | unsigned long offset, size_t size, |
| 384 | enum dma_data_direction dir) | ||
| 345 | { | 385 | { |
| 346 | if (!arch_is_coherent()) | 386 | if (!arch_is_coherent()) |
| 347 | dma_cache_maint((void *)dma_to_virt(dev, handle), size, dir); | 387 | dma_cache_maint(dma_to_virt(dev, handle) + offset, size, dir); |
| 348 | } | 388 | } |
| 349 | #else | 389 | #else |
| 350 | extern void dma_sync_single_for_cpu(struct device*, dma_addr_t, size_t, enum dma_data_direction); | 390 | extern void dma_sync_single_range_for_cpu(struct device *, dma_addr_t, unsigned long, size_t, enum dma_data_direction); |
| 351 | extern void dma_sync_single_for_device(struct device*, dma_addr_t, size_t, enum dma_data_direction); | 391 | extern void dma_sync_single_range_for_device(struct device *, dma_addr_t, unsigned long, size_t, enum dma_data_direction); |
| 352 | #endif | 392 | #endif |
| 353 | 393 | ||
| 394 | static inline void | ||
| 395 | dma_sync_single_for_cpu(struct device *dev, dma_addr_t handle, size_t size, | ||
| 396 | enum dma_data_direction dir) | ||
| 397 | { | ||
| 398 | dma_sync_single_range_for_cpu(dev, handle, 0, size, dir); | ||
| 399 | } | ||
| 400 | |||
| 401 | static inline void | ||
| 402 | dma_sync_single_for_device(struct device *dev, dma_addr_t handle, size_t size, | ||
| 403 | enum dma_data_direction dir) | ||
| 404 | { | ||
| 405 | dma_sync_single_range_for_device(dev, handle, 0, size, dir); | ||
| 406 | } | ||
| 407 | |||
| 354 | 408 | ||
| 355 | /** | 409 | /** |
| 356 | * dma_sync_sg_for_cpu | 410 | * dma_sync_sg_for_cpu |
diff --git a/arch/arm/include/asm/memory.h b/arch/arm/include/asm/memory.h index 1e070a2b561a..bf7c737c9226 100644 --- a/arch/arm/include/asm/memory.h +++ b/arch/arm/include/asm/memory.h | |||
| @@ -150,6 +150,14 @@ | |||
| 150 | #endif | 150 | #endif |
| 151 | 151 | ||
| 152 | /* | 152 | /* |
| 153 | * Amount of memory reserved for the vmalloc() area, and minimum | ||
| 154 | * address for vmalloc mappings. | ||
| 155 | */ | ||
| 156 | extern unsigned long vmalloc_reserve; | ||
| 157 | |||
| 158 | #define VMALLOC_MIN (void *)(VMALLOC_END - vmalloc_reserve) | ||
| 159 | |||
| 160 | /* | ||
| 153 | * PFNs are used to describe any physical page; this means | 161 | * PFNs are used to describe any physical page; this means |
| 154 | * PFN 0 == physical address 0. | 162 | * PFN 0 == physical address 0. |
| 155 | * | 163 | * |
| @@ -306,20 +314,6 @@ static inline __deprecated void *bus_to_virt(unsigned long x) | |||
| 306 | #define page_to_phys(page) (page_to_pfn(page) << PAGE_SHIFT) | 314 | #define page_to_phys(page) (page_to_pfn(page) << PAGE_SHIFT) |
| 307 | 315 | ||
| 308 | /* | 316 | /* |
| 309 | * Optional device DMA address remapping. Do _not_ use directly! | ||
| 310 | * We should really eliminate virt_to_bus() here - it's deprecated. | ||
| 311 | */ | ||
| 312 | #ifndef __arch_page_to_dma | ||
| 313 | #define page_to_dma(dev, page) ((dma_addr_t)__virt_to_bus((unsigned long)page_address(page))) | ||
| 314 | #define dma_to_virt(dev, addr) ((void *)__bus_to_virt(addr)) | ||
| 315 | #define virt_to_dma(dev, addr) ((dma_addr_t)__virt_to_bus((unsigned long)(addr))) | ||
| 316 | #else | ||
| 317 | #define page_to_dma(dev, page) (__arch_page_to_dma(dev, page)) | ||
| 318 | #define dma_to_virt(dev, addr) (__arch_dma_to_virt(dev, addr)) | ||
| 319 | #define virt_to_dma(dev, addr) (__arch_virt_to_dma(dev, addr)) | ||
| 320 | #endif | ||
| 321 | |||
| 322 | /* | ||
| 323 | * Optional coherency support. Currently used only by selected | 317 | * Optional coherency support. Currently used only by selected |
| 324 | * Intel XSC3-based systems. | 318 | * Intel XSC3-based systems. |
| 325 | */ | 319 | */ |
diff --git a/arch/arm/include/asm/mtd-xip.h b/arch/arm/include/asm/mtd-xip.h index 4225372a26f3..d8fbe2d9b8b9 100644 --- a/arch/arm/include/asm/mtd-xip.h +++ b/arch/arm/include/asm/mtd-xip.h | |||
| @@ -10,8 +10,6 @@ | |||
| 10 | * This program is free software; you can redistribute it and/or modify | 10 | * This program is free software; you can redistribute it and/or modify |
| 11 | * it under the terms of the GNU General Public License version 2 as | 11 | * it under the terms of the GNU General Public License version 2 as |
| 12 | * published by the Free Software Foundation. | 12 | * published by the Free Software Foundation. |
| 13 | * | ||
| 14 | * $Id: xip.h,v 1.2 2004/12/01 15:49:10 nico Exp $ | ||
| 15 | */ | 13 | */ |
| 16 | 14 | ||
| 17 | #ifndef __ARM_MTD_XIP_H__ | 15 | #ifndef __ARM_MTD_XIP_H__ |
diff --git a/arch/arm/include/asm/processor.h b/arch/arm/include/asm/processor.h index b01d5e7e3d5a..517a4d6ffc74 100644 --- a/arch/arm/include/asm/processor.h +++ b/arch/arm/include/asm/processor.h | |||
| @@ -112,9 +112,9 @@ extern int kernel_thread(int (*fn)(void *), void *arg, unsigned long flags); | |||
| 112 | static inline void prefetch(const void *ptr) | 112 | static inline void prefetch(const void *ptr) |
| 113 | { | 113 | { |
| 114 | __asm__ __volatile__( | 114 | __asm__ __volatile__( |
| 115 | "pld\t%0" | 115 | "pld\t%a0" |
| 116 | : | 116 | : |
| 117 | : "o" (*(char *)ptr) | 117 | : "p" (ptr) |
| 118 | : "cc"); | 118 | : "cc"); |
| 119 | } | 119 | } |
| 120 | 120 | ||
diff --git a/arch/arm/include/asm/tlbflush.h b/arch/arm/include/asm/tlbflush.h index 0d0d40f1b599..b543a054a17e 100644 --- a/arch/arm/include/asm/tlbflush.h +++ b/arch/arm/include/asm/tlbflush.h | |||
| @@ -54,6 +54,7 @@ | |||
| 54 | * v4wbi - ARMv4 with write buffer with I TLB flush entry instruction | 54 | * v4wbi - ARMv4 with write buffer with I TLB flush entry instruction |
| 55 | * fr - Feroceon (v4wbi with non-outer-cacheable page table walks) | 55 | * fr - Feroceon (v4wbi with non-outer-cacheable page table walks) |
| 56 | * v6wbi - ARMv6 with write buffer with I TLB flush entry instruction | 56 | * v6wbi - ARMv6 with write buffer with I TLB flush entry instruction |
| 57 | * v7wbi - identical to v6wbi | ||
| 57 | */ | 58 | */ |
| 58 | #undef _TLB | 59 | #undef _TLB |
| 59 | #undef MULTI_TLB | 60 | #undef MULTI_TLB |
| @@ -266,14 +267,16 @@ extern struct cpu_tlb_fns cpu_tlb; | |||
| 266 | v4wbi_possible_flags | \ | 267 | v4wbi_possible_flags | \ |
| 267 | fr_possible_flags | \ | 268 | fr_possible_flags | \ |
| 268 | v4wb_possible_flags | \ | 269 | v4wb_possible_flags | \ |
| 269 | v6wbi_possible_flags) | 270 | v6wbi_possible_flags | \ |
| 271 | v7wbi_possible_flags) | ||
| 270 | 272 | ||
| 271 | #define always_tlb_flags (v3_always_flags & \ | 273 | #define always_tlb_flags (v3_always_flags & \ |
| 272 | v4_always_flags & \ | 274 | v4_always_flags & \ |
| 273 | v4wbi_always_flags & \ | 275 | v4wbi_always_flags & \ |
| 274 | fr_always_flags & \ | 276 | fr_always_flags & \ |
| 275 | v4wb_always_flags & \ | 277 | v4wb_always_flags & \ |
| 276 | v6wbi_always_flags) | 278 | v6wbi_always_flags & \ |
| 279 | v7wbi_always_flags) | ||
| 277 | 280 | ||
| 278 | #define tlb_flag(f) ((always_tlb_flags & (f)) || (__tlb_flag & possible_tlb_flags & (f))) | 281 | #define tlb_flag(f) ((always_tlb_flags & (f)) || (__tlb_flag & possible_tlb_flags & (f))) |
| 279 | 282 | ||
diff --git a/arch/arm/include/asm/unistd.h b/arch/arm/include/asm/unistd.h index f95fbb2fcb5f..010618487cf1 100644 --- a/arch/arm/include/asm/unistd.h +++ b/arch/arm/include/asm/unistd.h | |||
| @@ -381,6 +381,12 @@ | |||
| 381 | #define __NR_fallocate (__NR_SYSCALL_BASE+352) | 381 | #define __NR_fallocate (__NR_SYSCALL_BASE+352) |
| 382 | #define __NR_timerfd_settime (__NR_SYSCALL_BASE+353) | 382 | #define __NR_timerfd_settime (__NR_SYSCALL_BASE+353) |
| 383 | #define __NR_timerfd_gettime (__NR_SYSCALL_BASE+354) | 383 | #define __NR_timerfd_gettime (__NR_SYSCALL_BASE+354) |
| 384 | #define __NR_signalfd4 (__NR_SYSCALL_BASE+355) | ||
| 385 | #define __NR_eventfd2 (__NR_SYSCALL_BASE+356) | ||
| 386 | #define __NR_epoll_create1 (__NR_SYSCALL_BASE+357) | ||
| 387 | #define __NR_dup3 (__NR_SYSCALL_BASE+358) | ||
| 388 | #define __NR_pipe2 (__NR_SYSCALL_BASE+359) | ||
| 389 | #define __NR_inotify_init1 (__NR_SYSCALL_BASE+360) | ||
| 384 | 390 | ||
| 385 | /* | 391 | /* |
| 386 | * The following SWIs are ARM private. | 392 | * The following SWIs are ARM private. |
diff --git a/arch/arm/kernel/.gitignore b/arch/arm/kernel/.gitignore new file mode 100644 index 000000000000..c5f676c3c224 --- /dev/null +++ b/arch/arm/kernel/.gitignore | |||
| @@ -0,0 +1 @@ | |||
| vmlinux.lds | |||
diff --git a/arch/arm/kernel/calls.S b/arch/arm/kernel/calls.S index 30a67a5a40a8..09a061cb7838 100644 --- a/arch/arm/kernel/calls.S +++ b/arch/arm/kernel/calls.S | |||
| @@ -262,10 +262,10 @@ | |||
| 262 | /* 250 */ CALL(sys_epoll_create) | 262 | /* 250 */ CALL(sys_epoll_create) |
| 263 | CALL(ABI(sys_epoll_ctl, sys_oabi_epoll_ctl)) | 263 | CALL(ABI(sys_epoll_ctl, sys_oabi_epoll_ctl)) |
| 264 | CALL(ABI(sys_epoll_wait, sys_oabi_epoll_wait)) | 264 | CALL(ABI(sys_epoll_wait, sys_oabi_epoll_wait)) |
| 265 | CALL(sys_remap_file_pages) | 265 | CALL(sys_remap_file_pages) |
| 266 | CALL(sys_ni_syscall) /* sys_set_thread_area */ | 266 | CALL(sys_ni_syscall) /* sys_set_thread_area */ |
| 267 | /* 255 */ CALL(sys_ni_syscall) /* sys_get_thread_area */ | 267 | /* 255 */ CALL(sys_ni_syscall) /* sys_get_thread_area */ |
| 268 | CALL(sys_set_tid_address) | 268 | CALL(sys_set_tid_address) |
| 269 | CALL(sys_timer_create) | 269 | CALL(sys_timer_create) |
| 270 | CALL(sys_timer_settime) | 270 | CALL(sys_timer_settime) |
| 271 | CALL(sys_timer_gettime) | 271 | CALL(sys_timer_gettime) |
| @@ -364,6 +364,12 @@ | |||
| 364 | CALL(sys_fallocate) | 364 | CALL(sys_fallocate) |
| 365 | CALL(sys_timerfd_settime) | 365 | CALL(sys_timerfd_settime) |
| 366 | CALL(sys_timerfd_gettime) | 366 | CALL(sys_timerfd_gettime) |
| 367 | /* 355 */ CALL(sys_signalfd4) | ||
| 368 | CALL(sys_eventfd2) | ||
| 369 | CALL(sys_epoll_create1) | ||
| 370 | CALL(sys_dup3) | ||
| 371 | CALL(sys_pipe2) | ||
| 372 | /* 360 */ CALL(sys_inotify_init1) | ||
| 367 | #ifndef syscalls_counted | 373 | #ifndef syscalls_counted |
| 368 | .equ syscalls_padding, ((NR_syscalls + 3) & ~3) - NR_syscalls | 374 | .equ syscalls_padding, ((NR_syscalls + 3) & ~3) - NR_syscalls |
| 369 | #define syscalls_counted | 375 | #define syscalls_counted |
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c index 38f0e7940a13..2ca7038b67a7 100644 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c | |||
| @@ -81,6 +81,8 @@ EXPORT_SYMBOL(system_serial_high); | |||
| 81 | unsigned int elf_hwcap; | 81 | unsigned int elf_hwcap; |
| 82 | EXPORT_SYMBOL(elf_hwcap); | 82 | EXPORT_SYMBOL(elf_hwcap); |
| 83 | 83 | ||
| 84 | unsigned long __initdata vmalloc_reserve = 128 << 20; | ||
| 85 | |||
| 84 | 86 | ||
| 85 | #ifdef MULTI_CPU | 87 | #ifdef MULTI_CPU |
| 86 | struct processor processor; | 88 | struct processor processor; |
| @@ -501,6 +503,17 @@ static void __init early_mem(char **p) | |||
| 501 | __early_param("mem=", early_mem); | 503 | __early_param("mem=", early_mem); |
| 502 | 504 | ||
| 503 | /* | 505 | /* |
| 506 | * vmalloc=size forces the vmalloc area to be exactly 'size' | ||
| 507 | * bytes. This can be used to increase (or decrease) the vmalloc | ||
| 508 | * area - the default is 128m. | ||
| 509 | */ | ||
| 510 | static void __init early_vmalloc(char **arg) | ||
| 511 | { | ||
| 512 | vmalloc_reserve = memparse(*arg, arg); | ||
| 513 | } | ||
| 514 | __early_param("vmalloc=", early_vmalloc); | ||
| 515 | |||
| 516 | /* | ||
| 504 | * Initial parsing of the command line. | 517 | * Initial parsing of the command line. |
| 505 | */ | 518 | */ |
| 506 | static void __init parse_cmdline(char **cmdline_p, char *from) | 519 | static void __init parse_cmdline(char **cmdline_p, char *from) |
diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c index 7277aef83098..872f1f8fbb57 100644 --- a/arch/arm/kernel/traps.c +++ b/arch/arm/kernel/traps.c | |||
| @@ -288,14 +288,28 @@ void unregister_undef_hook(struct undef_hook *hook) | |||
| 288 | spin_unlock_irqrestore(&undef_lock, flags); | 288 | spin_unlock_irqrestore(&undef_lock, flags); |
| 289 | } | 289 | } |
| 290 | 290 | ||
| 291 | static int call_undef_hook(struct pt_regs *regs, unsigned int instr) | ||
| 292 | { | ||
| 293 | struct undef_hook *hook; | ||
| 294 | unsigned long flags; | ||
| 295 | int (*fn)(struct pt_regs *regs, unsigned int instr) = NULL; | ||
| 296 | |||
| 297 | spin_lock_irqsave(&undef_lock, flags); | ||
| 298 | list_for_each_entry(hook, &undef_hook, node) | ||
| 299 | if ((instr & hook->instr_mask) == hook->instr_val && | ||
| 300 | (regs->ARM_cpsr & hook->cpsr_mask) == hook->cpsr_val) | ||
| 301 | fn = hook->fn; | ||
| 302 | spin_unlock_irqrestore(&undef_lock, flags); | ||
| 303 | |||
| 304 | return fn ? fn(regs, instr) : 1; | ||
| 305 | } | ||
| 306 | |||
| 291 | asmlinkage void __exception do_undefinstr(struct pt_regs *regs) | 307 | asmlinkage void __exception do_undefinstr(struct pt_regs *regs) |
| 292 | { | 308 | { |
| 293 | unsigned int correction = thumb_mode(regs) ? 2 : 4; | 309 | unsigned int correction = thumb_mode(regs) ? 2 : 4; |
| 294 | unsigned int instr; | 310 | unsigned int instr; |
| 295 | struct undef_hook *hook; | ||
| 296 | siginfo_t info; | 311 | siginfo_t info; |
| 297 | void __user *pc; | 312 | void __user *pc; |
| 298 | unsigned long flags; | ||
| 299 | 313 | ||
| 300 | /* | 314 | /* |
| 301 | * According to the ARM ARM, PC is 2 or 4 bytes ahead, | 315 | * According to the ARM ARM, PC is 2 or 4 bytes ahead, |
| @@ -325,17 +339,8 @@ asmlinkage void __exception do_undefinstr(struct pt_regs *regs) | |||
| 325 | } | 339 | } |
| 326 | #endif | 340 | #endif |
| 327 | 341 | ||
| 328 | spin_lock_irqsave(&undef_lock, flags); | 342 | if (call_undef_hook(regs, instr) == 0) |
| 329 | list_for_each_entry(hook, &undef_hook, node) { | 343 | return; |
| 330 | if ((instr & hook->instr_mask) == hook->instr_val && | ||
| 331 | (regs->ARM_cpsr & hook->cpsr_mask) == hook->cpsr_val) { | ||
| 332 | if (hook->fn(regs, instr) == 0) { | ||
| 333 | spin_unlock_irqrestore(&undef_lock, flags); | ||
| 334 | return; | ||
| 335 | } | ||
| 336 | } | ||
| 337 | } | ||
| 338 | spin_unlock_irqrestore(&undef_lock, flags); | ||
| 339 | 344 | ||
| 340 | #ifdef CONFIG_DEBUG_USER | 345 | #ifdef CONFIG_DEBUG_USER |
| 341 | if (user_debug & UDBG_UNDEFINED) { | 346 | if (user_debug & UDBG_UNDEFINED) { |
diff --git a/arch/arm/mach-footbridge/cats-pci.c b/arch/arm/mach-footbridge/cats-pci.c index 35eb232a649a..ae3e1c8c7583 100644 --- a/arch/arm/mach-footbridge/cats-pci.c +++ b/arch/arm/mach-footbridge/cats-pci.c | |||
| @@ -18,6 +18,9 @@ static int irqmap_cats[] __initdata = { IRQ_PCI, IRQ_IN0, IRQ_IN1, IRQ_IN3 }; | |||
| 18 | 18 | ||
| 19 | static int __init cats_map_irq(struct pci_dev *dev, u8 slot, u8 pin) | 19 | static int __init cats_map_irq(struct pci_dev *dev, u8 slot, u8 pin) |
| 20 | { | 20 | { |
| 21 | if (dev->irq >= 255) | ||
| 22 | return -1; /* not a valid interrupt. */ | ||
| 23 | |||
| 21 | if (dev->irq >= 128) | 24 | if (dev->irq >= 128) |
| 22 | return dev->irq & 0x1f; | 25 | return dev->irq & 0x1f; |
| 23 | 26 | ||
diff --git a/arch/arm/mach-integrator/cpu.c b/arch/arm/mach-integrator/cpu.c index ce5ea7c26675..7c49d55e6b27 100644 --- a/arch/arm/mach-integrator/cpu.c +++ b/arch/arm/mach-integrator/cpu.c | |||
| @@ -3,8 +3,6 @@ | |||
| 3 | * | 3 | * |
| 4 | * Copyright (C) 2001-2002 Deep Blue Solutions Ltd. | 4 | * Copyright (C) 2001-2002 Deep Blue Solutions Ltd. |
| 5 | * | 5 | * |
| 6 | * $Id: cpu.c,v 1.6 2002/07/18 13:58:51 rmk Exp $ | ||
| 7 | * | ||
| 8 | * This program is free software; you can redistribute it and/or modify | 6 | * This program is free software; you can redistribute it and/or modify |
| 9 | * it under the terms of the GNU General Public License version 2 as | 7 | * it under the terms of the GNU General Public License version 2 as |
| 10 | * published by the Free Software Foundation. | 8 | * published by the Free Software Foundation. |
diff --git a/arch/arm/mach-integrator/include/mach/platform.h b/arch/arm/mach-integrator/include/mach/platform.h index 83c4c1ceb411..028b87839c0f 100644 --- a/arch/arm/mach-integrator/include/mach/platform.h +++ b/arch/arm/mach-integrator/include/mach/platform.h | |||
| @@ -26,8 +26,6 @@ | |||
| 26 | * NOTE: This is a multi-hosted header file for use with uHAL and | 26 | * NOTE: This is a multi-hosted header file for use with uHAL and |
| 27 | * supported debuggers. | 27 | * supported debuggers. |
| 28 | * | 28 | * |
| 29 | * $Id: platform.s,v 1.32 2000/02/18 10:51:39 asims Exp $ | ||
| 30 | * | ||
| 31 | * ***********************************************************************/ | 29 | * ***********************************************************************/ |
| 32 | 30 | ||
| 33 | #ifndef __address_h | 31 | #ifndef __address_h |
diff --git a/arch/arm/mach-kirkwood/common.c b/arch/arm/mach-kirkwood/common.c index 0e509b8ad56e..189f16f3619d 100644 --- a/arch/arm/mach-kirkwood/common.c +++ b/arch/arm/mach-kirkwood/common.c | |||
| @@ -15,15 +15,17 @@ | |||
| 15 | #include <linux/mbus.h> | 15 | #include <linux/mbus.h> |
| 16 | #include <linux/mv643xx_eth.h> | 16 | #include <linux/mv643xx_eth.h> |
| 17 | #include <linux/ata_platform.h> | 17 | #include <linux/ata_platform.h> |
| 18 | #include <linux/spi/orion_spi.h> | ||
| 18 | #include <asm/page.h> | 19 | #include <asm/page.h> |
| 19 | #include <asm/timex.h> | 20 | #include <asm/timex.h> |
| 20 | #include <asm/mach/map.h> | 21 | #include <asm/mach/map.h> |
| 21 | #include <asm/mach/time.h> | 22 | #include <asm/mach/time.h> |
| 22 | #include <mach/kirkwood.h> | 23 | #include <mach/kirkwood.h> |
| 23 | #include <asm/plat-orion/cache-feroceon-l2.h> | 24 | #include <plat/cache-feroceon-l2.h> |
| 24 | #include <asm/plat-orion/ehci-orion.h> | 25 | #include <plat/ehci-orion.h> |
| 25 | #include <asm/plat-orion/orion_nand.h> | 26 | #include <plat/mv_xor.h> |
| 26 | #include <asm/plat-orion/time.h> | 27 | #include <plat/orion_nand.h> |
| 28 | #include <plat/time.h> | ||
| 27 | #include "common.h" | 29 | #include "common.h" |
| 28 | 30 | ||
| 29 | /***************************************************************************** | 31 | /***************************************************************************** |
| @@ -196,6 +198,37 @@ void __init kirkwood_sata_init(struct mv_sata_platform_data *sata_data) | |||
| 196 | 198 | ||
| 197 | 199 | ||
| 198 | /***************************************************************************** | 200 | /***************************************************************************** |
| 201 | * SPI | ||
| 202 | ****************************************************************************/ | ||
| 203 | static struct orion_spi_info kirkwood_spi_plat_data = { | ||
| 204 | .tclk = KIRKWOOD_TCLK, | ||
| 205 | }; | ||
| 206 | |||
| 207 | static struct resource kirkwood_spi_resources[] = { | ||
| 208 | { | ||
| 209 | .start = SPI_PHYS_BASE, | ||
| 210 | .end = SPI_PHYS_BASE + SZ_512 - 1, | ||
| 211 | .flags = IORESOURCE_MEM, | ||
| 212 | }, | ||
| 213 | }; | ||
| 214 | |||
| 215 | static struct platform_device kirkwood_spi = { | ||
| 216 | .name = "orion_spi", | ||
| 217 | .id = 0, | ||
| 218 | .resource = kirkwood_spi_resources, | ||
| 219 | .dev = { | ||
| 220 | .platform_data = &kirkwood_spi_plat_data, | ||
| 221 | }, | ||
| 222 | .num_resources = ARRAY_SIZE(kirkwood_spi_resources), | ||
| 223 | }; | ||
| 224 | |||
| 225 | void __init kirkwood_spi_init() | ||
| 226 | { | ||
| 227 | platform_device_register(&kirkwood_spi); | ||
| 228 | } | ||
| 229 | |||
| 230 | |||
| 231 | /***************************************************************************** | ||
| 199 | * UART0 | 232 | * UART0 |
| 200 | ****************************************************************************/ | 233 | ****************************************************************************/ |
| 201 | static struct plat_serial8250_port kirkwood_uart0_data[] = { | 234 | static struct plat_serial8250_port kirkwood_uart0_data[] = { |
| @@ -284,6 +317,212 @@ void __init kirkwood_uart1_init(void) | |||
| 284 | 317 | ||
| 285 | 318 | ||
| 286 | /***************************************************************************** | 319 | /***************************************************************************** |
| 320 | * XOR | ||
| 321 | ****************************************************************************/ | ||
| 322 | static struct mv_xor_platform_shared_data kirkwood_xor_shared_data = { | ||
| 323 | .dram = &kirkwood_mbus_dram_info, | ||
| 324 | }; | ||
| 325 | |||
| 326 | static u64 kirkwood_xor_dmamask = DMA_32BIT_MASK; | ||
| 327 | |||
| 328 | |||
| 329 | /***************************************************************************** | ||
| 330 | * XOR0 | ||
| 331 | ****************************************************************************/ | ||
| 332 | static struct resource kirkwood_xor0_shared_resources[] = { | ||
| 333 | { | ||
| 334 | .name = "xor 0 low", | ||
| 335 | .start = XOR0_PHYS_BASE, | ||
| 336 | .end = XOR0_PHYS_BASE + 0xff, | ||
| 337 | .flags = IORESOURCE_MEM, | ||
| 338 | }, { | ||
| 339 | .name = "xor 0 high", | ||
| 340 | .start = XOR0_HIGH_PHYS_BASE, | ||
| 341 | .end = XOR0_HIGH_PHYS_BASE + 0xff, | ||
| 342 | .flags = IORESOURCE_MEM, | ||
| 343 | }, | ||
| 344 | }; | ||
| 345 | |||
| 346 | static struct platform_device kirkwood_xor0_shared = { | ||
| 347 | .name = MV_XOR_SHARED_NAME, | ||
| 348 | .id = 0, | ||
| 349 | .dev = { | ||
| 350 | .platform_data = &kirkwood_xor_shared_data, | ||
| 351 | }, | ||
| 352 | .num_resources = ARRAY_SIZE(kirkwood_xor0_shared_resources), | ||
| 353 | .resource = kirkwood_xor0_shared_resources, | ||
| 354 | }; | ||
| 355 | |||
| 356 | static struct resource kirkwood_xor00_resources[] = { | ||
| 357 | [0] = { | ||
| 358 | .start = IRQ_KIRKWOOD_XOR_00, | ||
| 359 | .end = IRQ_KIRKWOOD_XOR_00, | ||
| 360 | .flags = IORESOURCE_IRQ, | ||
| 361 | }, | ||
| 362 | }; | ||
| 363 | |||
| 364 | static struct mv_xor_platform_data kirkwood_xor00_data = { | ||
| 365 | .shared = &kirkwood_xor0_shared, | ||
| 366 | .hw_id = 0, | ||
| 367 | .pool_size = PAGE_SIZE, | ||
| 368 | }; | ||
| 369 | |||
| 370 | static struct platform_device kirkwood_xor00_channel = { | ||
| 371 | .name = MV_XOR_NAME, | ||
| 372 | .id = 0, | ||
| 373 | .num_resources = ARRAY_SIZE(kirkwood_xor00_resources), | ||
| 374 | .resource = kirkwood_xor00_resources, | ||
| 375 | .dev = { | ||
| 376 | .dma_mask = &kirkwood_xor_dmamask, | ||
| 377 | .coherent_dma_mask = DMA_64BIT_MASK, | ||
| 378 | .platform_data = (void *)&kirkwood_xor00_data, | ||
| 379 | }, | ||
| 380 | }; | ||
| 381 | |||
| 382 | static struct resource kirkwood_xor01_resources[] = { | ||
| 383 | [0] = { | ||
| 384 | .start = IRQ_KIRKWOOD_XOR_01, | ||
| 385 | .end = IRQ_KIRKWOOD_XOR_01, | ||
| 386 | .flags = IORESOURCE_IRQ, | ||
| 387 | }, | ||
| 388 | }; | ||
| 389 | |||
| 390 | static struct mv_xor_platform_data kirkwood_xor01_data = { | ||
| 391 | .shared = &kirkwood_xor0_shared, | ||
| 392 | .hw_id = 1, | ||
| 393 | .pool_size = PAGE_SIZE, | ||
| 394 | }; | ||
| 395 | |||
| 396 | static struct platform_device kirkwood_xor01_channel = { | ||
| 397 | .name = MV_XOR_NAME, | ||
| 398 | .id = 1, | ||
| 399 | .num_resources = ARRAY_SIZE(kirkwood_xor01_resources), | ||
| 400 | .resource = kirkwood_xor01_resources, | ||
| 401 | .dev = { | ||
| 402 | .dma_mask = &kirkwood_xor_dmamask, | ||
| 403 | .coherent_dma_mask = DMA_64BIT_MASK, | ||
| 404 | .platform_data = (void *)&kirkwood_xor01_data, | ||
| 405 | }, | ||
| 406 | }; | ||
| 407 | |||
| 408 | void __init kirkwood_xor0_init(void) | ||
| 409 | { | ||
| 410 | platform_device_register(&kirkwood_xor0_shared); | ||
| 411 | |||
| 412 | /* | ||
| 413 | * two engines can't do memset simultaneously, this limitation | ||
| 414 | * satisfied by removing memset support from one of the engines. | ||
| 415 | */ | ||
| 416 | dma_cap_set(DMA_MEMCPY, kirkwood_xor00_data.cap_mask); | ||
| 417 | dma_cap_set(DMA_XOR, kirkwood_xor00_data.cap_mask); | ||
| 418 | platform_device_register(&kirkwood_xor00_channel); | ||
| 419 | |||
| 420 | dma_cap_set(DMA_MEMCPY, kirkwood_xor01_data.cap_mask); | ||
| 421 | dma_cap_set(DMA_MEMSET, kirkwood_xor01_data.cap_mask); | ||
| 422 | dma_cap_set(DMA_XOR, kirkwood_xor01_data.cap_mask); | ||
| 423 | platform_device_register(&kirkwood_xor01_channel); | ||
| 424 | } | ||
| 425 | |||
| 426 | |||
| 427 | /***************************************************************************** | ||
| 428 | * XOR1 | ||
| 429 | ****************************************************************************/ | ||
| 430 | static struct resource kirkwood_xor1_shared_resources[] = { | ||
| 431 | { | ||
| 432 | .name = "xor 1 low", | ||
| 433 | .start = XOR1_PHYS_BASE, | ||
| 434 | .end = XOR1_PHYS_BASE + 0xff, | ||
| 435 | .flags = IORESOURCE_MEM, | ||
| 436 | }, { | ||
| 437 | .name = "xor 1 high", | ||
| 438 | .start = XOR1_HIGH_PHYS_BASE, | ||
| 439 | .end = XOR1_HIGH_PHYS_BASE + 0xff, | ||
| 440 | .flags = IORESOURCE_MEM, | ||
| 441 | }, | ||
| 442 | }; | ||
| 443 | |||
| 444 | static struct platform_device kirkwood_xor1_shared = { | ||
| 445 | .name = MV_XOR_SHARED_NAME, | ||
| 446 | .id = 1, | ||
| 447 | .dev = { | ||
| 448 | .platform_data = &kirkwood_xor_shared_data, | ||
| 449 | }, | ||
| 450 | .num_resources = ARRAY_SIZE(kirkwood_xor1_shared_resources), | ||
| 451 | .resource = kirkwood_xor1_shared_resources, | ||
| 452 | }; | ||
| 453 | |||
| 454 | static struct resource kirkwood_xor10_resources[] = { | ||
| 455 | [0] = { | ||
| 456 | .start = IRQ_KIRKWOOD_XOR_10, | ||
| 457 | .end = IRQ_KIRKWOOD_XOR_10, | ||
| 458 | .flags = IORESOURCE_IRQ, | ||
| 459 | }, | ||
| 460 | }; | ||
| 461 | |||
| 462 | static struct mv_xor_platform_data kirkwood_xor10_data = { | ||
| 463 | .shared = &kirkwood_xor1_shared, | ||
| 464 | .hw_id = 0, | ||
| 465 | .pool_size = PAGE_SIZE, | ||
| 466 | }; | ||
| 467 | |||
| 468 | static struct platform_device kirkwood_xor10_channel = { | ||
| 469 | .name = MV_XOR_NAME, | ||
| 470 | .id = 2, | ||
| 471 | .num_resources = ARRAY_SIZE(kirkwood_xor10_resources), | ||
| 472 | .resource = kirkwood_xor10_resources, | ||
| 473 | .dev = { | ||
| 474 | .dma_mask = &kirkwood_xor_dmamask, | ||
| 475 | .coherent_dma_mask = DMA_64BIT_MASK, | ||
| 476 | .platform_data = (void *)&kirkwood_xor10_data, | ||
| 477 | }, | ||
| 478 | }; | ||
| 479 | |||
| 480 | static struct resource kirkwood_xor11_resources[] = { | ||
| 481 | [0] = { | ||
| 482 | .start = IRQ_KIRKWOOD_XOR_11, | ||
| 483 | .end = IRQ_KIRKWOOD_XOR_11, | ||
| 484 | .flags = IORESOURCE_IRQ, | ||
| 485 | }, | ||
| 486 | }; | ||
| 487 | |||
| 488 | static struct mv_xor_platform_data kirkwood_xor11_data = { | ||
| 489 | .shared = &kirkwood_xor1_shared, | ||
| 490 | .hw_id = 1, | ||
| 491 | .pool_size = PAGE_SIZE, | ||
| 492 | }; | ||
| 493 | |||
| 494 | static struct platform_device kirkwood_xor11_channel = { | ||
| 495 | .name = MV_XOR_NAME, | ||
| 496 | .id = 3, | ||
| 497 | .num_resources = ARRAY_SIZE(kirkwood_xor11_resources), | ||
| 498 | .resource = kirkwood_xor11_resources, | ||
| 499 | .dev = { | ||
| 500 | .dma_mask = &kirkwood_xor_dmamask, | ||
| 501 | .coherent_dma_mask = DMA_64BIT_MASK, | ||
| 502 | .platform_data = (void *)&kirkwood_xor11_data, | ||
| 503 | }, | ||
| 504 | }; | ||
| 505 | |||
| 506 | void __init kirkwood_xor1_init(void) | ||
| 507 | { | ||
| 508 | platform_device_register(&kirkwood_xor1_shared); | ||
| 509 | |||
| 510 | /* | ||
| 511 | * two engines can't do memset simultaneously, this limitation | ||
| 512 | * satisfied by removing memset support from one of the engines. | ||
| 513 | */ | ||
| 514 | dma_cap_set(DMA_MEMCPY, kirkwood_xor10_data.cap_mask); | ||
| 515 | dma_cap_set(DMA_XOR, kirkwood_xor10_data.cap_mask); | ||
| 516 | platform_device_register(&kirkwood_xor10_channel); | ||
| 517 | |||
| 518 | dma_cap_set(DMA_MEMCPY, kirkwood_xor11_data.cap_mask); | ||
| 519 | dma_cap_set(DMA_MEMSET, kirkwood_xor11_data.cap_mask); | ||
| 520 | dma_cap_set(DMA_XOR, kirkwood_xor11_data.cap_mask); | ||
| 521 | platform_device_register(&kirkwood_xor11_channel); | ||
| 522 | } | ||
| 523 | |||
| 524 | |||
| 525 | /***************************************************************************** | ||
| 287 | * Time handling | 526 | * Time handling |
| 288 | ****************************************************************************/ | 527 | ****************************************************************************/ |
| 289 | static void kirkwood_timer_init(void) | 528 | static void kirkwood_timer_init(void) |
diff --git a/arch/arm/mach-kirkwood/common.h b/arch/arm/mach-kirkwood/common.h index 5dee2f6b40a5..69cd113af03a 100644 --- a/arch/arm/mach-kirkwood/common.h +++ b/arch/arm/mach-kirkwood/common.h | |||
| @@ -33,8 +33,11 @@ void kirkwood_ge00_init(struct mv643xx_eth_platform_data *eth_data); | |||
| 33 | void kirkwood_pcie_init(void); | 33 | void kirkwood_pcie_init(void); |
| 34 | void kirkwood_rtc_init(void); | 34 | void kirkwood_rtc_init(void); |
| 35 | void kirkwood_sata_init(struct mv_sata_platform_data *sata_data); | 35 | void kirkwood_sata_init(struct mv_sata_platform_data *sata_data); |
| 36 | void kirkwood_spi_init(void); | ||
| 36 | void kirkwood_uart0_init(void); | 37 | void kirkwood_uart0_init(void); |
| 37 | void kirkwood_uart1_init(void); | 38 | void kirkwood_uart1_init(void); |
| 39 | void kirkwood_xor0_init(void); | ||
| 40 | void kirkwood_xor1_init(void); | ||
| 38 | 41 | ||
| 39 | extern struct sys_timer kirkwood_timer; | 42 | extern struct sys_timer kirkwood_timer; |
| 40 | 43 | ||
diff --git a/arch/arm/mach-kirkwood/include/mach/kirkwood.h b/arch/arm/mach-kirkwood/include/mach/kirkwood.h index d1336b41f0fb..5c69992295e8 100644 --- a/arch/arm/mach-kirkwood/include/mach/kirkwood.h +++ b/arch/arm/mach-kirkwood/include/mach/kirkwood.h | |||
| @@ -88,6 +88,15 @@ | |||
| 88 | 88 | ||
| 89 | #define USB_PHYS_BASE (KIRKWOOD_REGS_PHYS_BASE | 0x50000) | 89 | #define USB_PHYS_BASE (KIRKWOOD_REGS_PHYS_BASE | 0x50000) |
| 90 | 90 | ||
| 91 | #define XOR0_PHYS_BASE (KIRKWOOD_REGS_PHYS_BASE | 0x60800) | ||
| 92 | #define XOR0_VIRT_BASE (KIRKWOOD_REGS_VIRT_BASE | 0x60800) | ||
| 93 | #define XOR1_PHYS_BASE (KIRKWOOD_REGS_PHYS_BASE | 0x60900) | ||
| 94 | #define XOR1_VIRT_BASE (KIRKWOOD_REGS_VIRT_BASE | 0x60900) | ||
| 95 | #define XOR0_HIGH_PHYS_BASE (KIRKWOOD_REGS_PHYS_BASE | 0x60A00) | ||
| 96 | #define XOR0_HIGH_VIRT_BASE (KIRKWOOD_REGS_VIRT_BASE | 0x60A00) | ||
| 97 | #define XOR1_HIGH_PHYS_BASE (KIRKWOOD_REGS_PHYS_BASE | 0x60B00) | ||
| 98 | #define XOR1_HIGH_VIRT_BASE (KIRKWOOD_REGS_VIRT_BASE | 0x60B00) | ||
| 99 | |||
| 91 | #define GE00_PHYS_BASE (KIRKWOOD_REGS_PHYS_BASE | 0x70000) | 100 | #define GE00_PHYS_BASE (KIRKWOOD_REGS_PHYS_BASE | 0x70000) |
| 92 | #define GE01_PHYS_BASE (KIRKWOOD_REGS_PHYS_BASE | 0x74000) | 101 | #define GE01_PHYS_BASE (KIRKWOOD_REGS_PHYS_BASE | 0x74000) |
| 93 | 102 | ||
diff --git a/arch/arm/mach-kirkwood/irq.c b/arch/arm/mach-kirkwood/irq.c index 302bb2cf6669..5790643ffe07 100644 --- a/arch/arm/mach-kirkwood/irq.c +++ b/arch/arm/mach-kirkwood/irq.c | |||
| @@ -12,7 +12,7 @@ | |||
| 12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
| 13 | #include <linux/irq.h> | 13 | #include <linux/irq.h> |
| 14 | #include <linux/io.h> | 14 | #include <linux/io.h> |
| 15 | #include <asm/plat-orion/irq.h> | 15 | #include <plat/irq.h> |
| 16 | #include "common.h" | 16 | #include "common.h" |
| 17 | 17 | ||
| 18 | void __init kirkwood_init_irq(void) | 18 | void __init kirkwood_init_irq(void) |
diff --git a/arch/arm/mach-kirkwood/pcie.c b/arch/arm/mach-kirkwood/pcie.c index 8282d0ff84bf..2195fa31f6b7 100644 --- a/arch/arm/mach-kirkwood/pcie.c +++ b/arch/arm/mach-kirkwood/pcie.c | |||
| @@ -12,7 +12,7 @@ | |||
| 12 | #include <linux/pci.h> | 12 | #include <linux/pci.h> |
| 13 | #include <linux/mbus.h> | 13 | #include <linux/mbus.h> |
| 14 | #include <asm/mach/pci.h> | 14 | #include <asm/mach/pci.h> |
| 15 | #include <asm/plat-orion/pcie.h> | 15 | #include <plat/pcie.h> |
| 16 | #include "common.h" | 16 | #include "common.h" |
| 17 | 17 | ||
| 18 | 18 | ||
diff --git a/arch/arm/mach-kirkwood/rd88f6192-nas-setup.c b/arch/arm/mach-kirkwood/rd88f6192-nas-setup.c index 182230a5d198..a3012d445971 100644 --- a/arch/arm/mach-kirkwood/rd88f6192-nas-setup.c +++ b/arch/arm/mach-kirkwood/rd88f6192-nas-setup.c | |||
| @@ -18,6 +18,9 @@ | |||
| 18 | #include <linux/timer.h> | 18 | #include <linux/timer.h> |
| 19 | #include <linux/ata_platform.h> | 19 | #include <linux/ata_platform.h> |
| 20 | #include <linux/mv643xx_eth.h> | 20 | #include <linux/mv643xx_eth.h> |
| 21 | #include <linux/spi/flash.h> | ||
| 22 | #include <linux/spi/spi.h> | ||
| 23 | #include <linux/spi/orion_spi.h> | ||
| 21 | #include <asm/mach-types.h> | 24 | #include <asm/mach-types.h> |
| 22 | #include <asm/mach/arch.h> | 25 | #include <asm/mach/arch.h> |
| 23 | #include <asm/mach/pci.h> | 26 | #include <asm/mach/pci.h> |
| @@ -34,6 +37,21 @@ static struct mv_sata_platform_data rd88f6192_sata_data = { | |||
| 34 | .n_ports = 2, | 37 | .n_ports = 2, |
| 35 | }; | 38 | }; |
| 36 | 39 | ||
| 40 | static const struct flash_platform_data rd88F6192_spi_slave_data = { | ||
| 41 | .type = "m25p128", | ||
| 42 | }; | ||
| 43 | |||
| 44 | static struct spi_board_info __initdata rd88F6192_spi_slave_info[] = { | ||
| 45 | { | ||
| 46 | .modalias = "m25p80", | ||
| 47 | .platform_data = &rd88F6192_spi_slave_data, | ||
| 48 | .irq = -1, | ||
| 49 | .max_speed_hz = 20000000, | ||
| 50 | .bus_num = 0, | ||
| 51 | .chip_select = 0, | ||
| 52 | }, | ||
| 53 | }; | ||
| 54 | |||
| 37 | static void __init rd88f6192_init(void) | 55 | static void __init rd88f6192_init(void) |
| 38 | { | 56 | { |
| 39 | /* | 57 | /* |
| @@ -45,7 +63,12 @@ static void __init rd88f6192_init(void) | |||
| 45 | kirkwood_ge00_init(&rd88f6192_ge00_data); | 63 | kirkwood_ge00_init(&rd88f6192_ge00_data); |
| 46 | kirkwood_rtc_init(); | 64 | kirkwood_rtc_init(); |
| 47 | kirkwood_sata_init(&rd88f6192_sata_data); | 65 | kirkwood_sata_init(&rd88f6192_sata_data); |
| 66 | spi_register_board_info(rd88F6192_spi_slave_info, | ||
| 67 | ARRAY_SIZE(rd88F6192_spi_slave_info)); | ||
| 68 | kirkwood_spi_init(); | ||
| 48 | kirkwood_uart0_init(); | 69 | kirkwood_uart0_init(); |
| 70 | kirkwood_xor0_init(); | ||
| 71 | kirkwood_xor1_init(); | ||
| 49 | } | 72 | } |
| 50 | 73 | ||
| 51 | static int __init rd88f6192_pci_init(void) | 74 | static int __init rd88f6192_pci_init(void) |
diff --git a/arch/arm/mach-kirkwood/rd88f6281-setup.c b/arch/arm/mach-kirkwood/rd88f6281-setup.c index d8a43018c7d3..d96487a0f18b 100644 --- a/arch/arm/mach-kirkwood/rd88f6281-setup.c +++ b/arch/arm/mach-kirkwood/rd88f6281-setup.c | |||
| @@ -23,7 +23,7 @@ | |||
| 23 | #include <asm/mach/arch.h> | 23 | #include <asm/mach/arch.h> |
| 24 | #include <asm/mach/pci.h> | 24 | #include <asm/mach/pci.h> |
| 25 | #include <mach/kirkwood.h> | 25 | #include <mach/kirkwood.h> |
| 26 | #include <asm/plat-orion/orion_nand.h> | 26 | #include <plat/orion_nand.h> |
| 27 | #include "common.h" | 27 | #include "common.h" |
| 28 | 28 | ||
| 29 | static struct mtd_partition rd88f6281_nand_parts[] = { | 29 | static struct mtd_partition rd88f6281_nand_parts[] = { |
diff --git a/arch/arm/mach-lh7a40x/include/mach/ssp.h b/arch/arm/mach-lh7a40x/include/mach/ssp.h index 132b1c4d5ce6..509916182e34 100644 --- a/arch/arm/mach-lh7a40x/include/mach/ssp.h +++ b/arch/arm/mach-lh7a40x/include/mach/ssp.h | |||
| @@ -1,5 +1,4 @@ | |||
| 1 | /* ssp.h | 1 | /* ssp.h |
| 2 | $Id$ | ||
| 3 | 2 | ||
| 4 | written by Marc Singer | 3 | written by Marc Singer |
| 5 | 6 Dec 2004 | 4 | 6 Dec 2004 |
diff --git a/arch/arm/mach-lh7a40x/lcd-panel.h b/arch/arm/mach-lh7a40x/lcd-panel.h index df6e38ed425b..a7f5027b2f78 100644 --- a/arch/arm/mach-lh7a40x/lcd-panel.h +++ b/arch/arm/mach-lh7a40x/lcd-panel.h | |||
| @@ -1,5 +1,4 @@ | |||
| 1 | /* lcd-panel.h | 1 | /* lcd-panel.h |
| 2 | $Id$ | ||
| 3 | 2 | ||
| 4 | written by Marc Singer | 3 | written by Marc Singer |
| 5 | 18 Jul 2005 | 4 | 18 Jul 2005 |
diff --git a/arch/arm/mach-loki/common.c b/arch/arm/mach-loki/common.c index e20cdbca1ebe..c0d2d9d12e74 100644 --- a/arch/arm/mach-loki/common.c +++ b/arch/arm/mach-loki/common.c | |||
| @@ -19,8 +19,8 @@ | |||
| 19 | #include <asm/mach/map.h> | 19 | #include <asm/mach/map.h> |
| 20 | #include <asm/mach/time.h> | 20 | #include <asm/mach/time.h> |
| 21 | #include <mach/loki.h> | 21 | #include <mach/loki.h> |
| 22 | #include <asm/plat-orion/orion_nand.h> | 22 | #include <plat/orion_nand.h> |
| 23 | #include <asm/plat-orion/time.h> | 23 | #include <plat/time.h> |
| 24 | #include "common.h" | 24 | #include "common.h" |
| 25 | 25 | ||
| 26 | /***************************************************************************** | 26 | /***************************************************************************** |
diff --git a/arch/arm/mach-loki/irq.c b/arch/arm/mach-loki/irq.c index d839af91fe03..5a487930cb2f 100644 --- a/arch/arm/mach-loki/irq.c +++ b/arch/arm/mach-loki/irq.c | |||
| @@ -12,7 +12,7 @@ | |||
| 12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
| 13 | #include <linux/irq.h> | 13 | #include <linux/irq.h> |
| 14 | #include <asm/io.h> | 14 | #include <asm/io.h> |
| 15 | #include <asm/plat-orion/irq.h> | 15 | #include <plat/irq.h> |
| 16 | #include "common.h" | 16 | #include "common.h" |
| 17 | 17 | ||
| 18 | void __init loki_init_irq(void) | 18 | void __init loki_init_irq(void) |
diff --git a/arch/arm/mach-mv78xx0/common.c b/arch/arm/mach-mv78xx0/common.c index e633f9cb239f..953a26c469cb 100644 --- a/arch/arm/mach-mv78xx0/common.c +++ b/arch/arm/mach-mv78xx0/common.c | |||
| @@ -18,10 +18,10 @@ | |||
| 18 | #include <asm/mach/map.h> | 18 | #include <asm/mach/map.h> |
| 19 | #include <asm/mach/time.h> | 19 | #include <asm/mach/time.h> |
| 20 | #include <mach/mv78xx0.h> | 20 | #include <mach/mv78xx0.h> |
| 21 | #include <asm/plat-orion/cache-feroceon-l2.h> | 21 | #include <plat/cache-feroceon-l2.h> |
| 22 | #include <asm/plat-orion/ehci-orion.h> | 22 | #include <plat/ehci-orion.h> |
| 23 | #include <asm/plat-orion/orion_nand.h> | 23 | #include <plat/orion_nand.h> |
| 24 | #include <asm/plat-orion/time.h> | 24 | #include <plat/time.h> |
| 25 | #include "common.h" | 25 | #include "common.h" |
| 26 | 26 | ||
| 27 | 27 | ||
diff --git a/arch/arm/mach-mv78xx0/irq.c b/arch/arm/mach-mv78xx0/irq.c index 3198abf54c90..28248d37b999 100644 --- a/arch/arm/mach-mv78xx0/irq.c +++ b/arch/arm/mach-mv78xx0/irq.c | |||
| @@ -12,7 +12,7 @@ | |||
| 12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
| 13 | #include <linux/pci.h> | 13 | #include <linux/pci.h> |
| 14 | #include <mach/mv78xx0.h> | 14 | #include <mach/mv78xx0.h> |
| 15 | #include <asm/plat-orion/irq.h> | 15 | #include <plat/irq.h> |
| 16 | #include "common.h" | 16 | #include "common.h" |
| 17 | 17 | ||
| 18 | void __init mv78xx0_init_irq(void) | 18 | void __init mv78xx0_init_irq(void) |
diff --git a/arch/arm/mach-mv78xx0/pcie.c b/arch/arm/mach-mv78xx0/pcie.c index b78e1443159f..430ea84d587d 100644 --- a/arch/arm/mach-mv78xx0/pcie.c +++ b/arch/arm/mach-mv78xx0/pcie.c | |||
| @@ -12,7 +12,7 @@ | |||
| 12 | #include <linux/pci.h> | 12 | #include <linux/pci.h> |
| 13 | #include <linux/mbus.h> | 13 | #include <linux/mbus.h> |
| 14 | #include <asm/mach/pci.h> | 14 | #include <asm/mach/pci.h> |
| 15 | #include <asm/plat-orion/pcie.h> | 15 | #include <plat/pcie.h> |
| 16 | #include "common.h" | 16 | #include "common.h" |
| 17 | 17 | ||
| 18 | struct pcie_port { | 18 | struct pcie_port { |
diff --git a/arch/arm/mach-orion5x/common.c b/arch/arm/mach-orion5x/common.c index 168eeacaa4c0..7b11e552bc5a 100644 --- a/arch/arm/mach-orion5x/common.c +++ b/arch/arm/mach-orion5x/common.c | |||
| @@ -26,9 +26,10 @@ | |||
| 26 | #include <asm/mach/time.h> | 26 | #include <asm/mach/time.h> |
| 27 | #include <mach/hardware.h> | 27 | #include <mach/hardware.h> |
| 28 | #include <mach/orion5x.h> | 28 | #include <mach/orion5x.h> |
| 29 | #include <asm/plat-orion/ehci-orion.h> | 29 | #include <plat/ehci-orion.h> |
| 30 | #include <asm/plat-orion/orion_nand.h> | 30 | #include <plat/mv_xor.h> |
| 31 | #include <asm/plat-orion/time.h> | 31 | #include <plat/orion_nand.h> |
| 32 | #include <plat/time.h> | ||
| 32 | #include "common.h" | 33 | #include "common.h" |
| 33 | 34 | ||
| 34 | /***************************************************************************** | 35 | /***************************************************************************** |
| @@ -355,6 +356,103 @@ void __init orion5x_uart1_init(void) | |||
| 355 | 356 | ||
| 356 | 357 | ||
| 357 | /***************************************************************************** | 358 | /***************************************************************************** |
| 359 | * XOR engine | ||
| 360 | ****************************************************************************/ | ||
| 361 | static struct resource orion5x_xor_shared_resources[] = { | ||
| 362 | { | ||
| 363 | .name = "xor low", | ||
| 364 | .start = ORION5X_XOR_PHYS_BASE, | ||
| 365 | .end = ORION5X_XOR_PHYS_BASE + 0xff, | ||
| 366 | .flags = IORESOURCE_MEM, | ||
| 367 | }, { | ||
| 368 | .name = "xor high", | ||
| 369 | .start = ORION5X_XOR_PHYS_BASE + 0x200, | ||
| 370 | .end = ORION5X_XOR_PHYS_BASE + 0x2ff, | ||
| 371 | .flags = IORESOURCE_MEM, | ||
| 372 | }, | ||
| 373 | }; | ||
| 374 | |||
| 375 | static struct platform_device orion5x_xor_shared = { | ||
| 376 | .name = MV_XOR_SHARED_NAME, | ||
| 377 | .id = 0, | ||
| 378 | .num_resources = ARRAY_SIZE(orion5x_xor_shared_resources), | ||
| 379 | .resource = orion5x_xor_shared_resources, | ||
| 380 | }; | ||
| 381 | |||
| 382 | static u64 orion5x_xor_dmamask = DMA_32BIT_MASK; | ||
| 383 | |||
| 384 | static struct resource orion5x_xor0_resources[] = { | ||
| 385 | [0] = { | ||
| 386 | .start = IRQ_ORION5X_XOR0, | ||
| 387 | .end = IRQ_ORION5X_XOR0, | ||
| 388 | .flags = IORESOURCE_IRQ, | ||
| 389 | }, | ||
| 390 | }; | ||
| 391 | |||
| 392 | static struct mv_xor_platform_data orion5x_xor0_data = { | ||
| 393 | .shared = &orion5x_xor_shared, | ||
| 394 | .hw_id = 0, | ||
| 395 | .pool_size = PAGE_SIZE, | ||
| 396 | }; | ||
| 397 | |||
| 398 | static struct platform_device orion5x_xor0_channel = { | ||
| 399 | .name = MV_XOR_NAME, | ||
| 400 | .id = 0, | ||
| 401 | .num_resources = ARRAY_SIZE(orion5x_xor0_resources), | ||
| 402 | .resource = orion5x_xor0_resources, | ||
| 403 | .dev = { | ||
| 404 | .dma_mask = &orion5x_xor_dmamask, | ||
| 405 | .coherent_dma_mask = DMA_64BIT_MASK, | ||
| 406 | .platform_data = (void *)&orion5x_xor0_data, | ||
| 407 | }, | ||
| 408 | }; | ||
| 409 | |||
| 410 | static struct resource orion5x_xor1_resources[] = { | ||
| 411 | [0] = { | ||
| 412 | .start = IRQ_ORION5X_XOR1, | ||
| 413 | .end = IRQ_ORION5X_XOR1, | ||
| 414 | .flags = IORESOURCE_IRQ, | ||
| 415 | }, | ||
| 416 | }; | ||
| 417 | |||
| 418 | static struct mv_xor_platform_data orion5x_xor1_data = { | ||
| 419 | .shared = &orion5x_xor_shared, | ||
| 420 | .hw_id = 1, | ||
| 421 | .pool_size = PAGE_SIZE, | ||
| 422 | }; | ||
| 423 | |||
| 424 | static struct platform_device orion5x_xor1_channel = { | ||
| 425 | .name = MV_XOR_NAME, | ||
| 426 | .id = 1, | ||
| 427 | .num_resources = ARRAY_SIZE(orion5x_xor1_resources), | ||
| 428 | .resource = orion5x_xor1_resources, | ||
| 429 | .dev = { | ||
| 430 | .dma_mask = &orion5x_xor_dmamask, | ||
| 431 | .coherent_dma_mask = DMA_64BIT_MASK, | ||
| 432 | .platform_data = (void *)&orion5x_xor1_data, | ||
| 433 | }, | ||
| 434 | }; | ||
| 435 | |||
| 436 | void __init orion5x_xor_init(void) | ||
| 437 | { | ||
| 438 | platform_device_register(&orion5x_xor_shared); | ||
| 439 | |||
| 440 | /* | ||
| 441 | * two engines can't do memset simultaneously, this limitation | ||
| 442 | * satisfied by removing memset support from one of the engines. | ||
| 443 | */ | ||
| 444 | dma_cap_set(DMA_MEMCPY, orion5x_xor0_data.cap_mask); | ||
| 445 | dma_cap_set(DMA_XOR, orion5x_xor0_data.cap_mask); | ||
| 446 | platform_device_register(&orion5x_xor0_channel); | ||
| 447 | |||
| 448 | dma_cap_set(DMA_MEMCPY, orion5x_xor1_data.cap_mask); | ||
| 449 | dma_cap_set(DMA_MEMSET, orion5x_xor1_data.cap_mask); | ||
| 450 | dma_cap_set(DMA_XOR, orion5x_xor1_data.cap_mask); | ||
| 451 | platform_device_register(&orion5x_xor1_channel); | ||
| 452 | } | ||
| 453 | |||
| 454 | |||
| 455 | /***************************************************************************** | ||
| 358 | * Time handling | 456 | * Time handling |
| 359 | ****************************************************************************/ | 457 | ****************************************************************************/ |
| 360 | static void orion5x_timer_init(void) | 458 | static void orion5x_timer_init(void) |
| @@ -382,6 +480,8 @@ static void __init orion5x_id(u32 *dev, u32 *rev, char **dev_name) | |||
| 382 | *dev_name = "MV88F5281-D2"; | 480 | *dev_name = "MV88F5281-D2"; |
| 383 | } else if (*rev == MV88F5281_REV_D1) { | 481 | } else if (*rev == MV88F5281_REV_D1) { |
| 384 | *dev_name = "MV88F5281-D1"; | 482 | *dev_name = "MV88F5281-D1"; |
| 483 | } else if (*rev == MV88F5281_REV_D0) { | ||
| 484 | *dev_name = "MV88F5281-D0"; | ||
| 385 | } else { | 485 | } else { |
| 386 | *dev_name = "MV88F5281-Rev-Unsupported"; | 486 | *dev_name = "MV88F5281-Rev-Unsupported"; |
| 387 | } | 487 | } |
| @@ -416,6 +516,15 @@ void __init orion5x_init(void) | |||
| 416 | * Setup Orion address map | 516 | * Setup Orion address map |
| 417 | */ | 517 | */ |
| 418 | orion5x_setup_cpu_mbus_bridge(); | 518 | orion5x_setup_cpu_mbus_bridge(); |
| 519 | |||
| 520 | /* | ||
| 521 | * Don't issue "Wait for Interrupt" instruction if we are | ||
| 522 | * running on D0 5281 silicon. | ||
| 523 | */ | ||
| 524 | if (dev == MV88F5281_DEV_ID && rev == MV88F5281_REV_D0) { | ||
| 525 | printk(KERN_INFO "Orion: Applying 5281 D0 WFI workaround.\n"); | ||
| 526 | disable_hlt(); | ||
| 527 | } | ||
| 419 | } | 528 | } |
| 420 | 529 | ||
| 421 | /* | 530 | /* |
diff --git a/arch/arm/mach-orion5x/common.h b/arch/arm/mach-orion5x/common.h index f72cf0e77544..e75bd7004b94 100644 --- a/arch/arm/mach-orion5x/common.h +++ b/arch/arm/mach-orion5x/common.h | |||
| @@ -32,6 +32,7 @@ void orion5x_i2c_init(void); | |||
| 32 | void orion5x_sata_init(struct mv_sata_platform_data *sata_data); | 32 | void orion5x_sata_init(struct mv_sata_platform_data *sata_data); |
| 33 | void orion5x_uart0_init(void); | 33 | void orion5x_uart0_init(void); |
| 34 | void orion5x_uart1_init(void); | 34 | void orion5x_uart1_init(void); |
| 35 | void orion5x_xor_init(void); | ||
| 35 | 36 | ||
| 36 | /* | 37 | /* |
| 37 | * PCIe/PCI functions. | 38 | * PCIe/PCI functions. |
diff --git a/arch/arm/mach-orion5x/db88f5281-setup.c b/arch/arm/mach-orion5x/db88f5281-setup.c index 48ce6d0e0020..ff13e9060b18 100644 --- a/arch/arm/mach-orion5x/db88f5281-setup.c +++ b/arch/arm/mach-orion5x/db88f5281-setup.c | |||
| @@ -25,7 +25,7 @@ | |||
| 25 | #include <asm/mach/arch.h> | 25 | #include <asm/mach/arch.h> |
| 26 | #include <asm/mach/pci.h> | 26 | #include <asm/mach/pci.h> |
| 27 | #include <mach/orion5x.h> | 27 | #include <mach/orion5x.h> |
| 28 | #include <asm/plat-orion/orion_nand.h> | 28 | #include <plat/orion_nand.h> |
| 29 | #include "common.h" | 29 | #include "common.h" |
| 30 | #include "mpp.h" | 30 | #include "mpp.h" |
| 31 | 31 | ||
diff --git a/arch/arm/mach-orion5x/include/mach/orion5x.h b/arch/arm/mach-orion5x/include/mach/orion5x.h index f52a7d65bec2..61eb74a88862 100644 --- a/arch/arm/mach-orion5x/include/mach/orion5x.h +++ b/arch/arm/mach-orion5x/include/mach/orion5x.h | |||
| @@ -73,6 +73,7 @@ | |||
| 73 | #define MV88F5182_REV_A2 2 | 73 | #define MV88F5182_REV_A2 2 |
| 74 | /* Orion-2 (88F5281) */ | 74 | /* Orion-2 (88F5281) */ |
| 75 | #define MV88F5281_DEV_ID 0x5281 | 75 | #define MV88F5281_DEV_ID 0x5281 |
| 76 | #define MV88F5281_REV_D0 4 | ||
| 76 | #define MV88F5281_REV_D1 5 | 77 | #define MV88F5281_REV_D1 5 |
| 77 | #define MV88F5281_REV_D2 6 | 78 | #define MV88F5281_REV_D2 6 |
| 78 | 79 | ||
| @@ -105,6 +106,10 @@ | |||
| 105 | #define ORION5X_USB0_VIRT_BASE (ORION5X_REGS_VIRT_BASE | 0x50000) | 106 | #define ORION5X_USB0_VIRT_BASE (ORION5X_REGS_VIRT_BASE | 0x50000) |
| 106 | #define ORION5X_USB0_REG(x) (ORION5X_USB0_VIRT_BASE | (x)) | 107 | #define ORION5X_USB0_REG(x) (ORION5X_USB0_VIRT_BASE | (x)) |
| 107 | 108 | ||
| 109 | #define ORION5X_XOR_PHYS_BASE (ORION5X_REGS_PHYS_BASE | 0x60900) | ||
| 110 | #define ORION5X_XOR_VIRT_BASE (ORION5X_REGS_VIRT_BASE | 0x60900) | ||
| 111 | #define ORION5X_XOR_REG(x) (ORION5X_XOR_VIRT_BASE | (x)) | ||
| 112 | |||
| 108 | #define ORION5X_ETH_PHYS_BASE (ORION5X_REGS_PHYS_BASE | 0x70000) | 113 | #define ORION5X_ETH_PHYS_BASE (ORION5X_REGS_PHYS_BASE | 0x70000) |
| 109 | #define ORION5X_ETH_VIRT_BASE (ORION5X_REGS_VIRT_BASE | 0x70000) | 114 | #define ORION5X_ETH_VIRT_BASE (ORION5X_REGS_VIRT_BASE | 0x70000) |
| 110 | #define ORION5X_ETH_REG(x) (ORION5X_ETH_VIRT_BASE | (x)) | 115 | #define ORION5X_ETH_REG(x) (ORION5X_ETH_VIRT_BASE | (x)) |
diff --git a/arch/arm/mach-orion5x/irq.c b/arch/arm/mach-orion5x/irq.c index cc2a017fd2a9..2545ff9e5830 100644 --- a/arch/arm/mach-orion5x/irq.c +++ b/arch/arm/mach-orion5x/irq.c | |||
| @@ -16,7 +16,7 @@ | |||
| 16 | #include <asm/gpio.h> | 16 | #include <asm/gpio.h> |
| 17 | #include <asm/io.h> | 17 | #include <asm/io.h> |
| 18 | #include <mach/orion5x.h> | 18 | #include <mach/orion5x.h> |
| 19 | #include <asm/plat-orion/irq.h> | 19 | #include <plat/irq.h> |
| 20 | #include "common.h" | 20 | #include "common.h" |
| 21 | 21 | ||
| 22 | /***************************************************************************** | 22 | /***************************************************************************** |
diff --git a/arch/arm/mach-orion5x/kurobox_pro-setup.c b/arch/arm/mach-orion5x/kurobox_pro-setup.c index 0caaaac74bc1..cb72f1bb9cb7 100644 --- a/arch/arm/mach-orion5x/kurobox_pro-setup.c +++ b/arch/arm/mach-orion5x/kurobox_pro-setup.c | |||
| @@ -25,7 +25,7 @@ | |||
| 25 | #include <asm/mach/arch.h> | 25 | #include <asm/mach/arch.h> |
| 26 | #include <asm/mach/pci.h> | 26 | #include <asm/mach/pci.h> |
| 27 | #include <mach/orion5x.h> | 27 | #include <mach/orion5x.h> |
| 28 | #include <asm/plat-orion/orion_nand.h> | 28 | #include <plat/orion_nand.h> |
| 29 | #include "common.h" | 29 | #include "common.h" |
| 30 | #include "mpp.h" | 30 | #include "mpp.h" |
| 31 | 31 | ||
| @@ -356,6 +356,7 @@ static void __init kurobox_pro_init(void) | |||
| 356 | orion5x_sata_init(&kurobox_pro_sata_data); | 356 | orion5x_sata_init(&kurobox_pro_sata_data); |
| 357 | orion5x_uart0_init(); | 357 | orion5x_uart0_init(); |
| 358 | orion5x_uart1_init(); | 358 | orion5x_uart1_init(); |
| 359 | orion5x_xor_init(); | ||
| 359 | 360 | ||
| 360 | orion5x_setup_dev_boot_win(KUROBOX_PRO_NOR_BOOT_BASE, | 361 | orion5x_setup_dev_boot_win(KUROBOX_PRO_NOR_BOOT_BASE, |
| 361 | KUROBOX_PRO_NOR_BOOT_SIZE); | 362 | KUROBOX_PRO_NOR_BOOT_SIZE); |
diff --git a/arch/arm/mach-orion5x/mss2-setup.c b/arch/arm/mach-orion5x/mss2-setup.c index 4403cc963d66..53ff1893b883 100644 --- a/arch/arm/mach-orion5x/mss2-setup.c +++ b/arch/arm/mach-orion5x/mss2-setup.c | |||
| @@ -239,6 +239,7 @@ static void __init mss2_init(void) | |||
| 239 | orion5x_i2c_init(); | 239 | orion5x_i2c_init(); |
| 240 | orion5x_sata_init(&mss2_sata_data); | 240 | orion5x_sata_init(&mss2_sata_data); |
| 241 | orion5x_uart0_init(); | 241 | orion5x_uart0_init(); |
| 242 | orion5x_xor_init(); | ||
| 242 | 243 | ||
| 243 | orion5x_setup_dev_boot_win(MSS2_NOR_BOOT_BASE, MSS2_NOR_BOOT_SIZE); | 244 | orion5x_setup_dev_boot_win(MSS2_NOR_BOOT_BASE, MSS2_NOR_BOOT_SIZE); |
| 244 | platform_device_register(&mss2_nor_flash); | 245 | platform_device_register(&mss2_nor_flash); |
diff --git a/arch/arm/mach-orion5x/mv2120-setup.c b/arch/arm/mach-orion5x/mv2120-setup.c index 67b2c0df615f..978d4d599396 100644 --- a/arch/arm/mach-orion5x/mv2120-setup.c +++ b/arch/arm/mach-orion5x/mv2120-setup.c | |||
| @@ -203,6 +203,7 @@ static void __init mv2120_init(void) | |||
| 203 | orion5x_i2c_init(); | 203 | orion5x_i2c_init(); |
| 204 | orion5x_sata_init(&mv2120_sata_data); | 204 | orion5x_sata_init(&mv2120_sata_data); |
| 205 | orion5x_uart0_init(); | 205 | orion5x_uart0_init(); |
| 206 | orion5x_xor_init(); | ||
| 206 | 207 | ||
| 207 | orion5x_setup_dev_boot_win(MV2120_NOR_BOOT_BASE, MV2120_NOR_BOOT_SIZE); | 208 | orion5x_setup_dev_boot_win(MV2120_NOR_BOOT_BASE, MV2120_NOR_BOOT_SIZE); |
| 208 | platform_device_register(&mv2120_nor_flash); | 209 | platform_device_register(&mv2120_nor_flash); |
diff --git a/arch/arm/mach-orion5x/pci.c b/arch/arm/mach-orion5x/pci.c index 256a4f680935..fbceecc4b7ec 100644 --- a/arch/arm/mach-orion5x/pci.c +++ b/arch/arm/mach-orion5x/pci.c | |||
| @@ -14,7 +14,7 @@ | |||
| 14 | #include <linux/pci.h> | 14 | #include <linux/pci.h> |
| 15 | #include <linux/mbus.h> | 15 | #include <linux/mbus.h> |
| 16 | #include <asm/mach/pci.h> | 16 | #include <asm/mach/pci.h> |
| 17 | #include <asm/plat-orion/pcie.h> | 17 | #include <plat/pcie.h> |
| 18 | #include "common.h" | 18 | #include "common.h" |
| 19 | 19 | ||
| 20 | /***************************************************************************** | 20 | /***************************************************************************** |
diff --git a/arch/arm/mach-orion5x/rd88f5182-setup.c b/arch/arm/mach-orion5x/rd88f5182-setup.c index 8771cb76f0dc..4c3bcd76ac85 100644 --- a/arch/arm/mach-orion5x/rd88f5182-setup.c +++ b/arch/arm/mach-orion5x/rd88f5182-setup.c | |||
| @@ -292,6 +292,7 @@ static void __init rd88f5182_init(void) | |||
| 292 | orion5x_i2c_init(); | 292 | orion5x_i2c_init(); |
| 293 | orion5x_sata_init(&rd88f5182_sata_data); | 293 | orion5x_sata_init(&rd88f5182_sata_data); |
| 294 | orion5x_uart0_init(); | 294 | orion5x_uart0_init(); |
| 295 | orion5x_xor_init(); | ||
| 295 | 296 | ||
| 296 | orion5x_setup_dev_boot_win(RD88F5182_NOR_BOOT_BASE, | 297 | orion5x_setup_dev_boot_win(RD88F5182_NOR_BOOT_BASE, |
| 297 | RD88F5182_NOR_BOOT_SIZE); | 298 | RD88F5182_NOR_BOOT_SIZE); |
diff --git a/arch/arm/mach-orion5x/ts209-setup.c b/arch/arm/mach-orion5x/ts209-setup.c index 809132de31d2..dd657163cd8d 100644 --- a/arch/arm/mach-orion5x/ts209-setup.c +++ b/arch/arm/mach-orion5x/ts209-setup.c | |||
| @@ -207,12 +207,12 @@ static struct i2c_board_info __initdata qnap_ts209_i2c_rtc = { | |||
| 207 | 207 | ||
| 208 | static struct gpio_keys_button qnap_ts209_buttons[] = { | 208 | static struct gpio_keys_button qnap_ts209_buttons[] = { |
| 209 | { | 209 | { |
| 210 | .code = KEY_RESTART, | 210 | .code = KEY_COPY, |
| 211 | .gpio = QNAP_TS209_GPIO_KEY_MEDIA, | 211 | .gpio = QNAP_TS209_GPIO_KEY_MEDIA, |
| 212 | .desc = "USB Copy Button", | 212 | .desc = "USB Copy Button", |
| 213 | .active_low = 1, | 213 | .active_low = 1, |
| 214 | }, { | 214 | }, { |
| 215 | .code = KEY_POWER, | 215 | .code = KEY_RESTART, |
| 216 | .gpio = QNAP_TS209_GPIO_KEY_RESET, | 216 | .gpio = QNAP_TS209_GPIO_KEY_RESET, |
| 217 | .desc = "Reset Button", | 217 | .desc = "Reset Button", |
| 218 | .active_low = 1, | 218 | .active_low = 1, |
| @@ -296,6 +296,7 @@ static void __init qnap_ts209_init(void) | |||
| 296 | orion5x_i2c_init(); | 296 | orion5x_i2c_init(); |
| 297 | orion5x_sata_init(&qnap_ts209_sata_data); | 297 | orion5x_sata_init(&qnap_ts209_sata_data); |
| 298 | orion5x_uart0_init(); | 298 | orion5x_uart0_init(); |
| 299 | orion5x_xor_init(); | ||
| 299 | 300 | ||
| 300 | orion5x_setup_dev_boot_win(QNAP_TS209_NOR_BOOT_BASE, | 301 | orion5x_setup_dev_boot_win(QNAP_TS209_NOR_BOOT_BASE, |
| 301 | QNAP_TS209_NOR_BOOT_SIZE); | 302 | QNAP_TS209_NOR_BOOT_SIZE); |
diff --git a/arch/arm/mach-orion5x/ts409-setup.c b/arch/arm/mach-orion5x/ts409-setup.c index 6053e76ac967..b27d2b762081 100644 --- a/arch/arm/mach-orion5x/ts409-setup.c +++ b/arch/arm/mach-orion5x/ts409-setup.c | |||
| @@ -3,6 +3,9 @@ | |||
| 3 | * | 3 | * |
| 4 | * Maintainer: Sylver Bruneau <sylver.bruneau@gmail.com> | 4 | * Maintainer: Sylver Bruneau <sylver.bruneau@gmail.com> |
| 5 | * | 5 | * |
| 6 | * Copyright (C) 2008 Sylver Bruneau <sylver.bruneau@gmail.com> | ||
| 7 | * Copyright (C) 2008 Martin Michlmayr <tbm@cyrius.com> | ||
| 8 | * | ||
| 6 | * This program is free software; you can redistribute it and/or | 9 | * This program is free software; you can redistribute it and/or |
| 7 | * modify it under the terms of the GNU General Public License | 10 | * modify it under the terms of the GNU General Public License |
| 8 | * as published by the Free Software Foundation; either version | 11 | * as published by the Free Software Foundation; either version |
| @@ -16,6 +19,7 @@ | |||
| 16 | #include <linux/irq.h> | 19 | #include <linux/irq.h> |
| 17 | #include <linux/mtd/physmap.h> | 20 | #include <linux/mtd/physmap.h> |
| 18 | #include <linux/mv643xx_eth.h> | 21 | #include <linux/mv643xx_eth.h> |
| 22 | #include <linux/leds.h> | ||
| 19 | #include <linux/gpio_keys.h> | 23 | #include <linux/gpio_keys.h> |
| 20 | #include <linux/input.h> | 24 | #include <linux/input.h> |
| 21 | #include <linux/i2c.h> | 25 | #include <linux/i2c.h> |
| @@ -162,16 +166,59 @@ static struct i2c_board_info __initdata qnap_ts409_i2c_rtc = { | |||
| 162 | I2C_BOARD_INFO("s35390a", 0x30), | 166 | I2C_BOARD_INFO("s35390a", 0x30), |
| 163 | }; | 167 | }; |
| 164 | 168 | ||
| 169 | /***************************************************************************** | ||
| 170 | * LEDs attached to GPIO | ||
| 171 | ****************************************************************************/ | ||
| 172 | |||
| 173 | static struct gpio_led ts409_led_pins[] = { | ||
| 174 | { | ||
| 175 | .name = "ts409:red:sata1", | ||
| 176 | .gpio = 4, | ||
| 177 | .active_low = 1, | ||
| 178 | }, { | ||
| 179 | .name = "ts409:red:sata2", | ||
| 180 | .gpio = 5, | ||
| 181 | .active_low = 1, | ||
| 182 | }, { | ||
| 183 | .name = "ts409:red:sata3", | ||
| 184 | .gpio = 6, | ||
| 185 | .active_low = 1, | ||
| 186 | }, { | ||
| 187 | .name = "ts409:red:sata4", | ||
| 188 | .gpio = 7, | ||
| 189 | .active_low = 1, | ||
| 190 | }, | ||
| 191 | }; | ||
| 192 | |||
| 193 | static struct gpio_led_platform_data ts409_led_data = { | ||
| 194 | .leds = ts409_led_pins, | ||
| 195 | .num_leds = ARRAY_SIZE(ts409_led_pins), | ||
| 196 | }; | ||
| 197 | |||
| 198 | static struct platform_device ts409_leds = { | ||
| 199 | .name = "leds-gpio", | ||
| 200 | .id = -1, | ||
| 201 | .dev = { | ||
| 202 | .platform_data = &ts409_led_data, | ||
| 203 | }, | ||
| 204 | }; | ||
| 205 | |||
| 165 | /**************************************************************************** | 206 | /**************************************************************************** |
| 166 | * GPIO Attached Keys | 207 | * GPIO Attached Keys |
| 167 | * Power button is attached to the PIC microcontroller | 208 | * Power button is attached to the PIC microcontroller |
| 168 | ****************************************************************************/ | 209 | ****************************************************************************/ |
| 169 | 210 | ||
| 211 | #define QNAP_TS409_GPIO_KEY_RESET 14 | ||
| 170 | #define QNAP_TS409_GPIO_KEY_MEDIA 15 | 212 | #define QNAP_TS409_GPIO_KEY_MEDIA 15 |
| 171 | 213 | ||
| 172 | static struct gpio_keys_button qnap_ts409_buttons[] = { | 214 | static struct gpio_keys_button qnap_ts409_buttons[] = { |
| 173 | { | 215 | { |
| 174 | .code = KEY_RESTART, | 216 | .code = KEY_RESTART, |
| 217 | .gpio = QNAP_TS409_GPIO_KEY_RESET, | ||
| 218 | .desc = "Reset Button", | ||
| 219 | .active_low = 1, | ||
| 220 | }, { | ||
| 221 | .code = KEY_COPY, | ||
| 175 | .gpio = QNAP_TS409_GPIO_KEY_MEDIA, | 222 | .gpio = QNAP_TS409_GPIO_KEY_MEDIA, |
| 176 | .desc = "USB Copy Button", | 223 | .desc = "USB Copy Button", |
| 177 | .active_low = 1, | 224 | .active_low = 1, |
| @@ -255,6 +302,7 @@ static void __init qnap_ts409_init(void) | |||
| 255 | if (qnap_ts409_i2c_rtc.irq == 0) | 302 | if (qnap_ts409_i2c_rtc.irq == 0) |
| 256 | pr_warning("qnap_ts409_init: failed to get RTC IRQ\n"); | 303 | pr_warning("qnap_ts409_init: failed to get RTC IRQ\n"); |
| 257 | i2c_register_board_info(0, &qnap_ts409_i2c_rtc, 1); | 304 | i2c_register_board_info(0, &qnap_ts409_i2c_rtc, 1); |
| 305 | platform_device_register(&ts409_leds); | ||
| 258 | 306 | ||
| 259 | /* register tsx09 specific power-off method */ | 307 | /* register tsx09 specific power-off method */ |
| 260 | pm_power_off = qnap_tsx09_power_off; | 308 | pm_power_off = qnap_tsx09_power_off; |
diff --git a/arch/arm/mach-orion5x/ts78xx-setup.c b/arch/arm/mach-orion5x/ts78xx-setup.c index 014916a28fdc..ae0a5dccd2a1 100644 --- a/arch/arm/mach-orion5x/ts78xx-setup.c +++ b/arch/arm/mach-orion5x/ts78xx-setup.c | |||
| @@ -256,6 +256,7 @@ static void __init ts78xx_init(void) | |||
| 256 | orion5x_sata_init(&ts78xx_sata_data); | 256 | orion5x_sata_init(&ts78xx_sata_data); |
| 257 | orion5x_uart0_init(); | 257 | orion5x_uart0_init(); |
| 258 | orion5x_uart1_init(); | 258 | orion5x_uart1_init(); |
| 259 | orion5x_xor_init(); | ||
| 259 | 260 | ||
| 260 | orion5x_setup_dev_boot_win(TS78XX_NOR_BOOT_BASE, | 261 | orion5x_setup_dev_boot_win(TS78XX_NOR_BOOT_BASE, |
| 261 | TS78XX_NOR_BOOT_SIZE); | 262 | TS78XX_NOR_BOOT_SIZE); |
diff --git a/arch/arm/mach-pxa/include/mach/mtd-xip.h b/arch/arm/mach-pxa/include/mach/mtd-xip.h index 351f32f13ce4..4d452fcb1508 100644 --- a/arch/arm/mach-pxa/include/mach/mtd-xip.h +++ b/arch/arm/mach-pxa/include/mach/mtd-xip.h | |||
| @@ -10,8 +10,6 @@ | |||
| 10 | * This program is free software; you can redistribute it and/or modify | 10 | * This program is free software; you can redistribute it and/or modify |
| 11 | * it under the terms of the GNU General Public License version 2 as | 11 | * it under the terms of the GNU General Public License version 2 as |
| 12 | * published by the Free Software Foundation. | 12 | * published by the Free Software Foundation. |
| 13 | * | ||
| 14 | * $Id: xip.h,v 1.2 2004/12/01 15:49:10 nico Exp $ | ||
| 15 | */ | 13 | */ |
| 16 | 14 | ||
| 17 | #ifndef __ARCH_PXA_MTD_XIP_H__ | 15 | #ifndef __ARCH_PXA_MTD_XIP_H__ |
diff --git a/arch/arm/mach-pxa/include/mach/poodle.h b/arch/arm/mach-pxa/include/mach/poodle.h index 8956afe8195e..67debc47e8c6 100644 --- a/arch/arm/mach-pxa/include/mach/poodle.h +++ b/arch/arm/mach-pxa/include/mach/poodle.h | |||
| @@ -70,6 +70,12 @@ | |||
| 70 | #define POODLE_SCOOP_IO_DIR ( POODLE_SCOOP_VPEN | POODLE_SCOOP_HS_OUT ) | 70 | #define POODLE_SCOOP_IO_DIR ( POODLE_SCOOP_VPEN | POODLE_SCOOP_HS_OUT ) |
| 71 | #define POODLE_SCOOP_IO_OUT ( 0 ) | 71 | #define POODLE_SCOOP_IO_OUT ( 0 ) |
| 72 | 72 | ||
| 73 | #define POODLE_LOCOMO_GPIO_AMP_ON LOCOMO_GPIO(8) | ||
| 74 | #define POODLE_LOCOMO_GPIO_MUTE_L LOCOMO_GPIO(10) | ||
| 75 | #define POODLE_LOCOMO_GPIO_MUTE_R LOCOMO_GPIO(11) | ||
| 76 | #define POODLE_LOCOMO_GPIO_232VCC_ON LOCOMO_GPIO(12) | ||
| 77 | #define POODLE_LOCOMO_GPIO_JK_B LOCOMO_GPIO(13) | ||
| 78 | |||
| 73 | extern struct platform_device poodle_locomo_device; | 79 | extern struct platform_device poodle_locomo_device; |
| 74 | 80 | ||
| 75 | #endif /* __ASM_ARCH_POODLE_H */ | 81 | #endif /* __ASM_ARCH_POODLE_H */ |
diff --git a/arch/arm/mach-pxa/include/mach/pxafb.h b/arch/arm/mach-pxa/include/mach/pxafb.h index 65447549616f..8e591118371e 100644 --- a/arch/arm/mach-pxa/include/mach/pxafb.h +++ b/arch/arm/mach-pxa/include/mach/pxafb.h | |||
| @@ -28,6 +28,7 @@ | |||
| 28 | * bits 10-17 : for AC Bias Pin Frequency | 28 | * bits 10-17 : for AC Bias Pin Frequency |
| 29 | * bit 18 : for output enable polarity | 29 | * bit 18 : for output enable polarity |
| 30 | * bit 19 : for pixel clock edge | 30 | * bit 19 : for pixel clock edge |
| 31 | * bit 20 : for output pixel format when base is RGBT16 | ||
| 31 | */ | 32 | */ |
| 32 | #define LCD_CONN_TYPE(_x) ((_x) & 0x0f) | 33 | #define LCD_CONN_TYPE(_x) ((_x) & 0x0f) |
| 33 | #define LCD_CONN_WIDTH(_x) (((_x) >> 4) & 0x1f) | 34 | #define LCD_CONN_WIDTH(_x) (((_x) >> 4) & 0x1f) |
| @@ -53,10 +54,11 @@ | |||
| 53 | #define LCD_SMART_PANEL_18BPP ((18 << 4) | LCD_TYPE_SMART_PANEL) | 54 | #define LCD_SMART_PANEL_18BPP ((18 << 4) | LCD_TYPE_SMART_PANEL) |
| 54 | 55 | ||
| 55 | #define LCD_AC_BIAS_FREQ(x) (((x) & 0xff) << 10) | 56 | #define LCD_AC_BIAS_FREQ(x) (((x) & 0xff) << 10) |
| 56 | #define LCD_BIAS_ACTIVE_HIGH (0 << 17) | 57 | #define LCD_BIAS_ACTIVE_HIGH (0 << 18) |
| 57 | #define LCD_BIAS_ACTIVE_LOW (1 << 17) | 58 | #define LCD_BIAS_ACTIVE_LOW (1 << 18) |
| 58 | #define LCD_PCLK_EDGE_RISE (0 << 18) | 59 | #define LCD_PCLK_EDGE_RISE (0 << 19) |
| 59 | #define LCD_PCLK_EDGE_FALL (1 << 18) | 60 | #define LCD_PCLK_EDGE_FALL (1 << 19) |
| 61 | #define LCD_ALTERNATE_MAPPING (1 << 20) | ||
| 60 | 62 | ||
| 61 | /* | 63 | /* |
| 62 | * This structure describes the machine which we are running on. | 64 | * This structure describes the machine which we are running on. |
diff --git a/arch/arm/mach-s3c2410/include/mach/regs-clock.h b/arch/arm/mach-s3c2410/include/mach/regs-clock.h index d583688458a4..b3f90aa78076 100644 --- a/arch/arm/mach-s3c2410/include/mach/regs-clock.h +++ b/arch/arm/mach-s3c2410/include/mach/regs-clock.h | |||
| @@ -11,7 +11,7 @@ | |||
| 11 | */ | 11 | */ |
| 12 | 12 | ||
| 13 | #ifndef __ASM_ARM_REGS_CLOCK | 13 | #ifndef __ASM_ARM_REGS_CLOCK |
| 14 | #define __ASM_ARM_REGS_CLOCK "$Id: clock.h,v 1.4 2003/04/30 14:50:51 ben Exp $" | 14 | #define __ASM_ARM_REGS_CLOCK |
| 15 | 15 | ||
| 16 | #define S3C2410_CLKREG(x) ((x) + S3C24XX_VA_CLKPWR) | 16 | #define S3C2410_CLKREG(x) ((x) + S3C24XX_VA_CLKPWR) |
| 17 | 17 | ||
diff --git a/arch/arm/mach-s3c2410/include/mach/regs-gpio.h b/arch/arm/mach-s3c2410/include/mach/regs-gpio.h index 30bec027f5fa..528080ceac44 100644 --- a/arch/arm/mach-s3c2410/include/mach/regs-gpio.h +++ b/arch/arm/mach-s3c2410/include/mach/regs-gpio.h | |||
| @@ -12,7 +12,7 @@ | |||
| 12 | 12 | ||
| 13 | 13 | ||
| 14 | #ifndef __ASM_ARCH_REGS_GPIO_H | 14 | #ifndef __ASM_ARCH_REGS_GPIO_H |
| 15 | #define __ASM_ARCH_REGS_GPIO_H "$Id: gpio.h,v 1.5 2003/05/19 12:51:08 ben Exp $" | 15 | #define __ASM_ARCH_REGS_GPIO_H |
| 16 | 16 | ||
| 17 | #define S3C2410_GPIONO(bank,offset) ((bank) + (offset)) | 17 | #define S3C2410_GPIONO(bank,offset) ((bank) + (offset)) |
| 18 | 18 | ||
diff --git a/arch/arm/mach-s3c2410/include/mach/regs-irq.h b/arch/arm/mach-s3c2410/include/mach/regs-irq.h index b057c06d167a..de86ee8812bd 100644 --- a/arch/arm/mach-s3c2410/include/mach/regs-irq.h +++ b/arch/arm/mach-s3c2410/include/mach/regs-irq.h | |||
| @@ -10,7 +10,7 @@ | |||
| 10 | 10 | ||
| 11 | 11 | ||
| 12 | #ifndef ___ASM_ARCH_REGS_IRQ_H | 12 | #ifndef ___ASM_ARCH_REGS_IRQ_H |
| 13 | #define ___ASM_ARCH_REGS_IRQ_H "$Id: irq.h,v 1.3 2003/03/25 21:29:06 ben Exp $" | 13 | #define ___ASM_ARCH_REGS_IRQ_H |
| 14 | 14 | ||
| 15 | /* interrupt controller */ | 15 | /* interrupt controller */ |
| 16 | 16 | ||
diff --git a/arch/arm/mach-s3c2410/include/mach/regs-lcd.h b/arch/arm/mach-s3c2410/include/mach/regs-lcd.h index 893b8742f954..ee8f040aff5f 100644 --- a/arch/arm/mach-s3c2410/include/mach/regs-lcd.h +++ b/arch/arm/mach-s3c2410/include/mach/regs-lcd.h | |||
| @@ -10,7 +10,7 @@ | |||
| 10 | 10 | ||
| 11 | 11 | ||
| 12 | #ifndef ___ASM_ARCH_REGS_LCD_H | 12 | #ifndef ___ASM_ARCH_REGS_LCD_H |
| 13 | #define ___ASM_ARCH_REGS_LCD_H "$Id: lcd.h,v 1.3 2003/06/26 13:25:06 ben Exp $" | 13 | #define ___ASM_ARCH_REGS_LCD_H |
| 14 | 14 | ||
| 15 | #define S3C2410_LCDREG(x) (x) | 15 | #define S3C2410_LCDREG(x) (x) |
| 16 | 16 | ||
diff --git a/arch/arm/mach-s3c2410/include/mach/regs-mem.h b/arch/arm/mach-s3c2410/include/mach/regs-mem.h index f9926abd5cde..57759804e2fa 100644 --- a/arch/arm/mach-s3c2410/include/mach/regs-mem.h +++ b/arch/arm/mach-s3c2410/include/mach/regs-mem.h | |||
| @@ -11,7 +11,7 @@ | |||
| 11 | */ | 11 | */ |
| 12 | 12 | ||
| 13 | #ifndef __ASM_ARM_MEMREGS_H | 13 | #ifndef __ASM_ARM_MEMREGS_H |
| 14 | #define __ASM_ARM_MEMREGS_H "$Id: regs.h,v 1.8 2003/05/01 15:55:41 ben Exp $" | 14 | #define __ASM_ARM_MEMREGS_H |
| 15 | 15 | ||
| 16 | #ifndef S3C2410_MEMREG | 16 | #ifndef S3C2410_MEMREG |
| 17 | #define S3C2410_MEMREG(x) (S3C24XX_VA_MEMCTRL + (x)) | 17 | #define S3C2410_MEMREG(x) (S3C24XX_VA_MEMCTRL + (x)) |
diff --git a/arch/arm/mach-s3c2410/mach-bast.c b/arch/arm/mach-s3c2410/mach-bast.c index fb1e78e28e50..24c6334fac89 100644 --- a/arch/arm/mach-s3c2410/mach-bast.c +++ b/arch/arm/mach-s3c2410/mach-bast.c | |||
| @@ -562,7 +562,7 @@ static struct platform_device *bast_devices[] __initdata = { | |||
| 562 | &bast_sio, | 562 | &bast_sio, |
| 563 | }; | 563 | }; |
| 564 | 564 | ||
| 565 | static struct clk *bast_clocks[] = { | 565 | static struct clk *bast_clocks[] __initdata = { |
| 566 | &s3c24xx_dclk0, | 566 | &s3c24xx_dclk0, |
| 567 | &s3c24xx_dclk1, | 567 | &s3c24xx_dclk1, |
| 568 | &s3c24xx_clkout0, | 568 | &s3c24xx_clkout0, |
diff --git a/arch/arm/mach-s3c2410/mach-smdk2410.c b/arch/arm/mach-s3c2410/mach-smdk2410.c index c9040080727e..b88939d72282 100644 --- a/arch/arm/mach-s3c2410/mach-smdk2410.c +++ b/arch/arm/mach-s3c2410/mach-smdk2410.c | |||
| @@ -5,7 +5,6 @@ | |||
| 5 | * Copyright (C) 2004 by FS Forth-Systeme GmbH | 5 | * Copyright (C) 2004 by FS Forth-Systeme GmbH |
| 6 | * All rights reserved. | 6 | * All rights reserved. |
| 7 | * | 7 | * |
| 8 | * $Id: mach-smdk2410.c,v 1.1 2004/05/11 14:15:38 mpietrek Exp $ | ||
| 9 | * @Author: Jonas Dietsche | 8 | * @Author: Jonas Dietsche |
| 10 | * | 9 | * |
| 11 | * This program is free software; you can redistribute it and/or | 10 | * This program is free software; you can redistribute it and/or |
diff --git a/arch/arm/mach-s3c2410/mach-vr1000.c b/arch/arm/mach-s3c2410/mach-vr1000.c index 12cbca68f57d..fbc0213d5485 100644 --- a/arch/arm/mach-s3c2410/mach-vr1000.c +++ b/arch/arm/mach-s3c2410/mach-vr1000.c | |||
| @@ -344,7 +344,7 @@ static struct platform_device *vr1000_devices[] __initdata = { | |||
| 344 | &vr1000_led3, | 344 | &vr1000_led3, |
| 345 | }; | 345 | }; |
| 346 | 346 | ||
| 347 | static struct clk *vr1000_clocks[] = { | 347 | static struct clk *vr1000_clocks[] __initdata = { |
| 348 | &s3c24xx_dclk0, | 348 | &s3c24xx_dclk0, |
| 349 | &s3c24xx_dclk1, | 349 | &s3c24xx_dclk1, |
| 350 | &s3c24xx_clkout0, | 350 | &s3c24xx_clkout0, |
diff --git a/arch/arm/mach-s3c2412/mach-jive.c b/arch/arm/mach-s3c2412/mach-jive.c index 30f613a79bfe..4c061d29463c 100644 --- a/arch/arm/mach-s3c2412/mach-jive.c +++ b/arch/arm/mach-s3c2412/mach-jive.c | |||
| @@ -26,9 +26,6 @@ | |||
| 26 | 26 | ||
| 27 | #include <linux/spi/spi.h> | 27 | #include <linux/spi/spi.h> |
| 28 | 28 | ||
| 29 | #include <linux/mtd/mtd.h> | ||
| 30 | #include <linux/mtd/partitions.h> | ||
| 31 | |||
| 32 | #include <asm/mach/arch.h> | 29 | #include <asm/mach/arch.h> |
| 33 | #include <asm/mach/map.h> | 30 | #include <asm/mach/map.h> |
| 34 | #include <asm/mach/irq.h> | 31 | #include <asm/mach/irq.h> |
diff --git a/arch/arm/mach-s3c2440/mach-anubis.c b/arch/arm/mach-s3c2440/mach-anubis.c index 265c77dec9d7..441f4bc09472 100644 --- a/arch/arm/mach-s3c2440/mach-anubis.c +++ b/arch/arm/mach-s3c2440/mach-anubis.c | |||
| @@ -414,7 +414,7 @@ static struct platform_device *anubis_devices[] __initdata = { | |||
| 414 | &anubis_device_sm501, | 414 | &anubis_device_sm501, |
| 415 | }; | 415 | }; |
| 416 | 416 | ||
| 417 | static struct clk *anubis_clocks[] = { | 417 | static struct clk *anubis_clocks[] __initdata = { |
| 418 | &s3c24xx_dclk0, | 418 | &s3c24xx_dclk0, |
| 419 | &s3c24xx_dclk1, | 419 | &s3c24xx_dclk1, |
| 420 | &s3c24xx_clkout0, | 420 | &s3c24xx_clkout0, |
diff --git a/arch/arm/mach-s3c2440/mach-osiris.c b/arch/arm/mach-s3c2440/mach-osiris.c index d2ee0cd148c6..8b83f93b6102 100644 --- a/arch/arm/mach-s3c2440/mach-osiris.c +++ b/arch/arm/mach-s3c2440/mach-osiris.c | |||
| @@ -341,7 +341,7 @@ static struct platform_device *osiris_devices[] __initdata = { | |||
| 341 | &osiris_pcmcia, | 341 | &osiris_pcmcia, |
| 342 | }; | 342 | }; |
| 343 | 343 | ||
| 344 | static struct clk *osiris_clocks[] = { | 344 | static struct clk *osiris_clocks[] __initdata = { |
| 345 | &s3c24xx_dclk0, | 345 | &s3c24xx_dclk0, |
| 346 | &s3c24xx_dclk1, | 346 | &s3c24xx_dclk1, |
| 347 | &s3c24xx_clkout0, | 347 | &s3c24xx_clkout0, |
diff --git a/arch/arm/mach-sa1100/cpu-sa1110.c b/arch/arm/mach-sa1100/cpu-sa1110.c index 39d38c801736..029dbfbbafcf 100644 --- a/arch/arm/mach-sa1100/cpu-sa1110.c +++ b/arch/arm/mach-sa1100/cpu-sa1110.c | |||
| @@ -3,8 +3,6 @@ | |||
| 3 | * | 3 | * |
| 4 | * Copyright (C) 2001 Russell King | 4 | * Copyright (C) 2001 Russell King |
| 5 | * | 5 | * |
| 6 | * $Id: cpu-sa1110.c,v 1.9 2002/07/06 16:53:18 rmk Exp $ | ||
| 7 | * | ||
| 8 | * This program is free software; you can redistribute it and/or modify | 6 | * This program is free software; you can redistribute it and/or modify |
| 9 | * it under the terms of the GNU General Public License version 2 as | 7 | * it under the terms of the GNU General Public License version 2 as |
| 10 | * published by the Free Software Foundation. | 8 | * published by the Free Software Foundation. |
diff --git a/arch/arm/mach-sa1100/include/mach/mtd-xip.h b/arch/arm/mach-sa1100/include/mach/mtd-xip.h index 80cfdac2b944..eaa09e86ad16 100644 --- a/arch/arm/mach-sa1100/include/mach/mtd-xip.h +++ b/arch/arm/mach-sa1100/include/mach/mtd-xip.h | |||
| @@ -10,8 +10,6 @@ | |||
| 10 | * This program is free software; you can redistribute it and/or modify | 10 | * This program is free software; you can redistribute it and/or modify |
| 11 | * it under the terms of the GNU General Public License version 2 as | 11 | * it under the terms of the GNU General Public License version 2 as |
| 12 | * published by the Free Software Foundation. | 12 | * published by the Free Software Foundation. |
| 13 | * | ||
| 14 | * $Id: xip.h,v 1.2 2004/12/01 15:49:10 nico Exp $ | ||
| 15 | */ | 13 | */ |
| 16 | 14 | ||
| 17 | #ifndef __ARCH_SA1100_MTD_XIP_H__ | 15 | #ifndef __ARCH_SA1100_MTD_XIP_H__ |
diff --git a/arch/arm/mm/cache-feroceon-l2.c b/arch/arm/mm/cache-feroceon-l2.c index 20eec4ba173f..7b5a25d81576 100644 --- a/arch/arm/mm/cache-feroceon-l2.c +++ b/arch/arm/mm/cache-feroceon-l2.c | |||
| @@ -14,7 +14,7 @@ | |||
| 14 | 14 | ||
| 15 | #include <linux/init.h> | 15 | #include <linux/init.h> |
| 16 | #include <asm/cacheflush.h> | 16 | #include <asm/cacheflush.h> |
| 17 | #include <asm/plat-orion/cache-feroceon-l2.h> | 17 | #include <plat/cache-feroceon-l2.h> |
| 18 | 18 | ||
| 19 | 19 | ||
| 20 | /* | 20 | /* |
diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c index 2d6d682c206a..25d9a11eb617 100644 --- a/arch/arm/mm/mmu.c +++ b/arch/arm/mm/mmu.c | |||
| @@ -568,6 +568,55 @@ void __init iotable_init(struct map_desc *io_desc, int nr) | |||
| 568 | create_mapping(io_desc + i); | 568 | create_mapping(io_desc + i); |
| 569 | } | 569 | } |
| 570 | 570 | ||
| 571 | static int __init check_membank_valid(struct membank *mb) | ||
| 572 | { | ||
| 573 | /* | ||
| 574 | * Check whether this memory region has non-zero size. | ||
| 575 | */ | ||
| 576 | if (mb->size == 0) | ||
| 577 | return 0; | ||
| 578 | |||
| 579 | /* | ||
| 580 | * Check whether this memory region would entirely overlap | ||
| 581 | * the vmalloc area. | ||
| 582 | */ | ||
| 583 | if (phys_to_virt(mb->start) >= VMALLOC_MIN) { | ||
| 584 | printk(KERN_NOTICE "Ignoring RAM at %.8lx-%.8lx " | ||
| 585 | "(vmalloc region overlap).\n", | ||
| 586 | mb->start, mb->start + mb->size - 1); | ||
| 587 | return 0; | ||
| 588 | } | ||
| 589 | |||
| 590 | /* | ||
| 591 | * Check whether this memory region would partially overlap | ||
| 592 | * the vmalloc area. | ||
| 593 | */ | ||
| 594 | if (phys_to_virt(mb->start + mb->size) < phys_to_virt(mb->start) || | ||
| 595 | phys_to_virt(mb->start + mb->size) > VMALLOC_MIN) { | ||
| 596 | unsigned long newsize = VMALLOC_MIN - phys_to_virt(mb->start); | ||
| 597 | |||
| 598 | printk(KERN_NOTICE "Truncating RAM at %.8lx-%.8lx " | ||
| 599 | "to -%.8lx (vmalloc region overlap).\n", | ||
| 600 | mb->start, mb->start + mb->size - 1, | ||
| 601 | mb->start + newsize - 1); | ||
| 602 | mb->size = newsize; | ||
| 603 | } | ||
| 604 | |||
| 605 | return 1; | ||
| 606 | } | ||
| 607 | |||
| 608 | static void __init sanity_check_meminfo(struct meminfo *mi) | ||
| 609 | { | ||
| 610 | int i; | ||
| 611 | int j; | ||
| 612 | |||
| 613 | for (i = 0, j = 0; i < mi->nr_banks; i++) { | ||
| 614 | if (check_membank_valid(&mi->bank[i])) | ||
| 615 | mi->bank[j++] = mi->bank[i]; | ||
| 616 | } | ||
| 617 | mi->nr_banks = j; | ||
| 618 | } | ||
| 619 | |||
| 571 | static inline void prepare_page_table(struct meminfo *mi) | 620 | static inline void prepare_page_table(struct meminfo *mi) |
| 572 | { | 621 | { |
| 573 | unsigned long addr; | 622 | unsigned long addr; |
| @@ -753,6 +802,7 @@ void __init paging_init(struct meminfo *mi, struct machine_desc *mdesc) | |||
| 753 | void *zero_page; | 802 | void *zero_page; |
| 754 | 803 | ||
| 755 | build_mem_type_table(); | 804 | build_mem_type_table(); |
| 805 | sanity_check_meminfo(mi); | ||
| 756 | prepare_page_table(mi); | 806 | prepare_page_table(mi); |
| 757 | bootmem_init(mi); | 807 | bootmem_init(mi); |
| 758 | devicemaps_init(mdesc); | 808 | devicemaps_init(mdesc); |
diff --git a/arch/arm/mm/proc-arm940.S b/arch/arm/mm/proc-arm940.S index 1a3d63df8e90..551244d5ca19 100644 --- a/arch/arm/mm/proc-arm940.S +++ b/arch/arm/mm/proc-arm940.S | |||
| @@ -15,6 +15,7 @@ | |||
| 15 | #include <asm/pgtable-hwdef.h> | 15 | #include <asm/pgtable-hwdef.h> |
| 16 | #include <asm/pgtable.h> | 16 | #include <asm/pgtable.h> |
| 17 | #include <asm/ptrace.h> | 17 | #include <asm/ptrace.h> |
| 18 | #include "proc-macros.S" | ||
| 18 | 19 | ||
| 19 | /* ARM940T has a 4KB DCache comprising 256 lines of 4 words */ | 20 | /* ARM940T has a 4KB DCache comprising 256 lines of 4 words */ |
| 20 | #define CACHE_DLINESIZE 16 | 21 | #define CACHE_DLINESIZE 16 |
diff --git a/arch/arm/mm/proc-arm946.S b/arch/arm/mm/proc-arm946.S index 82d579ac9b98..6168c6160dee 100644 --- a/arch/arm/mm/proc-arm946.S +++ b/arch/arm/mm/proc-arm946.S | |||
| @@ -17,6 +17,7 @@ | |||
| 17 | #include <asm/pgtable-hwdef.h> | 17 | #include <asm/pgtable-hwdef.h> |
| 18 | #include <asm/pgtable.h> | 18 | #include <asm/pgtable.h> |
| 19 | #include <asm/ptrace.h> | 19 | #include <asm/ptrace.h> |
| 20 | #include "proc-macros.S" | ||
| 20 | 21 | ||
| 21 | /* | 22 | /* |
| 22 | * ARM946E-S is synthesizable to have 0KB to 1MB sized D-Cache, | 23 | * ARM946E-S is synthesizable to have 0KB to 1MB sized D-Cache, |
diff --git a/arch/arm/plat-omap/include/mach/memory.h b/arch/arm/plat-omap/include/mach/memory.h index 037486c5f4a4..a325caf80d04 100644 --- a/arch/arm/plat-omap/include/mach/memory.h +++ b/arch/arm/plat-omap/include/mach/memory.h | |||
| @@ -76,13 +76,14 @@ | |||
| 76 | (dma_addr_t)virt_to_lbus(page_address(page)) : \ | 76 | (dma_addr_t)virt_to_lbus(page_address(page)) : \ |
| 77 | (dma_addr_t)__virt_to_bus(page_address(page));}) | 77 | (dma_addr_t)__virt_to_bus(page_address(page));}) |
| 78 | 78 | ||
| 79 | #define __arch_dma_to_virt(dev, addr) ({is_lbus_device(dev) ? \ | 79 | #define __arch_dma_to_virt(dev, addr) ({ (void *) (is_lbus_device(dev) ? \ |
| 80 | lbus_to_virt(addr) : \ | 80 | lbus_to_virt(addr) : \ |
| 81 | __bus_to_virt(addr);}) | 81 | __bus_to_virt(addr)); }) |
| 82 | 82 | ||
| 83 | #define __arch_virt_to_dma(dev, addr) ({is_lbus_device(dev) ? \ | 83 | #define __arch_virt_to_dma(dev, addr) ({ unsigned long __addr = (unsigned long)(addr); \ |
| 84 | virt_to_lbus(addr) : \ | 84 | (dma_addr_t) (is_lbus_device(dev) ? \ |
| 85 | __virt_to_bus(addr);}) | 85 | virt_to_lbus(__addr) : \ |
| 86 | __virt_to_bus(__addr)); }) | ||
| 86 | 87 | ||
| 87 | #endif /* CONFIG_ARCH_OMAP15XX */ | 88 | #endif /* CONFIG_ARCH_OMAP15XX */ |
| 88 | 89 | ||
diff --git a/arch/arm/plat-orion/include/plat/cache-feroceon-l2.h b/arch/arm/plat-orion/include/plat/cache-feroceon-l2.h new file mode 100644 index 000000000000..06f982d55697 --- /dev/null +++ b/arch/arm/plat-orion/include/plat/cache-feroceon-l2.h | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | /* | ||
| 2 | * arch/arm/plat-orion/include/plat/cache-feroceon-l2.h | ||
| 3 | * | ||
| 4 | * Copyright (C) 2008 Marvell Semiconductor | ||
| 5 | * | ||
| 6 | * This file is licensed under the terms of the GNU General Public | ||
| 7 | * License version 2. This program is licensed "as is" without any | ||
| 8 | * warranty of any kind, whether express or implied. | ||
| 9 | */ | ||
| 10 | |||
| 11 | extern void __init feroceon_l2_init(int l2_wt_override); | ||
diff --git a/arch/arm/plat-orion/include/plat/ehci-orion.h b/arch/arm/plat-orion/include/plat/ehci-orion.h new file mode 100644 index 000000000000..64343051095a --- /dev/null +++ b/arch/arm/plat-orion/include/plat/ehci-orion.h | |||
| @@ -0,0 +1,19 @@ | |||
| 1 | /* | ||
| 2 | * arch/arm/plat-orion/include/plat/ehci-orion.h | ||
| 3 | * | ||
| 4 | * This file is licensed under the terms of the GNU General Public | ||
| 5 | * License version 2. This program is licensed "as is" without any | ||
| 6 | * warranty of any kind, whether express or implied. | ||
| 7 | */ | ||
| 8 | |||
| 9 | #ifndef __PLAT_EHCI_ORION_H | ||
| 10 | #define __PLAT_EHCI_ORION_H | ||
| 11 | |||
| 12 | #include <linux/mbus.h> | ||
| 13 | |||
| 14 | struct orion_ehci_data { | ||
| 15 | struct mbus_dram_target_info *dram; | ||
| 16 | }; | ||
| 17 | |||
| 18 | |||
| 19 | #endif | ||
diff --git a/arch/arm/plat-orion/include/plat/irq.h b/arch/arm/plat-orion/include/plat/irq.h new file mode 100644 index 000000000000..f05eeab94968 --- /dev/null +++ b/arch/arm/plat-orion/include/plat/irq.h | |||
| @@ -0,0 +1,17 @@ | |||
| 1 | /* | ||
| 2 | * arch/arm/plat-orion/include/plat/irq.h | ||
| 3 | * | ||
| 4 | * Marvell Orion SoC IRQ handling. | ||
| 5 | * | ||
| 6 | * This file is licensed under the terms of the GNU General Public | ||
| 7 | * License version 2. This program is licensed "as is" without any | ||
| 8 | * warranty of any kind, whether express or implied. | ||
| 9 | */ | ||
| 10 | |||
| 11 | #ifndef __PLAT_IRQ_H | ||
| 12 | #define __PLAT_IRQ_H | ||
| 13 | |||
| 14 | void orion_irq_init(unsigned int irq_start, void __iomem *maskaddr); | ||
| 15 | |||
| 16 | |||
| 17 | #endif | ||
diff --git a/arch/arm/plat-orion/include/plat/mv_xor.h b/arch/arm/plat-orion/include/plat/mv_xor.h new file mode 100644 index 000000000000..bd5f3bdb4ae3 --- /dev/null +++ b/arch/arm/plat-orion/include/plat/mv_xor.h | |||
| @@ -0,0 +1,30 @@ | |||
| 1 | /* | ||
| 2 | * arch/arm/plat-orion/include/plat/mv_xor.h | ||
| 3 | * | ||
| 4 | * Marvell XOR platform device data definition file. | ||
| 5 | */ | ||
| 6 | |||
| 7 | #ifndef __PLAT_MV_XOR_H | ||
| 8 | #define __PLAT_MV_XOR_H | ||
| 9 | |||
| 10 | #include <linux/dmaengine.h> | ||
| 11 | #include <linux/mbus.h> | ||
| 12 | |||
| 13 | #define MV_XOR_SHARED_NAME "mv_xor_shared" | ||
| 14 | #define MV_XOR_NAME "mv_xor" | ||
| 15 | |||
| 16 | struct mbus_dram_target_info; | ||
| 17 | |||
| 18 | struct mv_xor_platform_shared_data { | ||
| 19 | struct mbus_dram_target_info *dram; | ||
| 20 | }; | ||
| 21 | |||
| 22 | struct mv_xor_platform_data { | ||
| 23 | struct platform_device *shared; | ||
| 24 | int hw_id; | ||
| 25 | dma_cap_mask_t cap_mask; | ||
| 26 | size_t pool_size; | ||
| 27 | }; | ||
| 28 | |||
| 29 | |||
| 30 | #endif | ||
diff --git a/arch/arm/plat-orion/include/plat/orion_nand.h b/arch/arm/plat-orion/include/plat/orion_nand.h new file mode 100644 index 000000000000..d6a4cfa37785 --- /dev/null +++ b/arch/arm/plat-orion/include/plat/orion_nand.h | |||
| @@ -0,0 +1,25 @@ | |||
| 1 | /* | ||
| 2 | * arch/arm/plat-orion/include/plat/orion_nand.h | ||
| 3 | * | ||
| 4 | * This file is licensed under the terms of the GNU General Public | ||
| 5 | * License version 2. This program is licensed "as is" without any | ||
| 6 | * warranty of any kind, whether express or implied. | ||
| 7 | */ | ||
| 8 | |||
| 9 | #ifndef __PLAT_ORION_NAND_H | ||
| 10 | #define __PLAT_ORION_NAND_H | ||
| 11 | |||
| 12 | /* | ||
| 13 | * Device bus NAND private data | ||
| 14 | */ | ||
| 15 | struct orion_nand_data { | ||
| 16 | struct mtd_partition *parts; | ||
| 17 | u32 nr_parts; | ||
| 18 | u8 ale; /* address line number connected to ALE */ | ||
| 19 | u8 cle; /* address line number connected to CLE */ | ||
| 20 | u8 width; /* buswidth */ | ||
| 21 | u8 chip_delay; | ||
| 22 | }; | ||
| 23 | |||
| 24 | |||
| 25 | #endif | ||
diff --git a/arch/arm/plat-orion/include/plat/pcie.h b/arch/arm/plat-orion/include/plat/pcie.h new file mode 100644 index 000000000000..3ebfef72b4e7 --- /dev/null +++ b/arch/arm/plat-orion/include/plat/pcie.h | |||
| @@ -0,0 +1,32 @@ | |||
| 1 | /* | ||
| 2 | * arch/arm/plat-orion/include/plat/pcie.h | ||
| 3 | * | ||
| 4 | * Marvell Orion SoC PCIe handling. | ||
| 5 | * | ||
| 6 | * This file is licensed under the terms of the GNU General Public | ||
| 7 | * License version 2. This program is licensed "as is" without any | ||
| 8 | * warranty of any kind, whether express or implied. | ||
| 9 | */ | ||
| 10 | |||
| 11 | #ifndef __PLAT_PCIE_H | ||
| 12 | #define __PLAT_PCIE_H | ||
| 13 | |||
| 14 | u32 orion_pcie_dev_id(void __iomem *base); | ||
| 15 | u32 orion_pcie_rev(void __iomem *base); | ||
| 16 | int orion_pcie_link_up(void __iomem *base); | ||
| 17 | int orion_pcie_x4_mode(void __iomem *base); | ||
| 18 | int orion_pcie_get_local_bus_nr(void __iomem *base); | ||
| 19 | void orion_pcie_set_local_bus_nr(void __iomem *base, int nr); | ||
| 20 | void orion_pcie_setup(void __iomem *base, | ||
| 21 | struct mbus_dram_target_info *dram); | ||
| 22 | int orion_pcie_rd_conf(void __iomem *base, struct pci_bus *bus, | ||
| 23 | u32 devfn, int where, int size, u32 *val); | ||
| 24 | int orion_pcie_rd_conf_tlp(void __iomem *base, struct pci_bus *bus, | ||
| 25 | u32 devfn, int where, int size, u32 *val); | ||
| 26 | int orion_pcie_rd_conf_wa(void __iomem *wa_base, struct pci_bus *bus, | ||
| 27 | u32 devfn, int where, int size, u32 *val); | ||
| 28 | int orion_pcie_wr_conf(void __iomem *base, struct pci_bus *bus, | ||
| 29 | u32 devfn, int where, int size, u32 val); | ||
| 30 | |||
| 31 | |||
| 32 | #endif | ||
diff --git a/arch/arm/plat-orion/include/plat/time.h b/arch/arm/plat-orion/include/plat/time.h new file mode 100644 index 000000000000..c06ca35f3613 --- /dev/null +++ b/arch/arm/plat-orion/include/plat/time.h | |||
| @@ -0,0 +1,17 @@ | |||
| 1 | /* | ||
| 2 | * arch/arm/plat-orion/include/plat/time.h | ||
| 3 | * | ||
| 4 | * Marvell Orion SoC time handling. | ||
| 5 | * | ||
| 6 | * This file is licensed under the terms of the GNU General Public | ||
| 7 | * License version 2. This program is licensed "as is" without any | ||
| 8 | * warranty of any kind, whether express or implied. | ||
| 9 | */ | ||
| 10 | |||
| 11 | #ifndef __PLAT_TIME_H | ||
| 12 | #define __PLAT_TIME_H | ||
| 13 | |||
| 14 | void orion_time_init(unsigned int irq, unsigned int tclk); | ||
| 15 | |||
| 16 | |||
| 17 | #endif | ||
diff --git a/arch/arm/plat-orion/irq.c b/arch/arm/plat-orion/irq.c index fe66a1835169..3f9d34fc738c 100644 --- a/arch/arm/plat-orion/irq.c +++ b/arch/arm/plat-orion/irq.c | |||
| @@ -12,7 +12,7 @@ | |||
| 12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
| 13 | #include <linux/irq.h> | 13 | #include <linux/irq.h> |
| 14 | #include <linux/io.h> | 14 | #include <linux/io.h> |
| 15 | #include <asm/plat-orion/irq.h> | 15 | #include <plat/irq.h> |
| 16 | 16 | ||
| 17 | static void orion_irq_mask(u32 irq) | 17 | static void orion_irq_mask(u32 irq) |
| 18 | { | 18 | { |
diff --git a/arch/arm/plat-orion/pcie.c b/arch/arm/plat-orion/pcie.c index ca32c60e14d7..883902fead89 100644 --- a/arch/arm/plat-orion/pcie.c +++ b/arch/arm/plat-orion/pcie.c | |||
| @@ -12,7 +12,7 @@ | |||
| 12 | #include <linux/pci.h> | 12 | #include <linux/pci.h> |
| 13 | #include <linux/mbus.h> | 13 | #include <linux/mbus.h> |
| 14 | #include <asm/mach/pci.h> | 14 | #include <asm/mach/pci.h> |
| 15 | #include <asm/plat-orion/pcie.h> | 15 | #include <plat/pcie.h> |
| 16 | 16 | ||
| 17 | /* | 17 | /* |
| 18 | * PCIe unit register offsets. | 18 | * PCIe unit register offsets. |
diff --git a/arch/arm/plat-s3c24xx/cpu.c b/arch/arm/plat-s3c24xx/cpu.c index 6d60f0476bb8..89ce60eabd5b 100644 --- a/arch/arm/plat-s3c24xx/cpu.c +++ b/arch/arm/plat-s3c24xx/cpu.c | |||
| @@ -169,9 +169,7 @@ static struct map_desc s3c_iodesc[] __initdata = { | |||
| 169 | IODESC_ENT(UART) | 169 | IODESC_ENT(UART) |
| 170 | }; | 170 | }; |
| 171 | 171 | ||
| 172 | 172 | static struct cpu_table * __init s3c_lookup_cpu(unsigned long idcode) | |
| 173 | static struct cpu_table * | ||
| 174 | s3c_lookup_cpu(unsigned long idcode) | ||
| 175 | { | 173 | { |
| 176 | struct cpu_table *tab; | 174 | struct cpu_table *tab; |
| 177 | int count; | 175 | int count; |
diff --git a/arch/arm/tools/mach-types b/arch/arm/tools/mach-types index 8b8f564c3aa2..56281c030a7b 100644 --- a/arch/arm/tools/mach-types +++ b/arch/arm/tools/mach-types | |||
| @@ -12,7 +12,7 @@ | |||
| 12 | # | 12 | # |
| 13 | # http://www.arm.linux.org.uk/developer/machines/?action=new | 13 | # http://www.arm.linux.org.uk/developer/machines/?action=new |
| 14 | # | 14 | # |
| 15 | # Last update: Sun Jul 13 12:04:05 2008 | 15 | # Last update: Wed Aug 13 21:56:02 2008 |
| 16 | # | 16 | # |
| 17 | # machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number | 17 | # machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number |
| 18 | # | 18 | # |
| @@ -843,7 +843,7 @@ borzoi MACH_BORZOI BORZOI 831 | |||
| 843 | gecko MACH_GECKO GECKO 832 | 843 | gecko MACH_GECKO GECKO 832 |
| 844 | ds101 MACH_DS101 DS101 833 | 844 | ds101 MACH_DS101 DS101 833 |
| 845 | omap_palmtt2 MACH_OMAP_PALMTT2 OMAP_PALMTT2 834 | 845 | omap_palmtt2 MACH_OMAP_PALMTT2 OMAP_PALMTT2 834 |
| 846 | xscale_palmld MACH_XSCALE_PALMLD XSCALE_PALMLD 835 | 846 | palmld MACH_PALMLD PALMLD 835 |
| 847 | cc9c MACH_CC9C CC9C 836 | 847 | cc9c MACH_CC9C CC9C 836 |
| 848 | sbc1670 MACH_SBC1670 SBC1670 837 | 848 | sbc1670 MACH_SBC1670 SBC1670 837 |
| 849 | ixdp28x5 MACH_IXDP28X5 IXDP28X5 838 | 849 | ixdp28x5 MACH_IXDP28X5 IXDP28X5 838 |
| @@ -852,7 +852,7 @@ ml696k MACH_ML696K ML696K 840 | |||
| 852 | arcom_zeus MACH_ARCOM_ZEUS ARCOM_ZEUS 841 | 852 | arcom_zeus MACH_ARCOM_ZEUS ARCOM_ZEUS 841 |
| 853 | osiris MACH_OSIRIS OSIRIS 842 | 853 | osiris MACH_OSIRIS OSIRIS 842 |
| 854 | maestro MACH_MAESTRO MAESTRO 843 | 854 | maestro MACH_MAESTRO MAESTRO 843 |
| 855 | tunge2 MACH_TUNGE2 TUNGE2 844 | 855 | palmte2 MACH_PALMTE2 PALMTE2 844 |
| 856 | ixbbm MACH_IXBBM IXBBM 845 | 856 | ixbbm MACH_IXBBM IXBBM 845 |
| 857 | mx27ads MACH_MX27ADS MX27ADS 846 | 857 | mx27ads MACH_MX27ADS MX27ADS 846 |
| 858 | ax8004 MACH_AX8004 AX8004 847 | 858 | ax8004 MACH_AX8004 AX8004 847 |
| @@ -916,7 +916,7 @@ nxdb500 MACH_NXDB500 NXDB500 905 | |||
| 916 | apf9328 MACH_APF9328 APF9328 906 | 916 | apf9328 MACH_APF9328 APF9328 906 |
| 917 | omap_wipoq MACH_OMAP_WIPOQ OMAP_WIPOQ 907 | 917 | omap_wipoq MACH_OMAP_WIPOQ OMAP_WIPOQ 907 |
| 918 | omap_twip MACH_OMAP_TWIP OMAP_TWIP 908 | 918 | omap_twip MACH_OMAP_TWIP OMAP_TWIP 908 |
| 919 | palmtreo650 MACH_PALMTREO650 PALMTREO650 909 | 919 | palmt650 MACH_PALMT650 PALMT650 909 |
| 920 | acumen MACH_ACUMEN ACUMEN 910 | 920 | acumen MACH_ACUMEN ACUMEN 910 |
| 921 | xp100 MACH_XP100 XP100 911 | 921 | xp100 MACH_XP100 XP100 911 |
| 922 | fs2410 MACH_FS2410 FS2410 912 | 922 | fs2410 MACH_FS2410 FS2410 912 |
| @@ -1096,7 +1096,7 @@ atc6 MACH_ATC6 ATC6 1086 | |||
| 1096 | multmdw MACH_MULTMDW MULTMDW 1087 | 1096 | multmdw MACH_MULTMDW MULTMDW 1087 |
| 1097 | mba2440 MACH_MBA2440 MBA2440 1088 | 1097 | mba2440 MACH_MBA2440 MBA2440 1088 |
| 1098 | ecsd MACH_ECSD ECSD 1089 | 1098 | ecsd MACH_ECSD ECSD 1089 |
| 1099 | zire31 MACH_ZIRE31 ZIRE31 1090 | 1099 | palmz31 MACH_PALMZ31 PALMZ31 1090 |
| 1100 | fsg MACH_FSG FSG 1091 | 1100 | fsg MACH_FSG FSG 1091 |
| 1101 | razor101 MACH_RAZOR101 RAZOR101 1092 | 1101 | razor101 MACH_RAZOR101 RAZOR101 1092 |
| 1102 | opera_tdm MACH_OPERA_TDM OPERA_TDM 1093 | 1102 | opera_tdm MACH_OPERA_TDM OPERA_TDM 1093 |
| @@ -1810,7 +1810,7 @@ kriss_sensor MACH_KRISS_SENSOR KRISS_SENSOR 1819 | |||
| 1810 | pilz_pmi5 MACH_PILZ_PMI5 PILZ_PMI5 1820 | 1810 | pilz_pmi5 MACH_PILZ_PMI5 PILZ_PMI5 1820 |
| 1811 | jade MACH_JADE JADE 1821 | 1811 | jade MACH_JADE JADE 1821 |
| 1812 | ks8695_softplc MACH_KS8695_SOFTPLC KS8695_SOFTPLC 1822 | 1812 | ks8695_softplc MACH_KS8695_SOFTPLC KS8695_SOFTPLC 1822 |
| 1813 | gprisc4 MACH_GPRISC4 GPRISC4 1823 | 1813 | gprisc3 MACH_GPRISC4 GPRISC4 1823 |
| 1814 | stamp9260 MACH_STAMP9260 STAMP9260 1824 | 1814 | stamp9260 MACH_STAMP9260 STAMP9260 1824 |
| 1815 | smdk6430 MACH_SMDK6430 SMDK6430 1825 | 1815 | smdk6430 MACH_SMDK6430 SMDK6430 1825 |
| 1816 | smdkc100 MACH_SMDKC100 SMDKC100 1826 | 1816 | smdkc100 MACH_SMDKC100 SMDKC100 1826 |
| @@ -1820,3 +1820,44 @@ deister_eyecam MACH_DEISTER_EYECAM DEISTER_EYECAM 1829 | |||
| 1820 | at91sam9m10ek MACH_AT91SAM9M10EK AT91SAM9M10EK 1830 | 1820 | at91sam9m10ek MACH_AT91SAM9M10EK AT91SAM9M10EK 1830 |
| 1821 | linkstation_produo MACH_LINKSTATION_PRODUO LINKSTATION_PRODUO 1831 | 1821 | linkstation_produo MACH_LINKSTATION_PRODUO LINKSTATION_PRODUO 1831 |
| 1822 | hit_b0 MACH_HIT_B0 HIT_B0 1832 | 1822 | hit_b0 MACH_HIT_B0 HIT_B0 1832 |
| 1823 | adx_rmu MACH_ADX_RMU ADX_RMU 1833 | ||
| 1824 | xg_cpe_main MACH_XG_CPE_MAIN XG_CPE_MAIN 1834 | ||
| 1825 | edb9407a MACH_EDB9407A EDB9407A 1835 | ||
| 1826 | dtb9608 MACH_DTB9608 DTB9608 1836 | ||
| 1827 | em104v1 MACH_EM104V1 EM104V1 1837 | ||
| 1828 | demo MACH_DEMO DEMO 1838 | ||
| 1829 | logi9260 MACH_LOGI9260 LOGI9260 1839 | ||
| 1830 | mx31_exm32 MACH_MX31_EXM32 MX31_EXM32 1840 | ||
| 1831 | usb_a9g20 MACH_USB_A9G20 USB_A9G20 1841 | ||
| 1832 | picproje2008 MACH_PICPROJE2008 PICPROJE2008 1842 | ||
| 1833 | cs_e9315 MACH_CS_E9315 CS_E9315 1843 | ||
| 1834 | qil_a9g20 MACH_QIL_A9G20 QIL_A9G20 1844 | ||
| 1835 | sha_pon020 MACH_SHA_PON020 SHA_PON020 1845 | ||
| 1836 | nad MACH_NAD NAD 1846 | ||
| 1837 | sbc35_a9260 MACH_SBC35_A9260 SBC35_A9260 1847 | ||
| 1838 | sbc35_a9g20 MACH_SBC35_A9G20 SBC35_A9G20 1848 | ||
| 1839 | davinci_beginning MACH_DAVINCI_BEGINNING DAVINCI_BEGINNING 1849 | ||
| 1840 | uwc MACH_UWC UWC 1850 | ||
| 1841 | mxlads MACH_MXLADS MXLADS 1851 | ||
| 1842 | htcnike MACH_HTCNIKE HTCNIKE 1852 | ||
| 1843 | deister_pxa270 MACH_DEISTER_PXA270 DEISTER_PXA270 1853 | ||
| 1844 | cme9210js MACH_CME9210JS CME9210JS 1854 | ||
| 1845 | cc9p9360 MACH_CC9P9360 CC9P9360 1855 | ||
| 1846 | mocha MACH_MOCHA MOCHA 1856 | ||
| 1847 | wapd170ag MACH_WAPD170AG WAPD170AG 1857 | ||
| 1848 | linkstation_mini MACH_LINKSTATION_MINI LINKSTATION_MINI 1858 | ||
| 1849 | afeb9260 MACH_AFEB9260 AFEB9260 1859 | ||
| 1850 | w90x900 MACH_W90X900 W90X900 1860 | ||
| 1851 | w90x700 MACH_W90X700 W90X700 1861 | ||
| 1852 | kt300ip MACH_KT300IP KT300IP 1862 | ||
| 1853 | kt300ip_g20 MACH_KT300IP_G20 KT300IP_G20 1863 | ||
| 1854 | srcm MACH_SRCM SRCM 1864 | ||
| 1855 | wlnx_9260 MACH_WLNX_9260 WLNX_9260 1865 | ||
| 1856 | openmoko_gta03 MACH_OPENMOKO_GTA03 OPENMOKO_GTA03 1866 | ||
| 1857 | osprey2 MACH_OSPREY2 OSPREY2 1867 | ||
| 1858 | kbio9260 MACH_KBIO9260 KBIO9260 1868 | ||
| 1859 | ginza MACH_GINZA GINZA 1869 | ||
| 1860 | a636n MACH_A636N A636N 1870 | ||
| 1861 | imx27ipcam MACH_IMX27IPCAM IMX27IPCAM 1871 | ||
| 1862 | nenoc MACH_NEMOC NEMOC 1872 | ||
| 1863 | geneva MACH_GENEVA GENEVA 1873 | ||
