Commit 9503427e authored by Olof Johansson's avatar Olof Johansson

Merge tag 'fixes-rcu-fiq-signed' of...

Merge tag 'fixes-rcu-fiq-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into fixes

Fixes for omaps for v4.7-rc cycle:

- Two boot warning fixes from the RCU tree that should have gotten
  merged several weeks ago already but did not because of issues
  with who merges them. Paul has now split the RCU warning fixes into
  sets for various maintainers.

- Fix ams-delta FIQ regression caused by omap1 sparse IRQ changes

- Fix PM for omap3 boards using timer12 and gptimer, like the
  original beagleboard

- Fix hangs on am437x-sk-evm by lowering the I2C bus speed

* tag 'fixes-rcu-fiq-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap:
  ARM: dts: am437x-sk-evm: Reduce i2c0 bus speed for tps65218
  ARM: OMAP2+: timer: add probe for clocksources
  ARM: OMAP1: fix ams-delta FIQ handler to work with sparse IRQ
  arm: Use _rcuidle for smp_cross_call() tracepoints
  arm: Use _rcuidle tracepoint to allow use from idle
Signed-off-by: default avatarOlof Johansson <olof@lixom.net>
parents 0e289e53 d279f7a7
...@@ -418,7 +418,7 @@ &i2c0 { ...@@ -418,7 +418,7 @@ &i2c0 {
status = "okay"; status = "okay";
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&i2c0_pins>; pinctrl-0 = <&i2c0_pins>;
clock-frequency = <400000>; clock-frequency = <100000>;
tps@24 { tps@24 {
compatible = "ti,tps65218"; compatible = "ti,tps65218";
......
...@@ -486,7 +486,7 @@ static const char *ipi_types[NR_IPI] __tracepoint_string = { ...@@ -486,7 +486,7 @@ static const char *ipi_types[NR_IPI] __tracepoint_string = {
static void smp_cross_call(const struct cpumask *target, unsigned int ipinr) static void smp_cross_call(const struct cpumask *target, unsigned int ipinr)
{ {
trace_ipi_raise(target, ipi_types[ipinr]); trace_ipi_raise_rcuidle(target, ipi_types[ipinr]);
__smp_cross_call(target, ipinr); __smp_cross_call(target, ipinr);
} }
......
...@@ -43,8 +43,8 @@ ...@@ -43,8 +43,8 @@
#define OTHERS_MASK (MODEM_IRQ_MASK | HOOK_SWITCH_MASK) #define OTHERS_MASK (MODEM_IRQ_MASK | HOOK_SWITCH_MASK)
/* IRQ handler register bitmasks */ /* IRQ handler register bitmasks */
#define DEFERRED_FIQ_MASK (0x1 << (INT_DEFERRED_FIQ % IH2_BASE)) #define DEFERRED_FIQ_MASK OMAP_IRQ_BIT(INT_DEFERRED_FIQ)
#define GPIO_BANK1_MASK (0x1 << INT_GPIO_BANK1) #define GPIO_BANK1_MASK OMAP_IRQ_BIT(INT_GPIO_BANK1)
/* Driver buffer byte offsets */ /* Driver buffer byte offsets */
#define BUF_MASK (FIQ_MASK * 4) #define BUF_MASK (FIQ_MASK * 4)
...@@ -110,7 +110,7 @@ ENTRY(qwerty_fiqin_start) ...@@ -110,7 +110,7 @@ ENTRY(qwerty_fiqin_start)
mov r8, #2 @ reset FIQ agreement mov r8, #2 @ reset FIQ agreement
str r8, [r12, #IRQ_CONTROL_REG_OFFSET] str r8, [r12, #IRQ_CONTROL_REG_OFFSET]
cmp r10, #INT_GPIO_BANK1 @ is it GPIO bank interrupt? cmp r10, #(INT_GPIO_BANK1 - NR_IRQS_LEGACY) @ is it GPIO interrupt?
beq gpio @ yes - process it beq gpio @ yes - process it
mov r8, #1 mov r8, #1
......
...@@ -109,7 +109,8 @@ void __init ams_delta_init_fiq(void) ...@@ -109,7 +109,8 @@ void __init ams_delta_init_fiq(void)
* Since no set_type() method is provided by OMAP irq chip, * Since no set_type() method is provided by OMAP irq chip,
* switch to edge triggered interrupt type manually. * switch to edge triggered interrupt type manually.
*/ */
offset = IRQ_ILR0_REG_OFFSET + INT_DEFERRED_FIQ * 0x4; offset = IRQ_ILR0_REG_OFFSET +
((INT_DEFERRED_FIQ - NR_IRQS_LEGACY) & 0x1f) * 0x4;
val = omap_readl(DEFERRED_FIQ_IH_BASE + offset) & ~(1 << 1); val = omap_readl(DEFERRED_FIQ_IH_BASE + offset) & ~(1 << 1);
omap_writel(val, DEFERRED_FIQ_IH_BASE + offset); omap_writel(val, DEFERRED_FIQ_IH_BASE + offset);
...@@ -149,7 +150,7 @@ void __init ams_delta_init_fiq(void) ...@@ -149,7 +150,7 @@ void __init ams_delta_init_fiq(void)
/* /*
* Redirect GPIO interrupts to FIQ * Redirect GPIO interrupts to FIQ
*/ */
offset = IRQ_ILR0_REG_OFFSET + INT_GPIO_BANK1 * 0x4; offset = IRQ_ILR0_REG_OFFSET + (INT_GPIO_BANK1 - NR_IRQS_LEGACY) * 0x4;
val = omap_readl(OMAP_IH1_BASE + offset) | 1; val = omap_readl(OMAP_IH1_BASE + offset) | 1;
omap_writel(val, OMAP_IH1_BASE + offset); omap_writel(val, OMAP_IH1_BASE + offset);
} }
...@@ -14,6 +14,8 @@ ...@@ -14,6 +14,8 @@
#ifndef __AMS_DELTA_FIQ_H #ifndef __AMS_DELTA_FIQ_H
#define __AMS_DELTA_FIQ_H #define __AMS_DELTA_FIQ_H
#include <mach/irqs.h>
/* /*
* Interrupt number used for passing control from FIQ to IRQ. * Interrupt number used for passing control from FIQ to IRQ.
* IRQ12, described as reserved, has been selected. * IRQ12, described as reserved, has been selected.
......
...@@ -186,7 +186,8 @@ static int _pwrdm_state_switch(struct powerdomain *pwrdm, int flag) ...@@ -186,7 +186,8 @@ static int _pwrdm_state_switch(struct powerdomain *pwrdm, int flag)
trace_state = (PWRDM_TRACE_STATES_FLAG | trace_state = (PWRDM_TRACE_STATES_FLAG |
((next & OMAP_POWERSTATE_MASK) << 8) | ((next & OMAP_POWERSTATE_MASK) << 8) |
((prev & OMAP_POWERSTATE_MASK) << 0)); ((prev & OMAP_POWERSTATE_MASK) << 0));
trace_power_domain_target(pwrdm->name, trace_state, trace_power_domain_target_rcuidle(pwrdm->name,
trace_state,
smp_processor_id()); smp_processor_id());
} }
break; break;
...@@ -523,7 +524,7 @@ int pwrdm_set_next_pwrst(struct powerdomain *pwrdm, u8 pwrst) ...@@ -523,7 +524,7 @@ int pwrdm_set_next_pwrst(struct powerdomain *pwrdm, u8 pwrst)
if (arch_pwrdm && arch_pwrdm->pwrdm_set_next_pwrst) { if (arch_pwrdm && arch_pwrdm->pwrdm_set_next_pwrst) {
/* Trace the pwrdm desired target state */ /* Trace the pwrdm desired target state */
trace_power_domain_target(pwrdm->name, pwrst, trace_power_domain_target_rcuidle(pwrdm->name, pwrst,
smp_processor_id()); smp_processor_id());
/* Program the pwrdm desired target state */ /* Program the pwrdm desired target state */
ret = arch_pwrdm->pwrdm_set_next_pwrst(pwrdm, pwrst); ret = arch_pwrdm->pwrdm_set_next_pwrst(pwrdm, pwrst);
......
...@@ -496,7 +496,6 @@ void __init omap_init_time(void) ...@@ -496,7 +496,6 @@ void __init omap_init_time(void)
__omap_sync32k_timer_init(1, "timer_32k_ck", "ti,timer-alwon", __omap_sync32k_timer_init(1, "timer_32k_ck", "ti,timer-alwon",
2, "timer_sys_ck", NULL, false); 2, "timer_sys_ck", NULL, false);
if (of_have_populated_dt())
clocksource_probe(); clocksource_probe();
} }
...@@ -505,6 +504,8 @@ void __init omap3_secure_sync32k_timer_init(void) ...@@ -505,6 +504,8 @@ void __init omap3_secure_sync32k_timer_init(void)
{ {
__omap_sync32k_timer_init(12, "secure_32k_fck", "ti,timer-secure", __omap_sync32k_timer_init(12, "secure_32k_fck", "ti,timer-secure",
2, "timer_sys_ck", NULL, false); 2, "timer_sys_ck", NULL, false);
clocksource_probe();
} }
#endif /* CONFIG_ARCH_OMAP3 */ #endif /* CONFIG_ARCH_OMAP3 */
...@@ -513,6 +514,8 @@ void __init omap3_gptimer_timer_init(void) ...@@ -513,6 +514,8 @@ void __init omap3_gptimer_timer_init(void)
{ {
__omap_sync32k_timer_init(2, "timer_sys_ck", NULL, __omap_sync32k_timer_init(2, "timer_sys_ck", NULL,
1, "timer_sys_ck", "ti,timer-alwon", true); 1, "timer_sys_ck", "ti,timer-alwon", true);
clocksource_probe();
} }
#endif #endif
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment