diff --git a/drivers/soc/qcom/eud.c b/drivers/soc/qcom/eud.c index fd332cd541a2..75cca8b5409f 100644 --- a/drivers/soc/qcom/eud.c +++ b/drivers/soc/qcom/eud.c @@ -90,6 +90,14 @@ static int enable; static bool eud_ready; static struct platform_device *eud_private; +static int check_eud_mode_mgr2(struct eud_chip *chip) +{ + u32 val; + + qcom_scm_io_readl(chip->eud_mode_mgr2_phys_base, &val); + return val & BIT(0); +} + static void enable_eud(struct platform_device *pdev) { struct eud_chip *priv = platform_get_drvdata(pdev); @@ -103,7 +111,7 @@ static void enable_eud(struct platform_device *pdev) priv->eud_reg_base + EUD_REG_INT1_EN_MASK); /* Enable secure eud if supported */ - if (priv->secure_eud_en) { + if (priv->secure_eud_en && !check_eud_mode_mgr2(priv)) { ret = qcom_scm_io_writel(priv->eud_mode_mgr2_phys_base + EUD_REG_EUD_EN2, EUD_ENABLE_CMD); if (ret) @@ -601,6 +609,9 @@ static int msm_eud_probe(struct platform_device *pdev) } chip->eud_mode_mgr2_phys_base = res->start; + + if (check_eud_mode_mgr2(chip)) + enable = 1; } chip->need_phy_clk_vote = of_property_read_bool(pdev->dev.of_node,