#include <linux/clk.h>
#include <linux/clockchips.h>
#include <linux/interrupt.h>
#include <linux/mfd/stm32-lptimer.h>
#include <linux/module.h>
#include <linux/of_address.h>
#include <linux/of_irq.h>
#include <linux/platform_device.h>
#include <linux/pm_wakeirq.h>
#define CFGR_PSC_OFFSET …
#define STM32_LP_RATING …
#define STM32_TARGET_CLKRATE …
#define STM32_LP_MAX_PSC …
struct stm32_lp_private { … };
static struct stm32_lp_private*
to_priv(struct clock_event_device *clkevt)
{ … }
static int stm32_clkevent_lp_shutdown(struct clock_event_device *clkevt)
{ … }
static int stm32_clkevent_lp_set_timer(unsigned long evt,
struct clock_event_device *clkevt,
int is_periodic)
{ … }
static int stm32_clkevent_lp_set_next_event(unsigned long evt,
struct clock_event_device *clkevt)
{ … }
static int stm32_clkevent_lp_set_periodic(struct clock_event_device *clkevt)
{ … }
static int stm32_clkevent_lp_set_oneshot(struct clock_event_device *clkevt)
{ … }
static irqreturn_t stm32_clkevent_lp_irq_handler(int irq, void *dev_id)
{ … }
static void stm32_clkevent_lp_set_prescaler(struct stm32_lp_private *priv,
unsigned long *rate)
{ … }
static void stm32_clkevent_lp_init(struct stm32_lp_private *priv,
struct device_node *np, unsigned long rate)
{ … }
static int stm32_clkevent_lp_probe(struct platform_device *pdev)
{ … }
static const struct of_device_id stm32_clkevent_lp_of_match[] = …;
MODULE_DEVICE_TABLE(of, stm32_clkevent_lp_of_match);
static struct platform_driver stm32_clkevent_lp_driver = …;
module_platform_driver(…) …;
MODULE_ALIAS(…) …;
MODULE_DESCRIPTION(…) …;