1. 12 10月, 2017 1 次提交
    • J
      bus: mbus: fix window size calculation for 4GB windows · 2bbbd963
      Jan Luebbe 提交于
      At least the Armada XP SoC supports 4GB on a single DRAM window. Because
      the size register values contain the actual size - 1, the MSB is set in
      that case. For example, the SDRAM window's control register's value is
      0xffffffe1 for 4GB (bits 31 to 24 contain the size).
      
      The MBUS driver reads back each window's size from registers and
      calculates the actual size as (control_reg | ~DDR_SIZE_MASK) + 1, which
      overflows for 32 bit values, resulting in other miscalculations further
      on (a bad RAM window for the CESA crypto engine calculated by
      mvebu_mbus_setup_cpu_target_nooverlap() in my case).
      
      This patch changes the type in 'struct mbus_dram_window' from u32 to
      u64, which allows us to keep using the same register calculation code in
      most MBUS-using drivers (which calculate ->size - 1 again).
      
      Fixes: fddddb52 ("bus: introduce an Marvell EBU MBus driver")
      CC: stable@vger.kernel.org
      Signed-off-by: NJan Luebbe <jlu@pengutronix.de>
      Signed-off-by: NGregory CLEMENT <gregory.clement@free-electrons.com>
      2bbbd963
  2. 19 11月, 2016 1 次提交
  3. 15 9月, 2016 1 次提交
  4. 11 7月, 2016 1 次提交
    • B
      bus: mvebu-mbus: fix __iomem on register pointers · fce7b5ae
      Ben Dooks 提交于
      The save_cpu_target functions should take "u32 __iomem *", not a
      plain "u32 *" as it is passed to register access functions. Fix
      the following warnings by adding the annotation:
      
      drivers/bus/mvebu-mbus.c:739:17: warning: incorrect type in argument 2 (different address spaces)
      drivers/bus/mvebu-mbus.c:739:17:    expected void volatile [noderef] <asn:2>*addr
      drivers/bus/mvebu-mbus.c:739:17:    got unsigned int [usertype] *
      drivers/bus/mvebu-mbus.c:741:17: warning: incorrect type in argument 2 (different address spaces)
      drivers/bus/mvebu-mbus.c:741:17:    expected void volatile [noderef] <asn:2>*addr
      drivers/bus/mvebu-mbus.c:741:17:    got unsigned int [usertype] *
      drivers/bus/mvebu-mbus.c:742:17: warning: incorrect type in argument 2 (different address spaces)
      drivers/bus/mvebu-mbus.c:742:17:    expected void volatile [noderef] <asn:2>*addr
      drivers/bus/mvebu-mbus.c:742:17:    got unsigned int [usertype] *
      drivers/bus/mvebu-mbus.c:744:17: warning: incorrect type in argument 2 (different address spaces)
      drivers/bus/mvebu-mbus.c:744:17:    expected void volatile [noderef] <asn:2>*addr
      drivers/bus/mvebu-mbus.c:744:17:    got unsigned int [usertype] *
      drivers/bus/mvebu-mbus.c:790:17: warning: incorrect type in argument 2 (different address spaces)
      drivers/bus/mvebu-mbus.c:790:17:    expected void volatile [noderef] <asn:2>*addr
      drivers/bus/mvebu-mbus.c:790:17:    got unsigned int [usertype] *
      drivers/bus/mvebu-mbus.c:792:17: warning: incorrect type in argument 2 (different address spaces)
      drivers/bus/mvebu-mbus.c:792:17:    expected void volatile [noderef] <asn:2>*addr
      drivers/bus/mvebu-mbus.c:792:17:    got unsigned int [usertype] *
      Signed-off-by: NBen Dooks <ben.dooks@codethink.co.uk>
      Acked-by: NArnd Bergmann <arnd@arndb.de>
      Signed-off-by: NGregory CLEMENT <gregory.clement@free-electrons.com>
      fce7b5ae
  5. 15 3月, 2016 1 次提交
  6. 28 5月, 2015 1 次提交
    • T
      bus: mvebu-mbus: add mv_mbus_dram_info_nooverlap() · bfa1ce5f
      Thomas Petazzoni 提交于
      This commit introduces a variant of the mv_mbus_dram_info() function
      called mv_mbus_dram_info_nooverlap(). Both functions are used by
      Marvell drivers supporting devices doing DMA, and provide them a
      description the DRAM ranges that they need to configure their DRAM
      windows.
      
      The ranges provided by the mv_mbus_dram_info() function may overlap
      with the I/O windows if there is a lot (>= 4 GB) of RAM
      installed. This is not a problem for most of the DMA masters, except
      for the upcoming new CESA crypto driver because it does DMA to the
      SRAM, which is mapped through an I/O window. For this unit, we need to
      have DRAM ranges that do not overlap with the I/O windows.
      
      A first implementation done in commit 1737cac6 ("bus: mvebu-mbus:
      make sure SDRAM CS for DMA don't overlap the MBus bridge window"),
      changed the information returned by mv_mbus_dram_info() to match this
      requirement. However, it broke the requirement of the other DMA
      masters than the DRAM ranges should have power of two sizes.
      
      To solve this situation, this commit introduces a new
      mv_mbus_dram_info_nooverlap() function, which returns the same
      information as mv_mbus_dram_info(), but guaranteed to not overlap with
      the I/O windows.
      
      In the end, it gives us two variants of the mv_mbus_dram_info*()
      functions:
      
       - The normal one, mv_mbus_dram_info(), which has been around for many
         years. This function returns the raw DRAM ranges, which are
         guaranteed to use power of two sizes, but will overlap with I/O
         windows. This function will therefore be used by all DMA masters
         (SATA, XOR, Ethernet, etc.) except the CESA crypto driver.
      
       - The new 'nooverlap' variant, mv_mbus_dram_info_nooverlap(). This
         function returns DRAM ranges after they have been "tweaked" to make
         sure they don't overlap with I/O windows. By doing this tweaking,
         we remove the power of two size guarantee. This variant will be
         used by the new CESA crypto driver.
      Signed-off-by: NThomas Petazzoni <thomas.petazzoni@free-electrons.com>
      Signed-off-by: NGregory CLEMENT <gregory.clement@free-electrons.com>
      bfa1ce5f
  7. 01 12月, 2014 1 次提交
  8. 24 4月, 2014 1 次提交
  9. 06 8月, 2013 4 次提交
  10. 15 4月, 2013 1 次提交
  11. 29 3月, 2013 1 次提交
    • T
      bus: introduce an Marvell EBU MBus driver · fddddb52
      Thomas Petazzoni 提交于
      The Marvell EBU SoCs have a configurable physical address space
      layout: the physical ranges of memory used to address PCI(e)
      interfaces, NOR flashes, SRAM and various other types of memory are
      configurable by software, through a mechanism of so-called 'address
      decoding windows'.
      
      This new driver mvebu-mbus consolidates the existing code to address
      the configuration of these memory ranges, which is spread into
      mach-mvebu, mach-orion5x, mach-mv78xx0, mach-dove and mach-kirkwood.
      
      Following patches convert each Marvell EBU SoC family to use this
      driver, therefore removing the old code that was configuring the
      address decoding windows.
      
      It is worth mentioning that the MVEBU_MBUS Kconfig option is
      intentionally added as a blind option. The new driver implements and
      exports the mv_mbus_dram_info() function, which is used by various
      Marvell drivers throughout the tree to get access to window
      configuration parameters that they require. This function is also
      implemented in arch/arm/plat-orion/addr-map.c, which ultimately gets
      removed at the end of this patch series. So, in order to preserve
      bisectability, we want to ensure that *either* this new driver, *or*
      the legacy code in plat-orion/addr-map.c gets compiled in.
      
      By making MVEBU_MBUS a blind option, we are sure that only a platform
      that does 'select MVEBU_MBUS' will get this new driver compiled
      in. Therefore, throughout the next patches that convert the Marvell
      sub-architectures one after the other to this new driver, we add the
      'select MVEBU_MBUS' and also ensure to remove plat-orion/addr-map.c
      from the build for this specific sub-architecture. This ensures that
      bisectability is preserved.
      
      Ealier versions of this driver had a DT binding, but since those were
      not yet agreed upon, they were removed. The driver still uses
      of_device_id to find the SoC specific details according to the string
      passed to mvebu_mbus_init(). The plan is to re-introduce a proper DT
      binding as a followup set of patches.
      Signed-off-by: NThomas Petazzoni <thomas.petazzoni@free-electrons.com>
      Acked-by: NArnd Bergmann <arnd@arndb.de>
      Signed-off-by: NJason Cooper <jason@lakedaemon.net>
      fddddb52
  12. 14 12月, 2011 1 次提交
  13. 28 3月, 2008 1 次提交