28 Jan, 2015

2 commits

  • commit c4cf0935a2d8fe6d186bf4253ea3c4b4a8a8a710 upstream.

    Correct returning IRQ_HANDLED unconditionally in the irq handler.
    Return IRQ_NONE for some interrupt which we do not expect to be
    handled in this handler. This prevents kernel stalling with back
    to back spurious interrupts.

    Fixes: 2722e56de6 ("OMAP4: l3: Introduce l3-interconnect error handling driver")
    Acked-by: Nishanth Menon
    Signed-off-by: Keerthy
    Signed-off-by: Tony Lindgren
    Signed-off-by: Greg Kroah-Hartman

    Keerthy
     
  • commit 61b43d4e919e8fa5e10c77ee32ba328da07e0264 upstream.

    On certain SoCs such as AM437x SoC, L3_noc error registers are
    maintained in power domain such as per domain which looses context as part
    of low power state such as RTC+DDR mode. On these platforms when we
    mask interrupts which we cannot handle, the source of these interrupts
    still remain on resume, however, the flag mux registers now contain
    their reset value (unmasked) - this breaks the system with infinite
    interrupts since we do not these interrupts to take place ever again.

    To handle this: restore the masking of interrupts which we have
    already recorded in the system as ones we cannot handle.

    Fixes: 2100b595b7 ("bus: omap_l3_noc: ignore masked out unclearable targets")
    Acked-by: Nishanth Menon
    Signed-off-by: Keerthy
    Signed-off-by: Tony Lindgren
    Signed-off-by: Greg Kroah-Hartman

    Keerthy
     

09 Oct, 2014

2 commits

  • Pull ARM SoC driver updates from Arnd Bergmann:
    "These are changes for drivers that are intimately tied to some SoC and
    for some reason could not get merged through the respective subsystem
    maintainer tree.

    Most of the new code is for the Keystone Navigator driver, which is
    new base support that is going to be needed for their hardware
    accelerated network driver and other units.

    Most of the commits are for moving old code around from at91 and omap
    for things that are done in device drivers nowadays.

    - at91: move reset, poweroff, memory and clocksource code into
    drivers directories
    - socfpga: add edac driver (through arm-soc, as requested by Boris)
    - omap: move omap-intc code to drivers/irqchip
    - sunxi: added an RTC driver for sun6i
    - omap: mailbox driver related changes
    - keystone: support for the "Navigator" component
    - versatile: new reboot, led and soc drivers"

    * tag 'drivers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (92 commits)
    bus: arm-ccn: Fix spurious warning message
    leds: add device tree bindings for register bit LEDs
    soc: add driver for the ARM RealView
    power: reset: driver for the Versatile syscon reboot
    leds: add a driver for syscon-based LEDs
    drivers/soc: ti: fix build break with modules
    MAINTAINERS: Add Keystone Multicore Navigator drivers entry
    soc: ti: add Keystone Navigator DMA support
    Documentation: dt: soc: add Keystone Navigator DMA bindings
    soc: ti: add Keystone Navigator QMSS driver
    Documentation: dt: soc: add Keystone Navigator QMSS bindings
    rtc: sunxi: Depend on platforms sun4i/sun7i that actually have the rtc
    rtc: sun6i: Add sun6i RTC driver
    irqchip: omap-intc: remove unnecessary comments
    irqchip: omap-intc: correct maximum number or MIR registers
    irqchip: omap-intc: enable TURBO idle mode
    irqchip: omap-intc: enable IP protection
    irqchip: omap-intc: remove unnecesary of_address_to_resource() call
    irqchip: omap-intc: comment style cleanup
    irqchip: omap-intc: minor improvement to omap_irq_pending()
    ...

    Linus Torvalds
     
  • Because CCN's cycle counter always runs, it will generate
    an interrupt on overflow even if the relevant perf event
    was not requested, causing a spurious warning message.

    Fixed now by warning on only normal counter unwanted
    overflows. Also cleaning the overflow mask at init now,
    not to warn on event previously requested by firmware.

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

    Pawel Moll
     

12 Sep, 2014

1 commit

  • Commit d4d8819e205854c ("bus: omap_l3_noc: fix masterid detection")
    did the right thing in dropping the LSB 2 bits which is not part
    of the ConnID for NTTP master address. However, as part of that
    change, we should also have ensured that existing list of OMAP4 connID
    codes are also shifted by 2 bits to ensure that connIDs map to "Table
    13-18. ConnID Values" as provided in Technical Reference Manuals for
    OMAP4430(Rev AP, April 2014, SWPU220AP) and OMAP4460(Rev AB, April
    2014, SWPU234AB)

    Fixes: d4d8819e205854c ("bus: omap_l3_noc: fix masterid detection")
    Reported-by: Kristian Otnes
    Signed-off-by: Nishanth Menon
    Signed-off-by: Tony Lindgren

    Nishanth Menon
     

06 Sep, 2014

