drm/dsi: Implement DCS get_power_mode command
Provide a small convenience wrapper that transmits a DCS get_power_mode command. A set of bitmasks for the mode bits is also provided. Acked-by: Andrzej Hajda <a.hajda@samsung.com> Reviewed-by: Sean Paul <seanpaul@chromium.org> Signed-off-by: Thierry Reding <treding@nvidia.com>
This commit is contained in:
parent
2f16b89737
commit
3d9a8fcf1c
2 changed files with 32 additions and 0 deletions
|
@ -602,6 +602,31 @@ int mipi_dsi_dcs_soft_reset(struct mipi_dsi_device *dsi)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(mipi_dsi_dcs_soft_reset);
|
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) {
|
||||||
|
if (err == 0)
|
||||||
|
err = -ENODATA;
|
||||||
|
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(mipi_dsi_dcs_get_power_mode);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* mipi_dsi_dcs_enter_sleep_mode() - disable all unnecessary blocks inside the
|
* mipi_dsi_dcs_enter_sleep_mode() - disable all unnecessary blocks inside the
|
||||||
* display module except interface communication
|
* display module except interface communication
|
||||||
|
|
|
@ -185,6 +185,12 @@ enum mipi_dsi_dcs_tear_mode {
|
||||||
MIPI_DSI_DCS_TEAR_MODE_VHBLANK,
|
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,
|
ssize_t mipi_dsi_dcs_write_buffer(struct mipi_dsi_device *dsi,
|
||||||
const void *data, size_t len);
|
const void *data, size_t len);
|
||||||
ssize_t mipi_dsi_dcs_write(struct mipi_dsi_device *dsi, u8 cmd,
|
ssize_t mipi_dsi_dcs_write(struct mipi_dsi_device *dsi, u8 cmd,
|
||||||
|
@ -193,6 +199,7 @@ ssize_t mipi_dsi_dcs_read(struct mipi_dsi_device *dsi, u8 cmd, void *data,
|
||||||
size_t len);
|
size_t len);
|
||||||
int mipi_dsi_dcs_nop(struct mipi_dsi_device *dsi);
|
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_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_enter_sleep_mode(struct mipi_dsi_device *dsi);
|
||||||
int mipi_dsi_dcs_exit_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);
|
int mipi_dsi_dcs_set_display_off(struct mipi_dsi_device *dsi);
|
||||||
|
|
Loading…
Add table
Reference in a new issue