#include <linux/err.h>
#include <linux/interrupt.h>
#include <linux/device.h>
#include <linux/kernel.h>
#include <linux/printk.h>
#include <linux/slab.h>
#include <linux/sysfs.h>
#include <linux/io.h>
#include <linux/mod_devicetable.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/wait.h>
#include <linux/bitops.h>
#include <linux/completion.h>
#include <linux/mutex.h>
#include <linux/delay.h>
#include <linux/gpio/consumer.h>
#include <linux/timekeeping.h>
#include <linux/iio/iio.h>
#define DRIVER_NAME …
#define DHT11_DATA_VALID_TIME …
#define DHT11_EDGES_PREAMBLE …
#define DHT11_BITS_PER_READ …
#define DHT11_EDGES_PER_READ …
#define DHT11_START_TRANSMISSION_MIN …
#define DHT11_START_TRANSMISSION_MAX …
#define DHT11_MIN_TIMERES …
#define DHT11_THRESHOLD …
#define DHT11_AMBIG_LOW …
#define DHT11_AMBIG_HIGH …
struct dht11 { … };
#ifdef CONFIG_DYNAMIC_DEBUG
static void dht11_edges_print(struct dht11 *dht11)
{ … }
#endif
static unsigned char dht11_decode_byte(char *bits)
{ … }
static int dht11_decode(struct dht11 *dht11, int offset)
{ … }
static irqreturn_t dht11_handle_irq(int irq, void *data)
{ … }
static int dht11_read_raw(struct iio_dev *iio_dev,
const struct iio_chan_spec *chan,
int *val, int *val2, long m)
{ … }
static const struct iio_info dht11_iio_info = …;
static const struct iio_chan_spec dht11_chan_spec[] = …;
static const struct of_device_id dht11_dt_ids[] = …;
MODULE_DEVICE_TABLE(of, dht11_dt_ids);
static int dht11_probe(struct platform_device *pdev)
{ … }
static struct platform_driver dht11_driver = …;
module_platform_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;