/*
 * caddy.c -- esd VME8349 support for "missing" access modes in TSI148.
 * Copyright (c) 2009 esd gmbh.
 *
 * Reinhard Arlt <reinhard.arlt@esd-electronics.com>
 *
 * SPDX-License-Identifier:	GPL-2.0+
 */

#ifndef __CADDY_H__
#define __CADDY_H__

#define CMD_SIZE	1024
#define ANSWER_SIZE	1024
#define CADDY_MAGIC	"esd vme8349 V1.0"

enum caddy_cmds {
	CADDY_CMD_IO_READ_8,
	CADDY_CMD_IO_READ_16,
	CADDY_CMD_IO_READ_32,
	CADDY_CMD_IO_WRITE_8,
	CADDY_CMD_IO_WRITE_16,
	CADDY_CMD_IO_WRITE_32,
	CADDY_CMD_CONFIG_READ_8,
	CADDY_CMD_CONFIG_READ_16,
	CADDY_CMD_CONFIG_READ_32,
	CADDY_CMD_CONFIG_WRITE_8,
	CADDY_CMD_CONFIG_WRITE_16,
	CADDY_CMD_CONFIG_WRITE_32,
};

struct caddy_cmd {
	uint32_t cmd;
	uint32_t issue;
	uint32_t addr;
	uint32_t par[5];
};

struct caddy_answer {
	uint32_t answer;
	uint32_t issue;
	uint32_t status;
	uint32_t par[5];
};

struct caddy_interface {
	uint8_t  magic[16];
	uint32_t cmd_in;
	uint32_t cmd_out;
	uint32_t heartbeat;
	uint32_t reserved1;
	struct caddy_cmd cmd[CMD_SIZE];
	uint32_t answer_in;
	uint32_t answer_out;
	uint32_t reserved2;
	uint32_t reserved3;
	struct caddy_answer answer[CMD_SIZE];
};

#endif /* of __CADDY_H__ */
