Skip to content

Commit eba8f3a

Browse files
Chenhongrenkartben
authored andcommitted
soc: ite: it8xxx2: enable firmware control mode for elpm
This commit enables firmware control mode for elpm by default. Signed-off-by: Ren Chen <[email protected]>
1 parent 1b7170b commit eba8f3a

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

soc/ite/ec/it8xxx2/soc.c

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,11 @@ COND_CODE_1(DT_NODE_EXISTS(DT_INST(1, ite_it8xxx2_usbpd)), (2), (1))
5353
#define CLK_DIV_LOW_FIELDS(n) FIELD_PREP(GENMASK(3, 0), n)
5454

5555
#ifdef CONFIG_SOC_IT8XXX2_GPIO_Q_GROUP_SUPPORTED
56-
#define ELPM_BASE_ADDR 0xF03E00
56+
#define ELPM_BASE_ADDR DT_REG_ADDR(DT_INST(0, ite_it8xxx2_power_elpm))
57+
#define ELPMF1_WAKE_UP_CTRL_3 0xF1
58+
#define FIRMWARE_CTRL_EN BIT(1)
59+
#define FIRMWARE_CTRL_OUTPUT_H BIT(0)
60+
5761
#define ELPMF5_INPUT_EN 0xF5
5862
#define XLPIN_INPUT_ENABLE_MASK GENMASK(5, 0)
5963
#endif /* CONFIG_SOC_IT8XXX2_GPIO_Q_GROUP_SUPPORTED */
@@ -534,6 +538,16 @@ static int ite_it8xxx2_init(void)
534538
#endif /* (SOC_USBPD_ITE_PHY_PORT_COUNT > 0) */
535539

536540
#ifdef CONFIG_SOC_IT8XXX2_GPIO_Q_GROUP_SUPPORTED
541+
#if DT_HAS_COMPAT_STATUS_OKAY(ite_it8xxx2_power_elpm)
542+
/* drive xlpout high and then enable elpm firmware control mode if
543+
* the elpm node is marked as okay.
544+
*/
545+
sys_write8(sys_read8(ELPM_BASE_ADDR + ELPMF1_WAKE_UP_CTRL_3) | FIRMWARE_CTRL_OUTPUT_H,
546+
ELPM_BASE_ADDR + ELPMF1_WAKE_UP_CTRL_3);
547+
sys_write8(sys_read8(ELPM_BASE_ADDR + ELPMF1_WAKE_UP_CTRL_3) | FIRMWARE_CTRL_EN,
548+
ELPM_BASE_ADDR + ELPMF1_WAKE_UP_CTRL_3);
549+
#endif /* DT_HAS_COMPAT_STATUS_OKAY(ite_it8xxx2_power_elpm) */
550+
537551
/* set gpio-q group as gpio by default */
538552
sys_write8(sys_read8(ELPM_BASE_ADDR + ELPMF5_INPUT_EN) & ~XLPIN_INPUT_ENABLE_MASK,
539553
ELPM_BASE_ADDR + ELPMF5_INPUT_EN);

0 commit comments

Comments
 (0)