linux/sound/soc/codecs/wm8955.h

/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * wm8955.h  --  WM8904 ASoC driver
 *
 * Copyright 2009 Wolfson Microelectronics, plc
 *
 * Author: Mark Brown <[email protected]>
 */

#ifndef _WM8955_H
#define _WM8955_H

#define WM8955_CLK_MCLK

/*
 * Register values.
 */
#define WM8955_LOUT1_VOLUME
#define WM8955_ROUT1_VOLUME
#define WM8955_DAC_CONTROL
#define WM8955_AUDIO_INTERFACE
#define WM8955_SAMPLE_RATE
#define WM8955_LEFT_DAC_VOLUME
#define WM8955_RIGHT_DAC_VOLUME
#define WM8955_BASS_CONTROL
#define WM8955_TREBLE_CONTROL
#define WM8955_RESET
#define WM8955_ADDITIONAL_CONTROL_1
#define WM8955_ADDITIONAL_CONTROL_2
#define WM8955_POWER_MANAGEMENT_1
#define WM8955_POWER_MANAGEMENT_2
#define WM8955_ADDITIONAL_CONTROL_3
#define WM8955_LEFT_OUT_MIX_1
#define WM8955_LEFT_OUT_MIX_2
#define WM8955_RIGHT_OUT_MIX_1
#define WM8955_RIGHT_OUT_MIX_2
#define WM8955_MONO_OUT_MIX_1
#define WM8955_MONO_OUT_MIX_2
#define WM8955_LOUT2_VOLUME
#define WM8955_ROUT2_VOLUME
#define WM8955_MONOOUT_VOLUME
#define WM8955_CLOCKING_PLL
#define WM8955_PLL_CONTROL_1
#define WM8955_PLL_CONTROL_2
#define WM8955_PLL_CONTROL_3
#define WM8955_PLL_CONTROL_4

#define WM8955_REGISTER_COUNT
#define WM8955_MAX_REGISTER

/*
 * Field Definitions.
 */

/*
 * R2 (0x02) - LOUT1 volume
 */
#define WM8955_LO1VU
#define WM8955_LO1VU_MASK
#define WM8955_LO1VU_SHIFT
#define WM8955_LO1VU_WIDTH
#define WM8955_LO1ZC
#define WM8955_LO1ZC_MASK
#define WM8955_LO1ZC_SHIFT
#define WM8955_LO1ZC_WIDTH
#define WM8955_LOUTVOL_MASK
#define WM8955_LOUTVOL_SHIFT
#define WM8955_LOUTVOL_WIDTH

/*
 * R3 (0x03) - ROUT1 volume
 */
#define WM8955_RO1VU
#define WM8955_RO1VU_MASK
#define WM8955_RO1VU_SHIFT
#define WM8955_RO1VU_WIDTH
#define WM8955_RO1ZC
#define WM8955_RO1ZC_MASK
#define WM8955_RO1ZC_SHIFT
#define WM8955_RO1ZC_WIDTH
#define WM8955_ROUTVOL_MASK
#define WM8955_ROUTVOL_SHIFT
#define WM8955_ROUTVOL_WIDTH

/*
 * R5 (0x05) - DAC Control
 */
#define WM8955_DAT
#define WM8955_DAT_MASK
#define WM8955_DAT_SHIFT
#define WM8955_DAT_WIDTH
#define WM8955_DACMU
#define WM8955_DACMU_MASK
#define WM8955_DACMU_SHIFT
#define WM8955_DACMU_WIDTH
#define WM8955_DEEMPH_MASK
#define WM8955_DEEMPH_SHIFT
#define WM8955_DEEMPH_WIDTH

/*
 * R7 (0x07) - Audio Interface
 */
#define WM8955_BCLKINV
#define WM8955_BCLKINV_MASK
#define WM8955_BCLKINV_SHIFT
#define WM8955_BCLKINV_WIDTH
#define WM8955_MS
#define WM8955_MS_MASK
#define WM8955_MS_SHIFT
#define WM8955_MS_WIDTH
#define WM8955_LRSWAP
#define WM8955_LRSWAP_MASK
#define WM8955_LRSWAP_SHIFT
#define WM8955_LRSWAP_WIDTH
#define WM8955_LRP
#define WM8955_LRP_MASK
#define WM8955_LRP_SHIFT
#define WM8955_LRP_WIDTH
#define WM8955_WL_MASK
#define WM8955_WL_SHIFT
#define WM8955_WL_WIDTH
#define WM8955_FORMAT_MASK
#define WM8955_FORMAT_SHIFT
#define WM8955_FORMAT_WIDTH

