cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

pdata.h (6375B)


      1/* SPDX-License-Identifier: GPL-2.0-or-later */
      2/*
      3 * include/linux/mfd/wm8994/pdata.h -- Platform data for WM8994
      4 *
      5 * Copyright 2009 Wolfson Microelectronics PLC.
      6 *
      7 * Author: Mark Brown <broonie@opensource.wolfsonmicro.com>
      8 */
      9
     10#ifndef __MFD_WM8994_PDATA_H__
     11#define __MFD_WM8994_PDATA_H__
     12
     13#define WM8994_NUM_LDO   2
     14#define WM8994_NUM_GPIO 11
     15#define WM8994_NUM_AIF   3
     16
     17struct wm8994_ldo_pdata {
     18	const struct regulator_init_data *init_data;
     19};
     20
     21#define WM8994_CONFIGURE_GPIO 0x10000
     22
     23#define WM8994_DRC_REGS 5
     24#define WM8994_EQ_REGS  20
     25#define WM8958_MBC_CUTOFF_REGS 20
     26#define WM8958_MBC_COEFF_REGS  48
     27#define WM8958_MBC_COMBINED_REGS 56
     28#define WM8958_VSS_HPF_REGS 2
     29#define WM8958_VSS_REGS 148
     30#define WM8958_ENH_EQ_REGS 32
     31
     32/**
     33 * DRC configurations are specified with a label and a set of register
     34 * values to write (the enable bits will be ignored).  At runtime an
     35 * enumerated control will be presented for each DRC block allowing
     36 * the user to choose the configuration to use.
     37 *
     38 * Configurations may be generated by hand or by using the DRC control
     39 * panel provided by the WISCE - see  http://www.wolfsonmicro.com/wisce/
     40 * for details.
     41 */
     42struct wm8994_drc_cfg {
     43        const char *name;
     44        u16 regs[WM8994_DRC_REGS];
     45};
     46
     47/**
     48 * ReTune Mobile configurations are specified with a label, sample
     49 * rate and set of values to write (the enable bits will be ignored).
     50 *
     51 * Configurations are expected to be generated using the ReTune Mobile
     52 * control panel in WISCE - see http://www.wolfsonmicro.com/wisce/
     53 */
     54struct wm8994_retune_mobile_cfg {
     55        const char *name;
     56        unsigned int rate;
     57        u16 regs[WM8994_EQ_REGS];
     58};
     59
     60/**
     61 * Multiband compressor configurations are specified with a label and
     62 * two sets of values to write.  Configurations are expected to be
     63 * generated using the multiband compressor configuration panel in
     64 * WISCE - see http://www.wolfsonmicro.com/wisce/
     65 */
     66struct wm8958_mbc_cfg {
     67	const char *name;
     68	u16 cutoff_regs[WM8958_MBC_CUTOFF_REGS];
     69	u16 coeff_regs[WM8958_MBC_COEFF_REGS];
     70
     71	/* Coefficient layout when using MBC+VSS firmware */
     72	u16 combined_regs[WM8958_MBC_COMBINED_REGS];
     73};
     74
     75/**
     76 * VSS HPF configurations are specified with a label and two values to
     77 * write.  Configurations are expected to be generated using the
     78 * multiband compressor configuration panel in WISCE - see
     79 * http://www.wolfsonmicro.com/wisce/
     80 */
     81struct wm8958_vss_hpf_cfg {
     82	const char *name;
     83	u16 regs[WM8958_VSS_HPF_REGS];
     84};
     85
     86/**
     87 * VSS configurations are specified with a label and array of values
     88 * to write.  Configurations are expected to be generated using the
     89 * multiband compressor configuration panel in WISCE - see
     90 * http://www.wolfsonmicro.com/wisce/
     91 */
     92struct wm8958_vss_cfg {
     93	const char *name;
     94	u16 regs[WM8958_VSS_REGS];
     95};
     96
     97/**
     98 * Enhanced EQ configurations are specified with a label and array of
     99 * values to write.  Configurations are expected to be generated using
    100 * the multiband compressor configuration panel in WISCE - see
    101 * http://www.wolfsonmicro.com/wisce/
    102 */
    103struct wm8958_enh_eq_cfg {
    104	const char *name;
    105	u16 regs[WM8958_ENH_EQ_REGS];
    106};
    107
    108/**
    109 * Microphone detection rates, used to tune response rates and power
    110 * consumption for WM8958/WM1811 microphone detection.
    111 *
    112 * @sysclk: System clock rate to use this configuration for.
    113 * @idle: True if this configuration should use when no accessory is detected,
    114 *        false otherwise.
    115 * @start: Value for MICD_BIAS_START_TIME register field (not shifted).
    116 * @rate: Value for MICD_RATE register field (not shifted).
    117 */
    118struct wm8958_micd_rate {
    119	int sysclk;
    120	bool idle;
    121	int start;
    122	int rate;
    123};
    124
    125struct wm8994_pdata {
    126	int gpio_base;
    127
    128	/**
    129	 * Default values for GPIOs if non-zero, WM8994_CONFIGURE_GPIO
    130	 * can be used for all zero values.
    131	 */
    132	int gpio_defaults[WM8994_NUM_GPIO];
    133
    134	struct wm8994_ldo_pdata ldo[WM8994_NUM_LDO];
    135
    136	int irq_base;  /** Base IRQ number for WM8994, required for IRQs */
    137	unsigned long irq_flags; /** user irq flags */
    138
    139        int num_drc_cfgs;
    140        struct wm8994_drc_cfg *drc_cfgs;
    141
    142        int num_retune_mobile_cfgs;
    143        struct wm8994_retune_mobile_cfg *retune_mobile_cfgs;
    144
    145	int num_mbc_cfgs;
    146	struct wm8958_mbc_cfg *mbc_cfgs;
    147
    148	int num_vss_cfgs;
    149	struct wm8958_vss_cfg *vss_cfgs;
    150
    151	int num_vss_hpf_cfgs;
    152	struct wm8958_vss_hpf_cfg *vss_hpf_cfgs;
    153
    154	int num_enh_eq_cfgs;
    155	struct wm8958_enh_eq_cfg *enh_eq_cfgs;
    156
    157	int num_micd_rates;
    158	struct wm8958_micd_rate *micd_rates;
    159
    160	/* Power up delays to add after microphone bias power up (ms) */
    161	int micb1_delay;
    162	int micb2_delay;
    163
    164        /* LINEOUT can be differential or single ended */
    165        unsigned int lineout1_diff:1;
    166        unsigned int lineout2_diff:1;
    167
    168        /* Common mode feedback */
    169        unsigned int lineout1fb:1;
    170        unsigned int lineout2fb:1;
    171
    172	/* Delay between detecting a jack and starting microphone
    173	 * detect (specified in ms)
    174	 */
    175	int micdet_delay;
    176
    177	/* Delay between microphone detect completing and reporting on
    178	 * insert (specified in ms)
    179	 */
    180	int mic_id_delay;
    181
    182	/* IRQ for microphone detection if brought out directly as a
    183	 * signal.
    184	 */
    185	int micdet_irq;
    186
    187        /* WM8994 microphone biases: 0=0.9*AVDD1 1=0.65*AVVD1 */
    188        unsigned int micbias1_lvl:1;
    189        unsigned int micbias2_lvl:1;
    190
    191        /* WM8994 jack detect threashold levels, see datasheet for values */
    192        unsigned int jd_scthr:2;
    193        unsigned int jd_thr:2;
    194
    195	/* Configure WM1811 jack detection for use with external capacitor */
    196	unsigned int jd_ext_cap:1;
    197
    198	/* WM8958 microphone bias configuration */
    199	int micbias[2];
    200
    201	/* WM8958 microphone detection ranges */
    202	u16 micd_lvl_sel;
    203
    204	/* Disable the internal pull downs on the LDOs if they are
    205	 * always driven (eg, connected to an always on supply or
    206	 * GPIO that always drives an output.  If they float power
    207	 * consumption will rise.
    208	 */
    209	bool ldo_ena_always_driven;
    210
    211	/*
    212	 * SPKMODE must be pulled internally by the device on this
    213	 * system.
    214	 */
    215	bool spkmode_pu;
    216
    217	/*
    218	 * CS/ADDR must be pulled internally by the device on this
    219	 * system.
    220	 */
    221	bool csnaddr_pd;
    222
    223	/**
    224	 * Maximum number of channels clocks will be generated for,
    225	 * useful for systems where and I2S bus with multiple data
    226	 * lines is mastered.
    227	 */
    228	int max_channels_clocked[WM8994_NUM_AIF];
    229
    230	/**
    231	 * GPIO for the IRQ pin if host only supports edge triggering
    232	 */
    233	int irq_gpio;
    234};
    235
    236#endif