mirror of
https://github.com/revyos/thead-kernel.git
synced 2026-09-10 11:57:11 +02:00
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:
11
kernel/power/hibernate.c
Normal file → Executable file
11
kernel/power/hibernate.c
Normal file → Executable 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
2
kernel/power/power.h
Normal file → Executable 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
0
kernel/power/snapshot.c
Normal file → Executable file
21
kernel/power/swap.c
Normal file → Executable file
21
kernel/power/swap.c
Normal file → Executable 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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user