28 May, 2020

1 commit

  • This reverts commit 848685c25da99d871bbd87369f3c3d6eead661ac.
    Due to when I set 'depends on VEXPRESS_CONFOG=Y' in 'config
    POWER_RESET_VEXPRESS' to get an allmodconfig build on arm64 to build,
    and allmodconfig build on arm fails if this patch isn't reverted.

    Link: https://lore.kernel.org/r/20200527112608.3886105-4-anders.roxell@linaro.org
    Signed-off-by: Anders Roxell
    Signed-off-by: Arnd Bergmann

    Anders Roxell
     

14 May, 2020

2 commits

  • CONFIG_VEXPRESS_CONFIG has 'default y if ARCH_VEXPRESS', so selecting is
    unnecessary. Selecting it also prevents setting CONFIG_VEXPRESS_CONFIG
    to a module.

    Cc: Lorenzo Pieralisi
    Cc: Linus Walleij
    Reviewed-by: Sudeep Holla
    Acked-by: Liviu Dudau
    Signed-off-by: Rob Herring

    Rob Herring
     
  • The only thing that vexpress-syscfg does is provide a regmap to
    vexpress-config bus child devices. There's little reason to have 2
    components for this. The current structure with initcall ordering
    requirements makes turning these components into modules more difficult.

    So let's start to simplify things and merge vexpress-syscfg into
    vexpress-config. There's no functional change in this commit and it's
    still separate components until subsequent commits.

    Cc: Lorenzo Pieralisi
    Cc: Linus Walleij
    Cc: Arnd Bergmann
    Reviewed-by: Sudeep Holla
    Acked-by: Greg Kroah-Hartman
    Acked-by: Liviu Dudau
    Signed-off-by: Rob Herring

    Rob Herring
     

06 May, 2020

2 commits

  • CONFIG_COMMON_CLK_VERSATILE doesn't really do anything other than hiding
    Arm Ltd reference platform clock drivers. It is both selected by the
    platforms that need it and has a 'depends on' for those platforms. Let's
    drop the selects and convert CONFIG_COMMON_CLK_VERSATILE into a
    menuconfig entry. With this make CONFIG_ICST visible.

    Move the 'select REGMAP_MMIO' to the drivers that require it (SP810 did
    not).

    This also has the side effect of enabling CONFIG_ICST for COMPILE_TEST
    as it was not visible before.

    Cc: Catalin Marinas
    Cc: Will Deacon
    Cc: Liviu Dudau
    Cc: Lorenzo Pieralisi
    Cc: Linus Walleij
    Reviewed-by: Sudeep Holla
    Reviewed-by: Stephen Boyd
    Signed-off-by: Rob Herring

    Rob Herring
     
  • vexpress_flags_set() is only used by the platform SMP related code and
    has nothing to do with the vexpress-sysreg MFD driver other than both
    access the same h/w block. It's also only needed for 32-bit systems and
    must be built-in for them. Let's move vexpress_flags_set() closer to
    where it is being used. This will allow for vexpress-sysreg to be built
    as a module.

    Cc: Lorenzo Pieralisi
    Cc: Linus Walleij
    Reviewed-by: Sudeep Holla
    Acked-by: Arnd Bergmann
    Acked-by: Liviu Dudau
    Acked-by: Lee Jones
    Signed-off-by: Rob Herring

    Rob Herring
     

09 Dec, 2019

1 commit

  • Currently we add individual copy of same OPP table for each CPU within
    the cluster. This is redundant and doesn't reflect the reality.

    We can't use core cpumask to set policy->cpus in ve_spc_cpufreq_init()
    anymore as it gets called via cpuhp_cpufreq_online()->cpufreq_online()
    ->cpufreq_driver->init() and the cpumask gets updated upon CPU hotplug
    operations. It also may cause issues when the vexpress_spc_cpufreq
    driver is built as a module.

    Since ve_spc_clk_init is built-in device initcall, we should be able to
    use the same topology_core_cpumask to set the opp sharing cpumask via
    dev_pm_opp_set_sharing_cpus and use the same later in the driver via
    dev_pm_opp_get_sharing_cpus.

    Cc: Liviu Dudau
    Cc: Lorenzo Pieralisi
    Acked-by: Viresh Kumar
    Tested-by: Dietmar Eggemann
    Signed-off-by: Sudeep Holla

    Sudeep Holla
     

31 Jul, 2019

1 commit


19 Jun, 2019

1 commit

  • Based on 2 normalized pattern(s):

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license version 2 as
    published by the free software foundation

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license version 2 as
    published by the free software foundation #

    extracted by the scancode license scanner the SPDX license identifier

    GPL-2.0-only

    has been chosen to replace the boilerplate/reference in 4122 file(s).

    Signed-off-by: Thomas Gleixner
    Reviewed-by: Enrico Weigelt
    Reviewed-by: Kate Stewart
    Reviewed-by: Allison Randal
    Cc: linux-spdx@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190604081206.933168790@linutronix.de
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     

31 May, 2019

