Skip to content

Commit 2b3949f

Browse files
committed
Merge tag 'omap-for-v6.16/soc-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-omap into soc/arm
OMAP SoC updates for v6.16 * tag 'omap-for-v6.16/soc-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-omap: ARM: OMAP2+: Fix l4ls clk domain handling in STANDBY bus: ti-sysc: PRUSS OCP configuration ARM: omap: pmic-cpcap: do not mess around without CPCAP or OMAP4 ARM: omap2plus_defconfig: enable I2C devices of GTA04 Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Arnd Bergmann <[email protected]>
2 parents a6e160e + 47fe740 commit 2b3949f

File tree

6 files changed

+46
-4
lines changed

6 files changed

+46
-4
lines changed

arch/arm/configs/omap2plus_defconfig

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -608,6 +608,7 @@ CONFIG_LEDS_LP5523=m
608608
CONFIG_LEDS_PCA963X=m
609609
CONFIG_LEDS_PWM=m
610610
CONFIG_LEDS_BD2606MVV=m
611+
CONFIG_LEDS_TCA6507=m
611612
CONFIG_LEDS_TRIGGERS=y
612613
CONFIG_LEDS_TRIGGER_TIMER=m
613614
CONFIG_LEDS_TRIGGER_ONESHOT=m
@@ -642,17 +643,24 @@ CONFIG_TI_EMIF_SRAM=m
642643
CONFIG_IIO=m
643644
CONFIG_IIO_SW_DEVICE=m
644645
CONFIG_IIO_SW_TRIGGER=m
646+
CONFIG_BMA180=m
647+
CONFIG_BMC150_ACCEL=m
645648
CONFIG_IIO_ST_ACCEL_3AXIS=m
646649
CONFIG_KXCJK1013=m
647650
CONFIG_CPCAP_ADC=m
648651
CONFIG_INA2XX_ADC=m
649652
CONFIG_TI_AM335X_ADC=m
650653
CONFIG_TWL4030_MADC=m
651654
CONFIG_TWL6030_GPADC=m
655+
CONFIG_BMG160=m
652656
CONFIG_MPU3050_I2C=m
657+
CONFIG_ITG3200=m
658+
CONFIG_BOSCH_BNO055_I2C=m
653659
CONFIG_INV_MPU6050_I2C=m
654660
CONFIG_SENSORS_ISL29028=m
655661
CONFIG_AK8975=m
662+
CONFIG_BMC150_MAGN_I2C=m
663+
CONFIG_SENSORS_HMC5843_I2C=m
656664
CONFIG_BMP280=m
657665
CONFIG_PWM=y
658666
CONFIG_PWM_OMAP_DMTIMER=m

arch/arm/mach-omap2/clockdomain.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
#define CLKDM_NO_AUTODEPS (1 << 4)
4949
#define CLKDM_ACTIVE_WITH_MPU (1 << 5)
5050
#define CLKDM_MISSING_IDLE_REPORTING (1 << 6)
51+
#define CLKDM_STANDBY_FORCE_WAKEUP BIT(7)
5152

5253
#define CLKDM_CAN_HWSUP (CLKDM_CAN_ENABLE_AUTO | CLKDM_CAN_DISABLE_AUTO)
5354
#define CLKDM_CAN_SWSUP (CLKDM_CAN_FORCE_SLEEP | CLKDM_CAN_FORCE_WAKEUP)

arch/arm/mach-omap2/clockdomains33xx_data.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ static struct clockdomain l4ls_am33xx_clkdm = {
1919
.pwrdm = { .name = "per_pwrdm" },
2020
.cm_inst = AM33XX_CM_PER_MOD,
2121
.clkdm_offs = AM33XX_CM_PER_L4LS_CLKSTCTRL_OFFSET,
22-
.flags = CLKDM_CAN_SWSUP,
22+
.flags = CLKDM_CAN_SWSUP | CLKDM_STANDBY_FORCE_WAKEUP,
2323
};
2424

