struct mipi_dsi_host host;
struct regulator *vdd;
+ bool enabled;
};
static inline struct tegra_dsi *
const u32 *pkt_seq;
int err;
+ if (dsi->enabled)
+ return 0;
+
if (dsi->flags & MIPI_DSI_MODE_VIDEO_SYNC_PULSE) {
DRM_DEBUG_KMS("Non-burst video mode with sync pulses\n");
pkt_seq = pkt_seq_video_non_burst_sync_pulses;
value |= DSI_POWER_CONTROL_ENABLE;
tegra_dsi_writel(dsi, value, DSI_POWER_CONTROL);
+ dsi->enabled = true;
+
return 0;
}
struct tegra_dsi *dsi = to_dsi(output);
unsigned long value;
+ if (!dsi->enabled)
+ return 0;
+
/* disable DSI controller */
value = tegra_dsi_readl(dsi, DSI_POWER_CONTROL);
value &= DSI_POWER_CONTROL_ENABLE;
clk_disable(dsi->clk);
+ dsi->enabled = false;
+
return 0;
}