09 Sep, 2015

1 commit

  • Pull iommu updates for from Joerg Roedel:
    "This time the IOMMU updates are mostly cleanups or fixes. No big new
    features or drivers this time. In particular the changes include:

    - Bigger cleanup of the DomainIOMMU data structures and the code
    that manages them in the Intel VT-d driver. This makes the code
    easier to understand and maintain, and also easier to keep the data
    structures in sync. It is also a preparation step to make use of
    default domains from the IOMMU core in the Intel VT-d driver.

    - Fixes for a couple of DMA-API misuses in ARM IOMMU drivers, namely
    in the ARM and Tegra SMMU drivers.

    - Fix for a potential buffer overflow in the OMAP iommu driver's
    debug code

    - A couple of smaller fixes and cleanups in various drivers

    - One small new feature: Report domain-id usage in the Intel VT-d
    driver to easier detect bugs where these are leaked"

    * tag 'iommu-updates-v4.3' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu: (83 commits)
    iommu/vt-d: Really use upper context table when necessary
    x86/vt-d: Fix documentation of DRHD
    iommu/fsl: Really fix init section(s) content
    iommu/io-pgtable-arm: Unmap and free table when overwriting with block
    iommu/io-pgtable-arm: Move init-fn declarations to io-pgtable.h
    iommu/msm: Use BUG_ON instead of if () BUG()
    iommu/vt-d: Access iomem correctly
    iommu/vt-d: Make two functions static
    iommu/vt-d: Use BUG_ON instead of if () BUG()
    iommu/vt-d: Return false instead of 0 in irq_remapping_cap()
    iommu/amd: Use BUG_ON instead of if () BUG()
    iommu/amd: Make a symbol static
    iommu/amd: Simplify allocation in irq_remapping_alloc()
    iommu/tegra-smmu: Parameterize number of TLB lines
    iommu/tegra-smmu: Factor out tegra_smmu_set_pde()
    iommu/tegra-smmu: Extract tegra_smmu_pte_get_use()
    iommu/tegra-smmu: Use __GFP_ZERO to allocate zeroed pages
    iommu/tegra-smmu: Remove PageReserved manipulation
    iommu/tegra-smmu: Convert to use DMA API
    iommu/tegra-smmu: smmu_flush_ptc() wants device addresses
    ...

    Linus Torvalds
     

21 Aug, 2015

1 commit

  • …t/tegra/linux into next/drivers

    ARM: tegra: Memory controller updates for v4.3-rc1

    Adds support for Tegra210, which allows the SMMU to be used on this new
    SoC generation.

    * tag 'tegra-for-4.3-memory' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux:
    memory: tegra: Add Tegra210 support
    memory: tegra: Add support for a variable-size client ID bitfield
    memory: tegra: Expose supported rates via debugfs

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

    Olof Johansson
     

13 Aug, 2015

3 commits

  • The number of TLB lines was increased from 16 on Tegra30 to 32 on
    Tegra114 and later. Parameterize the value so that the initial default
    can be set accordingly.

    On Tegra30, initializing the value to 32 would effectively disable the
    TLB and hence cause massive latencies for memory accesses translated
    through the SMMU. This is especially noticeable for isochronuous clients
    such as display, whose FIFOs would continuously underrun.

    Fixes: 891846516317 ("memory: Add NVIDIA Tegra memory controller support")
    Signed-off-by: Thierry Reding

    Thierry Reding
     
  • Recent versions of the Tegra MC hardware extend the size of the client
    ID bitfield in the MC_ERR_STATUS register by one bit. While one could
    simply extend the bitfield for older hardware, that would allow data
    from reserved bits into the driver code, which is generally a bad idea
    on principle. So this patch instead passes in the client ID mask from
    from the per-SoC MC data.

    There's no MC support for T210 (yet), but when that support winds up
    in the kernel, the appropriate soc->client_id_mask value for that chip
    will be 0xff.

    Based on an original patch by David Ung .

    Signed-off-by: Paul Walmsley
    Cc: Paul Walmsley
    Cc: Thierry Reding
    Cc: David Ung
    Signed-off-by: Thierry Reding

    Paul Walmsley
     
  • Drivers should not be using __cpuc_* functions nor outer_cache_flush()
    directly. This change partly cleans up tegra-smmu.c.

    The only difference between cache handling of the tegra variants is
    Denver, which omits the call to outer_cache_flush(). This is due to
    Denver being an ARM64 CPU, and the ARM64 architecture does not provide
    this function. (This, in itself, is a good reason why these should not
    be used.)

    Signed-off-by: Russell King
    [treding@nvidia.com: fix build failure on 64-bit ARM]
    Signed-off-by: Thierry Reding

    Russell King
     

