#include <linux/of.h>
#include <linux/of_platform.h>
#include <linux/platform_device.h>
#include <linux/pm.h>
#include <linux/bitops.h>
#include <linux/interrupt.h>
#include <linux/io.h>
#include <linux/reboot.h>
#define GEMINI_PWC_ID …
#define GEMINI_PWC_IDREG …
#define GEMINI_PWC_CTRLREG …
#define GEMINI_PWC_STATREG …
#define GEMINI_CTRL_SHUTDOWN …
#define GEMINI_CTRL_ENABLE …
#define GEMINI_CTRL_IRQ_CLR …
#define GEMINI_STAT_CIR …
#define GEMINI_STAT_RTC …
#define GEMINI_STAT_POWERBUTTON …
struct gemini_powercon { … };
static irqreturn_t gemini_powerbutton_interrupt(int irq, void *data)
{ … }
static int gemini_poweroff(struct sys_off_data *data)
{ … }
static int gemini_poweroff_probe(struct platform_device *pdev)
{ … }
static const struct of_device_id gemini_poweroff_of_match[] = …;
static struct platform_driver gemini_poweroff_driver = …;
builtin_platform_driver(…) …;