ASoC: sti: macro for uniperif tdm regs access
authorMoise Gergaud <moise.gergaud@st.com>
Thu, 7 Apr 2016 09:25:30 +0000 (11:25 +0200)
committerMark Brown <broonie@kernel.org>
Tue, 12 Apr 2016 01:58:59 +0000 (02:58 +0100)
Signed-off-by: Moise Gergaud <moise.gergaud@st.com>
Acked-by: Arnaud Pouliquen <arnaud.pouliquen@st.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sti/uniperif.h

index 1f82faa..400788b 100644 (file)
                UNIPERIF_DBG_STANDBY_LEFT_SP_MASK(ip), value)
 
 /*
+ * UNIPERIF_TDM_ENABLE
+ */
+#define UNIPERIF_TDM_ENABLE_OFFSET(ip) 0x0118
+#define GET_UNIPERIF_TDM_ENABLE(ip) \
+       readl_relaxed(ip->base + UNIPERIF_TDM_ENABLE_OFFSET(ip))
+#define SET_UNIPERIF_TDM_ENABLE(ip, value) \
+       writel_relaxed(value, ip->base + UNIPERIF_TDM_ENABLE_OFFSET(ip))
+
+/* TDM_ENABLE */
+#define UNIPERIF_TDM_ENABLE_EN_TDM_SHIFT(ip) 0x0
+#define UNIPERIF_TDM_ENABLE_EN_TDM_MASK(ip) 0x1
+#define GET_UNIPERIF_TDM_ENABLE_EN_TDM(ip) \
+               GET_UNIPERIF_REG(ip, \
+               UNIPERIF_TDM_ENABLE_OFFSET(ip), \
+               UNIPERIF_TDM_ENABLE_EN_TDM_SHIFT(ip), \
+               UNIPERIF_TDM_ENABLE_EN_TDM_MASK(ip))
+#define SET_UNIPERIF_TDM_ENABLE_TDM_ENABLE(ip) \
+               SET_UNIPERIF_REG(ip, \
+               UNIPERIF_TDM_ENABLE_OFFSET(ip), \
+               UNIPERIF_TDM_ENABLE_EN_TDM_SHIFT(ip), \
+               UNIPERIF_TDM_ENABLE_EN_TDM_MASK(ip), 1)
+#define SET_UNIPERIF_TDM_ENABLE_TDM_DISABLE(ip) \
+               SET_UNIPERIF_REG(ip, \
+               UNIPERIF_TDM_ENABLE_OFFSET(ip), \
+               UNIPERIF_TDM_ENABLE_EN_TDM_SHIFT(ip), \
+               UNIPERIF_TDM_ENABLE_EN_TDM_MASK(ip), 0)
+
+/*
+ * UNIPERIF_TDM_FS_REF_FREQ
+ */
+#define UNIPERIF_TDM_FS_REF_FREQ_OFFSET(ip) 0x011c
+#define GET_UNIPERIF_TDM_FS_REF_FREQ(ip) \
+       readl_relaxed(ip->base + UNIPERIF_TDM_FS_REF_FREQ_OFFSET(ip))
+#define SET_UNIPERIF_TDM_FS_REF_FREQ(ip, value) \
+       writel_relaxed(value, ip->base + \
+                       UNIPERIF_TDM_FS_REF_FREQ_OFFSET(ip))
+
+/* REF_FREQ */
+#define UNIPERIF_TDM_FS_REF_FREQ_REF_FREQ_SHIFT(ip) 0x0
+#define VALUE_UNIPERIF_TDM_FS_REF_FREQ_8KHZ(ip) 0
+#define VALUE_UNIPERIF_TDM_FS_REF_FREQ_16KHZ(ip) 1
+#define VALUE_UNIPERIF_TDM_FS_REF_FREQ_32KHZ(ip) 2
+#define VALUE_UNIPERIF_TDM_FS_REF_FREQ_48KHZ(ip) 3
+#define UNIPERIF_TDM_FS_REF_FREQ_REF_FREQ_MASK(ip) 0x3
+#define GET_UNIPERIF_TDM_FS_REF_FREQ_REF_FREQ(ip) \
+               GET_UNIPERIF_REG(ip, \
+               UNIPERIF_TDM_FS_REF_FREQ_OFFSET(ip), \
+               UNIPERIF_TDM_FS_REF_FREQ_REF_FREQ_SHIFT(ip), \
+               UNIPERIF_TDM_FS_REF_FREQ_REF_FREQ_MASK(ip))
+#define SET_UNIPERIF_TDM_FS_REF_FREQ_8KHZ(ip) \
+               SET_UNIPERIF_REG(ip, \
+               UNIPERIF_TDM_FS_REF_FREQ_OFFSET(ip), \
+               UNIPERIF_TDM_FS_REF_FREQ_REF_FREQ_SHIFT(ip), \
+               UNIPERIF_TDM_FS_REF_FREQ_REF_FREQ_MASK(ip), \
+               VALUE_UNIPERIF_TDM_FS_REF_FREQ_8KHZ(ip))
+#define SET_UNIPERIF_TDM_FS_REF_FREQ_16KHZ(ip) \
+               SET_UNIPERIF_REG(ip, \
+               UNIPERIF_TDM_FS_REF_FREQ_OFFSET(ip), \
+               UNIPERIF_TDM_FS_REF_FREQ_REF_FREQ_SHIFT(ip), \
+               UNIPERIF_TDM_FS_REF_FREQ_REF_FREQ_MASK(ip), \
+               VALUE_UNIPERIF_TDM_FS_REF_FREQ_16KHZ(ip))
+#define SET_UNIPERIF_TDM_FS_REF_FREQ_32KHZ(ip) \
+               SET_UNIPERIF_REG(ip, \
+               UNIPERIF_TDM_FS_REF_FREQ_OFFSET(ip), \
+               UNIPERIF_TDM_FS_REF_FREQ_REF_FREQ_SHIFT(ip), \
+               UNIPERIF_TDM_FS_REF_FREQ_REF_FREQ_MASK(ip), \
+               VALUE_UNIPERIF_TDM_FS_REF_FREQ_32KHZ(ip))
+#define SET_UNIPERIF_TDM_FS_REF_FREQ_48KHZ(ip) \
+               SET_UNIPERIF_REG(ip, \
+               UNIPERIF_TDM_FS_REF_FREQ_OFFSET(ip), \
+               UNIPERIF_TDM_FS_REF_FREQ_REF_FREQ_SHIFT(ip), \
+               UNIPERIF_TDM_FS_REF_FREQ_REF_FREQ_MASK(ip), \
+               VALUE_UNIPERIF_TDM_FS_REF_FREQ_48KHZ(ip))
+
+/*
+ * UNIPERIF_TDM_FS_REF_DIV
+ */
+#define UNIPERIF_TDM_FS_REF_DIV_OFFSET(ip) 0x0120
+#define GET_UNIPERIF_TDM_FS_REF_DIV(ip) \
+       readl_relaxed(ip->base + UNIPERIF_TDM_FS_REF_DIV_OFFSET(ip))
+#define SET_UNIPERIF_TDM_FS_REF_DIV(ip, value) \
+               writel_relaxed(value, ip->base + \
+                       UNIPERIF_TDM_FS_REF_DIV_OFFSET(ip))
+
+/* NUM_TIMESLOT */
+#define UNIPERIF_TDM_FS_REF_DIV_NUM_TIMESLOT_SHIFT(ip) 0x0
+#define UNIPERIF_TDM_FS_REF_DIV_NUM_TIMESLOT_MASK(ip) 0xff
+#define GET_UNIPERIF_TDM_FS_REF_DIV_NUM_TIMESLOT(ip) \
+               GET_UNIPERIF_REG(ip, \
+               UNIPERIF_TDM_FS_REF_DIV_OFFSET(ip), \
+               UNIPERIF_TDM_FS_REF_DIV_NUM_TIMESLOT_SHIFT(ip), \
+               UNIPERIF_TDM_FS_REF_DIV_NUM_TIMESLOT_MASK(ip))
+#define SET_UNIPERIF_TDM_FS_REF_DIV_NUM_TIMESLOT(ip, value) \
+               SET_UNIPERIF_REG(ip, \
+               UNIPERIF_TDM_FS_REF_DIV_OFFSET(ip), \
+               UNIPERIF_TDM_FS_REF_DIV_NUM_TIMESLOT_SHIFT(ip), \
+               UNIPERIF_TDM_FS_REF_DIV_NUM_TIMESLOT_MASK(ip), value)
+
+/*
+ * UNIPERIF_TDM_WORD_POS_X_Y
+ * 32 bits of UNIPERIF_TDM_WORD_POS_X_Y register shall be set in 1 shot
+ */
+#define UNIPERIF_TDM_WORD_POS_1_2_OFFSET(ip) 0x013c
+#define UNIPERIF_TDM_WORD_POS_3_4_OFFSET(ip) 0x0140
+#define UNIPERIF_TDM_WORD_POS_5_6_OFFSET(ip) 0x0144
+#define UNIPERIF_TDM_WORD_POS_7_8_OFFSET(ip) 0x0148
+#define GET_UNIPERIF_TDM_WORD_POS(ip, words) \
+       readl_relaxed(ip->base + UNIPERIF_TDM_WORD_POS_##words##_OFFSET(ip))
+#define SET_UNIPERIF_TDM_WORD_POS(ip, words, value) \
+               writel_relaxed(value, ip->base + \
+               UNIPERIF_TDM_WORD_POS_##words##_OFFSET(ip))
+/*
  * uniperipheral IP capabilities
  */