/*
 * R8 (0x08) - Sample Rate
 */
#define WM8955_BCLKDIV2
#define WM8955_BCLKDIV2_MASK
#define WM8955_BCLKDIV2_SHIFT
#define WM8955_BCLKDIV2_WIDTH
#define WM8955_MCLKDIV2
#define WM8955_MCLKDIV2_MASK
#define WM8955_MCLKDIV2_SHIFT
#define WM8955_MCLKDIV2_WIDTH
#define WM8955_SR_MASK
#define WM8955_SR_SHIFT
#define WM8955_SR_WIDTH
#define WM8955_USB
#define WM8955_USB_MASK
#define WM8955_USB_SHIFT
#define WM8955_USB_WIDTH

/*
 * R10 (0x0A) - Left DAC volume
 */
#define WM8955_LDVU
#define WM8955_LDVU_MASK
#define WM8955_LDVU_SHIFT
#define WM8955_LDVU_WIDTH
#define WM8955_LDACVOL_MASK
#define WM8955_LDACVOL_SHIFT
#define WM8955_LDACVOL_WIDTH

/*
 * R11 (0x0B) - Right DAC volume
 */
#define WM8955_RDVU
#define WM8955_RDVU_MASK
#define WM8955_RDVU_SHIFT
#define WM8955_RDVU_WIDTH
#define WM8955_RDACVOL_MASK
#define WM8955_RDACVOL_SHIFT
#define WM8955_RDACVOL_WIDTH

/*
 * R12 (0x0C) - Bass control
 */
#define WM8955_BB
#define WM8955_BB_MASK
#define WM8955_BB_SHIFT
#define WM8955_BB_WIDTH
#define WM8955_BC
#define WM8955_BC_MASK
#define WM8955_BC_SHIFT
#define WM8955_BC_WIDTH
#define WM8955_BASS_MASK
#define WM8955_BASS_SHIFT
#define WM8955_BASS_WIDTH

/*
 * R13 (0x0D) - Treble control
 */
#define WM8955_TC
#define WM8955_TC_MASK
#define WM8955_TC_SHIFT
#define WM8955_TC_WIDTH
#define WM8955_TRBL_MASK
#define WM8955_TRBL_SHIFT
#define WM8955_TRBL_WIDTH

/*
 * R15 (0x0F) - Reset
 */
#define WM8955_RESET_MASK
#define WM8955_RESET_SHIFT
#define WM8955_RESET_WIDTH

/*
 * R23 (0x17) - Additional control (1)
 */
#define WM8955_TSDEN
#define WM8955_TSDEN_MASK
#define WM8955_TSDEN_SHIFT
#define WM8955_TSDEN_WIDTH
#define WM8955_VSEL_MASK
#define WM8955_VSEL_SHIFT
#define WM8955_VSEL_WIDTH
#define WM8955_DMONOMIX_MASK
#define WM8955_DMONOMIX_SHIFT
#define WM8955_DMONOMIX_WIDTH
#define WM8955_DACINV
#define WM8955_DACINV_MASK
#define WM8955_DACINV_SHIFT
#define WM8955_DACINV_WIDTH
#define WM8955_TOEN
#define WM8955_TOEN_MASK
#define WM8955_TOEN_SHIFT
#define WM8955_TOEN_WIDTH

/*
 * R24 (0x18) - Additional control (2)
 */
#define WM8955_OUT3SW_MASK
#define WM8955_OUT3SW_SHIFT
#define WM8955_OUT3SW_WIDTH
#define WM8955_ROUT2INV
#define WM8955_ROUT2INV_MASK
#define WM8955_ROUT2INV_SHIFT
#define WM8955_ROUT2INV_WIDTH
#define WM8955_DACOSR
#define WM8955_DACOSR_MASK
#define WM8955_DACOSR_SHIFT
#define WM8955_DACOSR_WIDTH

/*
 * R25 (0x19) - Power Management (1)
 */
