From: Dan Carpenter <dan.carpenter@linaro.org>
To: Andy Yan <andy.yan@rock-chips.com>
Cc: dri-devel@lists.freedesktop.org
Subject: [bug report] drm/bridge: synopsys: Add DW DPTX Controller support library
Date: Tue, 2 Sep 2025 09:35:26 +0300 [thread overview]
Message-ID: <aLaQLlJC8qMrnDAf@stanley.mountain> (raw)
Hello Andy Yan,
Commit 86eecc3a9c2e ("drm/bridge: synopsys: Add DW DPTX Controller
support library") from Aug 22, 2025 (linux-next), leads to the
following Smatch static checker warning:
drivers/gpu/drm/bridge/synopsys/dw-dp.c:730 dw_dp_voltage_max()
warn: bitwise AND is zero '0x3 & 0x18'
drivers/gpu/drm/bridge/synopsys/dw-dp.c
728 static u8 dw_dp_voltage_max(u8 preemph)
729 {
--> 730 switch (preemph & DP_TRAIN_PRE_EMPHASIS_MASK) {
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
This mask will always be zero (DP_TRAIN_PRE_EMPH_LEVEL_0).
731 case DP_TRAIN_PRE_EMPH_LEVEL_0:
732 return DP_TRAIN_VOLTAGE_SWING_LEVEL_3;
733 case DP_TRAIN_PRE_EMPH_LEVEL_1:
734 return DP_TRAIN_VOLTAGE_SWING_LEVEL_2;
735 case DP_TRAIN_PRE_EMPH_LEVEL_2:
736 return DP_TRAIN_VOLTAGE_SWING_LEVEL_1;
737 case DP_TRAIN_PRE_EMPH_LEVEL_3:
738 default:
739 return DP_TRAIN_VOLTAGE_SWING_LEVEL_0;
740 }
741 }
The problem is the inconsistent >> 3 shifting. Here is how the
caller looks like:
755 p = drm_dp_get_adjust_request_pre_emphasis(status, i);
p is a 0x3 << 3 mask
756 p >>= DP_TRAIN_PRE_EMPHASIS_SHIFT;
We shift it >> 3 for convenience
757
758 if (v != adj->voltage_swing[i] || p != adj->pre_emphasis[i])
759 changed = true;
760
761 if (p >= (DP_TRAIN_PRE_EMPH_LEVEL_3 >> DP_TRAIN_PRE_EMPHASIS_SHIFT)) {
762 adj->pre_emphasis[i] = DP_TRAIN_PRE_EMPH_LEVEL_3 >>
763 DP_TRAIN_PRE_EMPHASIS_SHIFT;
764 adj->pre_max_reached[i] = true;
765 } else {
766 adj->pre_emphasis[i] = p;
767 adj->pre_max_reached[i] = false;
768 }
769
770 v = min(v, dw_dp_voltage_max(p));
^
But the dw_dp_voltage_max() function expects the unshifted value.
There is another similar warning but it's probably deliberate.
drivers/gpu/drm/bridge/synopsys/dw-dp.c:1072 dw_dp_send_sdp() warn: bitwise AND is zero '0x1 & 0x2'
drivers/gpu/drm/bridge/synopsys/dw-dp.c
1066
1067 if (sdp->flags & DW_DP_SDP_VERTICAL_INTERVAL)
1068 regmap_update_bits(dp->regmap, DW_DP_SDP_VERTICAL_CTRL,
1069 EN_VERTICAL_SDP << nr,
1070 EN_VERTICAL_SDP << nr);
1071
1072 if (sdp->flags & DW_DP_SDP_HORIZONTAL_INTERVAL)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
DW_DP_SDP_HORIZONTAL_INTERVAL is never used.
1073 regmap_update_bits(dp->regmap, DW_DP_SDP_HORIZONTAL_CTRL,
1074 EN_HORIZONTAL_SDP << nr,
1075 EN_HORIZONTAL_SDP << nr);
1076
regards,
dan carpenter
next reply other threads:[~2025-09-02 6:35 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-02 6:35 Dan Carpenter [this message]
2025-09-02 11:42 ` Re:[bug report] drm/bridge: synopsys: Add DW DPTX Controller support library Andy Yan
2025-09-02 11:45 ` [bug " Dan Carpenter
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aLaQLlJC8qMrnDAf@stanley.mountain \
--to=dan.carpenter@linaro.org \
--cc=andy.yan@rock-chips.com \
--cc=dri-devel@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.