1 commit

  • The function cleaning up an initialized event
    was called from the "event_del" handler, instead
    of being used as the "destroy" callback. In case of
    events group allocation this caused NULL pointer
    dereference (as events are added and deleted
    multiple times then). Fixed now.

    Signed-off-by: Pawel Moll
    Signed-off-by: Kevin Hilman

    Pawel Moll
     

25 Aug, 2014

1 commit


09 Aug, 2014

3 commits

  • Pull ARM SoC driver changes from Olof Johansson:
    "A handful of driver-related changes. We've had a bunch of them going
    in through other branches as well, so it's only a part of what we
    really have this release.

    Larger pieces are:

    - Removal of a now unused PWM driver for atmel
    [ This includes AVR32 changes that have been appropriately acked ]
    - Performance counter support for the arm CCN interconnect
    - OMAP mailbox driver cleanups and consolidation
    - PCI and SATA PHY drivers for SPEAr 13xx platforms
    - Redefinition (with backwards compatibility!) of PCI DT bindings for
    Tegra to better model regulators/power"

    Note: this merge also fixes up the semantic conflict with the new
    calling convention for devm_phy_create(), see commit f0ed817638b5 ("phy:
    core: Let node ptr of PHY point to PHY and not of PHY provider") that
    came in through Greg's USB tree.

    Semantic merge patch by Stephen Rothwell through
    the next tree.

    * tag 'drivers-for-3.17' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (38 commits)
    bus: arm-ccn: Fix error handling at event allocation
    mailbox/omap: add a parent structure for every IP instance
    mailbox/omap: remove the private mailbox structure
    mailbox/omap: consolidate OMAP mailbox driver
    mailbox/omap: simplify the fifo assignment by using macros
    mailbox/omap: remove omap_mbox_type_t from mailbox ops
    mailbox/omap: remove OMAP1 mailbox driver
    mailbox/omap: use devm_* interfaces
    bus: ARM CCN: add PERF_EVENTS dependency
    bus: ARM CCN PMU driver
    PCI: spear: Remove spear13xx_pcie_remove()
    PCI: spear: Fix Section mismatch compilation warning for probe()
    ARM: tegra: Remove legacy PCIe power supply properties
    PCI: tegra: Remove deprecated power supply properties
    PCI: tegra: Implement accurate power supply scheme
    ARM: SPEAr13xx: Update defconfigs
    ARM: SPEAr13xx: Add pcie and miphy DT nodes
    ARM: SPEAr13xx: Add bindings and dt node for misc block
    ARM: SPEAr13xx: Fix static mapping table
    phy: Add drivers for PCIe and SATA phy on SPEAr13xx
    ...

    Linus Torvalds
     
  • Pull ARM SoC platform changes from Olof Johansson:
    "This is the bulk of new SoC enablement and other platform changes for
    3.17:

    - Samsung S5PV210 has been converted to DT and multiplatform
    - Clock drivers and bindings for some of the lower-end i.MX 1/2
    platforms
    - Kirkwood, one of the popular Marvell platforms, is folded into the
    mvebu platform code, removing mach-kirkwood
    - Hwmod data for TI AM43xx and DRA7 platforms
    - More additions of Renesas shmobile platform support
    - Removal of plat-samsung contents that can be removed with S5PV210
    being multiplatform/DT-enabled and the other two old platforms
    being removed

    New platforms (most with only basic support right now):

    - Hisilicon X5HD2 settop box chipset is introduced
    - Mediatek MT6589 (mobile chipset) is introduced
    - Broadcom BCM7xxx settop box chipset is introduced

    + as usual a lot other pieces all over the platform code"

    * tag 'soc-for-3.17' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (240 commits)
    ARM: hisi: remove smp from machine descriptor
    power: reset: move hisilicon reboot code
    ARM: dts: Add hix5hd2-dkb dts file.
    ARM: debug: Rename Hi3716 to HIX5HD2
    ARM: hisi: enable hix5hd2 SoC
    ARM: hisi: add ARCH_HISI
    MAINTAINERS: add entry for Broadcom ARM STB architecture
    ARM: brcmstb: select GISB arbiter and interrupt drivers
    ARM: brcmstb: add infrastructure for ARM-based Broadcom STB SoCs
    ARM: configs: enable SMP in bcm_defconfig
    ARM: add SMP support for Broadcom mobile SoCs
    Documentation: arm: misc updates to Marvell EBU SoC status
    Documentation: arm: add URLs to public datasheets for the Marvell Armada XP SoC
    ARM: mvebu: fix build without platforms selected
    ARM: mvebu: add cpuidle support for Armada 38x
    ARM: mvebu: add cpuidle support for Armada 370
    cpuidle: mvebu: add Armada 38x support
    cpuidle: mvebu: add Armada 370 support
    cpuidle: mvebu: rename the driver from armada-370-xp to mvebu-v7
    ARM: mvebu: export the SCU address
    ...

    Linus Torvalds
     
  • Pull ARM SoC cleanups from Olof Johansson:
    "This merge window brings a good size of cleanups on various platforms.
    Among the bigger ones:

    - Removal of Samsung s5pc100 and s5p64xx platforms. Both of these
    have lacked active support for quite a while, and after asking
    around nobody showed interest in keeping them around. If needed,
    they could be resurrected in the future but it's more likely that
    we would prefer reintroduction of them as DT and
    multiplatform-enabled platforms instead.

    - OMAP4 controller code register define diet. They defined a lot of
    registers that were never actually used, etc.

    - Move of some of the Tegra platform code (PMC, APBIO, fuse,
    powergate) to drivers/soc so it can be shared with 64-bit code.
    This also converts them over to traditional driver models where
    possible.

    - Removal of legacy gpio-samsung driver, since the last users have
    been removed (moved to pinctrl)

    Plus a bunch of smaller changes for various platforms that sort of
    dissapear in the diffstat for the above. clps711x cleanups, shmobile
    header file refactoring/moves for multiplatform friendliness, some
    misc cleanups, etc"

    * tag 'cleanup-for-3.17' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (117 commits)
    drivers: CCI: Correct use of ! and &
    video: clcd-versatile: Depend on ARM
    video: fix up versatile CLCD helper move
    MAINTAINERS: Add sdhci-st file to ARCH/STI architecture
    ARM: EXYNOS: Fix build breakge with PM_SLEEP=n
    MAINTAINERS: Remove Kirkwood
    ARM: tegra: Convert PMC to a driver
    soc/tegra: fuse: Set up in early initcall
    ARM: tegra: Always lock the CPU reset vector
    ARM: tegra: Setup CPU hotplug in a pure initcall
    soc/tegra: Implement runtime check for Tegra SoCs
    soc/tegra: fuse: fix dummy functions
    soc/tegra: fuse: move APB DMA into Tegra20 fuse driver
    soc/tegra: Add efuse and apbmisc bindings
    soc/tegra: Add efuse driver for Tegra
    ARM: tegra: move fuse exports to soc/tegra/fuse.h
    ARM: tegra: export apb dma readl/writel
    ARM: tegra: Use a function to get the chip ID
    ARM: tegra: Sort includes alphabetically
    ARM: tegra: Move includes to include/soc/tegra
    ...

    Linus Torvalds
     

01 Aug, 2014

1 commit

  • The bitfield allocation function returns error condition
    as a negative value, but in two cases its result
    was assigned to an unsigned member of the hw_perf_event
    structure, thus the error would not be ever detected.

    Fixed by using an intermediate, signed variable.

    Reported-by: Dan Carpenter
    Signed-off-by: Pawel Moll
    Signed-off-by: Olof Johansson

    Pawel Moll
     

31 Jul, 2014

1 commit

  • In commit ae91d60ba88ef0bdb1b5e9b2363bd52fc45d2af7, a bug was fixed that
    involved converting !x & y to !(x & y). The code below shows the same
    pattern, and thus should perhaps be fixed in the same way.

    The Coccinelle semantic patch that makes this change is as follows:

    //
    @@ expression E1,E2; @@
    (
    !E1 & !E2
    |
    - !E1 & E2
    + !(E1 & E2)
    )
    //

    Signed-off-by: Himangi Saraogi
    Acked-by: Julia Lawall
    Acked-by: Punit Agrawal
    Signed-off-by: Olof Johansson

    Himangi Saraogi
     

24 Jul, 2014

2 commits

  • The CCN driver makes no sense without PERF_EVENTS, and trying to
    build it when that option is disabled results in compile errors,
    so it's best to just add a strong Kconfig dependency.

    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     
  • Driver providing perf backend for ARM Cache Coherent Network
    interconnect. Supports counting all hardware events and crosspoint
    watchpoints.

    Currently works with CCN-504 only, although there should be
    no changes required for CCN-508 (just impossible to test it now).

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

    Pawel Moll
     

18 Jul, 2014

1 commit

  • There could be some memory map devices located in
    a certain chip select region of the i.MX WEIM.
    The devices could be attached to a simple bus(for
    example, a AXI bus) whose root node is one child
    device tree node of the i.MX WEIM device tree node.
    There should be a bridge(very likely, software
    transparent) bewteen the i.MX WEIM and the simple bus.
    This patch makes the i.MX WEIM driver possible to
    populate devices on a simple bus. In this way, people
    may try various IPs(in a FPGA, maybe) outside of i.MX
    chips with the i.MX WEIM embedded.

    Signed-off-by: Liu Ying
    Signed-off-by: Shawn Guo

    Liu Ying
     

04 Jul, 2014

1 commit

  • … into driver-core-next

    Russell writes:

    These updates fix one bug in the component helper where the matched
    components are not properly cleaned up when the master fails to bind.
    I'll provide a version of this for stable trees if it's deemed that
    we need to backport it.

    The second patch causes the component helper to ignore duplicate
    matches when adding components - this is something that was originally
    needed for imx-drm, but since that has now been updated, we no longer
    need to skip over a component which has already been matched.

    The final patch starts the process of updating the component helper
    API to achieve two goals: to allow the API to be more efficient when
    deferred probing occurs, and to allow for future improvements to the
    component helper without having a major impact on the users.

    This represents groundwork for some other changes; once this has been
    merged, I will then send two further pull requests (one for the staging
    tree, and one for the DRM tree) to update the drivers to the new API.
    This will result in these three commits being shared with those trees.

    Greg Kroah-Hartman
     

20 Jun, 2014

1 commit

  • devm_request_and_ioremap() was obsoleted by the commit 7509657
    ("lib: devres: Introduce devm_ioremap_resource()") and has been
    deprecated for a long time. So, let's remove this function.
    In addition, all usages of devm_request_and_ioremap() are also
    removed.

    Signed-off-by: Jingoo Han
    Signed-off-by: Greg Kroah-Hartman

    Jingoo Han
     

17 Jun, 2014

1 commit

  • The arm-cci code uses device tree helpers for initialization
    that don't work on kernels built without CONFIG_OF. Further,
    it contains an inline assembly in cci_enable_port_for_self()
    that uses ARMv7 instructions and fails to build when targetting
    other ARM instruction set versions.

    This works around both issues by limiting the scope of the
    Kconfig symbol to platforms that can actually build this driver
    cleanly.

    Signed-off-by: Arnd Bergmann
    Acked-by: Lorenzo Pieralisi
    Cc: Shawn Guo

    Arnd Bergmann
     

03 Jun, 2014

3 commits

  • Pull ARM SoC driver changes from Olof Johansson:
    "SoC-near driver changes that we're merging through our tree. Mostly
    because they depend on other changes we have staged, but in some cases
    because the driver maintainers preferred that we did it this way.

    This contains a largeish cleanup series of the omap_l3_noc bus driver,
    cpuidle rework for Exynos, some reset driver conversions and a long
    branch of TI EDMA fixes and cleanups, with more to come next release.

    The TI EDMA cleanups is a shared branch with the dmaengine tree, with
    a handful of Davinci-specific fixes on top.

    After discussion at last year's KS (and some more on the mailing
    lists), we are here adding a drivers/soc directory. The purpose of
    this is to keep per-vendor shared code that's needed by different
    drivers but that doesn't fit into the MFD (nor drivers/platform)
    model. We expect to keep merging contents for this hierarchy through
    arm-soc so we can keep an eye on what the vendors keep adding here and
    not making it a free-for-all to shove in crazy stuff"

    * tag 'drivers-for-3.16' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (101 commits)
    cpufreq: exynos: Fix driver compilation with ARCH_MULTIPLATFORM
    tty: serial: msm: Remove direct access to GSBI
    power: reset: keystone-reset: introduce keystone reset driver
    Documentation: dt: add bindings for keystone pll control controller
    Documentation: dt: add bindings for keystone reset driver
    soc: qcom: fix of_device_id table
    ARM: EXYNOS: Fix kernel panic when unplugging CPU1 on exynos
    ARM: EXYNOS: Move the driver to drivers/cpuidle directory
    ARM: EXYNOS: Cleanup all unneeded headers from cpuidle.c
    ARM: EXYNOS: Pass the AFTR callback to the platform_data
    ARM: EXYNOS: Move S5P_CHECK_SLEEP into pm.c
    ARM: EXYNOS: Move the power sequence call in the cpu_pm notifier
    ARM: EXYNOS: Move the AFTR state function into pm.c
    ARM: EXYNOS: Encapsulate the AFTR code into a function
    ARM: EXYNOS: Disable cpuidle for exynos5440
    ARM: EXYNOS: Encapsulate boot vector code into a function for cpuidle
    ARM: EXYNOS: Pass wakeup mask parameter to function for cpuidle
    ARM: EXYNOS: Remove ifdef for scu_enable in pm
    ARM: EXYNOS: Move scu_enable in the cpu_pm notifier
    ARM: EXYNOS: Use the cpu_pm notifier for pm
    ...

    Linus Torvalds
     
  • Pull part one of ARM SoC updates from Olof Johansson:
    "A quite large set of SoC updates this cycle. In no particular order:

    - Multi-cluster power management for Samsung Exynos, adding support
    for big.LITTLE CPU switching on EXYNOS5

    - SMP support for Marvell Armada 375 and 38x

    - SMP rework on Allwinner A31

    - Xilinx Zynq support for SOC_BUS, big endian

    - Marvell orion5x platform cleanup, modernizing the implementation
    and moving to DT.

    - _Finally_ moving Samsung Exynos over to support MULTIPLATFORM, so
    that their platform can be enabled in the same kernel binary as
    most of the other v7 platforms in the tree. \o/

    The work isn't quite complete, there's some driver fixes still
    needed, but the basics now work.

    New SoC support added:

    - Freescale i.MX6SX

    - LSI Axxia AXM55xx SoCs

    - Samsung EXYNOS 3250, 5260, 5410, 5420 and 5800

    - STi STIH407

    plus a large set of various smaller updates for different platforms.
    I'm probably missing some important one here"

    * tag 'soc-for-3.16' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (281 commits)
    ARM: exynos: don't run exynos4 l2x0 setup on other platforms
    ARM: exynos: Fix "allmodconfig" build errors in mcpm and hotplug
    ARM: EXYNOS: mcpm rename the power_down_finish
    ARM: EXYNOS: Enable mcpm for dual-cluster exynos5800 SoC
    ARM: EXYNOS: Enable multi-platform build support
    ARM: EXYNOS: Consolidate Kconfig entries
    ARM: EXYNOS: Add support for EXYNOS5410 SoC
    ARM: EXYNOS: Support secondary CPU boot of Exynos3250
    ARM: EXYNOS: Add Exynos3250 SoC ID
    ARM: EXYNOS: Add 5800 SoC support
    ARM: EXYNOS: initial board support for exynos5260 SoC
    clk: exynos5410: register clocks using common clock framework
    ARM: debug: qcom: add UART addresses to Kconfig help for APQ8084
    ARM: sunxi: allow building without reset controller
    Documentation: devicetree: arm: sort enable-method entries
    ARM: rockchip: convert smp bringup to CPU_METHOD_OF_DECLARE
    clk: exynos5250: Add missing sysmmu clocks for DISP and ISP blocks
    ARM: dts: axxia: Add reset controller
    power: reset: Add Axxia system reset driver
    ARM: axxia: Adding defconfig for AXM55xx
    ...

    Linus Torvalds
     
  • Pull ARM SoC cleanups from Olof Johansson:
    "Cleanups for 3.16. Among these are:

    - a bunch of misc cleanups for Broadcom platforms, mostly
    housekeeping
    - enabling Common Clock Framework on the older s3c24xx Samsung
    chipsets
    - cleanup of the Versatile Express system controller code, moving it
    to syscon
    - power management cleanups for OMAP platforms

    plus a handful of other cleanups across the place"

    * tag 'cleanup-for-3.16' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (87 commits)
    ARM: kconfig: allow PCI support to be selected with ARCH_MULTIPLATFORM
    clk: samsung: fix build error
    ARM: vexpress: refine dependencies for new code
    clk: samsung: clk-s3c2410-dlck: do not use PNAME macro as it declares __initdata
    cpufreq: exynos: Fix the compile error
    ARM: S3C24XX: move debug-macro.S into the common space
    ARM: S3C24XX: use generic DEBUG_UART_PHY/_VIRT in debug macro
    ARM: S3C24XX: trim down debug uart handling
    ARM: compressed/head.S: remove s3c24xx special case
    ARM: EXYNOS: Remove unnecessary inclusion of cpu.h
    ARM: EXYNOS: Migrate Exynos specific macros from plat to mach
    ARM: EXYNOS: Remove exynos_subsys registration
    ARM: EXYNOS: Remove duplicate lines in Makefile
    ARM: EXYNOS: use v7_exit_coherency_flush macro for cache disabling
    ARM: OMAP4: PRCM: remove references to cm-regbits-44xx.h from PRCM core files
    ARM: OMAP3/4: PRM: add support of late_init call to prm_ll_ops
    ARM: OMAP3/OMAP4: PRM: add prm_features flags and add IO wakeup under it
    ARM: OMAP3/4: PRM: provide io chain reconfig function through irq setup
    ARM: OMAP2+: PRM: remove unnecessary cpu_is_XXX calls from prm_init / exit
    ARM: OMAP2+: PRCM: cleanup some header includes
    ...

    Linus Torvalds
     