#define WM8955_VMIDSEL_MASK
#define WM8955_VMIDSEL_SHIFT
#define WM8955_VMIDSEL_WIDTH
#define WM8955_VREF
#define WM8955_VREF_MASK
#define WM8955_VREF_SHIFT
#define WM8955_VREF_WIDTH
#define WM8955_DIGENB
#define WM8955_DIGENB_MASK
#define WM8955_DIGENB_SHIFT
#define WM8955_DIGENB_WIDTH

/*
 * R26 (0x1A) - Power Management (2)
 */
#define WM8955_DACL
#define WM8955_DACL_MASK
#define WM8955_DACL_SHIFT
#define WM8955_DACL_WIDTH
#define WM8955_DACR
#define WM8955_DACR_MASK
#define WM8955_DACR_SHIFT
#define WM8955_DACR_WIDTH
#define WM8955_LOUT1
#define WM8955_LOUT1_MASK
#define WM8955_LOUT1_SHIFT
#define WM8955_LOUT1_WIDTH
#define WM8955_ROUT1
#define WM8955_ROUT1_MASK
#define WM8955_ROUT1_SHIFT
#define WM8955_ROUT1_WIDTH
#define WM8955_LOUT2
#define WM8955_LOUT2_MASK
#define WM8955_LOUT2_SHIFT
#define WM8955_LOUT2_WIDTH
#define WM8955_ROUT2
#define WM8955_ROUT2_MASK
#define WM8955_ROUT2_SHIFT
#define WM8955_ROUT2_WIDTH
#define WM8955_MONO
#define WM8955_MONO_MASK
#define WM8955_MONO_SHIFT
#define WM8955_MONO_WIDTH
#define WM8955_OUT3
#define WM8955_OUT3_MASK
#define WM8955_OUT3_SHIFT
#define WM8955_OUT3_WIDTH

/*
 * R27 (0x1B) - Additional Control (3)
 */
#define WM8955_VROI
#define WM8955_VROI_MASK
#define WM8955_VROI_SHIFT
#define WM8955_VROI_WIDTH

/*
 * R34 (0x22) - Left out Mix (1)
 */
#define WM8955_LD2LO
#define WM8955_LD2LO_MASK
#define WM8955_LD2LO_SHIFT
#define WM8955_LD2LO_WIDTH
#define WM8955_LI2LO
#define WM8955_LI2LO_MASK
#define WM8955_LI2LO_SHIFT
#define WM8955_LI2LO_WIDTH
#define WM8955_LI2LOVOL_MASK
#define WM8955_LI2LOVOL_SHIFT
#define WM8955_LI2LOVOL_WIDTH

/*
 * R35 (0x23) - Left out Mix (2)
 */
#define WM8955_RD2LO
#define WM8955_RD2LO_MASK
#define WM8955_RD2LO_SHIFT
#define WM8955_RD2LO_WIDTH
#define WM8955_RI2LO
#define WM8955_RI2LO_MASK
#define WM8955_RI2LO_SHIFT
#define WM8955_RI2LO_WIDTH
#define WM8955_RI2LOVOL_MASK
#define WM8955_RI2LOVOL_SHIFT
#define WM8955_RI2LOVOL_WIDTH

/*
 * R36 (0x24) - Right out Mix (1)
 */
#define WM8955_LD2RO
#define WM8955_LD2RO_MASK
#define WM8955_LD2RO_SHIFT
#define WM8955_LD2RO_WIDTH
#define WM8955_LI2RO
#define WM8955_LI2RO_MASK
#define WM8955_LI2RO_SHIFT
#define WM8955_LI2RO_WIDTH
#define WM8955_LI2ROVOL_MASK
#define WM8955_LI2ROVOL_SHIFT
#define WM8955_LI2ROVOL_WIDTH

/*
 * R37 (0x25) - Right Out Mix (2)
 */
#define WM8955_RD2RO
#define WM8955_RD2RO_MASK
#define WM8955_RD2RO_SHIFT
#define WM8955_RD2RO_WIDTH
#define WM8955_RI2RO
#define WM8955_RI2RO_MASK
#define WM8955_RI2RO_SHIFT
#define WM8955_RI2RO_WIDTH
#define WM8955_RI2ROVOL_MASK
#define WM8955_RI2ROVOL_SHIFT
#define WM8955_RI2ROVOL_WIDTH

/*
 * R38 (0x26) - Mono out Mix (1)
 */
