Share

Intel XScale IOP Linux

File Release Notes and Changelog

Release Name: 2.6.20-iop1

Notes:
Adam Brooks (2):
      iop13xx: clean up xscale oprofile support and add xsc3 support
      iop13xx: add oprofile support for the internal performance monitor

Dan Williams (34):
      iop3xx: fix the ioremap implementation to not remap static ranges
      do_undefinstr: read svc undefined instructions with svc privileges
      iop: cp6 access handler (undef_hook)
      entry: introduce get_irqnr_preamble and arch_ret_to_user
      iop: remove cp6_enable/disable routines
      iop: unify time implementation across iop32x, iop33x, and iop13xx
      iop13xx: add resource definitions for the tpmi units
      iop3xx: define IOP3XX_REG_ADDR[32|16|8] and clean up DMA/AAU defs
      iop3xx: Give Linux control over PCI (ATU) initialization
      ARM: allow DMA_NONE in consistent_sync
      dmaengine: add base support for the async_tx api
      ARM: Add drivers/dma to arch/arm/Kconfig
      dmaengine: add the async_tx api
      md: add raid5_run_ops and support routines
      md: use raid5_run_ops for stripe cache operations
      md: move write operations to raid5_run_ops
      md: move raid5 compute block operations to raid5_run_ops
      md: move raid5 parity checks to raid5_run_ops
      md: satisfy raid5 read requests via raid5_run_ops
      md: use async_tx and raid5_run_ops for raid5 expansion operations
      md: move raid5 io requests to raid5_run_ops
      md: remove raid5 compute_block and compute_parity5
      dmaengine: driver for the iop32x, iop33x, and iop13xx raid engines
      iop13xx: Surface the iop13xx adma units to the iop-adma driver
      iop3xx: Surface the iop3xx DMA and AAU units to the iop-adma driver
      i2c: m41st85w chip driver (real time clock)
      iop13xx: enable 36-bit pci resources to be mapped into userspace
      iop13xx: workarond errata that causes uart interrupts to be missed
      ARM: revert patch 2723/2 for 64-bit divide support
      iop: polling mode pbi compact flash driver
      async_tx: use an offload engine for copy_page, copy_user_page, and clear_page
      async_tx: divert large in-kernel memcpy calls to a dma engine
      sata_vsc: handle unexpected interrupts when executing a polled IDENTIFY
      v2.6.20-iop1

Daniel Wolstenholme (1):
      iop13xx: msi support

David Brownell (1):
      rm pointless dmaengine exports

Greg Tucker (3):
      iop13xx: add base support for the imu
      iop13xx: imu scsi driver
      iop13xx: support receiving a reset message from the other core