27 May, 2014

2 commits

  • …ernel/git/tmlind/linux-omap into next/drivers

    Merge "ARM: omap l3-noc bus driver changes for v3.16 merge window, resend" from
    Tony Lindgren:

    Improvments to omap l3-noc bus driver for v3.16 merge window
    to add support for am347x and dra7.

    * tag 'omap-for-v3.16/l3-noc-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap: (25 commits)
    bus: omap_l3_noc: Add AM4372 interconnect error data
    bus: omap_l3_noc: Add DRA7 interconnect error data
    bus: omap_l3_noc: introduce concept of submodule
    bus: omap_l3_noc: Add information about the context of operation
    bus: omap_l3_noc: add information about the type of operation
    bus: omap_l3_noc: ignore masked out unclearable targets
    bus: omap_l3_noc: improve readability by using helper for slave event parsing
    bus: omap_l3_noc: make error reporting and handling common
    bus: omap_l3_noc: fix masterid detection
    bus: omap_l3_noc: convert flagmux information into a structure
    bus: omap_l3_noc: use of_match_data to pick up SoC information
    bus: omap_l3_noc: Add support for discountinous flag mux input numbers
    bus: omap_l3_noc: convert target information into a structure
    bus: omap_l3_noc: move L3 master data structure out
    bus: omap_l3_noc: un-obfuscate l3_targ address computation
    bus: omap_l3_noc: switch over to relaxed variants of readl/writel
    bus: omap_l3_noc: populate l3->dev and use it
    bus: omap_l3_noc: remove iclk from omap_l3 struct
    bus: omap_l3_noc: rename functions and data to omap_l3
    bus: omap_l3_noc: Fix copyright information
    ...

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

    Olof Johansson
     
  • The versatile express changes for 3.16 introduced a number of
    build regressions for randconfig kernels by not tracking dependencies
    between the components right.

    This patch tries to rectify that:

    * the mach-vexpress code cannot link without the syscfg driver,
    which in turn needs MFD_VEXPRESS_SYSREG
    * various drivers call devm_regmap_init_vexpress_config(), which
    has to be exported so it can be used by loadable modules
    * the configuration bus uses OF DT helper functions that are not
    available to platforms disable CONFIG_OF
    * The sysreg driver exports GPIOs through gpiolib, which can
    be disabled on some platforms.
    * The clocksource code cannot be built on platforms that don't
    use modern timekeeping but rely on gettimeoffset.

    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     