#define WM8955_LD2MO
#define WM8955_LD2MO_MASK
#define WM8955_LD2MO_SHIFT
#define WM8955_LD2MO_WIDTH
#define WM8955_LI2MO
#define WM8955_LI2MO_MASK
#define WM8955_LI2MO_SHIFT
#define WM8955_LI2MO_WIDTH
#define WM8955_LI2MOVOL_MASK
#define WM8955_LI2MOVOL_SHIFT
#define WM8955_LI2MOVOL_WIDTH
#define WM8955_DMEN
#define WM8955_DMEN_MASK
#define WM8955_DMEN_SHIFT
#define WM8955_DMEN_WIDTH

/*
 * R39 (0x27) - Mono out Mix (2)
 */
#define WM8955_RD2MO
#define WM8955_RD2MO_MASK
#define WM8955_RD2MO_SHIFT
#define WM8955_RD2MO_WIDTH
#define WM8955_RI2MO
#define WM8955_RI2MO_MASK
#define WM8955_RI2MO_SHIFT
#define WM8955_RI2MO_WIDTH
#define WM8955_RI2MOVOL_MASK
#define WM8955_RI2MOVOL_SHIFT
#define WM8955_RI2MOVOL_WIDTH

/*
 * R40 (0x28) - LOUT2 volume
 */
#define WM8955_LO2VU
#define WM8955_LO2VU_MASK
#define WM8955_LO2VU_SHIFT
#define WM8955_LO2VU_WIDTH
#define WM8955_LO2ZC
#define WM8955_LO2ZC_MASK
#define WM8955_LO2ZC_SHIFT
#define WM8955_LO2ZC_WIDTH
#define WM8955_LOUT2VOL_MASK
#define WM8955_LOUT2VOL_SHIFT
#define WM8955_LOUT2VOL_WIDTH

/*
 * R41 (0x29) - ROUT2 volume
 */
#define WM8955_RO2VU
#define WM8955_RO2VU_MASK
#define WM8955_RO2VU_SHIFT
#define WM8955_RO2VU_WIDTH
#define WM8955_RO2ZC
#define WM8955_RO2ZC_MASK
#define WM8955_RO2ZC_SHIFT
#define WM8955_RO2ZC_WIDTH
#define WM8955_ROUT2VOL_MASK
#define WM8955_ROUT2VOL_SHIFT
#define WM8955_ROUT2VOL_WIDTH

/*
 * R42 (0x2A) - MONOOUT volume
 */
#define WM8955_MOZC
#define WM8955_MOZC_MASK
#define WM8955_MOZC_SHIFT
#define WM8955_MOZC_WIDTH
#define WM8955_MOUTVOL_MASK
#define WM8955_MOUTVOL_SHIFT
#define WM8955_MOUTVOL_WIDTH

/*
 * R43 (0x2B) - Clocking / PLL
 */
#define WM8955_MCLKSEL
#define WM8955_MCLKSEL_MASK
#define WM8955_MCLKSEL_SHIFT
#define WM8955_MCLKSEL_WIDTH
#define WM8955_PLLOUTDIV2
#define WM8955_PLLOUTDIV2_MASK
#define WM8955_PLLOUTDIV2_SHIFT
#define WM8955_PLLOUTDIV2_WIDTH
#define WM8955_PLL_RB
#define WM8955_PLL_RB_MASK
#define WM8955_PLL_RB_SHIFT
#define WM8955_PLL_RB_WIDTH
#define WM8955_PLLEN
#define WM8955_PLLEN_MASK
#define WM8955_PLLEN_SHIFT
#define WM8955_PLLEN_WIDTH

/*
 * R44 (0x2C) - PLL Control 1
 */
#define WM8955_N_MASK
#define WM8955_N_SHIFT
#define WM8955_N_WIDTH
#define WM8955_K_21_18_MASK
#define WM8955_K_21_18_SHIFT
#define WM8955_K_21_18_WIDTH

/*
 * R45 (0x2D) - PLL Control 2
 */
#define WM8955_K_17_9_MASK
#define WM8955_K_17_9_SHIFT
#define WM8955_K_17_9_WIDTH

/*
 * R46 (0x2E) - PLL Control 3
 */
#define WM8955_K_8_0_MASK
#define WM8955_K_8_0_SHIFT
#define WM8955_K_8_0_WIDTH

/*
 * R59 (0x3B) - PLL Control 4
 */
#define WM8955_KEN
#define WM8955_KEN_MASK
#define WM8955_KEN_SHIFT
#define WM8955_KEN_WIDTH

#endif