/* SPDX-License-Identifier: Apache-2.0 */
/* Copyright (C) 2018 IBM Corp. */

#ifndef DBUS_H
#define DBUS_H

#include <stdint.h>
#include <stddef.h>

/*
 * "mbox" will become an inappropriate name for the protocol/daemon, so claim a
 * different name on the public interface.
 *
 * "hiomapd" expands to "Host I/O Map Daemon"
 *
 * TODO: The Great Rename
 */
#define MBOX_DBUS_NAME			"xyz.openbmc_project.Hiomapd"
#define MBOX_DBUS_OBJECT		"/xyz/openbmc_project/Hiomapd"
#define MBOX_DBUS_CONTROL_IFACE		"xyz.openbmc_project.Hiomapd.Control"
#define MBOX_DBUS_PROTOCOL_IFACE	"xyz.openbmc_project.Hiomapd.Protocol"

/* Legacy interface */
#define MBOX_DBUS_LEGACY_NAME		"org.openbmc.mboxd"
#define MBOX_DBUS_LEGACY_OBJECT		"/org/openbmc/mboxd"

/* Command IDs (Legacy interface) */
#define DBUS_C_PING		0x00
#define	DBUS_C_DAEMON_STATE	0x01
#define DBUS_C_RESET		0x02
#define DBUS_C_SUSPEND		0x03
#define DBUS_C_RESUME		0x04
#define DBUS_C_MODIFIED		0x05
#define DBUS_C_KILL		0x06
#define DBUS_C_LPC_STATE	0x07
#define NUM_DBUS_CMDS		(DBUS_C_LPC_STATE + 1)

/* Command Args */
/* Resume */
#define RESUME_NUM_ARGS		1
#define RESUME_NOT_MODIFIED	0x00
#define RESUME_FLASH_MODIFIED	0x01

/* Return Values (Legacy interface) */
#define DBUS_SUCCESS		0x00 /* Command Succeded */
#define E_DBUS_INTERNAL		0x01 /* Internal DBUS Error */
#define E_DBUS_INVAL		0x02 /* Invalid Command */
#define E_DBUS_REJECTED		0x03 /* Daemon Rejected Request */
#define E_DBUS_HARDWARE		0x04 /* BMC Hardware Error */
#define E_DBUS_NO_MEM		0x05 /* Failed Memory Allocation */

/* Response Args */
/* Status */
#define DAEMON_STATE_NUM_ARGS	1
#define DAEMON_STATE_ACTIVE	0x00 /* Daemon Active */
#define DAEMON_STATE_SUSPENDED	0x01 /* Daemon Suspended */
/* LPC State */
#define LPC_STATE_NUM_ARGS	1
#define LPC_STATE_INVALID	0x00 /* Invalid State */
#define LPC_STATE_FLASH		0x01 /* LPC Maps Flash Directly */
#define LPC_STATE_MEM		0x02 /* LPC Maps Memory */

struct mbox_dbus_msg {
	uint8_t cmd;
	size_t num_args;
	uint8_t *args;
};

#endif /* MBOX_DBUS_H */
