* [PATCH] drm/i915: Parsing LFP brightness control from VBT
@ 2014-12-15 10:28 Vandana Kannan
2014-12-15 10:20 ` Daniel Vetter
2014-12-15 15:13 ` shuang.he
0 siblings, 2 replies; 7+ messages in thread
From: Vandana Kannan @ 2014-12-15 10:28 UTC (permalink / raw)
To: intel-gfx; +Cc: Deepak M
From: Deepak M <m.deepak@intel.com>
LFP brighness control from the VBT block 43 indicates which
controller is used for brightness.
LFP1 brightness control method:
Bit 7-4 = This field controller number of the brightnes controller.
0 = Controller 0
1 = Controller 1
2 = Controller 2
3 = Controller 3
Others = Reserved
Bits 3-0 = This field specifies the brightness control pin to be used on the
platform.
0 = PMIC pin is used for brightness control
1 = LPSS PWM is used for brightness control
2 = Display DDI is used for brightness control
3 = CABC method to control brightness
Others = Reserved
Adding the above fields in dev_priv->vbt and corresponding changes in
parse_backlight()
v2: Jani's review comments addressed
- Move PWM definitions to intel_bios.h
- Moving vbt_version to intel_vbt_data
- Rename brightness to bl_ctrl_data
- Logging just control_pin instead of string
- Avoid adding vbt_version in dev_priv
- Since only DDI option is available as of now, let control pin DDI
affect dev_priv->vbt.backlight.present
v3: Jani's review comments addressed
- Drop control_pin
- Use bdb->version
- set controller to 0 instead of using control pin define
- check controller bounds
- remove superfluous changes in intel_parse_bios
Signed-off-by: Deepak M <m.deepak@intel.com>
Signed-off-by: Vandana Kannan <vandana.kannan@intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/i915_drv.h | 1 +
drivers/gpu/drm/i915/intel_bios.c | 20 ++++++++++++++++++++
drivers/gpu/drm/i915/intel_bios.h | 11 +++++++++++
3 files changed, 32 insertions(+)
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 11e85cb..f4fef28 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -1355,6 +1355,7 @@ struct intel_vbt_data {
bool present;
bool active_low_pwm;
u8 min_brightness; /* min_brightness/255 of max */
+ u8 controller; /* brightness controller number */
} backlight;
/* MIPI DSI */
diff --git a/drivers/gpu/drm/i915/intel_bios.c b/drivers/gpu/drm/i915/intel_bios.c
index 3f17825..65b1fbc 100644
--- a/drivers/gpu/drm/i915/intel_bios.c
+++ b/drivers/gpu/drm/i915/intel_bios.c
@@ -314,6 +314,7 @@ parse_lfp_backlight(struct drm_i915_private *dev_priv, struct bdb_header *bdb)
{
const struct bdb_lfp_backlight_data *backlight_data;
const struct bdb_lfp_backlight_data_entry *entry;
+ const struct bdb_lfp_backlight_control_data *bl_ctrl_data;
backlight_data = find_section(bdb, BDB_LVDS_BACKLIGHT);
if (!backlight_data)
@@ -326,6 +327,7 @@ parse_lfp_backlight(struct drm_i915_private *dev_priv, struct bdb_header *bdb)
}
entry = &backlight_data->data[panel_type];
+ bl_ctrl_data = &backlight_data->blc_ctl[panel_type];
dev_priv->vbt.backlight.present = entry->type == BDB_BACKLIGHT_TYPE_PWM;
if (!dev_priv->vbt.backlight.present) {
@@ -337,12 +339,30 @@ parse_lfp_backlight(struct drm_i915_private *dev_priv, struct bdb_header *bdb)
dev_priv->vbt.backlight.pwm_freq_hz = entry->pwm_freq_hz;
dev_priv->vbt.backlight.active_low_pwm = entry->active_low_pwm;
dev_priv->vbt.backlight.min_brightness = entry->min_brightness;
+
+ dev_priv->vbt.backlight.controller = 0;
+ if (bdb->version >= 191) {
+ dev_priv->vbt.backlight.present =
+ bl_ctrl_data->pin == BLC_CONTROL_PIN_DDI;
+ if (!dev_priv->vbt.backlight.present) {
+ DRM_DEBUG_KMS("BL control pin is not DDI (pin %u)\n",
+ bl_ctrl_data->pin);
+ return;
+ }
+ if (bl_ctrl_data->controller == 1)
+ dev_priv->vbt.backlight.controller =
+ bl_ctrl_data->controller;
+ }
+
DRM_DEBUG_KMS("VBT backlight PWM modulation frequency %u Hz, "
"active %s, min brightness %u, level %u\n",
dev_priv->vbt.backlight.pwm_freq_hz,
dev_priv->vbt.backlight.active_low_pwm ? "low" : "high",
dev_priv->vbt.backlight.min_brightness,
backlight_data->level[panel_type]);
+
+ DRM_DEBUG_KMS("VBT BL controller %u\n",
+ dev_priv->vbt.backlight.controller);
}
/* Try to find sdvo panel data */
diff --git a/drivers/gpu/drm/i915/intel_bios.h b/drivers/gpu/drm/i915/intel_bios.h
index a6a8710..9a7202e 100644
--- a/drivers/gpu/drm/i915/intel_bios.h
+++ b/drivers/gpu/drm/i915/intel_bios.h
@@ -402,10 +402,21 @@ struct bdb_lfp_backlight_data_entry {
u8 obsolete3;
} __packed;
+#define BLC_CONTROL_PIN_PMIC 0
+#define BLC_CONTROL_PIN_LPSS_PWM 1
+#define BLC_CONTROL_PIN_DDI 2
+#define BLC_CONTROL_PIN_CABC 3
+
+struct bdb_lfp_backlight_control_data {
+ u8 controller:4;
+ u8 pin:4;
+} __packed;
+
struct bdb_lfp_backlight_data {
u8 entry_size;
struct bdb_lfp_backlight_data_entry data[16];
u8 level[16];
+ struct bdb_lfp_backlight_control_data blc_ctl[16];
} __packed;
struct aimdb_header {
--
2.0.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 7+ messages in thread* Re: [PATCH] drm/i915: Parsing LFP brightness control from VBT
2014-12-15 10:28 [PATCH] drm/i915: Parsing LFP brightness control from VBT Vandana Kannan
@ 2014-12-15 10:20 ` Daniel Vetter
2014-12-15 15:13 ` shuang.he
1 sibling, 0 replies; 7+ messages in thread
From: Daniel Vetter @ 2014-12-15 10:20 UTC (permalink / raw)
To: Vandana Kannan; +Cc: Deepak M, intel-gfx
On Mon, Dec 15, 2014 at 03:58:21PM +0530, Vandana Kannan wrote:
> From: Deepak M <m.deepak@intel.com>
>
> LFP brighness control from the VBT block 43 indicates which
> controller is used for brightness.
> LFP1 brightness control method:
> Bit 7-4 = This field controller number of the brightnes controller.
> 0 = Controller 0
> 1 = Controller 1
> 2 = Controller 2
> 3 = Controller 3
> Others = Reserved
> Bits 3-0 = This field specifies the brightness control pin to be used on the
> platform.
> 0 = PMIC pin is used for brightness control
> 1 = LPSS PWM is used for brightness control
> 2 = Display DDI is used for brightness control
> 3 = CABC method to control brightness
> Others = Reserved
>
> Adding the above fields in dev_priv->vbt and corresponding changes in
> parse_backlight()
>
> v2: Jani's review comments addressed
> - Move PWM definitions to intel_bios.h
> - Moving vbt_version to intel_vbt_data
> - Rename brightness to bl_ctrl_data
> - Logging just control_pin instead of string
> - Avoid adding vbt_version in dev_priv
> - Since only DDI option is available as of now, let control pin DDI
> affect dev_priv->vbt.backlight.present
>
> v3: Jani's review comments addressed
> - Drop control_pin
> - Use bdb->version
> - set controller to 0 instead of using control pin define
> - check controller bounds
> - remove superfluous changes in intel_parse_bios
>
> Signed-off-by: Deepak M <m.deepak@intel.com>
> Signed-off-by: Vandana Kannan <vandana.kannan@intel.com>
> Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Queued for -next, thanks for the patch.
-Daniel
> ---
> drivers/gpu/drm/i915/i915_drv.h | 1 +
> drivers/gpu/drm/i915/intel_bios.c | 20 ++++++++++++++++++++
> drivers/gpu/drm/i915/intel_bios.h | 11 +++++++++++
> 3 files changed, 32 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index 11e85cb..f4fef28 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -1355,6 +1355,7 @@ struct intel_vbt_data {
> bool present;
> bool active_low_pwm;
> u8 min_brightness; /* min_brightness/255 of max */
> + u8 controller; /* brightness controller number */
> } backlight;
>
> /* MIPI DSI */
> diff --git a/drivers/gpu/drm/i915/intel_bios.c b/drivers/gpu/drm/i915/intel_bios.c
> index 3f17825..65b1fbc 100644
> --- a/drivers/gpu/drm/i915/intel_bios.c
> +++ b/drivers/gpu/drm/i915/intel_bios.c
> @@ -314,6 +314,7 @@ parse_lfp_backlight(struct drm_i915_private *dev_priv, struct bdb_header *bdb)
> {
> const struct bdb_lfp_backlight_data *backlight_data;
> const struct bdb_lfp_backlight_data_entry *entry;
> + const struct bdb_lfp_backlight_control_data *bl_ctrl_data;
>
> backlight_data = find_section(bdb, BDB_LVDS_BACKLIGHT);
> if (!backlight_data)
> @@ -326,6 +327,7 @@ parse_lfp_backlight(struct drm_i915_private *dev_priv, struct bdb_header *bdb)
> }
>
> entry = &backlight_data->data[panel_type];
> + bl_ctrl_data = &backlight_data->blc_ctl[panel_type];
>
> dev_priv->vbt.backlight.present = entry->type == BDB_BACKLIGHT_TYPE_PWM;
> if (!dev_priv->vbt.backlight.present) {
> @@ -337,12 +339,30 @@ parse_lfp_backlight(struct drm_i915_private *dev_priv, struct bdb_header *bdb)
> dev_priv->vbt.backlight.pwm_freq_hz = entry->pwm_freq_hz;
> dev_priv->vbt.backlight.active_low_pwm = entry->active_low_pwm;
> dev_priv->vbt.backlight.min_brightness = entry->min_brightness;
> +
> + dev_priv->vbt.backlight.controller = 0;
> + if (bdb->version >= 191) {
> + dev_priv->vbt.backlight.present =
> + bl_ctrl_data->pin == BLC_CONTROL_PIN_DDI;
> + if (!dev_priv->vbt.backlight.present) {
> + DRM_DEBUG_KMS("BL control pin is not DDI (pin %u)\n",
> + bl_ctrl_data->pin);
> + return;
> + }
> + if (bl_ctrl_data->controller == 1)
> + dev_priv->vbt.backlight.controller =
> + bl_ctrl_data->controller;
> + }
> +
> DRM_DEBUG_KMS("VBT backlight PWM modulation frequency %u Hz, "
> "active %s, min brightness %u, level %u\n",
> dev_priv->vbt.backlight.pwm_freq_hz,
> dev_priv->vbt.backlight.active_low_pwm ? "low" : "high",
> dev_priv->vbt.backlight.min_brightness,
> backlight_data->level[panel_type]);
> +
> + DRM_DEBUG_KMS("VBT BL controller %u\n",
> + dev_priv->vbt.backlight.controller);
> }
>
> /* Try to find sdvo panel data */
> diff --git a/drivers/gpu/drm/i915/intel_bios.h b/drivers/gpu/drm/i915/intel_bios.h
> index a6a8710..9a7202e 100644
> --- a/drivers/gpu/drm/i915/intel_bios.h
> +++ b/drivers/gpu/drm/i915/intel_bios.h
> @@ -402,10 +402,21 @@ struct bdb_lfp_backlight_data_entry {
> u8 obsolete3;
> } __packed;
>
> +#define BLC_CONTROL_PIN_PMIC 0
> +#define BLC_CONTROL_PIN_LPSS_PWM 1
> +#define BLC_CONTROL_PIN_DDI 2
> +#define BLC_CONTROL_PIN_CABC 3
> +
> +struct bdb_lfp_backlight_control_data {
> + u8 controller:4;
> + u8 pin:4;
> +} __packed;
> +
> struct bdb_lfp_backlight_data {
> u8 entry_size;
> struct bdb_lfp_backlight_data_entry data[16];
> u8 level[16];
> + struct bdb_lfp_backlight_control_data blc_ctl[16];
> } __packed;
>
> struct aimdb_header {
> --
> 2.0.1
>
--
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [PATCH] drm/i915: Parsing LFP brightness control from VBT
2014-12-15 10:28 [PATCH] drm/i915: Parsing LFP brightness control from VBT Vandana Kannan
2014-12-15 10:20 ` Daniel Vetter
@ 2014-12-15 15:13 ` shuang.he
1 sibling, 0 replies; 7+ messages in thread
From: shuang.he @ 2014-12-15 15:13 UTC (permalink / raw)
To: shuang.he, intel-gfx, vandana.kannan
Tested-By: PRC QA PRTS (Patch Regression Test System Contact: shuang.he@intel.com)
-------------------------------------Summary-------------------------------------
Platform Delta drm-intel-nightly Series Applied
PNV 364/364 364/364
ILK +5 360/366 365/366
SNB 448/450 448/450
IVB 497/498 497/498
BYT 289/289 289/289
HSW 563/564 563/564
BDW 417/417 417/417
-------------------------------------Detailed-------------------------------------
Platform Test drm-intel-nightly Series Applied
ILK igt_drv_suspend_fence-restore-untiled DMESG_WARN(1, M26)PASS(1, M37) PASS(1, M37)
ILK igt_kms_flip_bcs-flip-vs-modeset-interruptible DMESG_WARN(1, M26)PASS(1, M37) PASS(1, M37)
ILK igt_kms_flip_busy-flip-interruptible DMESG_WARN(1, M26)PASS(1, M37) PASS(1, M37)
ILK igt_kms_flip_flip-vs-rmfb-interruptible DMESG_WARN(1, M26)PASS(1, M37) PASS(1, M37)
ILK igt_kms_flip_rcs-flip-vs-dpms DMESG_WARN(1, M26)PASS(1, M37) PASS(1, M37)
Note: You need to pay more attention to line start with '*'
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH] drm/i915: Parsing LFP brightness control from VBT
@ 2015-07-06 11:05 Vandana Kannan
2015-07-07 8:55 ` shuang.he
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Vandana Kannan @ 2015-07-06 11:05 UTC (permalink / raw)
To: intel-gfx; +Cc: Deepak M, Jani Nikula
From: Deepak M <m.deepak@intel.com>
LFP brighness control from the VBT block 43 indicates which
controller is used for brightness.
LFP1 brightness control method:
Bit 7-4 = This field controller number of the brightnes controller.
0 = Controller 0
1 = Controller 1
2 = Controller 2
3 = Controller 3
Others = Reserved
Bits 3-0 are for Control pin
0 = PMIC pin is used for brightness control
1 = LPSS PWM is used for brightness control
2 = Display DDI is used for brightness control
3 = CABC method to control brightness
Others = Reserved
History:
This patch was submitted earlier including a check for control pin.
http://lists.freedesktop.org/archives/intel-gfx/2014-December/057530.html
Since it caused the issue, https://bugs.freedesktop.org/show_bug.cgi?id=87671,
it was reverted in
http://lists.freedesktop.org/archives/intel-gfx/2015-January/058110.html
The current patch reads controller and control pin from VBT (version >= 191)
From VBT version >= 197, default value of control pin is set to DDI, so the
corresponding check during backlight setup will be made in a future patch
Signed-off-by: Deepak M <m.deepak@intel.com>
Signed-off-by: Vandana Kannan <vandana.kannan@intel.com>
Cc: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/i915_drv.h | 2 ++
drivers/gpu/drm/i915/intel_bios.c | 9 +++++++++
drivers/gpu/drm/i915/intel_bios.h | 11 +++++++++++
3 files changed, 22 insertions(+)
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 950a981..a89e9a9 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -1461,6 +1461,8 @@ struct intel_vbt_data {
bool present;
bool active_low_pwm;
u8 min_brightness; /* min_brightness/255 of max */
+ u8 controller; /* brightness controller number */
+ u8 control_pin; /* brightness control pin */
} backlight;
/* MIPI DSI */
diff --git a/drivers/gpu/drm/i915/intel_bios.c b/drivers/gpu/drm/i915/intel_bios.c
index 2ff9eb0..32c1ef2 100644
--- a/drivers/gpu/drm/i915/intel_bios.c
+++ b/drivers/gpu/drm/i915/intel_bios.c
@@ -256,6 +256,7 @@ parse_lfp_backlight(struct drm_i915_private *dev_priv,
{
const struct bdb_lfp_backlight_data *backlight_data;
const struct bdb_lfp_backlight_data_entry *entry;
+ const struct bdb_lfp_backlight_control_data *bl_ctrl_data;
backlight_data = find_section(bdb, BDB_LVDS_BACKLIGHT);
if (!backlight_data)
@@ -268,6 +269,7 @@ parse_lfp_backlight(struct drm_i915_private *dev_priv,
}
entry = &backlight_data->data[panel_type];
+ bl_ctrl_data = &backlight_data->blc_ctl[panel_type];
dev_priv->vbt.backlight.present = entry->type == BDB_BACKLIGHT_TYPE_PWM;
if (!dev_priv->vbt.backlight.present) {
@@ -279,12 +281,19 @@ parse_lfp_backlight(struct drm_i915_private *dev_priv,
dev_priv->vbt.backlight.pwm_freq_hz = entry->pwm_freq_hz;
dev_priv->vbt.backlight.active_low_pwm = entry->active_low_pwm;
dev_priv->vbt.backlight.min_brightness = entry->min_brightness;
+ dev_priv->vbt.backlight.controller = bl_ctrl_data->controller;
+ dev_priv->vbt.backlight.control_pin = bl_ctrl_data->pin;
+
DRM_DEBUG_KMS("VBT backlight PWM modulation frequency %u Hz, "
"active %s, min brightness %u, level %u\n",
dev_priv->vbt.backlight.pwm_freq_hz,
dev_priv->vbt.backlight.active_low_pwm ? "low" : "high",
dev_priv->vbt.backlight.min_brightness,
backlight_data->level[panel_type]);
+
+ DRM_DEBUG_KMS("VBT BL controller %u, BL control pin %u\n",
+ dev_priv->vbt.backlight.controller,
+ dev_priv->vbt.backlight.control_pin);
}
/* Try to find sdvo panel data */
diff --git a/drivers/gpu/drm/i915/intel_bios.h b/drivers/gpu/drm/i915/intel_bios.h
index af0b476..e97c1c0 100644
--- a/drivers/gpu/drm/i915/intel_bios.h
+++ b/drivers/gpu/drm/i915/intel_bios.h
@@ -402,10 +402,21 @@ struct bdb_lfp_backlight_data_entry {
u8 obsolete3;
} __packed;
+#define BLC_CONTROL_PIN_PMIC 0
+#define BLC_CONTROL_PIN_LPSS_PWM 1
+#define BLC_CONTROL_PIN_DDI 2
+#define BLC_CONTROL_PIN_CABC 3
+
+struct bdb_lfp_backlight_control_data {
+ u8 controller:4;
+ u8 pin:4;
+} __packed;
+
struct bdb_lfp_backlight_data {
u8 entry_size;
struct bdb_lfp_backlight_data_entry data[16];
u8 level[16];
+ struct bdb_lfp_backlight_control_data blc_ctl[16];
} __packed;
struct aimdb_header {
--
2.0.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 7+ messages in thread* Re: [PATCH] drm/i915: Parsing LFP brightness control from VBT
2015-07-06 11:05 Vandana Kannan
@ 2015-07-07 8:55 ` shuang.he
2015-07-24 9:01 ` Kannan, Vandana
2015-07-27 4:38 ` Sivakumar Thulasimani
2 siblings, 0 replies; 7+ messages in thread
From: shuang.he @ 2015-07-07 8:55 UTC (permalink / raw)
To: shuang.he, lei.a.liu, intel-gfx, vandana.kannan
Tested-By: Intel Graphics QA PRTS (Patch Regression Test System Contact: shuang.he@intel.com)
Task id: 6725
-------------------------------------Summary-------------------------------------
Platform Delta drm-intel-nightly Series Applied
ILK 302/302 302/302
SNB 312/316 312/316
IVB 345/345 345/345
BYT -1 289/289 288/289
HSW 382/382 382/382
-------------------------------------Detailed-------------------------------------
Platform Test drm-intel-nightly Series Applied
*BYT igt@gem_partial_pwrite_pread@reads-uncached PASS(1) FAIL(1)
Note: You need to pay more attention to line start with '*'
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] drm/i915: Parsing LFP brightness control from VBT
2015-07-06 11:05 Vandana Kannan
2015-07-07 8:55 ` shuang.he
@ 2015-07-24 9:01 ` Kannan, Vandana
2015-07-27 4:38 ` Sivakumar Thulasimani
2 siblings, 0 replies; 7+ messages in thread
From: Kannan, Vandana @ 2015-07-24 9:01 UTC (permalink / raw)
To: intel-gfx; +Cc: Deepak M, Jani Nikula
Any inputs on this patch ?
- Vandana
On 7/6/2015 4:35 PM, Vandana Kannan wrote:
> From: Deepak M <m.deepak@intel.com>
>
> LFP brighness control from the VBT block 43 indicates which
> controller is used for brightness.
> LFP1 brightness control method:
> Bit 7-4 = This field controller number of the brightnes controller.
> 0 = Controller 0
> 1 = Controller 1
> 2 = Controller 2
> 3 = Controller 3
> Others = Reserved
>
> Bits 3-0 are for Control pin
> 0 = PMIC pin is used for brightness control
> 1 = LPSS PWM is used for brightness control
> 2 = Display DDI is used for brightness control
> 3 = CABC method to control brightness
> Others = Reserved
>
> History:
> This patch was submitted earlier including a check for control pin.
> http://lists.freedesktop.org/archives/intel-gfx/2014-December/057530.html
> Since it caused the issue, https://bugs.freedesktop.org/show_bug.cgi?id=87671,
> it was reverted in
> http://lists.freedesktop.org/archives/intel-gfx/2015-January/058110.html
>
> The current patch reads controller and control pin from VBT (version >= 191)
>
> From VBT version >= 197, default value of control pin is set to DDI, so the
> corresponding check during backlight setup will be made in a future patch
>
> Signed-off-by: Deepak M <m.deepak@intel.com>
> Signed-off-by: Vandana Kannan <vandana.kannan@intel.com>
> Cc: Jani Nikula <jani.nikula@intel.com>
> ---
> drivers/gpu/drm/i915/i915_drv.h | 2 ++
> drivers/gpu/drm/i915/intel_bios.c | 9 +++++++++
> drivers/gpu/drm/i915/intel_bios.h | 11 +++++++++++
> 3 files changed, 22 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index 950a981..a89e9a9 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -1461,6 +1461,8 @@ struct intel_vbt_data {
> bool present;
> bool active_low_pwm;
> u8 min_brightness; /* min_brightness/255 of max */
> + u8 controller; /* brightness controller number */
> + u8 control_pin; /* brightness control pin */
> } backlight;
>
> /* MIPI DSI */
> diff --git a/drivers/gpu/drm/i915/intel_bios.c b/drivers/gpu/drm/i915/intel_bios.c
> index 2ff9eb0..32c1ef2 100644
> --- a/drivers/gpu/drm/i915/intel_bios.c
> +++ b/drivers/gpu/drm/i915/intel_bios.c
> @@ -256,6 +256,7 @@ parse_lfp_backlight(struct drm_i915_private *dev_priv,
> {
> const struct bdb_lfp_backlight_data *backlight_data;
> const struct bdb_lfp_backlight_data_entry *entry;
> + const struct bdb_lfp_backlight_control_data *bl_ctrl_data;
>
> backlight_data = find_section(bdb, BDB_LVDS_BACKLIGHT);
> if (!backlight_data)
> @@ -268,6 +269,7 @@ parse_lfp_backlight(struct drm_i915_private *dev_priv,
> }
>
> entry = &backlight_data->data[panel_type];
> + bl_ctrl_data = &backlight_data->blc_ctl[panel_type];
>
> dev_priv->vbt.backlight.present = entry->type == BDB_BACKLIGHT_TYPE_PWM;
> if (!dev_priv->vbt.backlight.present) {
> @@ -279,12 +281,19 @@ parse_lfp_backlight(struct drm_i915_private *dev_priv,
> dev_priv->vbt.backlight.pwm_freq_hz = entry->pwm_freq_hz;
> dev_priv->vbt.backlight.active_low_pwm = entry->active_low_pwm;
> dev_priv->vbt.backlight.min_brightness = entry->min_brightness;
> + dev_priv->vbt.backlight.controller = bl_ctrl_data->controller;
> + dev_priv->vbt.backlight.control_pin = bl_ctrl_data->pin;
> +
> DRM_DEBUG_KMS("VBT backlight PWM modulation frequency %u Hz, "
> "active %s, min brightness %u, level %u\n",
> dev_priv->vbt.backlight.pwm_freq_hz,
> dev_priv->vbt.backlight.active_low_pwm ? "low" : "high",
> dev_priv->vbt.backlight.min_brightness,
> backlight_data->level[panel_type]);
> +
> + DRM_DEBUG_KMS("VBT BL controller %u, BL control pin %u\n",
> + dev_priv->vbt.backlight.controller,
> + dev_priv->vbt.backlight.control_pin);
> }
>
> /* Try to find sdvo panel data */
> diff --git a/drivers/gpu/drm/i915/intel_bios.h b/drivers/gpu/drm/i915/intel_bios.h
> index af0b476..e97c1c0 100644
> --- a/drivers/gpu/drm/i915/intel_bios.h
> +++ b/drivers/gpu/drm/i915/intel_bios.h
> @@ -402,10 +402,21 @@ struct bdb_lfp_backlight_data_entry {
> u8 obsolete3;
> } __packed;
>
> +#define BLC_CONTROL_PIN_PMIC 0
> +#define BLC_CONTROL_PIN_LPSS_PWM 1
> +#define BLC_CONTROL_PIN_DDI 2
> +#define BLC_CONTROL_PIN_CABC 3
> +
> +struct bdb_lfp_backlight_control_data {
> + u8 controller:4;
> + u8 pin:4;
> +} __packed;
> +
> struct bdb_lfp_backlight_data {
> u8 entry_size;
> struct bdb_lfp_backlight_data_entry data[16];
> u8 level[16];
> + struct bdb_lfp_backlight_control_data blc_ctl[16];
> } __packed;
>
> struct aimdb_header {
>
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [PATCH] drm/i915: Parsing LFP brightness control from VBT
2015-07-06 11:05 Vandana Kannan
2015-07-07 8:55 ` shuang.he
2015-07-24 9:01 ` Kannan, Vandana
@ 2015-07-27 4:38 ` Sivakumar Thulasimani
2 siblings, 0 replies; 7+ messages in thread
From: Sivakumar Thulasimani @ 2015-07-27 4:38 UTC (permalink / raw)
To: Vandana Kannan, intel-gfx; +Cc: Deepak M, Jani Nikula
On 7/6/2015 4:35 PM, Vandana Kannan wrote:
> From: Deepak M <m.deepak@intel.com>
>
> LFP brighness control from the VBT block 43 indicates which
> controller is used for brightness.
> LFP1 brightness control method:
> Bit 7-4 = This field controller number of the brightnes controller.
> 0 = Controller 0
> 1 = Controller 1
> 2 = Controller 2
> 3 = Controller 3
> Others = Reserved
>
> Bits 3-0 are for Control pin
> 0 = PMIC pin is used for brightness control
> 1 = LPSS PWM is used for brightness control
> 2 = Display DDI is used for brightness control
> 3 = CABC method to control brightness
> Others = Reserved
>
> History:
> This patch was submitted earlier including a check for control pin.
> http://lists.freedesktop.org/archives/intel-gfx/2014-December/057530.html
> Since it caused the issue, https://bugs.freedesktop.org/show_bug.cgi?id=87671,
> it was reverted in
> http://lists.freedesktop.org/archives/intel-gfx/2015-January/058110.html
>
> The current patch reads controller and control pin from VBT (version >= 191)
>
> From VBT version >= 197, default value of control pin is set to DDI, so the
> corresponding check during backlight setup will be made in a future patch
>
> Signed-off-by: Deepak M <m.deepak@intel.com>
> Signed-off-by: Vandana Kannan <vandana.kannan@intel.com>
> Cc: Jani Nikula <jani.nikula@intel.com>
> ---
> drivers/gpu/drm/i915/i915_drv.h | 2 ++
> drivers/gpu/drm/i915/intel_bios.c | 9 +++++++++
> drivers/gpu/drm/i915/intel_bios.h | 11 +++++++++++
> 3 files changed, 22 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index 950a981..a89e9a9 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -1461,6 +1461,8 @@ struct intel_vbt_data {
> bool present;
> bool active_low_pwm;
> u8 min_brightness; /* min_brightness/255 of max */
> + u8 controller; /* brightness controller number */
> + u8 control_pin; /* brightness control pin */
> } backlight;
>
> /* MIPI DSI */
> diff --git a/drivers/gpu/drm/i915/intel_bios.c b/drivers/gpu/drm/i915/intel_bios.c
> index 2ff9eb0..32c1ef2 100644
> --- a/drivers/gpu/drm/i915/intel_bios.c
> +++ b/drivers/gpu/drm/i915/intel_bios.c
> @@ -256,6 +256,7 @@ parse_lfp_backlight(struct drm_i915_private *dev_priv,
> {
> const struct bdb_lfp_backlight_data *backlight_data;
> const struct bdb_lfp_backlight_data_entry *entry;
> + const struct bdb_lfp_backlight_control_data *bl_ctrl_data;
>
> backlight_data = find_section(bdb, BDB_LVDS_BACKLIGHT);
> if (!backlight_data)
> @@ -268,6 +269,7 @@ parse_lfp_backlight(struct drm_i915_private *dev_priv,
> }
>
> entry = &backlight_data->data[panel_type];
> + bl_ctrl_data = &backlight_data->blc_ctl[panel_type];
>
> dev_priv->vbt.backlight.present = entry->type == BDB_BACKLIGHT_TYPE_PWM;
> if (!dev_priv->vbt.backlight.present) {
> @@ -279,12 +281,19 @@ parse_lfp_backlight(struct drm_i915_private *dev_priv,
> dev_priv->vbt.backlight.pwm_freq_hz = entry->pwm_freq_hz;
> dev_priv->vbt.backlight.active_low_pwm = entry->active_low_pwm;
> dev_priv->vbt.backlight.min_brightness = entry->min_brightness;
> + dev_priv->vbt.backlight.controller = bl_ctrl_data->controller;
> + dev_priv->vbt.backlight.control_pin = bl_ctrl_data->pin;
> +
> DRM_DEBUG_KMS("VBT backlight PWM modulation frequency %u Hz, "
> "active %s, min brightness %u, level %u\n",
> dev_priv->vbt.backlight.pwm_freq_hz,
> dev_priv->vbt.backlight.active_low_pwm ? "low" : "high",
> dev_priv->vbt.backlight.min_brightness,
> backlight_data->level[panel_type]);
> +
> + DRM_DEBUG_KMS("VBT BL controller %u, BL control pin %u\n",
> + dev_priv->vbt.backlight.controller,
> + dev_priv->vbt.backlight.control_pin);
> }
>
> /* Try to find sdvo panel data */
> diff --git a/drivers/gpu/drm/i915/intel_bios.h b/drivers/gpu/drm/i915/intel_bios.h
> index af0b476..e97c1c0 100644
> --- a/drivers/gpu/drm/i915/intel_bios.h
> +++ b/drivers/gpu/drm/i915/intel_bios.h
> @@ -402,10 +402,21 @@ struct bdb_lfp_backlight_data_entry {
> u8 obsolete3;
> } __packed;
>
> +#define BLC_CONTROL_PIN_PMIC 0
> +#define BLC_CONTROL_PIN_LPSS_PWM 1
> +#define BLC_CONTROL_PIN_DDI 2
> +#define BLC_CONTROL_PIN_CABC 3
> +
> +struct bdb_lfp_backlight_control_data {
> + u8 controller:4;
> + u8 pin:4;
the pin should be first half of this struct.
pin - 0:3
controller - 4:7
> +} __packed;
> +
> struct bdb_lfp_backlight_data {
> u8 entry_size;
> struct bdb_lfp_backlight_data_entry data[16];
> u8 level[16];
> + struct bdb_lfp_backlight_control_data blc_ctl[16];
> } __packed;
>
> struct aimdb_header {
--
regards,
Sivakumar
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2015-07-27 4:38 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-12-15 10:28 [PATCH] drm/i915: Parsing LFP brightness control from VBT Vandana Kannan
2014-12-15 10:20 ` Daniel Vetter
2014-12-15 15:13 ` shuang.he
-- strict thread matches above, loose matches on Subject: below --
2015-07-06 11:05 Vandana Kannan
2015-07-07 8:55 ` shuang.he
2015-07-24 9:01 ` Kannan, Vandana
2015-07-27 4:38 ` Sivakumar Thulasimani
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox