1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Platform data for Cirrus Logic Madera codecs 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Copyright (C) 2015-2018 Cirrus Logic 6*4882a593Smuzhiyun */ 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun #ifndef MADERA_PDATA_H 9*4882a593Smuzhiyun #define MADERA_PDATA_H 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #include <linux/kernel.h> 12*4882a593Smuzhiyun #include <linux/regulator/arizona-ldo1.h> 13*4882a593Smuzhiyun #include <linux/regulator/arizona-micsupp.h> 14*4882a593Smuzhiyun #include <linux/regulator/machine.h> 15*4882a593Smuzhiyun #include <sound/madera-pdata.h> 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun #define MADERA_MAX_MICBIAS 4 18*4882a593Smuzhiyun #define MADERA_MAX_CHILD_MICBIAS 4 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun #define MADERA_MAX_GPSW 2 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun struct gpio_desc; 23*4882a593Smuzhiyun struct pinctrl_map; 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun /** 26*4882a593Smuzhiyun * struct madera_pdata - Configuration data for Madera devices 27*4882a593Smuzhiyun * 28*4882a593Smuzhiyun * @reset: GPIO controlling /RESET (NULL = none) 29*4882a593Smuzhiyun * @ldo1: Substruct of pdata for the LDO1 regulator 30*4882a593Smuzhiyun * @micvdd: Substruct of pdata for the MICVDD regulator 31*4882a593Smuzhiyun * @irq_flags: Mode for primary IRQ (defaults to active low) 32*4882a593Smuzhiyun * @gpio_base: Base GPIO number 33*4882a593Smuzhiyun * @gpio_configs: Array of GPIO configurations (See 34*4882a593Smuzhiyun * Documentation/driver-api/pinctl.rst) 35*4882a593Smuzhiyun * @n_gpio_configs: Number of entries in gpio_configs 36*4882a593Smuzhiyun * @gpsw: General purpose switch mode setting. Depends on the external 37*4882a593Smuzhiyun * hardware connected to the switch. (See the SW1_MODE field 38*4882a593Smuzhiyun * in the datasheet for the available values for your codec) 39*4882a593Smuzhiyun * @codec: Substruct of pdata for the ASoC codec driver 40*4882a593Smuzhiyun */ 41*4882a593Smuzhiyun struct madera_pdata { 42*4882a593Smuzhiyun struct gpio_desc *reset; 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun struct arizona_ldo1_pdata ldo1; 45*4882a593Smuzhiyun struct arizona_micsupp_pdata micvdd; 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun unsigned int irq_flags; 48*4882a593Smuzhiyun int gpio_base; 49*4882a593Smuzhiyun 50*4882a593Smuzhiyun const struct pinctrl_map *gpio_configs; 51*4882a593Smuzhiyun int n_gpio_configs; 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun u32 gpsw[MADERA_MAX_GPSW]; 54*4882a593Smuzhiyun 55*4882a593Smuzhiyun struct madera_codec_pdata codec; 56*4882a593Smuzhiyun }; 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun #endif 59