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);

Reply via email to