1. 23 11月, 2012 1 次提交
    • T
      arm: mvebu: fix address decoding armada_cfg_base() function · 9f3410ff
      Thomas Petazzoni 提交于
      The armada_cfg_base() function returns the base address of the
      registers that allow to configure the decoding for a particular
      address window. On Armada 370/XP, the lower windows have more
      configuration registers (4 registers) than the higher windows (2
      registers). This armada_cfg_base() takes this into account by doing a
      different offset calculation depending on the window number, but this
      offset calculation was wrong for the higher windows.
      
      Even though we were not using high window numbers until now (only
      window 0 is used to map the BootROM, needed for SMP), we use this
      function at boot time to disable all windows to ensure that nothing
      remains intialized from what the bootloader has done.
      
      Unfortunately, the U-Boot on the OpenBlocks AX3-4 uses a window with a
      high number (above 8) to remap the BootROM. And then when the kernel
      boots, it remaps the BootROM in window 0. Normally, this is not a
      problem, because all windows have previously been disabled. Except
      that due to our wrong offset calculation, the windows with high
      numbers were not properly disabled, leading to the BootROM being
      mapped twice. The visible result of this bug was that the kernel was
      unable to get the second CPU started on the OpenBlocks AX3-4
      platform. With this fix, all windows are properly cleared at boot
      time, the BootROM is remapped only once in window 0, and the second
      CPU boots fine.
      
      Thanks a lot to Lior Amsamlen <alior@marvell.com> for his help in
      debugging this problem.
      Signed-off-by: NThomas Petazzoni <thomas.petazzoni@free-electrons.com>
      ---
      Strictly speaking, this bug was introduced in 3.7, but since the only
      platforms supported in 3.7 were Armada 370 and Armada XP, and there
      was anyway no SMP support at this time, it isn't really worth the
      effort to push this patch in 3.7.
      9f3410ff
  2. 22 11月, 2012 1 次提交
    • G
      arm: mvebu: Add hardware I/O Coherency support · e60304f8
      Gregory CLEMENT 提交于
      Armada 370 and XP come with an unit called coherency fabric. This unit
      allows to use the Armada 370/XP as a nearly coherent architecture. The
      coherency mechanism uses snoop filters to ensure the coherency between
      caches, DRAM and devices. This mechanism needs a synchronization
      barrier which guarantees that all the memory writes initiated by the
      devices have reached their target and do not reside in intermediate
      write buffers. That's why the architecture is not totally coherent and
      we need to provide our own functions for some DMA operations.
      
      Beside the use of the coherency fabric, the device units will have to
      set the attribute flag of the decoding address window to select the
      accurate coherency process for the memory transaction. This is done
      each device driver programs the DRAM address windows. The value of the
      attribute set by the driver is retrieved through the
      orion_addr_map_cfg struct filled during the early initialization of
      the platform.
      Signed-off-by: NGregory CLEMENT <gregory.clement@free-electrons.com>
      Reviewed-by: NYehuda Yitschak <yehuday@marvell.com>
      Acked-by: NMarek Szyprowski <m.szyprowski@samsung.com>
      e60304f8
  3. 21 11月, 2012 5 次提交
  4. 20 11月, 2012 2 次提交
  5. 14 11月, 2012 2 次提交
  6. 29 9月, 2012 1 次提交
  7. 22 9月, 2012 5 次提交
  8. 14 9月, 2012 4 次提交
    • R
      ARM: initial multiplatform support · 387798b3
      Rob Herring 提交于
      This lets us build a multiplatform kernel for experimental purposes.
      However, it will not be useful for any real work, because it relies
      on a number of useful things to be disabled for now:
      
      * SMP support must be turned off because of conflicting symbols.
        Marc Zyngier has proposed a solution by adding a new SOC
        operations structure to hold indirect function pointers
        for these, but that work is currently stalled
      
      * We turn on SPARSE_IRQ unconditionally, which is not supported
        on most platforms. Each of them is currently in a different
        state, but most are being worked on.
      
      * A common clock framework is in place since v3.4 but not yet
        being used. Work on this is on its way.
      
      * DEBUG_LL for early debugging is currently disabled.
      
      * THUMB2_KERNEL does not work with allyesconfig because the
        kernel gets too big
      
      [Rob Herring]: Rebased to not be dependent on the mass mach header rename.
      As a result, omap2plus, imx, mxs and ux500 are not converted. Highbank,
      picoxcell, mvebu, and socfpga are converted.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Signed-off-by: NRob Herring <rob.herring@calxeda.com>
      Cc: Russell King <linux@arm.linux.org.uk>
      Cc: Jason Cooper <jason@lakedaemon.net>
      Cc: Andrew Lunn <andrew@lunn.ch>
      Acked-by: NJamie Iles <jamie@jamieiles.com>
      Cc: Dinh Nguyen <dinguyen@altera.com>
      387798b3
    • R
      ARM: mvebu: move armada-370-xp.h in mach dir · 6eb5be34
      Rob Herring 提交于
      Signed-off-by: NRob Herring <rob.herring@calxeda.com>
      Cc: Jason Cooper <jason@lakedaemon.net>
      Cc: Andrew Lunn <andrew@lunn.ch>
      6eb5be34
    • R
      ARM: move all dtb targets out of Makefile.boot · 360a0cab
      Rob Herring 提交于
      In preparation to support multi-platform kernels, move all the dtb targets
      out of the mach Makefile.boot and into the arch/arm/boot/dts/Makefile
      which is closer to the sources.
      
      DTBs are only built when CONFIG_OF is enabled and now use top level
      CONFIG_ARCH_xxx instead of chip or board specific config options.
      Signed-off-by: NRob Herring <rob.herring@calxeda.com>
      Cc: Russell King <linux@arm.linux.org.uk>
      Cc: Andrew Victor <linux@maxim.org.za>
      Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
      Cc: Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>
      Cc: Kukjin Kim <kgene.kim@samsung.com>
      Cc: Sascha Hauer <kernel@pengutronix.de>
      Cc: Jason Cooper <jason@lakedaemon.net>
      Cc: Andrew Lunn <andrew@lunn.ch>
      Cc: Gregory Clement <gregory.clement@free-electrons.com>
      Acked-by: NShawn Guo <shawn.guo@linaro.org>
      Cc: Viresh Kumar <viresh.linux@gmail.com>
      Cc: Shiraz Hashim <shiraz.hashim@st.com>
      Cc: Rajeev Kumar <rajeev-dlh.kumar@st.com>
      Cc: Stephen Warren <swarren@wwwdotorg.org>
      Cc: Srinidhi Kasagar <srinidhi.kasagar@stericsson.com>
      Cc: Linus Walleij <linus.walleij@linaro.org>
      360a0cab
    • R
      ARM: mvebu: move debug macros to include/debug · bfd5af99
      Rob Herring 提交于
      Move mvebu debug-macro.S over to common debug macro directory.
      Signed-off-by: NRob Herring <rob.herring@calxeda.com>
      Cc: Jason Cooper <jason@lakedaemon.net>
      Cc: Andrew Lunn <andrew@lunn.ch>
      bfd5af99
  9. 18 7月, 2012 1 次提交
  10. 10 7月, 2012 4 次提交