Skip to content

Commit ad6e417

Browse files
committed
Merge branch 'oneplus/oneplus/QC8998_P_9.0_Beta' at 1e5c686
* oneplus/oneplus/QC8998_P_9.0_Beta: Improve camera power consumption Optimized sRGB display mode Disble ZRAM Improve stabiltiy
2 parents 56181d1 + 1e5c686 commit ad6e417

6 files changed

Lines changed: 99 additions & 7 deletions

File tree

arch/arm64/configs/msmcortex-oqc_defconfig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ CONFIG_IPC_ROUTER_SECURITY=y
252252
CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y
253253
CONFIG_REGMAP_ALLOW_WRITE_DEBUGFS=y
254254
CONFIG_DMA_CMA=y
255-
CONFIG_ZRAM=y
255+
# CONFIG_ZRAM is not set
256256
CONFIG_BLK_DEV_LOOP=y
257257
CONFIG_BLK_DEV_RAM=y
258258
CONFIG_BLK_DEV_RAM_SIZE=8192

arch/arm64/configs/msmcortex-perf_defconfig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ CONFIG_IPC_ROUTER_SECURITY=y
248248
CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y
249249
CONFIG_DMA_CMA=y
250250
# CONFIG_PNP_DEBUG_MESSAGES is not set
251-
CONFIG_ZRAM=y
251+
# CONFIG_ZRAM is not set
252252
CONFIG_BLK_DEV_LOOP=y
253253
CONFIG_BLK_DEV_RAM=y
254254
CONFIG_BLK_DEV_RAM_SIZE=8192

arch/arm64/configs/msmcortex_defconfig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,7 @@ CONFIG_IPC_ROUTER_SECURITY=y
251251
CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y
252252
CONFIG_REGMAP_ALLOW_WRITE_DEBUGFS=y
253253
CONFIG_DMA_CMA=y
254-
CONFIG_ZRAM=y
254+
# CONFIG_ZRAM is not set
255255
CONFIG_BLK_DEV_LOOP=y
256256
CONFIG_BLK_DEV_RAM=y
257257
CONFIG_BLK_DEV_RAM_SIZE=8192

drivers/media/platform/msm/camera_v2/sensor/msm_sensor.c

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,7 @@ int msm_sensor_power_up(struct msm_sensor_ctrl_t *s_ctrl)
152152
struct msm_camera_slave_info *slave_info;
153153
const char *sensor_name;
154154
uint32_t retry = 0;
155+
uint32_t check_id_retry = 0;
155156

