diff options
author | Jani Nikula <jani.nikula@intel.com> | 2016-03-16 06:21:40 -0400 |
---|---|---|
committer | Jani Nikula <jani.nikula@intel.com> | 2016-03-16 11:55:52 -0400 |
commit | 1e78aa014b84ff23f99daa0e0832b01337244062 (patch) | |
tree | 195618d891b7c536205f460eb6c239a09cb708d5 /drivers/gpu/drm/i915/intel_dsi.c | |
parent | 42c151e65e80d22b611ba07812374ed726ebb947 (diff) |
drm/i915/dsi: start using enum mipi_dsi_pixel_format
A small step moving us closer to DRM MIPI DSI code. Use enum
mipi_dsi_pixel_format instead of our own. The first benefit is being
able to use common mipi_dsi_pixel_format_to_bpp().
There's a little back and forth conversion with the VBT -> enum ->
register, since we have just shoved the VBT value into the register
directly. Longer term, all the VBT parsing and deciphering should be
done in intel_bios.c, and abstracted there.
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1458123700-16003-2-git-send-email-jani.nikula@intel.com
Diffstat (limited to 'drivers/gpu/drm/i915/intel_dsi.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_dsi.c | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c index 01b8e9f4c272..ea78b0bf7e14 100644 --- a/drivers/gpu/drm/i915/intel_dsi.c +++ b/drivers/gpu/drm/i915/intel_dsi.c | |||
@@ -787,7 +787,7 @@ static void set_dsi_timings(struct drm_encoder *encoder, | |||
787 | struct drm_i915_private *dev_priv = dev->dev_private; | 787 | struct drm_i915_private *dev_priv = dev->dev_private; |
788 | struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); | 788 | struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); |
789 | enum port port; | 789 | enum port port; |
790 | unsigned int bpp = dsi_pixel_format_bpp(intel_dsi->pixel_format); | 790 | unsigned int bpp = mipi_dsi_pixel_format_to_bpp(intel_dsi->pixel_format); |
791 | unsigned int lane_count = intel_dsi->lane_count; | 791 | unsigned int lane_count = intel_dsi->lane_count; |
792 | 792 | ||
793 | u16 hactive, hfp, hsync, hbp, vfp, vsync, vbp; | 793 | u16 hactive, hfp, hsync, hbp, vfp, vsync, vbp; |
@@ -849,6 +849,23 @@ static void set_dsi_timings(struct drm_encoder *encoder, | |||
849 | } | 849 | } |
850 | } | 850 | } |
851 | 851 | ||
852 | static u32 pixel_format_to_reg(enum mipi_dsi_pixel_format fmt) | ||
853 | { | ||
854 | switch (fmt) { | ||
855 | case MIPI_DSI_FMT_RGB888: | ||
856 | return VID_MODE_FORMAT_RGB888; | ||
857 | case MIPI_DSI_FMT_RGB666: | ||
858 | return VID_MODE_FORMAT_RGB666; | ||
859 | case MIPI_DSI_FMT_RGB666_PACKED: | ||
860 | return VID_MODE_FORMAT_RGB666_PACKED; | ||
861 | case MIPI_DSI_FMT_RGB565: | ||
862 | return VID_MODE_FORMAT_RGB565; | ||
863 | default: | ||
864 | MISSING_CASE(fmt); | ||
865 | return VID_MODE_FORMAT_RGB666; | ||
866 | } | ||
867 | } | ||
868 | |||
852 | static void intel_dsi_prepare(struct intel_encoder *intel_encoder) | 869 | static void intel_dsi_prepare(struct intel_encoder *intel_encoder) |
853 | { | 870 | { |
854 | struct drm_encoder *encoder = &intel_encoder->base; | 871 | struct drm_encoder *encoder = &intel_encoder->base; |
@@ -858,7 +875,7 @@ static void intel_dsi_prepare(struct intel_encoder *intel_encoder) | |||
858 | struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); | 875 | struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); |
859 | const struct drm_display_mode *adjusted_mode = &intel_crtc->config->base.adjusted_mode; | 876 | const struct drm_display_mode *adjusted_mode = &intel_crtc->config->base.adjusted_mode; |
860 | enum port port; | 877 | enum port port; |
861 | unsigned int bpp = dsi_pixel_format_bpp(intel_dsi->pixel_format); | 878 | unsigned int bpp = mipi_dsi_pixel_format_to_bpp(intel_dsi->pixel_format); |
862 | u32 val, tmp; | 879 | u32 val, tmp; |
863 | u16 mode_hdisplay; | 880 | u16 mode_hdisplay; |
864 | 881 | ||
@@ -917,9 +934,7 @@ static void intel_dsi_prepare(struct intel_encoder *intel_encoder) | |||
917 | val |= CMD_MODE_DATA_WIDTH_8_BIT; /* XXX */ | 934 | val |= CMD_MODE_DATA_WIDTH_8_BIT; /* XXX */ |
918 | } else { | 935 | } else { |
919 | val |= intel_dsi->channel << VID_MODE_CHANNEL_NUMBER_SHIFT; | 936 | val |= intel_dsi->channel << VID_MODE_CHANNEL_NUMBER_SHIFT; |
920 | 937 | val |= pixel_format_to_reg(intel_dsi->pixel_format); | |
921 | /* XXX: cross-check bpp vs. pixel format? */ | ||
922 | val |= intel_dsi->pixel_format; | ||
923 | } | 938 | } |
924 | 939 | ||
925 | tmp = 0; | 940 | tmp = 0; |