[Bugfix][API-660]reboot after sleep
Change-Id: I066a492ad374a56b2fa2b2777929814796311fb9
(cherry picked from commit ba25fe97fb4fd9229f97295fb9896933fd5c40ee)
diff --git a/src/kernel/linux/v4.19/drivers/soc/mediatek/mtk-scpsys.c b/src/kernel/linux/v4.19/drivers/soc/mediatek/mtk-scpsys.c
index 2c822d1..ca78b03 100755
--- a/src/kernel/linux/v4.19/drivers/soc/mediatek/mtk-scpsys.c
+++ b/src/kernel/linux/v4.19/drivers/soc/mediatek/mtk-scpsys.c
@@ -1395,31 +1395,30 @@
{
struct genpd_onecell_data *pd_data;
int i, ret;
-
for (i = 0; i < num; i++) {
struct scp_domain *scpd = &scp->domains[i];
struct generic_pm_domain *genpd = &scpd->genpd;
-
+ bool on;//jb.qi change for reboot after sleep on 20230417
/*
- * Initially turn on all domains to make the domains usable
+ * Initially turn on the domains to make the domains usable
* with !CONFIG_PM and to get the hardware in sync with the
* software. The unused domains will be switched off during
* late_init time.
+ * Power on the ssusb/netsys/connectivity by default to let each driver
+ * disable the clock in case of no usage.
*/
- if(strcmp(genpd->name,"conn")){
- if(strcmp(genpd->name,"ssusb_phy")==0)
- dev_err(&pdev->dev, "Skip ssusb_phy & netsys pwr_on \n");
- else if (strcmp(genpd->name,"netsys")==0){
- ret = scpsys_clk_enable(scpd->clk, MAX_CLKS);
- if (ret)
- pr_notice("netsys clock on fail");
- dev_err(&pdev->dev, "Skip netsys pwr_on \n");
- }
- else
- genpd->power_on(genpd);
+ /*jb.qi change for reboot after sleep on 20230417 start*/
+ if (strcmp(genpd->name, "ssusb_phy") == 0 ||
+ strcmp(genpd->name, "netsys") == 0 ||
+ strcmp(genpd->name, "conn") == 0) {
+ on = false;
+ dev_err(&pdev->dev, "Skip %s pwr_on\n", genpd->name);
+ } else {
+ on = !WARN_ON(genpd->power_on(genpd) < 0);
}
- pm_genpd_init(genpd, NULL, false);
+ pm_genpd_init(genpd, NULL, !on);
+ /*jb.qi change for reboot after sleep on 20230417 end*/
}
/*
@@ -1722,10 +1721,12 @@
.sram_pdn_ack_bits = GENMASK(12, 12),
.basic_clk_name = {"audio"},
.caps = MTK_SCPD_STRICT_BUSP,
+ /*jb.qi change for reboot after sleep on 20230417 start*/
.bp_table = {
BUS_PROT(IFR_TYPE, MT6779_IFR_SET, MT6779_IFR_CLR,
0, MT6779_IFR_STA1, BIT(31), BIT(31), 0),
},
+ /*jb.qi change for reboot after sleep on 20230417 end*/
},
[MT6779_POWER_DOMAIN_MM] = {
@@ -2093,7 +2094,7 @@
.sram_pdn_ack_bits2 = GENMASK(25, 25),
.clk_id = {CLK_NETSYS1, CLK_NETSYS2, CLK_NETSYS3, CLK_NETSYS4,
CLK_NETSYS5, CLK_NETSYS6, CLK_NETSYS7, CLK_NETSYS8},
- /*.bp_table = {
+ .bp_table = {
BUS_PROT(IFR_TYPE, 0x0714, 0x0718, 0x0710, 0x0724,
MT6890_TOP_AXI_PROT_EN_2_NETSYS,MT6890_TOP_AXI_PROT_EN_2_NETSYS,0),
BUS_PROT(IFR_TYPE, 0x02A0, 0x02A4, 0x0220, 0x0228,
@@ -2102,7 +2103,7 @@
MT6890_TOP_AXI_PROT_EN_NETSYS_2ND,MT6890_TOP_AXI_PROT_EN_NETSYS_2ND,0),
BUS_PROT(IFR_TYPE, 0x0714, 0x0718, 0x0710, 0x0724,
MT6890_TOP_AXI_PROT_EN_2_NETSYS_2ND,MT6890_TOP_AXI_PROT_EN_2_NETSYS_2ND,0),
- },*/
+ },
},
[MT6890_POWER_DOMAIN_AUDIO] = {
.name = "audio",