/*
 * Copyright (c) 2019, Linaro Limited
 * Copyright (c) 2019, Ying-Chun Liu (PaulLiu) <paul.liu@linaro.org>
 *
 * SPDX-License-Identifier: BSD-3-Clause
 */

#ifndef RPI3_SDHOST_H
#define	RPI3_SDHOST_H

#include <drivers/mmc.h>
#include <stdint.h>
#include <platform_def.h>

struct rpi3_sdhost_params {
	uintptr_t	reg_base;
	uint32_t	clk_rate;
	uint32_t	clk_rate_initial;
	uint32_t	bus_width;
	uint32_t        flags;
	uint32_t	current_cmd;
	uint8_t		cmdbusy;
	uint8_t		mmc_app_cmd;
	uint32_t	ns_per_fifo_word;

	uint32_t	sdcard_rca;
	uint32_t	gpio48_pinselect[6];
};

void rpi3_sdhost_init(struct rpi3_sdhost_params *params,
		      struct mmc_device_info *mmc_dev_info);
void rpi3_sdhost_stop(void);

/* Registers */
#define HC_COMMAND			0x00        /* Command and flags */
#define HC_ARGUMENT			0x04
#define HC_TIMEOUTCOUNTER		0x08
#define HC_CLOCKDIVISOR			0x0c
#define HC_RESPONSE_0			0x10
#define HC_RESPONSE_1			0x14
#define HC_RESPONSE_2			0x18
#define HC_RESPONSE_3			0x1c
#define HC_HOSTSTATUS			0x20
#define HC_POWER			0x30
#define HC_DEBUG			0x34
#define HC_HOSTCONFIG			0x38
#define HC_BLOCKSIZE			0x3c
#define HC_DATAPORT			0x40
#define HC_BLOCKCOUNT			0x50

/* Flags for HC_COMMAND register */
#define HC_CMD_ENABLE			0x8000
#define HC_CMD_FAILED			0x4000
#define HC_CMD_BUSY			0x0800
#define HC_CMD_RESPONSE_NONE		0x0400
#define HC_CMD_RESPONSE_LONG		0x0200
#define HC_CMD_WRITE			0x0080
#define HC_CMD_READ			0x0040
#define HC_CMD_COMMAND_MASK		0x003f

#define RPI3_SDHOST_MAX_CLOCK		250000000	// technically, we should obtain this number from the mailbox

#define HC_CLOCKDIVISOR_MAXVAL		0x07ff
#define HC_CLOCKDIVISOR_PREFERVAL	0x027b
#define HC_CLOCKDIVISOR_SLOWVAL		0x0148
#define HC_CLOCKDIVISOR_STOPVAL		0x01fb

/* Flags for HC_HOSTSTATUS register */
#define HC_HSTST_HAVEDATA		0x0001
#define HC_HSTST_ERROR_FIFO		0x0008
#define HC_HSTST_ERROR_CRC7		0x0010
#define HC_HSTST_ERROR_CRC16		0x0020
#define HC_HSTST_TIMEOUT_CMD		0x0040
#define HC_HSTST_TIMEOUT_DATA		0x0080
#define HC_HSTST_INT_BLOCK		0x0200
#define HC_HSTST_INT_BUSY		0x0400

#define HC_HSTST_RESET			0xffff

#define HC_HSTST_MASK_ERROR_DATA	(HC_HSTST_ERROR_FIFO | \
					 HC_HSTST_ERROR_CRC7 | \
					 HC_HSTST_ERROR_CRC16 | \
					 HC_HSTST_TIMEOUT_DATA)

#define HC_HSTST_MASK_ERROR_ALL		(HC_HSTST_MASK_ERROR_DATA | \
					 HC_HSTST_TIMEOUT_CMD)

/* Flags for HC_HOSTCONFIG register */
#define HC_HSTCF_INTBUS_WIDE		0x0002
#define HC_HSTCF_EXTBUS_4BIT		0x0004
#define HC_HSTCF_SLOW_CARD		0x0008
#define HC_HSTCF_INT_DATA		0x0010
#define HC_HSTCF_INT_BLOCK		0x0100
#define HC_HSTCF_INT_BUSY		0x0400

/* Flags for HC_DEBUG register */
#define HC_DBG_FIFO_THRESH_WRITE_SHIFT	9
#define HC_DBG_FIFO_THRESH_READ_SHIFT	14
#define HC_DBG_FIFO_THRESH_MASK		0x001f
#define HC_DBG_FSM_MASK			0xf
#define HC_DBG_FSM_IDENTMODE		0x0
#define HC_DBG_FSM_DATAMODE		0x1
#define HC_DBG_FSM_READDATA		0x2
#define HC_DBG_FSM_WRITEDATA		0x3
#define HC_DBG_FSM_READWAIT		0x4
#define HC_DBG_FSM_READCRC		0x5
#define HC_DBG_FSM_WRITECRC		0x6
#define HC_DBG_FSM_WRITEWAIT1		0x7
#define HC_DBG_FSM_POWERDOWN		0x8
#define HC_DBG_FSM_POWERUP		0x9
#define HC_DBG_FSM_WRITESTART1		0xa
#define HC_DBG_FSM_WRITESTART2		0xb
#define HC_DBG_FSM_GENPULSES		0xc
#define HC_DBG_FSM_WRITEWAIT2		0xd
#define HC_DBG_FSM_STARTPOWDOWN		0xf
#define HC_DBG_FORCE_DATA_MODE		0x40000

/* Settings */
#define HC_FIFO_SIZE			16
#define HC_FIFO_THRESH_READ		4
#define HC_FIFO_THRESH_WRITE		4

#define HC_TIMEOUT_DEFAULT		0x00f00000
#define HC_TIMEOUT_IDLE			0x00a00000

#endif  /* RPI3_SDHOST_H */
