Skip to content

Commit 92beab1

Browse files
Kaustabh Chakrabortydaeinki
authored andcommitted
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: Kaustabh Chakraborty <kauschluss@disroot.org> Signed-off-by: Inki Dae <inki.dae@samsung.com
1 parent 7c9b998 commit 92beab1

2 files changed

Lines changed: 13 additions & 3 deletions

File tree

drivers/gpu/drm/bridge/samsung-dsim.c

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -418,6 +418,7 @@ static const struct samsung_dsim_driver_data exynos3_dsi_driver_data = {
418418
.has_clklane_stop = 1,
419419
.num_clks = 2,
420420
.max_freq = 1000,
421+
.wait_for_hdr_fifo = 1,
421422
.wait_for_reset = 1,
422423
.num_bits_resol = 11,
423424
.pll_p_offset = 13,
@@ -438,6 +439,7 @@ static const struct samsung_dsim_driver_data exynos4_dsi_driver_data = {
438439
.has_clklane_stop = 1,
439440
.num_clks = 2,
440441
.max_freq = 1000,
442+
.wait_for_hdr_fifo = 1,
441443
.wait_for_reset = 1,
442444
.num_bits_resol = 11,
443445
.pll_p_offset = 13,
@@ -456,6 +458,7 @@ static const struct samsung_dsim_driver_data exynos5_dsi_driver_data = {
456458
.has_legacy_status_reg = 1,
457459
.num_clks = 2,
458460
.max_freq = 1000,
461+
.wait_for_hdr_fifo = 1,
459462
.wait_for_reset = 1,
460463
.num_bits_resol = 11,
461464
.pll_p_offset = 13,
@@ -474,6 +477,7 @@ static const struct samsung_dsim_driver_data exynos5433_dsi_driver_data = {
474477
.has_clklane_stop = 1,
475478
.num_clks = 5,
476479
.max_freq = 1500,
480+
.wait_for_hdr_fifo = 1,
477481
.wait_for_reset = 0,
478482
.num_bits_resol = 12,
479483
.pll_p_offset = 13,
@@ -492,6 +496,7 @@ static const struct samsung_dsim_driver_data exynos5422_dsi_driver_data = {
492496
.has_clklane_stop = 1,
493497
.num_clks = 2,
494498
.max_freq = 1500,
499+
.wait_for_hdr_fifo = 1,
495500
.wait_for_reset = 1,
496501
.num_bits_resol = 12,
497502
.pll_p_offset = 13,
@@ -510,6 +515,7 @@ static const struct samsung_dsim_driver_data imx8mm_dsi_driver_data = {
510515
.has_clklane_stop = 1,
511516
.num_clks = 2,
512517
.max_freq = 2100,
518+
.wait_for_hdr_fifo = 1,
513519
.wait_for_reset = 0,
514520
.num_bits_resol = 12,
515521
/*
@@ -1117,6 +1123,7 @@ static void samsung_dsim_send_to_fifo(struct samsung_dsim *dsi,
11171123
{
11181124
struct device *dev = dsi->dev;
11191125
struct mipi_dsi_packet *pkt = &xfer->packet;
1126+
const struct samsung_dsim_driver_data *driver_data = dsi->driver_data;
11201127
const u8 *payload = pkt->payload + xfer->tx_done;
11211128
u16 length = pkt->payload_length - xfer->tx_done;
11221129
bool first = !xfer->tx_done;
@@ -1157,9 +1164,11 @@ static void samsung_dsim_send_to_fifo(struct samsung_dsim *dsi,
11571164
return;
11581165

11591166
reg = get_unaligned_le32(pkt->header);
1160-
if (samsung_dsim_wait_for_hdr_fifo(dsi)) {
1161-
dev_err(dev, "waiting for header FIFO timed out\n");
1162-
return;
1167+
if (driver_data->wait_for_hdr_fifo) {
1168+
if (samsung_dsim_wait_for_hdr_fifo(dsi)) {
1169+
dev_err(dev, "waiting for header FIFO timed out\n");
1170+
return;
1171+
}
11631172
}
11641173

11651174
if (NEQV(xfer->flags & MIPI_DSI_MSG_USE_LPM,

include/drm/bridge/samsung-dsim.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ struct samsung_dsim_driver_data {
6161
unsigned int num_clks;
6262
unsigned int min_freq;
6363
unsigned int max_freq;
64+
unsigned int wait_for_hdr_fifo;
6465
unsigned int wait_for_reset;
6566
unsigned int num_bits_resol;
6667
unsigned int pll_p_offset;

0 commit comments

Comments
 (0)