#define pr_fmt(fmt) …
#include <linux/device.h>
#include <linux/err.h>
#include <linux/slab.h>
#include <linux/string.h>
#include "dpll_core.h"
#include "dpll_netlink.h"
DEFINE_MUTEX(…) …;
DEFINE_XARRAY_FLAGS(…);
DEFINE_XARRAY_FLAGS(…);
static u32 dpll_device_xa_id;
static u32 dpll_pin_xa_id;
#define ASSERT_DPLL_REGISTERED(d) …
#define ASSERT_DPLL_NOT_REGISTERED(d) …
#define ASSERT_DPLL_PIN_REGISTERED(p) …
struct dpll_device_registration { … };
struct dpll_pin_registration { … };
struct dpll_device *dpll_device_get_by_id(int id)
{ … }
static struct dpll_pin_registration *
dpll_pin_registration_find(struct dpll_pin_ref *ref,
const struct dpll_pin_ops *ops, void *priv,
void *cookie)
{ … }
static int
dpll_xa_ref_pin_add(struct xarray *xa_pins, struct dpll_pin *pin,
const struct dpll_pin_ops *ops, void *priv,
void *cookie)
{ … }
static int dpll_xa_ref_pin_del(struct xarray *xa_pins, struct dpll_pin *pin,
const struct dpll_pin_ops *ops, void *priv,
void *cookie)
{ … }
static int
dpll_xa_ref_dpll_add(struct xarray *xa_dplls, struct dpll_device *dpll,
const struct dpll_pin_ops *ops, void *priv, void *cookie)
{ … }
static void
dpll_xa_ref_dpll_del(struct xarray *xa_dplls, struct dpll_device *dpll,
const struct dpll_pin_ops *ops, void *priv, void *cookie)
{ … }
struct dpll_pin_ref *dpll_xa_ref_dpll_first(struct xarray *xa_refs)
{ … }
static struct dpll_device *
dpll_device_alloc(const u64 clock_id, u32 device_idx, struct module *module)
{ … }
struct dpll_device *
dpll_device_get(u64 clock_id, u32 device_idx, struct module *module)
{ … }
EXPORT_SYMBOL_GPL(…);
void dpll_device_put(struct dpll_device *dpll)
{ … }
EXPORT_SYMBOL_GPL(…);
static struct dpll_device_registration *
dpll_device_registration_find(struct dpll_device *dpll,
const struct dpll_device_ops *ops, void *priv)
{ … }
int dpll_device_register(struct dpll_device *dpll, enum dpll_type type,
const struct dpll_device_ops *ops, void *priv)
{ … }
EXPORT_SYMBOL_GPL(…);
void dpll_device_unregister(struct dpll_device *dpll,
const struct dpll_device_ops *ops, void *priv)
{ … }
EXPORT_SYMBOL_GPL(…);
static void dpll_pin_prop_free(struct dpll_pin_properties *prop)
{ … }
static int dpll_pin_prop_dup(const struct dpll_pin_properties *src,
struct dpll_pin_properties *dst)
{ … }
static struct dpll_pin *
dpll_pin_alloc(u64 clock_id, u32 pin_idx, struct module *module,
const struct dpll_pin_properties *prop)
{ … }
static void dpll_netdev_pin_assign(struct net_device *dev, struct dpll_pin *dpll_pin)
{ … }
void dpll_netdev_pin_set(struct net_device *dev, struct dpll_pin *dpll_pin)
{ … }
EXPORT_SYMBOL(…);
void dpll_netdev_pin_clear(struct net_device *dev)
{ … }
EXPORT_SYMBOL(…);
struct dpll_pin *
dpll_pin_get(u64 clock_id, u32 pin_idx, struct module *module,
const struct dpll_pin_properties *prop)
{ … }
EXPORT_SYMBOL_GPL(…);
void dpll_pin_put(struct dpll_pin *pin)
{ … }
EXPORT_SYMBOL_GPL(…);
static int
__dpll_pin_register(struct dpll_device *dpll, struct dpll_pin *pin,
const struct dpll_pin_ops *ops, void *priv, void *cookie)
{ … }
int
dpll_pin_register(struct dpll_device *dpll, struct dpll_pin *pin,
const struct dpll_pin_ops *ops, void *priv)
{ … }
EXPORT_SYMBOL_GPL(…);
static void
__dpll_pin_unregister(struct dpll_device *dpll, struct dpll_pin *pin,
const struct dpll_pin_ops *ops, void *priv, void *cookie)
{ … }
void dpll_pin_unregister(struct dpll_device *dpll, struct dpll_pin *pin,
const struct dpll_pin_ops *ops, void *priv)
{ … }
EXPORT_SYMBOL_GPL(…);
int dpll_pin_on_pin_register(struct dpll_pin *parent, struct dpll_pin *pin,
const struct dpll_pin_ops *ops, void *priv)
{ … }
EXPORT_SYMBOL_GPL(…);
void dpll_pin_on_pin_unregister(struct dpll_pin *parent, struct dpll_pin *pin,
const struct dpll_pin_ops *ops, void *priv)
{ … }
EXPORT_SYMBOL_GPL(…);
static struct dpll_device_registration *
dpll_device_registration_first(struct dpll_device *dpll)
{ … }
void *dpll_priv(struct dpll_device *dpll)
{ … }
const struct dpll_device_ops *dpll_device_ops(struct dpll_device *dpll)
{ … }
static struct dpll_pin_registration *
dpll_pin_registration_first(struct dpll_pin_ref *ref)
{ … }
void *dpll_pin_on_dpll_priv(struct dpll_device *dpll,
struct dpll_pin *pin)
{ … }
void *dpll_pin_on_pin_priv(struct dpll_pin *parent,
struct dpll_pin *pin)
{ … }
const struct dpll_pin_ops *dpll_pin_ops(struct dpll_pin_ref *ref)
{ … }
static int __init dpll_init(void)
{ … }
static void __exit dpll_exit(void)
{ … }
subsys_initcall(dpll_init);
module_exit(dpll_exit);