Message ID | 883faade74d2e598b143221ccc7df6daf4393a13.1461676337.git.jani.nikula@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
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
diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c index 2209f9fe6c4b..a2306737bc57 100644 --- a/drivers/gpu/drm/i915/intel_dsi.c +++ b/drivers/gpu/drm/i915/intel_dsi.c @@ -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; diff --git a/drivers/gpu/drm/i915/intel_dsi.h b/drivers/gpu/drm/i915/intel_dsi.h index b00fb3fbb0b1..5967ea6d6045 100644 --- a/drivers/gpu/drm/i915/intel_dsi.h +++ b/drivers/gpu/drm/i915/intel_dsi.h @@ -80,6 +80,7 @@ struct intel_dsi { u8 dual_link; u16 dcs_backlight_ports; + u16 dcs_cabc_ports; u8 pixel_overlap; u32 port_bits; diff --git a/drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c b/drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c index 7f9bbffa7f8c..f0dc427743f8 100644 --- a/drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c +++ b/drivers/gpu/drm/i915/intel_dsi_dcs_backlight.c @@ -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 0xFF static 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); }