Merge tag 'soundwire-6.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/vkoul...
[linux-block.git] / drivers / soundwire / amd_init.c
index e45dc8261ab13fdad174d379589cc7d7af31ee47..4cd26f3a21f5dda3cebb1d4efeefc9e7ba8e7049 100644 (file)
 
 #define ACP_PAD_PULLDOWN_CTRL                          0x0001448
 #define ACP_SW_PAD_KEEPER_EN                           0x0001454
-#define AMD_SDW_PAD_PULLDOWN_CTRL_ENABLE_MASK          0x7f9a
-#define AMD_SDW0_PAD_PULLDOWN_CTRL_ENABLE_MASK         0x7f9f
-#define AMD_SDW1_PAD_PULLDOWN_CTRL_ENABLE_MASK         0x7ffa
-#define AMD_SDW0_PAD_EN_MASK                           1
-#define AMD_SDW1_PAD_EN_MASK                           0x10
-#define AMD_SDW_PAD_EN_MASK    (AMD_SDW0_PAD_EN_MASK | AMD_SDW1_PAD_EN_MASK)
+#define AMD_SDW0_PAD_CTRL_MASK                         0x60
+#define AMD_SDW1_PAD_CTRL_MASK                         5
+#define AMD_SDW_PAD_CTRL_MASK          (AMD_SDW0_PAD_CTRL_MASK | AMD_SDW1_PAD_CTRL_MASK)
+#define AMD_SDW0_PAD_EN                                        1
+#define AMD_SDW1_PAD_EN                                        0x10
+#define AMD_SDW_PAD_EN                 (AMD_SDW0_PAD_EN | AMD_SDW1_PAD_EN)
 
 static int amd_enable_sdw_pads(void __iomem *mmio, u32 link_mask, struct device *dev)
 {
-       u32 val;
-       u32 pad_keeper_en_mask, pad_pulldown_ctrl_mask;
+       u32 pad_keeper_en, pad_pulldown_ctrl_mask;
 
        switch (link_mask) {
        case 1:
-               pad_keeper_en_mask = AMD_SDW0_PAD_EN_MASK;
-               pad_pulldown_ctrl_mask = AMD_SDW0_PAD_PULLDOWN_CTRL_ENABLE_MASK;
+               pad_keeper_en = AMD_SDW0_PAD_EN;
+               pad_pulldown_ctrl_mask = AMD_SDW0_PAD_CTRL_MASK;
                break;
        case 2:
-               pad_keeper_en_mask = AMD_SDW1_PAD_EN_MASK;
-               pad_pulldown_ctrl_mask = AMD_SDW1_PAD_PULLDOWN_CTRL_ENABLE_MASK;
+               pad_keeper_en = AMD_SDW1_PAD_EN;
+               pad_pulldown_ctrl_mask = AMD_SDW1_PAD_CTRL_MASK;
                break;
        case 3:
-               pad_keeper_en_mask = AMD_SDW_PAD_EN_MASK;
-               pad_pulldown_ctrl_mask = AMD_SDW_PAD_PULLDOWN_CTRL_ENABLE_MASK;
+               pad_keeper_en = AMD_SDW_PAD_EN;
+               pad_pulldown_ctrl_mask = AMD_SDW_PAD_CTRL_MASK;
                break;
        default:
                dev_err(dev, "No SDW Links are enabled\n");
                return -ENODEV;
        }
 
-       val = readl(mmio + ACP_SW_PAD_KEEPER_EN);
-       val |= pad_keeper_en_mask;
-       writel(val, mmio + ACP_SW_PAD_KEEPER_EN);
-       val = readl(mmio + ACP_PAD_PULLDOWN_CTRL);
-       val &= pad_pulldown_ctrl_mask;
-       writel(val, mmio + ACP_PAD_PULLDOWN_CTRL);
+       amd_updatel(mmio, ACP_SW_PAD_KEEPER_EN, pad_keeper_en, pad_keeper_en);
+       amd_updatel(mmio, ACP_PAD_PULLDOWN_CTRL, pad_pulldown_ctrl_mask, 0);
+
        return 0;
 }