#define REG_CGR3_GO1L_OFFSET           0
 #define REG_CGR3_GO1L_MASK             (0x1f << REG_CGR3_GO1L_OFFSET)
 
+#define REG_CGR8_GOR_OFFSET            0
+#define REG_CGR8_GOR_MASK              (0x1f << REG_CGR8_GOR_OFFSET)
+
+#define REG_CGR9_GOL_OFFSET            0
+#define REG_CGR9_GOL_MASK              (0x1f << REG_CGR9_GOL_OFFSET)
+
 #define REG_CGR10_GIL_OFFSET           0
 #define REG_CGR10_GIR_OFFSET           4
 
 
 static const SNDRV_CTL_TLVD_DECLARE_DB_SCALE(jz4725b_adc_tlv,     0, 150, 0);
 static const SNDRV_CTL_TLVD_DECLARE_DB_SCALE(jz4725b_dac_tlv, -2250, 150, 0);
+static const SNDRV_CTL_TLVD_DECLARE_DB_RANGE(jz4725b_out_tlv,
+        0, 11, TLV_DB_SCALE_ITEM(-3350, 200, 0),
+       12, 23, TLV_DB_SCALE_ITEM(-1050, 100, 0),
+       24, 31, TLV_DB_SCALE_ITEM(  100,  50, 0),
+);
 
 static const struct snd_kcontrol_new jz4725b_codec_controls[] = {
-       SOC_DOUBLE_TLV("Master Playback Volume",
+       SOC_DOUBLE_TLV("DAC Playback Volume",
                       JZ4725B_CODEC_REG_CGR1,
                       REG_CGR1_GODL_OFFSET,
                       REG_CGR1_GODR_OFFSET,
                       REG_CGR10_GIR_OFFSET,
                       0xf, 0, jz4725b_adc_tlv),
 
-       SOC_SINGLE("Master Playback Switch", JZ4725B_CODEC_REG_CR1,
+       SOC_DOUBLE_R_TLV("Master Playback Volume",
+                        JZ4725B_CODEC_REG_CGR9,
+                        JZ4725B_CODEC_REG_CGR8,
+                        REG_CGR8_GOR_OFFSET,
+                        0x1f, 1, jz4725b_out_tlv),
+
+       SOC_SINGLE("DAC Playback Switch", JZ4725B_CODEC_REG_CR1,
                   REG_CR1_DAC_MUTE_OFFSET, 1, 1),
 
        SOC_SINGLE("Deemphasize Filter Playback Switch",