xref: /openbmc/linux/include/sound/wm8962.h (revision 75bf465f0bc33e9b776a46d6a1b9b990f5fb7c37)
1*d2912cb1SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */
29a76f1ffSMark Brown /*
39a76f1ffSMark Brown  * wm8962.h  --  WM8962 Soc Audio driver platform data
49a76f1ffSMark Brown  */
59a76f1ffSMark Brown 
69a76f1ffSMark Brown #ifndef _WM8962_PDATA_H
79a76f1ffSMark Brown #define _WM8962_PDATA_H
89a76f1ffSMark Brown 
99a76f1ffSMark Brown #define WM8962_MAX_GPIO 6
109a76f1ffSMark Brown 
119a76f1ffSMark Brown /* Use to set GPIO default values to zero */
129a76f1ffSMark Brown #define WM8962_GPIO_SET 0x10000
139a76f1ffSMark Brown 
147cd873c2SMark Brown #define WM8962_GPIO_FN_CLKOUT           0
157cd873c2SMark Brown #define WM8962_GPIO_FN_LOGIC            1
167cd873c2SMark Brown #define WM8962_GPIO_FN_SDOUT            2
177cd873c2SMark Brown #define WM8962_GPIO_FN_IRQ              3
187cd873c2SMark Brown #define WM8962_GPIO_FN_THERMAL          4
197cd873c2SMark Brown #define WM8962_GPIO_FN_PLL2_LOCK        6
207cd873c2SMark Brown #define WM8962_GPIO_FN_PLL3_LOCK        7
217cd873c2SMark Brown #define WM8962_GPIO_FN_FLL_LOCK         9
227cd873c2SMark Brown #define WM8962_GPIO_FN_DRC_ACT         10
237cd873c2SMark Brown #define WM8962_GPIO_FN_WSEQ_DONE       11
247cd873c2SMark Brown #define WM8962_GPIO_FN_ALC_NG_ACT      12
257cd873c2SMark Brown #define WM8962_GPIO_FN_ALC_PEAK_LIMIT  13
267cd873c2SMark Brown #define WM8962_GPIO_FN_ALC_SATURATION  14
277cd873c2SMark Brown #define WM8962_GPIO_FN_ALC_LEVEL_THR   15
287cd873c2SMark Brown #define WM8962_GPIO_FN_ALC_LEVEL_LOCK  16
297cd873c2SMark Brown #define WM8962_GPIO_FN_FIFO_ERR        17
307cd873c2SMark Brown #define WM8962_GPIO_FN_OPCLK           18
317cd873c2SMark Brown #define WM8962_GPIO_FN_DMICCLK         19
327cd873c2SMark Brown #define WM8962_GPIO_FN_DMICDAT         20
337cd873c2SMark Brown #define WM8962_GPIO_FN_MICD            21
347cd873c2SMark Brown #define WM8962_GPIO_FN_MICSCD          22
357cd873c2SMark Brown 
369a76f1ffSMark Brown struct wm8962_pdata {
37d7821953SNicolin Chen 	struct clk *mclk;
383367b8d4SMark Brown 	int gpio_base;
399a76f1ffSMark Brown 	u32 gpio_init[WM8962_MAX_GPIO];
409a76f1ffSMark Brown 
41a4f28c00SMark Brown 	/* Setup for microphone detection, raw value to be written to
42a4f28c00SMark Brown 	 * R48(0x30) - only microphone related bits will be updated.
43a4f28c00SMark Brown 	 * Detection may be enabled here for use with signals brought
44a4f28c00SMark Brown 	 * out on the GPIOs. */
45a4f28c00SMark Brown 	u32 mic_cfg;
46a4f28c00SMark Brown 
4745e65504SMark Brown 	bool irq_active_low;
4845e65504SMark Brown 
499a76f1ffSMark Brown 	bool spk_mono;   /* Speaker outputs tied together as mono */
50182c51ceSMark Brown 
51182c51ceSMark Brown 	/**
52182c51ceSMark Brown 	 * This flag should be set if one or both IN4 inputs is wired
53182c51ceSMark Brown 	 * in a DC measurement configuration.
54182c51ceSMark Brown 	 */
55182c51ceSMark Brown 	bool in4_dc_measure;
569a76f1ffSMark Brown };
579a76f1ffSMark Brown 
589a76f1ffSMark Brown #endif
59