#include <linux/bits.h>
#include <linux/bitfield.h>
#include <linux/clk-provider.h>
#include <linux/io.h>
#include <linux/kernel.h>
#include <linux/math64.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/spinlock.h>
#define NCO_CHANNEL_STRIDE …
#define NCO_CHANNEL_REGSIZE …
#define REG_CTRL …
#define CTRL_ENABLE …
#define REG_DIV …
#define DIV_FINE …
#define DIV_COARSE …
#define REG_INC1 …
#define REG_INC2 …
#define REG_ACCINIT …
#define LFSR_POLY …
#define LFSR_INIT …
#define LFSR_LEN …
#define LFSR_PERIOD …
#define LFSR_TBLSIZE …
#define COARSE_DIV_OFFSET …
struct applnco_tables { … };
struct applnco_channel { … };
#define to_applnco_channel(_hw) …
static void applnco_enable_nolock(struct clk_hw *hw)
{ … }
static void applnco_disable_nolock(struct clk_hw *hw)
{ … }
static int applnco_is_enabled(struct clk_hw *hw)
{ … }
static void applnco_compute_tables(struct applnco_tables *tbl)
{ … }
static bool applnco_div_out_of_range(unsigned int div)
{ … }
static u32 applnco_div_translate(struct applnco_tables *tbl, unsigned int div)
{ … }
static unsigned int applnco_div_translate_inv(struct applnco_tables *tbl, u32 regval)
{ … }
static int applnco_set_rate(struct clk_hw *hw, unsigned long rate,
unsigned long parent_rate)
{ … }
static unsigned long applnco_recalc_rate(struct clk_hw *hw,
unsigned long parent_rate)
{ … }
static long applnco_round_rate(struct clk_hw *hw, unsigned long rate,
unsigned long *parent_rate)
{ … }
static int applnco_enable(struct clk_hw *hw)
{ … }
static void applnco_disable(struct clk_hw *hw)
{ … }
static const struct clk_ops applnco_ops = …;
static int applnco_probe(struct platform_device *pdev)
{ … }
static const struct of_device_id applnco_ids[] = …;
MODULE_DEVICE_TABLE(of, applnco_ids);
static struct platform_driver applnco_driver = …;
module_platform_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;