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