46 lines
1.9 KiB
Diff
46 lines
1.9 KiB
Diff
|
CPR (Core Power Reduction) is Qualcomm's implementation of AVS (Adaptive Voltage Scaling).
|
||
|
Dynamic undervolting essentially. It depends on some calibration values encoded
|
||
|
in fuses. This patch dumps the fuse values in the downstream kernel which is useful
|
||
|
to check if the mainline driver is working correctly.
|
||
|
|
||
|
diff --git a/drivers/regulator/cpr-regulator.c b/drivers/regulator/cpr-regulator.c
|
||
|
index 8637d78c..880482b5 100644
|
||
|
--- a/drivers/regulator/cpr-regulator.c
|
||
|
+++ b/drivers/regulator/cpr-regulator.c
|
||
|
@@ -3350,6 +3350,26 @@ static int cpr_init_cpr_parameters(struct platform_device *pdev,
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
+static void cpr_dump(struct cpr_regulator *cpr_vreg)
|
||
|
+{
|
||
|
+ int i;
|
||
|
+
|
||
|
+ cpr_info(cpr_vreg, "pvs_bin: %u, speed_bin: %u, pvs_version: %u\n",
|
||
|
+ cpr_vreg->pvs_bin, cpr_vreg->speed_bin, cpr_vreg->pvs_version);
|
||
|
+
|
||
|
+ for (i = CPR_FUSE_CORNER_MIN; i <= cpr_vreg->num_fuse_corners; i++) {
|
||
|
+ cpr_info(cpr_vreg, "FUSE[%d]: pvs_corner_v: %u, cpr_fuse_target_quot: %u, cpr_fuse_ro_sel: %u, fuse_ceiling_volt: %u, fuse_floor_volt: %u, step_quotient: %u\n",
|
||
|
+ i, cpr_vreg->pvs_corner_v[i], cpr_vreg->cpr_fuse_target_quot[i], cpr_vreg->cpr_fuse_ro_sel[i],
|
||
|
+ cpr_vreg->fuse_ceiling_volt[i], cpr_vreg->fuse_floor_volt[i],
|
||
|
+ cpr_vreg->step_quotient[i]);
|
||
|
+ }
|
||
|
+
|
||
|
+ for (i = CPR_CORNER_MIN; i <= cpr_vreg->num_corners; i++) {
|
||
|
+ cpr_info(cpr_vreg, "CORNER[%d]: ceiling_volt: %u, floor_volt: %u, last_volt: %u, open_loop_volt: %u, quot_adjust: %u\n",
|
||
|
+ i, cpr_vreg->ceiling_volt[i], cpr_vreg->floor_volt[i], cpr_vreg->last_volt[i], cpr_vreg->open_loop_volt[i], cpr_vreg->quot_adjust[i]);
|
||
|
+ }
|
||
|
+}
|
||
|
+
|
||
|
static int cpr_init_cpr(struct platform_device *pdev,
|
||
|
struct cpr_regulator *cpr_vreg)
|
||
|
{
|
||
|
@@ -3411,6 +3431,8 @@ static int cpr_init_cpr(struct platform_device *pdev,
|
||
|
if (rc)
|
||
|
return rc;
|
||
|
|
||
|
+ cpr_dump(cpr_vreg);
|
||
|
+
|
||
|
/* Get and Init interrupt */
|
||
|
cpr_vreg->cpr_irq = platform_get_irq(pdev, 0);
|
||
|
if (!cpr_vreg->cpr_irq) {
|