Changes: commit c69b7d5e0a5bc154c0dc88d4bc14a86000dea58a Author: Dan Williams <dan.j.williams@intel.com> Date: Tue Jan 2 13:52:32 2007 -0700 v2.6.20-iop1 [ not for upstream ] commit 2ef7d994cd38f37c0f6a96146a39efe8cb444e7f Author: Dan Williams <dan.j.williams@intel.com> Date: Fri Feb 9 17:47:47 2007 -0700 sata_vsc: handle unexpected interrupts when executing a polled IDENTIFY Signed-off-by: Dan Williams <dan.j.williams@intel.com> commit 4e8ac88efe0ccf42186c5e7252e27de3d47ecf44 Author: Dan Williams <dan.j.williams@intel.com> Date: Fri Feb 9 17:47:47 2007 -0700 async_tx: divert large in-kernel memcpy calls to a dma engine [ experimental ] commit 7047bd9ea0cbac5136fdd792125d94706eb8d2b0 Author: Dan Williams <dan.j.williams@intel.com> Date: Fri Feb 9 17:47:46 2007 -0700 async_tx: use an offload engine for copy_page, copy_user_page, and clear_page [ experimental ] commit 978fc02e33a9dff7eb95fc88ae09f6d0f6acafbd Author: Dan Williams <dan.j.williams@intel.com> Date: Tue Jan 2 13:52:32 2007 -0700 iop: polling mode pbi compact flash driver [ experimental ] commit 9e5a3d4e2c9c8a04c1b9b3a07e73c2d0dda5c23c Author: Dan Williams <dan.j.williams@intel.com> Date: Tue Jan 2 13:52:32 2007 -0700 ARM: revert patch 2723/2 for 64-bit divide support This patch supports a customer request for __udivdi3, __umoddi3, and __udivmoddi4 support, but Russell's position, which I support, is that code should be re-written to not use these symbols. [ not for upstream ] commit a1e50d491a328e9df0dbecca9d432b5a48e8d1e7 Author: Dan Williams <dan.j.williams@intel.com> Date: Wed Sep 20 17:35:26 2006 -0700 iop13xx: workarond errata that causes uart interrupts to be missed Reading the uart iir register is meant to clear the interrupt and simultaneously report that an interrupt was pending. Sometimes the interrupt is cleared but the pending status is not reported. Use the the system interrupt pending register as a fall back. [ not for upstream ] commit 93ae3fec029410cb3bde84c5f0703c7b58be384d Author: Greg Tucker <greg.b.tucker@intel.com> Date: Tue Jan 2 13:52:32 2007 -0700 iop13xx: support receiving a reset message from the other core [ not for upstream ] commit b3791eca611232f9d396ff4d10c76fa98fa40cd5 Author: Adam Brooks <adam.j.brooks@intel.com> Date: Tue Jan 2 13:52:31 2007 -0700 iop13xx: add oprofile support for the internal performance monitor [ not for upstream ] commit a9e2ecfc2b9ce6426a0659681a6d48428384c1c5 Author: Dan Williams <dan.j.williams@intel.com> Date: Tue Jan 2 11:10:41 2007 -0700 iop13xx: enable 36-bit pci resources to be mapped into userspace iop13xx pci space is only accessible via 36-bit addressing, so it is not able to use the standard remap_pfn_range routine in pci_mmap_page_range. This patch adds the capability for different ARM architectures to define their own pci_mmap_page_range routine and enables the capability for iop13xx. The remap_supersection_range implementation was copied from Lennert Buytenhek's implementation in: http://svn.wantstofly.org/kernel/mmap-supersections.diff Signed-off-by: Dan Williams <dan.j.williams@intel.com> commit 06e5908fc49d343ca4970ba7ae51a3a58940e74e Author: Dan Williams <dan.j.williams@intel.com> Date: Thu Oct 19 22:18:05 2006 -0700 i2c: m41st85w chip driver (real time clock) to do: enable the m41t00 for ARM [ not for upstream ] commit a528653b59cdc385797671178895d57acbec4b2c Author: Dan Williams <dan.j.williams@intel.com> Date: Tue Jan 2 13:52:31 2007 -0700 iop3xx: Surface the iop3xx DMA and AAU units to the iop-adma driver Adds the platform device definitions and the architecture specific support routines (i.e. register initialization and descriptor formats) for the iop-adma driver. Changelog: * add support for > 1k zero sum buffer sizes * added dma/aau platform devices to iq80321 and iq80332 setup * fixed the calculation in iop_desc_is_aligned * support xor buffer sizes larger than 16MB * fix places where software descriptors are assumed to be contiguous, only hardware descriptors are contiguous for up to a PAGE_SIZE buffer size * convert to async_tx * add interrupt support * add platform devices for 80219 boards Signed-off-by: Dan Williams <dan.j.williams@intel.com> commit 44442c10f04c7966fd57282e3b1256ddc366711c Author: Dan Williams <dan.j.williams@intel.com> Date: Tue Jan 2 13:52:31 2007 -0700 iop13xx: Surface the iop13xx adma units to the iop-adma driver Adds the platform device definitions and the architecture specific support routines (i.e. register initialization and descriptor formats) for the iop-adma driver. Changelog: * added 'descriptor pool size' to the platform data * add base support for buffer sizes larger than 16MB (hw max) * build error fix from Kirill A. Shutemov * rebase for async_tx changes * add interrupt support Signed-off-by: Dan Williams <dan.j.williams@intel.com> commit e85fddf6cff40a20e26765ec80b732b5ef9a8a95 Author: Dan Williams <dan.j.williams@intel.com> Date: Tue Jan 2 13:52:26 2007 -0700 dmaengine: driver for the iop32x, iop33x, and iop13xx raid engines This is a driver for the iop DMA/AAU/ADMA units which are capable of pq_xor, pq_update, pq_zero_sum, xor, dual_xor, xor_zero_sum, fill, copy+crc, and copy operations. Changelog: * fixed a slot allocation bug in do_iop13xx_adma_xor that caused too few slots to be requested eventually leading to data corruption * enabled the slot allocation routine to attempt to free slots before returning -ENOMEM * switched the cleanup routine to solely use the software chain and the status register to determine if a descriptor is complete. This is necessary to support other IOP engines that do not have status writeback capability * make the driver iop generic * modified the allocation routines to understand allocating a group of slots for a single operation * added a null xor initialization operation for the xor only channel on iop3xx * support xor operations on buffers larger than the hardware maximum * split the do_* routines into separate prep, src/dest set, submit stages * added async_tx support (dependent operations initiation at cleanup time) * simplified group handling * added interrupt support (callbacks via tasklets) * brought the pending depth inline with ioat (i.e. 4 descriptors) * drop dma mapping methods, suggested by Chris Leech Signed-off-by: Dan Williams <dan.j.williams@intel.com> commit 23acfc83232a32f0c14eb4bd9e11e88dd9f2ebcb Author: Dan Williams <dan.j.williams@intel.com> Date: Tue Jan 2 13:52:31 2007 -0700 md: remove raid5 compute_block and compute_parity5 replaced by raid5_run_ops Signed-off-by: Dan Williams <dan.j.williams@intel.com> commit dfa4d67570aac6cb43a36309643d8bbdf7630984 Author: Dan Williams <dan.j.williams@intel.com> Date: Tue Jan 2 13:52:31 2007 -0700 md: move raid5 io requests to raid5_run_ops handle_stripe now only updates the state of stripes. All execution of operations is moved to raid5_run_ops. Signed-off-by: Dan Williams <dan.j.williams@intel.com> commit 1411f1ad18919595d8f919ae3d5d25899e63af8c Author: Dan Williams <dan.j.williams@intel.com> Date: Tue Jan 2 13:52:31 2007 -0700 md: use async_tx and raid5_run_ops for raid5 expansion operations The parity calculation for an expansion operation is the same as the calculation performed at the end of a write with the caveat that all blocks in the stripe are scheduled to be written. An expansion operation is identified as a stripe with the POSTXOR flag set and the BIODRAIN flag not set. The bulk copy operation to the new stripe is handled inline by async_tx. Signed-off-by: Dan Williams <dan.j.williams@intel.com> commit 8b5dc8da1873a3fc29b5fea7509c5efd100b2b04 Author: Dan Williams <dan.j.williams@intel.com> Date: Tue Jan 2 13:52:31 2007 -0700 md: satisfy raid5 read requests via raid5_run_ops Use raid5_run_ops to carry out the memory copies for a raid5 read request. Signed-off-by: Dan Williams <dan.j.williams@intel.com> commit f15409622bb1b2fa0f2a100e864b4e140754b015 Author: Dan Williams <dan.j.williams@intel.com> Date: Tue Jan 2 13:52:31 2007 -0700 md: move raid5 parity checks to raid5_run_ops handle_stripe sets STRIPE_OP_CHECK to request a check operation in raid5_run_ops. If raid5_run_ops is able to perform the check with a dma engine the parity will be preserved in memory removing the need to re-read it from disk, as is necessary in the synchronous case. 'Repair' operations re-use the same logic as compute block, with the caveat that the results of the compute block are immediately written back to the parity disk. To differentiate these operations the STRIPE_OP_MOD_REPAIR_PD flag is added. Signed-off-by: Dan Williams <dan.j.williams@intel.com> commit cb71d0d1226df2d1b318c183080afd32772da54b Author: Dan Williams <dan.j.williams@intel.com> Date: Tue Jan 2 13:52:30 2007 -0700 md: move raid5 compute block operations to raid5_run_ops handle_stripe sets STRIPE_OP_COMPUTE_BLK to request servicing from raid5_run_ops. It also sets a flag for the block being computed to let other parts of handle_stripe submit dependent operations. raid5_run_ops guarantees that the compute operation completes before any dependent operation starts. Signed-off-by: Dan Williams <dan.j.williams@intel.com> commit ac524202053404d7a9bd49ca5b64c0751cb8978a Author: Dan Williams <dan.j.williams@intel.com> Date: Tue Jan 2 13:52:30 2007 -0700 md: move write operations to raid5_run_ops handle_stripe sets STRIPE_OP_PREXOR, STRIPE_OP_BIODRAIN, STRIPE_OP_POSTXOR to request a write to the stripe cache. raid5_run_ops is triggerred to run and executes the request outside the stripe lock. Signed-off-by: Dan Williams <dan.j.williams@intel.com> commit 6201af1669cd04750faeddf518a0c363bb1537b3 Author: Dan Williams <dan.j.williams@intel.com> Date: Tue Jan 2 13:52:30 2007 -0700 md: use raid5_run_ops for stripe cache operations Each stripe has three flag variables to reflect the state of operations (pending, ack, and complete). -pending: set to request servicing in raid5_run_ops -ack: set to reflect that raid5_runs_ops has seen this request -complete: set when the operation is complete and it is ok for handle_stripe5 to clear 'pending' and 'ack'. Signed-off-by: Dan Williams <dan.j.williams@intel.com> commit 37655cf41e16b917efc19ab9d42117889460abe1 Author: Dan Williams <dan.j.williams@intel.com> Date: Tue Jan 2 13:52:30 2007 -0700 md: add raid5_run_ops and support routines Prepare the raid5 implementation to use async_tx for running stripe operations: * biofill (copy data into request buffers to satisfy a read request) * compute block (generate a missing block in the cache from the other blocks) * prexor (subtract existing data as part of the read-modify-write process) * biodrain (copy data out of request buffers to satisfy a write request) * postxor (recalculate parity for new data that has entered the cache) * check (verify that the parity is correct) * io (submit i/o to the member disks) Changelog: * removed ops_complete_biodrain in favor of ops_complete_postxor and ops_complete_write. * removed the workqueue * call bi_end_io for reads in ops_complete_biofill Signed-off-by: Dan Williams <dan.j.williams@intel.com> commit befa0867c816c0e904e9411b3e5d131ff5414eba Author: Dan Williams <dan.j.williams@intel.com> Date: Tue Jan 2 11:10:44 2007 -0700 dmaengine: add the async_tx api async_tx is an api to describe a series of bulk memory transfers/transforms. When possible these transactions are carried out by asynchrounous dma engines. The api handles inter-transaction dependencies and hides dma channel management from the client. When a dma engine is not present the transaction is carried out via synchronous software routines. Xor operations are handled by async_tx, to this end xor.c is moved into drivers/dma and is changed to take an explicit destination address and a series of sources to match the hardware engine implementation. When CONFIG_DMA_ENGINE is not set the asynchrounous path is compiled away. Changelog: * fixed a leftover debug print * don't allow callbacks in async_interrupt_cond * fixed xor_block changes * fixed usage of ASYNC_TX_XOR_DROP_DEST * drop dma mapping methods, suggested by Chris Leech * printk warning fixups from Andrew Morton Signed-off-by: Dan Williams <dan.j.williams@intel.com> commit a21bfe50923967c8d29d0c4f184e740e8b17709c Author: Dan Williams <dan.j.williams@intel.com> Date: Tue Jan 2 11:10:43 2007 -0700 ARM: Add drivers/dma to arch/arm/Kconfig Signed-off-by: Dan Williams <dan.j.williams@intel.com> commit dd2780e949870c341ffb058c60cb05c43fa9df01 Author: Dan Williams <dan.j.williams@intel.com> Date: Tue Jan 2 11:10:43 2007 -0700 dmaengine: add base support for the async_tx api The async_tx api provides methods for describing a chain of asynchronous bulk memory transfers/transforms with support for inter-transactional dependencies. It is implemented as a dmaengine client that smooths over the details of different hardware offload engine implementations. Code that is written to the api can optimize for asynchrnous operation and the api will fit the chain of operations to the available offload resources. Currently the raid5 implementation in the MD raid456 driver has been converted to the async_tx api. A driver for the offload engines on the Intel Xscale series of I/O processors, iop-adma, is provided. With the iop-adma driver and async_txi, raid456 is able to offload copy, xor, and xor-zero-sum operations to hardware engines. On iop342 tiobench showed higher throughput for sequential writes (20 - 30% improvement) and sequential reads to a degraded array (40 - 55% improvement). For the other cases performance was roughly equal, +/- a few percentage points. On a x86-smp platform the performance of the async_tx implementation (in synchronous mode) was also +/- a few percentage points of the original implementation. According to 'top' CPU utilization was positively affected in the offload case, but exact measurements have yet to be taken. The tiobench command line used for testing was: tiobench --size 2048 --block 4096 --block 131072 --dir /mnt/raid --numruns 5 * iop342 had 1GB of memory available This patch: 1/ introduces struct dma_async_tx_descriptor as a common field for all dmaengine software descriptors 2/ converts the device_memcpy_* methods into separate prep, set src/dest, and submit stages 3/ adds support for capabilities beyond memcpy (xor, memset, xor zero sum, completion interrupts) 4/ converts ioatdma to the new semantics Changelog: * drop dma mapping methods, suggested by Chris Leech * fix ioat_dma_dependency_added, also caught by Andrew Morton * fix dma_sync_wait, change from Andrew Morton Signed-off-by: Dan Williams <dan.j.williams@intel.com> commit 9cca4c035b62b2246f7b17526fede21478610aed Author: David Brownell <david-b@pacbell.net> Date: Fri Feb 9 17:47:44 2007 -0700 rm pointless dmaengine exports This removes several pointless exports from drivers/dma/dmaengine.c; the dma_async_memcpy_*() functions are inlined by <linux/dmaengine.h> so those exports are inappropriate. It also moves the existing EXPORT_SYMBOL declarations next to their functions, so it's now trivial to confirm one-to-one correspondence between exports and nonstatic symbols. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Dan Williams <dan.j.williams@intel.com> commit 488de00e75000916f43fcbd5572144141d9780fb Author: Dan Williams <dan.j.williams@intel.com> Date: Tue Jan 2 11:10:43 2007 -0700 ARM: allow DMA_NONE in consistent_sync Let applications, that know the state of their buffers, skip cache maintenance operations. Signed-off-by: Dan Williams <dan.j.williams@intel.com> commit adc8fdae82701ad7017cf50099ae7912413f1cdb Author: Dan Williams <dan.j.williams@intel.com> Date: Tue Jan 2 11:10:43 2007 -0700 iop3xx: Give Linux control over PCI (ATU) initialization Currently the iop3xx platform support code assumes that RedBoot is the bootloader and has already initialized the ATU. Linux should handle this initialization for three reasons: 1/ The memory map that RedBoot sets up is not optimal (page_to_dma and virt_to_phys return different addresses). The effect of this is that using the dma mapping API for the internal bus dma units generates pci bus addresses that are incorrect for the internal bus. 2/ Not all iop platforms use RedBoot 3/ If the ATU is already initialized it indicates that the iop is an add-in card in another host, it does not own the PCI bus, and should not be re-initialized. Signed-off-by: Dan Williams <dan.j.williams@intel.com> commit 0d63e839b61be5551f0a53e48f3f3a11e9d8571f Author: Dan Williams <dan.j.williams@intel.com> Date: Tue Jan 2 11:10:43 2007 -0700 iop3xx: define IOP3XX_REG_ADDR[32|16|8] and clean up DMA/AAU defs Also brings the iop3xx registers in line with the format of the iop13xx register definitions. Changelog: * fixed a GPIO register definition error Signed-off-by: Dan Williams <dan.j.williams@intel.com> commit 14a58df2c6b26c70d591e122205eb1faf0e38d77 Author: Dan Williams <dan.j.williams@intel.com> Date: Tue Jan 2 11:10:42 2007 -0700 iop13xx: add resource definitions for the tpmi units Signed-off-by: Dan Williams <dan.j.williams@intel.com> commit ffcfe70820db5fea2fcc4f0ba97145afb7da923c Author: Daniel Wolstenholme <daniel.e.wolstenholme@intel.com> Date: Tue Jan 2 11:10:42 2007 -0700 iop13xx: msi support Enable devices to signal interrupts via PCI memory cycles. Changelog: * updated for 2.6.19 Signed-off-by: Daniel Wolstenholme <daniel.e.wolstenholme@intel.com> Signed-off-by: Dan Williams <dan.j.williams@intel.com> commit dad4e05d802205a6e58a6c434fd1a3fcf255e1c8 Author: Greg Tucker <greg.b.tucker@intel.com> Date: Tue Jan 2 11:10:42 2007 -0700 iop13xx: imu scsi driver Enable Linux to access the other core as if it were a scsi target. Made changes suggested by James Bottomley such as dma_map direction not bidirectional, proper SCSI return conditons, reset handlers and cleanup. Signed-off-by: Greg Tucker <greg.b.tucker@intel.com> Signed-off-by: Dan Williams <dan.j.williams@intel.com> commit cec5e01cd96e3d2065bda6393a0f51d65776c1d7 Author: Greg Tucker <greg.b.tucker@intel.com> Date: Tue Jan 2 11:10:42 2007 -0700 iop13xx: add base support for the imu The interprocessor messaging unit supports mailbox style communication between the two Xscale cores on iop342. Signed-off-by: Greg Tucker <greg.b.tucker@intel.com> Signed-off-by: Dan Williams <dan.j.williams@intel.com> commit 063a2381780ebe3ec73576e068de191b50a17048 Author: Adam Brooks <adam.j.brooks@intel.com> Date: Tue Jan 2 11:10:41 2007 -0700 iop13xx: clean up xscale oprofile support and add xsc3 support Signed-off-by: Adam Brooks <adam.j.brooks@intel.com> Signed-off-by: Dan Williams <dan.j.williams@intel.com> commit b0c0d7bc2f1417b593786d6f98b5c11a3d665156 Author: Dan Williams <dan.j.williams@intel.com> Date: Tue Jan 2 11:10:41 2007 -0700 iop: unify time implementation across iop32x, iop33x, and iop13xx * architecture specific details are handled in asm/arch/time.h * ARCH_IOP13XX now selects PLAT_IOP * as suggested by Lennert use ifdef CONFIG_XSCALE to skip the cp_wait on XSC3 Signed-off-by: Dan Williams <dan.j.williams@intel.com> commit 4a20027d376dfb567fdd51177082aac028fe5785 Author: Dan Williams <dan.j.williams@intel.com> Date: Tue Jan 2 11:10:41 2007 -0700 iop: remove cp6_enable/disable routines This functionality is replaced by cp6_trap Signed-off-by: Dan Williams <dan.j.williams@intel.com> commit a855efbd658d931c5e1cd81970266e1aa6b7899d Author: Dan Williams <dan.j.williams@intel.com> Date: Tue Jan 2 11:10:40 2007 -0700 entry: introduce get_irqnr_preamble and arch_ret_to_user get_irqnr_preamble allows machines to take some action before entering the get_irqnr_and_base loop. On iop we enable cp6 access. arch_ret_to_user is added to the userspace return path to allow individual architectures to take actions, like disabling coprocessor access, before the final return to userspace. Per Nicolas Pitre's note, there is no need to cp_wait on the return to user as the latency to return is sufficient. Signed-off-by: Dan Williams <dan.j.williams@intel.com> commit 16beeb5f2fa40c4ac6b735c007e29b38f5007b81 Author: Dan Williams <dan.j.williams@intel.com> Date: Tue Jan 2 11:10:40 2007 -0700 iop: cp6 access handler (undef_hook) Enable svc access to cp6 via an undefined instruction hook. Do not enable access for usr code. This patch also makes iop13xx select PLAT_IOP, this requires a small change to drivers/i2c/busses/i2c-iop3xx.c. Per Lennert Buytenhek's note, the cp6 trap routine is moved to arch/arm/plat-iop Per Nicolas Pitre's note, the cp_wait is skipped since the latency to return to the faulting function is longer than cp_wait. Signed-off-by: Dan Williams <dan.j.williams@intel.com> commit bb595578f2fcd545efdde8fc281495680e36a712 Author: Dan Williams <dan.j.williams@intel.com> Date: Tue Jan 2 11:10:40 2007 -0700 do_undefinstr: read svc undefined instructions with svc privileges do_undefinstr currently does not expect undefined instructions in kernel code, since it always uses get_user() to read the instruction. Dereference the 'pc' pointer directly in the SVC case. Per Nicolas Pitre's note, kernel code is never in thumb mode. Signed-off-by: Dan Williams <dan.j.williams@intel.com> commit 7c416d5964234cd3eeccdec403c809b380281807 Author: Dan Williams <dan.j.williams@intel.com> Date: Tue Jan 2 11:10:37 2007 -0700 iop3xx: fix the ioremap implementation to not remap static ranges Implement a custom ioremap implementation for iop3xx. This saves establishing new mappings. It also cleans up the PCI IO resource to be a physical address rather than a virtual address as Russell pointed out on the original iop13xx port. Signed-off-by: Dan Williams <dan.j.williams@intel.com>