29 Aug, 2018

1 commit


24 Aug, 2018

1 commit

  • Pull ARM SoC driver updates from Olof Johansson:
    "Some of the larger changes this merge window:

    - Removal of drivers for Exynos5440, a Samsung SoC that never saw
    widespread use.

    - Uniphier support for USB3 and SPI reset handling

    - Syste control and SRAM drivers and bindings for Allwinner platforms

    - Qualcomm AOSS (Always-on subsystem) reset controller drivers

    - Raspberry Pi hwmon driver for voltage

    - Mediatek pwrap (pmic) support for MT6797 SoC"

    * tag 'armsoc-drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (52 commits)
    drivers/firmware: psci_checker: stash and use topology_core_cpumask for hotplug tests
    soc: fsl: cleanup Kconfig menu
    soc: fsl: dpio: Convert DPIO documentation to .rst
    staging: fsl-mc: Remove remaining files
    staging: fsl-mc: Move DPIO from staging to drivers/soc/fsl
    staging: fsl-dpaa2: eth: move generic FD defines to DPIO
    soc: fsl: qe: gpio: Add qe_gpio_set_multiple
    usb: host: exynos: Remove support for Exynos5440
    clk: samsung: Remove support for Exynos5440
    soc: sunxi: Add the A13, A23 and H3 system control compatibles
    reset: uniphier: add reset control support for SPI
    cpufreq: exynos: Remove support for Exynos5440
    ata: ahci-platform: Remove support for Exynos5440
    soc: imx6qp: Use GENPD_FLAG_ALWAYS_ON for PU errata
    soc: mediatek: pwrap: add mt6351 driver for mt6797 SoCs
    soc: mediatek: pwrap: add pwrap driver for mt6797 SoCs
    soc: mediatek: pwrap: fix cipher init setting error
    dt-bindings: pwrap: mediatek: add pwrap support for MT6797
    reset: uniphier: add USB3 core reset control
    dt-bindings: reset: uniphier: add USB3 core reset support
    ...

    Linus Torvalds
     

22 Aug, 2018

1 commit


18 Aug, 2018

1 commit


17 Aug, 2018