16 Jul, 2015

3 commits


27 Jun, 2015

3 commits

  • Pull ARM updates from Russell King:
    "Bigger items included in this update are:

    - A series of updates from Arnd for ARM randconfig build failures
    - Updates from Dmitry for StrongARM SA-1100 to move IRQ handling to
    drivers/irqchip/
    - Move ARMs SP804 timer to drivers/clocksource/
    - Perf updates from Mark Rutland in preparation to move the ARM perf
    code into drivers/ so it can be shared with ARM64.
    - MCPM updates from Nicolas
    - Add support for taking platform serial number from DT
    - Re-implement Keystone2 physical address space switch to conform to
    architecture requirements
    - Clean up ARMv7 LPAE code, which goes in hand with the Keystone2
    changes.
    - L2C cleanups to avoid unlocking caches if we're prevented by the
    secure support to unlock.
    - Avoid cleaning a potentially dirty cache containing stale data on
    CPU initialisation
    - Add ARM-only entry point for secondary startup (for machines that
    can only call into a Thumb kernel in ARM mode). Same thing is also
    done for the resume entry point.
    - Provide arch_irqs_disabled via asm-generic
    - Enlarge ARMv7M vector table
    - Always use BFD linker for VDSO, as gold doesn't accept some of the
    options we need.
    - Fix an incorrect BSYM (for Thumb symbols) usage, and convert all
    BSYM compiler macros to a "badr" (for branch address).
    - Shut up compiler warnings provoked by our cmpxchg() implementation.
    - Ensure bad xchg sizes fail to link"

    * 'for-linus' of git://ftp.arm.linux.org.uk/~rmk/linux-arm: (75 commits)
    ARM: Fix build if CLKDEV_LOOKUP is not configured
    ARM: fix new BSYM() usage introduced via for-arm-soc branch
    ARM: 8383/1: nommu: avoid deprecated source register on mov
    ARM: 8391/1: l2c: add options to overwrite prefetching behavior
    ARM: 8390/1: irqflags: Get arch_irqs_disabled from asm-generic
    ARM: 8387/1: arm/mm/dma-mapping.c: Add arm_coherent_dma_mmap
    ARM: 8388/1: tcm: Don't crash when TCM banks are protected by TrustZone
    ARM: 8384/1: VDSO: force use of BFD linker
    ARM: 8385/1: VDSO: group link options
    ARM: cmpxchg: avoid warnings from macro-ized cmpxchg() implementations
    ARM: remove __bad_xchg definition
    ARM: 8369/1: ARMv7M: define size of vector table for Vybrid
    ARM: 8382/1: clocksource: make ARM_TIMER_SP804 depend on GENERIC_SCHED_CLOCK
    ARM: 8366/1: move Dual-Timer SP804 driver to drivers/clocksource
    ARM: 8365/1: introduce sp804_timer_disable and remove arm_timer.h inclusion
    ARM: 8364/1: fix BE32 module loading
    ARM: 8360/1: add secondary_startup_arm prototype in header file
    ARM: 8359/1: correct secondary_startup_arm mode
    ARM: proc-v7: sanitise and document registers around errata
    ARM: proc-v7: clean up MIDR access
    ...

    Linus Torvalds
     
  • Pull ARM SoC driver updates from Kevin Hilman:
    "Some of these are for drivers/soc, where we're now putting
    SoC-specific drivers these days. Some are for other driver subsystems
    where we have received acks from the appropriate maintainers.

    Some highlights:

    - simple-mfd: document DT bindings and misc updates
    - migrate mach-berlin to simple-mfd for clock, pinctrl and reset
    - memory: support for Tegra132 SoC
    - memory: introduce tegra EMC driver for scaling memory frequency
    - misc. updates for ARM CCI and CCN busses"

    * tag 'armsoc-drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (48 commits)
    drivers: soc: sunxi: Introduce SoC driver to map SRAMs
    arm-cci: Add aliases for PMU events
    arm-cci: Add CCI-500 PMU support
    arm-cci: Sanitise CCI400 PMU driver specific code
    arm-cci: Abstract handling for CCI events
    arm-cci: Abstract out the PMU counter details
    arm-cci: Cleanup PMU driver code
    arm-cci: Do not enable CCI-400 PMU by default
    firmware: qcom: scm: Add HDCP Support
    ARM: berlin: add an ADC node for the BG2Q
    ARM: berlin: remove useless chip and system ctrl compatibles
    clk: berlin: drop direct of_iomap of nodes reg property
    ARM: berlin: move BG2Q clock node
    ARM: berlin: move BG2CD clock node
    ARM: berlin: move BG2 clock node
    clk: berlin: prepare simple-mfd conversion
    pinctrl: berlin: drop SoC stub provided regmap
    ARM: berlin: move pinctrl to simple-mfd nodes
    pinctrl: berlin: prepare to use regmap provided by syscon
    reset: berlin: drop arch_initcall initialization
    ...

    Linus Torvalds
     
  • Pull ARM SoC platform support updates from Kevin Hilman:
    "Our SoC branch usually contains expanded support for new SoCs and
    other core platform code. Some highlights from this round:

    - sunxi: SMP support for A23 SoC
    - socpga: big-endian support
    - pxa: conversion to common clock framework
    - bcm: SMP support for BCM63138
    - imx: support new I.MX7D SoC
    - zte: basic support for ZX296702 SoC"

    * tag 'armsoc-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (134 commits)
    ARM: zx: Add basic defconfig support for ZX296702
    ARM: dts: zx: add an initial zx296702 dts and doc
    clk: zx: add clock support to zx296702
    dt-bindings: Add #defines for ZTE ZX296702 clocks
    ARM: socfpga: fix build error due to secondary_startup
    MAINTAINERS: ARM64: EXYNOS: Extend entry for ARM64 DTS
    ARM: ep93xx: simone: support for SPI-based MMC/SD cards
    MAINTAINERS: update Shawn's email to use kernel.org one
    ARM: socfpga: support suspend to ram
    ARM: socfpga: add CPU_METHOD_OF_DECLARE for Arria 10
    ARM: socfpga: use CPU_METHOD_OF_DECLARE for socfpga_cyclone5
    ARM: EXYNOS: register power domain driver from core_initcall
    ARM: EXYNOS: use PS_HOLD based poweroff for all supported SoCs
    ARM: SAMSUNG: Constify platform_device_id
    ARM: EXYNOS: Constify irq_domain_ops
    ARM: EXYNOS: add coupled cpuidle support for Exynos3250
    ARM: EXYNOS: add exynos_get_boot_addr() helper
    ARM: EXYNOS: add exynos_set_boot_addr() helper
    ARM: EXYNOS: make exynos_core_restart() less verbose
    ARM: EXYNOS: fix exynos_boot_secondary() return value on timeout
    ...

    Linus Torvalds
     

