1. 01 10月, 2008 7 次提交
  2. 06 9月, 2008 1 次提交
    • L
      [ARM] 5241/1: provide ioremap_wc() · 1ad77a87
      Lennert Buytenhek 提交于
      This patch provides an ARM implementation of ioremap_wc().
      
      We use different page table attributes depending on which CPU we
      are running on:
      
      - Non-XScale ARMv5 and earlier systems: The ARMv5 ARM documents four
        possible mapping types (CB=00/01/10/11).  We can't use any of the
        cached memory types (CB=10/11), since that breaks coherency with
        peripheral devices.  Both CB=00 and CB=01 are suitable for _wc, and
        CB=01 (Uncached/Buffered) allows the hardware more freedom than
        CB=00, so we'll use that.
      
        (The ARMv5 ARM seems to suggest that CB=01 is allowed to delay stores
        but isn't allowed to merge them, but there is no other mapping type
        we can use that allows the hardware to delay and merge stores, so
        we'll go with CB=01.)
      
      - XScale v1/v2 (ARMv5): same as the ARMv5 case above, with the slight
        difference that on these platforms, CB=01 actually _does_ allow
        merging stores.  (If you want noncoalescing bufferable behavior
        on Xscale v1/v2, you need to use XCB=101.)
      
      - Xscale v3 (ARMv5) and ARMv6+: on these systems, we use TEXCB=00100
        mappings (Inner/Outer Uncacheable in xsc3 parlance, Uncached Normal
        in ARMv6 parlance).
      
        The ARMv6 ARM explicitly says that any accesses to Normal memory can
        be merged, which makes Normal memory more suitable for _wc mappings
        than Device or Strongly Ordered memory, as the latter two mapping
        types are guaranteed to maintain transaction number, size and order.
        We use the Uncached variety of Normal mappings for the same reason
        that we can't use C=1 mappings on ARMv5.
      
        The xsc3 Architecture Specification documents TEXCB=00100 as being
        Uncacheable and allowing coalescing of writes, which is also just
        what we need.
      Signed-off-by: NLennert Buytenhek <buytenh@marvell.com>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      1ad77a87
  3. 13 8月, 2008 1 次提交
  4. 09 8月, 2008 2 次提交
    • L
      [ARM] prevent crashing when too much RAM installed · 60296c71
      Lennert Buytenhek 提交于
      This patch will truncate and/or ignore memory banks if their kernel
      direct mappings would (partially) overlap with the vmalloc area or
      the mappings between the vmalloc area and the address space top, to
      prevent crashing during early boot if there happens to be more RAM
      installed than we are expecting.
      
      Since the start of the vmalloc area is not at a fixed address (but
      the vmalloc end address is, via the per-platform VMALLOC_END define),
      a default area of 128M is reserved for vmalloc mappings, which can
      be shrunk or enlarged by passing an appropriate vmalloc= command line
      option as it is done on x86.
      
      On a board with a 3:1 user:kernel split, VMALLOC_END at 0xfe000000,
      two 512M RAM banks and vmalloc=128M (the default), this patch gives:
      
      	Truncating RAM at 20000000-3fffffff to -35ffffff (vmalloc region overlap).
      	Memory: 512MB 352MB = 864MB total
      
      On a board with a 3:1 user:kernel split, VMALLOC_END at 0xfe800000,
      two 256M RAM banks and vmalloc=768M, this patch gives:
      
      	Truncating RAM at 00000000-0fffffff to -0e7fffff (vmalloc region overlap).
      	Ignoring RAM at 10000000-1fffffff (vmalloc region overlap).
      Signed-off-by: NLennert Buytenhek <buytenh@marvell.com>
      Tested-by: NRiku Voipio <riku.voipio@iki.fi>
      60296c71
    • L
      [ARM] Move include/asm-arm/plat-orion to arch/arm/plat-orion/include/plat · 6f088f1d
      Lennert Buytenhek 提交于
      This patch performs the equivalent include directory shuffle for
      plat-orion, and fixes up all users.
      Signed-off-by: NLennert Buytenhek <buytenh@marvell.com>
      6f088f1d
  5. 07 8月, 2008 2 次提交
  6. 03 8月, 2008 1 次提交
  7. 31 7月, 2008 1 次提交
  8. 29 7月, 2008 1 次提交
    • E
      [ARM] pxa: add support for L2 outer cache on XScale3 (attempt 2) · 905a09d5
      Eric Miao 提交于
      (20072fd0 lost most of its changes
      somehow, came from a mbox archive applied with git-am.  No idea
      what happened.  This puts back the missing bits.  --rmk)
      
      The initial patch from Lothar, and Lennert make it into a cleaner
      one, modified and tested on PXA320 by Eric Miao.
      
      This patch moves the L2 cache operations out of proc-xsc3.S into
      dedicated outer cache support code.
      
      CACHE_XSC3L2 can be deselected so no L2 cache specific code will be
      linked in, and that L2 enable bit will not be set, this applies to
      the following cases:
      
          a. _only_ PXA300/PXA310 support included and no L2 cache wanted
          b. PXA320 support included, but want L2 be disabled
      
      So the enabling of L2 depends on two things:
      
          - CACHE_XSC3L2 is selected
          - and L2 cache is present
      
      Where the latter is only a safeguard (previous testing shows it works
      OK even when this bit is turned on).
      
      IXP series of processors with XScale3 cannot disable L2 cache for the
      moment since they depend on the L2 cache for its coherent memory, so
      IXP may always select CACHE_XSC3L2.
      
      Other L2 relevant bits are always turned on (i.e. the original code
      enclosed by #if L2_CACHE_ENABLED .. #endif), as they showed no side
      effects. Specifically, these bits are:
      
         - OC bits in TTBASE register (table walk outer cache attributes)
         - LLR Outer Cache Attributes (OC) in Auxiliary Control Register
      Signed-off-by: NLothar WaÃ&lt;9f&gt;mann <LW@KARO-electronics.de>
      Signed-off-by: NLennert Buytenhek <buytenh@marvell.com>
      Signed-off-by: NEric Miao <eric.miao@marvell.com>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      905a09d5
  9. 28 7月, 2008 1 次提交
  10. 27 7月, 2008 1 次提交
  11. 25 7月, 2008 2 次提交
  12. 19 7月, 2008 1 次提交
  13. 10 7月, 2008 2 次提交
  14. 08 7月, 2008 1 次提交
  15. 05 7月, 2008 1 次提交
  16. 03 7月, 2008 1 次提交
  17. 23 6月, 2008 11 次提交
    • S
      [ARM] add Marvell 78xx0 ARM SoC support · 794d15b2
      Stanislav Samsonov 提交于
      The Marvell Discovery Duo (MV78xx0) is a family of ARM SoCs featuring
      (depending on the model) one or two Feroceon CPU cores with 512K of L2
      cache and VFP coprocessors running at (depending on the model) between
      800 MHz and 1.2 GHz, and features a DDR2 controller, two PCIe
      interfaces that can each run either in x4 or quad x1 mode, three USB
      2.0 interfaces, two 3Gb/s SATA II interfaces, a SPI interface, two
      TWSI interfaces, a crypto accelerator, IDMA/XOR engines, a SPI
      interface, four UARTs, and depending on the model, two or four gigabit
      ethernet interfaces.
      
      This patch adds basic support for the platform, and allows booting
      on the MV78x00 development board, with functional UARTs, SATA, PCIe,
      GigE and USB ports.
      Signed-off-by: NStanislav Samsonov <samsonov@marvell.com>
      Signed-off-by: NLennert Buytenhek <buytenh@marvell.com>
      794d15b2
    • L
      [ARM] Feroceon: 88fr571-vd support · 0a17c7bc
      Lennert Buytenhek 提交于
      Add support for the Feroceon 88fr571-vd CPU core as found in e.g.
      the Marvell Discovery Duo family of ARM SoCs.
      Signed-off-by: NLennert Buytenhek <buytenh@marvell.com>
      0a17c7bc
    • S
      [ARM] add Marvell Kirkwood (88F6000) SoC support · 651c74c7
      Saeed Bishara 提交于
      The Marvell Kirkwood (88F6000) is a family of ARM SoCs based on a
      Shiva CPU core, and features a DDR2 controller, a x1 PCIe interface,
      a USB 2.0 interface, a SPI controller, a crypto accelerator, a TS
      interface, and IDMA/XOR engines, and depending on the model, also
      features one or two Gigabit Ethernet interfaces, two SATA II
      interfaces, one or two TWSI interfaces, one or two UARTs, a
      TDM/SLIC interface, a NAND controller, an I2S/SPDIF interface, and
      an SDIO interface.
      
      This patch adds supports for the Marvell DB-88F6281-BP Development
      Board and the RD-88F6192-NAS and the RD-88F6281 Reference Designs,
      enabling support for the PCIe interface, the USB interface, the
      ethernet interfaces, the SATA interfaces, the TWSI interfaces, the
      UARTs, and the NAND controller.
      Signed-off-by: NSaeed Bishara <saeed@marvell.com>
      Signed-off-by: NLennert Buytenhek <buytenh@marvell.com>
      651c74c7
    • L
      [ARM] Feroceon: 88fr131 support · 9c2af6c5
      Lennert Buytenhek 提交于
      Add support for the Shiva 88fr131 CPU core as found in e.g. the
      Marvell Kirkwood family of ARM SoCs.
      Signed-off-by: NLennert Buytenhek <buytenh@marvell.com>
      9c2af6c5
    • L
      [ARM] Feroceon: L2 cache support · 99c6dc11
      Lennert Buytenhek 提交于
      This patch adds support for the unified Feroceon L2 cache controller
      as found in e.g. the Marvell Kirkwood and Marvell Discovery Duo
      families of ARM SoCs.
      
      Note that:
      
      - Page table walks are outer uncacheable on Kirkwood and Discovery
        Duo, since the ARMv5 spec provides no way to indicate outer
        cacheability of page table walks (specifying it in TTBR[4:3] is
        an ARMv6+ feature).
      
        This requires adding L2 cache clean instructions to
        proc-feroceon.S (dcache_clean_area(), set_pte()) as well as to
        tlbflush.h ({flush,clean}_pmd_entry()).  The latter case is handled
        by defining a new TLB type (TLB_FEROCEON) which is almost identical
        to the v4wbi one but provides a TLB_L2CLEAN_FR flag.
      
      - The Feroceon L2 cache controller supports L2 range (i.e. 'clean L2
        range by MVA' and 'invalidate L2 range by MVA') operations, and this
        patch uses those range operations for all Linux outer cache
        operations, as they are faster than the regular per-line operations.
      
        L2 range operations are not interruptible on this hardware, which
        avoids potential livelock issues, but can be bad for interrupt
        latency, so there is a compile-time tunable (MAX_RANGE_SIZE) which
        allows you to select the maximum range size to operate on at once.
        (Valid range is between one cache line and one 4KiB page, and must
        be a multiple of the line size.)
      Signed-off-by: NLennert Buytenhek <buytenh@marvell.com>
      99c6dc11
    • S
      [ARM] Feroceon: L1 cache range operation support · 836a8051
      Stanislav Samsonov 提交于
      This patch adds support for the L1 D cache range operations that
      are supported by the Marvell Discovery Duo and Marvell Kirkwood
      ARM SoCs.
      Signed-off-by: NStanislav Samsonov <samsonov@marvell.com>
      Acked-by: NSaeed Bishara <saeed@marvell.com>
      Reviewed-by: NNicolas Pitre <nico@marvell.com>
      Signed-off-by: NLennert Buytenhek <buytenh@marvell.com>
      836a8051
    • L
      [ARM] add Marvell Loki (88RC8480) SoC support · 777f9beb
      Lennert Buytenhek 提交于
      The Marvell Loki (88RC8480) is an ARM SoC based on a Feroceon CPU
      core running at between 400 MHz and 1.0 GHz, and features a 64 bit
      DDR controller, 512K of internal SRAM, two x4 PCI-Express ports,
      two Gigabit Ethernet ports, two 4x SAS/SATA controllers, two UARTs,
      two TWSI controllers, and IDMA/XOR engines.
      
      This patch adds support for the Marvell LB88RC8480 Development
      Board, enabling the use of the PCIe interfaces, the ethernet
      interfaces, the TWSI interfaces and the UARTs.
      Signed-off-by: NLennert Buytenhek <buytenh@marvell.com>
      777f9beb
    • K
      [ARM] Feroceon: allow more old Feroceon IDs · ab6d15d5
      Ke Wei 提交于
      There are a couple more Feroceon-based SoCs out in the field that use
      different Variant and Architecture fields in their Main ID registers
      -- this patch tweaks the processor match/mask in proc-feroceon.S to
      catch those SoCs as well.
      Signed-off-by: NKe Wei <kewei@marvell.com>
      Signed-off-by: NLennert Buytenhek <buytenh@marvell.com>
      ab6d15d5
    • N
      [ARM] Feroceon: speed up flushing of the entire cache · 6c386e58
      Nicolas Pitre 提交于
      Flushing the L1 D cache with a test/clean/invalidate loop is very
      easy in software, but it is not the quickest way of doing it, as
      there is a lot of overhead involved in re-scanning the cache from
      the beginning every time we hit a dirty line.
      
      This patch makes proc-feroceon.S use "clean+invalidate by set/way"
      loops according to possible cache configuration of Feroceon CPUs
      (either direct-mapped or 4-way set associative).
      Signed-off-by: NNicolas Pitre <nico@marvell.com>
      Signed-off-by: NLennert Buytenhek <buytenh@marvell.com>
      6c386e58
    • L
      [ARM] Feroceon: annotate 88fr531-vd CPU entries · ee0dd840
      Lennert Buytenhek 提交于
      Annotate the entries for the 88fr531-vd CPU core in
      arch/arm/boot/compressed/head.S and arch/arm/mm/proc-feroceon.S
      with the full name of the core.
      Signed-off-by: NLennert Buytenhek <buytenh@marvell.com>
      Acked-by: NRussell King <linux@arm.linux.org.uk>
      ee0dd840
    • L
      [ARM] Orion: fix various whitespace and coding style issues · e7068ad3
      Lennert Buytenhek 提交于
      More cosmetic cleanup:
      - Replace 8-space indents by proper tab indents.
      - In structure initialisers, use a trailing comma for every member.
      - Collapse "},\n{" in structure initialiers to "}, {".
      Signed-off-by: NLennert Buytenhek <buytenh@marvell.com>
      Acked-by: NRussell King <linux@arm.linux.org.uk>
      e7068ad3
  18. 18 5月, 2008 1 次提交
  19. 29 4月, 2008 2 次提交