#include <linux/clk-provider.h>
#include <linux/device.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/property.h>
#include <linux/regmap.h>
#include <linux/mfd/lochnagar1_regs.h>
#include <linux/mfd/lochnagar2_regs.h>
#include <dt-bindings/clock/lochnagar.h>
#define LOCHNAGAR_NUM_CLOCKS …
struct lochnagar_clk { … };
struct lochnagar_clk_priv { … };
#define LN_PARENT(NAME) …
static const struct clk_parent_data lochnagar1_clk_parents[] = …;
static const struct clk_parent_data lochnagar2_clk_parents[] = …;
#define LN1_CLK(ID, NAME, REG) …
#define LN2_CLK(ID, NAME) …
static const struct lochnagar_clk lochnagar1_clks[LOCHNAGAR_NUM_CLOCKS] = …;
static const struct lochnagar_clk lochnagar2_clks[LOCHNAGAR_NUM_CLOCKS] = …;
struct lochnagar_config { … };
static const struct lochnagar_config lochnagar1_conf = …;
static const struct lochnagar_config lochnagar2_conf = …;
static inline struct lochnagar_clk *lochnagar_hw_to_lclk(struct clk_hw *hw)
{ … }
static int lochnagar_clk_prepare(struct clk_hw *hw)
{ … }
static void lochnagar_clk_unprepare(struct clk_hw *hw)
{ … }
static int lochnagar_clk_set_parent(struct clk_hw *hw, u8 index)
{ … }
static u8 lochnagar_clk_get_parent(struct clk_hw *hw)
{ … }
static const struct clk_ops lochnagar_clk_ops = …;
static struct clk_hw *
lochnagar_of_clk_hw_get(struct of_phandle_args *clkspec, void *data)
{ … }
static const struct of_device_id lochnagar_of_match[] = …;
MODULE_DEVICE_TABLE(of, lochnagar_of_match);
static int lochnagar_clk_probe(struct platform_device *pdev)
{ … }
static struct platform_driver lochnagar_clk_driver = …;
module_platform_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;