diff options
| author | Thierry Reding <treding@nvidia.com> | 2014-08-05 05:20:25 -0400 |
|---|---|---|
| committer | Thierry Reding <treding@nvidia.com> | 2014-11-13 07:56:10 -0500 |
| commit | 3b46d4a0def157e77000e252bf5caae7d3defe1b (patch) | |
| tree | ac24dade46621c6dc0b9adeb65fef358fd7b0e34 | |
| parent | 5cc0af16fc08cfb749fd0635e5e9187c31826827 (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.c | 48 | ||||
| -rw-r--r-- | include/drm/drm_mipi_dsi.h | 4 |
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) | |||
| 729 | EXPORT_SYMBOL(mipi_dsi_dcs_set_display_on); | 729 | EXPORT_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 | */ | ||
| 740 | int 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 | } | ||
| 753 | EXPORT_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 | */ | ||
| 764 | int 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 | } | ||
| 777 | EXPORT_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); | |||
| 205 | int mipi_dsi_dcs_exit_sleep_mode(struct mipi_dsi_device *dsi); | 205 | int mipi_dsi_dcs_exit_sleep_mode(struct mipi_dsi_device *dsi); |
| 206 | int mipi_dsi_dcs_set_display_off(struct mipi_dsi_device *dsi); | 206 | int mipi_dsi_dcs_set_display_off(struct mipi_dsi_device *dsi); |
| 207 | int mipi_dsi_dcs_set_display_on(struct mipi_dsi_device *dsi); | 207 | int mipi_dsi_dcs_set_display_on(struct mipi_dsi_device *dsi); |
| 208 | int mipi_dsi_dcs_set_column_address(struct mipi_dsi_device *dsi, u16 start, | ||
| 209 | u16 end); | ||
| 210 | int mipi_dsi_dcs_set_page_address(struct mipi_dsi_device *dsi, u16 start, | ||
| 211 | u16 end); | ||
| 208 | int mipi_dsi_dcs_set_tear_off(struct mipi_dsi_device *dsi); | 212 | int mipi_dsi_dcs_set_tear_off(struct mipi_dsi_device *dsi); |
| 209 | int mipi_dsi_dcs_set_tear_on(struct mipi_dsi_device *dsi, | 213 | int 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); |
