linux/drivers/iio/adc/ingenic-adc.c

// SPDX-License-Identifier: GPL-2.0
/*
 * ADC driver for the Ingenic JZ47xx SoCs
 * Copyright (c) 2019 Artur Rojek <[email protected]>
 *
 * based on drivers/mfd/jz4740-adc.c
 */

#include <dt-bindings/iio/adc/ingenic,adc.h>
#include <linux/clk.h>
#include <linux/iio/buffer.h>
#include <linux/iio/iio.h>
#include <linux/interrupt.h>
#include <linux/io.h>
#include <linux/iopoll.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/mod_devicetable.h>
#include <linux/mutex.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/property.h>

#define JZ_ADC_REG_ENABLE
#define JZ_ADC_REG_CFG
#define JZ_ADC_REG_CTRL
#define JZ_ADC_REG_STATUS
#define JZ_ADC_REG_ADSAME
#define JZ_ADC_REG_ADWAIT
#define JZ_ADC_REG_ADTCH
#define JZ_ADC_REG_ADBDAT
#define JZ_ADC_REG_ADSDAT
#define JZ_ADC_REG_ADCMD
#define JZ_ADC_REG_ADCLK

#define JZ_ADC_REG_ENABLE_PD
#define JZ_ADC_REG_CFG_AUX_MD
#define JZ_ADC_REG_CFG_BAT_MD
#define JZ_ADC_REG_CFG_SAMPLE_NUM(n)
#define JZ_ADC_REG_CFG_PULL_UP(n)
#define JZ_ADC_REG_CFG_CMD_SEL
#define JZ_ADC_REG_CFG_VBAT_SEL
#define JZ_ADC_REG_CFG_TOUCH_OPS_MASK
#define JZ_ADC_REG_ADCLK_CLKDIV_LSB
#define JZ4725B_ADC_REG_ADCLK_CLKDIV10US_LSB
#define JZ4770_ADC_REG_ADCLK_CLKDIV10US_LSB
#define JZ4770_ADC_REG_ADCLK_CLKDIVMS_LSB

#define JZ_ADC_REG_ADCMD_YNADC
#define JZ_ADC_REG_ADCMD_YPADC
#define JZ_ADC_REG_ADCMD_XNADC
#define JZ_ADC_REG_ADCMD_XPADC
#define JZ_ADC_REG_ADCMD_VREFPYP
#define JZ_ADC_REG_ADCMD_VREFPXP
#define JZ_ADC_REG_ADCMD_VREFPXN
#define JZ_ADC_REG_ADCMD_VREFPAUX
#define JZ_ADC_REG_ADCMD_VREFPVDD33
#define JZ_ADC_REG_ADCMD_VREFNYN
#define JZ_ADC_REG_ADCMD_VREFNXP
#define JZ_ADC_REG_ADCMD_VREFNXN
#define JZ_ADC_REG_ADCMD_VREFAUX
#define JZ_ADC_REG_ADCMD_YNGRU
#define JZ_ADC_REG_ADCMD_XNGRU
#define JZ_ADC_REG_ADCMD_XPGRU
#define JZ_ADC_REG_ADCMD_YPSUP
#define JZ_ADC_REG_ADCMD_XNSUP
#define JZ_ADC_REG_ADCMD_XPSUP

#define JZ_ADC_AUX_VREF
#define JZ_ADC_AUX_VREF_BITS
#define JZ_ADC_BATTERY_LOW_VREF
#define JZ_ADC_BATTERY_LOW_VREF_BITS
#define JZ4725B_ADC_BATTERY_HIGH_VREF
#define JZ4725B_ADC_BATTERY_HIGH_VREF_BITS
#define JZ4740_ADC_BATTERY_HIGH_VREF
#define JZ4740_ADC_BATTERY_HIGH_VREF_BITS
#define JZ4760_ADC_BATTERY_VREF
#define JZ4770_ADC_BATTERY_VREF
#define JZ4770_ADC_BATTERY_VREF_BITS

