sync: huiwei: 5b7b9f869c27505571944db1a6bf8815878b4bba

merge 13 commits to one

Add 8911edp driver

fix hall seense lpm logic

add some debug info to mh248

PR:gerrit-4305/4306

PR:gerrit-4307

PR:gerrit-4308: hibernate: add resume keep swap signature for fastresume

PR:gerrit-4309:Solve STD problem for DPU releted clock gate not enabled

PR:gerrit-4310,driver usb: optimize pm resume time, do resume in runtime_resume

PR:gerrit-4317,padctrl:light: add aon pinmux backup and restore

Revert "add some debug info to mh248"

This reverts commit c6cbf3c7d49caba33eee014caec3da24eb9d2388.

remove suspend state judge in mh248

Fix LT8911 panel str resume problem

Revert "PR:gerrit-4310,driver usb: optimize pm resume time, do resume in runtime_resume"

This reverts commit 690823c5528df8e7743ce3954aec6c4473500b91.
This commit is contained in:
yunxian.zyf
2024-02-04 19:03:37 +08:00
committed by Han Gao
parent 92ed9d94c6
commit b76b15d078
16 changed files with 1077 additions and 50 deletions

11
kernel/power/hibernate.c Normal file → Executable file
View File

@@ -42,6 +42,7 @@ static int nohibernate;
static int resume_wait;
static unsigned int resume_delay;
static char resume_file[256] = CONFIG_PM_STD_PARTITION;
static int resume_keep_sign;
dev_t swsusp_resume_device;
sector_t swsusp_resume_block;
__visible int in_suspend __nosavedata;
@@ -843,7 +844,7 @@ int hibernate(void)
unlock_device_hotplug();
if (snapshot_test) {
pm_pr_dbg("Checking hibernation image\n");
error = swsusp_check();
error = swsusp_check(0);
if (!error)
error = load_image_and_restore();
}
@@ -1040,7 +1041,7 @@ static int software_resume(void)
MAJOR(swsusp_resume_device), MINOR(swsusp_resume_device));
pm_pr_dbg("Looking for hibernation image.\n");
error = swsusp_check();
error = swsusp_check(resume_keep_sign);
if (error)
goto Unlock;
@@ -1449,6 +1450,11 @@ static int __init nohibernate_setup(char *str)
return 1;
}
static int __init resume_keepsign_setup(char *str)
{
resume_keep_sign = 1;
return 1;
}
__setup("noresume", noresume_setup);
__setup("resume_offset=", resume_offset_setup);
@@ -1457,3 +1463,4 @@ __setup("hibernate=", hibernate_setup);
__setup("resumewait", resumewait_setup);
__setup("resumedelay=", resumedelay_setup);
__setup("nohibernate", nohibernate_setup);
__setup("resume_keepsign", resume_keepsign_setup);

2
kernel/power/power.h Normal file → Executable file
View File

@@ -170,7 +170,7 @@ extern int swsusp_swap_in_use(void);
#define SF_CRC32_MODE 4
/* kernel/power/hibernate.c */
extern int swsusp_check(void);
extern int swsusp_check(int keep_sign);
extern void swsusp_free(void);
extern int swsusp_read(unsigned int *flags_p);
extern int swsusp_write(unsigned int flags);

0
kernel/power/snapshot.c Normal file → Executable file
View File

21
kernel/power/swap.c Normal file → Executable file
View File

@@ -634,7 +634,7 @@ static int lzo_compress_threadfn(void *data)
d->wrk);
lzo_head = (struct hib_lzo_header *)d->cmp;
lzo_head->cmp_len = d->cmp_len;
lzo_head->unc_crc32 = crc32_le(0,d->cmp + LZO_HEADER, d->cmp_len);
lzo_head->unc_crc32 = crc32_le(0,d->unc, d->unc_len);
atomic_set(&d->stop, 1);
wake_up(&d->done);
}
@@ -1087,7 +1087,7 @@ static int lzo_decompress_threadfn(void *data)
d->ret = lzo1x_decompress_safe(d->cmp + LZO_HEADER, d->cmp_len,
d->unc, &d->unc_len);
unc_crc32 = crc32_le(0,d->cmp + LZO_HEADER, d->cmp_len);
unc_crc32 = crc32_le(0,d->unc, d->unc_len);
if(unc_crc32 != get_header_crc32((struct hib_lzo_header *)&d->cmp) ) {
d->crc32_err++;
}
@@ -1449,9 +1449,10 @@ int swsusp_mark_sign_retry(void)
}
/**
* swsusp_check - Check for swsusp signature in the resume device
* @keep_sign : indicate for reset wap signature, for resume used as fast bootup
*/
int swsusp_check(void)
int swsusp_check(int keep_sign)
{
int error;
void *holder;
@@ -1473,13 +1474,13 @@ int swsusp_check(void)
swsusp_can_retry = true;
else
swsusp_can_retry = false;
memcpy(swsusp_header->sig, swsusp_header->orig_sig, 10);
/* Reset swap signature now */
error = hib_submit_io(REQ_OP_WRITE, REQ_SYNC,
swsusp_resume_block,
swsusp_header, NULL);
if(!keep_sign) {
memcpy(swsusp_header->sig, swsusp_header->orig_sig, 10);
/* Reset swap signature now */
error = hib_submit_io(REQ_OP_WRITE, REQ_SYNC,
swsusp_resume_block,
swsusp_header, NULL);
}
} else {
error = -EINVAL;
}