28 Jul, 2015

1 commit

  • Init data marked const should be annotated with __initconst for
    correctness and not __initdata. In some cases the array gathering
    references to that data has to be marked const as well. This fixes
    LTO builds that otherwise fail with section mismatch errors.

    Signed-off-by: Nicolas Pitre
    Signed-off-by: Olof Johansson

    Nicolas Pitre
     

17 Jul, 2015

1 commit

  • Migrate cns3xxx driver to the new 'set-state' interface provided by
    clockevents core, the earlier 'set-mode' interface is marked obsolete
    now.

    This also enables us to implement callbacks for new states of clockevent
    devices, for example: ONESHOT_STOPPED.

    NOTE: We don't read TIMER1_2_CONTROL_OFFSET register on shutdown
    anymore.

    Acked-by: Krzysztof Hałasa
    Signed-off-by: Viresh Kumar

    Viresh Kumar
     

05 Sep, 2014

1 commit

  • The kernel panic occurs when running an allmodconfig kernel on
    OMAP4460. The inicall "cns3xxx_pcie_init" does not check which
    hardware it's running on and just tries to access to its specific
    registers. Now call it from .init_late callback from the two
    machine descriptors.

    Signed-off-by: Xia Kaixu
    Signed-off-by: Arnd Bergmann
    Cc: Anton Vorontsov
    Cc: Felix Fietkau
    Cc: Imre Kaloz
    Cc: linaro-kernel@lists.linaro.org
    Cc: linux-arm-kernel@lists.infradead.org

    Xia Kaixu
     

30 May, 2014

2 commits

  • The cache size should already be present in the L2 cache auxiliary
    control register: it is part of the integration process to configure
    the hardware IP. Most platforms get this right, yet still many
    cargo-cult program, and assume that they always need specifying to
    the L2 cache code. Remove them so we can find out which really need
    this.

    Signed-off-by: Russell King

    Russell King
     
  • We have a mixture of different devices with different register layouts,
    but we group all the bits together in an opaque mess. Split them out
    into those which are L2C-310 specific and ones which refer to earlier
    devices. Provide full auxiliary control register definitions.

    Acked-by: Tony Lindgren
    Acked-by: Linus Walleij
    Acked-by: Shawn Guo
    Acked-by: Stephen Warren
    Signed-off-by: Russell King

    Russell King
     

06 Apr, 2014

1 commit

  • Pull ARM SoC non-critical bug fixes from Arnd Bergmann:
    "Lots of isolated bug fixes that were not found to be important enough
    to be submitted before the merge window or backported into stable
    kernels.

    The vast majority of these came out of Arnd's randconfig testing and
    just prevents running into build-time bugs in configurations that we
    do not care about in practice"

    * tag 'fixes-non-critical-3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (75 commits)
    ARM: at91: fix a typo
    ARM: moxart: fix CPU selection
    ARM: tegra: fix board DT pinmux setup
    ARM: nspire: Fix compiler warning
    IXP4xx: Fix DMA masks.
    Revert "ARM: ixp4xx: Make dma_set_coherent_mask common, correct implementation"
    IXP4xx: Fix Goramo Multilink GPIO conversion.
    Revert "ARM: ixp4xx: fix gpio rework"
    ARM: tegra: make debug_ll code build for ARMv6
    ARM: sunxi: fix build for THUMB2_KERNEL
    ARM: exynos: add missing include of linux/module.h
    ARM: exynos: fix l2x0 saved regs handling
    ARM: samsung: select CRC32 for SAMSUNG_PM_CHECK
    ARM: samsung: select ATAGS where necessary
    ARM: samsung: fix SAMSUNG_PM_DEBUG Kconfig logic
    ARM: samsung: allow serial driver to be disabled
    ARM: s5pv210: enable IDE support in MACH_TORBRECK
    ARM: s5p64x0: fix building with only one soc type
    ARM: s3c64xx: select power domains only when used
    ARM: s3c64xx: MACH_SMDK6400 needs HSMMC1
    ...

    Linus Torvalds
     

17 Mar, 2014