11 Jun, 2015

1 commit

  • …o/linux into next/soc

    The i.MX SoC updates for 4.2:
    - Add new SoC i.MX7D support, which integrates two Cortex-A7 and one
    Cortex-M4 cores.
    - Support suspend from IRAM on i.MX53, so that DDR pins can be set to
    high impedance for more power saving during suspend.
    - Move i.MX clock drivers from arch/arm/mach-imx to drivers/clk/imx.
    - Move i.MX GPT timer driver from arch/arm/mach-imx into
    drivers/clocksource.
    - A couple of clock driver update for VF610 and i.MX6Q.
    - A few random code correction and improvement.

    * tag 'imx-soc-4.2' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux: (44 commits)
    ARM: imx: imx7d requires anatop
    clocksource: timer-imx-gpt: remove include of <asm/mach/time.h>
    ARM: imx: move timer driver into drivers/clocksource
    ARM: imx: remove platform headers from timer driver
    ARM: imx: provide gpt device specific irq functions
    ARM: imx: get rid of variable timer_base
    ARM: imx: define gpt register offset per device type
    ARM: imx: move clock event variables into imx_timer
    ARM: imx: set up .set_next_event hook via imx_gpt_data
    ARM: imx: setup tctl register in device specific function
    ARM: imx: initialize gpt device type for DT boot
    ARM: imx: define an enum for gpt timer device type
    ARM: imx: move timer resources into a structure
    ARM: imx: use relaxed IO accessor in timer driver
    ARM: imx: make imx51/3 suspend optional
    ARM: clk-imx6q: refine sata's parent
    ARM: imx: clk-v610: Add clock for I2C2 and I2C3
    ARM: mach-imx: iomux-imx31: Use DECLARE_BITMAP
    ARM: imx: add imx7d clk tree support
    ARM: clk: imx: update pllv3 to support imx7
    ...

    Conflicts:
    arch/arm/mach-imx/Kconfig

    Kevin Hilman
     

03 Jun, 2015

2 commits


20 May, 2015

1 commit


19 May, 2015

1 commit


13 May, 2015