24 May, 2014

1 commit

  • This patch adds support for the Broadcom GISB arbiter bus timeout/error
    handler. GISB is a proprietary bus used by Broadcom Set Top Box
    System-on-a-chip devices (BCM7xxx) which allows multiple masters and
    clients to be interfaced with each other.

    The bus arbiter offers support for generating two interrupts towards the
    host CPU, thus allowing us to "catch" clock gated masters, or masters
    being volontarily blocked for powersaving purposes, or do general system
    troubleshooting.

    We also register a hook with the ARM fault exception handling to allow
    printing a more informative message than "imprecise external abort at
    0x00000000" for instance.

    Signed-off-by: Florian Fainelli
    Signed-off-by: Arnd Bergmann

    Florian Fainelli
     

16 May, 2014

1 commit

  • Components of the Versatile Express platform (configuration
    microcontrollers on motherboard and daughterboards in particular)
    talk to each other over a custom configuration bus. They
    provide miscellaneous functions (from clock generator control
    to energy sensors) which are represented as platform devices
    (and Device Tree nodes). The transactions on the bus can
    be generated by different "bridges" in the system, some
    of which are universal for the whole platform (for the price
    of high transfer latencies), others restricted to a subsystem
    (but much faster).

    Until now drivers for such functions were using custom "func"
    API, which is being replaced in this patch by regmap calls.
    This required:

    * a rework (and move to drivers/bus directory, as suggested
    by Samuel and Arnd) of the config bus core, which is much
    simpler now and uses device model infrastructure (class)
    to keep track of the bridges; non-DT case (soon to be
    retired anyway) is simply covered by a special device
    registration function

    * the new config-bus driver also takes over device population,
    so there is no need for special matching table for
    of_platform_populate nor "simple-bus" hack in the arm64
    model dtsi file (relevant bindings documentation has
    been updated); this allows all the vexpress devices
    fit into normal device model, making it possible
    to remove plenty of early inits and other hacks in
    the near future

    * adaptation of the syscfg bridge implementation in the
    sysreg driver, again making it much simpler; there is
    a special case of the "energy" function spanning two
    registers, where they should be both defined in the tree
    now, but backward compatibility is maintained in the code

    * modification of the relevant drivers:

    * hwmon - just a straight-forward API change
    * power/reset driver - API change
    * regulator - API change plus error handling
    simplification
    * osc clock driver - this one required larger rework
    in order to turn in into a standard platform driver

    Signed-off-by: Pawel Moll
    Acked-by: Mark Brown
    Acked-by: Lee Jones
    Acked-by: Guenter Roeck
    Acked-by: Mike Turquette

    Pawel Moll
     

