[PATCH 10/15] drm/dsi: Implement DCS get_power_mode command
Andrzej Hajda
a.hajda at samsung.com
Tue Oct 21 02:48:08 PDT 2014
On 10/13/2014 12:16 PM, Thierry Reding wrote:
> From: Thierry Reding <treding at nvidia.com>
>
> Provide a small convenience wrapper that transmits a DCS get_power_mode
> command. A set of bitmasks for the mode bits is also provided.
>
> Signed-off-by: Thierry Reding <treding at nvidia.com>
Besides one nitpick below.
Acked-by: Andrzej Hajda <a.hajda at samsung.com>
---
drivers/gpu/drm/drm_mipi_dsi.c | 21 +++++++++++++++++++++
include/drm/drm_mipi_dsi.h | 7 +++++++
2 files changed, 28 insertions(+)
diff --git a/drivers/gpu/drm/drm_mipi_dsi.c b/drivers/gpu/drm/drm_mipi_dsi.c
index 60bd68b520ae..4e016a6a9fc3 100644
--- a/drivers/gpu/drm/drm_mipi_dsi.c
+++ b/drivers/gpu/drm/drm_mipi_dsi.c
@@ -553,6 +553,27 @@ int mipi_dsi_dcs_soft_reset(struct mipi_dsi_device *dsi)
EXPORT_SYMBOL(mipi_dsi_dcs_soft_reset);
/**
+ * mipi_dsi_dcs_get_power_mode() - query the display module's current power
+ * mode
+ * @dsi: DSI peripheral device
+ * @mode: return location for the current power mode
+ *
+ * Return: 0 on success or a negative error code on failure.
+ */
+int mipi_dsi_dcs_get_power_mode(struct mipi_dsi_device *dsi, u8 *mode)
+{
+ ssize_t err;
+
+ err = mipi_dsi_dcs_read(dsi, MIPI_DCS_GET_POWER_MODE, mode,
+ sizeof(*mode));
+ if (err < 0)
+ return err;
+
+ return 0;
Maybe better would be:
if (err == 1)
return 0;
return err < 0 ? err : -ENODATA;
Or sth similar.
I wonder also if it would not be better to make the function inline ?
> +}
> +EXPORT_SYMBOL(mipi_dsi_dcs_get_power_mode);
> +
> +/**
> * mipi_dsi_dcs_enter_sleep_mode() - disable all unnecessary blocks inside the
> * display module except interface communication
> * @dsi: DSI peripheral device
> diff --git a/include/drm/drm_mipi_dsi.h b/include/drm/drm_mipi_dsi.h
> index 2afbd5853f78..b659b99ac890 100644
> --- a/include/drm/drm_mipi_dsi.h
> +++ b/include/drm/drm_mipi_dsi.h
> @@ -164,6 +164,12 @@ enum mipi_dsi_dcs_tear_mode {
> MIPI_DSI_DCS_TEAR_MODE_VHBLANK,
> };
>
> +#define MIPI_DSI_DCS_POWER_MODE_DISPLAY (1 << 2)
> +#define MIPI_DSI_DCS_POWER_MODE_NORMAL (1 << 3)
> +#define MIPI_DSI_DCS_POWER_MODE_SLEEP (1 << 4)
> +#define MIPI_DSI_DCS_POWER_MODE_PARTIAL (1 << 5)
> +#define MIPI_DSI_DCS_POWER_MODE_IDLE (1 << 6)
> +
> ssize_t mipi_dsi_dcs_write_buffer(struct mipi_dsi_device *dsi,
> const void *data, size_t len);
> ssize_t mipi_dsi_dcs_write(struct mipi_dsi_device *dsi, u8 cmd,
> @@ -172,6 +178,7 @@ ssize_t mipi_dsi_dcs_read(struct mipi_dsi_device *dsi, u8 cmd, void *data,
> size_t len);
> int mipi_dsi_dcs_nop(struct mipi_dsi_device *dsi);
> int mipi_dsi_dcs_soft_reset(struct mipi_dsi_device *dsi);
> +int mipi_dsi_dcs_get_power_mode(struct mipi_dsi_device *dsi, u8 *mode);
> int mipi_dsi_dcs_enter_sleep_mode(struct mipi_dsi_device *dsi);
> int mipi_dsi_dcs_exit_sleep_mode(struct mipi_dsi_device *dsi);
> int mipi_dsi_dcs_set_display_off(struct mipi_dsi_device *dsi);
More information about the dri-devel
mailing list