#include <linux/kernel.h>
#include <linux/errno.h>
#include <linux/slab.h>
#include <linux/init.h>
#include <linux/idr.h>
#include <linux/of.h>
#include <linux/of_device.h>
#include <linux/pm_runtime.h>
#include <linux/slimbus.h>
#include "slimbus.h"
static DEFINE_IDA(ctrl_ida);
static const struct slim_device_id *slim_match(const struct slim_device_id *id,
const struct slim_device *sbdev)
{ … }
static int slim_device_match(struct device *dev, const struct device_driver *drv)
{ … }
static void slim_device_update_status(struct slim_device *sbdev,
enum slim_device_status status)
{ … }
static int slim_device_probe(struct device *dev)
{ … }
static void slim_device_remove(struct device *dev)
{ … }
static int slim_device_uevent(const struct device *dev, struct kobj_uevent_env *env)
{ … }
const struct bus_type slimbus_bus = …;
EXPORT_SYMBOL_GPL(…);
int __slim_driver_register(struct slim_driver *drv, struct module *owner)
{ … }
EXPORT_SYMBOL_GPL(…);
void slim_driver_unregister(struct slim_driver *drv)
{ … }
EXPORT_SYMBOL_GPL(…);
static void slim_dev_release(struct device *dev)
{ … }
static int slim_add_device(struct slim_controller *ctrl,
struct slim_device *sbdev,
struct device_node *node)
{ … }
static struct slim_device *slim_alloc_device(struct slim_controller *ctrl,
struct slim_eaddr *eaddr,
struct device_node *node)
{ … }
static void of_register_slim_devices(struct slim_controller *ctrl)
{ … }
int slim_register_controller(struct slim_controller *ctrl)
{ … }
EXPORT_SYMBOL_GPL(…);
static void slim_remove_device(struct slim_device *sbdev)
{ … }
static int slim_ctrl_remove_device(struct device *dev, void *null)
{ … }
int slim_unregister_controller(struct slim_controller *ctrl)
{ … }
EXPORT_SYMBOL_GPL(…);
void slim_report_absent(struct slim_device *sbdev)
{ … }
EXPORT_SYMBOL_GPL(…);
static bool slim_eaddr_equal(struct slim_eaddr *a, struct slim_eaddr *b)
{ … }
static int slim_match_dev(struct device *dev, void *data)
{ … }
static struct slim_device *find_slim_device(struct slim_controller *ctrl,
struct slim_eaddr *eaddr)
{ … }
struct slim_device *slim_get_device(struct slim_controller *ctrl,
struct slim_eaddr *e_addr)
{ … }
EXPORT_SYMBOL_GPL(…);
static int of_slim_match_dev(struct device *dev, void *data)
{ … }
static struct slim_device *of_find_slim_device(struct slim_controller *ctrl,
struct device_node *np)
{ … }
struct slim_device *of_slim_get_device(struct slim_controller *ctrl,
struct device_node *np)
{ … }
EXPORT_SYMBOL_GPL(…);
static int slim_device_alloc_laddr(struct slim_device *sbdev,
bool report_present)
{ … }
int slim_device_report_present(struct slim_controller *ctrl,
struct slim_eaddr *e_addr, u8 *laddr)
{ … }
EXPORT_SYMBOL_GPL(…);
int slim_get_logical_addr(struct slim_device *sbdev)
{ … }
EXPORT_SYMBOL_GPL(…);
static void __exit slimbus_exit(void)
{ … }
module_exit(slimbus_exit);
static int __init slimbus_init(void)
{ … }
postcore_initcall(slimbus_init);
MODULE_LICENSE(…) …;
MODULE_DESCRIPTION(…) …;