[Feature][T8TSK-304] merge mtk official patch 5th AP patch release
--bsp,kernel part
Only Configure: No
Affected branch: N/A
Affected module: N/A
Is it affected on both ZXIC and MTK: only MTK
Self-test: Yes
Doc Update: No
Change-Id: I178a62705346db5188af3159e31f660d27c6df35
diff --git a/src/kernel/linux/v4.19/drivers/misc/mediatek/eccci/fsm/ccci_fsm.c b/src/kernel/linux/v4.19/drivers/misc/mediatek/eccci/fsm/ccci_fsm.c
index 26b9810..c5a5c51 100644
--- a/src/kernel/linux/v4.19/drivers/misc/mediatek/eccci/fsm/ccci_fsm.c
+++ b/src/kernel/linux/v4.19/drivers/misc/mediatek/eccci/fsm/ccci_fsm.c
@@ -40,13 +40,13 @@
static int needforcestop;
static bool sForceWakeup;
-/*jb.qi change for medmcu sleep fail on 20230418 start*/
+
int ccci_fsm_get_md_force_stop_state(void)
{
return needforcestop;
}
EXPORT_SYMBOL_GPL(ccci_fsm_get_md_force_stop_state);
-/*jb.qi change for medmcu sleep fail on 20230418 end*/
+
int force_md_stop(struct ccci_fsm_monitor *monitor_ctl)
{
int ret = -1;
@@ -458,7 +458,7 @@
ctl->curr_state = CCCI_FSM_GATED;
fsm_broadcast_state(ctl, GATED);
fsm_finish_command(ctl, cmd, 1);
- needforcestop = 0;//jb.qi change for medmcu sleep fail on 20230418
+ needforcestop = 0;
}
static void fsm_routine_wdt(struct ccci_fsm_ctl *ctl,
diff --git a/src/kernel/linux/v4.19/drivers/misc/mediatek/eccci/hif/ccci_hif_ccif.c b/src/kernel/linux/v4.19/drivers/misc/mediatek/eccci/hif/ccci_hif_ccif.c
index 3f638f1..c8df8aa 100644
--- a/src/kernel/linux/v4.19/drivers/misc/mediatek/eccci/hif/ccci_hif_ccif.c
+++ b/src/kernel/linux/v4.19/drivers/misc/mediatek/eccci/hif/ccci_hif_ccif.c
@@ -65,6 +65,7 @@
0 * 1024, 0 * 1024, 0 * 1024, 0 * 1024, 0 * 1024, 0 * 1024,
0 * 1024, 0 * 1024,
};
+
static void md_ccif_dump(unsigned char *title, unsigned char hif_id)
{
int idx;
@@ -201,7 +202,7 @@
i += 4;
}
- if (test_and_clear_bit((D2H_SRAM), &md_ctrl->wakeup_ch)) { //jb.qi change for abnormal resume on 20230328
+ if (test_and_clear_bit((D2H_SRAM), &md_ctrl->wakeup_ch)) {
CCCI_NOTICE_LOG(md_ctrl->md_id, TAG,
"CCIF_MD wakeup source:(SRX_IDX/%d)(%u)\n",
ccci_h->channel, md_ctrl->wakeup_count);
@@ -373,15 +374,13 @@
}
ccci_h = (struct ccci_header *)skb->data;
- if (test_and_clear_bit(queue->index, &md_ctrl->wakeup_ch)) { //jb.qi change for abnormal resume on 20230328
+ if (test_and_clear_bit(queue->index, &md_ctrl->wakeup_ch)) {
CCCI_NOTICE_LOG(md_ctrl->md_id, TAG,
"CCIF_MD wakeup source:(%d/%d/%x)(%u)\n",
queue->index, ccci_h->channel,
ccci_h->reserved, md_ctrl->wakeup_count);
- /*jb.qi change for abnormal resume start on 20230328*/
if (ccci_h->channel == CCCI_FS_RX)
ccci_h->data[0] |= CCCI_FS_AP_CCCI_WAKEUP;
- /*jb.qi change for abnormal resume end on 20230328*/
}
ccci_hdr = *ccci_h;
@@ -714,7 +713,7 @@
if (md_ctrl->channel_id & (1 << AP_MD_CCB_WAKEUP)) {
clear_bit(AP_MD_CCB_WAKEUP, &md_ctrl->channel_id);
CCCI_DEBUG_LOG(md_ctrl->md_id, TAG, "CCB wakeup\n");
- if (test_and_clear_bit(AP_MD_CCB_WAKEUP, &md_ctrl->wakeup_ch)) { //jb.qi change for abnormal resume on 20230328
+ if (test_and_clear_bit(AP_MD_CCB_WAKEUP, &md_ctrl->wakeup_ch)) {
CCCI_NOTICE_LOG(md_ctrl->md_id, TAG,
"CCIF_MD wakeup source:(CCB)(%u)\n",
md_ctrl->wakeup_count);
@@ -1259,7 +1258,7 @@
md_ctrl->md_id = md_id;
md_ctrl->hif_id = hif_id;
atomic_set(&md_ctrl->reset_on_going, 1);
- md_ctrl->wakeup_ch = 0; //jb.qi change for abnormal resume on 20230328
+ md_ctrl->wakeup_ch = 0;
ccci_reset_seq_num(&md_ctrl->traffic_info);
/*init queue */
diff --git a/src/kernel/linux/v4.19/drivers/misc/mediatek/eccci/hif/ccci_hif_ccif.h b/src/kernel/linux/v4.19/drivers/misc/mediatek/eccci/hif/ccci_hif_ccif.h
index 29b2286..90b8bfc 100644
--- a/src/kernel/linux/v4.19/drivers/misc/mediatek/eccci/hif/ccci_hif_ccif.h
+++ b/src/kernel/linux/v4.19/drivers/misc/mediatek/eccci/hif/ccci_hif_ccif.h
@@ -21,11 +21,11 @@
#else
#define QUEUE_NUM 8
#endif
-/*jb.qi change for abnormal resume start on 20230328*/
+
/* speciall for user: ccci_fsd data[0] */
#define CCCI_FS_AP_CCCI_WAKEUP (0x40000000)
#define CCCI_FS_REQ_SEND_AGAIN 0x80000000
-/*jb.qi change for abnormal resume end on 20230328*/
+
/*#define FLOW_CTRL_ENABLE*/
#define FLOW_CTRL_HEAD 0x464C4F57 /*FLOW*/
#define FLOW_CTRL_TAIL 0x4354524C /*CTRL*/
@@ -95,7 +95,7 @@
struct timer_list bus_timeout_timer;
void __iomem *ccif_ap_base;
void __iomem *ccif_md_base;
- unsigned long wakeup_ch; //jb.qi change for abnormal resume on 20230328
+ unsigned long wakeup_ch;
unsigned int wakeup_count;
struct work_struct wdt_work;
@@ -233,8 +233,8 @@
{
struct md_ccif_ctrl *md_ctrl =
(struct md_ccif_ctrl *)ccci_hif_get_by_id(hif_id);
- unsigned int ccif_ch = 0; //jb.qi change for abnormal resume on 20230328
- /*jb.qi change for abnormal resume start on 20230328 */
+ unsigned int ccif_ch = 0;
+
if (md_ctrl) {
ccif_ch = ccif_read32(md_ctrl->ccif_ap_base, APCCIF_RCHNUM);
pr_notice("[ccci1/cif] CCIF wakeup channel: 0x%x\n", ccif_ch);
@@ -244,7 +244,6 @@
}
return value;
}
- /*jb.qi change for abnormal resume end on 20230328 */
else
return -1;
}
diff --git a/src/kernel/linux/v4.19/drivers/misc/mediatek/eccci/hif/ccci_hif_dpmaif.c b/src/kernel/linux/v4.19/drivers/misc/mediatek/eccci/hif/ccci_hif_dpmaif.c
index a0e9fa6..dc65976 100644
--- a/src/kernel/linux/v4.19/drivers/misc/mediatek/eccci/hif/ccci_hif_dpmaif.c
+++ b/src/kernel/linux/v4.19/drivers/misc/mediatek/eccci/hif/ccci_hif_dpmaif.c
@@ -355,7 +355,7 @@
}
}
-
+//xy.he [Bugfix][API-1384] add debug patch for command ping fail (tx_busy) -- start on Nov 25 2023
void* getDRBtableAddress(int qid)
{
struct dpmaif_tx_queue *txq;
@@ -366,7 +366,7 @@
return NULL;
}
EXPORT_SYMBOL_GPL(getDRBtableAddress);
-
+//xy.he [Bugfix][API-1384] add debug patch for command ping fail (tx_busy) -- end on Nov 25 2023
static void dpmaif_dump_txq_remain(struct hif_dpmaif_ctrl *hif_ctrl,
unsigned int qno, int dump_multi)
{
diff --git a/src/kernel/linux/v4.19/drivers/misc/mediatek/eccci/inc/ccci_fsm.h b/src/kernel/linux/v4.19/drivers/misc/mediatek/eccci/inc/ccci_fsm.h
index 59656ed..70dc76a 100644
--- a/src/kernel/linux/v4.19/drivers/misc/mediatek/eccci/inc/ccci_fsm.h
+++ b/src/kernel/linux/v4.19/drivers/misc/mediatek/eccci/inc/ccci_fsm.h
@@ -21,6 +21,6 @@
extern void mdee_set_ex_time_str(unsigned char md_id, unsigned int type,
char *str);
-int ccci_fsm_get_md_force_stop_state(void); //jb.qi change for medmcu sleep fail on 20230418
+int ccci_fsm_get_md_force_stop_state(void);
#endif /* __CCCI_FSM_H__ */
diff --git a/src/kernel/linux/v4.19/drivers/misc/mediatek/eccci/mt6880/modem_secure_base.h b/src/kernel/linux/v4.19/drivers/misc/mediatek/eccci/mt6880/modem_secure_base.h
index 4e28fa7..0f66f48 100644
--- a/src/kernel/linux/v4.19/drivers/misc/mediatek/eccci/mt6880/modem_secure_base.h
+++ b/src/kernel/linux/v4.19/drivers/misc/mediatek/eccci/mt6880/modem_secure_base.h
@@ -38,9 +38,8 @@
#define mdreg_write32(reg_id, value) \
{ \
struct arm_smccc_res res; \
- arm_smccc_smc(MTK_SIP_KERNEL_CCCI_CONTROL, MD_POWER_CONFIG, \
- MD_DBGSYS_REG_DUMP, \
- reg_id, value, 0, 0, 0, &res); \
+ arm_smccc_smc(MTK_SIP_KERNEL_CCCI_CONTROL, MD_DBGSYS_REG_DUMP, \
+ reg_id, value, 0, 0, 0, 0, &res); \
}
#endif /* __MODEM_SECURE_BASE_H__ */
diff --git a/src/kernel/linux/v4.19/drivers/misc/mediatek/eccci/mt6890/modem_secure_base.h b/src/kernel/linux/v4.19/drivers/misc/mediatek/eccci/mt6890/modem_secure_base.h
index 19f0182..4897b56 100644
--- a/src/kernel/linux/v4.19/drivers/misc/mediatek/eccci/mt6890/modem_secure_base.h
+++ b/src/kernel/linux/v4.19/drivers/misc/mediatek/eccci/mt6890/modem_secure_base.h
@@ -39,9 +39,8 @@
#define mdreg_write32(reg_id, value) \
{ \
struct arm_smccc_res res; \
- arm_smccc_smc(MTK_SIP_KERNEL_CCCI_CONTROL, MD_POWER_CONFIG, \
- MD_DBGSYS_REG_DUMP, \
- reg_id, value, 0, 0, 0, &res); \
+ arm_smccc_smc(MTK_SIP_KERNEL_CCCI_CONTROL, MD_DBGSYS_REG_DUMP, \
+ reg_id, value, 0, 0, 0, 0, &res); \
}
#endif /* __MODEM_SECURE_BASE_H__ */
diff --git a/src/kernel/linux/v4.19/drivers/misc/mediatek/lpm/modules/debug/mt6880/mtk_logger.c b/src/kernel/linux/v4.19/drivers/misc/mediatek/lpm/modules/debug/mt6880/mtk_logger.c
index 0e2fd79..5fb0294 100644
--- a/src/kernel/linux/v4.19/drivers/misc/mediatek/lpm/modules/debug/mt6880/mtk_logger.c
+++ b/src/kernel/linux/v4.19/drivers/misc/mediatek/lpm/modules/debug/mt6880/mtk_logger.c
@@ -834,10 +834,6 @@
"MCUSYSOFF", NULL);
mtk_logger_help.prev = mtk_logger_help.cur;
}
- /*
- else
- pr_info("[name:spm&][SPM] MCUSYSOFF Didn't enter low power scenario\n");
- */
timer->fired = info->fired;
return 0;
diff --git a/src/kernel/linux/v4.19/drivers/misc/mediatek/medmcu/rv33/Makefile b/src/kernel/linux/v4.19/drivers/misc/mediatek/medmcu/rv33/Makefile
index e20c3c2..e525ad2 100644
--- a/src/kernel/linux/v4.19/drivers/misc/mediatek/medmcu/rv33/Makefile
+++ b/src/kernel/linux/v4.19/drivers/misc/mediatek/medmcu/rv33/Makefile
@@ -28,7 +28,7 @@
# include mtk_spm_resource_req
ccflags-y += -I$(srctree)/drivers/misc/mediatek/base/power/include/
-# include ccci_fsm.h jb.qi change for medmcu sleep fail on 202304018
+# include ccci_fsm.h
ccflags-y += -I$(srctree)/drivers/misc/mediatek/eccci/inc
#ifeq ($(CONFIG_MTK_ENG_BUILD),y)
diff --git a/src/kernel/linux/v4.19/drivers/misc/mediatek/medmcu/rv33/medmcu_helper.h b/src/kernel/linux/v4.19/drivers/misc/mediatek/medmcu/rv33/medmcu_helper.h
index 2fda41b..ee46f48 100644
--- a/src/kernel/linux/v4.19/drivers/misc/mediatek/medmcu/rv33/medmcu_helper.h
+++ b/src/kernel/linux/v4.19/drivers/misc/mediatek/medmcu/rv33/medmcu_helper.h
@@ -88,8 +88,8 @@
RESET_TYPE_CMD = 2,
RESET_TYPE_TIMEOUT = 3,
RESET_TYPE_MD_EXCEP = 4,
- RESET_TYPE_MD_FORCE_STOP = 5, //jb.qi change for medmcu sleep fail on 20230418
- RESET_TYPE_RESUME = 6, //jb.qi change for medmcu sleep fail on 20230418
+ RESET_TYPE_MD_FORCE_STOP = 5,
+ RESET_TYPE_RESUME = 6,
};
struct scp_regs {
diff --git a/src/kernel/linux/v4.19/drivers/misc/mediatek/medmcu/rv33/v02/medmcu_helper.c b/src/kernel/linux/v4.19/drivers/misc/mediatek/medmcu/rv33/v02/medmcu_helper.c
old mode 100755
new mode 100644
index 892dc0f..a6275e2
--- a/src/kernel/linux/v4.19/drivers/misc/mediatek/medmcu/rv33/v02/medmcu_helper.c
+++ b/src/kernel/linux/v4.19/drivers/misc/mediatek/medmcu/rv33/v02/medmcu_helper.c
@@ -30,7 +30,7 @@
#include <mt-plat/sync_write.h>
//#include <mt-plat/aee.h>
#include <linux/delay.h>
-#include <linux/pm_wakeup.h> //jb.qi change for medmcu sleep fail on 20230418
+#include <linux/pm_wakeup.h>
#include <linux/syscore_ops.h>
#include "medmcu_helper.h"
#include "medmcu_ipi_pin.h"
@@ -39,15 +39,17 @@
#include "medmcu_excep.h"
#include "medmcu_scpctl.h"
#include "medmcu_dvfs.h"
-#include "ccci_fsm.h" //jb.qi change for medmcu sleep fail on 20230418
+#include "ccci_fsm.h"
+
void __iomem *medhw_base;
EXPORT_SYMBOL_GPL(medhw_base);
#define MEDHW_BASE medhw_base
#define MEDHW_INT_MNG_BASE (MEDHW_BASE + 0x3000)
-#define MEDHW_INT_EXCEP_W1C (MEDHW_INT_MNG_BASE + 0x00) //jb.qi change for medmcu sleep fail on 20230418
+#define MEDHW_INT_EXCEP_W1C (MEDHW_INT_MNG_BASE + 0x00)
#define MEDHW_INT_EXCEP_SET (MEDHW_INT_MNG_BASE + 0x08)
-#define MEDHW_INT_NOTIF_W1C (MEDHW_INT_MNG_BASE + 0x20) //jb.qi change for medmcu sleep fail on 20230418
+#define MEDHW_INT_NOTIF_W1C (MEDHW_INT_MNG_BASE + 0x20)
+
void __iomem *fe_base;
#define FE_BASE fe_base
@@ -230,7 +232,8 @@
static unsigned int scp_timeout_times;
#endif
static struct scp_work_struct scp_A_notify_work;
-static unsigned int g_ignore_stop_ipi_flag = 0; //jb.qi change for medmcu sleep fail on 20230418
+static unsigned int g_ignore_stop_ipi_flag = 0;
+
//represent the suspend response from medmcu, 0: no response, 1: idle, -1: can't suspend
atomic_t medmcu_suspend_response;
//represent the medmcu is ready for suspend query or not
@@ -247,10 +250,10 @@
char *core_ids[SCP_CORE_TOTAL] = {"SCP A"};
DEFINE_SPINLOCK(scp_awake_spinlock);
-DEFINE_SPINLOCK(medmcu_resume_spinlock);//jb.qi change for medmcu sleep fail on 20230418
+DEFINE_SPINLOCK(medmcu_resume_spinlock);
/* set flag after driver initial done */
static bool driver_init_done;
-static struct wakeup_source *medmcu_dl_wakelock;//jb.qi change for medmcu sleep fail on 20230418
+static struct wakeup_source *medmcu_dl_wakelock;
struct scp_ipi_irq {
const char *name;
@@ -281,7 +284,7 @@
}
return 0;
}
-/*jb.qi change for medmcu sleep fail on 20230418 start*/
+
static void medmcu_set_ignore_stop_ipi_flag(unsigned int flag)
{
g_ignore_stop_ipi_flag = flag;
@@ -291,7 +294,6 @@
{
return (g_ignore_stop_ipi_flag == 1);
}
-/*jb.qi change for medmcu sleep fail on 20230418 end*/
void fdma_init(struct net_device *dev)
{
@@ -438,7 +440,7 @@
//Enable DMA check WDONE bit by 0x15104204[28]=1
//Disable 2-byte offset by 0x15104204[31]=0
//Disable TX_DMA writing back DDONE into TXD: 0x15104204[6]=0
- reg_write(MDMA_GLO_CFG, 0x10404825);//jb.qi change for medmcu sleep fail on 20230803
+ reg_write(MDMA_GLO_CFG, 0x10404825);
}
int mdma_init(struct net_device *dev, struct MDMA_END_DEVICE *ei_local)
@@ -772,14 +774,12 @@
if (!is_scp_ready(SCP_A_ID)) {
pr_notice("[MEDMCU] %s(): scp_extern_notify SCP_EVENT_STOP_ACK\n", __func__);
scp_extern_notify(SCP_EVENT_STOP_ACK);
- /*jb.qi change for medmcu sleep fail on 20230417 start*/
} else if (medmcu_ignore_stop_ipi()) {
medmcu_set_ignore_stop_ipi_flag(0);
pr_notice("[MEDMCU] %s(): scp_extern_notify SCP_EVENT_STOP_ACK\n", __func__);
scp_extern_notify(SCP_EVENT_STOP_ACK);
} else
handle_dpmaif_stop();
- /*jb.qi change for medmcu sleep fail on 20230417 start*/
break;
case CCCI_DPMAIF_EVENT_READY:
if (!is_scp_ready(SCP_A_ID)) {
@@ -876,7 +876,7 @@
unsigned long spin_flags;
struct scp_work_struct *sws =
container_of(ws, struct scp_work_struct, work);
- unsigned int scp_notify_flag = sws->flags; //jb.qi change for medmcu sleep fail on20230417
+ unsigned int scp_notify_flag = sws->flags;
if (scp_notify_flag) {
@@ -897,13 +897,13 @@
, SCP_EVENT_READY, NULL);
mutex_unlock(&scp_A_notify_mutex);
//for resume medmcu, need dpamif ready event.
- spin_lock_irqsave(&medmcu_resume_spinlock, spin_flags); //jb.qi change for medmcu sleep fail on20230417
+ spin_lock_irqsave(&medmcu_resume_spinlock, spin_flags);
if (atomic_read(&medmcu_resume_need_dpmaif_ready) == 1) {
//ask ccci to send dpmaif ready, since dpmaif hw/sw is still alive after resume
ccci_dpmaif_resend_ready();
atomic_set(&medmcu_resume_need_dpmaif_ready, 0);
}
- spin_unlock_irqrestore(&medmcu_resume_spinlock, spin_flags); //jb.qi change for medmcu sleep fail on20230417
+ spin_unlock_irqrestore(&medmcu_resume_spinlock, spin_flags);
}
/* register scp dvfs*/
@@ -1102,9 +1102,9 @@
static int med_stop_ack_ipi_handler(unsigned int id, void *prdata, void *data,
unsigned int len)
{
- int md_force_stop;//jb.qi change for medmcu sleep fail on 20230418
+ int md_force_stop;
scp_reset_counts = 9999;
- /*jb.qi change for medmcu sleep fail on 20230418 start*/
+
md_force_stop = ccci_fsm_get_md_force_stop_state();
if (md_force_stop == 1) {
@@ -1115,7 +1115,7 @@
scp_reset_by_md_excep = 1;
scp_send_reset_wq(RESET_TYPE_MD_EXCEP);
}
- /*jb.qi change for medmcu sleep fail on 20230418 end*/
+
return 0;
}
@@ -2211,7 +2211,6 @@
/******************************************************************************
*****************************************************************************/
-/*jb.qi change for medmcu sleep fail on 20230418 start */
void print_med_registers(void)
{
uint32_t medhw_int_exp_w1c, medhw_int_notif_w1c;
@@ -2221,7 +2220,7 @@
pr_notice("MEDHW_INT_EXCEP_W1C = 0x%08x\n", medhw_int_exp_w1c);
pr_notice("MEDHW_INT_NOTIFY_W1C = 0x%08x\n", medhw_int_notif_w1c);
}
-/*jb.qi change for medmcu sleep fail on 20230418 end */
+
void print_clk_registers(void)
{
void __iomem *cfg = scpreg.cfg;
@@ -2264,7 +2263,7 @@
while (timeout--) {
core0_halt = readl(R_CORE0_STATUS) & B_CORE_HALT;
- if (core0_halt) { //jb.qi change for medmcu sleep fail on 20230418
+ if (core0_halt) {
/* SCP stops any activities
* and parks at wfi
*/
@@ -2311,15 +2310,12 @@
* reset type scp WDT, CMD or MD_EXCEP
* make sure scp is in idle state
*/
- /*jb.qi change for medmcu sleep fail on 20230418 start*/
if (scp_reset_type == RESET_TYPE_WDT)
medmcu_set_ignore_stop_ipi_flag(1);
- /*jb.qi change for medmcu sleep fail on 20230418 end*/
scp_reset_wait_timeout();
writel(1, R_CORE0_SW_RSTN_SET);
writel(1, R_CORE1_SW_RSTN_SET);
writel(CORE_REBOOT_OK, SCP_GPR_CORE0_REBOOT);
- writel(CORE_REBOOT_OK, SCP_GPR_CORE1_REBOOT);
dsb(SY); /* may take lot of time */
pr_notice("[MEDMCU] rstn core0 %x core1 %x\n",
readl(R_CORE0_SW_RSTN_SET), readl(R_CORE1_SW_RSTN_SET));
@@ -2334,35 +2330,32 @@
/* start scp */
pr_notice("[MEDMCU] start scp\n");
- /*jb.qi change for medmcu sleep fail on 20230418 start*/
+
if (scp_reset_type == RESET_TYPE_RESUME) {
pr_notice("[MEDMCU] get spinlock for atomic medmcu resume rstn sequence\n");
spin_lock_irqsave(&medmcu_resume_spinlock, spin_flags);
}
- /*jb.qi change for medmcu sleep fail on 20230418 end*/
writel(1, R_CORE0_SW_RSTN_CLR);
dsb(SY); /* may take lot of time */
atomic_set(&medmcu_resume_need_dpmaif_ready, 0);
if (scp_reset_type == RESET_TYPE_MD_EXCEP) {
- /*notify scp functions stop*/
+ /* notify scp functions stop */
pr_notice("[MEDMCU] %s(): scp_extern_notify SCP_EVENT_STOP_ACK\n", __func__);
scp_extern_notify(SCP_EVENT_STOP_ACK);
} else if (scp_reset_type == RESET_TYPE_WDT) {
- /*notify scp functions stop*/
+ /* notify scp functions stop */
pr_notice("[MEDMCU] %s(): scp_extern_notify SCP_EVENT_STOP_BY_WDT\n", __func__);
scp_extern_notify(SCP_EVENT_STOP_BY_WDT);
} else if (scp_reset_type == RESET_TYPE_RESUME) {
- //wait scp ready and ask for dpmaif_ready_event
+ /* wait scp ready and ask for dpmaif_ready_event */
atomic_set(&medmcu_resume_need_dpmaif_ready, 1);
- /*jb.qi change for medmcu sleep fail on 20230418 start*/
spin_unlock_irqrestore(&medmcu_resume_spinlock, spin_flags);
pr_notice("[MEDMCU] %s(): need dpmaif ready flag set in RESET_TYPE_RESUME\n", __func__);
- /*jb.qi change for medmcu sleep fail on 20230418 end*/
-
}
- pr_notice("[MEDMCU] rstn core0 %x\n", readl(R_CORE0_SW_RSTN_CLR)); //jb.qi change for medmcu sleep fail on 20230418
+ pr_notice("[MEDMCU] rstn core0 %x\n", readl(R_CORE0_SW_RSTN_CLR));
+
#if SCP_BOOT_TIME_OUT_MONITOR
mod_timer(&scp_ready_timer[SCP_A_ID], jiffies + SCP_READY_TIMEOUT);
#endif
@@ -2399,13 +2392,13 @@
unsigned int scp_reset_type = sws->flags;
pr_notice("[MEDMCU] %s(): remain %d times\n", __func__, scp_reset_counts);
- /*jb.qi change for medmcu sleep fail on 20230418 start */
+
if (scp_reset_type == RESET_TYPE_MD_FORCE_STOP) {
scp_extern_notify(SCP_EVENT_STOP_ACK);
return;
}
- /*jb.qi change for medmcu sleep fail on 20230418 end*/
- /*notify scp functions stop*/
+
+ /* notify scp functions stop */
pr_debug("[MEDMCU] %s(): scp_extern_notify SCP_EVENT_STOP\n", __func__);
scp_extern_notify(SCP_EVENT_STOP);
/*
@@ -2423,7 +2416,7 @@
}
/* print_clk and scp_aed before pll enable to keep ori CLK_SEL */
- print_med_registers();//jb.qi change for medmcu sleep fail on 20230803
+ print_med_registers();
print_clk_registers();
/*workqueue for scp ee, scp reset by cmd will not trigger scp ee*/
if (scp_reset_by_cmd == 0 && scp_reset_by_md_excep == 0) {
@@ -2562,13 +2555,13 @@
struct net_device *netdev;
struct MDMA_END_DEVICE *ei_local = &mdma_device;
- /*jb.qi change for medmcu sleep fail on20230418 start*/
+
medmcu_dl_wakelock = wakeup_source_register(NULL, "medmcu_dl_wakelock");
if (!medmcu_dl_wakelock) {
pr_err("%s %d: init dl wakeup source fail!", __func__, __LINE__);
return -1;
}
- /*jb.qi change for medmcu sleep fail on20230418 end*/
+
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
scpreg.sram = devm_ioremap_resource(dev, res);
if (IS_ERR((void const *) scpreg.sram)) {
@@ -2749,7 +2742,7 @@
int medmcu_pm_suspend(struct device *device)
{
if (sync_medmcu_can_suspend() == -1) {
- __pm_wakeup_event(medmcu_dl_wakelock, jiffies_to_msecs(HZ)); //jb.qi change for medmcu sleep fail on 20230418
+ __pm_wakeup_event(medmcu_dl_wakelock, jiffies_to_msecs(HZ));
return -1;
}
writel(V_DISABLE_WDT, R_CORE0_WDT_CFG);
diff --git a/src/kernel/linux/v4.19/drivers/misc/mediatek/medmcu/rv33/v02/medmcu_logger.c b/src/kernel/linux/v4.19/drivers/misc/mediatek/medmcu/rv33/v02/medmcu_logger.c
index b933751..e240df7 100644
--- a/src/kernel/linux/v4.19/drivers/misc/mediatek/medmcu/rv33/v02/medmcu_logger.c
+++ b/src/kernel/linux/v4.19/drivers/misc/mediatek/medmcu/rv33/v02/medmcu_logger.c
@@ -799,13 +799,14 @@
extern phys_addr_t gMedmcuDrb0PhyBase;
extern phys_addr_t gMedmcuDrb1PhyBase;
-extern void* getDRBtableAddress(int qid);
+extern void* getDRBtableAddress(int qid); //xy.he [Bugfix][API-1384] add debug patch for command ping fail (tx_busy) -- on Nov 25 2023
int print_medhw_dram(struct seq_file *seq) {
u32 i;
u32 *p;
char buf[100];
- pr_notice("Dump TX_DESC...\n"); //jb.qi change for medmcu sleep fail on 20230418
+
+ pr_notice("Dump TX_DESC...\n");
p = (u32 *)medmcu_tx_desc_base_virt;
if (seq != NULL) {
seq_puts(seq, " <<TX_DESC DUMP>>\n");
@@ -829,7 +830,7 @@
pr_notice("+-----------------------------------------------+\n");
}
- pr_notice("Dump RX_DESC...\n");//jb.qi change for medmcu sleep fail on 20230418
+ pr_notice("Dump RX_DESC...\n");
p = (u32 *)medmcu_rx_desc_base_virt;
if (seq != NULL) {
seq_puts(seq, " <<RX_DESC DUMP>>\n");
@@ -853,7 +854,7 @@
pr_notice("+-----------------------------------------------+\n");
}
- pr_notice("Dump HNAT_INFO...\n");//jb.qi change for medmcu sleep fail on 20230418
+ pr_notice("Dump HNAT_INFO...\n");
p = (u32 *)medmcu_hnat_info_base_virt;
if (seq != NULL) {
seq_puts(seq, " <<HNAT_INFO DUMP>>\n");
@@ -877,7 +878,7 @@
pr_notice("+-----------------------------------------------+\n");
}
- pr_notice("Dump HNAT_INFO_HOST...\n");//jb.qi change for medmcu sleep fail on 20230418
+ pr_notice("Dump HNAT_INFO_HOST...\n");
p = (u32 *)medmcu_hnat_info_host_base_virt;
if (seq != NULL) {
seq_puts(seq, " <<HNAT_INFO_HOST DUMP>>\n");
@@ -901,7 +902,7 @@
pr_notice("+-----------------------------------------------+\n");
}
- pr_notice("Dump PIT_NAT...\n");//jb.qi change for medmcu sleep fail on 20230418
+ pr_notice("Dump PIT_NAT...\n");
p = (u32 *)medmcu_pit_nat_base_virt;
if (seq != NULL) {
seq_puts(seq, " <<PIT_NAT DUMP>>\n");
@@ -925,7 +926,7 @@
pr_notice("+-----------------------------------------------+\n");
}
- pr_notice("Dump PIT...\n");//jb.qi change for medmcu sleep fail on 20230418
+ pr_notice("Dump PIT...\n");
p = (u32 *)medmcu_pit_base_virt;
if (seq != NULL) {
seq_puts(seq, " <<PIT DUMP>>\n");
@@ -949,7 +950,7 @@
pr_notice("+-----------------------------------------------+\n");
}
- pr_notice("Dump DRB0...\n");//jb.qi change for medmcu sleep fail on 20230418
+ pr_notice("Dump DRB0...\n");
p = (u32 *)medmcu_drb0_base_virt;
if (seq != NULL) {
seq_puts(seq, " <<DRB0 DUMP>>\n");
@@ -973,7 +974,7 @@
pr_notice("+-----------------------------------------------+\n");
}
- pr_notice("Dump DRB1...\n");//jb.qi change for medmcu sleep fail on 20230418
+ pr_notice("Dump DRB1...\n");
p = (u32 *)medmcu_drb1_base_virt;
if (seq != NULL) {
seq_puts(seq, " <<DRB1 DUMP>>\n");
@@ -996,7 +997,7 @@
} else {
pr_notice("+-----------------------------------------------+\n");
}
-
+ //xy.he [Bugfix][API-1384] add debug patch for command ping fail (tx_busy) -- start on Nov 25 2023
pr_notice("Dump DRB2...\n");
p = (u32 *)getDRBtableAddress(2);
if (seq != NULL) {
@@ -1048,7 +1049,7 @@
} else {
pr_notice("+-----------------------------------------------+\n");
}
-
+ //xy.he [Bugfix][API-1384] add debug patch for command ping fail (tx_busy) -- end on Nov 25 2023
medhw_dram_logged = 1;//jb.qi change for medmcu sleep fail on 20230418
pr_notice("[MEDHW] read dram end\n");//jb.qi change for medmcu sleep fail on 20230418
@@ -1087,8 +1088,8 @@
unsigned char *medhw_bat_sw_map_buf = (unsigned char *)(SCP_TCM + bat_addr);
unsigned char *medhw_fbat_sw_map_buf = (unsigned char *)(SCP_TCM + fbat_addr);
-
- pr_notice("Dump MEDHW_INT_MNG...\n");//jb.qi change for medmcu sleep fail on 20230418
+
+ pr_notice("Dump MEDHW_INT_MNG...\n");
if (seq != NULL) {
seq_puts(seq, " <<MEDHW_INT_MNG CR DUMP>>\n");
} else {
@@ -1111,7 +1112,7 @@
pr_notice("+-----------------------------------------------+\n");
}
- pr_notice("Dump MEDHW_BMP...\n");//jb.qi change for medmcu sleep fail on 20230418
+ pr_notice("Dump MEDHW_BMP...\n");
if (seq != NULL) {
seq_puts(seq, " <<MEDHW_BMP CR DUMP>>\n");
} else {
@@ -1134,7 +1135,7 @@
pr_notice("+-----------------------------------------------+\n");
}
- pr_notice("Dump MEDHW_SSR0...\n");//jb.qi change for medmcu sleep fail on 20230418
+ pr_notice("Dump MEDHW_SSR0...\n");
if (seq != NULL) {
seq_puts(seq, " <<MEDHW_SSR0 CR DUMP>>\n");
} else {
@@ -1157,7 +1158,7 @@
pr_notice("+-----------------------------------------------+\n");
}
- pr_notice("Dump MEDHW_SSR1...\n");//jb.qi change for medmcu sleep fail on 20230418
+ pr_notice("Dump MEDHW_SSR1...\n");
if (seq != NULL) {
seq_puts(seq, " <<MEDHW_SSR1 CR DUMP>>\n");
} else {
@@ -1180,7 +1181,7 @@
pr_notice("+-----------------------------------------------+\n");
}
- pr_notice("Dump MEDHW_SSR2...\n");//jb.qi change for medmcu sleep fail on 20230418
+ pr_notice("Dump MEDHW_SSR2...\n");
if (seq != NULL) {
seq_puts(seq, " <<MEDHW_SSR2 CR DUMP>>\n");
} else {
@@ -1203,7 +1204,7 @@
pr_notice("+-----------------------------------------------+\n");
}
- pr_notice("Dump DPMAIF_INT...\n");//jb.qi change for medmcu sleep fail on 20230418
+ pr_notice("Dump DPMAIF_INT...\n");
if (seq != NULL) {
seq_puts(seq, " <<DPMAIF_INT CR DUMP>>\n");
} else {
@@ -1226,7 +1227,7 @@
pr_notice("+-----------------------------------------------+\n");
}
- pr_notice("Dump DPMAIF_DL...\n");//jb.qi change for medmcu sleep fail on 20230418
+ pr_notice("Dump DPMAIF_DL...\n");
if (seq != NULL) {
seq_puts(seq, " <<DPMAIF_DL CR DUMP>>\n");
} else {
@@ -1249,7 +1250,7 @@
pr_notice("+-----------------------------------------------+\n");
}
- pr_notice("Dump DPMAIF_UL...\n");//jb.qi change for medmcu sleep fail on 20230418
+ pr_notice("Dump DPMAIF_UL...\n");
if (seq != NULL) {
seq_puts(seq, " <<DPMAIF_UL CR DUMP>>\n");
} else {
@@ -1343,7 +1344,7 @@
pr_notice("+-----------------------------------------------+\n");
}
- pr_notice("Dump MDMA_RX_DESC...\n");//jb.qi change for medmcu sleep fail on 20230418
+ pr_notice("Dump MDMA_RX_DESC...\n");
if (seq != NULL) {
seq_puts(seq, " <<MDMA_RX_DESC CR DUMP>>\n");
} else {
@@ -1366,7 +1367,7 @@
pr_notice("+-----------------------------------------------+\n");
}
- pr_notice("Dump MDMA_TXRX_DESC_INFO...\n");//jb.qi change for medmcu sleep fail on 20230418
+ pr_notice("Dump MDMA_TXRX_DESC_INFO...\n");
if (seq != NULL) {
seq_puts(seq, " <<MDMA_TXRX_DESC_INFO CR DUMP>>\n");
} else {
@@ -1389,7 +1390,7 @@
pr_notice("+-----------------------------------------------+\n");
}
- pr_notice("Dump FDMA_HNAT_INFO...\n");//jb.qi change for medmcu sleep fail on 20230418
+ pr_notice("Dump FDMA_HNAT_INFO...\n");
if (seq != NULL) {
seq_puts(seq, " <<FDMA_HNAT_INFO CR DUMP>>\n");
} else {
@@ -1412,7 +1413,7 @@
pr_notice("+-----------------------------------------------+\n");
}
- pr_notice("Dump FDMA_HNAT_INFO_INFO...\n");//jb.qi change for medmcu sleep fail on 20230418
+ pr_notice("Dump FDMA_HNAT_INFO_INFO...\n");
if (seq != NULL) {
seq_puts(seq, " <<FDMA_HNAT_INFO_INFO CR DUMP>>\n");
} else {
@@ -1435,7 +1436,7 @@
pr_notice("+-----------------------------------------------+\n");
}
- pr_notice("Dump BAT_SW_MAP...\n");//jb.qi change for medmcu sleep fail on 20230418
+
if (!sw_map_flush(false)) {
seq_puts(seq, "BAT_SW_MAP flush error\n");
return 0;
@@ -1445,6 +1446,7 @@
return 0;
}
+ pr_notice("Dump BAT_SW_MAP...\n");
p = (u32 *)medhw_bat_sw_map_buf;
if (seq != NULL) {
seq_puts(seq, " <<BAT_SW_MAP DUMP>>\n");
@@ -1461,7 +1463,8 @@
pr_notice("[MEDHW] %s", buf);
}
}
- pr_notice("Dump FBAT_SW_MAP...\n");//jb.qi change for medmcu sleep fail on 20230418
+
+ pr_notice("Dump FBAT_SW_MAP...\n");
p = (u32 *)medhw_fbat_sw_map_buf;
if (seq != NULL) {
seq_puts(seq, " <<FBAT_SW_MAP DUMP>>\n");
@@ -1486,22 +1489,21 @@
pr_notice("+-----------------------------------------------+\n");
}
- medhw_cr_dump_logged = 1;//jb.qi change for medmcu sleep fail on 20230418
- pr_notice("[MEDHW] read cr_dump end\n");//jb.qi change for medmcu sleep fail on 20230418
+ medhw_cr_dump_logged = 1;
+ pr_notice("[MEDHW] read cr_dump end\n");
- return 0;//jb.qi change for medmcu sleep fail on 20230418
+ return 0;
}
static int dram_seq_show(struct seq_file *seq, void *v)
{
- return print_medhw_dram(seq);//jb.qi change for medmcu sleep fail on 20230418
+ return print_medhw_dram(seq);
}
-
static int dram_seq_open(struct inode *inode, struct file *file)
{
pr_notice("[MEDHW] read dram start\n");
- return single_open_size(file, dram_seq_show, NULL, (PAGE_SIZE << 11));//jb.qi change for medmcu sleep fail on 20230418
+ return single_open_size(file, dram_seq_show, NULL, (PAGE_SIZE << 11));
}
static const struct file_operations dram_fops = {
@@ -1513,15 +1515,13 @@
static int cr_dump_seq_show(struct seq_file *seq, void *v)
{
-
- return print_medhw_cr_dump(seq);//jb.qi change for medmcu sleep fail on 20230418
+ return print_medhw_cr_dump(seq);
}
static int cr_dump_seq_open(struct inode *inode, struct file *file)
{
-
pr_notice("[MEDHW] read cr_dump start\n");
- return single_open_size(file, cr_dump_seq_show, NULL, (PAGE_SIZE << 4));//jb.qi change for medmcu sleep fail on 20230418
+ return single_open_size(file, cr_dump_seq_show, NULL, (PAGE_SIZE << 4));
}
static const struct file_operations cr_dump_fops = {
diff --git a/src/kernel/linux/v4.19/drivers/mtd/nandx/core/nand/device_slc.c b/src/kernel/linux/v4.19/drivers/mtd/nandx/core/nand/device_slc.c
index 0963660..b309b34 100755
--- a/src/kernel/linux/v4.19/drivers/mtd/nandx/core/nand/device_slc.c
+++ b/src/kernel/linux/v4.19/drivers/mtd/nandx/core/nand/device_slc.c
@@ -297,9 +297,9 @@
&slc_endurance, &slc_array_timing),
SLC_DRIVE_STRENGTH(0x80, 0x00, 0x01, 0x02, 0x03),
&onfi_extend_cmds,
- CHIP_TIMING_MODE2, //jb.qi change for ubi problem on 20221129
+ CHIP_TIMING_MODE2,
&timing_mode[0],
- sdr_timing_micron_slc //zhengzhou for MT29GZ6A6BPIET-046AAT.112
+ sdr_timing_micron_slc
},
/* Winbond */
{
diff --git a/src/kernel/linux/v4.19/drivers/mtd/nandx/core/nand_chip.c b/src/kernel/linux/v4.19/drivers/mtd/nandx/core/nand_chip.c
index 81f8755..d038970 100755
--- a/src/kernel/linux/v4.19/drivers/mtd/nandx/core/nand_chip.c
+++ b/src/kernel/linux/v4.19/drivers/mtd/nandx/core/nand_chip.c
@@ -63,6 +63,7 @@
}
nand->performance->read_data_time = (int)time_cons;
#endif
+
ret_max = max_t(int, ret_max, ops[i].status);
ret_min = min_t(int, ret_min, ops[i].status);
#if NANDX_PAGE_PERFORMANCE_TRACE
@@ -160,7 +161,6 @@
return ret;
}
-/*jb.qi change for ubi problem on 20221129 start*/
static inline void nand_bit_invert(u8 *buf, int len)
{
int i;
@@ -259,7 +259,6 @@
restore_ecc:
nandx_ioctl(NFI_CTRL_ECC, &nfi_ecc_en_old);
}
-/*jb.qi change for ubi problem on 20221129 end*/
static int nand_chip_erase_block(struct nand_chip *chip,
struct nand_ops *ops,
@@ -276,12 +275,11 @@
nand->addressing(nand, &row, &col);
- /*jb.qi change for ubi problem on 20221129 start*/
/* void type to avoid mis-judging this block as bad in ubi,
* nand block erase operation can continue
*/
nand_chip_erase_prepare(chip, row, col);
- /*jb.qi change for ubi problem on 20221129 end*/
+
ops[i].status = nand->write_enable(nand);
if (ops[i].status) {
pr_debug("Write Protect at %x!\n", row);
@@ -435,6 +433,6 @@
nand_spi_exit(chip->nand);
else
nand_exit(chip->nand);
- mem_free(chip->raw_buf); //jb.qi change for ubi problem on 20221129
+ mem_free(chip->raw_buf);
mem_free(chip);
}
diff --git a/src/kernel/linux/v4.19/drivers/mtd/nandx/core/nand_chip.h b/src/kernel/linux/v4.19/drivers/mtd/nandx/core/nand_chip.h
index 997fad0..cdcfaa3 100755
--- a/src/kernel/linux/v4.19/drivers/mtd/nandx/core/nand_chip.h
+++ b/src/kernel/linux/v4.19/drivers/mtd/nandx/core/nand_chip.h
@@ -75,7 +75,8 @@
u32 fdm_reg_size;
void *nand;
- u8 *raw_buf; //jb.qi add for ubi problem on 20221129
+ u8 *raw_buf;
+
int (*read_page)(struct nand_chip *chip, struct nand_ops *ops,
int count);
int (*write_page)(struct nand_chip *chip, struct nand_ops *ops,
diff --git a/src/kernel/linux/v4.19/drivers/mtd/nandx/core/nfi/nfi_base.c b/src/kernel/linux/v4.19/drivers/mtd/nandx/core/nfi/nfi_base.c
index e6528f5..69e499d 100755
--- a/src/kernel/linux/v4.19/drivers/mtd/nandx/core/nfi/nfi_base.c
+++ b/src/kernel/linux/v4.19/drivers/mtd/nandx/core/nfi/nfi_base.c
@@ -558,7 +558,7 @@
case NFI_CTRL_BAD_MARK_SWAP:
nb->bad_mark_swap_en = *(bool *)args;
break;
- /*jb.qi change for ubi problem on 20221129 start*/
+
case NFI_CTRL_BAD_MARK_SWAP_GET_SWAP_EN:
*(bool *)args = nb->bad_mark_swap_en;
break;
@@ -566,7 +566,7 @@
case NFI_CTRL_ECC_GET_ECC_EN:
*(bool *)args = nb->ecc_en;
break;
- /*jb.qi change for ubi problem on 20221129 end*/
+
#ifdef NANDX_TEST_BUF_ALIGN
case NFI_ADDR_ALIGNMENT_EN:
if (*(u8 *)args)
@@ -1146,15 +1146,14 @@
if (read) {
is_empty = nb->is_page_empty(nb, data, fdm, nb->rw_sectors);
if (is_empty) {
- nb->read_status = 0;
+ nb->read_status = 0;
/* try to memset 0xff for empty page */
if (data)
memset(data, 0xff, nb->access_len);
if (nb->ecc_en && fdm)
memset(fdm, 0xff, nb->nfi.fdm_size * nb->rw_sectors);
- }/*jb.qi change for ubi1_0 problem on 20220921 end*/
-
+ }
}
/* whether it's reading or writing, we all check if nee swap
@@ -1343,7 +1342,7 @@
void *regs = nb->res.nfi_regs;
u32 tpoecs, tprecs, tc2r, tw2r, twh, twst, trlt, tstrobe;
u32 rate, val;
- u16 thold; //jb.qi change for ubi problem on 20221129
+ u16 thold;
int ret;
ret = wait_flash_macro_idle(regs);
@@ -1353,13 +1352,14 @@
}
/* turn clock rate into KHZ */
- rate = div_down(nb->res.clock_1x, 1000); //jb.qi change for ubi problem on 20221129
- tpoecs = max(sdr->tALH, sdr->tCLH);
+ rate = div_down(nb->res.clock_1x, 1000);
+
+ tpoecs = max(sdr->tALH, sdr->tCLH);
tpoecs = div_up(tpoecs * rate, 1000000);
tpoecs &= 0xf;
tprecs = max(sdr->tCLS, sdr->tALS);
- tprecs = div_up(tprecs * rate, 1000000) + 1; //jb.qi change for ubi problem on 20221129
+ tprecs = div_up(tprecs * rate, 1000000) + 1;
tprecs &= 0x3f;
/* tc2r is in unit of 2T */
@@ -1375,32 +1375,26 @@
twh = div_up(twh * rate, 1000000) - 1;
twh &= 0xf;
- /*jb.qi change for ubi problem on 20221129 start*/
twst = 0;
thold = div_down((twh + 1) * 1000000, rate);
if (thold < sdr->tWC)
twst = sdr->tWC - thold;
twst = max((u32)sdr->tWP, twst);
twst = div_up(twst * rate, 1000000) - 1;
- /*jb.qi change for ubi problem on 20221129 end*/
twst &= 0xf;
- /*jb.qi change for ubi problem on 20221129 start*/
trlt = 0;
if (thold < sdr->tRC)
trlt = sdr->tRC - thold;
trlt = max((u32)sdr->tRP, trlt);
trlt = div_up(trlt * rate, 1000000) - 1;
- /*jb.qi change for ubi problem on 20221129 end*/
trlt &= 0xf;
- tstrobe = 0; //jb.qi change for ubi problem on 20221129
+ tstrobe = 0;
/* If tREA is bigger than tRP, setup strobe sel here */
- /*jb.qi change for ubi problem on 20221129 start*/
if (div_down((trlt + 1) * 1000000, rate) < sdr->tREA) {
tstrobe = div_up(sdr->tREA * rate, 1000000);
tstrobe -= trlt + 1;
- /*jb.qi change for ubi problem on 20221129 end*/
val = readl(regs + NFI_DEBUG_CON1);
val &= ~STROBE_MASK;
val |= tstrobe << STROBE_SHIFT;
@@ -1421,7 +1415,7 @@
* 03:00: trlt, read wait states
*/
val = ACCTIMING(tpoecs, tprecs, tc2r, tw2r, twh, twst, trlt);
- pr_debug("NAND acctiming: 0x%x, strobe_sel:0x%x\n", val, tstrobe); //jb.qi change for ubi problem on 20221129
+ pr_debug("NAND acctiming: 0x%x, strobe_sel:0x%x\n", val, tstrobe);
writel(val, regs + NFI_ACCCON);
/* set NAND type */
diff --git a/src/kernel/linux/v4.19/drivers/mtd/nandx/include/internal/nandx_core.h b/src/kernel/linux/v4.19/drivers/mtd/nandx/include/internal/nandx_core.h
index 61d1288..4e45bd7 100755
--- a/src/kernel/linux/v4.19/drivers/mtd/nandx/include/internal/nandx_core.h
+++ b/src/kernel/linux/v4.19/drivers/mtd/nandx/include/internal/nandx_core.h
@@ -67,11 +67,10 @@
NFI_CTRL_ECC_DECODE_MODE,
NFI_CTRL_ECC_ERRNUM0,
NFI_CTRL_ECC_GET_STATUS, /*20*/
- NFI_CTRL_ECC_GET_ECC_EN, //jb.qi change for ubi problem on 20221129
-
+ NFI_CTRL_ECC_GET_ECC_EN,
NFI_CTRL_BAD_MARK_SWAP,
- NFI_CTRL_BAD_MARK_SWAP_GET_SWAP_EN, //jb.qi change for ubi problem on 20221129
+ NFI_CTRL_BAD_MARK_SWAP_GET_SWAP_EN,
NFI_CTRL_IOCON,
SNFI_CTRL_OP_MODE,
diff --git a/src/kernel/linux/v4.19/drivers/net/ethernet/mediatek/mtk_edma.c b/src/kernel/linux/v4.19/drivers/net/ethernet/mediatek/mtk_edma.c
index 86123c0..29d23de 100644
--- a/src/kernel/linux/v4.19/drivers/net/ethernet/mediatek/mtk_edma.c
+++ b/src/kernel/linux/v4.19/drivers/net/ethernet/mediatek/mtk_edma.c
@@ -569,11 +569,10 @@
//EDMA_GLO_CFG: TX_WB_DDONE | RX_DMA_EN |
// PDMA_BT_SIZE_16DWORDS | PDMA_DESC_32B_E |
// MULTI_EN | ADMA_RX_BT_SIZE_32DWORDS RX_2B_OFFSET
- /*jb.qi change for reboot after sleep on 20230417 start*/
+
/* Set EDMA0_GLO_CFG and EDMA1_GLO_CFG [23:16] to 0x80 since CDM FIFO overrun issue */
mtk_w32(eth, 0x80801C64, MTK_EDMA0_GLO_CFG);
mtk_w32(eth, 0x80801C64, MTK_EDMA1_GLO_CFG);
- /*jb.qi change for reboot after sleep on 20230417 end*/
}
void mtk_stop_dma_edma(struct mtk_eth *eth, u32 glo_cfg)
diff --git a/src/kernel/linux/v4.19/drivers/net/ethernet/mediatek/mtk_eth_dbg.c b/src/kernel/linux/v4.19/drivers/net/ethernet/mediatek/mtk_eth_dbg.c
index 3e92205..b0f0f68 100644
--- a/src/kernel/linux/v4.19/drivers/net/ethernet/mediatek/mtk_eth_dbg.c
+++ b/src/kernel/linux/v4.19/drivers/net/ethernet/mediatek/mtk_eth_dbg.c
@@ -695,7 +695,7 @@
cr_max = 5000 * 4;
seq_puts(seq, " <<FE CR DUMP>>\n");
- for (i = 0x0; i < cr_max; i = i + 0x10) { //jb.qi change for reboot after sleep on20230417
+ for (i = 0x0; i < cr_max; i = i + 0x10) {
seq_printf(seq, "0x%08x : 0x%08x 0x%08x 0x%08x 0x%08x\n", cr_base + i,
mtk_r32(eth, i), mtk_r32(eth, i + 4),
mtk_r32(eth, i + 8), mtk_r32(eth, i + 0xc));
diff --git a/src/kernel/linux/v4.19/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/src/kernel/linux/v4.19/drivers/net/ethernet/mediatek/mtk_eth_soc.c
index 709b7c9..42510fa 100755
--- a/src/kernel/linux/v4.19/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/src/kernel/linux/v4.19/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -831,10 +831,10 @@
DMA_FROM_DEVICE);
if (unlikely(dma_mapping_error(eth->dev, dma_addr)))
return -ENOMEM;
- /*jb.qi change for reboot after sleep on 20230417 start*/
+
eth->phy_scratch_head = dma_addr;
eth->scratch_head_size = cnt * MTK_QDMA_PAGE_SIZE;
- /*jb.qi change for reboot after sleep on 20230417 end*/
+
memset(eth->scratch_ring, 0x0, sizeof(struct mtk_tx_dma) * cnt);
phy_ring_tail = eth->phy_scratch_ring +
(sizeof(struct mtk_tx_dma) * (cnt - 1));
@@ -2932,7 +2932,7 @@
for (i = 1; i < MTK_MAX_RX_RING_NUM; i++)
mtk_rx_clean(eth, ð->rx_ring[i]);
}
- /*jb.qi change for reboot after sleep on 20230417 start*/
+
if (eth->phy_scratch_head) {
dma_unmap_single(eth->dev, eth->phy_scratch_head,
eth->scratch_head_size, DMA_FROM_DEVICE);
@@ -2944,7 +2944,7 @@
kfree(eth->scratch_head);
eth->scratch_head = NULL;
}
- /*jb.qi change for reboot after sleep on 20230417 end*/
+
if (eth->hwedmarx) {
for (i = 0; i < MTK_MAX_EDMA_RX_RING_NUM; i++) {
mtk_rx_clean_edma(eth, ð->rx_ring_edma0[i]);
@@ -3238,10 +3238,10 @@
} else {
napi_enable(ð->rx_napi);
}
- /*jb.qi change for reboot after sleep on 20230417 start*/
+
if (eth->hwedmarx)
napi_enable_edma(eth);
- /*jb.qi change for reboot after sleep on 20230417 end*/
+
/* enable IRQ Top */
mtk_tx_irq_enable(eth, MTK_TX_DONE_INT);
if (eth->hwrss) {
@@ -3253,7 +3253,7 @@
mtk_rx_irq_enable(eth, MTK_RX_DONE_INT);
}
- if (eth->hwedmarx) //jb.qi change for reboot after sleep on 20230417
+ if (eth->hwedmarx)
mtk_rx_irq_enable_edma_all(eth);
#if defined(CONFIG_HW_NAT)
@@ -3301,7 +3301,7 @@
struct mtk_mac *mac = netdev_priv(dev);
struct mtk_eth *eth = mac->hw;
- pr_info("%s in mac[%d]\n", __func__, mac->id); //jb.qi change for reboot after sleep on 20230417
+ pr_info("%s in mac[%d]\n", __func__, mac->id);
netif_tx_disable(dev);
@@ -3311,11 +3311,11 @@
/* only shutdown DMA if this is the last user */
if (!refcount_dec_and_test(ð->dma_refcnt))
return 0;
-/*jb.qi change for reboot after sleep on 20230417 start*/
+
#if defined(CONFIG_HW_NAT)
mtk_unregister_fast_path();
#endif
-/*jb.qi change for reboot after sleep on 20230417 end*/
+
mtk_gdma_config(eth, MTK_GDMA_DROP_ALL);
/* disable IRQ Top */
@@ -3329,13 +3329,13 @@
} else {
mtk_rx_irq_disable(eth, MTK_RX_DONE_INT);
}
- /*jb.qi change for reboot after sleep on 20230417 start*/
+
if (eth->hwedmarx)
mtk_rx_irq_disable_edma_all(eth);
if (eth->int_ext)
disable_irq_nosync(eth->irq[8]);
- /*jb.qi change for reboot after sleep on 20230417 end*/
+
/* disable IRQ Bottom */
napi_disable(ð->tx_napi);
@@ -3347,12 +3347,12 @@
} else {
napi_disable(ð->rx_napi);
}
- /*jb.qi change for reboot after sleep on 20230417 start*/
+
if (eth->hwedmarx) {
napi_disable(ð->rx_napi_edma0);
napi_disable(ð->rx_napi_edma1);
}
- /*jb.qi change for reboot after sleep on 20230417 end*/
+
mtk_stop_dma(eth, MTK_QDMA_GLO_CFG);
mtk_stop_dma(eth, MTK_PDMA_GLO_CFG);
@@ -3744,10 +3744,9 @@
static int mtk_hw_deinit(struct mtk_eth *eth)
{
- /*jb.qi change for reboot after sleep on 20230417 start*/
//if (!test_and_clear_bit(MTK_HW_INIT, ð->state))
// return 0;
- /*jb.qi change for reboot after sleep on 20230417 end*/
+
if (!MTK_HAS_CAPS(eth->soc->caps, MTK_FPGA_CLK)) {
mtk_clk_disable(eth);
pm_runtime_put_sync(eth->dev);
@@ -4281,7 +4280,6 @@
dev_err(&pdev->dev, "no wo regmap found\n");
return PTR_ERR(eth->wo);
}
- /*jb.qi change for reboot after sleep on 20230417 start*/
regmap_write(eth->wo, 0x0070, 0x1);
regmap_write(eth->wo, 0x0074, 0x1);
pr_notice("%s reset wo\n", __func__);
@@ -4301,7 +4299,7 @@
}
regmap_write(eth->wed2, 0x057c, 0x0);
pr_notice("%s reset wed2\n", __func__);
- /*jb.qi change for reboot after sleep on 20230417 end*/
+
if (MTK_HAS_CAPS(eth->soc->caps, MTK_INFRA)) {
eth->infra = syscon_regmap_lookup_by_phandle(pdev->dev.of_node,
"mediatek,infracfg");
@@ -4573,7 +4571,7 @@
return 0;
}
-/*jb.qi change for reboot after sleep on 20230417 start*/
+
int netsys_pm_check_status(struct mtk_eth *eth, u32 idle)
{
u32 val = 0, tmp = 0, cnt = 0, pass = 0;
@@ -4667,7 +4665,7 @@
void netsys_pm_recovery(struct mtk_eth *eth)
{
}
-/*jb.qi change for reboot after sleep on 20230417 end*/
+
int netsys_pm_suspend(struct device *device)
{
struct platform_device *pdev = to_platform_device(device);
@@ -4677,12 +4675,12 @@
pr_notice("ethernet suspend time start = %lx\n", jiffies);
if (pdev == NULL) {
- pr_notice("%s pdev == NULL\n", __func__); //jb.qi change for reboot after sleep on 20230417
+ pr_notice("%s pdev == NULL\n", __func__);
return -1;
}
eth = platform_get_drvdata(pdev);
- /*jb.qi change for reboot after sleep on 20230417 start*/
+
regmap_write(eth->ethsys, 0x10, 0xb6000000);
regmap_write(eth->ethsys, 0x58, 0x20000000);
regmap_write(eth->ethsys, 0xf0, 0x007f0000);
@@ -4711,7 +4709,7 @@
}
}
pr_notice("ethernet suspend time phy stop = %lx\n", jiffies);
- /*jb.qi change for reboot after sleep on 20230417 end*/
+
#if 0
regmap_update_bits(eth->ethsys, MTK_PPE_TB_CFG,
SCAN_MODE_MASK,
@@ -4726,10 +4724,10 @@
if (eth->soc->sgmii_pm)
regulator_set_voltage(eth->dvfsrc_vcore_power,
SGMII_VCORE_NON_OPS, INT_MAX);
- pr_notice("ethernet suspend time set vcore 0.55V = %lx\n", jiffies);//jb.qi change for reboot after sleep on 20230417
+ pr_notice("ethernet suspend time set vcore 0.55V = %lx\n", jiffies);
mtk_gdma_config(eth, MTK_GDMA_DROP_ALL);
- pr_notice("ethernet suspend time set GDM ingress pkt drop = %lx\n", jiffies);//jb.qi change for reboot after sleep on 20230417
+ pr_notice("ethernet suspend time set GDM ingress pkt drop = %lx\n", jiffies);
mtk_tx_irq_disable(eth, MTK_TX_DONE_INT);
if (eth->hwrss) {
@@ -4744,15 +4742,15 @@
if (eth->int_ext)
disable_irq_nosync(eth->irq[8]);
- pr_notice("ethernet suspend time disable irq = %lx\n", jiffies);//jb.qi change for reboot after sleep on 20230417
+ pr_notice("ethernet suspend time disable irq = %lx\n", jiffies);
if (eth->hwedmarx) {
mtk_rx_irq_disable_edma_all(eth);
mtk_stop_dma_edma(eth, MTK_EDMA0_GLO_CFG);
mtk_stop_dma_edma(eth, MTK_EDMA1_GLO_CFG);
}
- pr_notice("ethernet suspend time stop EDMA = %lx\n", jiffies);//jb.qi change for reboot after sleep on 20230417
- /*jb.qi change for reboot after sleep on 20230417 start*/
+ pr_notice("ethernet suspend time stop EDMA = %lx\n", jiffies);
+
//napi_disable(ð->tx_napi);
//napi_disable(ð->rx_napi);
/*disable ADMA*/
@@ -4775,7 +4773,7 @@
mtk_clk_disable(eth);
pr_notice("ethernet suspend time clk disable = %lx\n", jiffies);
pr_notice("ethernet suspend time end = %lx\n", jiffies);
- /*jb.qi change for reboot after sleep on 20230417 end*/
+
return 0;
}
@@ -4790,7 +4788,7 @@
pr_notice("ethernet resume time start = %lx\n", jiffies);
if (pdev == NULL) {
- pr_notice("%s pdev == NULL\n", __func__); //jb.qi change for reboot after sleep on 20230417
+ pr_notice("%s pdev == NULL\n", __func__);
return -1;
}
@@ -4805,9 +4803,9 @@
SCAN_MODE);
#endif
- mtk_clk_enable(eth);//jb.qi change for reboot after sleep on 20230417
+ mtk_clk_enable(eth);
mtk_hw_init_resume(eth);
- pr_notice("ethernet resume time clk enable = %lx\n", jiffies);//jb.qi change for reboot after sleep on 20230417
+ pr_notice("ethernet resume time clk enable = %lx\n", jiffies);
//mtk_w32(eth, 0x27fb5, MTK_PPE_TB_CFG);
//mtk_w32(eth, 0x27fb5, MTK_PPE1_TB_CFG);
@@ -4890,7 +4888,7 @@
for (i = 0; i < MTK_MAC_COUNT; i++) {
if (!eth->netdev[i])
continue;
- /*jb.qi change for reboot after sleep on 20230417 start*/
+
pr_notice("restore %s state=%d mac%d=0x%x",
eth->netdev[i]->name,
eth->suspend_data.eth_state[i],
@@ -4901,14 +4899,14 @@
phy_start(eth->netdev[i]->phydev);
netif_start_queue(eth->netdev[i]);
}
- /*jb.qi change for reboot after sleep on 20230417 end*/
}
- pr_notice("ethernet resume time eth up = %lx\n", jiffies);//jb.qi change for reboot after sleep on 20230417
+ pr_notice("ethernet resume time eth up = %lx\n", jiffies);
pr_notice("ethernet resume time end = %lx\n", jiffies);
return 0;
}
+
static const struct dev_pm_ops netsys_pm_ops = {
.suspend_noirq = netsys_pm_suspend,
.resume_noirq = netsys_pm_resume,
diff --git a/src/kernel/linux/v4.19/drivers/net/ethernet/mediatek/mtk_eth_soc.h b/src/kernel/linux/v4.19/drivers/net/ethernet/mediatek/mtk_eth_soc.h
index bcfe59c..8b1c23e 100644
--- a/src/kernel/linux/v4.19/drivers/net/ethernet/mediatek/mtk_eth_soc.h
+++ b/src/kernel/linux/v4.19/drivers/net/ethernet/mediatek/mtk_eth_soc.h
@@ -1026,12 +1026,12 @@
u32 flags[MTK_MAX_DEVS];
u32 ana_rgc3;
};
-/*jb.qi change for reboot after sleep on 20230417 start*/
+
struct mtk_suspend_data {
int eth_state[MTK_MAX_DEVS];
u32 mcr[MTK_MAX_DEVS];
};
-/*jb.qi change for reboot after sleep on 20230417 end*/
+
/* struct mtk_eth - This is the main datasructure for holding the state
* of the driver
* @dev: The device pointer
@@ -1083,8 +1083,8 @@
struct regmap *ethsys;
struct regmap *infra;
struct regmap *wo;
- struct regmap *wed;//jb.qi change for reboot after sleep on 20230417
- struct regmap *wed2;//jb.qi change for reboot after sleep on 20230417
+ struct regmap *wed;
+ struct regmap *wed2;
struct mtk_sgmii *sgmii;
struct regmap *pctl;
u32 hwlro;
@@ -1136,7 +1136,7 @@
unsigned int irq_work;
struct work_struct link_work;
- struct mtk_suspend_data suspend_data;//jb.qi change for reboot after sleep on 20230417
+ struct mtk_suspend_data suspend_data;
};
/* struct mtk_mac - the structure that holds the info about the MACs of the
diff --git a/src/kernel/linux/v4.19/drivers/rtc/rtc-mt6330.c b/src/kernel/linux/v4.19/drivers/rtc/rtc-mt6330.c
index 7783c74..404fc55 100644
--- a/src/kernel/linux/v4.19/drivers/rtc/rtc-mt6330.c
+++ b/src/kernel/linux/v4.19/drivers/rtc/rtc-mt6330.c
@@ -180,10 +180,10 @@
struct regmap_field *spare[SPARE_RG_MAX];
struct regmap_field *cali[CALI_FILED_MAX];
bool cali_is_supported;
- ktime_t wakeup_time; //jb.qi change for rtc resume API on 2022.11.18 start
+ ktime_t wakeup_time;
};
-bool wakeup_by_rtc; //jb.qi change for rtc resume API on 2022.11.18 start
+bool wakeup_by_rtc;
#define RTC_WAKEUP_THRESHOLD 1500000000 // 1500ms jb.qi change for rtc resume API on 20230802
static int mtk_rtc_write_trigger(struct mt6330_rtc *rtc);
@@ -534,9 +534,9 @@
if (i == RTC_OFFSET_DOW)
continue;
ret = rtc_update_bits(rtc,
- rtc->addr_base + rtc_pwron_reg[i][RTC_REG],
- rtc_pwron_reg[i][RTC_MASK],
- data[i]);
+ rtc->addr_base + rtc_pwron_reg[i][RTC_REG],
+ rtc_pwron_reg[i][RTC_MASK],
+ data[i]);
if (ret < 0)
goto exit;
@@ -577,8 +577,6 @@
if (ret < 0)
goto exit;
-// mtk_rtc_write_trigger(rtc);
-
return;
exit:
@@ -1033,10 +1031,9 @@
if (rtc->dev_comp->cali_reg_fields)
if (mtk_rtc_config_eosc_cali(&pdev->dev))
dev_err(&pdev->dev, "config eosc cali failed\n");
- /*jb.qi change for rtc resume API on 2022.11.18 start*/
+
rtc->wakeup_time = ktime_get();
wakeup_by_rtc = false;
- /*jb.qi change for rtc resume API on 2022.11.18 end*/
return 0;
@@ -1058,12 +1055,11 @@
}
#ifdef CONFIG_PM_SLEEP
-/*jb.qi change for rtc resume API on 2022.11.18 start*/
bool isWakeupByRTC(void)
{
return wakeup_by_rtc;
}
-/*jb.qi change for rtc resume API on 2022.11.18 start*/
+
static int mt6330_rtc_suspend(struct device *dev)
{
struct mt6330_rtc *rtc = dev_get_drvdata(dev);
@@ -1071,7 +1067,7 @@
if (device_may_wakeup(dev))
enable_irq_wake(rtc->irq);
- wakeup_by_rtc = false; //jb.qi change for rtc resume API on 2022.11.18
+ wakeup_by_rtc = false;
return 0;
}
@@ -1079,11 +1075,11 @@
static int mt6330_rtc_resume(struct device *dev)
{
struct mt6330_rtc *rtc = dev_get_drvdata(dev);
- ktime_t temp; //jb.qi change for rtc resume API on 2022.11.18
-
+ ktime_t temp;
+
if (device_may_wakeup(dev))
disable_irq_wake(rtc->irq);
- /*jb.qi change for rtc resume API on 2022.11.18 start*/
+
temp = ktime_get();
wakeup_by_rtc = false;
@@ -1091,7 +1087,6 @@
wakeup_by_rtc = true;
dev_info(dev, "%s: wakeup time:%lld, resume_time %lld wakeup_by_rtc %d\n", __func__, rtc->wakeup_time, temp, wakeup_by_rtc);
- /*jb.qi change for rtc resume API on 2022.11.18 end*/
return 0;
}
#endif
diff --git a/src/kernel/linux/v4.19/drivers/rtc/rtc-proc.c b/src/kernel/linux/v4.19/drivers/rtc/rtc-proc.c
index 9256596..dfd09b9 100644
--- a/src/kernel/linux/v4.19/drivers/rtc/rtc-proc.c
+++ b/src/kernel/linux/v4.19/drivers/rtc/rtc-proc.c
@@ -106,7 +106,7 @@
return 0;
}
-/*jb.qi change for rtc resume API on 2022.11.18 start*/
+
#ifdef CONFIG_PM_SLEEP
extern bool isWakeupByRTC(void);
#endif
@@ -118,14 +118,14 @@
#endif
return 0;
}
-/*jb.qi change for rtc resume API on 2022.11.18 end*/
+
void rtc_proc_add_device(struct rtc_device *rtc)
{
if (is_rtc_hctosys(rtc)) {
- proc_create_single_data("driver/rtc", 0, NULL, rtc_proc_show,
- rtc);
+ proc_create_single_data("driver/rtc", 0, NULL, rtc_proc_show,
+ rtc);
proc_create_single_data("driver/rtc_wakeup", 0, NULL, rtc_wakeup_proc_show,
- rtc); //jb.qi change for rtc resume API on 2022.11.18
+ rtc);
}
}
diff --git a/src/kernel/linux/v4.19/drivers/soc/mediatek/Kconfig b/src/kernel/linux/v4.19/drivers/soc/mediatek/Kconfig
index 7945f5c..c82a4f4 100755
--- a/src/kernel/linux/v4.19/drivers/soc/mediatek/Kconfig
+++ b/src/kernel/linux/v4.19/drivers/soc/mediatek/Kconfig
@@ -83,10 +83,6 @@
platform could enter deeper sleep mode when cpu preparing to
power down if it have sufficient time between warmboot.
-#Typethree@2023.2.01 modify for TCXO hw version start
-
-#Typethree@2023.2.01 modify for TCXO hw version end
-
config MTK_IPI
tristate "MediaTek IPI Support"
depends on RPMSG_MTK
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 6846443..92ead56 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
@@ -1398,7 +1398,7 @@
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
+ bool on;
/*
* Initially turn on the domains to make the domains usable
* with !CONFIG_PM and to get the hardware in sync with the
@@ -1407,7 +1407,6 @@
* Power on the ssusb/netsys/connectivity by default to let each driver
* disable the clock in case of no usage.
*/
- /*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) {
@@ -1424,7 +1423,6 @@
}
pm_genpd_init(genpd, NULL, !on);
- /*jb.qi change for reboot after sleep on 20230417 end*/
}
/*
@@ -1727,12 +1725,10 @@
.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] = {
diff --git a/src/kernel/linux/v4.19/drivers/thermal/mediatek/md_cooling_mutt.c b/src/kernel/linux/v4.19/drivers/thermal/mediatek/md_cooling_mutt.c
index 60f2f2a..fff906e 100644
--- a/src/kernel/linux/v4.19/drivers/thermal/mediatek/md_cooling_mutt.c
+++ b/src/kernel/linux/v4.19/drivers/thermal/mediatek/md_cooling_mutt.c
@@ -131,6 +131,7 @@
struct md_cooling_device *md_cdev = cdev->devdata;
struct mutt_driver_data *drv_data;
struct device *dev;
+ struct thermal_instance *instance;
enum md_status status, new_status;
unsigned int msg;
unsigned long target_lv, final_lv;
@@ -161,6 +162,10 @@
mutex_lock(&drv_data->lock);
drv_data->current_level = MD_COOLING_UNLIMITED_LV;
mutex_unlock(&drv_data->lock);
+ list_for_each_entry(instance, &cdev->thermal_instances, cdev_node) {
+ if (instance->cdev->type == cdev->type)
+ instance->target = MD_COOLING_UNLIMITED_LV;
+ }
return 0;
}
diff --git a/src/kernel/linux/v4.19/drivers/thermal/mediatek/md_cooling_scg_off.c b/src/kernel/linux/v4.19/drivers/thermal/mediatek/md_cooling_scg_off.c
index a4e244b..93e77ac 100644
--- a/src/kernel/linux/v4.19/drivers/thermal/mediatek/md_cooling_scg_off.c
+++ b/src/kernel/linux/v4.19/drivers/thermal/mediatek/md_cooling_scg_off.c
@@ -11,6 +11,7 @@
#include <linux/platform_device.h>
#include <md_cooling.h>
#include <mtk_thermal_trace.h>
+#include "../thermal_core.h"
#define SCG_OFF_MAX_LEVEL (1)
@@ -39,6 +40,7 @@
{
struct md_cooling_device *md_cdev = cdev->devdata;
struct device *dev = (struct device *)md_cdev->dev_data;
+ struct thermal_instance *instance;
enum md_status status;
unsigned int msg;
int ret = 0;
@@ -53,8 +55,13 @@
status = get_md_status();
if (is_mutt_enabled(status)) {
dev_info(dev, "skip SCG control due to MUTT is enabled\n");
- if (is_md_off(status))
+ if (is_md_off(status)) {
md_cdev->target_level = MD_COOLING_UNLIMITED_LV;
+ list_for_each_entry(instance, &cdev->thermal_instances, cdev_node) {
+ if (instance->cdev->type == cdev->type)
+ instance->target = MD_COOLING_UNLIMITED_LV;
+ }
+ }
trace_md_scg_off(md_cdev, status);
return -EACCES;
}
diff --git a/src/kernel/linux/v4.19/drivers/thermal/mediatek/md_cooling_tx_pwr.c b/src/kernel/linux/v4.19/drivers/thermal/mediatek/md_cooling_tx_pwr.c
index 3f1e29f..b509f0c 100644
--- a/src/kernel/linux/v4.19/drivers/thermal/mediatek/md_cooling_tx_pwr.c
+++ b/src/kernel/linux/v4.19/drivers/thermal/mediatek/md_cooling_tx_pwr.c
@@ -11,6 +11,7 @@
#include <linux/platform_device.h>
#include <md_cooling.h>
#include <mtk_thermal_trace.h>
+#include "../thermal_core.h"
#define DEFAULT_THROTTLE_TX_PWR_LV1 (4)
#define DEFAULT_THROTTLE_TX_PWR_LV2 (6)
@@ -43,6 +44,7 @@
struct device *dev = (struct device *)md_cdev->dev_data;
enum md_status status;
unsigned int msg, pwr;
+ struct thermal_instance *instance;
int ret = 0;
/* Request state should be less than max_level */
@@ -55,8 +57,13 @@
status = get_md_status();
if (is_md_inactive(status)) {
dev_info(dev, "skip tx pwr control due to MD is inactive\n");
- if (is_md_off(status))
+ if (is_md_off(status)) {
md_cdev->target_level = MD_COOLING_UNLIMITED_LV;
+ list_for_each_entry(instance, &cdev->thermal_instances, cdev_node) {
+ if (instance->cdev->type == cdev->type)
+ instance->target = MD_COOLING_UNLIMITED_LV;
+ }
+ }
trace_md_tx_pwr_limit(md_cdev, status);
return -EACCES;
}