linux/drivers/misc/ibmasm/ibmasm.h

/* SPDX-License-Identifier: GPL-2.0-or-later */

/*
 * IBM ASM Service Processor Device Driver
 *
 * Copyright (C) IBM Corporation, 2004
 *
 * Author: Max Asböck <[email protected]>
 */

#include <linux/kernel.h>
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/list.h>
#include <linux/wait.h>
#include <linux/spinlock.h>
#include <linux/slab.h>
#include <linux/module.h>
#include <linux/interrupt.h>
#include <linux/kref.h>
#include <linux/device.h>
#include <linux/input.h>
#include <linux/time64.h>

/* Driver identification */
#define DRIVER_NAME
#define DRIVER_VERSION
#define DRIVER_AUTHOR
#define DRIVER_DESC

#define err(msg)
#define info(msg)

extern int ibmasm_debug;
#define dbg(STR, ARGS...)

static inline char *get_timestamp(char *buf)
{}

#define IBMASM_CMD_PENDING
#define IBMASM_CMD_COMPLETE
#define IBMASM_CMD_FAILED

#define IBMASM_CMD_TIMEOUT_NORMAL
#define IBMASM_CMD_TIMEOUT_EXTRA

#define IBMASM_CMD_MAX_BUFFER_SIZE

#define REVERSE_HEARTBEAT_TIMEOUT

#define HEARTBEAT_BUFFER_SIZE

#ifdef IA64
#define IBMASM_DRIVER_VPD
#else
#define IBMASM_DRIVER_VPD
#endif

#define SYSTEM_STATE_OS_UP
#define SYSTEM_STATE_OS_DOWN

#define IBMASM_NAME_SIZE

#define IBMASM_NUM_EVENTS
#define IBMASM_EVENT_MAX_SIZE


struct command {};
#define to_command(c)

void ibmasm_free_command(struct kref *kref);
static inline void command_put(struct command *cmd)
{}

static inline void command_get(struct command *cmd)
{}


struct ibmasm_event {};

struct event_buffer {};

struct event_reader {};

struct reverse_heartbeat {};

struct ibmasm_remote {};

struct service_processor {};

/* command processing */
struct command *ibmasm_new_command(struct service_processor *sp, size_t buffer_size);
void ibmasm_exec_command(struct service_processor *sp, struct command *cmd);
void ibmasm_wait_for_response(struct command *cmd, int timeout);
void ibmasm_receive_command_response(struct service_processor *sp, void *response,  size_t size);

/* event processing */
int ibmasm_event_buffer_init(struct service_processor *sp);
void ibmasm_event_buffer_exit(struct service_processor *sp);
void ibmasm_receive_event(struct service_processor *sp, void *data,  unsigned int data_size);
void ibmasm_event_reader_register(struct service_processor *sp, struct event_reader *reader);
void ibmasm_event_reader_unregister(struct service_processor *sp, struct event_reader *reader);
int ibmasm_get_next_event(struct service_processor *sp, struct event_reader *reader);
void ibmasm_cancel_next_event(struct event_reader *reader);

/* heartbeat - from SP to OS */
void ibmasm_register_panic_notifier(void);
void ibmasm_unregister_panic_notifier(void);
int ibmasm_heartbeat_init(struct service_processor *sp);
void ibmasm_heartbeat_exit(struct service_processor *sp);
void ibmasm_receive_heartbeat(struct service_processor *sp,  void *message, size_t size);

/* reverse heartbeat - from OS to SP */
void ibmasm_init_reverse_heartbeat(struct service_processor *sp, struct reverse_heartbeat *rhb);
int ibmasm_start_reverse_heartbeat(struct service_processor *sp, struct reverse_heartbeat *rhb);
void ibmasm_stop_reverse_heartbeat(struct reverse_heartbeat *rhb);

/* dot commands */
void ibmasm_receive_message(struct service_processor *sp, void *data, int data_size);
int ibmasm_send_driver_vpd(struct service_processor *sp);
int ibmasm_send_os_state(struct service_processor *sp, int os_state);

/* low level message processing */
int ibmasm_send_i2o_message(struct service_processor *sp);
irqreturn_t ibmasm_interrupt_handler(int irq, void * dev_id);

/* remote console */
void ibmasm_handle_mouse_interrupt(struct service_processor *sp);
int ibmasm_init_remote_input_dev(struct service_processor *sp);
void ibmasm_free_remote_input_dev(struct service_processor *sp);

/* file system */
int ibmasmfs_register(void);
void ibmasmfs_unregister(void);
void ibmasmfs_add_sp(struct service_processor *sp);

/* uart */
#if IS_ENABLED(CONFIG_SERIAL_8250)
void ibmasm_register_uart(struct service_processor *sp);
void ibmasm_unregister_uart(struct service_processor *sp);
#else
#define ibmasm_register_uart
#define ibmasm_unregister_uart
#endif