#define PPS_GPIO_NAME …
#define pr_fmt(fmt) …
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/interrupt.h>
#include <linux/mod_devicetable.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/slab.h>
#include <linux/pps_kernel.h>
#include <linux/gpio/consumer.h>
#include <linux/list.h>
#include <linux/property.h>
#include <linux/timer.h>
#include <linux/jiffies.h>
struct pps_gpio_device_data { … };
static irqreturn_t pps_gpio_irq_handler(int irq, void *data)
{ … }
static void pps_gpio_echo(struct pps_device *pps, int event, void *data)
{ … }
static void pps_gpio_echo_timer_callback(struct timer_list *t)
{ … }
static int pps_gpio_setup(struct device *dev)
{ … }
static unsigned long
get_irqf_trigger_flags(const struct pps_gpio_device_data *data)
{ … }
static int pps_gpio_probe(struct platform_device *pdev)
{ … }
static void pps_gpio_remove(struct platform_device *pdev)
{ … }
static const struct of_device_id pps_gpio_dt_ids[] = …;
MODULE_DEVICE_TABLE(of, pps_gpio_dt_ids);
static struct platform_driver pps_gpio_driver = …;
module_platform_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
MODULE_VERSION(…) …;