1 commit

  • Based on 1 normalized pattern(s):

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license version 2 as
    published by the free software foundation this program is
    distributed in the hope that it will be useful but without any
    warranty without even the implied warranty of merchantability or
    fitness for a particular purpose see the gnu general public license
    for more details

    extracted by the scancode license scanner the SPDX license identifier

    GPL-2.0-only

    has been chosen to replace the boilerplate/reference in 655 file(s).

    Signed-off-by: Thomas Gleixner
    Reviewed-by: Allison Randal
    Reviewed-by: Kate Stewart
    Reviewed-by: Richard Fontana
    Cc: linux-spdx@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190527070034.575739538@linutronix.de
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     

21 May, 2019

1 commit


14 Dec, 2018

1 commit

  • The only difference between the hotplug implementation for Realview
    and Versatile Express are the bit in the auxiliary control register
    to disable coherency. Combine the two implentations accounting for
    that difference.

    Rename the functions to try to discourage cargo-cult copying of this
    code.

    Tested-by: Sudeep Holla
    Acked-by: Sudeep Holla
    Signed-off-by: Russell King

    Russell King
     

13 Jun, 2018

1 commit

  • The kzalloc() function has a 2-factor argument form, kcalloc(). This
    patch replaces cases of:

    kzalloc(a * b, gfp)

    with:
    kcalloc(a * b, gfp)

    as well as handling cases of:

    kzalloc(a * b * c, gfp)

    with:

    kzalloc(array3_size(a, b, c), gfp)

    as it's slightly less ugly than:

    kzalloc_array(array_size(a, b), c, gfp)

    This does, however, attempt to ignore constant size factors like:

    kzalloc(4 * 1024, gfp)

    though any constants defined via macros get caught up in the conversion.

    Any factors with a sizeof() of "unsigned char", "char", and "u8" were
    dropped, since they're redundant.

    The Coccinelle script used for this was:

    // Fix redundant parens around sizeof().
    @@
    type TYPE;
    expression THING, E;
    @@

    (
    kzalloc(
    - (sizeof(TYPE)) * E
    + sizeof(TYPE) * E
    , ...)
    |
    kzalloc(
    - (sizeof(THING)) * E
    + sizeof(THING) * E
    , ...)
    )

    // Drop single-byte sizes and redundant parens.
    @@
    expression COUNT;
    typedef u8;
    typedef __u8;
    @@

    (
    kzalloc(
    - sizeof(u8) * (COUNT)
    + COUNT
    , ...)
    |
    kzalloc(
    - sizeof(__u8) * (COUNT)
    + COUNT
    , ...)
    |
    kzalloc(
    - sizeof(char) * (COUNT)
    + COUNT
    , ...)
    |
    kzalloc(
    - sizeof(unsigned char) * (COUNT)
    + COUNT
    , ...)
    |
    kzalloc(
    - sizeof(u8) * COUNT
    + COUNT
    , ...)
    |
    kzalloc(
    - sizeof(__u8) * COUNT
    + COUNT
    , ...)
    |
    kzalloc(
    - sizeof(char) * COUNT
    + COUNT
    , ...)
    |
    kzalloc(
    - sizeof(unsigned char) * COUNT
    + COUNT
    , ...)
    )

    // 2-factor product with sizeof(type/expression) and identifier or constant.
    @@
    type TYPE;
    expression THING;
    identifier COUNT_ID;
    constant COUNT_CONST;
    @@

    (
    - kzalloc
    + kcalloc
    (
    - sizeof(TYPE) * (COUNT_ID)
    + COUNT_ID, sizeof(TYPE)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(TYPE) * COUNT_ID
    + COUNT_ID, sizeof(TYPE)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(TYPE) * (COUNT_CONST)
    + COUNT_CONST, sizeof(TYPE)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(TYPE) * COUNT_CONST
    + COUNT_CONST, sizeof(TYPE)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(THING) * (COUNT_ID)
    + COUNT_ID, sizeof(THING)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(THING) * COUNT_ID
    + COUNT_ID, sizeof(THING)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(THING) * (COUNT_CONST)
    + COUNT_CONST, sizeof(THING)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(THING) * COUNT_CONST
    + COUNT_CONST, sizeof(THING)
    , ...)
    )

    // 2-factor product, only identifiers.
    @@
    identifier SIZE, COUNT;
    @@

    - kzalloc
    + kcalloc
    (
    - SIZE * COUNT
    + COUNT, SIZE
    , ...)

    // 3-factor product with 1 sizeof(type) or sizeof(expression), with
    // redundant parens removed.
    @@
    expression THING;
    identifier STRIDE, COUNT;
    type TYPE;
    @@

    (
    kzalloc(
    - sizeof(TYPE) * (COUNT) * (STRIDE)
    + array3_size(COUNT, STRIDE, sizeof(TYPE))
    , ...)
    |
    kzalloc(
    - sizeof(TYPE) * (COUNT) * STRIDE
    + array3_size(COUNT, STRIDE, sizeof(TYPE))
    , ...)
    |
    kzalloc(
    - sizeof(TYPE) * COUNT * (STRIDE)
    + array3_size(COUNT, STRIDE, sizeof(TYPE))
    , ...)
    |
    kzalloc(
    - sizeof(TYPE) * COUNT * STRIDE
    + array3_size(COUNT, STRIDE, sizeof(TYPE))
    , ...)
    |
    kzalloc(
    - sizeof(THING) * (COUNT) * (STRIDE)
    + array3_size(COUNT, STRIDE, sizeof(THING))
    , ...)
    |
    kzalloc(
    - sizeof(THING) * (COUNT) * STRIDE
    + array3_size(COUNT, STRIDE, sizeof(THING))
    , ...)
    |
    kzalloc(
    - sizeof(THING) * COUNT * (STRIDE)
    + array3_size(COUNT, STRIDE, sizeof(THING))
    , ...)
    |
    kzalloc(
    - sizeof(THING) * COUNT * STRIDE
    + array3_size(COUNT, STRIDE, sizeof(THING))
    , ...)
    )

    // 3-factor product with 2 sizeof(variable), with redundant parens removed.
    @@
    expression THING1, THING2;
    identifier COUNT;
    type TYPE1, TYPE2;
    @@

    (
    kzalloc(
    - sizeof(TYPE1) * sizeof(TYPE2) * COUNT
    + array3_size(COUNT, sizeof(TYPE1), sizeof(TYPE2))
    , ...)
    |
    kzalloc(
    - sizeof(TYPE1) * sizeof(THING2) * (COUNT)
    + array3_size(COUNT, sizeof(TYPE1), sizeof(TYPE2))
    , ...)
    |
    kzalloc(
    - sizeof(THING1) * sizeof(THING2) * COUNT
    + array3_size(COUNT, sizeof(THING1), sizeof(THING2))
    , ...)
    |
    kzalloc(
    - sizeof(THING1) * sizeof(THING2) * (COUNT)
    + array3_size(COUNT, sizeof(THING1), sizeof(THING2))
    , ...)
    |
    kzalloc(
    - sizeof(TYPE1) * sizeof(THING2) * COUNT
    + array3_size(COUNT, sizeof(TYPE1), sizeof(THING2))
    , ...)
    |
    kzalloc(
    - sizeof(TYPE1) * sizeof(THING2) * (COUNT)
    + array3_size(COUNT, sizeof(TYPE1), sizeof(THING2))
    , ...)
    )

    // 3-factor product, only identifiers, with redundant parens removed.
    @@
    identifier STRIDE, SIZE, COUNT;
    @@

    (
    kzalloc(
    - (COUNT) * STRIDE * SIZE
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kzalloc(
    - COUNT * (STRIDE) * SIZE
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kzalloc(
    - COUNT * STRIDE * (SIZE)
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kzalloc(
    - (COUNT) * (STRIDE) * SIZE
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kzalloc(
    - COUNT * (STRIDE) * (SIZE)
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kzalloc(
    - (COUNT) * STRIDE * (SIZE)
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kzalloc(
    - (COUNT) * (STRIDE) * (SIZE)
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kzalloc(
    - COUNT * STRIDE * SIZE
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    )

    // Any remaining multi-factor products, first at least 3-factor products,
    // when they're not all constants...
    @@
    expression E1, E2, E3;
    constant C1, C2, C3;
    @@

    (
    kzalloc(C1 * C2 * C3, ...)
    |
    kzalloc(
    - (E1) * E2 * E3
    + array3_size(E1, E2, E3)
    , ...)
    |
    kzalloc(
    - (E1) * (E2) * E3
    + array3_size(E1, E2, E3)
    , ...)
    |
    kzalloc(
    - (E1) * (E2) * (E3)
    + array3_size(E1, E2, E3)
    , ...)
    |
    kzalloc(
    - E1 * E2 * E3
    + array3_size(E1, E2, E3)
    , ...)
    )

    // And then all remaining 2 factors products when they're not all constants,
    // keeping sizeof() as the second factor argument.
    @@
    expression THING, E1, E2;
    type TYPE;
    constant C1, C2, C3;
    @@

    (
    kzalloc(sizeof(THING) * C2, ...)
    |
    kzalloc(sizeof(TYPE) * C2, ...)
    |
    kzalloc(C1 * C2 * C3, ...)
    |
    kzalloc(C1 * C2, ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(TYPE) * (E2)
    + E2, sizeof(TYPE)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(TYPE) * E2
    + E2, sizeof(TYPE)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(THING) * (E2)
    + E2, sizeof(THING)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(THING) * E2
    + E2, sizeof(THING)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - (E1) * E2
    + E1, E2
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - (E1) * (E2)
    + E1, E2
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - E1 * E2
    + E1, E2
    , ...)
    )

    Signed-off-by: Kees Cook

    Kees Cook
     

17 Nov, 2017

1 commit

  • Pull ARM SoC platform updates from Arnd Bergmann:
    "Most of the commits are for defconfig changes, to enable newly added
    drivers or features that people have started using. For the changed
    lines lines, we have mostly cleanups, the affected platforms are OMAP,
    Versatile, EP93xx, Samsung, Broadcom, i.MX, and Actions.

    The largest single change is the introduction of the TI "sysc" bus
    driver, with the intention of cleaning up more legacy code.

    Two new SoC platforms get added this time:

    - Allwinner R40 is a modernized version of the A20 chip, now with a
    Quad-Core ARM Cortex-A7. According to the manufacturer, it is
    intended for "Smart Hardware"

    - Broadcom Hurricane 2 (Aka Strataconnect BCM5334X) is a family of
    chips meant for managed gigabit ethernet switches, based around a
    Cortex-A9 CPU.

    Finally, we gain SMP support for two platforms: Renesas R-Car E2 and
    Amlogic Meson8/8b, which were previously added but only supported
    uniprocessor operation"

    * tag 'armsoc-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (118 commits)
    ARM: multi_v7_defconfig: Select RPMSG_VIRTIO as module
    ARM: multi_v7_defconfig: enable CONFIG_GPIO_UNIPHIER
    arm64: defconfig: enable CONFIG_GPIO_UNIPHIER
    ARM: meson: enable MESON_IRQ_GPIO in Kconfig for meson8b
    ARM: meson: Add SMP bringup code for Meson8 and Meson8b
    ARM: smp_scu: allow the platform code to read the SCU CPU status
    ARM: smp_scu: add a helper for powering on a specific CPU
    dt-bindings: Amlogic: Add Meson8 and Meson8b SMP related documentation
    ARM: OMAP3: Delete an unnecessary variable initialisation in omap3xxx_hwmod_init()
    ARM: OMAP3: Use common error handling code in omap3xxx_hwmod_init()
    ARM: defconfig: select the right SX150X driver
    arm64: defconfig: Enable QCOM_IOMMU
    arm64: Add ThunderX drivers to defconfig
    arm64: defconfig: Enable Tegra PCI controller
    cpufreq: imx6q: Move speed grading check to cpufreq driver
    arm64: defconfig: re-enable Qualcomm DB410c USB
    ARM: configs: stm32: Add MDMA support in STM32 defconfig
    ARM: imx: Enable cpuidle for i.MX6DL starting at 1.1
    bus: ti-sysc: Fix unbalanced pm_runtime_enable by adding remove
    bus: ti-sysc: mark PM functions as __maybe_unused
    ...

    Linus Torvalds
     

02 Nov, 2017

1 commit

  • Many source files in the tree are missing licensing information, which
    makes it harder for compliance tools to determine the correct license.

    By default all files without license information are under the default
    license of the kernel, which is GPL version 2.

    Update the files which contain no license information with the 'GPL-2.0'
    SPDX license identifier. The SPDX identifier is a legally binding
    shorthand, which can be used instead of the full boiler plate text.

    This patch is based on work done by Thomas Gleixner and Kate Stewart and
    Philippe Ombredanne.

    How this work was done:

    Patches were generated and checked against linux-4.14-rc6 for a subset of
    the use cases:
    - file had no licensing information it it.
    - file was a */uapi/* one with no licensing information in it,
    - file was a */uapi/* one with existing licensing information,

    Further patches will be generated in subsequent months to fix up cases
    where non-standard license headers were used, and references to license
    had to be inferred by heuristics based on keywords.

    The analysis to determine which SPDX License Identifier to be applied to
    a file was done in a spreadsheet of side by side results from of the
    output of two independent scanners (ScanCode & Windriver) producing SPDX
    tag:value files created by Philippe Ombredanne. Philippe prepared the
    base worksheet, and did an initial spot review of a few 1000 files.

    The 4.13 kernel was the starting point of the analysis with 60,537 files
    assessed. Kate Stewart did a file by file comparison of the scanner
    results in the spreadsheet to determine which SPDX license identifier(s)
    to be applied to the file. She confirmed any determination that was not
    immediately clear with lawyers working with the Linux Foundation.

    Criteria used to select files for SPDX license identifier tagging was:
    - Files considered eligible had to be source code files.
    - Make and config files were included as candidates if they contained >5
    lines of source
    - File already had some variant of a license header in it (even if
    Reviewed-by: Philippe Ombredanne
    Reviewed-by: Thomas Gleixner
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

03 Oct, 2017

1 commit


28 Feb, 2017

1 commit


17 Oct, 2016

1 commit

  • Current vexpress smp init code detects whether to override the
    default smp ops with MCPM smp ops by matching the "cci-400"
    compatible string, in that MCPM requires control over CCI ports
    to manage low-power states entry/exit.

    The "cci-400" compatible string check is a necessary but not
    sufficient condition for MCPM to work, because the cci-400
    can be made visible to the kernel, but firmware can nonetheless
    disable non-secure CCI ports control, while still allowing PMU
    access; if booted in non-secure world, the kernel would still
    blindly override smp operations with MCPM operations, resulting
    in kernel faults when the CCI ports programming interface is
    accessed from non-secure world.

    This means that the "cci-400" compatible string check would
    result in a false positive in systems that eg boot in HYP mode,
    where CCI ports non-secure access is explicitly not allowed,
    and it is reported in the respective device tree nodes with
    CCI ports marked as disabled.

    Refactor the smp operations initialization to make sure that
    the kernel is actually allowed to take control over CCI ports
    (by enabling MCPM smp operations) before overriding default
    vexpress smp operations.

    Cc: Liviu Dudau
    Cc: Marc Zyngier
    Acked-by: Nicolas Pitre
    Tested-by: Jon Medhurst
    Signed-off-by: Lorenzo Pieralisi
    Signed-off-by: Sudeep Holla

    Lorenzo Pieralisi
     

02 Aug, 2016

1 commit

  • Pull ARM SoC cleanups from Olof Johansson:
    "The cleanup branch keeps going down in size as we've completed a lot
    of the major legacy platform removals and conversions.

    A handful of changes this time around, some of the themes or larger
    sets are:

    - A bunch of i.MX cleanups around platform detection, init call cleanups
    - Misc fixes of missing/implicit includes
    - Removal of ARCH_[WANT_OPTIONAL|REQUIRE]_GPIOLIB"

    * tag 'armsoc-cleanup' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (40 commits)
    ARM: mps2: fix typo
    ARM: s3c64xx: avoid warning about 'struct device_node'
    bus: mvebu-mbus: make mvebu_mbus_syscore_ops static
    bus: mvebu-mbus: fix __iomem on register pointers
    ARM: tegra: Remove board_init_funcs array
    ARM: iop: Fix indentation
    ARM: imx: remove cpu_is_mx*()
    ARM: imx: remove last call to cpu_is_mx5*
    ARM: imx: rework mx27_pm_init() call
    ARM: imx: deconstruct mx3_idle
    ARM: imx: deconstruct mxc_rnga initialization
    ARM: imx: remove cpu_is_mx1 check
    ARM: i.MX: Do not explicitly call l2x0_of_init()
    ARM: i.MX: system.c: Tweak prefetch settings for performance
    ARM: i.MX: system.c: Replace magic numbers
    ARM: i.MX: system.c: Remove redundant errata 752271 code
    ARM: i.MX: system.c: Convert goto to if statement
    ARM: Kirkwood: fix kirkwood_pm_init() declaration/type
    ARM: Kirkwood: make kirkwood_disable_mbus_error_propagation() static
    ARM: orion5x: make orion5x_legacy_handle_irq static
    ...

    Linus Torvalds
     

21 Jun, 2016

1 commit

  • …sudeep.holla/linux into next/cleanup

    ARMv7 VExpress fixes for v4.8

    Few fixes to remove build warnings with W=1

    * tag 'vexpress-fixes-4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/sudeep.holla/linux:
    power: vexpress: make dev_attr_active static
    ARM: vexpress/spc: fix missing include of spc.h
    ARM: versatile: fix missing <plat/platsmp.h> include
    ARM: vexpress/hotplug: fix missing core.h include
    ARM: vexpress/spc: remove unused variable perf_stat_reg

    Signed-off-by: Olof Johansson <olof@lixom.net>

    Olof Johansson
     

13 Jun, 2016

3 commits

  • Fix missing function prototypes found in spc.h by including
    the file to remove the following warnings:

    arch/arm/mach-vexpress/spc.c:131:6: warning: symbol 've_spc_global_wakeup_irq' was not declared. Should it be static?
    arch/arm/mach-vexpress/spc.c:156:6: warning: symbol 've_spc_cpu_wakeup_irq' was not declared. Should it be static?
    arch/arm/mach-vexpress/spc.c:185:6: warning: symbol 've_spc_set_resume_addr' was not declared. Should it be static?
    arch/arm/mach-vexpress/spc.c:210:6: warning: symbol 've_spc_powerdown' was not declared. Should it be static?
    arch/arm/mach-vexpress/spc.c:240:5: warning: symbol 've_spc_cpu_in_wfi' was not declared. Should it be static?
    arch/arm/mach-vexpress/spc.c:450:12: warning: symbol 've_spc_init' was not declared. Should it be static?

    Cc: Liviu Dudau
    Cc: Lorenzo Pieralisi
    Signed-off-by: Ben Dooks
    Signed-off-by: Sudeep Holla

    Ben Dooks
     
  • Fix the missing declaration of vexpress_cpu_die() by
    including core.h where it is defined. Fixes:

    arch/arm/mach-vexpress/hotplug.c:88:6: warning: symbol 'vexpress_cpu_die' was not declared. Should it be static?

    Cc: Liviu Dudau
    Cc: Lorenzo Pieralisi
    Signed-off-by: Ben Dooks
    Signed-off-by: Sudeep Holla

    Ben Dooks
     
  • The variable 'perf_stat_reg' in ve_spc_set_performance is assigned a
    value but that is never used.

    So let's remove the variable 'perf_stat_reg'

    Reported-by: David Binderman
    Cc: Liviu Dudau
    Cc: Lorenzo Pieralisi
    Signed-off-by: Sudeep Holla

    Sudeep Holla
     

04 Jun, 2016

1 commit

  • This replaces:

    - "select ARCH_REQUIRE_GPIOLIB" with "select GPIOLIB" as this can
    now be selected directly.

    - "select ARCH_WANT_OPTIONAL_GPIOLIB" with no dependency: GPIOLIB
    is now selectable by everyone, so we need not declare our
    intent to select it.

    When ordering the symbols the following rationale was used:
    if the selects were in alphabetical order, I moved select GPIOLIB
    to be in alphabetical order, but if the selects were not
    maintained in alphabetical order, I just replaced
    "select ARCH_REQUIRE_GPIOLIB" with "select GPIOLIB".

    Cc: Michael Büsch
    Cc: arm@kernel.org
    Cc: linux-arm-kernel@lists.infradead.org
    Signed-off-by: Linus Walleij
    Signed-off-by: Olof Johansson

    Linus Walleij
     

02 Jun, 2016

1 commit


26 Apr, 2016

1 commit

  • The Cortex-M Prototyping System (or V2M-MPS2) is designed for
    prototyping and evaluation Cortex-M family of processors including the
    latest Cortex-M7

    It comes with a range of useful peripherals including 8MB single cycle
    SRAM, 16MB PSRAM, Ethernet, QSVGA touch screen panel, 4bit RGB VGA
    connector, Audio, SPI and GPIO.

    Signed-off-by: Vladimir Murzin
    Signed-off-by: Sudeep Holla

    Vladimir Murzin
     

02 Dec, 2015

2 commits

  • Many ARM sub-architectures use prompts followed by "if" conditional,
    but it is wrong.

    Please notice the difference between

    config ARCH_FOO
    bool "Foo SoCs" if ARCH_MULTI_V7

    and

    config ARCH_FOO
    bool "Foo SoCs"
    depends on ARCH_MULTI_V7

    These two are *not* equivalent!

    In the former statement, it is not ARCH_FOO, but its prompt that
    depends on ARCH_MULTI_V7. So, it is completely valid that ARCH_FOO
    is selected by another, but ARCH_MULTI_V7 is still disabled. As it is
    not unmet dependency, Kconfig never warns. This is probably not what
    you want.

    The former should be used only when you need to do so, and you really
    understand what you are doing. (In most cases, it should be wrong!)

    For enabling/disabling sub-architectures, the latter is always correct.

    As a good side effect, this commit fixes some entries over 80 columns
    (mach-imx, mach-integrator, mach-mbevu).

    [Arnd: I note that there is not really a bug here, according to
    the discussion that followed, but I can see value in being consistent
    and in making the lines shorter]

    Signed-off-by: Masahiro Yamada
    Acked-by: Maxime Ripard
    Acked-by: Nicolas Ferre
    Acked-by: Heiko Stuebner
    Acked-by: Patrice Chotard
    Acked-by: Liviu Dudau
    Acked-by: Krzysztof Kozlowski
    Acked-by: Jun Nie
    Acked-by: Matthias Brugger
    Acked-by: Simon Horman
    Acked-by: Gregory CLEMENT
    Acked-by: Shawn Guo
    Acked-by: Sebastian Hesselbarth
    Acked-by: Thierry Reding
    Acked-by: Krzysztof Halasa
    Acked-by: Maxime Coquelin
    Signed-off-by: Arnd Bergmann

    Masahiro Yamada
     
  • These smp_operations structures are not over-written, so add "const"
    qualifier and replace __initdata with __initconst.

    Also, add "static" where it is possible.

    Signed-off-by: Masahiro Yamada
    Acked-by: Krzysztof Kozlowski
    Acked-by: Maxime Ripard
    Acked-by: Moritz Fischer
    Acked-by: Stephen Boyd # qcom part
    Acked-by: Viresh Kumar
    Acked-by: Patrice Chotard
    Acked-by: Heiko Stuebner
    Acked-by: Wei Xu
    Acked-by: Florian Fainelli
    Acked-by: Sebastian Hesselbarth
    Acked-by: Gregory CLEMENT
    Acked-by: Shawn Guo
    Acked-by: Matthias Brugger
    Acked-by: Thierry Reding
    Acked-by: Nicolas Pitre
    Acked-by: Liviu Dudau
    Acked-by: Linus Walleij
    Signed-off-by: Arnd Bergmann

    Masahiro Yamada
     

23 Oct, 2015

1 commit

  • Now that __cpuinit has been removed, the __ref markings on these
    functions are useless. Remove them. This also reduces the size of
    the multi_v7_defconfig image:

    $ size before after
    text data bss dec hex filename
    12683578 1470996 348904 14503478 dd4e36 before
    12683274 1470996 348904 14503174 dd4d06 after

    presumably because now we don't have to jump to code in the
    .ref.text section and/or the noinline marking is removed.

    Cc: Shiraz Hashim
    Cc: Stephen Warren
    Cc: Alexandre Courbot
    Cc: Lorenzo Pieralisi
    Cc: Will Deacon
    Cc:
    Cc:
    Cc:
    Cc:
    Acked-by: Tony Lindgren
    Acked-by: Barry Song
    Acked-by: Andy Gross
    Acked-by: Viresh Kumar
    Acked-by: Thierry Reding
    Acked-by: Linus Walleij
    Acked-by: Sudeep Holla
    Acked-by: Mark Rutland
    Signed-off-by: Stephen Boyd
    Signed-off-by: Olof Johansson

    Stephen Boyd
     

04 Aug, 2015

1 commit

  • Commit 3228950621d9 ("irqchip: gic: Preserve gic V2 bypass bits in cpu
    ctrl register") added a new function, gic_cpu_if_up(), to program the
    GIC CPU_CTRL register. This function assumes that there is only one GIC
    instance present and hence always uses the chip data for the primary GIC
    controller. Although it is not common for there to be a secondary, some
    devices do support a secondary. Therefore, fix this by passing
    gic_cpu_if_up() a pointer to the appropriate chip data structure.

    Similarly, the function gic_cpu_if_down() only assumes that there is a
    single GIC instance present. Update this function so that an instance
    number is passed for the appropriate GIC and return an error code on
    failure. The vexpress TC2 (which has a single GIC) is currently the only
    user of this function and so update it accordingly. Note that because the
    TC2 only has a single GIC, the call to gic_cpu_if_down() should always
    be successful.

    Signed-off-by: Jon Hunter
    Reviewed-by: Marc Zyngier
    Cc:
    Cc: Russell King
    Cc: Nicolas Pitre
    Cc: Jason Cooper
    Link: http://lkml.kernel.org/r/1438332252-25248-2-git-send-email-jonathanh@nvidia.com
    Signed-off-by: Thomas Gleixner

    Jon Hunter
     

17 Jun, 2015

1 commit

  • The spc.o is built for ARCH_VEXPRESS_SPC -- which is bool, and hence
    this code is either present or absent. It will never be modular,
    so using module_init as an alias for __initcall can be somewhat
    misleading.

    Fix this up now, so that we can relocate module_init from
    init.h into module.h in the future. If we don't do this, we'd
    have to add module.h to obviously non-modular code, and that
    would be a worse thing.

    Note that direct use of __initcall is discouraged, vs. one
    of the priority categorized subgroups. As __initcall gets
    mapped onto device_initcall, our use of device_initcall
    directly in this change means that the runtime impact is
    zero -- it will remain at level 6 in initcall ordering.

    Cc: Russell King
    Cc: linux-arm-kernel@lists.infradead.org
    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     

23 Apr, 2015

2 commits

  • Pull ARM SoC driver updates from Olof Johansson:
    "Driver updates for v4.1. Some of these are for drivers/soc, where we
    find more and more SoC-specific drivers these days. Some are for
    other driver subsystems where we have received acks from the
    appropriate maintainers.

    The larger parts of this branch are:

    - MediaTek support for their PMIC wrapper interface, a high-level
    interface for talking to the system PMIC over a dedicated I2C
    interface.

    - Qualcomm SCM driver has been moved to drivers/firmware. It's used
    for CPU up/down and needs to be in a shared location for arm/arm64
    common code.

    - cleanup of ARM-CCI PMU code.

    - another set of cleanusp to the OMAP GPMC code"

    * tag 'armsoc-drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (43 commits)
    soc/mediatek: Remove unused variables
    clocksource: atmel-st: select MFD_SYSCON
    soc: mediatek: Add PMIC wrapper for MT8135 and MT8173 SoCs
    arm-cci: Fix CCI PMU event validation
    arm-cci: Split the code for PMU vs driver support
    arm-cci: Get rid of secure transactions for PMU driver
    arm-cci: Abstract the CCI400 PMU specific definitions
    arm-cci: Rearrange code for splitting PMU vs driver code
    drivers: cci: reject groups spanning multiple HW PMUs
    ARM: at91: remove useless include
    clocksource: atmel-st: remove mach/hardware dependency
    clocksource: atmel-st: use syscon/regmap
    ARM: at91: time: move the system timer driver to drivers/clocksource
    ARM: at91: properly initialize timer
    ARM: at91: at91rm9200: remove deprecated arm_pm_restart
    watchdog: at91rm9200: implement restart handler
    watchdog: at91rm9200: use the system timer syscon
    mfd: syscon: Add atmel system timer registers definition
    ARM: at91/dt: declare atmel,at91rm9200-st as a syscon
    soc: qcom: gsbi: Add support for ADM CRCI muxing
    ...

    Linus Torvalds
     
  • Pull ARM SoC platform updates from Olof Johansson:
    "Our SoC branch usually contains expanded support for new SoCs and
    other core platform code. In this case, that includes:

    - support for the new Annapurna Labs "Alpine" platform

    - a rework greatly simplifying adding new platform support to the
    MCPM subsystem (Multi-cluster power management)

    - cpuidle and PM improvements for Exynos3250

    - misc updates for Renesas, OMAP, Meson, i.MX. Some of these could
    have gone in other branches but ended up here for various reasons"

    * tag 'armsoc-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (53 commits)
    ARM: alpine: add support for generic pci
    ARM: Exynos: migrate DCSCB to the new MCPM backend abstraction
    ARM: vexpress: migrate DCSCB to the new MCPM backend abstraction
    ARM: vexpress: DCSCB: tighten CPU validity assertion
    ARM: vexpress: migrate TC2 to the new MCPM backend abstraction
    ARM: MCPM: move the algorithmic complexity to the core code
    ARM: EXYNOS: allow cpuidle driver usage on Exynos3250 SoC
    ARM: EXYNOS: add AFTR mode support for Exynos3250
    ARM: EXYNOS: add code for setting/clearing boot flag
    ARM: EXYNOS: fix CPU1 hotplug on Exynos3250
    ARM: S3C64XX: Use fixed IRQ bases to avoid conflicts on Cragganmore
    ARM: cygnus: fix const declaration bcm_cygnus_dt_compat
    ARM: DRA7: hwmod: Fix the hwmod class for GPTimer4
    ARM: DRA7: hwmod: Add data for GPTimers 13 through 16
    ARM: EXYNOS: Remove left over 'extra_save'
    ARM: EXYNOS: Constify exynos_pm_data array
    ARM: EXYNOS: use static in suspend.c
    ARM: EXYNOS: Use platform device name as power domain name
    ARM: EXYNOS: add support for async-bridge clocks for pm_domains
    ARM: omap-device: add missed callback for suspend-to-disk
    ...

    Linus Torvalds
     

07 Apr, 2015

1 commit

  • The Cortex A9 tile fails to unplug CPUs if errata 643719 is not enabled.
    This leads to random weird behaviours, but ultimately seem to lock the
    kernel one way or another when a CPU is hot unplugged.

    Symptoms range from a spinlock lockup in the scheduler, the entire
    system hanging, to dumping out the kernel printk buffer a few lines at
    a time, and other weird behaviours.

    This is caused by the outgoing CPU not having its inner caches properly
    flushed before it exits coherency - flush_cache_louis() is used to
    achieve this, but as a result of the hardware bug, this function ends
    up doing nothing without the errata workaround enabled.

    As the Versatile Express has an affected CPU, this errata must always
    be enabled.

    Signed-off-by: Russell King

    Russell King
     

04 Apr, 2015

3 commits


27 Mar, 2015

1 commit

  • This patch separates the PMU driver code from the low level
    CCI driver code and enables the PMU driver for ARM64.

    Introduces config options for both.

    ARM_CCI400_PORT_CTRL - controls the low level driver code for
    CCI400 ports.
    ARM_CCI400_PMU - controls the PMU driver code
    ARM_CCI400_COMMON - Common defintions for CCI400

    This patch also changes:
    ARM_CCI - common code for probing the CCI devices. This can be
    used for adding support for newer CCI versions(e.g, CCI-500).

    Cc: Bartlomiej Zolnierkiewicz
    Cc: Kukjin Kim
    Cc: Abhilash Kesavan
    Cc: Liviu Dudau
    Cc: Lorenzo Pieralisi
    Cc: Sudeep Holla
    Cc: Nicolas Pitre
    Cc: Punit Agrawal
    Acked-by: Sudeep Holla
    Acked-by: Nicolas Pitre
    Acked-by: Punit Agrawal
    Signed-off-by: Suzuki K. Poulose
    Signed-off-by: Will Deacon

    Suzuki K. Poulose
     

18 Feb, 2015

1 commit

  • The vexpress tc2 power management code calls mcpm_loopback, which
    is only available if ARM_CPU_SUSPEND is enabled, otherwise we
    get a link error:

    arch/arm/mach-vexpress/built-in.o: In function `tc2_pm_init':
    arch/arm/mach-vexpress/tc2_pm.c:389: undefined reference to `mcpm_loopback'

    This explicitly selects ARM_CPU_SUSPEND like other platforms that
    need it.

    Signed-off-by: Arnd Bergmann
    Fixes: 3592d7e002438 ("ARM: 8082/1: TC2: test the MCPM loopback during boot")
    Acked-by: Nicolas Pitre
    Acked-by: Liviu Dudau
    Cc: Kevin Hilman
    Cc: Sudeep Holla
    Cc: Lorenzo Pieralisi

    Arnd Bergmann
     

29 Nov, 2014

1 commit

  • The MMCI driver, when used with a Device Tree described device, relies
    on the "vmmc" voltage regulator supply to set the OCR register voltage bits,
    using MMC core's mmc_regulator_get_supply() function.

    Without the regulator framework present there are no valid operating
    voltages reported and the device initialisation fails:

    mmci-pl18x 10005000.mmci: No vmmc regulator found
    mmci-pl18x 10005000.mmci: no support for card's volts
    mmc0: error -22 whilst initialising SD card

    Signed-off-by: Pawel Moll
    Signed-off-by: Arnd Bergmann

    Pawel Moll
     

28 Nov, 2014

1 commit

  • Now, with the CLCD DT support available, there is no
    more reason to keep the non-DT support for V2P-CA9.

    Removed, together with "some" supporting code. It was
    necessary to make PLAT_VERSATILE_SCHED_CLOCK optional
    and selected by the machines still interested in it.

    Acked-by: Mike Turquette
    Signed-off-by: Pawel Moll
    Signed-off-by: Arnd Bergmann

    Pawel Moll