156157
if (!s_ctrl) {
157158
pr_err("%s:%d failed: %pK\n",
@@ -203,7 +204,13 @@ int msm_sensor_power_up(struct msm_sensor_ctrl_t *s_ctrl)
203204
sensor_i2c_client);
204205
if (rc < 0)
205206
return rc;
206-
rc = msm_sensor_check_id(s_ctrl);
207+
208+
for(check_id_retry = 0; check_id_retry < 3; check_id_retry++) {
209+
rc = msm_sensor_check_id(s_ctrl);
210+
if (!rc) break;
211+
msleep(20);
212+
}
213+
207214
if (rc < 0) {
208215
msm_camera_power_down(power_info,
209216
s_ctrl->sensor_device_type, sensor_i2c_client);

drivers/video/fbdev/msm/mdss_dsi_panel.c

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1394,7 +1394,7 @@ static int mdss_dsi_panel_on(struct mdss_panel_data *pdata)
13941394
mutex_lock(&ctrl->panel_mode_lock);
13951395
ctrl->is_panel_on = true;
13961396
mutex_unlock(&ctrl->panel_mode_lock);
1397-
1397+
/*
13981398
if (mdss_dsi_panel_get_srgb_mode(ctrl)) {
13991399
mdss_dsi_panel_set_srgb_mode(ctrl,
14001400
mdss_dsi_panel_get_srgb_mode(ctrl));
@@ -1423,7 +1423,7 @@ static int mdss_dsi_panel_on(struct mdss_panel_data *pdata)
14231423
mdss_dsi_panel_set_adaption_mode(ctrl,
14241424
mdss_dsi_panel_get_adaption_mode(ctrl));
14251425
}
1426-
1426+
*/
14271427

14281428
#if defined(CONFIG_IRIS2P_FULL_SUPPORT)
14291429
#if !defined(WITHOUT_IRIS)
@@ -1452,6 +1452,34 @@ static int mdss_dsi_panel_on(struct mdss_panel_data *pdata)
14521452
end:
14531453
pr_debug("%s:-\n", __func__);
14541454
pr_err("%s end\n", __func__);
1455+
if (mdss_dsi_panel_get_srgb_mode(ctrl)) {
1456+
mdss_dsi_panel_set_srgb_mode(ctrl,
1457+
mdss_dsi_panel_get_srgb_mode(ctrl));
1458+
}
1459+
1460+
if (mdss_dsi_panel_get_adobe_rgb_mode(ctrl)) {
1461+
mdss_dsi_panel_set_adobe_rgb_mode(ctrl,
1462+
mdss_dsi_panel_get_adobe_rgb_mode(ctrl));
1463+
}
1464+
1465+
if (mdss_dsi_panel_get_dci_p3_mode(ctrl)) {
1466+
mdss_dsi_panel_set_dci_p3_mode(ctrl,
1467+
mdss_dsi_panel_get_dci_p3_mode(ctrl));
1468+
}
1469+
1470+
if (mdss_dsi_panel_get_night_mode(ctrl)) {
1471+
mdss_dsi_panel_set_night_mode(ctrl,
1472+
mdss_dsi_panel_get_night_mode(ctrl));
1473+
}
1474+
if (mdss_dsi_panel_get_oneplus_mode(ctrl)) {
1475+
mdss_dsi_panel_set_oneplus_mode(ctrl,
1476+
mdss_dsi_panel_get_oneplus_mode(ctrl));
1477+
}
1478+
1479+
if (mdss_dsi_panel_get_adaption_mode(ctrl)) {
1480+
mdss_dsi_panel_set_adaption_mode(ctrl,
1481+
mdss_dsi_panel_get_adaption_mode(ctrl));
1482+
}
14551483
return ret;
14561484
}
14571485

kernel/power/suspend.c

Lines changed: 58 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,11 @@ static DECLARE_WAIT_QUEUE_HEAD(suspend_freeze_wait_head);
4949
enum freeze_state __read_mostly suspend_freeze_state;
5050
static DEFINE_SPINLOCK(suspend_freeze_lock);
5151

52+
static bool sys_sync_completed = false;
53+
static void sys_sync_work_func(struct work_struct *work);
54+
static DECLARE_WORK(sys_sync_work, sys_sync_work_func);
55+
static DECLARE_WAIT_QUEUE_HEAD(sys_sync_wait);
56+
5257
void freeze_set_ops(const struct platform_freeze_ops *ops)
5358
{
5459
lock_system_sleep();
@@ -480,6 +485,55 @@ static void suspend_finish(void)
480485
pm_restore_console();
481486
}
482487

488+
/**
489+
* Sync the filesystem in seperate workqueue.
490+
* Then check it finishing or not periodically and
491+
* abort if any wakeup source comes in. That can reduce
492+
* the wakeup latency
493+
*
494+
*/
495+
static void sys_sync_work_func(struct work_struct *work)
496+
{
497+
printk(KERN_INFO "PM: Syncing filesystems ... \n");
498+
sys_sync();
499+
sys_sync_completed = true;
500+
wake_up(&sys_sync_wait);
501+
}
502+
503+
static int sys_sync_queue(void)
504+
{
505+
int work_status = work_busy(&sys_sync_work);
506+
507+
/*Check if the previous work still running.*/
508+
if (!(work_status & WORK_BUSY_PENDING)) {
509+
if (work_status & WORK_BUSY_RUNNING) {
510+
while (wait_event_timeout(sys_sync_wait, sys_sync_completed,
511+
msecs_to_jiffies(100)) == 0) {
512+
if (pm_wakeup_pending()) {
513+
pr_info("PM: Pre-Syncing abort\n");
514+
goto abort;
515+
}
516+
}
517+
pr_info("PM: Pre-Syncing done\n");
518+
}
519+
sys_sync_completed = false;
520+
schedule_work(&sys_sync_work);
521+
}
522+
523+
while (wait_event_timeout(sys_sync_wait, sys_sync_completed,
524+
msecs_to_jiffies(100)) == 0) {
525+
if (pm_wakeup_pending()) {
526+
pr_info("PM: Syncing abort\n");
527+
goto abort;
528+
}
529+
}
530+
531+
pr_info("PM: Syncing done\n");
532+
return 0;
533+
abort:
534+
return -EAGAIN;
535+
}
536+
483537
/**
484538
* enter_state - Do common work needed to enter system sleep state.
485539
* @state: System sleep state to enter.
@@ -513,7 +567,10 @@ static int enter_state(suspend_state_t state)
513567
#ifndef CONFIG_SUSPEND_SKIP_SYNC
514568
trace_suspend_resume(TPS("sync_filesystems"), 0, true);
515569
printk(KERN_INFO "PM: Syncing filesystems ... ");
516-
sys_sync();
570+
error = sys_sync_queue();
571+
if (error) {
572+
goto Unlock;
573+
}
517574
printk("done.\n");
518575
trace_suspend_resume(TPS("sync_filesystems"), 0, false);
519576
#endif

0 commit comments

Comments
 (0)