1 commit

  • We can have the interconnect target module control registers pretty
    much anywhere within the module range. The current code attempts an
    incomplete optimization of the ioremap size but does it wrong and
    it only works for registers at the beginning of the module.

    Let's just use the largest control register to calculate the ioremap
    size. The ioremapped range is for most part cached anyways so there
    is no need for size optimization. Let's also update the comments
    accordingly.

    Fixes: 0eecc636e5a2 ("bus: ti-sysc: Add minimal TI sysc interconnect
    target driver")
    Signed-off-by: Tony Lindgren

    Tony Lindgren
     

14 Aug, 2018

1 commit

  • In the quest to remove all stack VLA usage from the kernel[1], this
    switches to using a maximum size and adds a sanity check.

    [1] https://lkml.kernel.org/r/CA+55aFzCG-zNmZwX4A2FQpadafLfEzK6CC=qPXydAacU1RqZWA@mail.gmail.com

    Cc: Shawn Guo
    Cc: Sascha Hauer
    Cc: Pengutronix Kernel Team
    Cc: Fabio Estevam
    Cc: NXP Linux Team
    Signed-off-by: Kees Cook
    Reviewed-by: Arnd Bergmann
    Acked-by: Shawn Guo

    Kees Cook
     

26 Jul, 2018

1 commit

  • …l/git/sunxi/linux into next/drivers

    Allwinner drivers changes for 4.19

    There's been work for this release cycles in both the SRAM controller
    driver in order to support more SoCs, as part of our VPU work, but also to
    enable the EMAC on the A64 (that needs to poke at registers within the same
    register space).

    Some work has been needed too to represent the bus to the display engine
    controllers that all need an SRAM to be mapped to the CPU to be able to
    access those controllers' registers.

    * tag 'sunxi-drivers-for-4.19' of https://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux:
    soc: sunxi: Add the A13, A23 and H3 system control compatibles
    drivers: soc: sunxi: Add support for the C1 SRAM region
    dt-bindings: sram: sunxi: Populate valid sections compatibles
    dt-bindings: sram: sunxi: Add A13, A20, A23 and H3 dedicated bindings
    soc: sunxi: sram: Add dt match for the A10 system-control compatible
    dt-bindings: sram: sunxi: Introduce new A10 binding for system-control
    bus: add bus driver for accessing Allwinner A64 DE2
    dt-bindings: add binding for the Allwinner A64 DE2 bus
    soc: sunxi: sram: Add updated compatible string for A64 system control
    dt-bindings: sram: Rename A64 SRAM controller compatible
    soc: sunxi: export a regmap for EMAC clock reg on A64

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

    Olof Johansson
     

10 Jul, 2018

2 commits


02 Jul, 2018

1 commit


28 Jun, 2018

1 commit

  • The "Display Engine 2.0" (usually called DE2) on the Allwinner A64 SoC
    is different from the ones on other Allwinner SoCs. It requires a SRAM
    region to be claimed, otherwise all DE2 subblocks won't be accessible.

    Add a bus driver for the Allwinner A64 DE2 part which claims the SRAM
    region when probing.

    Signed-off-by: Icenowy Zheng
    Signed-off-by: Maxime Ripard

    Icenowy Zheng
     

13 Jun, 2018

2 commits

  • Pull more overflow updates from Kees Cook:
    "The rest of the overflow changes for v4.18-rc1.

    This includes the explicit overflow fixes from Silvio, further
    struct_size() conversions from Matthew, and a bug fix from Dan.

    But the bulk of it is the treewide conversions to use either the
    2-factor argument allocators (e.g. kmalloc(a * b, ...) into
    kmalloc_array(a, b, ...) or the array_size() macros (e.g. vmalloc(a *
    b) into vmalloc(array_size(a, b)).

    Coccinelle was fighting me on several fronts, so I've done a bunch of
    manual whitespace updates in the patches as well.

    Summary:

    - Error path bug fix for overflow tests (Dan)

    - Additional struct_size() conversions (Matthew, Kees)

    - Explicitly reported overflow fixes (Silvio, Kees)

    - Add missing kvcalloc() function (Kees)

    - Treewide conversions of allocators to use either 2-factor argument
    variant when available, or array_size() and array3_size() as needed
    (Kees)"

    * tag 'overflow-v4.18-rc1-part2' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux: (26 commits)
    treewide: Use array_size in f2fs_kvzalloc()
    treewide: Use array_size() in f2fs_kzalloc()
    treewide: Use array_size() in f2fs_kmalloc()
    treewide: Use array_size() in sock_kmalloc()
    treewide: Use array_size() in kvzalloc_node()
    treewide: Use array_size() in vzalloc_node()
    treewide: Use array_size() in vzalloc()
    treewide: Use array_size() in vmalloc()
    treewide: devm_kzalloc() -> devm_kcalloc()
    treewide: devm_kmalloc() -> devm_kmalloc_array()
    treewide: kvzalloc() -> kvcalloc()
    treewide: kvmalloc() -> kvmalloc_array()
    treewide: kzalloc_node() -> kcalloc_node()
    treewide: kzalloc() -> kcalloc()
    treewide: kmalloc() -> kmalloc_array()
    mm: Introduce kvcalloc()
    video: uvesafb: Fix integer overflow in allocation
    UBIFS: Fix potential integer overflow in allocation
    leds: Use struct_size() in allocation
    Convert intel uncore to struct_size
    ...

    Linus Torvalds
     
  • The devm_kzalloc() function has a 2-factor argument form, devm_kcalloc().
    This patch replaces cases of:

    devm_kzalloc(handle, a * b, gfp)

    with:
    devm_kcalloc(handle, a * b, gfp)

    as well as handling cases of:

    devm_kzalloc(handle, a * b * c, gfp)

    with:

    devm_kzalloc(handle, array3_size(a, b, c), gfp)

    as it's slightly less ugly than:

    devm_kcalloc(handle, array_size(a, b), c, gfp)

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

    devm_kzalloc(handle, 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.

    Some manual whitespace fixes were needed in this patch, as Coccinelle
    really liked to write "=devm_kcalloc..." instead of "= devm_kcalloc...".

    The Coccinelle script used for this was:

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

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

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

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

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

    (
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(TYPE) * (COUNT_ID)
    + COUNT_ID, sizeof(TYPE)
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(TYPE) * COUNT_ID
    + COUNT_ID, sizeof(TYPE)
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(TYPE) * (COUNT_CONST)
    + COUNT_CONST, sizeof(TYPE)
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(TYPE) * COUNT_CONST
    + COUNT_CONST, sizeof(TYPE)
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(THING) * (COUNT_ID)
    + COUNT_ID, sizeof(THING)
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(THING) * COUNT_ID
    + COUNT_ID, sizeof(THING)
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(THING) * (COUNT_CONST)
    + COUNT_CONST, sizeof(THING)
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(THING) * COUNT_CONST
    + COUNT_CONST, sizeof(THING)
    , ...)
    )

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

    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - SIZE * COUNT
    + COUNT, SIZE
    , ...)

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

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

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

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

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

    (
    devm_kzalloc(HANDLE,
    - (COUNT) * STRIDE * SIZE
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    devm_kzalloc(HANDLE,
    - COUNT * (STRIDE) * SIZE
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    devm_kzalloc(HANDLE,
    - COUNT * STRIDE * (SIZE)
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    devm_kzalloc(HANDLE,
    - (COUNT) * (STRIDE) * SIZE
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    devm_kzalloc(HANDLE,
    - COUNT * (STRIDE) * (SIZE)
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    devm_kzalloc(HANDLE,
    - (COUNT) * STRIDE * (SIZE)
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    devm_kzalloc(HANDLE,
    - (COUNT) * (STRIDE) * (SIZE)
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    devm_kzalloc(HANDLE,
    - 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 HANDLE;
    expression E1, E2, E3;
    constant C1, C2, C3;
    @@

    (
    devm_kzalloc(HANDLE, C1 * C2 * C3, ...)
    |
    devm_kzalloc(HANDLE,
    - (E1) * E2 * E3
    + array3_size(E1, E2, E3)
    , ...)
    |
    devm_kzalloc(HANDLE,
    - (E1) * (E2) * E3
    + array3_size(E1, E2, E3)
    , ...)
    |
    devm_kzalloc(HANDLE,
    - (E1) * (E2) * (E3)
    + array3_size(E1, E2, E3)
    , ...)
    |
    devm_kzalloc(HANDLE,
    - 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 HANDLE;
    expression THING, E1, E2;
    type TYPE;
    constant C1, C2, C3;
    @@

    (
    devm_kzalloc(HANDLE, sizeof(THING) * C2, ...)
    |
    devm_kzalloc(HANDLE, sizeof(TYPE) * C2, ...)
    |
    devm_kzalloc(HANDLE, C1 * C2 * C3, ...)
    |
    devm_kzalloc(HANDLE, C1 * C2, ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(TYPE) * (E2)
    + E2, sizeof(TYPE)
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(TYPE) * E2
    + E2, sizeof(TYPE)
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(THING) * (E2)
    + E2, sizeof(THING)
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - sizeof(THING) * E2
    + E2, sizeof(THING)
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - (E1) * E2
    + E1, E2
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - (E1) * (E2)
    + E1, E2
    , ...)
    |
    - devm_kzalloc
    + devm_kcalloc
    (HANDLE,
    - E1 * E2
    + E1, E2
    , ...)
    )

    Signed-off-by: Kees Cook

    Kees Cook
     

12 Jun, 2018

2 commits

  • Pull ARM SoC driver updates from Olof Johansson:
    "This contains platform-related driver updates for ARM and ARM64.

    Highlights:

    - ARM SCMI (System Control & Management Interface) driver cleanups

    - Hisilicon support for LPC bus w/ ACPI

    - Reset driver updates for several platforms: Uniphier,

    - Rockchip power domain bindings and hardware descriptions for
    several SoCs.

    - Tegra memory controller reset improvements"

    * tag 'armsoc-drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (59 commits)
    ARM: tegra: fix compile-testing PCI host driver
    soc: rockchip: power-domain: add power domain support for px30
    dt-bindings: power: add binding for px30 power domains
    dt-bindings: power: add PX30 SoCs header for power-domain
    soc: rockchip: power-domain: add power domain support for rk3228
    dt-bindings: power: add binding for rk3228 power domains
    dt-bindings: power: add RK3228 SoCs header for power-domain
    soc: rockchip: power-domain: add power domain support for rk3128
    dt-bindings: power: add binding for rk3128 power domains
    dt-bindings: power: add RK3128 SoCs header for power-domain
    soc: rockchip: power-domain: add power domain support for rk3036
    dt-bindings: power: add binding for rk3036 power domains
    dt-bindings: power: add RK3036 SoCs header for power-domain
    dt-bindings: memory: tegra: Remove Tegra114 SATA and AFI reset definitions
    memory: tegra: Remove Tegra114 SATA and AFI reset definitions
    memory: tegra: Register SMMU after MC driver became ready
    soc: mediatek: remove unneeded semicolon
    soc: mediatek: add a fixed wait for SRAM stable
    soc: mediatek: introduce a CAPS flag for scp_domain_data
    soc: mediatek: reuse regmap_read_poll_timeout helpers
    ...

    Linus Torvalds
     
  • Pull ARM SoC platform updates from Olof Johansson:
    "Here are the main updates for SoC support (besides DT additions) for
    ARM 32- and 64-bit platforms. The branch also contains defconfig
    updates to turn on drivers and options as needed on the various
    platforms.

    The largest parts of the delta are from cleanups moving platform data
    and board file setup of TI platforms to ti-sysc bus drivers. There are
    also some sweeping changes of eeprom and nand setup on Davinci, i.MX
    and other platforms.

    Samsung is removing support for Exynos5440, which was an oddball SoC
    that hasn't been seen much use in designs.

    Renesas is adding support for new SoCs (R-Car E3, RZ/G1C and RZ/N1D).

    Linus Walleij is also removing support for ux500 (Sony Ericsson)
    U8540/9540 SoCs that never made it to significant mass production and
    products"

    * tag 'armsoc-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (133 commits)
    MAINTAINERS: add NXP linux team maillist as i.MX reviewer
    ARM: stm32: Don't select DMA unconditionally on STM32MP157C
    arm64: defconfig: Enable PCIe on msm8996 and db820c
    ARM: pxa3xx: enable external wakeup pins
    ARM: pxa: stargate2: use device properties for at24 eeprom
    arm64: defconfig: Enable HISILICON_LPC
    arm64: defconfig: enable drivers for Poplar support
    arm64: defconfig: Enable UFS on msm8996
    ARM: berlin: switch to SPDX license identifier
    arm: berlin: remove non-necessary flush_cache_all()
    ARM: berlin: extend BG2CD Kconfig entry
    OMAP: CLK: CLKSRC: Add suspend resume hooks
    ARM: AM43XX: Add functions to save/restore am43xx control registers
    ASoC: ams_delta: use GPIO lookup table
    ARM: OMAP1: ams-delta: add GPIO lookup tables
    bus: ti-sysc: Fix optional clocks array access
    ARM: OMAP2+: Make sure LOGICRETSTATE bits are not cleared
    ARM: OMAP2+: prm44xx: Inroduce cpu_pm notifiers for context save/restore
    ARM: OMAP2+: prm44xx: Introduce context save/restore for am43 PRCM IO
    ARM: OMAP2+: powerdomain: Introduce cpu_pm notifiers for context save/restore
    ...

    Linus Torvalds
     

26 May, 2018

1 commit


18 May, 2018

1 commit

  • We should be checking ddata->clocks[i] instead of clock_names[i]
    for the optional clocks. Currently this just happens to work for
    the typical case of one fck and one optional clock.

    Fixes: 09dfe5810762 ("bus: ti-sysc: Add handling for clkctrl opt clocks")
    Cc: Dan Carpenter
    Reported-by: Dan Carpenter
    Signed-off-by: Tony Lindgren

    Tony Lindgren
     

15 May, 2018

1 commit


14 May, 2018

3 commits

  • Signed-off-by: Ingo Molnar

    Ingo Molnar
     
  • Mixing asm and C code is not recommended in a naked function by
    gcc and leads to an error when using clang:
    drivers/bus/arm-cci.c:2107:2: error: non-ASM statement in naked
    function is not supported
    unreachable();
    ^

    While the function is marked __naked it actually properly return
    in asm. There is no need for the unreachable() call.

    GCC 7.2 generates identical object files before and after, other
    than (for obvious reasons) the line numbers generated by
    WANT_WARN_ON_SLOWPATH for all the WARN()s appearing later in the
    file.

    Suggested-by: Russell King
    Signed-off-by: Stefan Agner
    Acked-by: Nicolas Pitre
    Reviewed-by: Robin Murphy
    Signed-off-by: Olof Johansson

    Stefan Agner
     
  • …kernel/git/tmlind/linux-omap into next/soc

    ti-sysc driver related changes for omap variants

    This series improves the ti-sysc interconnect target module driver to
    the point where a most of SoC can be booted with interconnect target
    module data configured in device tree instead of legacy platform data.
    The related device tree changes need some more work though, and can
    wait for v4.19. Also some drivers using nested interconnects like DSS
    need more work.

    We can now remove the unused pm-noop code that is not doing anything
    any longer. And we can now initialize things for PM and display pdata
    later to prepare things for using ti-sysc driver.

    We also need to add some more quirk handling so we can boot both with
    platform data and dts data.

    * tag 'omap-for-v4.18/ti-sysc-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap:
    bus: ti-sysc: Show module information for suspend if DEBUG is enabled
    bus: ti-sysc: Tag sdio and wdt with legacy mode for suspend
    bus: ti-sysc: Detect UARTs for SYSC_QUIRK_LEGACY_IDLE quirk on omap4
    bus: ti-sysc: Detect omap4 type timers for quirk
    bus: ti-sysc: Add initial support for external resets
    bus: ti-sysc: Improve suspend and resume handling
    bus: ti-sysc: Tag some modules resource providers for noirq suspend
    bus: ti-sysc: Add handling for clkctrl opt clocks
    bus: ti-sysc: Make child clock alias handling more generic
    bus: ti-sysc: Handle simple-bus for nested children
    ARM: OMAP2+: Make display related init into device_initcall
    ARM: OMAP2+: Initialize SoC PM later
    ARM: OMAP2+: Only probe SDMA via ti-sysc if configured in dts
    ARM: OMAP2+: Use signed value for sysc register offsets
    ARM: OMAP2+: Allow using ti-sysc for system timers
    ARM: OMAP2+: Drop unused pm-noop

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

    Olof Johansson
     

13 May, 2018

1 commit

  • Nobody would be insane enough to try and use level triggered
    MSIs on PCI, but let's make sure it doesn't happen. Also,
    let's mandate that the irqchip backing the platform MSI domain
    is providing the IRQCHIP_SUPPORTS_LEVEL_MSI flag.

    Signed-off-by: Marc Zyngier
    Signed-off-by: Thomas Gleixner
    Cc: Rob Herring
    Cc: Jason Cooper
    Cc: Ard Biesheuvel
    Cc: Srinivas Kandagatla
    Cc: Thomas Petazzoni
    Cc: Miquel Raynal
    Link: https://lkml.kernel.org/r/20180508121438.11301-3-marc.zyngier@arm.com

    Marc Zyngier
     

11 May, 2018

3 commits

  • On the Huawei D03 development board the system UART is
    the UART connected on the LPC bus.

    The profile for the device driver required for this HW
    is as follows:
    - platform driver
    - 16550
    - ACPI support
    - polling mode support
    - IO space support

    In principle we should use the PNP driver (8250_dw.c) for
    8250-devices with ACPI FW. However since this driver does
    not support PNP devices, and modifying the PNP core code
    to support it is not worth the effort, use the generic
    8250 isa driver.

    For this, we setup the pdev platform data for the serial
    8250 port.

    Signed-off-by: John Garry
    Reviewed-by: Andy Shevchenko
    Signed-off-by: Wei Xu

    John Garry
     
  • Since we no longer use the MFD APIs to enumerate the
    child devices on the bus, use the platform driver APIs
    directly.

    In this patch we iterate of the children devices for the
    host, and create a platform device directly per child.

    For the iterating, we match the child ACPI HID against a
    known list of supported child devices and their respective
    ACPIs HID, to find the device name and any other
    supplementary data.

    Signed-off-by: John Garry
    Reviewed-by: Andy Shevchenko
    Signed-off-by: Wei Xu

    John Garry
     
  • The MFD APIs should only be used by drivers in
    drivers/mfd. It is not worth splitting the driver to have
    separate parts in drivers/bus and drivers/mfd, so just
    drop MFD API usage.

    As a solution, we will use the platform device APIs directly
    to achieve the same as we had when using MFD APIs.

    Signed-off-by: John Garry
    Reviewed-by: Andy Shevchenko
    Signed-off-by: Wei Xu

    John Garry
     

01 May, 2018

10 commits


26 Apr, 2018

1 commit

  • For ACPI support of the HiSilicon LPC driver we depend
    on MFD_CORE config.

    Currently the HiSi LPC Kconfig entry does not define this
    dependency, so add it.

    The reason for depending on MFD_CORE in the driver is
    that we model the LPC host as an MFD, in that a platform
    device will be created for each device on the bus.

    We do this as we need to modify the resources of these
    derived platform devices, something which we should not
    do to the original devices created in the ACPI scan.
    Details in e0aa1563f894 ("HISI LPC: Add ACPI support").

    Fixes: e0aa1563f894 ("HISI LPC: Add ACPI support")
    Reported-and-tested-by: Tan Xiaojun
    Signed-off-by: John Garry
    Signed-off-by: Arnd Bergmann

    John Garry
     

07 Apr, 2018

1 commit

  • Pull PCI updates from Bjorn Helgaas:

    - move pci_uevent_ers() out of pci.h (Michael Ellerman)

    - skip ASPM common clock warning if BIOS already configured it (Sinan
    Kaya)

    - fix ASPM Coverity warning about threshold_ns (Gustavo A. R. Silva)

    - remove last user of pci_get_bus_and_slot() and the function itself
    (Sinan Kaya)

    - add decoding for 16 GT/s link speed (Jay Fang)

    - add interfaces to get max link speed and width (Tal Gilboa)

    - add pcie_bandwidth_capable() to compute max supported link bandwidth
    (Tal Gilboa)

    - add pcie_bandwidth_available() to compute bandwidth available to
    device (Tal Gilboa)

    - add pcie_print_link_status() to log link speed and whether it's
    limited (Tal Gilboa)

    - use PCI core interfaces to report when device performance may be
    limited by its slot instead of doing it in each driver (Tal Gilboa)

    - fix possible cpqphp NULL pointer dereference (Shawn Lin)

    - rescan more of the hierarchy on ACPI hotplug to fix Thunderbolt/xHCI
    hotplug (Mika Westerberg)

    - add support for PCI I/O port space that's neither directly accessible
    via CPU in/out instructions nor directly mapped into CPU physical
    memory space. This is fairly intrusive and includes minor changes to
    interfaces used for I/O space on most platforms (Zhichang Yuan, John
    Garry)

    - add support for HiSilicon Hip06/Hip07 LPC I/O space (Zhichang Yuan,
    John Garry)

    - use PCI_EXP_DEVCTL2_COMP_TIMEOUT in rapidio/tsi721 (Bjorn Helgaas)

    - remove possible NULL pointer dereference in of_pci_bus_find_domain_nr()
    (Shawn Lin)

    - report quirk timings with dev_info (Bjorn Helgaas)

    - report quirks that take longer than 10ms (Bjorn Helgaas)

    - add and use Altera Vendor ID (Johannes Thumshirn)

    - tidy Makefiles and comments (Bjorn Helgaas)

    - don't set up INTx if MSI or MSI-X is enabled to align cris, frv,
    ia64, and mn10300 with x86 (Bjorn Helgaas)

    - move pcieport_if.h to drivers/pci/pcie/ to encapsulate it (Frederick
    Lawler)

    - merge pcieport_if.h into portdrv.h (Bjorn Helgaas)

    - move workaround for BIOS PME issue from portdrv to PCI core (Bjorn
    Helgaas)

    - completely disable portdrv with "pcie_ports=compat" (Bjorn Helgaas)

    - remove portdrv link order dependency (Bjorn Helgaas)

    - remove support for unused VC portdrv service (Bjorn Helgaas)

    - simplify portdrv feature permission checking (Bjorn Helgaas)

    - remove "pcie_hp=nomsi" parameter (use "pci=nomsi" instead) (Bjorn
    Helgaas)

    - remove unnecessary "pcie_ports=auto" parameter (Bjorn Helgaas)

    - use cached AER capability offset (Frederick Lawler)

    - don't enable DPC if BIOS hasn't granted AER control (Mika Westerberg)

    - rename pcie-dpc.c to dpc.c (Bjorn Helgaas)

    - use generic pci_mmap_resource_range() instead of powerpc and xtensa
    arch-specific versions (David Woodhouse)

    - support arbitrary PCI host bridge offsets on sparc (Yinghai Lu)

    - remove System and Video ROM reservations on sparc (Bjorn Helgaas)

    - probe for device reset support during enumeration instead of runtime
    (Bjorn Helgaas)

    - add ACS quirk for Ampere (née APM) root ports (Feng Kan)

    - add function 1 DMA alias quirk for Marvell 88SE9220 (Thomas
    Vincent-Cross)

    - protect device restore with device lock (Sinan Kaya)

    - handle failure of FLR gracefully (Sinan Kaya)

    - handle CRS (config retry status) after device resets (Sinan Kaya)

    - skip various config reads for SR-IOV VFs as an optimization
    (KarimAllah Ahmed)

    - consolidate VPD code in vpd.c (Bjorn Helgaas)

    - add Tegra dependency on PCI_MSI_IRQ_DOMAIN (Arnd Bergmann)

    - add DT support for R-Car r8a7743 (Biju Das)

    - fix a PCI_EJECT vs PCI_BUS_RELATIONS race condition in Hyper-V host
    bridge driver that causes a general protection fault (Dexuan Cui)

    - fix Hyper-V host bridge hang in MSI setup on 1-vCPU VMs with SR-IOV
    (Dexuan Cui)

    - fix Hyper-V host bridge hang when ejecting a VF before setting up MSI
    (Dexuan Cui)

    - make several structures static (Fengguang Wu)

    - increase number of MSI IRQs supported by Synopsys DesignWare bridges
    from 32 to 256 (Gustavo Pimentel)

    - implemented multiplexed IRQ domain API and remove obsolete MSI IRQ
    API from DesignWare drivers (Gustavo Pimentel)

    - add Tegra power management support (Manikanta Maddireddy)

    - add Tegra loadable module support (Manikanta Maddireddy)

    - handle 64-bit BARs correctly in endpoint support (Niklas Cassel)

    - support optional regulator for HiSilicon STB (Shawn Guo)

    - use regulator bulk API for Qualcomm apq8064 (Srinivas Kandagatla)

    - support power supplies for Qualcomm msm8996 (Srinivas Kandagatla)

    * tag 'pci-v4.17-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci: (123 commits)
    MAINTAINERS: Add John Garry as maintainer for HiSilicon LPC driver
    HISI LPC: Add ACPI support
    ACPI / scan: Do not enumerate Indirect IO host children
    ACPI / scan: Rename acpi_is_serial_bus_slave() for more general use
    HISI LPC: Support the LPC host on Hip06/Hip07 with DT bindings
    of: Add missing I/O range exception for indirect-IO devices
    PCI: Apply the new generic I/O management on PCI IO hosts
    PCI: Add fwnode handler as input param of pci_register_io_range()
    PCI: Remove __weak tag from pci_register_io_range()
    MAINTAINERS: Add missing /drivers/pci/cadence directory entry
    fm10k: Report PCIe link properties with pcie_print_link_status()
    net/mlx5e: Use pcie_bandwidth_available() to compute bandwidth
    net/mlx5: Report PCIe link properties with pcie_print_link_status()
    net/mlx4_core: Report PCIe link properties with pcie_print_link_status()
    PCI: Add pcie_print_link_status() to log link speed and whether it's limited
    PCI: Add pcie_bandwidth_available() to compute bandwidth available to device
    misc: pci_endpoint_test: Handle 64-bit BARs properly
    PCI: designware-ep: Make dw_pcie_ep_reset_bar() handle 64-bit BARs properly
    PCI: endpoint: Make sure that BAR_5 does not have 64-bit flag set when clearing
    PCI: endpoint: Make epc->ops->clear_bar()/pci_epc_clear_bar() take struct *epf_bar
    ...

    Linus Torvalds
     

06 Apr, 2018

2 commits

  • Pull ARM SoC driver updates from Arnd Bergmann:
    "The main addition this time around is the new ARM "SCMI" framework,
    which is the latest in a series of standards coming from ARM to do
    power management in a platform independent way.

    This has been through many review cycles, and it relies on a rather
    interesting way of using the mailbox subsystem, but in the end I
    agreed that Sudeep's version was the best we could do after all.

    Other changes include:

    - the ARM CCN driver is moved out of drivers/bus into drivers/perf,
    which makes more sense. Similarly, the performance monitoring
    portion of the CCI driver are moved the same way and cleaned up a
    little more.

    - a series of updates to the SCPI framework

    - support for the Mediatek mt7623a SoC in drivers/soc

    - support for additional NVIDIA Tegra hardware in drivers/soc

    - a new reset driver for Socionext Uniphier

    - lesser bug fixes in drivers/soc, drivers/tee, drivers/memory, and
    drivers/firmware and drivers/reset across platforms"

    * tag 'armsoc-drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (87 commits)
    reset: uniphier: add ethernet reset control support for PXs3
    reset: stm32mp1: Enable stm32mp1 reset driver
    dt-bindings: reset: add STM32MP1 resets
    reset: uniphier: add Pro4/Pro5/PXs2 audio systems reset control
    reset: imx7: add 'depends on HAS_IOMEM' to fix unmet dependency
    reset: modify the way reset lookup works for board files
    reset: add support for non-DT systems
    clk: scmi: use devm_of_clk_add_hw_provider() API and drop scmi_clocks_remove
    firmware: arm_scmi: prevent accessing rate_discrete uninitialized
    hwmon: (scmi) return -EINVAL when sensor information is unavailable
    amlogic: meson-gx-socinfo: Update soc ids
    soc/tegra: pmc: Use the new reset APIs to manage reset controllers
    soc: mediatek: update power domain data of MT2712
    dt-bindings: soc: update MT2712 power dt-bindings
    cpufreq: scmi: add thermal dependency
    soc: mediatek: fix the mistaken pointer accessed when subdomains are added
    soc: mediatek: add SCPSYS power domain driver for MediaTek MT7623A SoC
    soc: mediatek: avoid hardcoded value with bus_prot_mask
    dt-bindings: soc: add header files required for MT7623A SCPSYS dt-binding
    dt-bindings: soc: add SCPSYS binding for MT7623 and MT7623A SoC
    ...

    Linus Torvalds
     
  • Pull ARM SoC platform updates from Arnd Bergmann:
    "This release brings up a new platform based on the old ARM9 core: the
    Nuvoton NPCM is used as a baseboard management controller, competing
    with the better known ASpeed AST2xx series.

    Another important change is the addition of ARMv7-A based chips in
    mach-stm32. The older parts in this platform are ARMv7-M based
    microcontrollers, now they are expanding to general-purpose workloads.

    The other changes are the usual defconfig updates to enable additional
    drivers, lesser bugfixes. The largest updates as often are the ongoing
    OMAP cleanups, but we also have a number of changes for the older PXA
    and davinci platforms this time.

    For the Renesas shmobile/r-car platform, some new infrastructure is
    needed to make the watchdog work correctly.

    Supporting Multiprocessing on Allwinner A80 required a significant
    amount of new code, but is not doing anything unexpected"

    * tag 'armsoc-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (179 commits)
    arm: npcm: modify configuration for the NPCM7xx BMC.
    MAINTAINERS: update entry for ARM/berlin
    ARM: omap2: fix am43xx build without L2X0
    ARM: davinci: da8xx: simplify CFGCHIP regmap_config
    ARM: davinci: da8xx: fix oops in USB PHY driver due to stack allocated platform_data
    ARM: multi_v7_defconfig: add NXP FlexCAN IP support
    ARM: multi_v7_defconfig: enable thermal driver for i.MX devices
    ARM: multi_v7_defconfig: add RN5T618 PMIC family support
    ARM: multi_v7_defconfig: add NXP graphics drivers
    ARM: multi_v7_defconfig: add GPMI NAND controller support
    ARM: multi_v7_defconfig: add OCOTP driver for NXP SoCs
    ARM: multi_v7_defconfig: configure I2C driver built-in
    arm64: defconfig: add CONFIG_UNIPHIER_THERMAL and CONFIG_SNI_AVE
    ARM: imx: fix imx6sll-only build
    ARM: imx: select ARM_CPU_SUSPEND for CPU_IDLE as well
    ARM: mxs_defconfig: Re-sync defconfig
    ARM: imx_v4_v5_defconfig: Use the generic fsl-asoc-card driver
    ARM: imx_v4_v5_defconfig: Re-sync defconfig
    arm64: defconfig: enable stmmac ethernet to defconfig
    ARM: EXYNOS: Simplify code in coupled CPU idle hot path
    ...

    Linus Torvalds
     

05 Apr, 2018

1 commit

  • Pull staging/IIO updates from Greg KH:
    "Here is the big set of Staging/IIO driver patches for 4.17-rc1.

    It is a lot, over 500 changes, but not huge by previous kernel release
    standards. We deleted more lines than we added again (27k added vs.
    91k remvoed), thanks to finally being able to delete the IRDA drivers
    and networking code.

    We also deleted the ccree crypto driver, but that's coming back in
    through the crypto tree to you, in a much cleaned-up form.

    Added this round is at lot of "mt7621" device support, which is for an
    embedded device that Neil Brown cares about, and of course a handful
    of new IIO drivers as well.

    And finally, the fsl-mc core code moved out of the staging tree to the
    "real" part of the kernel, which is nice to see happen as well.

    Full details are in the shortlog, which has all of the tiny cleanup
    patches described.

    All of these have been in linux-next for a while with no reported
    issues"

    * tag 'staging-4.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging: (579 commits)
    staging: rtl8723bs: Remove yield call, replace with cond_resched()
    staging: rtl8723bs: Replace yield() call with cond_resched()
    staging: rtl8723bs: Remove unecessary newlines from 'odm.h'.
    staging: rtl8723bs: Rework 'struct _ODM_Phy_Status_Info_' coding style.
    staging: rtl8723bs: Rework 'struct _ODM_Per_Pkt_Info_' coding style.
    staging: rtl8723bs: Replace NULL pointer comparison with '!'.
    staging: rtl8723bs: Factor out rtl8723bs_recv_tasklet() sections.
    staging: rtl8723bs: Fix function signature that goes over 80 characters.
    staging: rtl8723bs: Fix lines too long in update_recvframe_attrib().
    staging: rtl8723bs: Remove unnecessary blank lines in 'rtl8723bs_recv.c'.
    staging: rtl8723bs: Change camel case to snake case in 'rtl8723bs_recv.c'.
    staging: rtl8723bs: Add missing braces in else statement.
    staging: rtl8723bs: Add spaces around ternary operators.
    staging: rtl8723bs: Fix lines with trailing open parentheses.
    staging: rtl8723bs: Remove unnecessary length #define's.
    staging: rtl8723bs: Fix IEEE80211 authentication algorithm constants.
    staging: rtl8723bs: Fix alignment in rtw_wx_set_auth().
    staging: rtl8723bs: Remove braces from single statement conditionals.
    staging: rtl8723bs: Remove unecessary braces from switch statement.
    staging: rtl8723bs: Fix newlines in rtw_wx_set_auth().
    ...

    Linus Torvalds