|
@@ -556,6 +556,124 @@ ssize_t mipi_dsi_dcs_read(struct mipi_dsi_device *dsi, u8 cmd, void *data,
|
|
|
}
|
|
|
EXPORT_SYMBOL(mipi_dsi_dcs_read);
|
|
|
|
|
|
+/**
|
|
|
+ * mipi_dsi_dcs_enter_sleep_mode() - disable all unnecessary blocks inside the
|
|
|
+ * display module except interface communication
|
|
|
+ * @dsi: DSI peripheral device
|
|
|
+ *
|
|
|
+ * Return: 0 on success or a negative error code on failure.
|
|
|
+ */
|
|
|
+int mipi_dsi_dcs_enter_sleep_mode(struct mipi_dsi_device *dsi)
|
|
|
+{
|
|
|
+ ssize_t err;
|
|
|
+
|
|
|
+ err = mipi_dsi_dcs_write(dsi, MIPI_DCS_ENTER_SLEEP_MODE, NULL, 0);
|
|
|
+ if (err < 0)
|
|
|
+ return err;
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+EXPORT_SYMBOL(mipi_dsi_dcs_enter_sleep_mode);
|
|
|
+
|
|
|
+/**
|
|
|
+ * mipi_dsi_dcs_exit_sleep_mode() - enable all blocks inside the display
|
|
|
+ * module
|
|
|
+ * @dsi: DSI peripheral device
|
|
|
+ *
|
|
|
+ * Return: 0 on success or a negative error code on failure.
|
|
|
+ */
|
|
|
+int mipi_dsi_dcs_exit_sleep_mode(struct mipi_dsi_device *dsi)
|
|
|
+{
|
|
|
+ ssize_t err;
|
|
|
+
|
|
|
+ err = mipi_dsi_dcs_write(dsi, MIPI_DCS_EXIT_SLEEP_MODE, NULL, 0);
|
|
|
+ if (err < 0)
|
|
|
+ return err;
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+EXPORT_SYMBOL(mipi_dsi_dcs_exit_sleep_mode);
|
|
|
+
|
|
|
+/**
|
|
|
+ * mipi_dsi_dcs_set_display_off() - stop displaying the image data on the
|
|
|
+ * display device
|
|
|
+ * @dsi: DSI peripheral device
|
|
|
+ *
|
|
|
+ * Return: 0 on success or a negative error code on failure.
|
|
|
+ */
|
|
|
+int mipi_dsi_dcs_set_display_off(struct mipi_dsi_device *dsi)
|
|
|
+{
|
|
|
+ ssize_t err;
|
|
|
+
|
|
|
+ err = mipi_dsi_dcs_write(dsi, MIPI_DCS_SET_DISPLAY_OFF, NULL, 0);
|
|
|
+ if (err < 0)
|
|
|
+ return err;
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+EXPORT_SYMBOL(mipi_dsi_dcs_set_display_off);
|
|
|
+
|
|
|
+/**
|
|
|
+ * mipi_dsi_dcs_set_display_on() - start displaying the image data on the
|
|
|
+ * display device
|
|
|
+ * @dsi: DSI peripheral device
|
|
|
+ *
|
|
|
+ * Return: 0 on success or a negative error code on failure
|
|
|
+ */
|
|
|
+int mipi_dsi_dcs_set_display_on(struct mipi_dsi_device *dsi)
|
|
|
+{
|
|
|
+ ssize_t err;
|
|
|
+
|
|
|
+ err = mipi_dsi_dcs_write(dsi, MIPI_DCS_SET_DISPLAY_ON, NULL, 0);
|
|
|
+ if (err < 0)
|
|
|
+ return err;
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+EXPORT_SYMBOL(mipi_dsi_dcs_set_display_on);
|
|
|
+
|
|
|
+/**
|
|
|
+ * mipi_dsi_dcs_set_tear_off() - turn off the display module's Tearing Effect
|
|
|
+ * output signal on the TE signal line
|
|
|
+ * @dsi: DSI peripheral device
|
|
|
+ *
|
|
|
+ * Return: 0 on success or a negative error code on failure
|
|
|
+ */
|
|
|
+int mipi_dsi_dcs_set_tear_off(struct mipi_dsi_device *dsi)
|
|
|
+{
|
|
|
+ ssize_t err;
|
|
|
+
|
|
|
+ err = mipi_dsi_dcs_write(dsi, MIPI_DCS_SET_TEAR_OFF, NULL, 0);
|
|
|
+ if (err < 0)
|
|
|
+ return err;
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+EXPORT_SYMBOL(mipi_dsi_dcs_set_tear_off);
|
|
|
+
|
|
|
+/**
|
|
|
+ * mipi_dsi_dcs_set_tear_on() - turn on the display module's Tearing Effect
|
|
|
+ * output signal on the TE signal line.
|
|
|
+ * @dsi: DSI peripheral device
|
|
|
+ * @mode: the Tearing Effect Output Line mode
|
|
|
+ *
|
|
|
+ * Return: 0 on success or a negative error code on failure
|
|
|
+ */
|
|
|
+int mipi_dsi_dcs_set_tear_on(struct mipi_dsi_device *dsi,
|
|
|
+ enum mipi_dsi_dcs_tear_mode mode)
|
|
|
+{
|
|
|
+ u8 value = mode;
|
|
|
+ ssize_t err;
|
|
|
+
|
|
|
+ err = mipi_dsi_dcs_write(dsi, MIPI_DCS_SET_TEAR_ON, &value,
|
|
|
+ sizeof(value));
|
|
|
+ if (err < 0)
|
|
|
+ return err;
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+EXPORT_SYMBOL(mipi_dsi_dcs_set_tear_on);
|
|
|
+
|
|
|
static int mipi_dsi_drv_probe(struct device *dev)
|
|
|
{
|
|
|
struct mipi_dsi_driver *drv = to_mipi_dsi_driver(dev->driver);
|