drm/i915/dsi: dcs backlight control
Subsystems (2)
cover drm/i915/dsi: dcs backlight control
Next version of [1].
BR,
Jani.
[1] http://mid.gmane.org/[email protected]
Deepak M (2):
drm/i915: Parse LFP brightness control field in VBT CABC support for Panel PWM backlight control
Jani Nikula (1):
drm/i915: Add DCS control for Panel PWM
drivers/gpu/drm/i915/Makefile | 1 + drivers/gpu/drm/i915/i915_drv.h | 1 + drivers/gpu/drm/i915/intel_bios.c | 9 ++ drivers/gpu/drm/i915/intel_bios.h | 8 ++ drivers/gpu/drm/i915/intel_drv.h | 2 + drivers/gpu/drm/i915/intel_dsi.c | 36 ++++- drivers/gpu/drm/i915/intel_dsi.h | 4 + drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c | 179 +++++++++++++++++++++++++ drivers/gpu/drm/i915/intel_panel.c | 4 + drivers/gpu/drm/i915/intel_vbt_defs.h | 6 + 10 files changed, 248 insertions(+), 2 deletions(-) create mode 100644 drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c
Signature · 6 lines
2.1.4 _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
PATCH 1/3 drm/i915: Parse LFP brightness control field in VBT
From: Deepak M <[email protected]>
These fields in VBT indicates the PWM source which is used and also the controller number.
v2 by Jani: check for out of bounds access, some renames, change default type, etc.
v3 by Jani: s/INTEL_BACKLIGHT_CABC/INTEL_BACKLIGHT_DSI_DCS/
--- drivers/gpu/drm/i915/i915_drv.h | 1 + drivers/gpu/drm/i915/intel_bios.c | 9 +++++++++ drivers/gpu/drm/i915/intel_bios.h | 8 ++++++++ drivers/gpu/drm/i915/intel_vbt_defs.h | 6 ++++++ 4 files changed, 24 insertions(+)
drivers/gpu/drm/i915/i915_drv.h +1 -0
@@ -1488,6 +1488,7 @@ struct intel_vbt_data {bool present;bool active_low_pwm;u8 min_brightness;/* min_brightness/255 of max */ +enum intel_backlight_type type; } backlight;/* MIPI DSI */
drivers/gpu/drm/i915/intel_bios.c +9 -0
@@ -318,6 +318,15 @@ parse_lfp_backlight(struct drm_i915_private *dev_priv,return ; } + dev_priv->vbt.backlight.type =INTEL_BACKLIGHT_DISPLAY_DDI ; +if (bdb->version >=191 && +get_blocksize (backlight_data) >=sizeof (*backlight_data)) { +const struct bdb_lfp_backlight_control_method *method; + + method = &backlight_data->backlight_control[panel_type]; + dev_priv->vbt.backlight.type = method->type; + } + 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;
drivers/gpu/drm/i915/intel_bios.h +8 -0
@@ -30,6 +30,14 @@ #ifndef _INTEL_BIOS_H_ #define _INTEL_BIOS_H_ +enum intel_backlight_type { + INTEL_BACKLIGHT_PMIC, + INTEL_BACKLIGHT_LPSS, + INTEL_BACKLIGHT_DISPLAY_DDI, + INTEL_BACKLIGHT_DSI_DCS, + INTEL_BACKLIGHT_PANEL_DRIVER_INTERFACE, +}; + struct edp_power_seq { u16 t1_t3; u16 t8;
drivers/gpu/drm/i915/intel_vbt_defs.h +6 -0
@@ -446,10 +446,16 @@ struct bdb_lfp_backlight_data_entry {u8 obsolete3; } __packed; +struct bdb_lfp_backlight_control_method { +u8 type:4 ; +u8 controller: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_method backlight_control[16 ]; } __packed;struct aimdb_header {
Signature · 6 lines
2.1.4 _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [PATCH 1/3] drm/i915: Parse LFP brightness control field in VBT
Quoted 5 lines · Jani Nikula
From: Deepak M <[email protected]>
These fields in VBT indicates the PWM source which is used and also the controller number.
Quoted 7 lines
v2 by Jani: check for out of bounds access, some renames, change default type, etc.
v3 by Jani: s/INTEL_BACKLIGHT_CABC/INTEL_BACKLIGHT_DSI_DCS/
Signed-off-by Deepak M <[email protected]>Signed-off-by Jani Nikula <[email protected]>
Pushed this one to drm-intel-next-queued.
BR,
Jani.
Quoted 79 lines
--- drivers/gpu/drm/i915/i915_drv.h | 1 + drivers/gpu/drm/i915/intel_bios.c | 9 +++++++++ drivers/gpu/drm/i915/intel_bios.h | 8 ++++++++ drivers/gpu/drm/i915/intel_vbt_defs.h | 6 ++++++ 4 files changed, 24 insertions(+)drivers/gpu/drm/i915/i915_drv.h +1
-0@@ -1488,6 +1488,7 @@ struct intel_vbt_data {bool present;bool active_low_pwm;u8 min_brightness;/* min_brightness/255 of max */ +enum intel_backlight_type type; } backlight;/* MIPI DSI */ drivers/gpu/drm/i915/intel_bios.c +9
-0@@ -318,6 +318,15 @@ parse_lfp_backlight(struct drm_i915_private *dev_priv,return ; } + dev_priv->vbt.backlight.type =INTEL_BACKLIGHT_DISPLAY_DDI ; +if (bdb->version >=191 && +get_blocksize (backlight_data) >=sizeof (*backlight_data)) { +const struct bdb_lfp_backlight_control_method *method; + + method = &backlight_data->backlight_control[panel_type]; + dev_priv->vbt.backlight.type = method->type; + } + 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;drivers/gpu/drm/i915/intel_bios.h +8
-0@@ -30,6 +30,14 @@ #ifndef _INTEL_BIOS_H_ #define _INTEL_BIOS_H_ +enum intel_backlight_type { + INTEL_BACKLIGHT_PMIC, + INTEL_BACKLIGHT_LPSS, + INTEL_BACKLIGHT_DISPLAY_DDI, + INTEL_BACKLIGHT_DSI_DCS, + INTEL_BACKLIGHT_PANEL_DRIVER_INTERFACE, +}; + struct edp_power_seq { u16 t1_t3; u16 t8;drivers/gpu/drm/i915/intel_vbt_defs.h +6
-0@@ -446,10 +446,16 @@ struct bdb_lfp_backlight_data_entry {u8 obsolete3; } __packed; +struct bdb_lfp_backlight_control_method { +u8 type:4 ; +u8 controller: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_method backlight_control[16 ]; } __packed;struct aimdb_header {
Signature · 5 lines
Jani Nikula, Intel Open Source Technology Center _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
PATCH 2/3 drm/i915: Add DCS control for Panel PWM
In reply to Jani NikulaIf the source of the backlight PWM is from the
panel then the PWM can be controlled by DCS
command, this patch adds the support to
enable/disbale panel PWM, control backlight level
etc...
v2: Moving the CABC bkl functions to new file.(Jani)
v3: Rebase
v4: Rebase
v5: Use mipi_dsi_dcs_write() instead of mipi_dsi_dcs_write_buffer() (Jani)
Move DCS macro`s to include/video/mipi_display.h (Jani)
v6: Rename the file to intel_dsi_panel_pwm.c
Removing the CABC operations
v7 by Jani: renames, rebases, etc.
v8 by Jani: s/INTEL_BACKLIGHT_CABC/INTEL_BACKLIGHT_DSI_DCS/
v9 by Jani: rename init function to intel_dsi_dcs_init_backlight_funcs
--- drivers/gpu/drm/i915/Makefile | 1 + drivers/gpu/drm/i915/intel_drv.h | 2 + drivers/gpu/drm/i915/intel_dsi.c | 19 ++- drivers/gpu/drm/i915/intel_dsi.h | 3 + drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c | 157 +++++++++++++++++++++++++ drivers/gpu/drm/i915/intel_panel.c | 4 + 6 files changed, 184 insertions(+), 2 deletions(-) create mode 100644 drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c
drivers/gpu/drm/i915/Makefile +1 -0
@@ -86,6 +86,7 @@ i915-y += dvo_ch7017.o \ intel_dp_mst.o \ intel_dp.o \ intel_dsi.o \ + intel_dsi_dcs_backlight.o \ intel_dsi_panel_vbt.o \ intel_dsi_pll.o \ intel_dvo.o \
drivers/gpu/drm/i915/intel_drv.h +2 -0
@@ -1346,6 +1346,8 @@ void intel_dp_mst_encoder_cleanup(struct intel_digital_port *intel_dig_port);/* intel_dsi.c */ void intel_dsi_init (struct drm_device *dev); +/* intel_dsi_dcs_backlight.c */ +int intel_dsi_dcs_init_backlight_funcs (struct intel_connector *intel_connector);/* intel_dvo.c */ void intel_dvo_init (struct drm_device *dev);
drivers/gpu/drm/i915/intel_dsi.c +17 -2
@@ -1364,10 +1364,25 @@ void intel_dsi_init(struct drm_device *dev)else intel_encoder->crtc_mask =BIT (PIPE_B ); -if (dev_priv->vbt.dsi.config->dual_link) +if (dev_priv->vbt.dsi.config->dual_link) { intel_dsi->ports =BIT (PORT_A ) |BIT (PORT_C ); -else + +switch (dev_priv->vbt.dsi.config->dl_dcs_backlight_ports) { +case DL_DCS_PORT_A : + intel_dsi->dcs_backlight_ports =BIT (PORT_A ); +break ; +case DL_DCS_PORT_C : + intel_dsi->dcs_backlight_ports =BIT (PORT_C ); +break ; +default : +case DL_DCS_PORT_A_AND_C : + intel_dsi->dcs_backlight_ports =BIT (PORT_A ) |BIT (PORT_C ); +break ; + } + }else { intel_dsi->ports =BIT (port); + intel_dsi->dcs_backlight_ports =BIT (port); + }/* Create a DSI host (and a device) for each port. */ for_each_dsi_port (port, intel_dsi->ports) {
drivers/gpu/drm/i915/intel_dsi.h +3 -0
@@ -78,6 +78,9 @@ struct intel_dsi {u8 escape_clk_div;u8 dual_link; + +u16 dcs_backlight_ports; +u8 pixel_overlap;u32 port_bits;u32 bw_timer;
drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c new file +157 -0
157 lines not on this page · raw message
drivers/gpu/drm/i915/intel_panel.c +4 -0
@@ -1722,6 +1722,10 @@ intel_panel_init_backlight_funcs(struct intel_panel *panel) intel_dp_aux_init_backlight_funcs(connector) == 0)return ; +if (connector->base.connector_type ==DRM_MODE_CONNECTOR_DSI && +intel_dsi_dcs_init_backlight_funcs (connector) ==0 ) +return ; +if (IS_BROXTON (dev_priv)) { panel->backlight.setup = bxt_setup_backlight; panel->backlight.enable = bxt_enable_backlight;
Signature · 6 lines
2.1.4 _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
kbuild test robot
build botRe: [PATCH 2/3] drm/i915: Add DCS control for Panel PWM
compiler: reproduce:
Hi,
[auto build test ERROR on drm-intel/for-linux-next]
[cannot apply to v4.6-rc5 next-20160426]
[if your patch is applied to the wrong git tree, please drop us a note to help improving the system]
url: https://github.com/0day-ci/linux/commits/Jani-Nikula/drm-i915-dsi-dcs-backlight-control/20160426-211653 base: git://anongit.freedesktop.org/drm-intel for-linux-next config: i386-randconfig-s0-201617 (attached as .config) compiler: reproduce: # save the attached .config to linux build tree make ARCH=i386
All errors (new ones prefixed by >>):
drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c: In function 'dcs_get_backlight':
>> drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c:49:33: error: 'MIPI_DCS_GET_DISPLAY_BRIGHTNESS' undeclared (first use in this function)
mipi_dsi_dcs_read(dsi_device, MIPI_DCS_GET_DISPLAY_BRIGHTNESS,
^
drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c:49:33: note: each undeclared identifier is reported only once for each function it appears in
drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c: In function 'dcs_set_backlight':
>> drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c:68:34: error: 'MIPI_DCS_SET_DISPLAY_BRIGHTNESS' undeclared (first use in this function)
mipi_dsi_dcs_write(dsi_device, MIPI_DCS_SET_DISPLAY_BRIGHTNESS,
^
drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c: In function 'dcs_disable_backlight':
>> drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c:87:33: error: 'MIPI_DCS_GET_CONTROL_DISPLAY' undeclared (first use in this function)
mipi_dsi_dcs_read(dsi_device, MIPI_DCS_GET_CONTROL_DISPLAY,
^
>> drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c:94:34: error: 'MIPI_DCS_WRITE_CONTROL_DISPLAY' undeclared (first use in this function)
mipi_dsi_dcs_write(dsi_device, MIPI_DCS_WRITE_CONTROL_DISPLAY,
^
drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c: In function 'dcs_enable_backlight':
drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c:112:33: error: 'MIPI_DCS_GET_CONTROL_DISPLAY' undeclared (first use in this function)
mipi_dsi_dcs_read(dsi_device, MIPI_DCS_GET_CONTROL_DISPLAY,
^
drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c:119:34: error: 'MIPI_DCS_WRITE_CONTROL_DISPLAY' undeclared (first use in this function)
mipi_dsi_dcs_write(dsi_device, MIPI_DCS_WRITE_CONTROL_DISPLAY,
^vim +/MIPI_DCS_GET_DISPLAY_BRIGHTNESS +49 drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c
43 u8 data;
44 enum port port;
45
46 /* FIXME: Need to take care of 16 bit brightness level */
47 for_each_dsi_port(port, intel_dsi->dcs_backlight_ports) {
48 dsi_device = intel_dsi->dsi_hosts[port]->device;
> 49 mipi_dsi_dcs_read(dsi_device, MIPI_DCS_GET_DISPLAY_BRIGHTNESS,
50 &data, sizeof(data));
51 break;
52 }
53
54 return data;
55 }
56
57 static void dcs_set_backlight(struct intel_connector *connector, u32 level)
58 {
59 struct intel_encoder *encoder = connector->encoder;
60 struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base);
61 struct mipi_dsi_device *dsi_device;
62 u8 data = level;
63 enum port port;
64
65 /* FIXME: Need to take care of 16 bit brightness level */
66 for_each_dsi_port(port, intel_dsi->dcs_backlight_ports) {
67 dsi_device = intel_dsi->dsi_hosts[port]->device;
> 68 mipi_dsi_dcs_write(dsi_device, MIPI_DCS_SET_DISPLAY_BRIGHTNESS,
69 &data, sizeof(data));
70 }
71 }
72
73 static void dcs_disable_backlight(struct intel_connector *connector)
74 {
75 struct intel_encoder *encoder = connector->encoder;
76 struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base);
77 struct mipi_dsi_device *dsi_device;
78 enum port port;
79
80 dcs_set_backlight(connector, 0);
81
82 for_each_dsi_port(port, intel_dsi->dcs_backlight_ports) {
83 u8 ctrl = 0;
84
85 dsi_device = intel_dsi->dsi_hosts[port]->device;
86
> 87 mipi_dsi_dcs_read(dsi_device, MIPI_DCS_GET_CONTROL_DISPLAY,
88 &ctrl, sizeof(ctrl));
89
90 ctrl &= ~CONTROL_DISPLAY_BL;
91 ctrl &= ~CONTROL_DISPLAY_DD;
92 ctrl &= ~CONTROL_DISPLAY_BCTRL;
93
> 94 mipi_dsi_dcs_write(dsi_device, MIPI_DCS_WRITE_CONTROL_DISPLAY,
95 &ctrl, sizeof(ctrl));
96 }
97 }---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [PATCH 2/3] drm/i915: Add DCS control for Panel PWM
In reply to Jani NikulaQuoted 31 lines
-----Original Message-----
From: Nikula, Jani
Sent: Tuesday, April 26, 2016 2:14 PM
To: [email protected]
Cc: Nikula, Jani; Vetter, Daniel; Adebisi, YetundeX; Deepak, M
Subject: [PATCH 2/3] drm/i915: Add DCS control for Panel PWMIf the source of the backlight PWM is from the
panel then the PWM can be controlled by DCS
command, this patch adds the support to
enable/disbale panel PWM, control backlight level
etc...v2: Moving the CABC bkl functions to new file.(Jani)
v3: Rebase
v4: Rebase
v5: Use
mipi_dsi_dcs_write()instead ofmipi_dsi_dcs_write_buffer()(Jani)
Move DCS macro`s toinclude/video/mipi_display.h(Jani)v6: Rename the file to
intel_dsi_panel_pwm.c
Removing the CABC operationsv7 by Jani: renames, rebases, etc.
v8 by Jani: s/INTEL_BACKLIGHT_CABC/INTEL_BACKLIGHT_DSI_DCS/
Quoted 7 lines
v9 by Jani: rename init function to
intel_dsi_dcs_init_backlight_funcsCc Jani Nikula <[email protected]>Cc Daniel Vetter <[email protected]>Cc Yetunde Adebisi <[email protected]>Signed-off-by Deepak M <[email protected]>Signed-off-by Jani Nikula <[email protected]>
Quoted 285 lines
--- drivers/gpu/drm/i915/Makefile | 1 + drivers/gpu/drm/i915/intel_drv.h | 2 + drivers/gpu/drm/i915/intel_dsi.c | 19 ++- drivers/gpu/drm/i915/intel_dsi.h | 3 + drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c | 157 +++++++++++++++++++++++++ drivers/gpu/drm/i915/intel_panel.c | 4 + 6 files changed, 184 insertions(+), 2 deletions(-) create mode 100644 drivers/gpu/drm/i915/intel_dsi_dcs_backlight.cdrivers/gpu/drm/i915/Makefile +1
-0@@ -86,6 +86,7 @@ i915-y += dvo_ch7017.o \ intel_dp_mst.o \ intel_dp.o \ intel_dsi.o \ + intel_dsi_dcs_backlight.o \ intel_dsi_panel_vbt.o \ intel_dsi_pll.o \ intel_dvo.o \drivers/gpu/drm/i915/intel_drv.h +2
-0@@ -1346,6 +1346,8 @@ void intel_dp_mst_encoder_cleanup(struct intel_digital_port *intel_dig_port);/* intel_dsi.c */ void intel_dsi_init (struct drm_device *dev); +/* intel_dsi_dcs_backlight.c */ +int intel_dsi_dcs_init_backlight_funcs (struct intel_connector *intel_connector);/*
intel_dvo.c*/
voidintel_dvo_init(struct drm_device *dev);drivers/gpu/drm/i915/intel_dsi.c +17
-2@@ -1364,10 +1364,25 @@ void intel_dsi_init(struct drm_device *dev)else intel_encoder->crtc_mask =BIT (PIPE_B ); -if (dev_priv->vbt.dsi.config->dual_link) +if (dev_priv->vbt.dsi.config->dual_link) { intel_dsi->ports =BIT (PORT_A ) |BIT (PORT_C ); -else + +switch (dev_priv->vbt.dsi.config->dl_dcs_backlight_ports) { +case DL_DCS_PORT_A : + intel_dsi->dcs_backlight_ports =BIT (PORT_A ); +break ; +case DL_DCS_PORT_C : + intel_dsi->dcs_backlight_ports =BIT (PORT_C ); +break ; +default : +case DL_DCS_PORT_A_AND_C : + intel_dsi->dcs_backlight_ports =BIT (PORT_A ) |BIT (PORT_C ); +break ; + } + }else { intel_dsi->ports =BIT (port); + intel_dsi->dcs_backlight_ports =BIT (port); + }/* Create a DSI host (and a device) for each port. */ drivers/gpu/drm/i915/intel_dsi.c +0
-0for_each_dsi_port (port, intel_dsi->ports) {drivers/gpu/drm/i915/intel_dsi.h +3
-0@@ -78,6 +78,9 @@ struct intel_dsi {u8 escape_clk_div;u8 dual_link; + +u16 dcs_backlight_ports; +u8 pixel_overlap;u32 port_bits;u32 bw_timer;drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c new file +5
-0@@ -0,0 +1,157 @@ +/* +* Copyright © 2016 Intel Corporation +* +* Permission is hereby granted, free of charge, to any person obtaining a +* copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ * Author: Deepak M <m.deepak at intel.com>
+ */drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c new file +25
-0+ +#include "intel_drv.h" +#include "intel_dsi.h" +#include "i915_drv.h" +#include <video/mipi_display.h> +#include <drm/drm_mipi_dsi.h> + +#define CONTROL_DISPLAY_BCTRL (1 << 5) +#define CONTROL_DISPLAY_DD (1 << 3) +#define CONTROL_DISPLAY_BL (1 << 2) + +#define PANEL_PWM_MAX_VALUE 0xFF + +static u32 dcs_get_backlight (struct intel_connector *connector) +{ +struct intel_encoder *encoder = connector->encoder; +struct intel_dsi *intel_dsi =enc_to_intel_dsi (&encoder->base); +struct mipi_dsi_device *dsi_device; +u8 data; +enum port port; + +/* FIXME: Need to take care of 16 bit brightness level */ +for_each_dsi_port (port, intel_dsi->dcs_backlight_ports) { + dsi_device = intel_dsi->dsi_hosts[port]->device; + mipi_dsi_dcs_read(dsi_device,
MIPI_DCS_GET_DISPLAY_BRIGHTNESS,drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c new file +19
-0+ &data, sizeof(data)); +break ; + } + +return data; +} + +static void dcs_set_backlight (struct intel_connector *connector,u32 level) +{ +struct intel_encoder *encoder = connector->encoder; +struct intel_dsi *intel_dsi =enc_to_intel_dsi (&encoder->base); +struct mipi_dsi_device *dsi_device; +u8 data = level; +enum port port; + +/* FIXME: Need to take care of 16 bit brightness level */ +for_each_dsi_port (port, intel_dsi->dcs_backlight_ports) { + dsi_device = intel_dsi->dsi_hosts[port]->device; + mipi_dsi_dcs_write(dsi_device,
MIPI_DCS_SET_DISPLAY_BRIGHTNESS,drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c new file +19
-0+ &data, sizeof(data)); + } +} + +static void dcs_disable_backlight (struct intel_connector *connector) +{ +struct intel_encoder *encoder = connector->encoder; +struct intel_dsi *intel_dsi =enc_to_intel_dsi (&encoder->base); +struct mipi_dsi_device *dsi_device; +enum port port; + +dcs_set_backlight (connector,0 ); + +for_each_dsi_port (port, intel_dsi->dcs_backlight_ports) { +u8 ctrl =0 ; + + dsi_device = intel_dsi->dsi_hosts[port]->device; + + mipi_dsi_dcs_read(dsi_device,
MIPI_DCS_GET_CONTROL_DISPLAY,drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c new file +7
-0+ &ctrl, sizeof(ctrl)); + + ctrl &= ~CONTROL_DISPLAY_BL ; + ctrl &= ~CONTROL_DISPLAY_DD ; + ctrl &= ~CONTROL_DISPLAY_BCTRL ; + + mipi_dsi_dcs_write(dsi_device,
MIPI_DCS_WRITE_CONTROL_DISPLAY,drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c new file +18
-0+ &ctrl, sizeof(ctrl)); + } +} + +static void dcs_enable_backlight (struct intel_connector *connector) +{ +struct intel_encoder *encoder = connector->encoder; +struct intel_dsi *intel_dsi =enc_to_intel_dsi (&encoder->base); +struct intel_panel *panel = &connector->panel; +struct mipi_dsi_device *dsi_device; +enum port port; + +for_each_dsi_port (port, intel_dsi->dcs_backlight_ports) { +u8 ctrl =0 ; + + dsi_device = intel_dsi->dsi_hosts[port]->device; + + mipi_dsi_dcs_read(dsi_device,
MIPI_DCS_GET_CONTROL_DISPLAY,drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c new file +7
-0+ &ctrl, sizeof(ctrl)); + + ctrl |=CONTROL_DISPLAY_BL ; + ctrl |=CONTROL_DISPLAY_DD ; + ctrl |=CONTROL_DISPLAY_BCTRL ; + + mipi_dsi_dcs_write(dsi_device,
MIPI_DCS_WRITE_CONTROL_DISPLAY,drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c new file +18
-0+ &ctrl, sizeof(ctrl)); + } + +dcs_set_backlight (connector, panel->backlight.level); +} + +static int dcs_setup_backlight (struct intel_connector *connector, +enum pipe unused) +{ +struct intel_panel *panel = &connector->panel; + + panel->backlight.max =PANEL_PWM_MAX_VALUE ; + panel->backlight.level =PANEL_PWM_MAX_VALUE ; + +return 0 ; +} + +int intel_dsi_dcs_init_backlight_funcs(struct intel_connector
*intel_connector)drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c new file +20
-0+{ +struct drm_device *dev = intel_connector->base.dev; +struct drm_i915_private *dev_priv = dev->dev_private; +struct intel_encoder *encoder = intel_connector->encoder; +struct intel_panel *panel = &intel_connector->panel; + +if (dev_priv->vbt.backlight.type !=INTEL_BACKLIGHT_DSI_DCS ) +return -ENODEV ; + +if (WARN_ON (encoder->type !=INTEL_OUTPUT_DSI )) +return -EINVAL ; + + panel->backlight.setup = dcs_setup_backlight; + panel->backlight.enable = dcs_enable_backlight; + panel->backlight.disable = dcs_disable_backlight; + panel->backlight.set = dcs_set_backlight; + panel->backlight.get = dcs_get_backlight; + +return 0 ; +}drivers/gpu/drm/i915/intel_panel.c +1
-0@@ -1722,6 +1722,10 @@ intel_panel_init_backlight_funcs(struct intel_panel *panel) intel_dp_aux_init_backlight_funcs(connector) == 0)return ; + if (connector->base.connector_type ==
DRM_MODE_CONNECTOR_DSI&&drivers/gpu/drm/i915/intel_panel.c +3
-1+ intel_dsi_dcs_init_backlight_funcs(connector) == 0) +return ; +if (IS_BROXTON (dev_priv)) { panel->backlight.setup = bxt_setup_backlight; panel->backlight.enable = bxt_enable_backlight; --
Quoted 1 line
2.1.4
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [PATCH 2/3] drm/i915: Add DCS control for Panel PWM
Quoted 31 lines · YetundeX
Quoted 31 lines
-----Original Message-----
From: Nikula, Jani
Sent: Tuesday, April 26, 2016 2:14 PM
To: [email protected]
Cc: Nikula, Jani; Vetter, Daniel; Adebisi, YetundeX; Deepak, M
Subject: [PATCH 2/3] drm/i915: Add DCS control for Panel PWMIf the source of the backlight PWM is from the
panel then the PWM can be controlled by DCS
command, this patch adds the support to
enable/disbale panel PWM, control backlight level
etc...v2: Moving the CABC bkl functions to new file.(Jani)
v3: Rebase
v4: Rebase
v5: Use
mipi_dsi_dcs_write()instead ofmipi_dsi_dcs_write_buffer()(Jani)
Move DCS macro`s toinclude/video/mipi_display.h(Jani)v6: Rename the file to
intel_dsi_panel_pwm.c
Removing the CABC operationsv7 by Jani: renames, rebases, etc.
v8 by Jani: s/INTEL_BACKLIGHT_CABC/INTEL_BACKLIGHT_DSI_DCS/
v9 by Jani: rename init function to
intel_dsi_dcs_init_backlight_funcs
Quoted 7 lines
Quoted 5 lines
Cc Jani Nikula <[email protected]>Cc Daniel Vetter <[email protected]>Cc Yetunde Adebisi <[email protected]>Signed-off-by Deepak M <[email protected]>Signed-off-by Jani Nikula <[email protected]>Reviewed-by Yetunde Adebisi <[email protected]>
Pushed both to drm-intel-next-queued, thanks for the review.
BR,
Jani.
Quoted 287 lines
Quoted 286 lines
--- drivers/gpu/drm/i915/Makefile | 1 + drivers/gpu/drm/i915/intel_drv.h | 2 + drivers/gpu/drm/i915/intel_dsi.c | 19 ++- drivers/gpu/drm/i915/intel_dsi.h | 3 + drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c | 157 +++++++++++++++++++++++++ drivers/gpu/drm/i915/intel_panel.c | 4 + 6 files changed, 184 insertions(+), 2 deletions(-) create mode 100644 drivers/gpu/drm/i915/intel_dsi_dcs_backlight.cdrivers/gpu/drm/i915/Makefile +1
-0@@ -86,6 +86,7 @@ i915-y += dvo_ch7017.o \ intel_dp_mst.o \ intel_dp.o \ intel_dsi.o \ + intel_dsi_dcs_backlight.o \ intel_dsi_panel_vbt.o \ intel_dsi_pll.o \ intel_dvo.o \drivers/gpu/drm/i915/intel_drv.h +2
-0@@ -1346,6 +1346,8 @@ void intel_dp_mst_encoder_cleanup(struct intel_digital_port *intel_dig_port);/* intel_dsi.c */ void intel_dsi_init (struct drm_device *dev); +/* intel_dsi_dcs_backlight.c */ +int intel_dsi_dcs_init_backlight_funcs (struct intel_connector *intel_connector);/*
intel_dvo.c*/
voidintel_dvo_init(struct drm_device *dev);drivers/gpu/drm/i915/intel_dsi.c +17
-2@@ -1364,10 +1364,25 @@ void intel_dsi_init(struct drm_device *dev)else intel_encoder->crtc_mask =BIT (PIPE_B ); -if (dev_priv->vbt.dsi.config->dual_link) +if (dev_priv->vbt.dsi.config->dual_link) { intel_dsi->ports =BIT (PORT_A ) |BIT (PORT_C ); -else + +switch (dev_priv->vbt.dsi.config->dl_dcs_backlight_ports) { +case DL_DCS_PORT_A : + intel_dsi->dcs_backlight_ports =BIT (PORT_A ); +break ; +case DL_DCS_PORT_C : + intel_dsi->dcs_backlight_ports =BIT (PORT_C ); +break ; +default : +case DL_DCS_PORT_A_AND_C : + intel_dsi->dcs_backlight_ports =BIT (PORT_A ) |BIT (PORT_C ); +break ; + } + }else { intel_dsi->ports =BIT (port); + intel_dsi->dcs_backlight_ports =BIT (port); + }/* Create a DSI host (and a device) for each port. */ drivers/gpu/drm/i915/intel_dsi.c +0
-0for_each_dsi_port (port, intel_dsi->ports) {drivers/gpu/drm/i915/intel_dsi.h +3
-0@@ -78,6 +78,9 @@ struct intel_dsi {u8 escape_clk_div;u8 dual_link; + +u16 dcs_backlight_ports; +u8 pixel_overlap;u32 port_bits;u32 bw_timer;drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c new file +5
-0@@ -0,0 +1,157 @@ +/* +* Copyright © 2016 Intel Corporation +* +* Permission is hereby granted, free of charge, to any person obtaining a +* copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ * Author: Deepak M <m.deepak at intel.com>
+ */drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c new file +25
-0+ +#include "intel_drv.h" +#include "intel_dsi.h" +#include "i915_drv.h" +#include <video/mipi_display.h> +#include <drm/drm_mipi_dsi.h> + +#define CONTROL_DISPLAY_BCTRL (1 << 5) +#define CONTROL_DISPLAY_DD (1 << 3) +#define CONTROL_DISPLAY_BL (1 << 2) + +#define PANEL_PWM_MAX_VALUE 0xFF + +static u32 dcs_get_backlight (struct intel_connector *connector) +{ +struct intel_encoder *encoder = connector->encoder; +struct intel_dsi *intel_dsi =enc_to_intel_dsi (&encoder->base); +struct mipi_dsi_device *dsi_device; +u8 data; +enum port port; + +/* FIXME: Need to take care of 16 bit brightness level */ +for_each_dsi_port (port, intel_dsi->dcs_backlight_ports) { + dsi_device = intel_dsi->dsi_hosts[port]->device; + mipi_dsi_dcs_read(dsi_device,
MIPI_DCS_GET_DISPLAY_BRIGHTNESS,drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c new file +19
-0+ &data, sizeof(data)); +break ; + } + +return data; +} + +static void dcs_set_backlight (struct intel_connector *connector,u32 level) +{ +struct intel_encoder *encoder = connector->encoder; +struct intel_dsi *intel_dsi =enc_to_intel_dsi (&encoder->base); +struct mipi_dsi_device *dsi_device; +u8 data = level; +enum port port; + +/* FIXME: Need to take care of 16 bit brightness level */ +for_each_dsi_port (port, intel_dsi->dcs_backlight_ports) { + dsi_device = intel_dsi->dsi_hosts[port]->device; + mipi_dsi_dcs_write(dsi_device,
MIPI_DCS_SET_DISPLAY_BRIGHTNESS,drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c new file +19
-0+ &data, sizeof(data)); + } +} + +static void dcs_disable_backlight (struct intel_connector *connector) +{ +struct intel_encoder *encoder = connector->encoder; +struct intel_dsi *intel_dsi =enc_to_intel_dsi (&encoder->base); +struct mipi_dsi_device *dsi_device; +enum port port; + +dcs_set_backlight (connector,0 ); + +for_each_dsi_port (port, intel_dsi->dcs_backlight_ports) { +u8 ctrl =0 ; + + dsi_device = intel_dsi->dsi_hosts[port]->device; + + mipi_dsi_dcs_read(dsi_device,
MIPI_DCS_GET_CONTROL_DISPLAY,drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c new file +7
-0+ &ctrl, sizeof(ctrl)); + + ctrl &= ~CONTROL_DISPLAY_BL ; + ctrl &= ~CONTROL_DISPLAY_DD ; + ctrl &= ~CONTROL_DISPLAY_BCTRL ; + + mipi_dsi_dcs_write(dsi_device,
MIPI_DCS_WRITE_CONTROL_DISPLAY,drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c new file +18
-0+ &ctrl, sizeof(ctrl)); + } +} + +static void dcs_enable_backlight (struct intel_connector *connector) +{ +struct intel_encoder *encoder = connector->encoder; +struct intel_dsi *intel_dsi =enc_to_intel_dsi (&encoder->base); +struct intel_panel *panel = &connector->panel; +struct mipi_dsi_device *dsi_device; +enum port port; + +for_each_dsi_port (port, intel_dsi->dcs_backlight_ports) { +u8 ctrl =0 ; + + dsi_device = intel_dsi->dsi_hosts[port]->device; + + mipi_dsi_dcs_read(dsi_device,
MIPI_DCS_GET_CONTROL_DISPLAY,drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c new file +7
-0+ &ctrl, sizeof(ctrl)); + + ctrl |=CONTROL_DISPLAY_BL ; + ctrl |=CONTROL_DISPLAY_DD ; + ctrl |=CONTROL_DISPLAY_BCTRL ; + + mipi_dsi_dcs_write(dsi_device,
MIPI_DCS_WRITE_CONTROL_DISPLAY,drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c new file +18
-0+ &ctrl, sizeof(ctrl)); + } + +dcs_set_backlight (connector, panel->backlight.level); +} + +static int dcs_setup_backlight (struct intel_connector *connector, +enum pipe unused) +{ +struct intel_panel *panel = &connector->panel; + + panel->backlight.max =PANEL_PWM_MAX_VALUE ; + panel->backlight.level =PANEL_PWM_MAX_VALUE ; + +return 0 ; +} + +int intel_dsi_dcs_init_backlight_funcs(struct intel_connector
*intel_connector)drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c new file +20
-0+{ +struct drm_device *dev = intel_connector->base.dev; +struct drm_i915_private *dev_priv = dev->dev_private; +struct intel_encoder *encoder = intel_connector->encoder; +struct intel_panel *panel = &intel_connector->panel; + +if (dev_priv->vbt.backlight.type !=INTEL_BACKLIGHT_DSI_DCS ) +return -ENODEV ; + +if (WARN_ON (encoder->type !=INTEL_OUTPUT_DSI )) +return -EINVAL ; + + panel->backlight.setup = dcs_setup_backlight; + panel->backlight.enable = dcs_enable_backlight; + panel->backlight.disable = dcs_disable_backlight; + panel->backlight.set = dcs_set_backlight; + panel->backlight.get = dcs_get_backlight; + +return 0 ; +}drivers/gpu/drm/i915/intel_panel.c +1
-0@@ -1722,6 +1722,10 @@ intel_panel_init_backlight_funcs(struct intel_panel *panel) intel_dp_aux_init_backlight_funcs(connector) == 0)return ; + if (connector->base.connector_type ==
DRM_MODE_CONNECTOR_DSI&&drivers/gpu/drm/i915/intel_panel.c +3
-1+ intel_dsi_dcs_init_backlight_funcs(connector) == 0) +return ; +if (IS_BROXTON (dev_priv)) { panel->backlight.setup = bxt_setup_backlight; panel->backlight.enable = bxt_enable_backlight; --2.1.4
Signature · 5 lines
Jani Nikula, Intel Open Source Technology Center _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
PATCH 3/3 CABC support for Panel PWM backlight control
In reply to Jani NikulaFrom: Deepak M <[email protected]>
In CABC (Content Adaptive Brightness Control) content grey level scale can be increased while simultaneously decreasing brightness of the backlight to achieve same perceived brightness.
The CABC is not standardized and panel vendors are free to follow their implementation. The CABC implementaion here assumes that the panels use standard SW register for control.
CABC is supported only when the PWM source for backlight is from the panel.
v2 by Jani: rebase, renames, check cabc support earlier, etc.
--- drivers/gpu/drm/i915/intel_dsi.c | 17 +++++++++++++++++ drivers/gpu/drm/i915/intel_dsi.h | 1 + drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c | 22 ++++++++++++++++++++++ 3 files changed, 40 insertions(+)
drivers/gpu/drm/i915/intel_dsi.c +17 -0
@@ -1379,11 +1379,28 @@ void intel_dsi_init(struct drm_device *dev) intel_dsi->dcs_backlight_ports =BIT (PORT_A ) |BIT (PORT_C );break ; } + +switch (dev_priv->vbt.dsi.config->dl_dcs_cabc_ports) { +case DL_DCS_PORT_A : + intel_dsi->dcs_cabc_ports =BIT (PORT_A ); +break ; +case DL_DCS_PORT_C : + intel_dsi->dcs_cabc_ports =BIT (PORT_C ); +break ; +default : +case DL_DCS_PORT_A_AND_C : + intel_dsi->dcs_cabc_ports =BIT (PORT_A ) |BIT (PORT_C ); +break ; + } }else { intel_dsi->ports =BIT (port); intel_dsi->dcs_backlight_ports =BIT (port); + intel_dsi->dcs_cabc_ports =BIT (port); } +if (!dev_priv->vbt.dsi.config->cabc_supported) + intel_dsi->dcs_cabc_ports =0 ; +/* Create a DSI host (and a device) for each port. */ for_each_dsi_port (port, intel_dsi->ports) {struct intel_dsi_host *host;
drivers/gpu/drm/i915/intel_dsi.h +1 -0
@@ -80,6 +80,7 @@ struct intel_dsi {u8 dual_link;u16 dcs_backlight_ports; +u16 dcs_cabc_ports;u8 pixel_overlap;u32 port_bits;
drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c +22 -0
@@ -33,6 +33,12 @@#define CONTROL_DISPLAY_DD (1 << 3)#define CONTROL_DISPLAY_BL (1 << 2) +#define POWER_SAVE_OFF (0 << 0) +#define POWER_SAVE_LOW (1 << 0) +#define POWER_SAVE_MEDIUM (2 << 0) +#define POWER_SAVE_HIGH (3 << 0) +#define POWER_SAVE_OUTDOOR_MODE (4 << 0) +#define PANEL_PWM_MAX_VALUE 0xFFstatic u32 dcs_get_backlight (struct intel_connector *connector)
@@ -79,6 +85,14 @@ static void dcs_disable_backlight(struct intel_connector *connector)dcs_set_backlight (connector,0 ); +for_each_dsi_port (port, intel_dsi->dcs_cabc_ports) { +u8 cabc =POWER_SAVE_OFF ; + + dsi_device = intel_dsi->dsi_hosts[port]->device; +mipi_dsi_dcs_write (dsi_device,MIPI_DCS_WRITE_POWER_SAVE , + &cabc,sizeof (cabc)); + } +for_each_dsi_port (port, intel_dsi->dcs_backlight_ports) {u8 ctrl =0 ;
@@ -120,6 +134,14 @@ static void dcs_enable_backlight(struct intel_connector *connector) &ctrl, sizeof(ctrl)); } +for_each_dsi_port (port, intel_dsi->dcs_cabc_ports) { +u8 cabc =POWER_SAVE_MEDIUM ; + + dsi_device = intel_dsi->dsi_hosts[port]->device; +mipi_dsi_dcs_write (dsi_device,MIPI_DCS_WRITE_POWER_SAVE , + &cabc,sizeof (cabc)); + } +dcs_set_backlight (connector, panel->backlight.level); }
Signature · 6 lines
2.1.4 _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
kbuild test robot
build botRe: [PATCH 3/3] CABC support for Panel PWM backlight control
compiler: reproduce:
Hi,
[auto build test ERROR on drm-intel/for-linux-next]
[cannot apply to v4.6-rc5 next-20160426]
[if your patch is applied to the wrong git tree, please drop us a note to help improving the system]
url: https://github.com/0day-ci/linux/commits/Jani-Nikula/drm-i915-dsi-dcs-backlight-control/20160426-211653 base: git://anongit.freedesktop.org/drm-intel for-linux-next config: i386-randconfig-s0-201617 (attached as .config) compiler: reproduce: # save the attached .config to linux build tree make ARCH=i386
All errors (new ones prefixed by >>):
drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c: In function 'dcs_get_backlight':
drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c:55:33: error: 'MIPI_DCS_GET_DISPLAY_BRIGHTNESS' undeclared (first use in this function)
mipi_dsi_dcs_read(dsi_device, MIPI_DCS_GET_DISPLAY_BRIGHTNESS,
^
drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c:55:33: note: each undeclared identifier is reported only once for each function it appears in
drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c: In function 'dcs_set_backlight':
drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c:74:34: error: 'MIPI_DCS_SET_DISPLAY_BRIGHTNESS' undeclared (first use in this function)
mipi_dsi_dcs_write(dsi_device, MIPI_DCS_SET_DISPLAY_BRIGHTNESS,
^
drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c: In function 'dcs_disable_backlight':
>> drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c:92:34: error: 'MIPI_DCS_WRITE_POWER_SAVE' undeclared (first use in this function)
mipi_dsi_dcs_write(dsi_device, MIPI_DCS_WRITE_POWER_SAVE,
^
drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c:101:33: error: 'MIPI_DCS_GET_CONTROL_DISPLAY' undeclared (first use in this function)
mipi_dsi_dcs_read(dsi_device, MIPI_DCS_GET_CONTROL_DISPLAY,
^
drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c:108:34: error: 'MIPI_DCS_WRITE_CONTROL_DISPLAY' undeclared (first use in this function)
mipi_dsi_dcs_write(dsi_device, MIPI_DCS_WRITE_CONTROL_DISPLAY,
^
drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c: In function 'dcs_enable_backlight':
drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c:126:33: error: 'MIPI_DCS_GET_CONTROL_DISPLAY' undeclared (first use in this function)
mipi_dsi_dcs_read(dsi_device, MIPI_DCS_GET_CONTROL_DISPLAY,
^
drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c:133:34: error: 'MIPI_DCS_WRITE_CONTROL_DISPLAY' undeclared (first use in this function)
mipi_dsi_dcs_write(dsi_device, MIPI_DCS_WRITE_CONTROL_DISPLAY,
^
drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c:141:34: error: 'MIPI_DCS_WRITE_POWER_SAVE' undeclared (first use in this function)
mipi_dsi_dcs_write(dsi_device, MIPI_DCS_WRITE_POWER_SAVE,
^vim +/MIPI_DCS_WRITE_POWER_SAVE +92 drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c
49 u8 data;
50 enum port port;
51
52 /* FIXME: Need to take care of 16 bit brightness level */
53 for_each_dsi_port(port, intel_dsi->dcs_backlight_ports) {
54 dsi_device = intel_dsi->dsi_hosts[port]->device;
> 55 mipi_dsi_dcs_read(dsi_device, MIPI_DCS_GET_DISPLAY_BRIGHTNESS,
56 &data, sizeof(data));
57 break;
58 }
59
60 return data;
61 }
62
63 static void dcs_set_backlight(struct intel_connector *connector, u32 level)
64 {
65 struct intel_encoder *encoder = connector->encoder;
66 struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base);
67 struct mipi_dsi_device *dsi_device;
68 u8 data = level;
69 enum port port;
70
71 /* FIXME: Need to take care of 16 bit brightness level */
72 for_each_dsi_port(port, intel_dsi->dcs_backlight_ports) {
73 dsi_device = intel_dsi->dsi_hosts[port]->device;
74 mipi_dsi_dcs_write(dsi_device, MIPI_DCS_SET_DISPLAY_BRIGHTNESS,
75 &data, sizeof(data));
76 }
77 }
78
79 static void dcs_disable_backlight(struct intel_connector *connector)
80 {
81 struct intel_encoder *encoder = connector->encoder;
82 struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base);
83 struct mipi_dsi_device *dsi_device;
84 enum port port;
85
86 dcs_set_backlight(connector, 0);
87
88 for_each_dsi_port(port, intel_dsi->dcs_cabc_ports) {
89 u8 cabc = POWER_SAVE_OFF;
90
91 dsi_device = intel_dsi->dsi_hosts[port]->device;
> 92 mipi_dsi_dcs_write(dsi_device, MIPI_DCS_WRITE_POWER_SAVE,
93 &cabc, sizeof(cabc));
94 }
95 ---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Patchwork
CI✗ Fi.CI.BAT: warning for drm/i915/dsi: dcs backlight control
In reply to Jani Nikula== Series Details ==
== Series Details ==
Series: drm/i915/dsi: dcs backlight control
URL : https://patchwork.freedesktop.org/series/6335/
State : warning
== Summary ==
Series 6335v1 drm/i915/dsi: dcs backlight control
http://patchwork.freedesktop.org/api/1.0/series/6335/revisions/1/mbox/
Test gem_sync:
Subgroup basic-each:
pass -> DMESG-WARN (bsw-nuc-2)
Test kms_pipe_crc_basic:
Subgroup hang-read-crc-pipe-b:
incomplete -> DMESG-WARN (snb-dellxps)
Test pm_rpm:
Subgroup basic-pci-d3-state:
pass -> DMESG-WARN (bsw-nuc-2)bdw-nuci7 total:200 pass:188 dwarn:0 dfail:0 fail:0 skip:12 bdw-ultra total:200 pass:175 dwarn:0 dfail:0 fail:0 skip:25 bsw-nuc-2 total:199 pass:156 dwarn:2 dfail:0 fail:0 skip:41 byt-nuc total:199 pass:158 dwarn:0 dfail:0 fail:0 skip:41 hsw-brixbox total:200 pass:174 dwarn:0 dfail:0 fail:0 skip:26 hsw-gt2 total:200 pass:178 dwarn:0 dfail:0 fail:1 skip:21 ivb-t430s total:200 pass:169 dwarn:0 dfail:0 fail:0 skip:31 skl-i7k-2 total:200 pass:173 dwarn:0 dfail:0 fail:0 skip:27 skl-nuci5 total:200 pass:189 dwarn:0 dfail:0 fail:0 skip:11 snb-dellxps total:200 pass:157 dwarn:1 dfail:0 fail:0 skip:42 snb-x220t total:200 pass:158 dwarn:0 dfail:0 fail:1 skip:41
Results at /archive/results/CI_IGT_test/Patchwork_2075/
e005db1cb2c60d18abe837ac683d8993ea77b239 drm-intel-nightly: 2016y-04m-26d-12h-51m-57s UTC integration manifest 6cfea01 CABC support for Panel PWM backlight control
25bbaa9 drm/i915: Add DCS control for Panel PWM
47a8d76 drm/i915: Parse LFP brightness control field in VBT
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx