Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>

+34 -16
+3 -2
arch/arm/boot/dts/ti/omap/motorola-mapphone-common.dtsi
··· 614 614 /* Configure pwm clock source for timers 8 & 9 */ 615 615 &timer8 { 616 616 assigned-clocks = <&abe_clkctrl OMAP4_TIMER8_CLKCTRL 24>; 617 - assigned-clock-parents = <&sys_clkin_ck>; 617 + assigned-clock-parents = <&sys_32k_ck>; 618 618 }; 619 619 620 620 &timer9 { 621 621 assigned-clocks = <&l4_per_clkctrl OMAP4_TIMER9_CLKCTRL 24>; 622 - assigned-clock-parents = <&sys_clkin_ck>; 622 + assigned-clock-parents = <&sys_32k_ck>; 623 623 }; 624 624 625 625 /* ··· 640 640 &uart3 { 641 641 interrupts-extended = <&wakeupgen GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH 642 642 &omap4_pmx_core 0x17c>; 643 + overrun-throttle-ms = <500>; 643 644 }; 644 645 645 646 &uart4 {
+1 -2
arch/arm/boot/dts/ti/omap/omap3-cpu-thermal.dtsi
··· 12 12 polling-delay = <1000>; /* milliseconds */ 13 13 coefficients = <0 20000>; 14 14 15 - /* sensor ID */ 16 - thermal-sensors = <&bandgap 0>; 15 + thermal-sensors = <&bandgap>; 17 16 18 17 cpu_trips: trips { 19 18 cpu_alert0: cpu_alert {
+4 -1
arch/arm/boot/dts/ti/omap/omap4-cpu-thermal.dtsi
··· 12 12 polling-delay-passive = <250>; /* milliseconds */ 13 13 polling-delay = <1000>; /* milliseconds */ 14 14 15 - /* sensor ID */ 15 + /* 16 + * See 44xx files for single sensor addressing, omap5 and dra7 need 17 + * also sensor ID for addressing. 18 + */ 16 19 thermal-sensors = <&bandgap 0>; 17 20 18 21 cpu_trips: trips {
+1
arch/arm/boot/dts/ti/omap/omap443x.dtsi
··· 69 69 }; 70 70 71 71 &cpu_thermal { 72 + thermal-sensors = <&bandgap>; 72 73 coefficients = <0 20000>; 73 74 }; 74 75
+1
arch/arm/boot/dts/ti/omap/omap4460.dtsi
··· 79 79 }; 80 80 81 81 &cpu_thermal { 82 + thermal-sensors = <&bandgap>; 82 83 coefficients = <348 (-9301)>; 83 84 }; 84 85
+2 -2
arch/arm/mach-omap2/pm44xx.c
··· 99 99 * possible causes. 100 100 * http://www.spinics.net/lists/arm-kernel/msg218641.html 101 101 */ 102 - pr_warn("A possible cause could be an old bootloader - try u-boot >= v2012.07\n"); 102 + pr_debug("A possible cause could be an old bootloader - try u-boot >= v2012.07\n"); 103 103 } else { 104 104 pr_info("Successfully put all powerdomains to target state\n"); 105 105 } ··· 257 257 * http://www.spinics.net/lists/arm-kernel/msg218641.html 258 258 */ 259 259 if (cpu_is_omap44xx()) 260 - pr_warn("OMAP4 PM: u-boot >= v2012.07 is required for full PM support\n"); 260 + pr_debug("OMAP4 PM: u-boot >= v2012.07 is required for full PM support\n"); 261 261 262 262 ret = pwrdm_for_each(pwrdms_setup, NULL); 263 263 if (ret) {
+22 -9
drivers/bus/ti-sysc.c
··· 38 38 SOC_2420, 39 39 SOC_2430, 40 40 SOC_3430, 41 + SOC_AM35, 41 42 SOC_3630, 42 43 SOC_4430, 43 44 SOC_4460, ··· 1098 1097 if (ddata->cfg.quirks & (SYSC_QUIRK_SWSUP_SIDLE | 1099 1098 SYSC_QUIRK_SWSUP_SIDLE_ACT)) { 1100 1099 best_mode = SYSC_IDLE_NO; 1100 + 1101 + /* Clear WAKEUP */ 1102 + if (regbits->enwkup_shift >= 0 && 1103 + ddata->cfg.sysc_val & BIT(regbits->enwkup_shift)) 1104 + reg &= ~BIT(regbits->enwkup_shift); 1101 1105 } else { 1102 1106 best_mode = fls(ddata->cfg.sidlemodes) - 1; 1103 1107 if (best_mode > SYSC_IDLE_MASK) { ··· 1228 1222 ret = -EINVAL; 1229 1223 goto save_context; 1230 1224 } 1225 + } 1226 + 1227 + if (ddata->cfg.quirks & SYSC_QUIRK_SWSUP_SIDLE_ACT) { 1228 + /* Set WAKEUP */ 1229 + if (regbits->enwkup_shift >= 0 && 1230 + ddata->cfg.sysc_val & BIT(regbits->enwkup_shift)) 1231 + reg |= BIT(regbits->enwkup_shift); 1231 1232 } 1232 1233 1233 1234 reg &= ~(SYSC_IDLE_MASK << regbits->sidle_shift); ··· 1531 1518 static const struct sysc_revision_quirk sysc_revision_quirks[] = { 1532 1519 /* These drivers need to be fixed to not use pm_runtime_irq_safe() */ 1533 1520 SYSC_QUIRK("uart", 0, 0x50, 0x54, 0x58, 0x00000046, 0xffffffff, 1534 - SYSC_QUIRK_SWSUP_SIDLE | SYSC_QUIRK_LEGACY_IDLE), 1521 + SYSC_QUIRK_SWSUP_SIDLE_ACT | SYSC_QUIRK_LEGACY_IDLE), 1535 1522 SYSC_QUIRK("uart", 0, 0x50, 0x54, 0x58, 0x00000052, 0xffffffff, 1536 - SYSC_QUIRK_SWSUP_SIDLE | SYSC_QUIRK_LEGACY_IDLE), 1523 + SYSC_QUIRK_SWSUP_SIDLE_ACT | SYSC_QUIRK_LEGACY_IDLE), 1537 1524 /* Uarts on omap4 and later */ 1538 1525 SYSC_QUIRK("uart", 0, 0x50, 0x54, 0x58, 0x50411e03, 0xffff00ff, 1539 - SYSC_QUIRK_SWSUP_SIDLE | SYSC_QUIRK_LEGACY_IDLE), 1526 + SYSC_QUIRK_SWSUP_SIDLE_ACT | SYSC_QUIRK_LEGACY_IDLE), 1540 1527 SYSC_QUIRK("uart", 0, 0x50, 0x54, 0x58, 0x47422e03, 0xffffffff, 1541 - SYSC_QUIRK_SWSUP_SIDLE | SYSC_QUIRK_LEGACY_IDLE), 1528 + SYSC_QUIRK_SWSUP_SIDLE_ACT | SYSC_QUIRK_LEGACY_IDLE), 1542 1529 SYSC_QUIRK("uart", 0, 0x50, 0x54, 0x58, 0x47424e03, 0xffffffff, 1543 - SYSC_QUIRK_SWSUP_SIDLE | SYSC_QUIRK_LEGACY_IDLE), 1530 + SYSC_QUIRK_SWSUP_SIDLE_ACT | SYSC_QUIRK_LEGACY_IDLE), 1544 1531 1545 1532 /* Quirks that need to be set based on the module address */ 1546 1533 SYSC_QUIRK("mcpdm", 0x40132000, 0, 0x10, -ENODEV, 0x50000800, 0xffffffff, ··· 1875 1862 dev_warn(ddata->dev, "%s: timed out %08x !+ %08x\n", 1876 1863 __func__, val, irq_mask); 1877 1864 1878 - if (sysc_soc->soc == SOC_3430) { 1865 + if (sysc_soc->soc == SOC_3430 || sysc_soc->soc == SOC_AM35) { 1879 1866 /* Clear DSS_SDI_CONTROL */ 1880 1867 sysc_write(ddata, 0x44, 0); 1881 1868 ··· 2163 2150 } 2164 2151 2165 2152 if (ddata->cfg.srst_udelay) 2166 - usleep_range(ddata->cfg.srst_udelay, 2167 - ddata->cfg.srst_udelay * 2); 2153 + fsleep(ddata->cfg.srst_udelay); 2168 2154 2169 2155 if (ddata->post_reset_quirk) 2170 2156 ddata->post_reset_quirk(ddata); ··· 3037 3025 static const struct soc_device_attribute sysc_soc_match[] = { 3038 3026 SOC_FLAG("OMAP242*", SOC_2420), 3039 3027 SOC_FLAG("OMAP243*", SOC_2430), 3028 + SOC_FLAG("AM35*", SOC_AM35), 3040 3029 SOC_FLAG("OMAP3[45]*", SOC_3430), 3041 3030 SOC_FLAG("OMAP3[67]*", SOC_3630), 3042 3031 SOC_FLAG("OMAP443*", SOC_4430), ··· 3242 3229 * can be dropped if we stop supporting old beagleboard revisions 3243 3230 * A to B4 at some point. 3244 3231 */ 3245 - if (sysc_soc->soc == SOC_3430) 3232 + if (sysc_soc->soc == SOC_3430 || sysc_soc->soc == SOC_AM35) 3246 3233 error = -ENXIO; 3247 3234 else 3248 3235 error = -EBUSY;