Commit 3c50ffba authored by Arnd Bergmann's avatar Arnd Bergmann

Merge tag 'omap-for-v6.6/fixes-signed' of...

Merge tag 'omap-for-v6.6/fixes-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into arm/fixes

Fixes for omaps and ti-sysc

Fixes for several ti-sysc interconnect target module driver issues for
external abort on non-linefetch, am35x soc match, and uart module quirks
handling needed for devices to work and to allow device wake-up to work.

Fixes for droid4 boot time errors and warnings as noticed after boot doing
dmesg -lerr,warn. Let's also cut down the debug uart noise by using
overrun-throttle-ms, and downgrade the u-boot version warnings to
debug statements to further reduce the boot time noise with warnings.

* tag 'omap-for-v6.6/fixes-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap:
  bus: ti-sysc: Fix SYSC_QUIRK_SWSUP_SIDLE_ACT handling for uart wake-up
  ARM: omap2+: Downgrade u-boot version warnings to debug statements
  ARM: dts: ti: omap: Fix noisy serial with overrun-throttle-ms for mapphone
  ARM: dts: ti: omap: motorola-mapphone: Fix abe_clkctrl warning on boot
  ARM: dts: ti: omap: Fix bandgap thermal cells addressing for omap3/4
  bus: ti-sysc: Fix missing AM35xx SoC matching
  bus: ti-sysc: Use fsleep() instead of usleep_range() in sysc_reset()

