blob: 47910fb7a02c9bab875f53bee9f1098d17a09a65 [file] [log] [blame]
/* SPDX-License-Identifier: GPL-2.0-only */
#ifndef __DRIVERS_I2C_SX9324_CHIP_H__
#define __DRIVERS_I2C_SX9324_CHIP_H__
#include <acpi/acpi_device.h>
#include <device/i2c_simple.h>
#define REGISTER(NAME) uint8_t NAME
struct drivers_i2c_sx9324_config {
/* Device Description */
const char *desc;
/* ACPI _UID */
unsigned int uid;
/* Bus speed in Hz, default is I2C_SPEED_FAST */
enum i2c_speed speed;
/* Use GPIO-based interrupt instead of IO-APIC */
struct acpi_gpio irq_gpio;
/* IO-APIC interrupt */
struct acpi_irq irq;
/*
semtech,ph0-pin:
description: |
Array of 3 entries. Index represent the id of the CS pin.
Value indicates how each CS pin is used during phase 0.
Each of the 3 pins have the following value -
0 : unused (high impedance)
1 : measured input
2 : dynamic shield
3 : grounded.
For instance, CS0 measured, CS1 shield and CS2 ground is [1, 2, 3]
items:
enum: [ 0, 1, 2, 3 ]
minItems: 3
maxItems: 3
*/
uint64_t ph0_pin[3];
/*
semtech,ph1-pin:
Same as ph0-pin for phase 1.
*/
uint64_t ph1_pin[3];
/*
semtech,ph2-pin:
Same as ph0-pin for phase 2.
*/
uint64_t ph2_pin[3];
/*
semtech,ph3-pin:
Same as ph0-pin for phase 3.
*/
uint64_t ph3_pin[3];
/*
semtech,ph01-resolution:
enum: [8, 16, 32, 64, 128, 256, 512, 1024]
description:
Capacitance measurement resolution. For phase 0 and 1.
Higher the number, higher the resolution.
default: 128
*/
uint64_t ph01_resolution;
/*
semtech,ph23-resolution:
Same as ph01-resolution for phase 2 and 3.
*/
uint64_t ph23_resolution;
/*
semtech,startup-sensor:
enum: [0, 1, 2, 3]
default: 0
description: |
Phase used for start-up proximity detection.
It is used when we enable a phase to remove static offset and measure
only capacitance changes introduced by the user.
*/
uint64_t startup_sensor;
/*
semtech,ph01-proxraw-strength:
minimum: 0
maximum: 7
default: 1
description:
PROXRAW filter strength for phase 0 and 1. A value of 0 represents off,
and other values represent 1-1/2^N.
*/
uint64_t ph01_proxraw_strength;
/*
semtech,ph23-proxraw-strength:
Same as proxraw-strength01, for phase 2 and 3.
*/
uint64_t ph23_proxraw_strength;
/*
semtech,avg-pos-strength:
enum: [0, 16, 64, 128, 256, 512, 1024, 4294967295]
default: 16
description: |
Average positive filter strength. A value of 0 represents off and
UINT_MAX (4294967295) represents infinite. Other values
represent 1-1/N.
*/
uint64_t avg_pos_strength;
/*
semtech,cs-idle-sleep:
description:
State of CS pins during sleep mode and idle time.
enum:
- hi-z
- gnd
- vdd
*/
const char *cs_idle_sleep;
/*
semtech,int-comp-resistor:
description:
Internal resistor setting for compensation.
enum:
- lowest
- low
- high
- highest
*/
const char *int_comp_resistor;
/*
semtech,input-precharge-resistor-ohms:
default: 4000
multipleOf: 2000
minimum: 0
maximum: 30000
description:
Pre-charge input resistance in Ohm.
*/
uint64_t input_precharge_resistor_ohms;
/*
semtech,input-analog-gain:
minimum: 0
maximum: 3
description: |
Defines the input antenna analog gain
0: x1.247
1: x1 (default)
2: x0.768
3: x0.552
*/
uint64_t input_analog_gain;
#if CONFIG(DRIVERS_I2C_SX9324_SUPPORT_LEGACY_LINUX_DRIVER)
#include "registers.h"
#endif
};
#undef REGISTER
#endif /* __DRIVERS_I2C_SX9324_CHIP_H__ */