/* SPDX-License-Identifier: GPL-2.0+ */
/*
 * (C) Copyright 2016 Carlo Caione <carlo@caione.org>
 */

#ifndef __SD_EMMC_H__
#define __SD_EMMC_H__

#include <clk.h>
#include <mmc.h>

#define SDIO_PORT_A			0
#define SDIO_PORT_B			1
#define SDIO_PORT_C			2

#define SD_EMMC_CLKSRC_24M		24000000	/* 24 MHz */
#define SD_EMMC_CLKSRC_DIV2		1000000000	/* 1 GHz */

#define MESON_SD_EMMC_CLOCK		0x00
#define CLK_MAX_DIV   GENMASK(5, 0)
#define CLK_MAX_SRC   GENMASK(7, 6)
#define	Cfg_div 	0
#define Cfg_src		6
#define Cfg_co_phase	8
#define	Cfg_tx_phase	10
#define	Cfg_rx_phase	12
#define	Cfg_sram_pd		14
#define	Cfg_tx_delay	16
#define	Cfg_rx_delay	22
#define	Cfg_always_on	28
#define	Cfg_irq_sdio_sleep   29
#define Cfg_irq_sdio_sleep_ds		30

#define MESON_SD_EMMC_DELAY1	0x4
#define DLY_D0_MASK	GENMASK(5, 0)
#define DLY_D1_MASK	GENMASK(11, 6)
#define DLY_D2_MASK	GENMASK(17, 12)
#define DLY_D3_MASK	GENMASK(23, 18)
#define DLY_D4_MASK	GENMASK(31, 24)
#define Dly_d0	0
#define Dly_d1	6
#define Dly_d2	12
#define Dly_d3	18
#define Dly_d4	24

#define MESON_SD_EMMC_DELAY2	0x8
#define DLY_D5_MASK	GENMASK(5, 0)
#define DLY_D6_MASK	GENMASK(11, 6)
#define DLY_D7_MASK	GENMASK(17, 12)
#define DLY_D8_MASK	GENMASK(23, 18)
#define DLY_D9_MASK	GENMASK(31, 24)
#define Dly_d5	0
#define Dly_d6	6
#define Dly_d7	12
#define Dly_d8	18
#define Dly_d9	24

#define MESON_SD_EMMC_ADJUST	0xC
#define CALI_SEL_MASK	GENMASK(11, 8)
#define ADJ_DLY_MASK	GENMASK(21, 16)
#define Cfg_cali_sel	8
#define Cfg_cali_en		12
#define Cfg_adj_en		13
#define Cfg_cali_rise	14
#define Cfg_ds_en		15
#define Cfg_adj_dly		16
#define Cfg_adj_auto	22
#define Cfg_adj_init	23

#define MESON_SD_EMMC_START		0x40
#define CFG_DESC_INIT			BIT(0)
#define CFG_DESC_BUSY			BIT(1)
#define CFG_DESC_ADDR			2

#define MESON_SD_EMMC_CFG		0x44
#define CFG_BUS_WIDTH_MASK		GENMASK(1, 0)
#define CFG_BUS_WIDTH_1		0
#define CFG_BUS_WIDTH_4		1
#define CFG_BUS_WIDTH_8		2
#define CFG_DDR				BIT(2)
#define CFG_BL_LEN_MASK		GENMASK(7, 4)
#define CFG_BL_LEN_SHIFT	4
#define CFG_BL_LEN_512		(9 << 4)
#define CFG_RESP_TIMEOUT_MASK		GENMASK(11, 8)
#define CFG_RESP_TIMEOUT_256		(8 << 8)
#define CFG_RC_CC_MASK		GENMASK(15, 12)
#define CFG_RC_CC_16			(4 << 12)
#define CFG_SDCLK_ALWAYS_ON		BIT(18)
#define CFG_AUTO_CLK			BIT(23)

#define MESON_SD_EMMC_STATUS		0x48
#define STATUS_MASK			GENMASK(15, 0)
#define STATUS_ERR_MASK		GENMASK(12, 0)
#define STATUS_RXD_ERR_MASK		GENMASK(7, 0)
#define STATUS_TXD_ERR		BIT(8)
#define STATUS_DESC_ERR		BIT(9)
#define STATUS_RESP_ERR		BIT(10)
#define STATUS_RESP_TIMEOUT		BIT(11)
#define STATUS_DESC_TIMEOUT		BIT(12)
#define STATUS_END_OF_CHAIN		BIT(13)

#define MESON_SD_EMMC_IRQ_EN		0x4c

#define MESON_SD_EMMC_CMD_CFG		0x50
#define CMD_CFG_LENGTH_MASK		GENMASK(8, 0)
#define CMD_CFG_BLOCK_MODE		BIT(9)
#define CMD_CFG_R1B			BIT(10)
#define CMD_CFG_END_OF_CHAIN		BIT(11)
#define CMD_CFG_TIMEOUT_4S		(12 << 12)
#define CMD_CFG_NO_RESP		BIT(16)
#define CMD_CFG_NO_CMD		BIT(17)
#define CMD_CFG_DATA_IO		BIT(18)
#define CMD_CFG_DATA_WR		BIT(19)
#define CMD_CFG_RESP_NOCRC		BIT(20)
#define CMD_CFG_RESP_128		BIT(21)
#define CMD_CFG_RESP_NUM		BIT(22)
#define CMD_CFG_DATA_NUM		BIT(23)
#define CMD_CFG_CMD_INDEX_MASK	GENMASK(29, 24)
#define CMD_CFG_CMD_INDEX_SHIFT	24
#define CMD_CFG_ERR			BIT(30)
#define CMD_CFG_OWNER			BIT(31)

#define MESON_SD_EMMC_CMD_ARG		0x54
#define MESON_SD_EMMC_CMD_DAT		0x58
#define MESON_SD_EMMC_CMD_RSP		0x5c
#define MESON_SD_EMMC_CMD_RSP1		0x60
#define MESON_SD_EMMC_CMD_RSP2		0x64
#define MESON_SD_EMMC_CMD_RSP3		0x68

#define SD_EMMC_RXD_ERROR               (1 << 0)
#define SD_EMMC_TXD_ERROR               (1 << 1)
#define SD_EMMC_DESC_ERROR              (1 << 2)
#define SD_EMMC_RESP_CRC_ERROR          (1 << 3)
#define SD_EMMC_RESP_TIMEOUT_ERROR      (1 << 4)
#define SD_EMMC_DESC_TIMEOUT_ERROR      (1 << 5)

struct meson_host {
	struct mmc *mmc;
	uint is_in;
	uint is_tuning;
	struct clk core;
	struct clk xtal;
	struct clk div2;
	struct clk mux;
	struct clk div;
	struct clk gate;
	struct gpio_desc gpio_cd;
	struct gpio_desc gpio_reset;
	char *blk_test;
	char* desc_buf;
};

struct meson_mmc_platdata {
	struct mmc_config cfg;
	struct mmc mmc;
	void *regbase;
	void *w_buf;
};

#endif
