aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThierry Reding <treding@nvidia.com>2014-08-05 05:20:25 -0400
committerThierry Reding <treding@nvidia.com>2014-11-13 07:56:10 -0500
commit3b46d4a0def157e77000e252bf5caae7d3defe1b (patch)
treeac24dade46621c6dc0b9adeb65fef358fd7b0e34
parent5cc0af16fc08cfb749fd0635e5e9187c31826827 (diff)
drm/dsi: Implement DCS set_{column,page}_address commands
Provide small convenience wrappers to set the column and page extents of the frame memory accessed by the host processors. Reviewed-by: Sean Paul <seanpaul@chromium.org> Signed-off-by: Thierry Reding <treding@nvidia.com>
-rw-r--r--drivers/gpu/drm/drm_mipi_dsi.c48
-rw-r--r--include/drm/drm_mipi_dsi.h4
2 files changed, 52 insertions, 0 deletions
diff --git a/drivers/gpu/drm/drm_mipi_dsi.c b/drivers/gpu/drm/drm_mipi_dsi.c
index eb5ed0bcba65..2f39372e58b6 100644
--- a/drivers/gpu/drm/drm_mipi_dsi.c
+++ b/drivers/gpu/drm/drm_mipi_dsi.c
@@ -729,6 +729,54 @@ int mipi_dsi_dcs_set_display_on(struct mipi_dsi_device *dsi)
729EXPORT_SYMBOL(mipi_dsi_dcs_set_display_on); 729EXPORT_SYMBOL(mipi_dsi_dcs_set_display_on);
730 730
731/** 731/**
732 * mipi_dsi_dcs_set_column_address() - define the column extent of the frame
733 * memory accessed by the host processor
734 * @dsi: DSI peripheral device
735 * @start: first column of frame memory
736 * @end: last column of frame memory
737 *
738 * Return: 0 on success or a negative error code on failure.
739 */
740int mipi_dsi_dcs_set_column_address(struct mipi_dsi_device *dsi, u16 start,
741 u16 end)
742{
743 u8 payload[4] = { start >> 8, start & 0xff, end >> 8, end & 0xff };
744 ssize_t err;
745
746 err = mipi_dsi_dcs_write(dsi, MIPI_DCS_SET_COLUMN_ADDRESS, payload,
747 sizeof(payload));
748 if (err < 0)
749 return err;
750
751 return 0;
752}
753EXPORT_SYMBOL(mipi_dsi_dcs_set_column_address);
754
755/**
756 * mipi_dsi_dcs_set_page_address() - define the page extent of the frame
757 * memory accessed by the host processor
758 * @dsi: DSI peripheral device
759 * @start: first page of frame memory
760 * @end: last page of frame memory
761 *
762 * Return: 0 on success or a negative error code on failure.
763 */
764int mipi_dsi_dcs_set_page_address(struct mipi_dsi_device *dsi, u16 start,
765 u16 end)
766{
767 u8 payload[4] = { start >> 8, start & 0xff, end >> 8, end & 0xff };
768 ssize_t err;
769
770 err = mipi_dsi_dcs_write(dsi, MIPI_DCS_SET_PAGE_ADDRESS, payload,
771 sizeof(payload));
772 if (err < 0)
773 return err;
774
775 return 0;
776}
777EXPORT_SYMBOL(mipi_dsi_dcs_set_page_address);
778
779/**
732 * mipi_dsi_dcs_set_tear_off() - turn off the display module's Tearing Effect 780 * mipi_dsi_dcs_set_tear_off() - turn off the display module's Tearing Effect
733 * output signal on the TE signal line 781 * output signal on the TE signal line
734 * @dsi: DSI peripheral device 782 * @dsi: DSI peripheral device
diff --git a/include/drm/drm_mipi_dsi.h b/include/drm/drm_mipi_dsi.h
index 79927f2d4b6c..061a792daf7d 100644
--- a/include/drm/drm_mipi_dsi.h
+++ b/include/drm/drm_mipi_dsi.h
@@ -205,6 +205,10 @@ int mipi_dsi_dcs_enter_sleep_mode(struct mipi_dsi_device *dsi);
205int mipi_dsi_dcs_exit_sleep_mode(struct mipi_dsi_device *dsi); 205int mipi_dsi_dcs_exit_sleep_mode(struct mipi_dsi_device *dsi);
206int mipi_dsi_dcs_set_display_off(struct mipi_dsi_device *dsi); 206int mipi_dsi_dcs_set_display_off(struct mipi_dsi_device *dsi);
207int mipi_dsi_dcs_set_display_on(struct mipi_dsi_device *dsi); 207int mipi_dsi_dcs_set_display_on(struct mipi_dsi_device *dsi);
208int mipi_dsi_dcs_set_column_address(struct mipi_dsi_device *dsi, u16 start,
209 u16 end);
210int mipi_dsi_dcs_set_page_address(struct mipi_dsi_device *dsi, u16 start,
211 u16 end);
208int mipi_dsi_dcs_set_tear_off(struct mipi_dsi_device *dsi); 212int mipi_dsi_dcs_set_tear_off(struct mipi_dsi_device *dsi);
209int mipi_dsi_dcs_set_tear_on(struct mipi_dsi_device *dsi, 213int mipi_dsi_dcs_set_tear_on(struct mipi_dsi_device *dsi,
210 enum mipi_dsi_dcs_tear_mode mode); 214 enum mipi_dsi_dcs_tear_mode mode);