2 commits

  • …egra/linux into next/drivers

    Merge "ARM: tegra: Add EMC driver for v4.2-rc1" from Thierry Reding:

    This introduces the EMC driver that's required to scale the external
    memory frequency.

    * tag 'tegra-for-4.2-emc' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux:
    memory: tegra: Add EMC frequency debugfs entry
    memory: tegra: Add EMC (external memory controller) driver
    memory: tegra: Add API needed by the EMC driver
    of: Add Tegra124 EMC bindings
    of: Document timings subnode of nvidia,tegra-mc

    Arnd Bergmann
     
  • …it/tegra/linux into next/drivers

    Merge "ARM: tegra: RAM code access for v4.2-rc1" from Thierry Reding:

    The RAM code is used by the memory and external memory controllers to
    determine which set of timings to use for memory frequency scaling.

    * tag 'tegra-for-4.2-ramcode' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux:
    soc/tegra: fuse: Add RAM code reader helper
    of: Document long-ram-code property in nvidia,tegra20-apbmisc

    Arnd Bergmann
     

05 May, 2015

2 commits


04 May, 2015

4 commits

  • The pmc driver was previously exporting tegra_pmc_restart, which was
    assigned to machine_desc.init_machine, taking precedence over the
    restart handlers registered through register_restart_handler().

    Signed-off-by: David Riley
    [tomeu.vizoso@collabora.com: Rebased]
    Signed-off-by: Tomeu Vizoso
    Acked-by: Stephen Warren
    Reviewed-by: Alexandre Courbot
    [treding@nvidia.com: minor cleanups]
    Signed-off-by: Thierry Reding

    David Riley
     
  • Needed for the EMC and MC drivers to know what timings from the DT to
    use.

    Signed-off-by: Mikko Perttunen
    Signed-off-by: Tomeu Vizoso
    Signed-off-by: Thierry Reding

    Mikko Perttunen
     
  • Provide clients and swgroups files in debugfs. These files show for
    which clients IOMMU translation is enabled and which ASID is associated
    with each SWGROUP.

    Cc: Hiroshi Doyu
    Acked-by: Joerg Roedel
    Signed-off-by: Thierry Reding

    Thierry Reding
     
  • Subsequent patches will add debugfs files that print the status of the
    SWGROUPs. Add a new names field and complement the SoC tables with the
    names of the individual SWGROUPs.

    Signed-off-by: Thierry Reding

    Thierry Reding
     

04 Mar, 2015

1 commit

  • The DDRSDR controller fails miserably to put LPDDR1 memories in
    self-refresh. Force the controller to think it has DDR2 memories
    during the self-refresh period, as the DDR2 self-refresh spec is
    equivalent to LPDDR1, and is correctly implemented in the
    controller.

    Assume that the second controller has the same fault, but that is
    untested.

    Signed-off-by: Peter Rosin
    Acked-by: Nicolas Ferre
    Signed-off-by: Nicolas Ferre

    Peter Rosin
     

09 Jan, 2015

2 commits

  • Add the chip ID for the NVIDIA Tegra132 SoC family.

    Signed-off-by: Thierry Reding

    Thierry Reding
     
  • Tegra SoCs with 64-bit ARM support don't currently support deep CPU
    low-power states in mainline Linux. When this support is added in the
    future, it will probably look rather different from the existing
    32-bit ARM support, since the ARM64 maintainers' strong preference is
    to use PSCI to implement it.

    So, for the time being, prevent the CPU suspend-related code and data
    in the Tegra PMC driver from compiling on ARM64.

    Signed-off-by: Paul Walmsley
    Signed-off-by: Paul Walmsley
    Cc: Thierry Reding
    Cc: Allen Martin
    Cc: Stephen Warren
    Cc: Alexandre Courbot
    Signed-off-by: Thierry Reding

    Paul Walmsley
     

09 Dec, 2014

1 commit

  • The at91 cleanups changed a lot of files, this merges in the
    latest cleanups to resolve the conflicts

    Conflicts:
    arch/arm/mach-at91/at91sam9260.c
    arch/arm/mach-at91/at91sam9261.c
    arch/arm/mach-at91/at91sam9263.c
    arch/arm/mach-at91/clock.c
    arch/arm/mach-at91/clock.h
    drivers/rtc/Kconfig

    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     

04 Dec, 2014

