/* SPDX-License-Identifier: GPL-2.0-only */

#include <acpi/acpi_device.h>

#define NAU8825_MAX_BUTTONS 8

/*
 * Nuvoton NAU8825 audio codec devicetree bindings
 * linux/Documentation/devicetree/bindings/sound/nau8825.txt
 */
struct drivers_i2c_nau8825_config {
	/* Interrupt configuration */
	struct acpi_irq irq;
	struct acpi_gpio irq_gpio;

	/* I2C Bus Frequency in Hertz (default 400kHz) */
	unsigned int bus_speed;

	/* Enable jack detection via JKDET pin */
	unsigned int jkdet_enable;

	/* Enable JKDET pin pull if set, otherwise high impedance state */
	unsigned int jkdet_pull_enable;

	/* Pull-up JKDET pin if set, otherwise pull down */
	unsigned int jkdet_pull_up;

	/* JKDET pin polarity, 0 => active high, 1 => active low */
	unsigned int jkdet_polarity;

	/*
	 * VREF Impedance selection
	 *  0 - Open
	 *  1 - 25 kOhm
	 *  2 - 125 kOhm
	 *  3 - 2.5 kOhm
	 */
	unsigned int vref_impedance;

	/* Button impedance measurement hysteresis */
	unsigned int sar_hysteresis;

	/*
	 * Reference voltage for button impedance measurement and micbias
	 *  0 - VDDA
	 *  1 - VDDA
	 *  2 - VDDA * 1.1
	 *  3 - VDDA * 1.2
	 *  4 - VDDA * 1.3
	 *  5 - VDDA * 1.4
	 *  6 - VDDA * 1.53
	 *  7 - VDDA * 1.53
	 */
	unsigned int micbias_voltage;
	unsigned int sar_voltage;

	/*
	 * SAR compare time
	 *  0 - 500 ns
	 *  1 - 1 us
	 *  2 - 2 us
	 *  3 - 4 us
	 */
	unsigned int sar_compare_time;

	/*
	 * SAR sampling time
	 *  0 - 2 us
	 *  1 - 4 us
	 *  2 - 8 us
	 *  3 - 16 us
	 */
	unsigned int sar_sampling_time;

	/*
	 * Button short key press debounce time
	 *  0 - 30 ms
	 *  1 - 50 ms
	 *  2 - 100 ms
	 *  3 - 30 ms
	 */
	unsigned int short_key_debounce;

	/* Debounce time 2^(n+2) ms (0-7) for jack insert */
	unsigned int jack_insert_debounce;

	/* Debounce time 2^(n+2) ms (0-7) for jack eject */
	unsigned int jack_eject_debounce;

	/* Number of buttons supported, up to 8 */
	unsigned int sar_threshold_num;

	/*
	 * Impedance threshold for each button, up to 8
	 *  SAR = 255 * micbias_voltage / sar_voltage * R / (2000 + R)
	 *  R is Button impedance
	 */
	uint64_t sar_threshold[NAU8825_MAX_BUTTONS];
};
