Unverified Commit 013ea98c authored by Tomi Valkeinen's avatar Tomi Valkeinen Committed by Robert Foss
Browse files

drm/bridge: tc358768: Print logical values, not raw register values



The driver debug prints DSI related timings as raw register values in
hex. It is much more useful to see the "logical" value of the timing,
not the register value.

Change the prints to print the values separately, in case a single
register contains multiple values, and use %u to have it in a more human
consumable form.

Reviewed-by: default avatarPeter Ujfalusi <peter.ujfalusi@gmail.com>
Tested-by: Maxim Schwalm <maxim.schwalm@gmail.com> # Asus TF700T
Tested-by: default avatarMarcel Ziswiler <marcel.ziswiler@toradex.com>
Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Signed-off-by: default avatarRobert Foss <rfoss@kernel.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20230906-tc358768-v4-7-31725f008a50@ideasonboard.com
parent e5fb2167
Loading
Loading
Loading
Loading
+12 −9
Original line number Diff line number Diff line
@@ -739,57 +739,59 @@ static void tc358768_bridge_pre_enable(struct drm_bridge *bridge)

	/* LP11 > 100us for D-PHY Rx Init */
	val = tc358768_ns_to_cnt(100 * 1000, dsibclk_nsk) - 1;
	dev_dbg(priv->dev, "LINEINITCNT: 0x%x\n", val);
	dev_dbg(priv->dev, "LINEINITCNT: %u\n", val);
	tc358768_write(priv, TC358768_LINEINITCNT, val);

	/* LPTimeCnt > 50ns */
	val = tc358768_ns_to_cnt(50, dsibclk_nsk) - 1;
	lptxcnt = val;
	dev_dbg(priv->dev, "LPTXTIMECNT: 0x%x\n", val);
	dev_dbg(priv->dev, "LPTXTIMECNT: %u\n", val);
	tc358768_write(priv, TC358768_LPTXTIMECNT, val);

	/* 38ns < TCLK_PREPARE < 95ns */
	val = tc358768_ns_to_cnt(65, dsibclk_nsk) - 1;
	dev_dbg(priv->dev, "TCLK_PREPARECNT %u\n", val);
	/* TCLK_PREPARE + TCLK_ZERO > 300ns */
	val2 = tc358768_ns_to_cnt(300 - tc358768_to_ns(2 * ui_nsk),
				  dsibclk_nsk) - 2;
	dev_dbg(priv->dev, "TCLK_ZEROCNT %u\n", val2);
	val |= val2 << 8;
	dev_dbg(priv->dev, "TCLK_HEADERCNT: 0x%x\n", val);
	tc358768_write(priv, TC358768_TCLK_HEADERCNT, val);

	/* TCLK_TRAIL > 60ns AND TEOT <= 105 ns + 12*UI */
	raw_val = tc358768_ns_to_cnt(60 + tc358768_to_ns(2 * ui_nsk), dsibclk_nsk) - 5;
	val = clamp(raw_val, 0, 127);
	dev_dbg(priv->dev, "TCLK_TRAILCNT: 0x%x\n", val);
	dev_dbg(priv->dev, "TCLK_TRAILCNT: %u\n", val);
	tc358768_write(priv, TC358768_TCLK_TRAILCNT, val);

	/* 40ns + 4*UI < THS_PREPARE < 85ns + 6*UI */
	val = 50 + tc358768_to_ns(4 * ui_nsk);
	val = tc358768_ns_to_cnt(val, dsibclk_nsk) - 1;
	dev_dbg(priv->dev, "THS_PREPARECNT %u\n", val);
	/* THS_PREPARE + THS_ZERO > 145ns + 10*UI */
	raw_val = tc358768_ns_to_cnt(145 - tc358768_to_ns(3 * ui_nsk), dsibclk_nsk) - 10;
	val2 = clamp(raw_val, 0, 127);
	dev_dbg(priv->dev, "THS_ZEROCNT %u\n", val2);
	val |= val2 << 8;
	dev_dbg(priv->dev, "THS_HEADERCNT: 0x%x\n", val);
	tc358768_write(priv, TC358768_THS_HEADERCNT, val);

	/* TWAKEUP > 1ms in lptxcnt steps */
	val = tc358768_ns_to_cnt(1020000, dsibclk_nsk);
	val = val / (lptxcnt + 1) - 1;
	dev_dbg(priv->dev, "TWAKEUP: 0x%x\n", val);
	dev_dbg(priv->dev, "TWAKEUP: %u\n", val);
	tc358768_write(priv, TC358768_TWAKEUP, val);

	/* TCLK_POSTCNT > 60ns + 52*UI */
	val = tc358768_ns_to_cnt(60 + tc358768_to_ns(52 * ui_nsk),
				 dsibclk_nsk) - 3;
	dev_dbg(priv->dev, "TCLK_POSTCNT: 0x%x\n", val);
	dev_dbg(priv->dev, "TCLK_POSTCNT: %u\n", val);
	tc358768_write(priv, TC358768_TCLK_POSTCNT, val);

	/* max(60ns + 4*UI, 8*UI) < THS_TRAILCNT < 105ns + 12*UI */
	raw_val = tc358768_ns_to_cnt(60 + tc358768_to_ns(18 * ui_nsk),
				     dsibclk_nsk) - 4;
	val = clamp(raw_val, 0, 15);
	dev_dbg(priv->dev, "THS_TRAILCNT: 0x%x\n", val);
	dev_dbg(priv->dev, "THS_TRAILCNT: %u\n", val);
	tc358768_write(priv, TC358768_THS_TRAILCNT, val);

	val = BIT(0);
@@ -803,10 +805,11 @@ static void tc358768_bridge_pre_enable(struct drm_bridge *bridge)
	/* TXTAGOCNT[26:16] RXTASURECNT[10:0] */
	val = tc358768_to_ns((lptxcnt + 1) * dsibclk_nsk * 4);
	val = tc358768_ns_to_cnt(val, dsibclk_nsk) / 4 - 1;
	dev_dbg(priv->dev, "TXTAGOCNT: %u\n", val);
	val2 = tc358768_ns_to_cnt(tc358768_to_ns((lptxcnt + 1) * dsibclk_nsk),
				  dsibclk_nsk) - 2;
	dev_dbg(priv->dev, "RXTASURECNT: %u\n", val2);
	val = val << 16 | val2;
	dev_dbg(priv->dev, "BTACNTRL1: 0x%x\n", val);
	tc358768_write(priv, TC358768_BTACNTRL1, val);

	/* START[0] */