Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9a341335 authored by Arjun Singh's avatar Arjun Singh
Browse files

soc: qcom: bgrsb: supports persist rsb calibration on BG ssr



keeps user provided rsb calibration values and reset in case of BG
ssr.

Change-Id: I792699fe4176ad0d94f8c12242e50e20bf7b6849
Signed-off-by: default avatarArjun Singh <arsingh@codeaurora.org>
parent af716c70
Loading
Loading
Loading
Loading
+16 −1
Original line number Diff line number Diff line
@@ -122,6 +122,9 @@ struct bgrsb_priv {
	uint32_t calbrtion_cpi;

	uint8_t bttn_configs;

	bool calibration_needed;
	bool is_calibrd;
};

static void *bgrsb_drv;
@@ -400,7 +403,13 @@ static void bgrsb_bgdown_work(struct work_struct *work)
		else
			pr_err("Failed to unvote LDO-11 on BG down\n");
	}
	pr_debug("RSB current state is : %d\n", dev->bgrsb_current_state);

	pr_info("RSB current state is : %d\n", dev->bgrsb_current_state);

	if (dev->bgrsb_current_state == BGRSB_STATE_INIT) {
		if (dev->is_calibrd)
			dev->calibration_needed = true;
	}
}

static int bgrsb_tx_msg(struct bgrsb_priv *dev, void  *msg, size_t len)
@@ -575,6 +584,11 @@ static void bgrsb_enable_rsb(struct work_struct *work)
	}
	dev->bgrsb_current_state = BGRSB_STATE_RSB_ENABLED;
	pr_debug("RSB Enabled\n");

	if (dev->calibration_needed) {
		dev->calibration_needed = false;
		queue_work(dev->bgrsb_wq, &dev->rsb_calibration_work);
	}
}

static void bgrsb_disable_rsb(struct work_struct *work)
@@ -628,6 +642,7 @@ static void bgrsb_calibration(struct work_struct *work)
		pr_err("Failed to send interval value to BG\n");
		return;
	}
	dev->is_calibrd = true;
	pr_debug("RSB Calibbered\n");
}