/* arch/arm/mach-exynos/cal_bts.h
 *
 * Copyright (c) 2015 Samsung Electronics Co., Ltd.
 *              http://www.samsung.com/
 *
 * EXYNOS - BTS CAL code.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */

#ifndef __BTSCAL_H__
#define __BTSCAL_H__

#include <linux/io.h>
#include <linux/debugfs.h>

/* for BTS Through SYSTEM Register */
#define EXYNOS8895_PA_CP			0x14A80000
#define EXYNOS8895_PA_DPU0			0x15010000
#define EXYNOS8895_PA_DPU1			0x15020000
#define EXYNOS8895_PA_DPU2			0x15030000
#define EXYNOS8895_PA_CAM0			0x15040000
#define EXYNOS8895_PA_CAM1			0x15050000
#define EXYNOS8895_PA_ISPLP			0x15060000
#define EXYNOS8895_PA_SRDZ			0x15070000
#define EXYNOS8895_PA_IVA			0x15080000
#define EXYNOS8895_PA_DSP			0x15090000
#define EXYNOS8895_PA_VPU			0x150a0000
#define EXYNOS8895_PA_MFC0			0x150b0000
#define EXYNOS8895_PA_MFC1			0x150c0000
#define EXYNOS8895_PA_G2D0			0x150d0000
#define EXYNOS8895_PA_G2D1			0x150e0000
#define EXYNOS8895_PA_G2D2			0x150f0000
#define EXYNOS8895_PA_FSYS0			0x15100000
#define EXYNOS8895_PA_PDMA			0x15120000
#define EXYNOS8895_PA_SPDMA			0x15130000
#define EXYNOS8895_PA_ABOX			0x15140000
#define EXYNOS8895_PA_VTS			0x15150000
#define EXYNOS8895_PA_FSYS1			0x15400000
#define EXYNOS8895_PA_GNSS			0x15410000
#define EXYNOS8895_PA_ALIVE			0x15420000
#define EXYNOS8895_PA_G3D0			0x14A40000
#define EXYNOS8895_PA_G3D1			0x14A50000
#define EXYNOS8895_PA_G3D2			0x14A60000
#define EXYNOS8895_PA_G3D3			0x14A70000

#define EXYNOS8895_PA_ACEMUX_SYSREG_CORE	0x15832800
#define EXYNOS8895_PA_SCI			0x15800000
#define EXYNOS8895_PA_SCI_IRPS0			0x14a94000
#define EXYNOS8895_PA_SCI_IRPS1			0x14aa4000
#define EXYNOS8895_PA_SMC0			0x16030000
#define EXYNOS8895_PA_SMC1			0x16130000
#define EXYNOS8895_PA_SMC2			0x16230000
#define EXYNOS8895_PA_SMC3			0x16330000


#define EXYNOS8895_PA_SN_IRPS0			0x14A92000
#define EXYNOS8895_PA_SN_IRPS1			0x14AA2000
#define EXYNOS8895_PA_SN_BUSC_M0		0x15162000
#define EXYNOS8895_PA_SN_BUSC_M1		0x15172000
#define EXYNOS8895_PA_SN_BUSC_M2		0x15182000
#define EXYNOS8895_PA_SN_BUSC_M3		0x15192000

#define BTS_MAX_MO				0xffff

struct bts_status {
	unsigned int priority;
	bool disable;
	bool bypass_en;
	bool timeout_en;
	unsigned int rmo;
	unsigned int wmo;
	unsigned int full_rmo;
	unsigned int full_wmo;
	unsigned int busy_rmo;
	unsigned int busy_wmo;
	unsigned int max_rmo;
	unsigned int max_wmo;
	unsigned int timeout;
};

void bts_setqos(void __iomem *base, struct bts_status *stat);
void bts_showqos(void __iomem *base, struct seq_file *buf);
void bts_trex_init(void __iomem *base);
void bts_set_qmax(void __iomem *base, unsigned int rmo, unsigned int wmo);
void bts_set_tq(void __iomem *base, unsigned int tq);
void bts_set_qbusy(void __iomem *base, unsigned int qbusy);
void bts_set_qfull(void __iomem *base, unsigned int qfull_low,
		   unsigned int qfull_high);


#endif