2525
static struct clockdomain l3s_am33xx_clkdm = {

arch/arm/mach-omap2/cm33xx.c

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@
2020
#include "cm-regbits-34xx.h"
2121
#include "cm-regbits-33xx.h"
2222
#include "prm33xx.h"
23+
#if IS_ENABLED(CONFIG_SUSPEND)
24+
#include <linux/suspend.h>
25+
#endif
2326

2427
/*
2528
* CLKCTRL_IDLEST_*: possible values for the CM_*_CLKCTRL.IDLEST bitfield:
@@ -328,8 +331,17 @@ static int am33xx_clkdm_clk_disable(struct clockdomain *clkdm)
328331
{
329332
bool hwsup = false;
330333

334+
#if IS_ENABLED(CONFIG_SUSPEND)
335+
/*
336+
* In case of standby, Don't put the l4ls clk domain to sleep.
337+
* Since CM3 PM FW doesn't wake-up/enable the l4ls clk domain
338+
* upon wake-up, CM3 PM FW fails to wake-up th MPU.
339+
*/
340+
if (pm_suspend_target_state == PM_SUSPEND_STANDBY &&
341+
(clkdm->flags & CLKDM_STANDBY_FORCE_WAKEUP))
342+
return 0;
343+
#endif
331344
hwsup = am33xx_cm_is_clkdm_in_hwsup(clkdm->cm_inst, clkdm->clkdm_offs);
332-
333345
if (!hwsup && (clkdm->flags & CLKDM_CAN_FORCE_SLEEP))
334346
am33xx_clkdm_sleep(clkdm);
335347

arch/arm/mach-omap2/pmic-cpcap.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,11 @@ int __init omap4_cpcap_init(void)
264264

265265
static int __init cpcap_late_init(void)
266266
{
267-
omap4_vc_set_pmic_signaling(PWRDM_POWER_RET);
267+
if (!of_find_compatible_node(NULL, NULL, "motorola,cpcap"))
268+
return 0;
269+
270+
if (soc_is_omap443x() || soc_is_omap446x() || soc_is_omap447x())
271+
omap4_vc_set_pmic_signaling(PWRDM_POWER_RET);
268272

269273
return 0;
270274
}

drivers/bus/ti-sysc.c

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2036,6 +2036,21 @@ static void sysc_module_disable_quirk_pruss(struct sysc *ddata)
20362036
sysc_write(ddata, ddata->offsets[SYSC_SYSCONFIG], reg);
20372037
}
20382038

2039+
static void sysc_module_enable_quirk_pruss(struct sysc *ddata)
2040+
{
2041+
u32 reg;
2042+
2043+
reg = sysc_read(ddata, ddata->offsets[SYSC_SYSCONFIG]);
2044+
2045+
/*
2046+
* Clearing the SYSC_PRUSS_STANDBY_INIT bit - Updates OCP master
2047+
* port configuration to enable memory access outside of the
2048+
* PRU-ICSS subsystem.
2049+
*/
2050+
reg &= (~SYSC_PRUSS_STANDBY_INIT);
2051+
sysc_write(ddata, ddata->offsets[SYSC_SYSCONFIG], reg);
2052+
}
2053+
20392054
static void sysc_init_module_quirks(struct sysc *ddata)
20402055
{
20412056
if (ddata->legacy_mode || !ddata->name)
@@ -2088,8 +2103,10 @@ static void sysc_init_module_quirks(struct sysc *ddata)
20882103
ddata->module_disable_quirk = sysc_reset_done_quirk_wdt;
20892104
}
20902105

2091-
if (ddata->cfg.quirks & SYSC_MODULE_QUIRK_PRUSS)
2106+
if (ddata->cfg.quirks & SYSC_MODULE_QUIRK_PRUSS) {
2107+
ddata->module_enable_quirk = sysc_module_enable_quirk_pruss;
20922108
ddata->module_disable_quirk = sysc_module_disable_quirk_pruss;
2109+
}
20932110
}
20942111

20952112
static int sysc_clockdomain_init(struct sysc *ddata)

0 commit comments

Comments
 (0)