Hi,
On 11/09/2024 09:15, Alexander Shiyan wrote:
Hello.
вт, 10 сент. 2024 г. в 11:40, Tomi Valkeinen <tomi.valkeinen@xxxxxxxxxxxxxxxx>:
On 30/08/2024 10:00, Alexander Shiyan wrote:
Add support for TI DS90UB954 FPD-Link III Deserializer.
...
@@ -1419,7 +1427,7 @@ static void ub960_rxport_config_eq(struct ub960_data *priv, unsigned int nport)
if (priv->strobe.manual)
ub960_rxport_set_strobe_pos(priv, nport, rxport->eq.strobe_pos);
- else
+ else if (priv->hw_data->chip_type != UB954)
ub960_rxport_set_strobe_pos(priv, nport, 0);
This looks odd. Manually set strobe pos is ok, but not the default?
What is the reason for this if?
In fact, these registers are described as reserved in the datasheet.
Yes, but my point was that in your patch you disable the call to
ub960_rxport_set_strobe_pos() if manual strobe is not set, but still
allow it if manual strobe is set.
(We are speaking about indirect page 1).
Here is an excerpt from datasheet UB960:
Indirect Access Register Select:
Selects target for register access
0000: Pattern Generator and CSI-2 Timing (PATGEN_AND_CSI-2) Registers
xxxx: RESERVED
In UB954 datasheet this area is described as "FPD-Link III Channel 0
Reserved Registers: Test and Debug registers".
They're marked reserved in the UB960 datasheet too.
I tested the UB954 and when writing to this area an error occurs and
the chip no longer responds.
When disabling ub960_rxport_set_strobe_pos() everything works as expected.
"Margin Analysis Program (MAP) and strobe positions for DS90UB954-Q1 and
DS90UB960-Q1" describes the registers:
https://www.ti.com/lit/pdf/snla301
It's been a while since I worked on this, but I remember having some
trouble fitting the docs to what actually worked. And there was some
small diff between UB954 and UB960, if I'm not mistaken.
You might be able to sort it out with the doc above, but if not or if
you're not interested, I'm fine with marking the relevant code for UB960
only. But be careful to disable the code in all the code paths.
Tomi