linux/drivers/char/ipmi/ipmi_ipmb.c

// SPDX-License-Identifier: GPL-2.0

/*
 * Driver to talk to a remote management controller on IPMB.
 */

#include <linux/acpi.h>
#include <linux/errno.h>
#include <linux/i2c.h>
#include <linux/miscdevice.h>
#include <linux/module.h>
#include <linux/mutex.h>
#include <linux/poll.h>
#include <linux/slab.h>
#include <linux/spinlock.h>
#include <linux/semaphore.h>
#include <linux/kthread.h>
#include <linux/wait.h>
#include <linux/ipmi_msgdefs.h>
#include <linux/ipmi_smi.h>

#define DEVICE_NAME

static int bmcaddr =;
module_param(bmcaddr, int, 0644);
MODULE_PARM_DESC();

static unsigned int retry_time_ms =;
module_param(retry_time_ms, uint, 0644);
MODULE_PARM_DESC();

static unsigned int max_retries =;
module_param(max_retries, uint, 0644);
MODULE_PARM_DESC();

/* Add room for the two slave addresses, two checksums, and rqSeq. */
#define IPMB_MAX_MSG_LEN

struct ipmi_ipmb_dev {};

static bool valid_ipmb(struct ipmi_ipmb_dev *iidev)
{}

static void ipmi_ipmb_check_msg_done(struct ipmi_ipmb_dev *iidev)
{}

/*
 * The IPMB protocol only supports i2c writes so there is no need to
 * support I2C_SLAVE_READ* events, except to know if the other end has
 * issued a read without going to stop mode.
 */
static int ipmi_ipmb_slave_cb(struct i2c_client *client,
			      enum i2c_slave_event event, u8 *val)
{}

static void ipmi_ipmb_send_response(struct ipmi_ipmb_dev *iidev,
				    struct ipmi_smi_msg *msg, u8 cc)
{}

static void ipmi_ipmb_format_for_xmit(struct ipmi_ipmb_dev *iidev,
				      struct ipmi_smi_msg *msg)
{}

static int ipmi_ipmb_thread(void *data)
{}

static int ipmi_ipmb_start_processing(void *send_info,
				      struct ipmi_smi *new_intf)
{}

static void ipmi_ipmb_stop_thread(struct ipmi_ipmb_dev *iidev)
{}

static void ipmi_ipmb_shutdown(void *send_info)
{}

static void ipmi_ipmb_sender(void *send_info,
			     struct ipmi_smi_msg *msg)
{}

static void ipmi_ipmb_request_events(void *send_info)
{}

static void ipmi_ipmb_cleanup(struct ipmi_ipmb_dev *iidev)
{}

static void ipmi_ipmb_remove(struct i2c_client *client)
{}

static int ipmi_ipmb_probe(struct i2c_client *client)
{}

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

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

static struct i2c_driver ipmi_ipmb_driver =;
module_i2c_driver();

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