Unverified Commit 92beab1a authored by Kaustabh Chakraborty's avatar Kaustabh Chakraborty Committed by Inki Dae
Browse files

drm/bridge: samsung-dsim: add flag to control header FIFO wait



Exynos7870's DSIM device doesn't require waiting for the header FIFO
during a MIPI DSI transfer. Add a flag in the driver data in order to
control said behavior.

Signed-off-by: default avatarKaustabh Chakraborty <kauschluss@disroot.org>
Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
parent 7c9b9989
Loading
Loading
Loading
Loading
+12 −3
Original line number Diff line number Diff line
@@ -418,6 +418,7 @@ static const struct samsung_dsim_driver_data exynos3_dsi_driver_data = {
	.has_clklane_stop = 1,
	.num_clks = 2,
	.max_freq = 1000,
	.wait_for_hdr_fifo = 1,
	.wait_for_reset = 1,
	.num_bits_resol = 11,
	.pll_p_offset = 13,
@@ -438,6 +439,7 @@ static const struct samsung_dsim_driver_data exynos4_dsi_driver_data = {
	.has_clklane_stop = 1,
	.num_clks = 2,
	.max_freq = 1000,
	.wait_for_hdr_fifo = 1,
	.wait_for_reset = 1,
	.num_bits_resol = 11,
	.pll_p_offset = 13,
@@ -456,6 +458,7 @@ static const struct samsung_dsim_driver_data exynos5_dsi_driver_data = {
	.has_legacy_status_reg = 1,
	.num_clks = 2,
	.max_freq = 1000,
	.wait_for_hdr_fifo = 1,
	.wait_for_reset = 1,
	.num_bits_resol = 11,
	.pll_p_offset = 13,
@@ -474,6 +477,7 @@ static const struct samsung_dsim_driver_data exynos5433_dsi_driver_data = {
	.has_clklane_stop = 1,
	.num_clks = 5,
	.max_freq = 1500,
	.wait_for_hdr_fifo = 1,
	.wait_for_reset = 0,
	.num_bits_resol = 12,
	.pll_p_offset = 13,
@@ -492,6 +496,7 @@ static const struct samsung_dsim_driver_data exynos5422_dsi_driver_data = {
	.has_clklane_stop = 1,
	.num_clks = 2,
	.max_freq = 1500,
	.wait_for_hdr_fifo = 1,
	.wait_for_reset = 1,
	.num_bits_resol = 12,
	.pll_p_offset = 13,
@@ -510,6 +515,7 @@ static const struct samsung_dsim_driver_data imx8mm_dsi_driver_data = {
	.has_clklane_stop = 1,
	.num_clks = 2,
	.max_freq = 2100,
	.wait_for_hdr_fifo = 1,
	.wait_for_reset = 0,
	.num_bits_resol = 12,
	/*
@@ -1117,6 +1123,7 @@ static void samsung_dsim_send_to_fifo(struct samsung_dsim *dsi,
{
	struct device *dev = dsi->dev;
	struct mipi_dsi_packet *pkt = &xfer->packet;
	const struct samsung_dsim_driver_data *driver_data = dsi->driver_data;
	const u8 *payload = pkt->payload + xfer->tx_done;
	u16 length = pkt->payload_length - xfer->tx_done;
	bool first = !xfer->tx_done;
@@ -1157,10 +1164,12 @@ static void samsung_dsim_send_to_fifo(struct samsung_dsim *dsi,
		return;

	reg = get_unaligned_le32(pkt->header);
	if (driver_data->wait_for_hdr_fifo) {
		if (samsung_dsim_wait_for_hdr_fifo(dsi)) {
			dev_err(dev, "waiting for header FIFO timed out\n");
			return;
		}
	}

	if (NEQV(xfer->flags & MIPI_DSI_MSG_USE_LPM,
		 dsi->state & DSIM_STATE_CMD_LPM)) {
+1 −0
Original line number Diff line number Diff line
@@ -61,6 +61,7 @@ struct samsung_dsim_driver_data {
	unsigned int num_clks;
	unsigned int min_freq;
	unsigned int max_freq;
	unsigned int wait_for_hdr_fifo;
	unsigned int wait_for_reset;
	unsigned int num_bits_resol;
	unsigned int pll_p_offset;