Skip to content
Snippets Groups Projects
  1. Jan 21, 2016
  2. Jan 18, 2016
    • Arnd Bergmann's avatar
      ARM: debug-ll: fix BCM63xx entry for multiplatform · 6c548099
      Arnd Bergmann authored
      
      During my randconfig build testing, I found that a kernel with
      DEBUG_AT91_UART and ARCH_BCM_63XX fails to build:
      
      arch/arm/include/debug/at91.S:18:0: error: "CONFIG_DEBUG_UART_VIRT" redefined [-Werror]
      
      It turns out that the DEBUG_UART_BCM63XX option is enabled whenever
      the ARCH_BCM_63XX is, and that breaks multiplatform kernels because
      we then end up using the UART address from BCM63XX rather than the
      one we actually configured (if any).
      
      This changes the BCM63XX options to only have one Kconfig option,
      and only enable that if the user explicitly turns it on.
      
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Fixes: b51312be ("ARM: BCM63XX: add low-level UART debug support")
      Cc: stable@vger.kernel.org
      6c548099
  3. Dec 31, 2015
    • Arnd Bergmann's avatar
      ARM: realview: don't select SMP_ON_UP for UP builds · 2cb58c01
      Arnd Bergmann authored
      
      When CONFIG_SMP is disabled, we get a warning from Kconfig:
      
      warning: (SOC_IMX31 && SOC_IMX35 && SOC_VF610 && REALVIEW_DT) selects SMP_ON_UP which has unmet direct dependencies (SMP && !XIP_KERNEL && MMU)
      
      This changes the REALVIEW_DT Kconfig entry to not select SMP_ON_UP
      unless SMP is also set.
      
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      2cb58c01
    • Arnd Bergmann's avatar
      ARM: s3c: simplify s3c_irqwake_{e,}intallow definition · 26922c59
      Arnd Bergmann authored
      
      For a long time, gcc has warned about odd configurations on s3c64xx:
      
      In file included from arch/arm/plat-samsung/pm.c:34:0:
      arch/arm/mach-s3c64xx/include/mach/pm-core.h:61:0: warning: "s3c_irqwake_eintallow" redefined
       #define s3c_irqwake_eintallow ((1 << 28) - 1)
      In file included from arch/arm/plat-samsung/pm.c:33:0:
      arch/arm/plat-samsung/include/plat/pm.h:49:0: note: this is the location of the previous definition
       #define s3c_irqwake_eintallow 0
      
      The definitions of s3c_irqwake_intallow and s3c_irqwake_eintallow are a
      bit consistent between the various platforms. Things have become easier
      now that it's only s3c24xx and s3c64xx that use them at all, so I've tried
      to rearrange the definitions to make it more obvious what is going on.
      
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Reviewed-by: default avatarKrzysztof Kozlowski <k.kozlowski@samsung.com>
      26922c59
    • Arnd Bergmann's avatar
      ARM: s3c64xx: fix pm-debug compilation · b7197612
      Arnd Bergmann authored
      
      I got one randconfig build that failed to compile plat-samsung/pm-debug.c
      on s3c64xx:
      
      In file included from arch/arm/plat-samsung/pm-debug.c:27:0:
      arch/arm/mach-s3c64xx/include/mach/pm-core.h: In function 's3c_pm_debug_init_uart':
      arch/arm/mach-s3c64xx/include/mach/pm-core.h:25:25: error: 'S3C_VA_SYS' undeclared (first use in this function)
        u32 tmp = __raw_readl(S3C_PCLK_GATE);
      arch/arm/mach-s3c64xx/include/mach/pm-core.h:25:25: note: each undeclared identifier is reported only once for each function it appears in
      arch/arm/mach-s3c64xx/include/mach/pm-core.h:39:2: error: implicit declaration of function 'udelay' [-Werror=implicit-function-declaration]
        udelay(10);
      
      I have not investigated why this does not show up much more often, I
      guess the headers are usually included from elsewhere, but adding
      explicit #include statements is an obvious fix.
      
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Reviewed-by: default avatarKrzysztof Kozlowski <k.kozlowski@samsung.com>
      b7197612
  4. Dec 18, 2015
  5. Dec 17, 2015
    • Arnd Bergmann's avatar
      ARM: make default platform work for NOMMU · 70722803
      Arnd Bergmann authored
      
      Moving ARCH_VERSATILE into ARCH_MULTIPLATFORM means that it no longer
      works as the default target for MMU-less kernels. While we might
      want to get that working again in the future, it's also a rather
      bad default, and it makes sense to make ARM_SINGLE_V7M the default
      because that is what realistically all NOMMU users on ARM are using,
      and it actually is what gets selected by default in the absence of
      versatile in the choice statement.
      
      Related to this, 'allnoconfig' kernels fail to link with the new
      default, as they do not include a machine record:
      
      arm-linux-gnueabi-ld: no machine record defined
      
      For ARCH_MULTIPLATFORM kernels, we avoid this error by using a
      default machine descriptor that works for all trivial platforms,
      like ARCH_VIRT. The same reasoning applies for ARM_SINGLE_V7M,
      as that can also boot with empty machine descriptors both on
      qemu and on real hardware, as long as all the drivers are present.
      
      We could also follow up with a patch to remove the existing
      machine descriptors for the ARMv7M platforms, the only callback
      pointer the four platforms contain today is the armv7m_restart
      handler and we can simply make that the default for v7M with an
      add-on patch.
      
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      70722803
    • Arnd Bergmann's avatar
      ARM: debug-ll: move DEBUG_LL_UART_EFM32 to correct Kconfig location · 06920d4e
      Arnd Bergmann authored
      
      I accidentally move the DEBUG_LL_UART_EFM32 option when sorting all
      other options alphanumerically, but it belongs into the same group
      as DEBUG_LL_UART_8250 and DEBUG_LL_UART_PL01X.
      
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Fixes: 1dc93416 ("ARM: debug-ll: reorder Kconfig alphanumerically")
      06920d4e
    • Arnd Bergmann's avatar
      ARM: defconfig: use correct debug_ll settings · e45a1e18
      Arnd Bergmann authored
      
      The debug-ll infrastructure can be configured in two ways, either
      by selecting a platform specific debug option, or by picking one
      of the generic options (8250 or pl01x typically). For compatibility
      with multiplatform kernels, we have changed a couple of platforms
      to use the former method now when they used to use the latter.
      
      Unfortunately, this broke the defconfigs because now they still
      enable CONFIG_DEBUG_LL_UART_PL01X or CONFIG_DEBUG_LL_UART_8250,
      and we no longer configure the correct register addresses
      automatically.
      
      Embarrassingly, this was only found in linux-next when the
      defconfig builds turned up errors for multiple people, and I
      had not caught those in my own tests, which were done using
      the randconfig fixes patchset on top, and that has a workaround
      to avoid a build error when the addresses are not configured.
      
      The error was something like:
      
      .config:2010:warning: symbol value '' invalid for DEBUG_UART_PHYS
      .config:2011:warning: symbol value '' invalid for DEBUG_UART_VIRT
      
      This patch avoids the problem by removing the respective
      statements from the defconfig files. Any out of tree defconfig
      files on the platforms I have changed will have to do the same
      change or run into the build error above. Any users that have
      a full .config already set the correct DEBUG_UART_PHYS/VIRT
      addresses and do not need to change anything.
      
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Fixes: 4db22c10 ("ARM: debug-ll: rework integrator/versatile handling")
      Fixes: f06455fa ("ARM: debug-ll: rework ep93xx handling")
      Fixes: c047f529 ("ARM: debug-ll: reorganize mvebu debug uart config")
      Fixes: 59bd4c38 ("ARM: debug-ll: rework lpc32xx handling")
      e45a1e18
  6. Dec 15, 2015
    • Rob Herring's avatar
      ARM: versatile: convert to multi-platform · a29da136
      Rob Herring authored
      
      Now that all the prerequisites are in place, we can enable Versatile
      boards for multi-platform kernels.
      
      Signed-off-by: default avatarRob Herring <robh@kernel.org>
      Cc: Russell King <linux@arm.linux.org.uk>
      Cc: Linus Walleij <linus.walleij@linaro.org>
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      a29da136
    • Rob Herring's avatar
      ARM: versatile: merge mach code into a single file · a7096789
      Rob Herring authored
      
      With DT-only support now in place and most of the legacy code removed,
      the separation of core.c and versatile_dt.c makes little sense. The
      headers in mach include directory also have to move for multi-platform
      support, but with a single .c file the remaining definitions needed can
      also be moved into the versatile_dt.c.
      
      In the move, the system registers and IB2 registers are converted to
      run-time mappings and all register accesses converted to use
      readl/writel.
      
      Signed-off-by: default avatarRob Herring <robh@kernel.org>
      Cc: Russell King <linux@arm.linux.org.uk>
      Cc: Linus Walleij <linus.walleij@linaro.org>
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      a7096789
    • Rob Herring's avatar
      ARM: versatile: switch to DT only booting and remove legacy code · 16956fed
      Rob Herring authored
      
      With DT support for clocks, irqchips, timers, and PCI now in place, DT
      based booting has feature parity with non-DT legacy boot. The final
      piece is actually enabling common clock support on Versatile. Enabling
      full DT support requires either removing the old Versatile clock code,
      updating the legacy boot to use the common clock code, or making DT and
      legacy boot mutually exclusive. Given that removing legacy boot code is
      the goal anyway, I am going with the 1st option.
      
      Signed-off-by: default avatarRob Herring <robh@kernel.org>
      Cc: Russell King <linux@arm.linux.org.uk>
      Cc: Linus Walleij <linus.walleij@linaro.org>
      Cc: Mike Turquette <mturquette@linaro.org>
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      16956fed
    • Rob Herring's avatar
      ARM: versatile: add DT based PCI detection · a8e2894c
      Rob Herring authored
      
      Disable the Versatile PCI DT node when no PCI backplane is detected. This
      will prevent the Versatile PCI driver from probing when PCI is not
      populated.
      
      Signed-off-by: default avatarRob Herring <robh@kernel.org>
      Cc: Russell King <linux@arm.linux.org.uk>
      Cc: Linus Walleij <linus.walleij@linaro.org>
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      a8e2894c
    • Arnd Bergmann's avatar
      ARM: pxa: mark ezx structures as __maybe_unused · ee5d8742
      Arnd Bergmann authored
      
      The ezx platform contains multiple machine descriptors, but not all
      of them use all of the data structures, and it's possible to disable
      all of the machines, which produces some harmless warnings:
      
      mach-pxa/ezx.c:53:26: warning: 'ezx_pwm_lookup' defined but not used [-Wunused-variable]
      mach-pxa/ezx.c:86:31: warning: 'ezx_fb_info_1' defined but not used [-Wunused-variable]
      mach-pxa/ezx.c:107:31: warning: 'ezx_fb_info_2' defined but not used [-Wunused-variable]
      mach-pxa/ezx.c:113:32: warning: 'ezx_devices' defined but not used [-Wunused-variable]
      mach-pxa/ezx.c:117:22: warning: 'ezx_pin_config' defined but not used [-Wunused-variable]
      
      This marks all those structures as __maybe_unused to avoid the warnings.
      Obviously a configuration that contains the ezx platform but no specific
      model is a bit silly, but it should not cause compile-time warnings.
      
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Acked-by: default avatarRobert Jarzmik <robert.jarzmik@free.fr>
      ee5d8742
    • Arnd Bergmann's avatar
      ARM: pxa: mark raumfeld init functions as __maybe_unused · f41bd6af
      Arnd Bergmann authored
      
      The raumfeld.c file contains three similar machine definitions,
      each with their own init function. If one or more of them are
      disabled, we get compile-time warnings:
      
      arm/mach-pxa/raumfeld.c:1070:123: warning: 'raumfeld_connector_init' defined but not used [-Wunused-function]
      arm/mach-pxa/raumfeld.c:1082:123: warning: 'raumfeld_speaker_init' defined but not used [-Wunused-function]
      
      This marks the functions as __maybe_unused to avoid the warnings.
      
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Acked-by: default avatarDaniel Mack <daniel@zonque.org>
      f41bd6af
    • Arnd Bergmann's avatar
      ARM: pxa: cm-x2xx: avoid duplicate macro warnings · f39c42f5
      Arnd Bergmann authored
      
      In an old commit, we worked around the duplicate definition of
      GPIO24_SSP1_SFRM in cm-x2xx.c, which includes files for both
      pxa25x and pxa27x. Apparently the problem has come back and we
      now have four additional duplicate symbols that cause warnings:
      
      In file included from /git/arm-soc/arch/arm/mach-pxa/pxa27x.h:7:0,
                       from /git/arm-soc/arch/arm/mach-pxa/cm-x2xx.c:27:
      /git/arm-soc/arch/arm/mach-pxa/mfp-pxa27x.h:21:0: warning: "GPIO86_GPIO" redefined
       #define GPIO86_GPIO  MFP_CFG_IN(GPIO86, AF0)
      
      This uses the same hack as before and undefines all symbols that
      are defined more than once. Fortunately, cm-x2xx does not need
      any of these.
      
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Acked-by: default avatarRobert Jarzmik <robert.jarzmik@free.fr>
      f39c42f5
    • Arnd Bergmann's avatar
      ARM: debug-ll: reorder Kconfig alphanumerically · 1dc93416
      Arnd Bergmann authored
      
      The file has gotten a little out of sync, as platforms got
      added in the wrong place, or have been renamed. This moves
      the options around, but should not change any functionality.
      
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      1dc93416
    • Arnd Bergmann's avatar
      ARM: debug-ll: rework footbridge handling · 0045c0dd
      Arnd Bergmann authored
      
      Footbridge has two debug ports that are handled a bit differently:
      
      The 8250 port uses the normal debug/8250.S implementation that is shared
      with a lot of other platforms, but it relies on the DEBUG_UART_8250
      option to be turned on automatically instead of being selected by
      DEBUG_FOOTBRIDGE_COM1 as we do for most other platforms. I'm changing
      this to use a 'select' and change the dependency to the debug symbol
      rather than the platform symbol for consistency.
      
      The DC21285 UART has a separate top-level option, and relies on
      the traditional include/mach/debug-macro.S method. With the s3c64xx
      multiplatform series queued up for 4.5, it is now the last one that does
      this, so by moving this file to include/debug/dc21285.S, we can get
      all platforms to do things the same way.
      
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      0045c0dd
    • Arnd Bergmann's avatar
      ARM: debug-ll: rework lpc32xx handling · 59bd4c38
      Arnd Bergmann authored
      
      LPC32xx can not yet be configured in a multiplatform kernel, but
      if we ever get there, enabling one of the LPC32xx platforms
      while trying to use DEBUG_LL for another platform can default to
      the wrong UART address, as the options are purely based on the
      architecture being enabled or not.
      
      This changes the logic to use the LPC32xx default addresses only
      if we have also picked the respective Kconfig symbols introduced
      here.
      
      While we're at it, this also reorders the virtual address as
      it should be.
      
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Acked-by: default avatarVladimir Zapolskiy <vz@mleia.com>
      59bd4c38
    • Arnd Bergmann's avatar
      ARM: debug-ll: rework gemini handling · d7175a3b
      Arnd Bergmann authored
      
      Gemini can not yet be configured in a multiplatform kernel, but
      if we ever get there, enabling one of the gemini platforms
      while trying to use DEBUG_LL for another platform can default to
      the wrong UART address, as the options are purely based on the
      architecture being enabled or not.
      
      This changes the logic to use the gemini default addresses and
      the flow control settings only if we have also picked the respective
      Kconfig symbols introduced here.
      
      While we're at it, this also reorders the virtual address as
      it should be.
      
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Acked-by: default avatarHans Ulli Kroll <ulli.kroll@googlemail.com>
      d7175a3b
    • Arnd Bergmann's avatar
      ARM: debug-ll: rework integrator/versatile handling · 4db22c10
      Arnd Bergmann authored
      
      Enabling one of the integrator platforms in a multiplatform kernel
      while trying to use DEBUG_LL for another platform can default to
      the wrong UART address, as the options are purely based on the
      architecture being enabled or not.
      
      This changes the logic to use the integrator default addresses only
      if we have also picked the respective Kconfig symbols introduced
      here. Versatile is not yet part of multiplatform, but hopefully
      soon will be, so we do the same change for versatile as well.
      
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      4db22c10
    • Arnd Bergmann's avatar
      ARM: debug-ll: rework SPEAr handling · 375d84cf
      Arnd Bergmann authored
      
      Enabling one of the SPEAr platforms in a multiplatform kernel
      while trying to use DEBUG_LL for another platform can default to
      the wrong UART address, as the options are purely based on the
      architecture being enabled or not.
      
      This changes the logic to use the SPEAr default addresses only
      if we have also picked the respective Kconfig symbols introduced
      here.
      
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      375d84cf
    • Arnd Bergmann's avatar
      ARM: debug-ll: rework ep93xx handling · f06455fa
      Arnd Bergmann authored
      
      This makes ep93xx debug-ll handling more consistent with the other
      platforms, by adding a separate Kconfig symbol for it that
      in turn selects the standard DEBUG_UART_PL01X symbol.
      
      We still have to pick a physical address even if DEBUG_LL is disabled
      here, because the EP93xx uncompress output code uses
      CONFIG_DEBUG_UART_PHYS. If we ever move to multiplatform support,
      this can go away.
      
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      f06455fa
    • Arnd Bergmann's avatar
      ARM: debug-ll: reorganize mvebu debug uart config · c047f529
      Arnd Bergmann authored
      
      As we are moving dove/mv78xx0/orion into multiplatform, the debug-ll
      configuration options for these platforms are conflicting with the
      multiplatform configuration: enabling one of those platforms sometimes
      changes the default addresses to the ones used on one of them, rather
      than the one that was selected in Kconfig.
      
      This changes the configuration so we share the physical address
      configuration with mach-mvebu.
      
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      c047f529
    • Arnd Bergmann's avatar
      ARM: debug-ll: fix UART configuration with ARCH_KEYSTONE · cdd2e08b
      Arnd Bergmann authored
      
      We may have multiple platforms enabled and also DEBUG_LL
      configured for one of them. However if we enable ARCH_KEYSTONE,
      we default to using 32-bit UART access independent of which
      platform we are actually using, which can be confusing.
      
      This changes the logic so the 32-bit default gets only
      used by default if we actually configure the keystone
      UART, as opposed to picking some other 8250 setting on
      a kernel that has keystone support enabled.
      
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      cdd2e08b
    • Linus Walleij's avatar
      ARM: realview: add an DT SMP boot method · 5420b4b1
      Linus Walleij authored
      
      This adds an SMP boot method for the ARM RealView reference
      designs. We also select HAVE_SMP by default and make it use
      SMP_ON_UP so we only need to support one single kernel across
      the RealView reference designs when using DT.
      
      The RealViews need to have the SCU (Snoop Control Unit)
      activated on boot, and this is now done by looking up its
      address from the device tree and initializing it and counting
      the available cores.
      
      The RealViews boot by using a magic address register in the
      system controller (SYS_FLAGS) to store the boot address,
      the ROM will then read this register to the PC when the CPUs
      are taken out of WFI. This code uses a handle to the syscon
      regmap to access this register.
      
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      5420b4b1
    • Linus Walleij's avatar
      ARM: realview: select SP810 and ICST for the DT variant · ca5b21fa
      Linus Walleij authored
      
      The device tree boot for RealView need the SP810 system controller
      (same as found on the Versatile Express) to set up the timers on the
      board so the machine can tick. It further utilize the ICST307 through
      its system controller for 6 other oscillators. We have to select these
      from Kconfig or the machine does not boot.
      
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      ca5b21fa
    • Arnd Bergmann's avatar
      ARM: realview: remove private barrier implementation · 2b749cb3
      Arnd Bergmann authored
      
      The realview barrier implementation tries to avoid calling outer_sync in order
      to not lock up as a result of a bug in the l220 cache controller.
      
      This gets in the way of the multiplatform support, but we can still remove
      it if we make sure that the outer_sync function never gets called, by replacing
      the function pointer with NULL, right after initialization.
      
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      [Fixed up header inclusions]
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      2b749cb3
    • Arnd Bergmann's avatar
      ARM: no longer force unbuffered DMA for realview · 38541bf4
      Arnd Bergmann authored
      
      Commit 42c4dafe ("ARM: 6202/1: Do not ARM_DMA_MEM_BUFFERABLE
      on RealView boards with L210/L220") changed the generic setting for
      ARM_DMA_MEM_BUFFERABLE to be disabled on any Realview kernel that includes
      support for any of the ARM11 variations. Doing this was required to
      allow doing DMA without a lockup in the l2x0 cache controller on the
      Realview platform.
      
      Unfortunately, in a kernel that also contains support for any ARMv7
      based machine, the same change makes it impossible to do DMA on ARMv7,
      which gets in the way of enabling multiplatform support on Realview.
      
      As confirmed by Catalin Marinas and Linus Walleij, the current
      code for Realview that we have in the kernel does not actually
      perform any DMA, and this is unlikely to change in the future.
      Therefore we can revert 42c4dafe without introducing regressions,
      but we must never start using DMA on this platform in the future.
      
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Cc: Russell King <linux@arm.linux.org.uk>
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      38541bf4
    • Arnd Bergmann's avatar
      ARM: realview: don't map undefined PCI registers · 930748a0
      Arnd Bergmann authored
      
      PCI support for realview was never merged, and trying to build realview with
      CONFIG_PCI enabled fails because the constants for the mapping windows are
      not defined anywhere.
      
      This removes them from the static I/O window mapping table as a preparation
      for multiplatform support.
      
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      930748a0
    • Arnd Bergmann's avatar
      ARM: realview: remove sparsemem hack · fd0053c9
      Arnd Bergmann authored
      
      The realview-pbx platform has an elaborate way of avoiding the use of highmem
      by redefining its phys_to_virt function. In practice this doesn't help all
      that much, and it gets in the way of doing multiplatform builds for
      realview.
      
      This removes the feature and kills off the mach/memory.h file for realview.
      We also lose the ability to do sparsemem with this patch, but that should
      be put back into place for generic multiplatform configurations, to save
      a little memory on PBX.
      
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      fd0053c9
  7. Dec 11, 2015
    • Stefan Agner's avatar
      ARM: dts: vf610: use reset values for L2 cache latencies · 9c171905
      Stefan Agner authored
      Linux on Vybrid used several different L2 latencies so far, none
      of them seem to be the right ones. According to the application note
      AN4947 ("Understanding Vybrid Architecture"), the tag portion runs
      on CPU clock and is inside the L2 cache controller, whereas the data
      portion is stored in the external SRAM running on platform clock.
      Hence it is likely that the correct value requires a higher data
      latency then tag latency.
      
      These are the values which have been used so far:
      - The mainline values:
        arm,data-latency = <1 1 1>;
        arm,tag-latency = <2 2 2>;
        Those values have lead to problems on higher clocks. They look
        like a poor translation from the reset values (missing +1 offset
        and a mix up between tag/latency values).
      - The Linux 3.0 (SoC vendor BSP) values (converted to DT notation):
        arm,data-latency = <4 2 3>
        arm,tag-latency = <4 2 3>
        The cache initialization function along with the value matches the
        i.MX6 code from the same kernel, so it seems that those values have
        just been copied.
      - The Colibri values:
        arm,data-latency = <2 1 2>;
        arm,tag-latency = <3 2 3>;
        Those were a mix between the values of the Linux 3.0 based BSP and
        the mainline values above.
      - The SoC Reset values (converted to DT notation):
        arm,data-latency = <3 3 3>;
        arm,tag-latency = <2 2 2>;
      
      So far there is no official statement on what the correct values are.
      See also the related Freescale community thread:
      https://community.freescale.com/message/579785#579785
      
      
      
      For now, the reset values seem to be the best bet. Remove all other
      "bogus" values and use the reset value on vf610.dtsi level.
      
      Signed-off-by: default avatarStefan Agner <stefan@agner.ch>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarShawn Guo <shawnguo@kernel.org>
      9c171905
  8. Dec 10, 2015
Loading