0x0000000f
  ]   ˆl–Ãa¾”êj"Tâ€và›¸©‹FÿÈX‡¤~VÅ€d–Ým_J	µ5*q@µq·.JbÑ¿{‹„„-i[D<†ªoZƒ›Ù«96_‡I|¥ŠèªÅÑ  `    ‹      ‹A
€0ïó‹*R­½kS"ô#ßn
Ù°0“�L¢›È"‰"¢¨U´6Ïµˆ.†�ÏÔ`2$G„ÛxlÓê pðps²s±òòg†0¯s        !ˆÎÍƒq—[ÌÅÑ ç    !/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * include/linux/mfd/wm8994/pdata.h -- Platform data for WM8994
 *
 * Copyright 2009 Wolfson Microelectronics PLC.
 *
 * Author: Mark Brown <broonie@opensource.wolfsonmicro.com>
 */

#ifndef __MFD_WM8994_PDATA_H__
#define __MFD_WM8994_PDATA_H__

#define WM8994_NUM_LDO   2
#define WM8994_NUM_GPIO 11
#define WM8994_NUM_AIF   3

struct wm8994_ldo_pdata {
	const struct regulator_init_data *init_data;
};

#define WM8994_CONFIGURE_GPIO 0x10000

#define WM8994_DRC_REGS 5
#define WM8994_EQ_REGS  20
#define WM8958_MBC_CUTOFF_REGS 20
#define WM8958_MBC_COEFF_REGS  48
#define WM8958_MBC_COMBINED_REGS 56
#define WM8958_VSS_HPF_REGS 2
#define WM8958_VSS_REGS 148
#define WM8958_ENH_EQ_REGS 32

/**
 * DRC configurations are specified with a label and a set of register
 * values to write (the enable bits will be ignored).  At runtime an
 * enumerated control will be presented for each DRC block allowing
 * the user to choose the configuration to use.
 *
 * Configurations may be generated by hand or by using the DRC control
 * panel provided by the WISCE - see  http://www.wolfsonmicro.com/wisce/
 * for details.
 */
struct wm8994_drc_cfg {
        const char *name;
        u16 regs[WM8994_DRC_REGS];
};

/**
 * ReTune Mobile configurations are specified with a label, sample
 * rate and set of values to write (the enable bits will be ignored).
 *
 * Configurations are expected to be generated using the ReTune Mobile
 * control panel in WISCE - see http://www.wolfsonmicro.com/wisce/
 */
struct wm8994_retune_mobile_cfg {
        const char *name;
        unsigned int rate;
        u16 regs[WM8994_EQ_REGS];
};

/**
 * Multiband compressor configurations are specified with a label and
 * two sets of values to write.  Configurations are expected to be
 * generated using the multiband compressor configuration panel in
 * WISCE - see http://www.wolfsonmicro.com/wisce/
 */
struct wm8958_mbc_cfg {
	const char *name;
	u16 cutoff_regs[WM8958_MBC_CUTOFF_REGS];
	u16 coeff_regs[WM8958_MBC_COEFF_REGS];

	/* Coefficient layout when using MBC+VSS firmware */
	u16 combined_regs[WM8958_MBC_COMBINED_REGS];
};

/**
 * VSS HPF configurations are specified with a label and two values to
 * write.  Configurations are expected to be generated using the
 * multiband compressor configuration panel in WISCE - see
 * http://www.wolfsonmicro.com/wisce/
 */
struct wm8958_vss_hpf_cfg {
	const char *name;
	u16 regs[WM8958_VSS_HPF_REGS];
};

/**
 * VSS configurations are specified with a label and array of values
 * to write.  Configurations are expected to be generated using the
 * multiband compressor configuration panel in WISCE - see
 * http://www.wolfsonmicro.com/wisce/
 */
struct wm8958_vss_cfg {
	const char *name;
	u16 regs[WM8958_VSS_REGS];
};

/**
 * Enhanced EQ configurations are specified with a label and array of
 * values to write.  Configurations are expected to be generated using
 * the multiband compressor configuration panel in WISCE - see
 * http://www.wolfsonmicro.com/wisce/
 */
struct wm8958_enh_eq_cfg {
	const char *name;
	u16 regs[WM8958_ENH_EQ_REGS];
};

/**
 * Microphone detection rates, used to tune response rates and power
 * consumption for WM8958/WM1811 microphone detection.
 *
 * @sysclk: System clock rate to use this configuration for.
 * @idle: True if this configuration should use when no accessory is detected,
 *        false otherwise.
 * @start: Value for MICD_BIAS_START_TIME register field (not shifted).
 * @rate: Value for MICD_RATE register field (not shifted).
 */
struct wm8958_micd_rate {
	int sysclk;
	bool idle;
	int start;
	int rate;
};

struct wm8994_pdata {
	int gpio_base;

	/**
	 * Default values for GPIOs if non-zero, WM8994_CONFIGURE_GPIO
	 * can be used for all zero values.
	 */
	int gpio_defaults[WM8994_NUM_GPIO];

	struct wm8994_ld