#define JZ_ADC_IRQ_AUX
#define JZ_ADC_IRQ_BATTERY
#define JZ_ADC_IRQ_TOUCH
#define JZ_ADC_IRQ_PEN_DOWN
#define JZ_ADC_IRQ_PEN_UP
#define JZ_ADC_IRQ_PEN_DOWN_SLEEP
#define JZ_ADC_IRQ_SLEEP

struct ingenic_adc;

struct ingenic_adc_soc_data {};

struct ingenic_adc {};

static void ingenic_adc_set_adcmd(struct iio_dev *iio_dev, unsigned long mask)
{}

static void ingenic_adc_set_config(struct ingenic_adc *adc,
				   uint32_t mask,
				   uint32_t val)
{}

static void ingenic_adc_enable_unlocked(struct ingenic_adc *adc,
					int engine,
					bool enabled)
{}

static void ingenic_adc_enable(struct ingenic_adc *adc,
			       int engine,
			       bool enabled)
{}

static int ingenic_adc_capture(struct ingenic_adc *adc,
			       int engine)
{}

static int ingenic_adc_write_raw(struct iio_dev *iio_dev,
				 struct iio_chan_spec const *chan,
				 int val,
				 int val2,
				 long m)
{}

static const int jz4725b_adc_battery_raw_avail[] =;

static const int jz4725b_adc_battery_scale_avail[] =;

static const int jz4740_adc_battery_raw_avail[] =;

static const int jz4740_adc_battery_scale_avail[] =;

static const int jz4760_adc_battery_scale_avail[] =;

static const int jz4770_adc_battery_raw_avail[] =;

static const int jz4770_adc_battery_scale_avail[] =;

static int jz4725b_adc_init_clk_div(struct device *dev, struct ingenic_adc *adc)
{}

static int jz4770_adc_init_clk_div(struct device *dev, struct ingenic_adc *adc)
{}

static const struct iio_chan_spec jz4740_channels[] =;

static const struct iio_chan_spec jz4760_channels[] =;

static const struct iio_chan_spec jz4770_channels[] =;

static const struct ingenic_adc_soc_data jz4725b_adc_soc_data =;

static const struct ingenic_adc_soc_data jz4740_adc_soc_data =;

static const struct ingenic_adc_soc_data jz4760_adc_soc_data =;

static const struct ingenic_adc_soc_data jz4770_adc_soc_data =;

static int ingenic_adc_read_avail(struct iio_dev *iio_dev,
				  struct iio_chan_spec const *chan,
				  const int **vals,
				  int *type,
				  int *length,
				  long m)
{}

static int ingenic_adc_read_chan_info_raw(struct iio_dev *iio_dev,
					  struct iio_chan_spec const *chan,
					  int *val)
{}

static int ingenic_adc_read_raw(struct iio_dev *iio_dev,
				struct iio_chan_spec const *chan,
				int *val,
				int *val2,
				long m)
{}

static int ingenic_adc_fwnode_xlate(struct iio_dev *iio_dev,
				    const struct fwnode_reference_args *iiospec)
{}

static const struct iio_info ingenic_adc_info =;

static int ingenic_adc_buffer_enable(struct iio_dev *iio_dev)
{}

static int ingenic_adc_buffer_disable(struct iio_dev *iio_dev)
{}

static const struct iio_buffer_setup_ops ingenic_buffer_setup_ops =;

static irqreturn_t ingenic_adc_irq(int irq, void *data)
{}

static int ingenic_adc_probe(struct platform_device *pdev)
{}

static const struct of_device_id ingenic_adc_of_match[] =;
MODULE_DEVICE_TABLE(of, ingenic_adc_of_match);

static struct platform_driver ingenic_adc_driver =;
module_platform_driver();
MODULE_DESCRIPTION();
MODULE_LICENSE();