1 commit

  • The memory controller on NVIDIA Tegra exposes various knobs that can be
    used to tune the behaviour of the clients attached to it.

    Currently this driver sets up the latency allowance registers to the HW
    defaults. Eventually an API should be exported by this driver (via a
    custom API or a generic subsystem) to allow clients to register latency
    requirements.

    This driver also registers an IOMMU (SMMU) that's implemented by the
    memory controller. It is supported on Tegra30, Tegra114 and Tegra124
    currently. Tegra20 has a GART instead.

    The Tegra SMMU operates on memory clients and SWGROUPs. A memory client
    is a unidirectional, special-purpose DMA master. A SWGROUP represents a
    set of memory clients that form a logical functional unit corresponding
    to a single device. Typically a device has two clients: one client for
    read transactions and one client for write transactions, but there are
    also devices that have only read clients, but many of them (such as the
    display controllers).

    Because there is no 1:1 relationship between memory clients and devices
    the driver keeps a table of memory clients and the SWGROUPs that they
    belong to per SoC. Note that this is an exception and due to the fact
    that the SMMU is tightly integrated with the rest of the Tegra SoC. The
    use of these tables is discouraged in drivers for generic IOMMU devices
    such as the ARM SMMU because the same IOMMU could be used in any number
    of SoCs and keeping such tables for each SoC would not scale.

    Acked-by: Joerg Roedel
    Signed-off-by: Thierry Reding

    Thierry Reding
     

13 Nov, 2014

1 commit


17 Jul, 2014

9 commits

  • This commit converts the PMC support code to a platform driver. Because
    the boot process needs to call into this driver very early, also set up
    a minimal environment via an early initcall.

    Signed-off-by: Thierry Reding

    Thierry Reding
     
  • Rather than rely on explicit initialization order called from SoC setup
    code, use a plain initcall and rely on initcall ordering to take care of
    dependencies.

    This driver exposes some functionality (querying the chip ID) needed at
    very early stages of the boot process. An early initcall is good enough
    provided that some of the dependencies are deferred to later stages. To
    make sure any abuses are easily caught, output a warning message if the
    chip ID is queried while it can't be read yet.

    Signed-off-by: Thierry Reding

    Thierry Reding
     
  • Subsequent patches will move some of the initialization code from SoC
    setup code to regular initcalls. To prevent breakage on other SoCs in
    multi-platform builds, these initcalls need to check that they indeed
    run on Tegra.

    Signed-off-by: Thierry Reding

    Thierry Reding
     
  • The Tegra20 fuse driver is the only user of tegra_apb_readl_using_dma().
    Therefore we can simply the code by incorporating the APB DMA handling into
    the driver directly. tegra_apb_writel_using_dma() is dropped because there
    are no users.

    Signed-off-by: Peter De Schrijver
    Signed-off-by: Stephen Warren
    Signed-off-by: Thierry Reding

    Peter De Schrijver
     
  • Implement fuse driver for Tegra20, Tegra30, Tegra114 and Tegra124. This
    replaces functionality previously provided in arch/arm/mach-tegra, which
    is removed in this patch.

    While at it, move the only user of the global tegra_revision variable
    over to tegra_sku_info.revision and export tegra_fuse_readl() to allow
    drivers to read calibration fuses.

    Signed-off-by: Peter De Schrijver
    Signed-off-by: Stephen Warren
    Signed-off-by: Thierry Reding

    Peter De Schrijver
     
  • All fuse related functionality will move to a driver in the following
    patches. To prepare for this, export all the required functionality in a
    global header file and move all users of fuse.h to soc/tegra/fuse.h.

    While we're at it, remove tegra_bct_strapping, as its only user was
    removed in Commit a7cbe92cef27 ("ARM: tegra: remove tegra EMC scaling
    driver").

    Signed-off-by: Peter De Schrijver
    Signed-off-by: Stephen Warren
    Signed-off-by: Thierry Reding

    Peter De Schrijver
     
  • Export APB DMA readl and writel. These are needed because we can't
    access the fuses directly on Tegra20 without potentially causing a
    system hang. Also have the APB DMA readl and writel return an error in
    case of a read failure instead of just returning zero or ignore write
    failures.

    Signed-off-by: Peter De Schrijver
    Signed-off-by: Stephen Warren
    Signed-off-by: Thierry Reding

    Peter De Schrijver
     
  • Instead of using a simple variable access to get at the Tegra chip ID,
    use a function so that we can run additional code. This can be used to
    determine where the chip ID is being accessed without being available.
    That in turn will be handy for resolving boot sequence dependencies in
    order to convert more code to regular initcalls rather than a sequence
    fixed by Tegra SoC setup code.

    Signed-off-by: Thierry Reding

    Thierry Reding
     
  • In order to not clutter the include/linux directory with SoC specific
    headers, move the Tegra-specific headers out into a separate directory.

    Signed-off-by: Thierry Reding

    Thierry Reding