- 02 10月, 2013 1 次提交
-
-
由 Uwe Kleine-König 提交于
Instead of letting each driver call of_node_put do it centrally in the loop that also calls the CLOCKSOURCE_OF_DECLARE callbacks. This is less prone to error and also moves getting and putting the references into the same function. Consequently all respective of_node_put calls in drivers are removed. Signed-off-by: NUwe Kleine-König <u.kleine-koenig@pengutronix.de> Signed-off-by: NDaniel Lezcano <daniel.lezcano@linaro.org> Acked-by: NDavid Brown <davidb@codeaurora.org>
-
- 07 8月, 2013 1 次提交
-
-
由 Stephen Boyd 提交于
This allows us to remove the init_time callback in the DT machine descriptors, shrinking the code. Signed-off-by: NStephen Boyd <sboyd@codeaurora.org> Signed-off-by: NDavid Brown <davidb@codeaurora.org>
-
- 15 7月, 2013 1 次提交
-
-
由 Paul Gortmaker 提交于
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 5e427ec2 ("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. Note that some harmless section mismatch warnings may result, since notify_cpu_starting() and cpu_up() are arch independent (kernel/cpu.c) and are flagged as __cpuinit -- so if we remove the __cpuinit from the arch specific callers, we will also get section mismatch warnings. As an intermediate step, we intend to turn the linux/init.h cpuinit related content into no-ops as early as possible, since that will get rid of these warnings. In any case, they are temporary and harmless. This removes all the ARM uses of the __cpuinit macros from C code, and all __CPUINIT from assembly code. It also had two ".previous" section statements that were paired off against __CPUINIT (aka .section ".cpuinit.text") that also get removed here. [1] https://lkml.org/lkml/2013/5/20/589 Cc: Russell King <linux@arm.linux.org.uk> Cc: Will Deacon <will.deacon@arm.com> Cc: linux-arm-kernel@lists.infradead.org Signed-off-by: NPaul Gortmaker <paul.gortmaker@windriver.com>
-
- 25 6月, 2013 1 次提交
-
-
由 Stephen Boyd 提交于
Separate the msm_timer 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: NDavid Brown <davidb@codeaurora.org> Acked-by: NMarc Zyngier <marc.zyngier@arm.com> Cc: Daniel Walker <dwalker@fifo99.com> Cc: Bryan Huntsman <bryanh@codeaurora.org> Signed-off-by: NStephen Boyd <sboyd@codeaurora.org>
-
- 13 6月, 2013 1 次提交
-
-
由 Stephen Boyd 提交于
Nothing about the sched_clock implementation in the ARM port is specific to the architecture. Generalize the code so that other architectures can use it by selecting GENERIC_SCHED_CLOCK. Signed-off-by: NStephen Boyd <sboyd@codeaurora.org> [jstultz: Merge minor collisions with other patches in my tree] Signed-off-by: NJohn Stultz <john.stultz@linaro.org>
-
- 23 3月, 2013 3 次提交
-
-
由 Stephen Boyd 提交于
Without looping on the status bit, there is no way to guarantee that a clear of the timer has actually completed. This can cause us to enable the timer before the count has cleared and miss a timer interrupt. To simplify this patch, remove the timer register setup done during timer init, since it's duplicate work that is eventually done in the set_next_event() callback. Signed-off-by: NStephen Boyd <sboyd@codeaurora.org> Signed-off-by: NDavid Brown <davidb@codeaurora.org>
-
由 Stephen Boyd 提交于
The msm timer binding I wrote is bad. First off, the clock frequency in the binding for the dgt is wrong. Software divides down the input rate by 4 to achieve the rate listed in the binding. We also treat each individual timer as a separate hardware component, when in reality there is one timer block (that may be duplicated per cpu) with multiple timers within it. Depending on the version of the hardware there can be one or two general purpose timers, status and divider control registers, and an entirely different register layout. In the next patch we'll need to know about the different register layouts so that we can properly check the status register after clearing the count. The current binding makes this complicated because the general purpose timer's reg property doesn't indicate where that status register is, and in fact it is beyond the size of the reg property. Clean all this up by just having one node for the timer hardware, and describe all the interrupts and clock frequencies supported while having one reg property that covers the entire timer register region. We'll use the compatible field in the future to determine different register layouts and if we should read the status registers, etc. Signed-off-by: NStephen Boyd <sboyd@codeaurora.org> Signed-off-by: NDavid Brown <davidb@codeaurora.org>
-
由 Stephen Boyd 提交于
If the clockevent is forcibly reprogrammed to have a different match value we mistakenly assume the timer is not ticking and program a new match value while the timer is running. Although we clear the timer before programming a new match, it's better to stop the timer before clearing it so that we're sure the proper amount of ticks are counted. Failure to do so can lead to missed ticks and system hangs. Signed-off-by: NStephen Boyd <sboyd@codeaurora.org> Signed-off-by: NDavid Brown <davidb@codeaurora.org>
-
- 15 1月, 2013 1 次提交
-
-
由 Shawn Guo 提交于
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: NShawn Guo <shawn.guo@linaro.org> Cc: Nicolas Ferre <nicolas.ferre@atmel.com> Reviewed-by: NAnton Vorontsov <cbouatmailru@gmail.com> Acked-by: NKukjin Kim <kgene.kim@samsung.com> Cc: Russell King <linux@arm.linux.org.uk> Cc: Sascha Hauer <s.hauer@pengutronix.de> Cc: Jason Cooper <jason@lakedaemon.net> Tested-by: NRoland Stigge <stigge@antcom.de> Acked-by: NEric Miao <eric.y.miao@gmail.com> Cc: Haojian Zhuang <haojian.zhuang@gmail.com> Cc: David Brown <davidb@codeaurora.org> Tested-by: NTony Lindgren <tony@atomide.com> Acked-by: NBarry Song <baohua.song@csr.com> Tested-by: NStephen Warren <swarren@nvidia.com> Acked-by: NTony Prisk <linux@prisktech.co.nz> Cc: Lennert Buytenhek <buytenh@wantstofly.org> Cc: Wan ZongShun <mcuos.com@gmail.com> Acked-by: NViresh Kumar <viresh.kumar@linaro.org> Acked-by: NArnd Bergmann <arnd@arndb.de> Acked-by: NJason Cooper <jason@lakedaemon.net> Reviewed-by: NThomas Gleixner <tglx@linutronix.de> Signed-off-by: NOlof Johansson <olof@lixom.net>
-
- 13 1月, 2013 1 次提交
-
-
由 Rob Herring 提交于
Now that the GIC initialization sets up the handle_arch_irq pointer, we can remove it for all machines and make it static. Signed-off-by: NRob Herring <rob.herring@calxeda.com> Cc: Russell King <linux@arm.linux.org.uk> Cc: Anton Vorontsov <avorontsov@mvista.com> Cc: Kyungmin Park <kyungmin.park@samsung.com> Cc: Sascha Hauer <kernel@pengutronix.de> Cc: David Brown <davidb@codeaurora.org> Cc: Daniel Walker <dwalker@fifo99.com> Cc: Bryan Huntsman <bryanh@codeaurora.org> Acked-by: NTony Lindgren <tony@atomide.com> Cc: Paul Mundt <lethal@linux-sh.org> Cc: Magnus Damm <magnus.damm@gmail.com> Cc: Dinh Nguyen <dinguyen@altera.com> Cc: Shiraz Hashim <shiraz.hashim@st.com> Acked-by: NStephen Warren <swarren@nvidia.com> Cc: Srinidhi Kasagar <srinidhi.kasagar@stericsson.com> Cc: Linus Walleij <linus.walleij@linaro.org> Acked-by: NViresh Kumar <viresh.kumar@linaro.org> Acked-by: NKukjin Kim <kgene.kim@samsung.com> Acked-by: NShawn Guo <shawn.guo@linaro.org> Acked-by: NOlof Johansson <olof@lixom.net> Acked-by: NArnd Bergmann <arnd@arndb.de>
-
- 25 12月, 2012 1 次提交
-
-
由 Stephen Warren 提交于
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: NRobert Jarzmik <robert.jarzmik@free.fr> Signed-off-by: NStephen Warren <swarren@nvidia.com>
-
- 14 9月, 2012 6 次提交
-
-
由 Stephen Boyd 提交于
Remove the non-DT targets supported by 8960. This makes 8960 a device tree only target. Signed-off-by: NStephen Boyd <sboyd@codeaurora.org> Signed-off-by: NDavid Brown <davidb@codeaurora.org>
-
由 Stephen Boyd 提交于
We don't plan to support anything besides devicetree on these targets so remove all other machine support. Signed-off-by: NStephen Boyd <sboyd@codeaurora.org> Signed-off-by: NDavid Brown <davidb@codeaurora.org>
-
由 Stephen Boyd 提交于
Add support to setup the MSM timer via information obtained from the devicetree. Signed-off-by: NStephen Boyd <sboyd@codeaurora.org> [davidb@codeaurora.org: Remove leading zeros] Signed-off-by: NDavid Brown <davidb@codeaurora.org>
-
由 Stephen Boyd 提交于
The timer code relies on #defines from mach/iomap.h, cpu_is_*() checks, and a global irq #define. All this makes this file impossible to compile in a mult-target build. Therefore, make a sys_timer struct for each SoC so that machine descriptors can reference the correct timer. Then go through and replace all the defines with raw values that are passed to a common initialization function. This paves the way to adding DT support to this code as well as allows us to compile this file on multiple targets at the same time. Signed-off-by: NStephen Boyd <sboyd@codeaurora.org> Signed-off-by: NDavid Brown <davidb@codeaurora.org>
-
由 Stephen Boyd 提交于
The MSM code has some antiquated register writes to set up the PPIs to be edge triggered. Now that we have the percpu irq interface we don't need this code so let's remove it and update the percpu irq user (msm_timer) to set the irq type. Signed-off-by: NStephen Boyd <sboyd@codeaurora.org> Signed-off-by: NDavid Brown <davidb@codeaurora.org>
-
由 Stephen Boyd 提交于
arch/arm/mach-msm/timer.c:153:3: warning: incorrect type in initializer (different address spaces) arch/arm/mach-msm/timer.c:153:3: expected void const [noderef] <asn:3>*__vpp_verify arch/arm/mach-msm/timer.c:153:3: got struct clock_event_device [noderef] <asn:3>**<noident> arch/arm/mach-msm/timer.c:153:38: warning: incorrect type in assignment (different address spaces) arch/arm/mach-msm/timer.c:153:38: expected struct clock_event_device [noderef] <asn:3>*<noident> arch/arm/mach-msm/timer.c:153:38: got struct clock_event_device *evt arch/arm/mach-msm/timer.c:191:22: warning: incorrect type in assignment (different address spaces) arch/arm/mach-msm/timer.c:191:22: expected struct clock_event_device [noderef] <asn:3>**static [toplevel] percpu_evt arch/arm/mach-msm/timer.c:191:22: got struct clock_event_device *[noderef] <asn:3>*<noident> arch/arm/mach-msm/timer.c:196:4: warning: incorrect type in initializer (different address spaces) arch/arm/mach-msm/timer.c:196:4: expected void const [noderef] <asn:3>*__vpp_verify arch/arm/mach-msm/timer.c:196:4: got struct clock_event_device [noderef] <asn:3>**<noident> arch/arm/mach-msm/timer.c:196:39: warning: incorrect type in assignment (different address spaces) arch/arm/mach-msm/timer.c:196:39: expected struct clock_event_device [noderef] <asn:3>*<noident> arch/arm/mach-msm/timer.c:196:39: got struct clock_event_device *ce arch/arm/mach-msm/timer.c:198:24: warning: incorrect type in argument 4 (different address spaces) arch/arm/mach-msm/timer.c:198:24: expected void [noderef] <asn:3>*percpu_dev_id arch/arm/mach-msm/timer.c:198:24: got struct clock_event_device [noderef] <asn:3>**static [toplevel] percpu_evt Signed-off-by: NStephen Boyd <sboyd@codeaurora.org> Signed-off-by: NDavid Brown <davidb@codeaurora.org>
-
- 13 3月, 2012 1 次提交
-
-
由 Marc Zyngier 提交于
Convert the MSM timers to the runtime registration interface. Acked-by: NStephen Boyd <sboyd@codeaurora.org> Tested-by: NDavid Brown <davidb@codeaurora.org> Acked-by: NDavid Brown <davidb@codeaurora.org> Signed-off-by: NMarc Zyngier <marc.zyngier@arm.com>
-
- 25 2月, 2012 1 次提交
-
-
由 Stephen Boyd 提交于
Now that sched_clock is mandatory on ARM it's simple to add sched_clock support to the MSM timer code. Add it so that we get more accurate sched_clock output than the jiffies based version that's provided by default. Signed-off-by: NStephen Boyd <sboyd@codeaurora.org> Acked-by: NDavid Brown <davidb@codeaurora.org> Signed-off-by: NMarc Zyngier <marc.zyngier@arm.com>
-
- 11 11月, 2011 8 次提交
-
-
由 Stephen Boyd 提交于
Don't open code the min/max delta logic. Use the generic version instead. Also expand the number of bits we can handle because there isn't anything that says we can't handle all 32 bits. Before: max_delta_ns: 122880426391799 min_delta_ns: 122070 mult: 140737 shift: 32 After: max_delta_ns: 131071523464981 min_delta_ns: 122069 mult: 70369 shift: 31 Signed-off-by: NStephen Boyd <sboyd@codeaurora.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Marc Zyngier <marc.zyngier@arm.com> Signed-off-by: NDavid Brown <davidb@codeaurora.org>
-
由 Stephen Boyd 提交于
Some bootloaders may leave a pending interrupt for the timer and thus msm_timer_interrupt() has a check for a NULL event handler. Unmask and register for the interrupt after registering the clockevent so that we can get the NULL pointer check out of the fast path. Signed-off-by: NStephen Boyd <sboyd@codeaurora.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Marc Zyngier <marc.zyngier@arm.com> Signed-off-by: NDavid Brown <davidb@codeaurora.org>
-
由 Stephen Boyd 提交于
The timer frequency is currently ifdefed in addition to setting the DGT clock's divider value on SCORPIONMP targets. Setup the frequency dynamically using the existing cpu_is_*() branches and assign a custom clocksource read function for 7x01a to get the shift out of the generic path. Signed-off-by: NStephen Boyd <sboyd@codeaurora.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Marc Zyngier <marc.zyngier@arm.com> Signed-off-by: NDavid Brown <davidb@codeaurora.org>
-
由 Stephen Boyd 提交于
We can simplify the timer code now that we only use the DGT for the clocksource and the GPT for the clockevent. Get rid of the msm_clocks[] array and propagate the changes throughout the code. This reduces the lines of code in this file and improves readability. Signed-off-by: NStephen Boyd <sboyd@codeaurora.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Marc Zyngier <marc.zyngier@arm.com> Signed-off-by: NDavid Brown <davidb@codeaurora.org>
-
由 Stephen Boyd 提交于
MSM timers don't support an interrupt enable/disable bit. Therefore, when the timer is free running it's possible for the count to wrap and the match value to match again even though a set_next_event() call hasn't been made since the last match. Workaround the lack of an interrupt enable bit by explicitly stopping the timer in the interrupt handler when the clockevent is in ONESHOT mode. This should prevent any possibility of the timer wrapping and matching more than once per set_next_event(). Signed-off-by: NStephen Boyd <sboyd@codeaurora.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Marc Zyngier <marc.zyngier@arm.com> Signed-off-by: NDavid Brown <davidb@codeaurora.org>
-
由 Stephen Boyd 提交于
The clocksource shouldn't stop ticking when the clockevent stops. This is exactly what happens today with MSM timers. The same hardware is used for both the clockevent and the clocksource because the ratings of the two are the same. Fix this by registering a clockevent based on the GPT and a clocksource based on the DGT. This removes any other possible configuration (e.g. a GPT clocksource and a DGT clockevent) but that shouldn't be a big issue since we want higher precision timing than high precision scheduling interrupts. Signed-off-by: NStephen Boyd <sboyd@codeaurora.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Marc Zyngier <marc.zyngier@arm.com> Signed-off-by: NDavid Brown <davidb@codeaurora.org>
-
由 Stephen Boyd 提交于
Remove unused/unnecessary #defines, #includes, and use the BIT macro appropriately. Signed-off-by: NStephen Boyd <sboyd@codeaurora.org> Signed-off-by: NDavid Brown <davidb@codeaurora.org>
-
由 Stephen Boyd 提交于
It is more correct to only define the local timer support code when CONFIG_LOCAL_TIMERS=y. Signed-off-by: NStephen Boyd <sboyd@codeaurora.org> Signed-off-by: NDavid Brown <davidb@codeaurora.org>
-
- 23 10月, 2011 1 次提交
-
-
由 Marc Zyngier 提交于
This patch remove the hardcoded link between local timers and PPIs, and convert the PPI users (TWD, MCT and MSM timers) to the new *_percpu_irq interface. Also some collateral cleanup (local_timer_ack() is gone, and the interrupt handler is strictly private to each driver). PPIs are now useable for more than just the local timers. Additional testing by David Brown (msm8250 and msm8660) and Shawn Guo (imx6q). Cc: David Brown <davidb@codeaurora.org> Cc: Thomas Gleixner <tglx@linutronix.de> Acked-by: NDavid Brown <davidb@codeaurora.org> Tested-by: NDavid Brown <davidb@codeaurora.org> Tested-by: NShawn Guo <shawn.guo@linaro.org> Signed-off-by: NMarc Zyngier <marc.zyngier@arm.com>
-
- 21 6月, 2011 1 次提交
-
-
由 Stephen Boyd 提交于
The DGT runs at 27 MHz divided by 4 on 8660 and 8960. Signed-off-by: NStephen Boyd <sboyd@codeaurora.org> Signed-off-by: NDavid Brown <davidb@codeaurora.org>
-
- 18 6月, 2011 1 次提交
-
-
由 Jeff Ohlstein 提交于
Some msm targets have timers whose lower bits are unreliable. So, we present our timers as lower frequency than they actually are, and ignore the bottom 5 bits on such targets. This compensation was erroneously removed from the msm_read_timer_count function, so restore it. This was broken by 94790ec2 "msm: timer: SMP timer support for msm". Signed-off-by: NJeff Ohlstein <johlstei@codeaurora.org>
-
- 01 6月, 2011 1 次提交
-
-
由 Stephen Boyd 提交于
Fix build breakage on SMP=y builds due to 0f7b332f (ARM: consolidate SMP cross call implementation, 2011-04-03) arch/arm/mach-msm/timer.c: In function 'local_timer_setup': arch/arm/mach-msm/timer.c:295: error: implicit declaration of function 'gic_enable_ppi' Signed-off-by: NStephen Boyd <sboyd@codeaurora.org> Signed-off-by: NDavid Brown <davidb@codeaurora.org>
-
- 01 4月, 2011 1 次提交
-
-
由 David Brown 提交于
Change af90f10d "ARM: 6759/1: smp: Select local timers vs broadcast timer support runtime" missed a return statement, causing a compile warning: arch/arm/mach-msm/timer.c:272: warning: 'return' with no value, in function returning non-void Trivially return 0 for success when running on cpu 0 (to match the comment and previous behavior). Signed-off-by: NDavid Brown <davidb@codeaurora.org>
-
- 24 2月, 2011 1 次提交
-
-
由 Santosh Shilimkar 提交于
The current code support of dummy timers in absence of local timer is compile time. This is an attempt to convert it to runtime so that on few SOC version if the local timers aren't supported kernel can switch to dummy timers. OMAP4430 ES1.0 does suffer from this limitation. This patch should not have any functional impact on affected files. Cc: Daniel Walker <dwalker@codeaurora.org> Cc: Bryan Huntsman <bryanh@codeaurora.org> Cc: Tony Lindgren <tony@atomide.com> Cc: Kukjin Kim <kgene.kim@samsung.com> Cc: Paul Mundt <lethal@linux-sh.org> Cc: Magnus Damm <magnus.damm@gmail.com> Cc: Colin Cross <ccross@android.com> Cc: Erik Gilling <konkers@android.com> Cc: Srinidhi Kasagar <srinidhi.kasagar@stericsson.com> Cc: Linus Walleij <linus.walleij@stericsson.com> Signed-off-by: NSantosh Shilimkar <santosh.shilimkar@ti.com> Acked-by: NDavid Brown <davidb@codeaurora.org> Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
-
- 22 1月, 2011 2 次提交
-
-
由 Stepan Moskovchenko 提交于
Modify the macros in the MSM timer driver to support the MSM8960 chip. Signed-off-by: NStepan Moskovchenko <stepanm@codeaurora.org> Signed-off-by: NDavid Brown <davidb@codeaurora.org>
-
由 David Brown 提交于
Allow the timer register to be determined dynamically instead of at compile time. Use common virtual addresses for the registers across all MSM chips, and select the register mappings based on the detected CPU. Signed-off-by: NDavid Brown <davidb@codeaurora.org>
-
- 08 1月, 2011 1 次提交
-
-
由 Jeff Ohlstein 提交于
The msm provides timer hardware that is private to each core. Each timer has separate counter and match registers, so we create separate clock_event_devices for each core. For the global clocksource, use cpu 0's counter. Signed-off-by: NJeff Ohlstein <johlstei@codeaurora.org> Signed-off-by: NDavid Brown <davidb@codeaurora.org>
-
- 23 12月, 2010 1 次提交
-
-
由 Russell King 提交于
In d7e81c26 (clocksource: Add clocksource_register_hz/khz interface) new interfaces were added which simplify (and optimize) the selection of the divisor shift/mult constants. Switch over to using this new interface. Tested-By: NJeff Ohlstein <johlstei@codeaurora.org> Acked-by: NDavid Brown <davidb@codeaurora.org> Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
-
- 28 10月, 2010 1 次提交
-
-
由 Jeff Ohlstein 提交于
The shift of 24 causes the shift and multiply operation to sometimes overflow, resulting in incorrect timer values and poor performance. Signed-off-by: NJeff Ohlstein <johlstei@codeaurora.org> Signed-off-by: NDaniel Walker <dwalker@codeaurora.org>
-
- 09 10月, 2010 1 次提交
-
-
由 Jeff Ohlstein 提交于
Signed-off-by: NJeff Ohlstein <johlstei@codeaurora.org> Signed-off-by: NDaniel Walker <dwalker@codeaurora.org>
-
- 14 5月, 2010 1 次提交
-
-
由 Daniel Walker 提交于
Some SoC need to redefine MSM_DGT_BASE from it's default. This allows it to be defined in a header to override the default value. Signed-off-by: NDaniel Walker <dwalker@codeaurora.org>
-