2 commits

  • This patch fixes the following BUG:

    > kernel BUG at mm/vmalloc.c:1132!
    > PC is at vm_area_add_early+0x20/0x84
    > LR is at add_static_vm_early+0xc/0x60
    >
    > The problem is cns3xxx_pcie_init() (device_initcall) calls the "early"
    > iotable_init().

    Instead of merely calling the PCIe iotable_init() from
    machine_desc->map_io(), this patch adds the required mappings to the
    main CNS3xxx mapping table. This means we don't convert .pfn back to
    virtual addresses in pcie.c. The size of the address space consumed for
    PCIe control is reduced from 96 MiB (6 * 16 MiB) to about 32 MiB (this
    doesn't include MMIO address space required by PCI devices):

    - Size of the PCIe "host" mapping is reduced from 16 MiB to 4 KiB.
    It's a PCI configuration address space for the local (on-chip) PCIe
    bridge.

    - Size of the "CFG0" mapping is reduced from 16 MiB to 64 KiB. It's for
    Type 0 Configuration accesses, i.e., accesses to the single device
    (with possible "functions") on the other end of the PCIe link.
    We really only need a 4 KiB page at 0x8000 (see the offset
    calculation in cns3xxx_pci_cfg_base()). There is still a potential
    problem with PCI bus numbers > 0xF, are they supported?

    - The code in cns3xxx_pci_cfg_base() and cns3xxx_pcie_hw_init() should
    be clearer now.

    - The maximum address space allocated for PCI MMIO is now correctly
    shown in /proc/iomem as 176 MiB (per each of the two PCI "domains"
    - previously only 16 MiB were reserved).

    This patch has been tested on Gateworks Laguna board, masqueraded as
    CNS3420VB.

    Signed-off-by: Krzysztof Ha?asa
    Signed-off-by: Arnd Bergmann

    Krzysztof Hałasa
     
  • WARNING: at drivers/irqchip/irq-gic.c:952 gic_init_bases+0xe4/0x2b8()
    Cannot allocate irq_descs @ IRQ16, assuming pre-allocated
    Backtrace:
    gic_init_bases from cns3xxx_init_irq+0x24/0x34
    cns3xxx_init_irq from init_IRQ+0x24/0x2c
    init_IRQ from start_kernel+0x1a8/0x338
    start_kernel from 0x2000806c

    The problem is that 64 CNS3xxx CPU interrupts, starting at 32, are
    allocated by the ARM platform-independent code (as requested by
    machine_desc->nr_irqs = 96), and then the GIC code tries to allocate
    them again.

    Tested on Gateworks Laguna board, masqueraded as CNS3420VB.

    Signed-off-by: Krzysztof Hałasa
    Signed-off-by: Arnd Bergmann

    Krzysztof Hałasa
     

12 Mar, 2014

1 commit


03 May, 2013

1 commit

  • Pull ARM SoC multiplatform updates from Olof Johansson:
    "More multiplatform enablement for ARM platforms. The ones converted
    in this branch are:

    - bcm2835
    - cns3xxx
    - sirf
    - nomadik
    - msx
    - spear
    - tegra
    - ux500

    We're getting close to having most of them converted!

    One of the larger platforms remaining is Samsung Exynos, and there are
    a bunch of supporting patches in this merge window for it. There was
    a patch in this branch to a early version of multiplatform conversion,
    but it ended up being reverted due to need of more bake time. The
    revert commit is part of the branch since it would have required
    rebasing multiple dependent branches and they were stable by then"

    * tag 'multiplatform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (70 commits)
    mmc: sdhci-s3c: Fix operation on non-single image Samsung platforms
    clocksource: nomadik-mtu: fix up clocksource/timer
    Revert "ARM: exynos: enable multiplatform support"
    ARM: SPEAr13xx: Fix typo "ARCH_HAVE_CPUFREQ"
    ARM: exynos: enable multiplatform support
    rtc: s3c: make header file local
    mtd: onenand/samsung: make regs-onenand.h file local
    thermal/exynos: remove unnecessary header inclusions
    mmc: sdhci-s3c: remove platform dependencies
    ARM: samsung: move mfc device definition to s5p-dev-mfc.c
    ARM: exynos: move debug-macro.S to include/debug/
    ARM: exynos: prepare for sparse IRQ
    ARM: exynos: introduce EXYNOS_ATAGS symbol
    ARM: tegra: build assembly files with -march=armv7-a
    ARM: Push selects for TWD/SCU into machine entries
    ARM: ux500: build hotplug.o for ARMv7-a
    ARM: ux500: move to multiplatform
    ARM: ux500: make remaining headers local
    ARM: ux500: make irqs.h local to platform
    ARM: ux500: get rid of
    ...

    Linus Torvalds
     

31 Mar, 2013

2 commits


15 Mar, 2013

2 commits

  • This adds very minimal support for booting cns3xxx using a device
    tree. It should support the same devices that cns3420vb provides
    but gets them from the DT. All devices that don't have their own
    binding are probed through auxdata. This is completely untested
    and likely incomplete.

    Booting through ATAGS is made optional, so it can be turned off
    by anybody who has a DTB file.

    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     
  • The mach/cns3xxx.h and mach/pm.h header files are used only
    in the platform code itself, so there is no need to make
    them globally visible. This gets us closer to multiplatform
    configuration for cns3xxx.

    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     

15 Jan, 2013

3 commits

  • From Rob Herring:

    Initial irqchip init infrastructure and GIC and VIC clean-ups

    This creates irqchip initialization infrastructure from Thomas
    Petazzoni. The VIC and GIC irqchip code is moved to drivers/irqchips
    and adapted to use the new infrastructure. All DT enabled platforms
    using GIC and VIC are converted over to use the new irqchip_init.

    * tag 'gic-vic-to-irqchip' of git://sources.calxeda.com/kernel/linux:
    irqchip: Move ARM vic.h to include/linux/irqchip/arm-vic.h
    ARM: picoxcell: use common irqchip_init function
    ARM: spear: use common irqchip_init function
    irqchip: Move ARM VIC to drivers/irqchip
    ARM: samsung: remove unused tick.h
    ARM: remove unneeded vic.h includes
    ARM: remove mach .handle_irq for VIC users
    ARM: VIC: set handle_arch_irq in VIC initialization
    ARM: VIC: shrink down vic.h
    irqchip: Move ARM gic.h to include/linux/irqchip/arm-gic.h
    ARM: use common irqchip_init for GIC init
    irqchip: Move ARM GIC to drivers/irqchip
    ARM: remove mach .handle_irq for GIC users
    ARM: GIC: set handle_arch_irq in GIC initialization
    ARM: GIC: remove direct use of gic_raise_softirq
    ARM: GIC: remove assembly ifdefs from gic.h
    ARM: mach-ux500: use SGI0 to wake up the other core
    arm: add set_handle_irq() to register the parent IRQ controller handler function
    irqchip: add basic infrastructure
    irqchip: add to the directories part of the IRQ subsystem in MAINTAINERS

    Fixed up massive merge conflicts with the timer cleanup due to adjacent changes:

    Signed-off-by: Olof Johansson

    Conflicts:
    arch/arm/mach-bcm/board_bcm.c
    arch/arm/mach-cns3xxx/cns3420vb.c
    arch/arm/mach-ep93xx/adssphere.c
    arch/arm/mach-ep93xx/edb93xx.c
    arch/arm/mach-ep93xx/gesbc9312.c
    arch/arm/mach-ep93xx/micro9.c
    arch/arm/mach-ep93xx/simone.c
    arch/arm/mach-ep93xx/snappercl15.c
    arch/arm/mach-ep93xx/ts72xx.c
    arch/arm/mach-ep93xx/vision_ep9307.c
    arch/arm/mach-highbank/highbank.c
    arch/arm/mach-imx/mach-imx6q.c
    arch/arm/mach-msm/board-dt-8960.c
    arch/arm/mach-netx/nxdb500.c
    arch/arm/mach-netx/nxdkn.c
    arch/arm/mach-netx/nxeb500hmi.c
    arch/arm/mach-nomadik/board-nhk8815.c
    arch/arm/mach-picoxcell/common.c
    arch/arm/mach-realview/realview_eb.c
    arch/arm/mach-realview/realview_pb1176.c
    arch/arm/mach-realview/realview_pb11mp.c
    arch/arm/mach-realview/realview_pba8.c
    arch/arm/mach-realview/realview_pbx.c
    arch/arm/mach-socfpga/socfpga.c
    arch/arm/mach-spear13xx/spear1310.c
    arch/arm/mach-spear13xx/spear1340.c
    arch/arm/mach-spear13xx/spear13xx.c
    arch/arm/mach-spear3xx/spear300.c
    arch/arm/mach-spear3xx/spear310.c
    arch/arm/mach-spear3xx/spear320.c
    arch/arm/mach-spear3xx/spear3xx.c
    arch/arm/mach-spear6xx/spear6xx.c
    arch/arm/mach-tegra/board-dt-tegra20.c
    arch/arm/mach-tegra/board-dt-tegra30.c
    arch/arm/mach-u300/core.c
    arch/arm/mach-ux500/board-mop500.c
    arch/arm/mach-ux500/cpu-db8500.c
    arch/arm/mach-versatile/versatile_ab.c
    arch/arm/mach-versatile/versatile_dt.c
    arch/arm/mach-versatile/versatile_pb.c
    arch/arm/mach-vexpress/v2m.c
    include/asm-generic/vmlinux.lds.h

    Olof Johansson
     
  • Clockevent cleanup series from Shawn Guo.

    Resolved move/change conflict in mach-pxa/time.c due to the sys_timer
    cleanup.

    * clocksource/cleanup:
    clocksource: use clockevents_config_and_register() where possible
    ARM: use clockevents_config_and_register() where possible
    clockevents: export clockevents_config_and_register for module use
    + sync to Linux 3.8-rc3

    Signed-off-by: Olof Johansson

    Conflicts:
    arch/arm/mach-pxa/time.c

    Olof Johansson
     
  • The clockevent core is able to figure out the best mult and shift,
    calculate min_delta_ns and max_delta_ns, with the necessary info passed
    into clockevents_config_and_register(). Use this combined configure
    and register function where possible to make the codes less error prone
    and gain some positive diff stat.

    Signed-off-by: Shawn Guo
    Cc: Nicolas Ferre
    Reviewed-by: Anton Vorontsov
    Acked-by: Kukjin Kim
    Cc: Russell King
    Cc: Sascha Hauer
    Cc: Jason Cooper
    Tested-by: Roland Stigge
    Acked-by: Eric Miao
    Cc: Haojian Zhuang
    Cc: David Brown
    Tested-by: Tony Lindgren
    Acked-by: Barry Song
    Tested-by: Stephen Warren
    Acked-by: Tony Prisk
    Cc: Lennert Buytenhek
    Cc: Wan ZongShun
    Acked-by: Viresh Kumar
    Acked-by: Arnd Bergmann
    Acked-by: Jason Cooper
    Reviewed-by: Thomas Gleixner
    Signed-off-by: Olof Johansson

    Shawn Guo
     

13 Jan, 2013

1 commit

  • Now that we have GIC moved to drivers/irqchip and all GIC DT init for
    platforms using irqchip_init, move gic.h and update the remaining
    includes.

    Signed-off-by: Rob Herring
    Cc: Thomas Gleixner
    Cc: Russell King
    Cc: Anton Vorontsov
    Cc: Kukjin Kim
    Cc: Sascha Hauer
    Cc: David Brown
    Cc: Daniel Walker
    Cc: Bryan Huntsman
    Cc: Tony Lindgren
    Cc: Paul Mundt
    Cc: Magnus Damm
    Cc: Viresh Kumar
    Cc: Shiraz Hashim
    Cc: Stephen Warren
    Cc: Srinidhi Kasagar
    Cc: Linus Walleij
    Cc: Samuel Ortiz

    Rob Herring
     

25 Dec, 2012

1 commit

  • Now that the only field in struct sys_timer is .init, delete the struct,
    and replace the machine descriptor .timer field with the initialization
    function itself.

    This will enable moving timer drivers into drivers/clocksource without
    having to place a public prototype of each struct sys_timer object into
    include/linux; the intent is to create a single of_clocksource_init()
    function that determines which timer driver to initialize by scanning
    the device dtree, much like the proposed irqchip_init() at:
    http://www.spinics.net/lists/arm-kernel/msg203686.html

    Includes mach-omap2 fixes from Igor Grinberg.

    Tested-by: Robert Jarzmik
    Signed-off-by: Stephen Warren

    Stephen Warren
     

14 Mar, 2012

1 commit

  • Several platforms incorrectly use __io() for casting to 'void __iomem *'.
    This converts all of those uses to use the common IOMEM macro.

    Reported-by: Arnd Bergmann
    Signed-off-by: Rob Herring
    Acked-by: Anton Vorontsov
    Cc: Russell King
    Cc: Paul Mundt
    Cc: Magnus Damm
    Cc: Srinidhi Kasagar
    Acked-by: Linus Walleij
    Cc: linux-sh@vger.kernel.org
    Acked-by: Arnd Bergmann

    Rob Herring
     

07 Jul, 2011

1 commit

  • CNS3xxx SOCs have L310-compatible cache controller, so let's use it.

    With this patch benchmarking with 'gzip' shows that performance is
    doubled, and I'm still able to boot full-fledged userland over NFS
    (using PCIe NIC), so the support should be pretty robust.

    p.s. While CNS3xxx reports that it has PL310, it still needs to wait
    on cache line operations, so we should not select 'CACHE_PL310',
    which is a micro-optimization that removes these waits for v7 CPUs.
    Someday we'd better rename CACHE_PL310 Kconfig option into
    NO_CACHE_WAIT or something less ambiguous.

    Signed-off-by: Anton Vorontsov

    Anton Vorontsov
     

15 Dec, 2010

2 commits


03 May, 2010

1 commit