};
/*
- * as3722_adc_extcon_platform_data: ADC platform data.
- * @connection_name: Extcon connection name.
+ * ADC auto conv property: Generate auto conv interrupt when threshold crossed.
+ * @adc_channel_number: ADC channel number for monitoring.
+ * @adc_high_threshold: ADC High raw data for upper threshold to generate int.
+ * @adc_low_threshold: ADC low raw data for lower threshold to generate int.
+ * @adc_shutdown: Shutdown when interrupt generated.
*/
-struct as3722_adc_extcon_platform_data {
- const char *connection_name;
- bool enable_adc1_continuous_mode;
- bool enable_low_voltage_range;
+struct as3722_adc_auto_conv_property {
int adc_channel;
int hi_threshold;
int low_threshold;
+ int auto_conversion_period_ms;
+ const char *connection_name;
+ bool enable_adc1_continuous_mode;
+ bool enable_low_voltage_range;
+};
+
+/*
+ * as3722_adc_extcon_platform_data: ADC platform data.
+ * @auto conv property: Generate auto conv interrupt when threshold crossed.
+ */
+struct as3722_adc_extcon_platform_data {
+ struct as3722_adc_auto_conv_property adc1_auto_conv_data;
};
struct as3722_platform_data {
#define AS3722_INTERRUPT_MASK4_OCCUR_ALARM_SD6 BIT(6)
#define AS3722_INTERRUPT_MASK4_ADC BIT(7)
-#define AS3722_ADC1_INTERVAL_TIME BIT(0)
-#define AS3722_ADC1_INT_MODE_ON BIT(1)
-#define AS3722_ADC_BUF_ON BIT(2)
-#define AS3722_ADC1_LOW_VOLTAGE_RANGE BIT(5)
-#define AS3722_ADC1_INTEVAL_SCAN BIT(6)
-#define AS3722_ADC1_INT_MASK BIT(7)
-
-#define AS3722_ADC_MSB_VAL_MASK 0x7F
-#define AS3722_ADC_LSB_VAL_MASK 0x07
-
-#define AS3722_ADC0_CONV_START BIT(7)
-#define AS3722_ADC0_CONV_NOTREADY BIT(7)
-#define AS3722_ADC0_SOURCE_SELECT_MASK 0x1F
-
-#define AS3722_ADC1_CONV_START BIT(7)
-#define AS3722_ADC1_CONV_NOTREADY BIT(7)
-#define AS3722_ADC1_SOURCE_SELECT_MASK 0x1F
+#define AS3722_ADC1_MASK_INTERVAL_TIME BIT(0)
+#define AS3722_ADC1_MASK_INT_MODE_ON BIT(1)
+#define AS3722_ADC_MASK_BUF_ON BIT(2)
+#define AS3722_ADC_MASK_LOW_VOLTAGE_RANGE BIT(5)
+#define AS3722_ADC1_MASK_INTEVAL_SCAN BIT(6)
+#define AS3722_ADC_MASK_CONV_START BIT(7)
+#define AS3722_ADC_MASK_CONV_NOTREADY BIT(7)
+#define AS3722_ADC_MASK_SOURCE_SELECT 0x1F
+#define AS3722_ADC_MASK_MSB_VAL 0x7F
+#define AS3722_ADC_MASK_LSB_VAL 0x07
/* GPIO modes */
#define AS3722_GPIO_MODE_MASK 0x07
return true;
}
+
+/* as3722 adc channel */
+enum {
+ AS3722_ADC_CH_SD0,
+ AS3722_ADC_CH_SD1,
+ AS3722_ADC_CH_SD6,
+ AS3722_ADC_CH_DTEMP,
+ AS3722_ADC_CH_VSUP,
+ AS3722_ADC_CH_GPIO1,
+ AS3722_ADC_CH_GPIO2,
+ AS3722_ADC_CH_GPIO3,
+ AS3722_ADC_CH_GPIO4,
+ AS3722_ADC_CH_GPIO6,
+ AS3722_ADC_CH_GPIO7,
+ AS3722_ADC_CH_VBAT,
+ AS3722_ADC_CH_ADC1,
+ AS3722_ADC_CH_ADC2,
+ AS3722_ADC_CH_TBD1,
+ AS3722_ADC_CH_TBD2,
+ AS3722_ADC_CH_T1SD0,
+ AS3722_ADC_CH_T2SD0,
+ AS3722_ADC_CH_T3SD0,
+ AS3722_ADC_CH_T4SD0,
+ AS3722_ADC_CH_TSD1,
+ AS3722_ADC_CH_T1SD6,
+ AS3722_ADC_CH_T2SD6,
+ AS3722_ADC_CH_MAX,
+};
+
+#define AS3722_DATASHEET_NAME(_name) "as3722-gpadc-chan-"#_name
+
+#define AS3722_GPADC_IIO_MAP(chan, _consumer, _comsumer_channel_name) \
+{ \
+ .adc_channel_label = AS3722_DATASHEET_NAME(chan), \
+ .consumer_dev_name = _consumer, \
+ .consumer_channel = _comsumer_channel_name, \
+}
#endif /* __LINUX_MFD_AS3722_H__ */