linux/drivers/clk/clk-cdce706.c

// SPDX-License-Identifier: GPL-2.0-only
/*
 * TI CDCE706 programmable 3-PLL clock synthesizer driver
 *
 * Copyright (c) 2014 Cadence Design Systems Inc.
 *
 * Reference: https://www.ti.com/lit/ds/symlink/cdce706.pdf
 */

#include <linux/clk.h>
#include <linux/clk-provider.h>
#include <linux/delay.h>
#include <linux/i2c.h>
#include <linux/interrupt.h>
#include <linux/mod_devicetable.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/rational.h>
#include <linux/regmap.h>
#include <linux/slab.h>

#define CDCE706_CLKIN_CLOCK
#define CDCE706_CLKIN_SOURCE
#define CDCE706_PLL_M_LOW(pll)
#define CDCE706_PLL_N_LOW(pll)
#define CDCE706_PLL_HI(pll)
#define CDCE706_PLL_MUX
#define CDCE706_PLL_FVCO
#define CDCE706_DIVIDER(div)
#define CDCE706_CLKOUT(out)

#define CDCE706_CLKIN_CLOCK_MASK
#define CDCE706_CLKIN_SOURCE_SHIFT
#define CDCE706_CLKIN_SOURCE_MASK
#define CDCE706_CLKIN_SOURCE_LVCMOS

#define CDCE706_PLL_MUX_MASK(pll)
#define CDCE706_PLL_LOW_M_MASK
#define CDCE706_PLL_LOW_N_MASK
#define CDCE706_PLL_HI_M_MASK
#define CDCE706_PLL_HI_N_MASK
#define CDCE706_PLL_HI_N_SHIFT
#define CDCE706_PLL_M_MAX
#define CDCE706_PLL_N_MAX
#define CDCE706_PLL_FVCO_MASK(pll)
#define CDCE706_PLL_FREQ_MIN
#define CDCE706_PLL_FREQ_MAX
#define CDCE706_PLL_FREQ_HI

#define CDCE706_DIVIDER_PLL(div)
#define CDCE706_DIVIDER_PLL_SHIFT(div)
#define CDCE706_DIVIDER_PLL_MASK(div)
#define CDCE706_DIVIDER_DIVIDER_MASK
#define CDCE706_DIVIDER_DIVIDER_MAX

#define CDCE706_CLKOUT_DIVIDER_MASK
#define CDCE706_CLKOUT_ENABLE_MASK

static const struct regmap_config cdce706_regmap_config =;

#define to_hw_data(phw)

struct cdce706_hw_data {};

struct cdce706_dev_data {};

static const char * const cdce706_source_name[] =;

static const char * const cdce706_clkin_name[] =;

static const char * const cdce706_pll_name[] =;

static const char * const cdce706_divider_parent_name[] =;

static const char *cdce706_divider_name[] =;

static const char * const cdce706_clkout_name[] =;

static int cdce706_reg_read(struct cdce706_dev_data *dev_data, unsigned reg,
			    unsigned *val)
{}

static int cdce706_reg_write(struct cdce706_dev_data *dev_data, unsigned reg,
			     unsigned val)
{}

static int cdce706_reg_update(struct cdce706_dev_data *dev_data, unsigned reg,
			      unsigned mask, unsigned val)
{}

static int cdce706_clkin_set_parent(struct clk_hw *hw, u8 index)
{}

static u8 cdce706_clkin_get_parent(struct clk_hw *hw)
{}

static const struct clk_ops cdce706_clkin_ops =;

static unsigned long cdce706_pll_recalc_rate(struct clk_hw *hw,
					     unsigned long parent_rate)
{}

static long cdce706_pll_round_rate(struct clk_hw *hw, unsigned long rate,
				   unsigned long *parent_rate)
{}

static int cdce706_pll_set_rate(struct clk_hw *hw, unsigned long rate,
				unsigned long parent_rate)
{}

static const struct clk_ops cdce706_pll_ops =;

static int cdce706_divider_set_parent(struct clk_hw *hw, u8 index)
{}

static u8 cdce706_divider_get_parent(struct clk_hw *hw)
{}

static unsigned long cdce706_divider_recalc_rate(struct clk_hw *hw,
						 unsigned long parent_rate)
{}

static int cdce706_divider_determine_rate(struct clk_hw *hw,
					  struct clk_rate_request *req)
{}

static int cdce706_divider_set_rate(struct clk_hw *hw, unsigned long rate,
				    unsigned long parent_rate)
{}

static const struct clk_ops cdce706_divider_ops =;

static int cdce706_clkout_prepare(struct clk_hw *hw)
{}

static void cdce706_clkout_unprepare(struct clk_hw *hw)
{}

static int cdce706_clkout_set_parent(struct clk_hw *hw, u8 index)
{}

static u8 cdce706_clkout_get_parent(struct clk_hw *hw)
{}

static unsigned long cdce706_clkout_recalc_rate(struct clk_hw *hw,
						unsigned long parent_rate)
{}

static int cdce706_clkout_determine_rate(struct clk_hw *hw,
					 struct clk_rate_request *req)
{}

static int cdce706_clkout_set_rate(struct clk_hw *hw, unsigned long rate,
				   unsigned long parent_rate)
{}

static const struct clk_ops cdce706_clkout_ops =;

static int cdce706_register_hw(struct cdce706_dev_data *cdce,
			       struct cdce706_hw_data *hw, unsigned num_hw,
			       const char * const *clk_names,
			       struct clk_init_data *init)
{}

static int cdce706_register_clkin(struct cdce706_dev_data *cdce)
{}

static int cdce706_register_plls(struct cdce706_dev_data *cdce)
{}

static int cdce706_register_dividers(struct cdce706_dev_data *cdce)
{}

static int cdce706_register_clkouts(struct cdce706_dev_data *cdce)
{}

static struct clk_hw *
of_clk_cdce_get(struct of_phandle_args *clkspec, void *data)
{}

static int cdce706_probe(struct i2c_client *client)
{}

#ifdef CONFIG_OF
static const struct of_device_id cdce706_dt_match[] =;
MODULE_DEVICE_TABLE(of, cdce706_dt_match);
#endif

static const struct i2c_device_id cdce706_id[] =;
MODULE_DEVICE_TABLE(i2c, cdce706_id);

static struct i2c_driver cdce706_i2c_driver =;
module_i2c_driver();

MODULE_AUTHOR();
MODULE_DESCRIPTION();
MODULE_LICENSE();