#include <linux/bitfield.h>
#include <linux/clk.h>
#include <linux/io.h>
#include <linux/iopoll.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/pm_domain.h>
#include <linux/reset.h>
#define PD_STATE_ON …
#define PD_STATE_OFF …
#define PD_RSTN_REG …
#define PD_CLK_GATE_REG …
#define PD_PWROFF_GATE_REG …
#define PD_PSW_ON_REG …
#define PD_PSW_OFF_REG …
#define PD_PSW_DELAY_REG …
#define PD_OFF_DELAY_REG …
#define PD_ON_DELAY_REG …
#define PD_COMMAND_REG …
#define PD_STATUS_REG …
#define PD_STATUS_COMPLETE …
#define PD_STATUS_BUSY …
#define PD_STATUS_STATE …
#define PD_ACTIVE_CTRL_REG …
#define PD_GATE_STATUS_REG …
#define PD_RSTN_STATUS …
#define PD_CLK_GATE_STATUS …
#define PD_PWROFF_GATE_STATUS …
#define PD_PSW_STATUS_REG …
#define PD_REGS_SIZE …
struct sun20i_ppu_desc { … };
struct sun20i_ppu_pd { … };
#define to_sun20i_ppu_pd(_genpd) …
static bool sun20i_ppu_pd_is_on(const struct sun20i_ppu_pd *pd)
{ … }
static int sun20i_ppu_pd_set_power(const struct sun20i_ppu_pd *pd, bool power_on)
{ … }
static int sun20i_ppu_pd_power_on(struct generic_pm_domain *genpd)
{ … }
static int sun20i_ppu_pd_power_off(struct generic_pm_domain *genpd)
{ … }
static int sun20i_ppu_probe(struct platform_device *pdev)
{ … }
static const char *const sun20i_d1_ppu_pd_names[] = …;
static const struct sun20i_ppu_desc sun20i_d1_ppu_desc = …;
static const struct of_device_id sun20i_ppu_of_match[] = …;
MODULE_DEVICE_TABLE(of, sun20i_ppu_of_match);
static struct platform_driver sun20i_ppu_driver = …;
module_platform_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;