06 May, 2014

15 commits

  • Add AM4372 information to handle L3 error.

    AM4372 has two clk domains 100f and 200s. Provide flagmux and data
    associated with it.

    NOTE: Timeout doesn't have STDERRLOG_MAIN register. And per hardware
    team, L3 timeout error cannot be cleared the normal way (by setting
    bit 31 in STDERRLOG_MAIN), instead it may be required to do system
    reset. L3 error handler can't help in such scenarios.

    Hence indicate timeout target offset as L3_TARGET_NOT_SUPPORTED as
    done for undocumented bits.

    Signed-off-by: Dave Gerlach
    Signed-off-by: Afzal Mohammed
    Signed-off-by: Sekhar Nori
    Signed-off-by: Nishanth Menon
    Acked-by: Santosh Shilimkar
    Acked-by: Peter Ujfalusi
    Tested-by: Darren Etheridge
    Tested-by: Sekhar Nori

    Afzal Mohammed
     
  • DRA7 is distinctly different from OMAP4 in terms of masters and clock
    domain organization. There two main clock domains which is divided as
    follows:
    is clk1 and clk2 is the sub clock domain
    is clk3

    Add all the data needed to handle L3 error handling on DRA7 devices
    and mark clk2 as subdomain and provide a compatible flag for
    functionality. Other than the data difference the hardware blocks
    involved are essentially the same.

    Signed-off-by: Rajendra Nayak
    [nm@ti.com: bugfixes and generic improvements, documentation]
    Signed-off-by: Nishanth Menon
    Acked-by: Santosh Shilimkar
    Acked-by: Peter Ujfalusi
    Tested-by: Darren Etheridge
    Tested-by: Sekhar Nori

    Rajendra Nayak
     
  • While OMAP4 and OMAP5 had 3 separate clock domains, DRA7 has only 2
    and the first one then is internally divided into 2 sub clock domains.

    To better represent this in the driver, we use the concept of submodule.

    The address defintions in the devicetree is as per the high level
    clock domain(module) base, the sub clockdomain/subdomain which shares
    the same register space of a clockdomain is marked in the SoC data as
    L3_BASE_IS_SUBMODULE.

    L3_BASE_IS_SUBMODULE is used as an indication that it's base address is
    the same as the parent module and offsets are considered from the same
    base address as they are usually intermingled.

    Other than the base address, the submodule is same as a module as it is
    functionally so.

    Signed-off-by: Nishanth Menon
    Acked-by: Santosh Shilimkar
    Acked-by: Peter Ujfalusi
    Tested-by: Darren Etheridge
    Tested-by: Sekhar Nori

    Nishanth Menon
     
  • L3 error may be triggered using Debug interface (example JTAG) or
    due to other errors, for example an opcode fetch (due to function
    pointer or stack corruption) or a data access (due to some other
    failure). NOC registers contain additional information to help aid
    debug information.

    With this, we can enhance the error information to more detailed form:
    "
    L3 Custom Error: MASTER MPU TARGET L4PER2 (Read): Data Access in User mode
    during Functional access
    "

    Signed-off-by: Nishanth Menon
    Acked-by: Santosh Shilimkar
    Acked-by: Peter Ujfalusi
    Tested-by: Darren Etheridge
    Tested-by: Sekhar Nori

    Nishanth Menon
     
  • Today we get error such as
    L3 Custom Error: MASTER MPU TARGET L4PER2

    But since the actual instruction triggerring the error Vs the point
    at which we report error may not be aligned, it makes sense to try
    and provide additional information - example the type of operation
    that was attempted to being performed can help narrow the debug down
    further.

    This helps provide log such as:
    L3 Custom Error: MASTER MPU TARGET L4PER2 (Read)

    Signed-off-by: Nishanth Menon
    Acked-by: Santosh Shilimkar
    Acked-by: Peter Ujfalusi
    Tested-by: Darren Etheridge
    Tested-by: Sekhar Nori

    Nishanth Menon
     
  • Errors that cannot be cleared (determined by reading REGERR register)
    are currently handled by masking it. Documentation states that REGERR
    "Checks which application/debug error sources are active" - it does not
    indicate that this is "interrupt status" - masked out status represented
    eventually in the irq line to MPU.
    For example:

    Lets say module 0 bit 8(0x100) was unclearable, we do the mask it from
    generating further errors. However in the following cases:
    a) bit 9 of Module 0
    OR
    b) any bit of Module 1+
    occur, the interrupt handler wrongly assumes that the raw interrupt
    status of module 0 bit 8 is the root cause of the interrupt, and
    returns. This causes unhandled interrupt and resultant infinite
    interrupts.

    Fix this scenario by storing the events we masked out and masking raw
    status with masked ones before identifying and handling the error.

    Reported-by: Vaibhav Hiremath
    Signed-off-by: Afzal Mohammed
    Tested-by: Vaibhav Hiremath
    Signed-off-by: Sekhar Nori
    Signed-off-by: Nishanth Menon
    Tested-by: Sekhar Nori

    Afzal Mohammed
     
  • Current interrupt handler does the first level parse to identify the
    slave and then handles the slave even identification, reporting and
    clearing of event as well. It is hence logical to split the handler
    into two where the primary handler just parses the flagmux till it
    identifies a slave and the slave handling, reporting and clearing is
    done in a helper function.

    While at it update the documentation in kerneldoc style.

    Signed-off-by: Nishanth Menon
    Acked-by: Santosh Shilimkar
    Acked-by: Peter Ujfalusi
    Tested-by: Darren Etheridge
    Tested-by: Sekhar Nori

    Nishanth Menon
     
  • The logic between handling CUSTOM_ERROR and STANDARD_ERROR is just the
    reporting style.

    So make it generic, simplify and standardize the reporting with both
    master and target information printed to log.

    Handle the register address difference for master code for standard
    error and custom error as well.

    While at it, fix a minor indentation error.

    Signed-off-by: Nishanth Menon
    Acked-by: Santosh Shilimkar
    Acked-by: Peter Ujfalusi
    Tested-by: Darren Etheridge
    Tested-by: Sekhar Nori

    Nishanth Menon
     
  • As per Documentation (OMAP4+), then masterid is infact encoded as
    follows:
    "L3_TARG_STDERRLOG_MSTADDR[7:0] STDERRLOG_MSTADDR stores the NTTP
    master address. The master address is the concatenation of Prefix &
    Initiator ConnID. It is defined on 8 bits. The 6 MSBs are used to
    distinguish the different initiators."

    So, when we matchup currently with the master ID list, we never get a
    proper match other than when MPU is the master (thanks to 0).

    Now, on other platforms such as AM437x, this tends to be bits[5:0].

    Fix this by using the relevant 6MSBits to identify the master ID for
    standard and custom errors.

    Reported-by: Darren Etheridge
    Signed-off-by: Nishanth Menon
    Acked-by: Santosh Shilimkar
    Acked-by: Peter Ujfalusi
    Tested-by: Darren Etheridge
    Tested-by: Sekhar Nori

    Nishanth Menon
     
  • This allows us to encompass target information and flag mux offset that
    points to the target information into a singular structure. This saves
    us the need to look up two different arrays indexed by module ID for
    information.

    This allows us to reduce the static target information allocation to
    just the ones that are documented.

    Signed-off-by: Nishanth Menon
    Acked-by: Santosh Shilimkar
    Acked-by: Peter Ujfalusi
    Tested-by: Darren Etheridge
    Tested-by: Sekhar Nori

    Nishanth Menon
     
  • DRA7xx SoC has the same l3-noc interconnect ip (as OMAP4 and OMAP5), but
    AM437x SoC has just 2 modules instead of 3 which other SoCs have.

    So, stop using direct access of array indices and use of->match data and
    simplify implementation to benefit future usage.

    While at it, rename a few very generic variables to make them omap
    specific. This helps us differentiate from DRA7 and AM43xx data in the
    future.

    NOTE: None of the platforms that use omap_l3_noc are non-device tree
    anymore. So, it is safe to assume OF match here.

    Signed-off-by: Sricharan R
    Signed-off-by: Rajendra Nayak
    [nm@ti.com: split, refactor and optimize logic]
    Signed-off-by: Nishanth Menon
    Acked-by: Santosh Shilimkar
    Acked-by: Peter Ujfalusi
    Tested-by: Darren Etheridge
    Tested-by: Sekhar Nori

    Sricharan R
     
  • On DRA7, unlike on OMAP4 and OMAP5, the flag mux input numbers used
    to indicate the source of errors are not continous. Have a way in the
    driver to catch these and WARN the user of the flag mux input thats
    either undocumented or wrong.

    In the similar vein, Timeout errors in AM43x can't be cleared per h/w
    team, neither does it have a STDERRLOG_MAIN to clear the error.

    Further, the mux bit offset might not even be indexed into our array
    of known mux input description, in which case we'd have a abort.

    So, define a static range check for bit description and any definition
    which has target_name set to NULL (the ones that are not populated or
    ones that are specifically marked in the case of discontinous input
    numbers), can handle the same gracefully. Upon occurance of error from
    such sources, mask it. Otherwise, we'd have an infinite interrupt
    source without any means to clear it.

    NOTE: follow on patch ensures that these masked bits are ignored.

    [nm@ti.com: rebase, squash and improve]
    Signed-off-by: Rajendra Nayak
    Signed-off-by: Afzal Mohammed
    Signed-off-by: Nishanth Menon
    Acked-by: Santosh Shilimkar
    Acked-by: Peter Ujfalusi
    Tested-by: Darren Etheridge
    Tested-by: Sekhar Nori

    Rajendra Nayak
     
  • Currently the target instance information is organized indexed by bit
    field offset into multiple arrays.

    1. We currently have offsets specific to each target associated with each
    clock domains are in seperate arrays:

    l3_targ_inst_clk1
    l3_targ_inst_clk2
    l3_targ_inst_clk3

    2. Then they are organized per master index in l3_targ.

    3. We have names in l3_targ_inst_name as an array to array of strings
    corresponding to the above with offsets.

    Simplify the same by defining a structure for information containing
    both target offset and name. this is then stored in arrays per domain
    and organized into an array indexed off domain.

    The array is still indexed based on bit field offset.

    Signed-off-by: Nishanth Menon
    Acked-by: Santosh Shilimkar
    Acked-by: Peter Ujfalusi
    Tested-by: Darren Etheridge
    Tested-by: Sekhar Nori

    Nishanth Menon
     
  • Move the L3 master structure out of the static definition to enable
    reuse for other SoCs.

    Signed-off-by: Nishanth Menon
    Acked-by: Santosh Shilimkar
    Acked-by: Peter Ujfalusi
    Tested-by: Darren Etheridge
    Tested-by: Sekhar Nori

    Nishanth Menon
     
  • just simplify derefencing that is equivalent.

    Signed-off-by: Nishanth Menon
    Acked-by: Santosh Shilimkar
    Acked-by: Peter Ujfalusi
    Tested-by: Darren Etheridge
    Tested-by: Sekhar Nori

    Nishanth Menon