/*
 * SPDX-License-Identifier: Apache-2.0
 *
 * Copyright (c) 2020 Linaro Limited
 * Copyright 2023-2024 NXP
 */

#include <zephyr/dt-bindings/adc/mcux-lpadc.h>

/ {
	zephyr,user {
		/* adjust channel number according to pinmux in board.dts */
		io-channels = <&lpadc0 0>, <&lpadc0 1>;
	};
};

&lpadc0 {
	#address-cells = <1>;
	#size-cells = <0>;

	/*
	 * To use this sample:
	 * LPADC0 CH0A and CH0B are set up in differential mode (B-A)
	 * - Connect LPADC0 CH0A signal to voltage between 0~1.8V (J30 pin 1)
	 * - Connect LPADC0 CH0B signal to voltage between 0~1.8V (J30 pin 2)
	 * LPADC0 CH2A is set up in single ended mode
	 * - Connect LPADC0 CH2A signal to voltage between 0~1.8V (J30 pin 3)
	 */

	channel@0 {
		reg = <0>;
		zephyr,gain = "ADC_GAIN_1";
		zephyr,reference = "ADC_REF_EXTERNAL0";
		zephyr,vref-mv = <1800>;
		zephyr,acquisition-time = <ADC_ACQ_TIME(ADC_ACQ_TIME_TICKS, 7)>;
		zephyr,resolution = <13>;
		zephyr,input-positive = <MCUX_LPADC_CH0B>;
		zephyr,input-negative = <MCUX_LPADC_CH0A>;
	};

	channel@1 {
		reg = <1>;
		zephyr,gain = "ADC_GAIN_1";
		zephyr,reference = "ADC_REF_EXTERNAL0";
		zephyr,vref-mv = <1800>;
		zephyr,acquisition-time = <ADC_ACQ_TIME(ADC_ACQ_TIME_TICKS, 7)>;
		zephyr,resolution = <12>;
		zephyr,input-positive = <MCUX_LPADC_CH2A>;
	};
};
