Loading drivers/gpu/drm/tegra/dsi.c +25 −0 Original line number Diff line number Diff line Loading @@ -724,6 +724,30 @@ static void tegra_dsi_disable(struct tegra_dsi *dsi) usleep_range(5000, 10000); } static void tegra_dsi_soft_reset(struct tegra_dsi *dsi) { u32 value; value = tegra_dsi_readl(dsi, DSI_POWER_CONTROL); value &= ~DSI_POWER_CONTROL_ENABLE; tegra_dsi_writel(dsi, value, DSI_POWER_CONTROL); usleep_range(300, 1000); value = tegra_dsi_readl(dsi, DSI_POWER_CONTROL); value |= DSI_POWER_CONTROL_ENABLE; tegra_dsi_writel(dsi, value, DSI_POWER_CONTROL); usleep_range(300, 1000); value = tegra_dsi_readl(dsi, DSI_TRIGGER); if (value) tegra_dsi_writel(dsi, 0, DSI_TRIGGER); if (dsi->slave) tegra_dsi_soft_reset(dsi->slave); } static int tegra_output_dsi_disable(struct tegra_output *output) { struct tegra_dc *dc = to_tegra_dc(output->encoder.crtc); Loading Loading @@ -762,6 +786,7 @@ static int tegra_output_dsi_disable(struct tegra_output *output) if (err < 0) dev_dbg(dsi->dev, "failed to idle DSI: %d\n", err); tegra_dsi_soft_reset(dsi); tegra_dsi_disable(dsi); dsi->enabled = false; Loading Loading
drivers/gpu/drm/tegra/dsi.c +25 −0 Original line number Diff line number Diff line Loading @@ -724,6 +724,30 @@ static void tegra_dsi_disable(struct tegra_dsi *dsi) usleep_range(5000, 10000); } static void tegra_dsi_soft_reset(struct tegra_dsi *dsi) { u32 value; value = tegra_dsi_readl(dsi, DSI_POWER_CONTROL); value &= ~DSI_POWER_CONTROL_ENABLE; tegra_dsi_writel(dsi, value, DSI_POWER_CONTROL); usleep_range(300, 1000); value = tegra_dsi_readl(dsi, DSI_POWER_CONTROL); value |= DSI_POWER_CONTROL_ENABLE; tegra_dsi_writel(dsi, value, DSI_POWER_CONTROL); usleep_range(300, 1000); value = tegra_dsi_readl(dsi, DSI_TRIGGER); if (value) tegra_dsi_writel(dsi, 0, DSI_TRIGGER); if (dsi->slave) tegra_dsi_soft_reset(dsi->slave); } static int tegra_output_dsi_disable(struct tegra_output *output) { struct tegra_dc *dc = to_tegra_dc(output->encoder.crtc); Loading Loading @@ -762,6 +786,7 @@ static int tegra_output_dsi_disable(struct tegra_output *output) if (err < 0) dev_dbg(dsi->dev, "failed to idle DSI: %d\n", err); tegra_dsi_soft_reset(dsi); tegra_dsi_disable(dsi); dsi->enabled = false; Loading