From 517b74626d756be1adddf2857f55973732308e62 Mon Sep 17 00:00:00 2001 From: Visti Andresen Date: Sun, 13 Aug 2023 14:18:42 +0200 Subject: [PATCH 1/4] Code for offsetting the EBC temperature --- drivers/gpu/drm/rockchip/rockchip_ebc.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/gpu/drm/rockchip/rockchip_ebc.c b/drivers/gpu/drm/rockchip/rockchip_ebc.c index 914efa570890b8..204327e5ab0eb3 100644 --- a/drivers/gpu/drm/rockchip/rockchip_ebc.c +++ b/drivers/gpu/drm/rockchip/rockchip_ebc.c @@ -260,6 +260,10 @@ static int temp_override = 0; module_param(temp_override, int, S_IRUGO|S_IWUSR); MODULE_PARM_DESC(temp_override, "Values > 0 override the temperature"); +static int temp_offset = 0; +module_param(temp_offset, int, S_IRUGO|S_IWUSR); +MODULE_PARM_DESC(temp_offset, "Values > 0 is subtracted from the temperature to compensate for the pcb sensor being hotter than the display"); + DEFINE_DRM_GEM_FOPS(rockchip_ebc_fops); @@ -1087,6 +1091,14 @@ static void rockchip_ebc_refresh(struct rockchip_ebc *ebc, printk(KERN_INFO "rockchip-ebc: override temperature from %i to %i\n", temp_override, temperature); temperature = temp_override; } + } else if (temp_offset > 0){ + int old_val = temperature; + if (temperature > temp_offset) + temperature -= temp_offset; + else + temperature = 0; + printk(KERN_INFO "rockchip-ebc: temp offset from %i to %i\n", old_val, temperature); + } ret = drm_epd_lut_set_temperature(&ebc->lut, temperature); if (ret < 0) From 3248c51bc2ffa94f7b6fca329781d5bb73919b5e Mon Sep 17 00:00:00 2001 From: Visti Andresen Date: Sun, 13 Aug 2023 14:22:45 +0200 Subject: [PATCH 2/4] Disabled the printk as they do generate a lot of output --- drivers/gpu/drm/rockchip/rockchip_ebc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/rockchip/rockchip_ebc.c b/drivers/gpu/drm/rockchip/rockchip_ebc.c index 204327e5ab0eb3..4440bdfd33c251 100644 --- a/drivers/gpu/drm/rockchip/rockchip_ebc.c +++ b/drivers/gpu/drm/rockchip/rockchip_ebc.c @@ -1092,12 +1092,12 @@ static void rockchip_ebc_refresh(struct rockchip_ebc *ebc, temperature = temp_override; } } else if (temp_offset > 0){ - int old_val = temperature; + //int old_val = temperature; if (temperature > temp_offset) temperature -= temp_offset; else temperature = 0; - printk(KERN_INFO "rockchip-ebc: temp offset from %i to %i\n", old_val, temperature); + //printk(KERN_INFO "rockchip-ebc: temp offset from %i to %i\n", old_val, temperature); } ret = drm_epd_lut_set_temperature(&ebc->lut, temperature); From e82062b9937d1050a05171f141e3071d980bb5cd Mon Sep 17 00:00:00 2001 From: Visti Andresen Date: Sun, 13 Aug 2023 14:23:32 +0200 Subject: [PATCH 3/4] Changes to indentation to match the kernels tab and size 8 --- drivers/gpu/drm/rockchip/rockchip_ebc.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/gpu/drm/rockchip/rockchip_ebc.c b/drivers/gpu/drm/rockchip/rockchip_ebc.c index 4440bdfd33c251..4b9b918e0fb777 100644 --- a/drivers/gpu/drm/rockchip/rockchip_ebc.c +++ b/drivers/gpu/drm/rockchip/rockchip_ebc.c @@ -1089,8 +1089,7 @@ static void rockchip_ebc_refresh(struct rockchip_ebc *ebc, if (temp_override > 0){ printk(KERN_INFO "rockchip-ebc: override temperature from %i to %i\n", temp_override, temperature); - temperature = temp_override; - } + temperature = temp_override; } else if (temp_offset > 0){ //int old_val = temperature; if (temperature > temp_offset) From ee6c34ba3c53fd8faca05e3fd53b19bd8c50c805 Mon Sep 17 00:00:00 2001 From: Visti Andresen Date: Sun, 13 Aug 2023 14:33:13 +0200 Subject: [PATCH 4/4] Added a variable that can be used to poll the panel "temperature" --- drivers/gpu/drm/rockchip/rockchip_ebc.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/gpu/drm/rockchip/rockchip_ebc.c b/drivers/gpu/drm/rockchip/rockchip_ebc.c index 4b9b918e0fb777..754100575eec6d 100644 --- a/drivers/gpu/drm/rockchip/rockchip_ebc.c +++ b/drivers/gpu/drm/rockchip/rockchip_ebc.c @@ -264,6 +264,10 @@ static int temp_offset = 0; module_param(temp_offset, int, S_IRUGO|S_IWUSR); MODULE_PARM_DESC(temp_offset, "Values > 0 is subtracted from the temperature to compensate for the pcb sensor being hotter than the display"); +static int panel_temp = 0; +module_param(panel_temp, int, S_IRUGO); +MODULE_PARM_DESC(panel_temp, "The currently used value for the panel temperature"); + DEFINE_DRM_GEM_FOPS(rockchip_ebc_fops); @@ -1098,6 +1102,7 @@ static void rockchip_ebc_refresh(struct rockchip_ebc *ebc, temperature = 0; //printk(KERN_INFO "rockchip-ebc: temp offset from %i to %i\n", old_val, temperature); } + panel_temp = temperature; ret = drm_epd_lut_set_temperature(&ebc->lut, temperature); if (ret < 0)