- Jan 21, 2016
-
-
Linus Walleij authored
As it happens, two obj-$(CONFIG_FOO) += foo.o variables are above obj-y := core.o, which doesn't work: the += directives need to add something to the build and doesn't work if obj-y is not set first, so move the obj-y to be on top and everything builds nicely again. Signed-off-by:
Linus Walleij <linus.walleij@linaro.org> Signed-off-by:
Arnd Bergmann <arnd@arndb.de>
-
- Jan 18, 2016
-
-
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:
Arnd Bergmann <arnd@arndb.de> Fixes: b51312be ("ARM: BCM63XX: add low-level UART debug support") Cc: stable@vger.kernel.org
-
- Dec 31, 2015
-
-
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:
Arnd Bergmann <arnd@arndb.de>
-
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:
Arnd Bergmann <arnd@arndb.de> Reviewed-by:
Krzysztof Kozlowski <k.kozlowski@samsung.com>
-
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:
Arnd Bergmann <arnd@arndb.de> Reviewed-by:
Krzysztof Kozlowski <k.kozlowski@samsung.com>
-
- Dec 18, 2015
-
-
Arnd Bergmann authored
The platsmp-dt.c file does not build when CONFIG_SMP is disabled: platsmp-dt.c:84:2: error: unknown field 'smp_prepare_cpus' specified in initializer This changes the Makefile to build it conditionally on CONFIG_SMP. The legacy platsmp.c file is only used for ATAGS based builds, so we can move it into the CONFIG_ATAGS conditional. Signed-off-by:
Arnd Bergmann <arnd@arndb.de>
-
Linus Walleij authored
Now that we have multiplatform support, let the RealView defconfigs select all the RealView boards so we boot out of the box like before. This updates both defconfigs. Cc: Arnd Bergmann <arnd@arndb.de> Signed-off-by:
Linus Walleij <linus.walleij@linaro.org>
-
Arnd Bergmann authored
This contains multiple trivial cleanups to the realview headers: - removing the file names from the introductory comment - removing the uncompress.h header that is unused - removing the irqs.h header and NR_IRQS logic that is obsoleted by sparse IRQs Signed-off-by:
Arnd Bergmann <arnd@arndb.de> Signed-off-by:
Linus Walleij <linus.walleij@linaro.org>
-
Arnd Bergmann authored
Nothing includes these files any more, so we can simply move them from arch/arm/mach-realview/include/mach/ to arch/arm/mach-realview. Signed-off-by:
Arnd Bergmann <arnd@arndb.de> [Two fixes added to make everything compile] Signed-off-by:
Linus Walleij <linus.walleij@linaro.org>
-
Arnd Bergmann authored
Now that realview and integrator always select the correct CPU type themselves based on the core tiles, there is no need to still have them user-visible in arch/arm/mm/Kconfig. The ARM925T symbol has been selected by the only user for many years, so that can be removed along with the realview and integrator specific ones. This also solves randconfig build problems on realview. Signed-off-by:
Arnd Bergmann <arnd@arndb.de> Cc: Russell King <linux@arm.linux.org.uk> Signed-off-by:
Linus Walleij <linus.walleij@linaro.org>
-
Arnd Bergmann authored
For consistency with the other platforms, this remove the CPU selection logic in mm/Kconfig that was only used by integrator, and adds specific options for each available core tile and core module, which in turn select the correct CPUs. This is consistent with the new way that we do it for realview and all other platforms. Signed-off-by:
Arnd Bergmann <arnd@arndb.de> Signed-off-by:
Linus Walleij <linus.walleij@linaro.org>
-
Arnd Bergmann authored
All obstacles are out of the way by now, so we can finally move realview to multiplatform. Signed-off-by:
Arnd Bergmann <arnd@arndb.de> Cc: Russell King <linux@arm.linux.org.uk> [Rebased Kconfig, fixed if $(X) to if X in Makefile] Signed-off-by:
Linus Walleij <linus.walleij@linaro.org>
-
- Dec 17, 2015
-
-
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:
Arnd Bergmann <arnd@arndb.de>
-
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:
Arnd Bergmann <arnd@arndb.de> Fixes: 1dc93416 ("ARM: debug-ll: reorder Kconfig alphanumerically")
-
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:
Arnd 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")
-
- Dec 15, 2015
-
-
Rob Herring authored
Now that all the prerequisites are in place, we can enable Versatile boards for multi-platform kernels. Signed-off-by:
Rob Herring <robh@kernel.org> Cc: Russell King <linux@arm.linux.org.uk> Cc: Linus Walleij <linus.walleij@linaro.org> Signed-off-by:
Arnd Bergmann <arnd@arndb.de>
-
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:
Rob Herring <robh@kernel.org> Cc: Russell King <linux@arm.linux.org.uk> Cc: Linus Walleij <linus.walleij@linaro.org> Signed-off-by:
Arnd Bergmann <arnd@arndb.de>
-
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:
Rob 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:
Arnd Bergmann <arnd@arndb.de>
-
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:
Rob Herring <robh@kernel.org> Cc: Russell King <linux@arm.linux.org.uk> Cc: Linus Walleij <linus.walleij@linaro.org> Signed-off-by:
Arnd Bergmann <arnd@arndb.de>
-
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:
Arnd Bergmann <arnd@arndb.de> Acked-by:
Robert Jarzmik <robert.jarzmik@free.fr>
-
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:
Arnd Bergmann <arnd@arndb.de> Acked-by:
Daniel Mack <daniel@zonque.org>
-
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:
Arnd Bergmann <arnd@arndb.de> Acked-by:
Robert Jarzmik <robert.jarzmik@free.fr>
-
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:
Arnd Bergmann <arnd@arndb.de>
-
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:
Arnd Bergmann <arnd@arndb.de>
-
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:
Arnd Bergmann <arnd@arndb.de> Acked-by:
Vladimir Zapolskiy <vz@mleia.com>
-
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:
Arnd Bergmann <arnd@arndb.de> Acked-by:
Hans Ulli Kroll <ulli.kroll@googlemail.com>
-
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:
Arnd Bergmann <arnd@arndb.de>
-
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:
Arnd Bergmann <arnd@arndb.de>
-
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:
Arnd Bergmann <arnd@arndb.de>
-
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:
Arnd Bergmann <arnd@arndb.de>
-
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:
Arnd Bergmann <arnd@arndb.de>
-
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:
Linus Walleij <linus.walleij@linaro.org>
-
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:
Linus Walleij <linus.walleij@linaro.org>
-
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:
Arnd Bergmann <arnd@arndb.de> [Fixed up header inclusions] Signed-off-by:
Linus Walleij <linus.walleij@linaro.org>
-
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:
Arnd Bergmann <arnd@arndb.de> Cc: Russell King <linux@arm.linux.org.uk> Signed-off-by:
Linus Walleij <linus.walleij@linaro.org>
-
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:
Arnd Bergmann <arnd@arndb.de> Signed-off-by:
Linus Walleij <linus.walleij@linaro.org>
-
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:
Arnd Bergmann <arnd@arndb.de> Signed-off-by:
Linus Walleij <linus.walleij@linaro.org>
-
- Dec 11, 2015
-
-
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:
Stefan Agner <stefan@agner.ch> Cc: <stable@vger.kernel.org> Signed-off-by:
Shawn Guo <shawnguo@kernel.org>
-
- Dec 10, 2015
-
-
Arnd Bergmann authored
The recent change to use a pwm lookup table for the ezx machines was incomplete and only changed the a780 model, but not the other ones in the same file. This adds the missing calls to pwm_add_table(). Signed-off-by:
Arnd Bergmann <arnd@arndb.de> Fixes: c3322022 ("ARM: pxa: ezx: Use PWM lookup table") Acked-by:
Thierry Reding <thierry.reding@gmail.com> Acked-by:
Robert Jarzmik <robert.jarzmik@free.fr>
-
Jisheng Zhang authored
We removed CLK_IGNORE_UNUSED from CLKID_SDIO's flag, so the sdhci0 and sdhci1 don't work. We fix this by adding the optional 2nd clock for BG2Q's sdhci0 and sdhci1. This patch brings another benefit: the 2nd clock can be disabled during runtime pm, so saves power a bit. Signed-off-by:
Jisheng Zhang <jszhang@marvell.com> Signed-off-by:
Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
-