Skip to content
This repository was archived by the owner on May 1, 2020. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion arch/arm/boot/dts/qcom/msm-pmi8994.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -521,7 +521,7 @@

qcom,qpnp-lab-min-voltage = <4600000>;
qcom,qpnp-lab-step-size = <100000>;
qcom,qpnp-lab-slew-rate = <5000>;
qcom,qpnp-lab-slew-rate = <2000>;
qcom,qpnp-lab-use-default-voltage;
qcom,qpnp-lab-init-voltage = <5500000>;
qcom,qpnp-lab-init-amoled-voltage = <4600000>;
Expand Down
23 changes: 10 additions & 13 deletions block/tripndroid-iosched.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,13 @@

enum { ASYNC, SYNC };

static const int sync_read_expire = 1 * HZ; /* max time before a sync read is submitted. */
static const int sync_write_expire = 1 * HZ; /* max time before a sync write is submitted. */
static const int async_read_expire = 2 * HZ; /* ditto for async, these limits are SOFT! */
static const int async_write_expire = 2 * HZ; /* ditto for async, these limits are SOFT! */
static const int sync_read_expire = HZ / 3; /* max time before a sync read is submitted. */
static const int sync_write_expire = 2 * HZ; /* max time before a sync write is submitted. */
static const int async_read_expire = HZ / 6; /* ditto for async, these limits are SOFT! */
static const int async_write_expire = 4 * HZ; /* ditto for async, these limits are SOFT! */

static const int writes_starved = 1; /* max times reads can starve a write */
static const int fifo_batch = 1; /* # of sequential requests treated as one
by the above parameters. For throughput. */
static const int fifo_batch = 16; /* sequential requests treated as one, for throughput. */

struct tripndroid_data {

Expand Down Expand Up @@ -92,20 +91,18 @@ static struct request *tripndroid_choose_expired_request(struct tripndroid_data
{
struct request *rq;

/* Asynchronous requests have priority over synchronous.
* Write requests have priority over read. */

rq = tripndroid_expired_request(td, ASYNC, WRITE);
/* synchronous priority over asynchronous, write priority over read. */
rq = tripndroid_expired_request(td, SYNC, WRITE);
if (rq)
return rq;
rq = tripndroid_expired_request(td, ASYNC, READ);
rq = tripndroid_expired_request(td, SYNC, READ);
if (rq)
return rq;

rq = tripndroid_expired_request(td, SYNC, WRITE);
rq = tripndroid_expired_request(td, ASYNC, WRITE);
if (rq)
return rq;
rq = tripndroid_expired_request(td, SYNC, READ);
rq = tripndroid_expired_request(td, ASYNC, READ);
if (rq)
return rq;

Expand Down
4 changes: 2 additions & 2 deletions drivers/gpu/msm/adreno_a4xx.c
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (c) 2013-2015, The Linux Foundation. All rights reserved.
/* Copyright (c) 2013-2015,2017, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
Expand Down Expand Up @@ -714,7 +714,7 @@ static void a4xx_start(struct adreno_device *adreno_dev)
set_bit(ADRENO_DEVICE_HANG_INTR, &adreno_dev->priv);
gpudev->irq->mask |= (1 << A4XX_INT_MISC_HANG_DETECT);
kgsl_regwrite(device, A4XX_RBBM_INTERFACE_HANG_INT_CTL,
(1 << 30) | 0xFFFF);
(1 << 30) | 0x1FFFF);

/* Set the GMEM/OCMEM base address for A4XX */
kgsl_regwrite(device, A4XX_RB_GMEM_BASE_ADDR,
Expand Down
18 changes: 11 additions & 7 deletions drivers/input/misc/fpc1020_tee.c
Original file line number Diff line number Diff line change
Expand Up @@ -930,7 +930,7 @@ static void set_fingerprintd_nice(int nice)

read_lock(&tasklist_lock);
for_each_process(p) {
if (!memcmp(p->comm, "fingerprintd", 13)) {
if (!memcmp(p->comm, "fingerprint@2.0", 16) || !memcmp(p->comm, "fingerprintd", 13)) {
set_user_nice(p, nice);
break;
}
Expand Down Expand Up @@ -963,12 +963,16 @@ static int fb_notifier_callback(struct notifier_block *self, unsigned long event
if (event != FB_EARLY_EVENT_BLANK)
return 0;

if (*blank == FB_BLANK_UNBLANK) {
fpc1020->screen_state = 1;
queue_work(system_highpri_wq, &fpc1020->pm_work);
} else if (*blank == FB_BLANK_POWERDOWN) {
fpc1020->screen_state = 0;
queue_work(system_highpri_wq, &fpc1020->pm_work);
switch (*blank) {
case FB_BLANK_UNBLANK:
case FB_BLANK_VSYNC_SUSPEND:
fpc1020->screen_state = 1;
queue_work(system_highpri_wq, &fpc1020->pm_work);
break;
case FB_BLANK_POWERDOWN:
fpc1020->screen_state = 0;
queue_work(system_highpri_wq, &fpc1020->pm_work);
break;
}

return 0;
Expand Down
20 changes: 20 additions & 0 deletions kernel/power/process.c
Original file line number Diff line number Diff line change
Expand Up @@ -212,6 +212,26 @@ int freeze_kernel_threads(void)
return error;
}

void thaw_fingerprintd(void)
{
struct task_struct *p;

pm_freezing = false;
pm_nosig_freezing = false;

read_lock(&tasklist_lock);
for_each_process(p) {
if (!memcmp(p->comm, "fingerprint@2.0", 16) || !memcmp(p->comm, "fingerprintd", 13)) {
__thaw_task(p);
break;
}
}
read_unlock(&tasklist_lock);

pm_freezing = true;
pm_nosig_freezing = true;
}

void thaw_processes(void)
{
struct task_struct *g, *p;
Expand Down
4 changes: 4 additions & 0 deletions kernel/power/suspend.c
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,8 @@ static bool need_suspend_ops(suspend_state_t state)
static DECLARE_WAIT_QUEUE_HEAD(suspend_freeze_wait_head);
static bool suspend_freeze_wake;

extern void thaw_fingerprintd(void);

static void freeze_begin(void)
{
suspend_freeze_wake = false;
Expand Down Expand Up @@ -252,6 +254,8 @@ static int suspend_enter(suspend_state_t state, bool *wakeup)
if (need_suspend_ops(state) && suspend_ops->wake)
suspend_ops->wake();

thaw_fingerprintd();

dpm_resume_start(PMSG_RESUME);

Platform_finish:
Expand Down