Link: https://lore.kernel.org/r/pull-1695715881-95183@atomide.comSigned-off-by: default avatarArnd Bergmann <arnd@arndb.de>
parents 59a98f4f 06f114cf
...@@ -614,12 +614,12 @@ &rng_target { ...@@ -614,12 +614,12 @@ &rng_target {
/* Configure pwm clock source for timers 8 & 9 */ /* Configure pwm clock source for timers 8 & 9 */
&timer8 { &timer8 {
assigned-clocks = <&abe_clkctrl OMAP4_TIMER8_CLKCTRL 24>; assigned-clocks = <&abe_clkctrl OMAP4_TIMER8_CLKCTRL 24>;
assigned-clock-parents = <&sys_clkin_ck>; assigned-clock-parents = <&sys_32k_ck>;
}; };
&timer9 { &timer9 {
assigned-clocks = <&l4_per_clkctrl OMAP4_TIMER9_CLKCTRL 24>; assigned-clocks = <&l4_per_clkctrl OMAP4_TIMER9_CLKCTRL 24>;
assigned-clock-parents = <&sys_clkin_ck>; assigned-clock-parents = <&sys_32k_ck>;
}; };
/* /*
...@@ -640,6 +640,7 @@ &uart1 { ...@@ -640,6 +640,7 @@ &uart1 {
&uart3 { &uart3 {
interrupts-extended = <&wakeupgen GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH interrupts-extended = <&wakeupgen GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH
&omap4_pmx_core 0x17c>; &omap4_pmx_core 0x17c>;
overrun-throttle-ms = <500>;
}; };
&uart4 { &uart4 {
......
...@@ -12,8 +12,7 @@ cpu_thermal: cpu-thermal { ...@@ -12,8 +12,7 @@ cpu_thermal: cpu-thermal {
polling-delay = <1000>; /* milliseconds */ polling-delay = <1000>; /* milliseconds */
coefficients = <0 20000>; coefficients = <0 20000>;
/* sensor ID */ thermal-sensors = <&bandgap>;
thermal-sensors = <&bandgap 0>;
cpu_trips: trips { cpu_trips: trips {
cpu_alert0: cpu_alert { cpu_alert0: cpu_alert {
......
...@@ -12,7 +12,10 @@ cpu_thermal: cpu_thermal { ...@@ -12,7 +12,10 @@ cpu_thermal: cpu_thermal {
polling-delay-passive = <250>; /* milliseconds */ polling-delay-passive = <250>; /* milliseconds */
polling-delay = <1000>; /* milliseconds */ polling-delay = <1000>; /* milliseconds */
/* sensor ID */ /*
* See 44xx files for single sensor addressing, omap5 and dra7 need
* also sensor ID for addressing.
*/
thermal-sensors = <&bandgap 0>; thermal-sensors = <&bandgap 0>;
cpu_trips: trips { cpu_trips: trips {
......
...@@ -69,6 +69,7 @@ abb_iva: regulator-abb-iva { ...@@ -69,6 +69,7 @@ abb_iva: regulator-abb-iva {
}; };
&cpu_thermal { &cpu_thermal {
thermal-sensors = <&bandgap>;
coefficients = <0 20000>; coefficients = <0 20000>;
}; };
......
...@@ -79,6 +79,7 @@ abb_iva: regulator-abb-iva { ...@@ -79,6 +79,7 @@ abb_iva: regulator-abb-iva {
}; };
&cpu_thermal { &cpu_thermal {
thermal-sensors = <&bandgap>;
coefficients = <348 (-9301)>; coefficients = <348 (-9301)>;
}; };
......
...@@ -99,7 +99,7 @@ static int omap4_pm_suspend(void) ...@@ -99,7 +99,7 @@ static int omap4_pm_suspend(void)
* possible causes. * possible causes.
* http://www.spinics.net/lists/arm-kernel/msg218641.html * http://www.spinics.net/lists/arm-kernel/msg218641.html
*/ */
pr_warn("A possible cause could be an old bootloader - try u-boot >= v2012.07\n"); pr_debug("A possible cause could be an old bootloader - try u-boot >= v2012.07\n");
} else { } else {
pr_info("Successfully put all powerdomains to target state\n"); pr_info("Successfully put all powerdomains to target state\n");
} }
...@@ -257,7 +257,7 @@ int __init omap4_pm_init(void) ...@@ -257,7 +257,7 @@ int __init omap4_pm_init(void)
* http://www.spinics.net/lists/arm-kernel/msg218641.html * http://www.spinics.net/lists/arm-kernel/msg218641.html
*/ */
if (cpu_is_omap44xx()) if (cpu_is_omap44xx())
pr_warn("OMAP4 PM: u-boot >= v2012.07 is required for full PM support\n"); pr_debug("OMAP4 PM: u-boot >= v2012.07 is required for full PM support\n");
ret = pwrdm_for_each(pwrdms_setup, NULL); ret = pwrdm_for_each(pwrdms_setup, NULL);
if (ret) { if (ret) {
......
...@@ -38,6 +38,7 @@ enum sysc_soc { ...@@ -38,6 +38,7 @@ enum sysc_soc {
SOC_2420, SOC_2420,
SOC_2430, SOC_2430,
SOC_3430, SOC_3430,
SOC_AM35,
SOC_3630, SOC_3630,
SOC_4430, SOC_4430,
SOC_4460, SOC_4460,
...@@ -1097,6 +1098,11 @@ static int sysc_enable_module(struct device *dev) ...@@ -1097,6 +1098,11 @@ static int sysc_enable_module(struct device *dev)
if (ddata->cfg.quirks & (SYSC_QUIRK_SWSUP_SIDLE | if (ddata->cfg.quirks & (SYSC_QUIRK_SWSUP_SIDLE |
SYSC_QUIRK_SWSUP_SIDLE_ACT)) { SYSC_QUIRK_SWSUP_SIDLE_ACT)) {
best_mode = SYSC_IDLE_NO; best_mode = SYSC_IDLE_NO;
/* Clear WAKEUP */
if (regbits->enwkup_shift >= 0 &&
ddata->cfg.sysc_val & BIT(regbits->enwkup_shift))
reg &= ~BIT(regbits->enwkup_shift);
} else { } else {
best_mode = fls(ddata->cfg.sidlemodes) - 1; best_mode = fls(ddata->cfg.sidlemodes) - 1;
if (best_mode > SYSC_IDLE_MASK) { if (best_mode > SYSC_IDLE_MASK) {
...@@ -1224,6 +1230,13 @@ static int sysc_disable_module(struct device *dev) ...@@ -1224,6 +1230,13 @@ static int sysc_disable_module(struct device *dev)
} }
} }
if (ddata->cfg.quirks & SYSC_QUIRK_SWSUP_SIDLE_ACT) {
/* Set WAKEUP */
if (regbits->enwkup_shift >= 0 &&
ddata->cfg.sysc_val & BIT(regbits->enwkup_shift))
reg |= BIT(regbits->enwkup_shift);
}
reg &= ~(SYSC_IDLE_MASK << regbits->sidle_shift); reg &= ~(SYSC_IDLE_MASK << regbits->sidle_shift);
reg |= best_mode << regbits->sidle_shift; reg |= best_mode << regbits->sidle_shift;
if (regbits->autoidle_shift >= 0 && if (regbits->autoidle_shift >= 0 &&
...@@ -1518,16 +1531,16 @@ struct sysc_revision_quirk { ...@@ -1518,16 +1531,16 @@ struct sysc_revision_quirk {
static const struct sysc_revision_quirk sysc_revision_quirks[] = { static const struct sysc_revision_quirk sysc_revision_quirks[] = {
/* These drivers need to be fixed to not use pm_runtime_irq_safe() */ /* These drivers need to be fixed to not use pm_runtime_irq_safe() */
SYSC_QUIRK("uart", 0, 0x50, 0x54, 0x58, 0x00000046, 0xffffffff, SYSC_QUIRK("uart", 0, 0x50, 0x54, 0x58, 0x00000046, 0xffffffff,
SYSC_QUIRK_SWSUP_SIDLE | SYSC_QUIRK_LEGACY_IDLE), SYSC_QUIRK_SWSUP_SIDLE_ACT | SYSC_QUIRK_LEGACY_IDLE),
SYSC_QUIRK("uart", 0, 0x50, 0x54, 0x58, 0x00000052, 0xffffffff, SYSC_QUIRK("uart", 0, 0x50, 0x54, 0x58, 0x00000052, 0xffffffff,
SYSC_QUIRK_SWSUP_SIDLE | SYSC_QUIRK_LEGACY_IDLE), SYSC_QUIRK_SWSUP_SIDLE_ACT | SYSC_QUIRK_LEGACY_IDLE),
/* Uarts on omap4 and later */ /* Uarts on omap4 and later */
SYSC_QUIRK("uart", 0, 0x50, 0x54, 0x58, 0x50411e03, 0xffff00ff, SYSC_QUIRK("uart", 0, 0x50, 0x54, 0x58, 0x50411e03, 0xffff00ff,
SYSC_QUIRK_SWSUP_SIDLE | SYSC_QUIRK_LEGACY_IDLE), SYSC_QUIRK_SWSUP_SIDLE_ACT | SYSC_QUIRK_LEGACY_IDLE),
SYSC_QUIRK("uart", 0, 0x50, 0x54, 0x58, 0x47422e03, 0xffffffff, SYSC_QUIRK("uart", 0, 0x50, 0x54, 0x58, 0x47422e03, 0xffffffff,
SYSC_QUIRK_SWSUP_SIDLE | SYSC_QUIRK_LEGACY_IDLE), SYSC_QUIRK_SWSUP_SIDLE_ACT | SYSC_QUIRK_LEGACY_IDLE),
SYSC_QUIRK("uart", 0, 0x50, 0x54, 0x58, 0x47424e03, 0xffffffff, SYSC_QUIRK("uart", 0, 0x50, 0x54, 0x58, 0x47424e03, 0xffffffff,
SYSC_QUIRK_SWSUP_SIDLE | SYSC_QUIRK_LEGACY_IDLE), SYSC_QUIRK_SWSUP_SIDLE_ACT | SYSC_QUIRK_LEGACY_IDLE),
/* Quirks that need to be set based on the module address */ /* Quirks that need to be set based on the module address */
SYSC_QUIRK("mcpdm", 0x40132000, 0, 0x10, -ENODEV, 0x50000800, 0xffffffff, SYSC_QUIRK("mcpdm", 0x40132000, 0, 0x10, -ENODEV, 0x50000800, 0xffffffff,
...@@ -1862,7 +1875,7 @@ static void sysc_pre_reset_quirk_dss(struct sysc *ddata) ...@@ -1862,7 +1875,7 @@ static void sysc_pre_reset_quirk_dss(struct sysc *ddata)
dev_warn(ddata->dev, "%s: timed out %08x !+ %08x\n", dev_warn(ddata->dev, "%s: timed out %08x !+ %08x\n",
__func__, val, irq_mask); __func__, val, irq_mask);
if (sysc_soc->soc == SOC_3430) { if (sysc_soc->soc == SOC_3430 || sysc_soc->soc == SOC_AM35) {
/* Clear DSS_SDI_CONTROL */ /* Clear DSS_SDI_CONTROL */
sysc_write(ddata, 0x44, 0); sysc_write(ddata, 0x44, 0);
...@@ -2150,8 +2163,7 @@ static int sysc_reset(struct sysc *ddata) ...@@ -2150,8 +2163,7 @@ static int sysc_reset(struct sysc *ddata)
} }
if (ddata->cfg.srst_udelay) if (ddata->cfg.srst_udelay)
usleep_range(ddata->cfg.srst_udelay, fsleep(ddata->cfg.srst_udelay);
ddata->cfg.srst_udelay * 2);
if (ddata->post_reset_quirk) if (ddata->post_reset_quirk)
ddata->post_reset_quirk(ddata); ddata->post_reset_quirk(ddata);
...@@ -3025,6 +3037,7 @@ static void ti_sysc_idle(struct work_struct *work) ...@@ -3025,6 +3037,7 @@ static void ti_sysc_idle(struct work_struct *work)
static const struct soc_device_attribute sysc_soc_match[] = { static const struct soc_device_attribute sysc_soc_match[] = {
SOC_FLAG("OMAP242*", SOC_2420), SOC_FLAG("OMAP242*", SOC_2420),
SOC_FLAG("OMAP243*", SOC_2430), SOC_FLAG("OMAP243*", SOC_2430),
SOC_FLAG("AM35*", SOC_AM35),
SOC_FLAG("OMAP3[45]*", SOC_3430), SOC_FLAG("OMAP3[45]*", SOC_3430),
SOC_FLAG("OMAP3[67]*", SOC_3630), SOC_FLAG("OMAP3[67]*", SOC_3630),
SOC_FLAG("OMAP443*", SOC_4430), SOC_FLAG("OMAP443*", SOC_4430),
...@@ -3229,7 +3242,7 @@ static int sysc_check_active_timer(struct sysc *ddata) ...@@ -3229,7 +3242,7 @@ static int sysc_check_active_timer(struct sysc *ddata)
* can be dropped if we stop supporting old beagleboard revisions * can be dropped if we stop supporting old beagleboard revisions
* A to B4 at some point. * A to B4 at some point.
*/ */
if (sysc_soc->soc == SOC_3430) if (sysc_soc->soc == SOC_3430 || sysc_soc->soc == SOC_AM35)
error = -ENXIO; error = -ENXIO;
else else
error = -EBUSY; error = -EBUSY;
......
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