On Wed, Oct 16, 2024 at 11:10:49PM +0100, Alexey Klimov wrote: > Turns out some registers of pre-2.5 version of rxmacro codecs are not > located at the expected offsets but 0xc further away in memory. So far > the detected registers are CDC_RX_RX2_RX_PATH_SEC7 and > CDC_RX_RX2_RX_PATH_DSM_CTL. > > CDC_RX_RXn_RX_PATH_DSM_CTL(rx, n) macro incorrectly generates the address > 0x540 for RX2 but it should be 0x54C and it also overwrites > CDC_RX_RX2_RX_PATH_SEC7 which is located at 0x540. > The same goes for CDC_RX_RXn_RX_PATH_SEC7(rx, n). > > Fix this by introducing additional rxn_reg_stride2 offset. For 2.5 version > and above this offset will be equal to 0. > With such change the corresponding RXn() macros will generate the same > values for 2.5 codec version for all RX paths and the same old values > for pre-2.5 version for RX0 and RX1. However for the latter case with > RX2 path it will also add rxn_reg_stride2 on top. > > While at this, also remove specific if-check for INTERP_AUX from > rx_macro_digital_mute() and rx_macro_enable_interp_clk(). These if-check > was used to handle such special offset for AUX interpolator but since > CDC_RX_RXn_RX_PATH_SEC7(rx, n) and CDC_RX_RXn_RX_PATH_DSM_CTL(rx, n) > macros will generate the correst addresses of dsm register, they are no > longer needed. > > Cc: Srinivas Kandagatla <srinivas.kandagatla@xxxxxxxxxx> > Cc: Krzysztof Kozlowski <krzysztof.kozlowski@xxxxxxxxxx> > Signed-off-by: Alexey Klimov <alexey.klimov@xxxxxxxxxx> > --- > Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxx> -- With best wishes Dmitry