#include <linux/clk-provider.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/pwm.h>
struct clk_pwm { … };
static inline struct clk_pwm *to_clk_pwm(struct clk_hw *hw)
{ … }
static int clk_pwm_prepare(struct clk_hw *hw)
{ … }
static void clk_pwm_unprepare(struct clk_hw *hw)
{ … }
static unsigned long clk_pwm_recalc_rate(struct clk_hw *hw,
unsigned long parent_rate)
{ … }
static int clk_pwm_get_duty_cycle(struct clk_hw *hw, struct clk_duty *duty)
{ … }
static const struct clk_ops clk_pwm_ops = …;
static int clk_pwm_probe(struct platform_device *pdev)
{ … }
static void clk_pwm_remove(struct platform_device *pdev)
{ … }
static const struct of_device_id clk_pwm_dt_ids[] = …;
MODULE_DEVICE_TABLE(of, clk_pwm_dt_ids);
static struct platform_driver clk_pwm_driver = …;
module_platform_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;