soundwire: intel_ace2x: cleanup DOAIS/DODS settings
authorPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Mon, 29 Apr 2024 00:43:18 +0000 (00:43 +0000)
committerVinod Koul <vkoul@kernel.org>
Sat, 4 May 2024 12:56:49 +0000 (18:26 +0530)
Use two variables to save the settings, in preparation of a follow-up
change to read values from _DSD properties.

Starting with this patch, the bitfields will be reordered and listed
MSB-first, as shown in the hardware documentation.

Also note that the default for DOAIS is changed from 0x1 (copy-pasted
value?) to 0x3 (hardware default).

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Link: https://lore.kernel.org/r/20240429004321.2399754-2-yung-chuan.liao@linux.intel.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/soundwire/intel_ace2x.c

index 75e629c938dcf63b4f940732fb10d03c6bdeb152..32b538cd6d66f3ff8e5de535a6ac4cd2491c1025 100644 (file)
 static void intel_shim_vs_init(struct sdw_intel *sdw)
 {
        void __iomem *shim_vs = sdw->link_res->shim_vs;
+       u16 doais;
+       u16 dods;
        u16 act;
 
+       doais = 0x3;
+       dods = 0x1;
+
        act = intel_readw(shim_vs, SDW_SHIM2_INTEL_VS_ACTMCTL);
-       u16p_replace_bits(&act, 0x1, SDW_SHIM2_INTEL_VS_ACTMCTL_DOAIS);
+       u16p_replace_bits(&act, doais, SDW_SHIM2_INTEL_VS_ACTMCTL_DOAIS);
+       u16p_replace_bits(&act, dods, SDW_SHIM2_INTEL_VS_ACTMCTL_DODS);
        act |= SDW_SHIM2_INTEL_VS_ACTMCTL_DACTQE;
-       act |=  SDW_SHIM2_INTEL_VS_ACTMCTL_DODS;
        intel_writew(shim_vs, SDW_SHIM2_INTEL_VS_ACTMCTL, act);
        usleep_range(10, 15);
 }