15 Oct, 2015

1 commit

  • Since evt structure is embedded in per-CPU mevt structure it's
    definitely faster to use container_of() to get access to mevt
    if we have evt (for example as incoming function argument) instead
    of more expensive approach with this_cpu_ptr(&percpu_mct_tick).
    this_cpu_ptr() on per-CPU mevt structure leads to access to cp15
    to get cpu id and arithmetic operations.
    Container_of() is cheaper since it's just one asm instruction.
    This should work if used evt pointer is correct and owned by
    local mevt structure.

    For example, before this patch set_state_shutdown() looks like:

    4a4: e92d4010 push {r4, lr}
    4a8: e3004000 movw r4, #0
    4ac: ebfffffe bl 0
    4b0: e3003000 movw r3, #0
    4b4: e3404000 movt r4, #0
    4b8: e3403000 movt r3, #0
    4bc: e7933100 ldr r3, [r3, r0, lsl #2]
    4c0: e0844003 add r4, r4, r3
    4c4: e59400c0 ldr r0, [r4, #192] ; 0xc0
    4c8: ebffffd4 bl 420
    4cc: e3a00000 mov r0, #0
    4d0: e8bd8010 pop {r4, pc}

    With this patch:

    4a4: e92d4010 push {r4, lr}
    4a8: e59000c0 ldr r0, [r0, #192] ; 0xc0
    4ac: ebffffdb bl 420
    4b0: e3a00000 mov r0, #0
    4b4: e8bd8010 pop {r4, pc}

    Also, for me size of exynos_mct.o decreased from 84588 bytes
    to 83956.

    Signed-off-by: Alexey Klimov
    Signed-off-by: Daniel Lezcano
    Reviewed-by: Krzysztof Kozlowski

    Alexey Klimov
     

10 Aug, 2015

2 commits


27 Jun, 2015

1 commit

  • Whilst testing cpu hotplug events on kernel configured with
    DEBUG_PREEMPT and DEBUG_ATOMIC_SLEEP we get following BUG message,
    caused by calling request_irq() and free_irq() in the context of
    hotplug notification (which is in this case atomic context).

    [ 40.785859] CPU1: Software reset
    [ 40.786660] BUG: sleeping function called from invalid context at mm/slub.c:1241
    [ 40.786668] in_atomic(): 1, irqs_disabled(): 128, pid: 0, name: swapper/1
    [ 40.786678] Preemption disabled at:[< (null)>] (null)
    [ 40.786681]
    [ 40.786692] CPU: 1 PID: 0 Comm: swapper/1 Not tainted 3.19.0-rc4-00024-g7dca860 #36
    [ 40.786698] Hardware name: SAMSUNG EXYNOS (Flattened Device Tree)
    [ 40.786728] [] (unwind_backtrace) from [] (show_stack+0x10/0x14)
    [ 40.786747] [] (show_stack) from [] (dump_stack+0x70/0xbc)
    [ 40.786767] [] (dump_stack) from [] (kmem_cache_alloc+0xd8/0x170)
    [ 40.786785] [] (kmem_cache_alloc) from [] (request_threaded_irq+0x64/0x128)
    [ 40.786804] [] (request_threaded_irq) from [] (exynos4_local_timer_setup+0xc0/0x13c)
    [ 40.786820] [] (exynos4_local_timer_setup) from [] (exynos4_mct_cpu_notify+0x30/0xa8)
    [ 40.786838] [] (exynos4_mct_cpu_notify) from [] (notifier_call_chain+0x44/0x84)
    [ 40.786857] [] (notifier_call_chain) from [] (__cpu_notify+0x28/0x44)
    [ 40.786873] [] (__cpu_notify) from [] (secondary_start_kernel+0xec/0x150)
    [ 40.786886] [] (secondary_start_kernel) from [] (0x40008764)

    Interrupts cannot be requested/freed in the CPU_STARTING/CPU_DYING
    notifications which run on the hotplugged cpu with interrupts and
    preemption disabled.

    To avoid the issue, request the interrupts for all possible cpus in
    the boot code. The interrupts are marked NO_AUTOENABLE to avoid a racy
    request_irq/disable_irq() sequence. The flag prevents the
    request_irq() code from enabling the interrupt immediately.

    The interrupt is then enabled in the CPU_STARTING notifier of the
    hotplugged cpu and again disabled with disable_irq_nosync() in the
    CPU_DYING notifier.

    [ tglx: Massaged changelog to match the patch ]

    Fixes: 7114cd749a12 ("clocksource: exynos_mct: use (request/free)_irq calls for local timer registration")
    Reported-by: Krzysztof Kozlowski
    Reviewed-by: Krzysztof Kozlowski
    Tested-by: Krzysztof Kozlowski
    Tested-by: Marcin Jabrzyk
    Signed-off-by: Damian Eppel
    Cc: m.szyprowski@samsung.com
    Cc: kyungmin.park@samsung.com
    Cc: daniel.lezcano@linaro.org
    Cc: kgene@kernel.org
    Cc: linux-arm-kernel@lists.infradead.org
    Link: http://lkml.kernel.org/r/1435324984-7328-1-git-send-email-d.eppel@samsung.com
    Signed-off-by: Thomas Gleixner
    Cc:

    Damian Eppel
     

02 Jun, 2015

3 commits


05 Jan, 2015

1 commit

  • EXYNOS4_MCT_L_MASK is defined as 0xffffff00, so applying this bitmask
    produces a number outside the range 0x00 to 0xff, which always results
    in execution of the default switch statement.

    Obviously this is wrong and git history shows that the bitmask inversion
    was incorrectly set during a refactoring of the MCT code.

    Fix this by putting the inversion at the correct position again.

    Cc: stable@vger.kernel.org
    Acked-by: Kukjin Kim
    Reported-by: GP Orcullo
    Reviewed-by: Doug Anderson
    Signed-off-by: Tobias Jakobi
    Signed-off-by: Daniel Lezcano

    Tobias Jakobi
     

23 Jul, 2014

2 commits

  • The MCT has a nice 64-bit counter. That means that we _can_ register
    as a 64-bit clocksource and sched_clock. ...but that doesn't mean we
    should.

    The 64-bit counter is read by reading two 32-bit registers. That
    means reading needs to be something like:
    - Read upper half
    - Read lower half
    - Read upper half and confirm that it hasn't changed.

    That wouldn't be terrible, but:
    - THe MCT isn't very fast to access (hundreds of nanoseconds).
    - The clocksource is queried _all the time_.

    In total system profiles of real workloads on ChromeOS, we've seen
    exynos_frc_read() taking 2% or more of CPU time even after optimizing
    the 3 reads above to 2 (see below).

    The MCT is clocked at ~24MHz on all known systems. That means that
    the 32-bit half of the counter rolls over every ~178 seconds. This
    inspired an optimization in ChromeOS to cache the upper half between
    calls, moving 3 reads to 2. ...but we can do better! Having a 32-bit
    timer that flips every 178 seconds is more than sufficient for Linux.
    Let's just use the lower half of the MCT.

    Times on 5420 to do 1000000 gettimeofday() calls from userspace:
    * Original code: 1323852 us
    * ChromeOS cache upper half: 1173084 us
    * ChromeOS + ldmia to optimize: 1045674 us
    * Use lower 32-bit only (this code): 1014429 us

    As you can see, the time used doesn't increase linearly with the
    number of reads and we can make 64-bit work almost as fast as 32-bit
    with a bit of assembly code. But since there's no real gain for
    64-bit, let's go with the simplest and fastest implementation.

    Note: with this change roughly half the time for gettimeofday() is
    spent in exynos_frc_read(). The rest is timer / system call overhead.

    Also note: this patch disables the use of the MCT on ARM64 systems
    until we've sorted out how to make "cycles_t" always 32-bit. Really
    ARM64 systems should be using arch timers anyway.

    Signed-off-by: Doug Anderson
    Acked-by Vincent Guittot
    Signed-off-by: Kukjin Kim
    Signed-off-by: Daniel Lezcano

    Doug Anderson
     
  • Using the __raw functions is discouraged. Update the file to
    consistently use the proper functions.

    Signed-off-by: Doug Anderson
    Signed-off-by: Kukjin Kim
    Signed-off-by: Daniel Lezcano

    Doug Anderson
     

05 Jul, 2014

2 commits

  • This patch registers the exynos mct clocksource as the current timer
    as it has constant clock rate. This will generate correct udelay for
    the exynos platform and avoid using unnecessary calibrated
    jiffies. This change has been tested on exynos5420 based board and
    udelay is very close to expected.

    Without this patch udelay() on exynos5400 / exynos5800 is wildly
    inaccurate due to big.LITTLE not adjusting loops_per_jiffy correctly.
    Also without this patch udelay() on exynos5250 can be innacruate
    during transitions between frequencies < 800 MHz (you'll go 200 MHz ->
    800 MHz -> 300 MHz and will run at 800 MHz for a time with the wrong
    loops_per_jiffy).

    [dianders: reworked and created version 3]

    Signed-off-by: Amit Daniel Kachhap
    Signed-off-by: Doug Anderson
    Signed-off-by: Kukjin Kim

    Amit Daniel Kachhap
     
  • In (93bfb76 clocksource: exynos_mct: register sched_clock callback) we
    supported using the MCT as a scheduler clock. We properly marked
    exynos4_read_sched_clock() as notrace. However, we then went and
    called another function that _wasn't_ notrace. That means if you do:

    cd /sys/kernel/debug/tracing/
    echo function_graph > current_tracer

    You'll get a crash.

    Fix this (but still let other readers of the MCT be trace-enabled) by
    adding an extra function. It's important to keep other users of MCT
    traceable because the MCT is actually quite slow to access and we want
    exynos4_frc_read() to show up in ftrace profiles if it's the
    bottleneck.

    Signed-off-by: Doug Anderson
    Signed-off-by: Kukjin Kim

    Doug Anderson
     

16 Jun, 2014

1 commit

  • Unfortunately on some exynos systems, resetting the mct counter also
    resets the architected timer counter. This can cause problems if the
    architected timer driver has already been initialized because the kernel
    will think that the counter has wrapped around, causing a big jump in
    printk timestamps and delaying any scheduled clock events until the
    counter reaches the value it had before it was reset.

    The kernel code makes no assumptions about the initial value of the mct
    counter so there is no reason from a software perspective to clear the
    counter before starting it. This also fixes the problems described in
    the previous paragraph.

    Cc: Olof Johansson
    Cc: Tomasz Figa
    Signed-off-by: Chirantan Ekbote
    Reviewed-by: Doug Anderson
    Tested-by: Doug Anderson
    Signed-off-by: Kukjin Kim

    Chirantan Ekbote
     

22 May, 2014

1 commit


02 May, 2014

1 commit


18 Apr, 2014

2 commits

  • After hotplugging CPU1 the first call of interrupt handler for CPU1
    oneshot timer was called on CPU0 because it fired before setting IRQ
    affinity. Affected are SoCs where Multi Core Timer interrupts are
    shared (SPI), e.g. Exynos 4210.

    During setup of the MCT timers the clock event device should be
    registered after setting the affinity for interrupt. This will prevent
    starting the timer too early.

    Signed-off-by: Krzysztof Kozlowski
    Signed-off-by: Thomas Gleixner
    Cc: Kyungmin Park
    Cc: Marek Szyprowski
    Cc: Bartlomiej Zolnierkiewicz
    Cc: Tomasz Figa ,
    Cc: Daniel Lezcano ,
    Cc: Kukjin Kim
    Cc: linux-arm-kernel@lists.infradead.org,
    Cc: stable@vger.kernel.org
    Link: http://lkml.kernel.org/r/20140416143316.299247848@linutronix.de
    Signed-off-by: Thomas Gleixner

    Krzysztof Kozlowski
     
  • The starting cpu is not yet in the online mask so irq_set_affinity()
    fails which results in per cpu timers for this cpu ending up on some
    other online cpu, ususally cpu 0.

    Use irq_force_affinity() which disables the online mask check and
    makes things work.

    Signed-off-by: Thomas Gleixner
    Tested-by: Krzysztof Kozlowski
    Cc: Kyungmin Park
    Cc: Marek Szyprowski
    Cc: Bartlomiej Zolnierkiewicz
    Cc: Tomasz Figa ,
    Cc: Daniel Lezcano ,
    Cc: Kukjin Kim
    Cc: linux-arm-kernel@lists.infradead.org,
    Cc: stable@vger.kernel.org
    Link: http://lkml.kernel.org/r/20140416143316.106665251@linutronix.de
    Signed-off-by: Thomas Gleixner

    Thomas Gleixner
     

06 Apr, 2014

1 commit

  • Pull ARM SoC cleanups from Arnd Bergmann:
    "These cleanup patches are mainly move stuff around and should all be
    harmless. They are mainly split out so that other branches can be
    based on top to avoid conflicts.

    Notable changes are:

    - We finally remove all mach/timex.h, after CLOCK_TICK_RATE is no
    longer used (Uwe Kleine-König)
    - The Qualcomm MSM platform is split out into legacy mach-msm and
    new-style mach-qcom, to allow easier maintainance of the new
    hardware support without regressions (Kumar Gala)
    - A rework of some of the Kconfig logic to simplify multiplatform
    support (Rob Herring)
    - Samsung Exynos gets closer to supporting multiplatform (Sachin
    Kamat and others)
    - mach-bcm3528 gets merged into mach-bcm (Stephen Warren)
    - at91 gains some common clock framework support (Alexandre Belloni,
    Jean-Jacques Hiblot and other French people)"

    * tag 'cleanup-3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (89 commits)
    ARM: hisi: select HAVE_ARM_SCU only for SMP
    ARM: efm32: allow uncompress debug output
    ARM: prima2: build reset code standalone
    ARM: at91: add PWM clock
    ARM: at91: move sam9261 SoC to common clk
    ARM: at91: prepare common clk transition for sam9261 SoC
    ARM: at91: updated the at91_dt_defconfig with support for the ADS7846
    ARM: at91: dt: sam9261: Device Tree support for the at91sam9261ek
    ARM: at91: dt: defconfig: Added the sam9261 to the list of DT-enabled SOCs
    ARM: at91: dt: Add at91sam9261 dt SoC support
    ARM: at91: switch sam9rl to common clock framework
    ARM: at91/dt: define main clk frequency of at91sam9rlek
    ARM: at91/dt: define at91sam9rl clocks
    ARM: at91: prepare common clk transition for sam9rl SoCs
    ARM: at91: prepare sam9 dt boards transition to common clk
    ARM: at91: dt: sam9rl: Device Tree for the at91sam9rlek
    ARM: at91/defconfig: Add the sam9rl to the list of DT-enabled SOCs
    ARM: at91: Add at91sam9rl DT SoC support
    ARM: at91: prepare at91sam9rl DT transition
    ARM: at91/defconfig: refresh at91sam9260_9g20_defconfig
    ...

    Linus Torvalds
     

12 Mar, 2014

1 commit


14 Feb, 2014

1 commit


16 Dec, 2013

1 commit


26 Sep, 2013

1 commit

  • Some variants of Exynos MCT, namely exynos4210-mct at the moment, use
    normal, shared interrupts for local timers. This means that each
    interrupt must have correct affinity set to fire only on CPU
    corresponding to given local timer.

    However after recent conversion of clocksource drivers to not use the
    local timer API for local timer initialization any more, the point of
    time when local timers get initialized changed and irq_set_affinity()
    fails because the CPU is not marked as online yet.

    This patch fixes this by moving the call to irq_set_affinity() to
    CPU_ONLINE notification, so the affinity is being set when the CPU goes
    online.

    This fixes a regression introduced by commit
    ee98d27df6 ARM: EXYNOS4: Divorce mct from local timer API
    which rendered all Exynos4210 based boards unbootable due to
    failing irq_set_affinity() making local timers inoperatible.

    Signed-off-by: Tomasz Figa
    Signed-off-by: Kyungmin Park
    Acked-by: Stephen Boyd
    Signed-off-by: Daniel Lezcano

    Tomasz Figa
     

24 Jul, 2013

1 commit

  • …/davidb/linux-msm into next/cleanup

    From Stephen Boyd:

    Now that we have a generic arch hook for broadcast we can remove the
    local timer API entirely. Doing so will reduce code in ARM core, reduce
    the architecture dependencies of our timer drivers, and simplify the code
    because we no longer go through an architecture layer that is essentially
    a hotplug notifier.

    * tag 'remove-local-timers' of git://git.kernel.org/pub/scm/linux/kernel/git/davidb/linux-msm:
    ARM: smp: Remove local timer API
    clocksource: time-armada-370-xp: Divorce from local timer API
    clocksource: time-armada-370-xp: Fix sparse warning
    ARM: msm: Divorce msm_timer from local timer API
    ARM: PRIMA2: Divorce timer-marco from local timer API
    ARM: EXYNOS4: Divorce mct from local timer API
    ARM: OMAP2+: Divorce from local timer API
    ARM: smp_twd: Divorce smp_twd from local timer API
    ARM: smp: Remove duplicate dummy timer implementation

    Resolved a large number of conflicts due to __cpuinit cleanups, etc.

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

    Olof Johansson
     

15 Jul, 2013

1 commit

  • The __cpuinit type of throwaway sections might have made sense
    some time ago when RAM was more constrained, but now the savings
    do not offset the cost and complications. For example, the fix in
    commit 5e427ec2d0 ("x86: Fix bit corruption at CPU resume time")
    is a good example of the nasty type of bugs that can be created
    with improper use of the various __init prefixes.

    After a discussion on LKML[1] it was decided that cpuinit should go
    the way of devinit and be phased out. Once all the users are gone,
    we can then finally remove the macros themselves from linux/init.h.

    This removes all the drivers/clocksource and drivers/irqchip uses of
    the __cpuinit macros from all C files.

    [1] https://lkml.org/lkml/2013/5/20/589

    Cc: John Stultz
    Cc: Thomas Gleixner
    Acked-by: Thomas Gleixner
    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     

25 Jun, 2013

1 commit

  • Separate the mct local timers from the local timer API. This will
    allow us to remove ARM local timer support in the near future and
    gets us closer to moving this driver to drivers/clocksource.

    Acked-by: Kukjin Kim
    Acked-by: Marc Zyngier
    Cc: Thomas Abraham
    Signed-off-by: Stephen Boyd

    Stephen Boyd
     

19 Jun, 2013

1 commit


08 May, 2013

2 commits

  • Pull late ARM Exynos multiplatform changes from Arnd Bergmann:
    "These continue the multiplatform support for exynos, adding support
    for building most of the essential drivers (clocksource, clk, irqchip)
    when combined with other platforms. As a result, it should become
    really easy to add full multiplatform exynos support in 3.11, although
    we don't yet enable it for 3.10.

    The changes were not included in the earlier multiplatform series in
    order to avoid clashes with the other Exynos updates.

    This also includes work from Tomasz Figa to fix the pwm clocksource
    code on Exynos, which is not strictly required for multiplatform, but
    related to the other patches in this set and needed as a bug fix for
    at least one board."

    * tag 'multiplatform-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (22 commits)
    ARM: dts: exynops4210: really add universal_c210 dts
    ARM: dts: exynos4210: Add basic dts file for universal_c210 board
    ARM: dts: exynos4: Add node for PWM device
    ARM: SAMSUNG: Do not register legacy timer interrupts on Exynos
    clocksource: samsung_pwm_timer: Work around rounding errors in clockevents core
    clocksource: samsung_pwm_timer: Correct programming of clock events
    clocksource: samsung_pwm_timer: Use proper clockevents max_delta
    clocksource: samsung_pwm_timer: Add support for non-DT platforms
    clocksource: samsung_pwm_timer: Drop unused samsung_pwm struct
    clocksource: samsung_pwm_timer: Keep all driver data in a structure
    clocksource: samsung_pwm_timer: Make PWM spinlock global
    clocksource: samsung_pwm_timer: Let platforms select the driver
    Documentation: Add device tree bindings for Samsung PWM timers
    clocksource: add samsung pwm timer driver
    irqchip: exynos: look up irq using irq_find_mapping
    irqchip: exynos: pass irq_base from platform
    irqchip: exynos: localize irq lookup for ATAGS
    irqchip: exynos: allocate combiner_data dynamically
    irqchip: exynos: pass max combiner number to combiner_init
    ARM: exynos: add missing properties for combiner IRQs
    ...

    Linus Torvalds
     
  • Pull ARM SoC late cleanups from Arnd Bergmann:
    "These are cleanups and smaller changes that either depend on earlier
    feature branches or came in late during the development cycle. We
    normally try to get all cleanups early, so these are the exceptions:

    - A follow-up on the clocksource reworks, hopefully the last time we
    need to merge clocksource subsystem changes through arm-soc.

    A first set of patches was part of the original 3.10 arm-soc
    cleanup series because of interdependencies with timer drivers now
    moved out of arch/arm.

    - Migrating the SPEAr13xx platform away from using auxdata for DMA
    channel descriptions towards using information in device tree,
    based on the earlier SPEAr multiplatform series

    - A few follow-ups on the Atmel SAMA5 support and other changes for
    Atmel at91 based on the larger at91 reworks.

    - Moving the armada irqchip implementation to drivers/irqchip

    - Several OMAP cleanups following up on the larger series already
    merged in 3.10."

    * tag 'cleanup-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (50 commits)
    ARM: OMAP4: change the device names in usb_bind_phy
    ARM: OMAP2+: Fix mismerge for timer.c between ff931c82 and da4a686a
    ARM: SPEAr: conditionalize SMP code
    ARM: arch_timer: Silence debug preempt warnings
    ARM: OMAP: remove unused variable
    serial: amba-pl011: fix !CONFIG_DMA_ENGINE case
    ata: arasan: remove the need for platform_data
    ARM: at91/sama5d34ek.dts: remove not needed compatibility string
    ARM: at91: dts: add MCI DMA support
    ARM: at91: dts: add i2c dma support
    ARM: at91: dts: set #dma-cells to the correct value
    ARM: at91: suspend both memory controllers on at91sam9263
    irqchip: armada-370-xp: slightly cleanup irq controller driver
    irqchip: armada-370-xp: move IRQ handler to avoid forward declaration
    irqchip: move IRQ driver for Armada 370/XP
    ARM: mvebu: move L2 cache initialization in init_early()
    devtree: add binding documentation for sp804
    ARM: integrator-cp: convert use CLKSRC_OF for timer init
    ARM: versatile: use OF init for sp804 timer
    ARM: versatile: add versatile dtbs to dtbs target
    ...

    Linus Torvalds
     

20 Apr, 2013

2 commits


18 Apr, 2013

1 commit

  • This is the 2nd part of ARM timer clean-ups for 3.10. This series has
    the following changes:

    - Add sched_clock selection logic to select the highest frequency clock
    - Use full 64-bit arch timer counter for sched_clock
    - Convert arch timer, sp804 and integrator-cp timers to CLKSRC_OF and
    adapt all users to use clocksource_of_init

    * tag 'clksrc-cleanup-for-3.10-part2' of git://sources.calxeda.com/kernel/linux:
    devtree: add binding documentation for sp804
    ARM: integrator-cp: convert use CLKSRC_OF for timer init
    ARM: versatile: use OF init for sp804 timer
    ARM: versatile: add versatile dtbs to dtbs target
    ARM: vexpress: remove extra timer-sp control register clearing
    ARM: dts: vexpress: disable CA9 core tile sp804 timer
    ARM: vexpress: remove sp804 OF init
    ARM: highbank: use OF init for sp804 timer
    ARM: timer-sp: convert to use CLKSRC_OF init
    OF: add empty of_device_is_available for !OF
    ARM: convert arm/arm64 arch timer to use CLKSRC_OF init
    ARM: make machine_desc->init_time default to clocksource_of_init
    ARM: arch_timer: use full 64-bit counter for sched_clock
    ARM: make sched_clock just call a function pointer
    ARM: sched_clock: allow changing to higher frequency counter

    Signed-off-by: Olof Johansson

    This has a nasty set of conflicts with the exynos MCT code, which was
    moved in a separate branch, and then fixed up when merged in, but still
    conflicts a bit here. It should have been sorted out by this merge though.

    Olof Johansson
     

10 Apr, 2013

2 commits

  • …t/kgene/linux-samsung into next/drivers

    From Kukjin Kim <kgene.kim@samsung.com>:

    add suppport common clock framework for exynos

    * tag 'clk-exynos-for-v3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung: (73 commits)
    ARM: EXYNOS: fix compilation error introduced due to common clock migration
    clk: exynos5250: Fix divider values for sclk_mmc{0,1,2,3}
    clk: exynos4: export clocks required for fimc-is
    clk: samsung: Fix compilation error
    clk: exynos5250: register display block gate clocks to common clock framework
    clk: exynos4: Add support for SoC-specific register save list
    clk: exynos4: Add missing registers to suspend save list
    clk: exynos4: Remove E4X12 prefix from SRC_DMC register
    clk: exynos4: Add E4210 prefix to GATE_IP_PERIR register
    clk: exynos4: Add E4210 prefix to LCD1 clock registers
    clk: exynos4: Remove SoC-specific registers from save list
    clk: exynos4: Use SRC_MASK_PERIL{0,1} definitions
    clk: exynos4: Define {E,V}PLL registers
    clk: exynos4: Add missing mout_sata on Exynos4210
    clk: exynos4: Add missing CMU_TOP and ISP clocks
    clk: exynos4: Add G3D clocks
    clk: exynos4: Add camera related clock definitions
    clk: exynos4: Export mout_core clock of Exynos4210
    clk: samsung: Remove unimplemented ops for pll
    clk: exynos4: Export clocks used by exynos cpufreq drivers
    ...

    [arnd: add missing #address-cells property in mshc DT node]

    Signed-off-by: Arnd Bergmann <arnd@arndb.de>

    Arnd Bergmann
     
  • …t/kgene/linux-samsung into next/drivers

    From Kukjin Kim <kgene.kim@samsung.com>:

    add support exynos mct device tree and move into drivers/clocksource

    * tag 'mct-exynos-for-v3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung:
    clocksource: mct: Add terminating entry for exynos_mct_ids table
    clocksource: mct: Add missing semicolons in exynos_mct.c
    ARM: EXYNOS: move mct driver to drivers/clocksource
    ARM: EXYNOS: remove static io-remapping of mct registers for Exynos5
    ARM: dts: add mct device tree node for all supported Exynos SoC's
    ARM: EXYNOS: allow dt based discovery of mct controller using clocksource_of_init
    ARM: EXYNOS: add device tree support for MCT controller driver
    ARM: EXYNOS: prepare an array of MCT interrupt numbers and use it
    ARM: EXYNOS: add a register base address variable in mct controller driver

    Conflicts:
    drivers/clocksource/Makefile
    drivers/clocksource/exynos_mct.c

    [arnd: adapt to CLOCKSOURCE_OF_DECLARE interface change]

    Signed-off-by: Arnd Bergmann <arnd@arndb.de>

    Arnd Bergmann
     

04 Apr, 2013

2 commits

  • The of_device_id table is supposed to be zero-terminated.

    Signed-off-by: Axel Lin
    Signed-off-by: Kukjin Kim

    Axel Lin
     
  • The CLOCKSOURCE_OF_DECLARE lines were added without a semicolon at the
    end. On my system this causes a compile-time error that looks like:

    drivers/clocksource/exynos_mct.c:557:202: warning: comparison of distinct pointer types lacks a cast [enabled by default]
    drivers/clocksource/exynos_mct.c:558:1: error: expected ',' or ';' before 'static'

    The error didn't show up till now because there was an extra semicolon
    at end of the CLOCKSOURCE_OF_DECLARE definition that was removed by
    Arnd Bergmann in "clocksource: make CLOCKSOURCE_OF_DECLARE type safe"

    Signed-off-by: Doug Anderson
    Signed-off-by: Kukjin Kim

    Doug Anderson
     

25 Mar, 2013

2 commits


09 Mar, 2013

1 commit