
#ifndef DEBUG_SNAPSHOT_LOG_H
#define DEBUG_SNAPSHOT_LOG_H

#include <generated/autoconf.h>

#ifdef CONFIG_DEBUG_SNAPSHOT_BINDER
#include <linux/debug-snapshot-binder.h>
#endif

#ifdef DSS_ANALYZER

#define TASK_COMM_LEN 16
#define NR_CPUS 8
#undef CONFIG_DEBUG_SNAPSHOT_LINUX_BUILD
#include <stdio.h>
#include <stdlib.h>

#else // DSS_ANALYZER

#include <linux/clk-provider.h>
#include <linux/debug-snapshot.h>
#include <linux/debug-snapshot-helper.h>

#endif // DSS_ANALYZER

#include <dt-bindings/soc/samsung/debug-snapshot-table.h>

/*  Size domain */
#define DSS_KEEP_HEADER_SZ		(SZ_256 * 3)
#define DSS_HEADER_SZ			SZ_4K
#define DSS_MMU_REG_SZ			SZ_4K
#define DSS_CORE_REG_SZ			SZ_4K
#define DSS_DBGC_LOG_SZ			SZ_4K
#define DSS_HEADER_TOTAL_SZ		(DSS_HEADER_SZ + DSS_MMU_REG_SZ + DSS_CORE_REG_SZ + DSS_DBGC_LOG_SZ)
#define DSS_SPARE_SZ			(DSS_HEADER_SIZE - DSS_HEADER_TOTAL_SZ)

/*  Length domain */
#define DSS_LOG_STRING_LEN		SZ_128
#define DSS_LOG_GEN_LEN			SZ_16
#define DSS_MMU_REG_OFFSET		SZ_512
#define DSS_CORE_REG_OFFSET		SZ_512
#define DSS_LOG_MAX_NUM			SZ_1K
#define DSS_API_MAX_NUM			SZ_2K
#define DSS_EX_MAX_NUM			SZ_8
#define DSS_IN_MAX_NUM			SZ_8
#define DSS_CALLSTACK_MAX_NUM		4
#define DSS_ITERATION			5
#define DSS_NR_CPUS			NR_CPUS
#define DSS_ITEM_MAX_NUM		10

/* Sign domain */
#define DSS_SIGN_RESET			0x0
#define DSS_SIGN_RESERVED		0x1
#define DSS_SIGN_SCRATCH		0xD
#define DSS_SIGN_ALIVE			0xFACE
#define DSS_SIGN_DEAD			0xDEAD
#define DSS_SIGN_PANIC			0xBABA
#define DSS_SIGN_SAFE_FAULT		0xFAFA
#define DSS_SIGN_NORMAL_REBOOT		0xCAFE
#define DSS_SIGN_FORCE_REBOOT		0xDAFE
#define DSS_SIGN_LOCKUP			0xDEADBEEF

/*  Specific Address Information */
#define DSS_FIXED_VIRT_BASE		(VMALLOC_START + 0xEE000000)
#define DSS_OFFSET_SCRATCH		(0x100)
#define DSS_OFFSET_DEBUG_LEVEL		(0x180)
#define DSS_OFFSET_LAST_LOGBUF		(0x200)
#define DSS_OFFSET_LAST_PLATFORM_LOGBUF	(0x280)
#define DSS_OFFSET_EMERGENCY_REASON	(0x300)
#define DSS_OFFSET_CORE_POWER_STAT	(0x400)
#define DSS_OFFSET_PANIC_STAT		(0x500)
#define DSS_OFFSET_CORE_LAST_PC		(0x600)

/* S5P_VA_SS_BASE + 0x700 -- 0x8FF is reserved */
#define DSS_OFFSET_LINUX_BANNER		(0x700)

#define DSS_OFFSET_KERNEL_LOG		(0x900)
#define DSS_OFFSET_PLATFORM_LOG		(0x904)
#define DSS_OFFSET_KERNEL_EVENT		(0x908)

/* S5P_VA_SS_BASE + 0xC00 -- 0xFFF is reserved */
#define DSS_OFFSET_PANIC_STRING		(0xC00)
#define DSS_OFFSET_SPARE_BASE		(DSS_HEADER_TOTAL_SZ)

struct dbg_snapshot_log {
	struct __task_log {
		unsigned long long time;
		unsigned long sp;
#ifdef CONFIG_DEBUG_SNAPSHOT_LINUX_BUILD
		struct task_struct *task;
#else
		void *task;
#endif
		char task_comm[TASK_COMM_LEN];
		int pid;
	} task[DSS_NR_CPUS][DSS_LOG_MAX_NUM];

	struct __work_log {
		unsigned long long time;
		unsigned long sp;
#ifdef CONFIG_DEBUG_SNAPSHOT_LINUX_BUILD
		struct worker *worker;
		work_func_t fn;
#else
		void *worker;
		void *fn;
#endif
		char task_comm[TASK_COMM_LEN];
		int en;
	} work[DSS_NR_CPUS][DSS_LOG_MAX_NUM];

	struct __cpuidle_log {
		unsigned long long time;
		unsigned long sp;
		char *modes;
		unsigned int state;
#ifdef CONFIG_DEBUG_SNAPSHOT_LINUX_BUILD
		u32 num_online_cpus;
#else
		unsigned int num_online_cpus;
#endif
		int delta;
		int en;
	} cpuidle[DSS_NR_CPUS][DSS_LOG_MAX_NUM];

	struct __suspend_log {
		unsigned long long time;
		unsigned long sp;
		char log[DSS_LOG_GEN_LEN];
		void *fn;
#ifdef CONFIG_DEBUG_SNAPSHOT_LINUX_BUILD
		struct device *dev;
#else
		void *dev;
#endif
		int en;
		int state;
		int core;
	} suspend[DSS_LOG_MAX_NUM * 4];

	struct __irq_log {
		unsigned long long time;
		unsigned long sp;
		int irq;
		void *fn;
#ifdef CONFIG_DEBUG_SNAPSHOT_LINUX_BUILD
		struct irq_desc *desc;
#else
		void *desc;
#endif
		unsigned long long latency;
		int en;
	} irq[DSS_NR_CPUS][DSS_LOG_MAX_NUM * 2];
#ifdef CONFIG_DEBUG_SNAPSHOT_SPINLOCK
	struct __spinlock_log {
		unsigned long long time;
		unsigned long sp;
		unsigned long long jiffies;
#ifdef CONFIG_DEBUG_SNAPSHOT_LINUX_BUILD
		raw_spinlock_t *lock;
#ifdef CONFIG_DEBUG_SPINLOCK
		u16 next;
		u16 owner;
#endif
#else
		void *lock;
#ifdef CONFIG_DEBUG_SPINLOCK
		unsigned short next;
		unsigned short owner;
#endif
#endif
		int en;
		void *caller[DSS_CALLSTACK_MAX_NUM];
	} spinlock[DSS_NR_CPUS][DSS_LOG_MAX_NUM];
#endif
#ifdef CONFIG_DEBUG_SNAPSHOT_IRQ_DISABLED
	struct __irqs_disabled_log {
		unsigned long long time;
		unsigned long index;
#ifdef CONFIG_DEBUG_SNAPSHOT_LINUX_BUILD
		struct task_struct *task;
#else
		void *task;
#endif
		char *task_comm;
		void *caller[DSS_CALLSTACK_MAX_NUM];
	} irqs_disabled[DSS_NR_CPUS][SZ_32];
#endif
#ifdef CONFIG_DEBUG_SNAPSHOT_CLK
	struct __clk_log {
		unsigned long long time;
#ifdef CONFIG_DEBUG_SNAPSHOT_LINUX_BUILD
		struct clk_hw *clk;
#else
		void *clk;
#endif
		const char *f_name;
		int mode;
		unsigned long arg;
	} clk[DSS_LOG_MAX_NUM];
#endif
#ifdef CONFIG_DEBUG_SNAPSHOT_PMU
	struct __pmu_log {
		unsigned long long time;
		unsigned int id;
		const char *f_name;
		int mode;
	} pmu[DSS_LOG_MAX_NUM];
#endif
#ifdef CONFIG_DEBUG_SNAPSHOT_FREQ
	struct __freq_log {
		unsigned long long time;
		int cpu;
		int freq_type;
		char *freq_name;
		unsigned long old_freq;
		unsigned long target_freq;
		int en;
	} freq[DSS_LOG_MAX_NUM];
#endif
#ifdef CONFIG_DEBUG_SNAPSHOT_DM
	struct __dm_log {
		unsigned long long time;
		int cpu;
		int dm_num;
		unsigned long min_freq;
		unsigned long max_freq;
#ifdef CONFIG_DEBUG_SNAPSHOT_LINUX_BUILD
		s32 wait_dmt;
		s32 do_dmt;
#else
		int wait_dmt;
		int do_dmt;
#endif
	} dm[DSS_LOG_MAX_NUM];
#endif
#ifdef CONFIG_DEBUG_SNAPSHOT_REG
	struct __reg_log {
		unsigned long long time;
		int read;
		size_t val;
		size_t reg;
		int en;
		void *caller[DSS_CALLSTACK_MAX_NUM];
	} reg[DSS_NR_CPUS][DSS_LOG_MAX_NUM];
#endif
#ifdef CONFIG_DEBUG_SNAPSHOT_HRTIMER
	struct __hrtimer_log {
		unsigned long long time;
		unsigned long long now;
#ifdef CONFIG_DEBUG_SNAPSHOT_LINUX_BUILD
		struct hrtimer *timer;
#else
		void *timer;
#endif
		void *fn;
		int en;
	} hrtimers[DSS_NR_CPUS][DSS_LOG_MAX_NUM];
#endif
#ifdef CONFIG_DEBUG_SNAPSHOT_REGULATOR
	struct __regulator_log {
		unsigned long long time;
		unsigned long long acpm_time;
		int cpu;
		char name[SZ_16];
		unsigned int reg;
		unsigned int voltage;
		unsigned int raw_volt;
		int en;
	} regulator[DSS_LOG_MAX_NUM];
#endif
#ifdef CONFIG_DEBUG_SNAPSHOT_THERMAL
	struct __thermal_log {
		unsigned long long time;
		int cpu;
#ifdef CONFIG_DEBUG_SNAPSHOT_LINUX_BUILD
		struct exynos_tmu_platform_data *data;
#else
		void *data;
#endif
		unsigned int temp;
		char *cooling_device;
		unsigned int cooling_state;
	} thermal[DSS_LOG_MAX_NUM];
#endif
#ifdef CONFIG_DEBUG_SNAPSHOT_ACPM
	struct __acpm_log {
		unsigned long long time;
		unsigned long long acpm_time;
		char log[9];
		unsigned int data;
	} acpm[DSS_LOG_MAX_NUM];
#endif
#ifdef CONFIG_DEBUG_SNAPSHOT_I2C
	struct __i2c_log {
		unsigned long long time;
		int cpu;
#ifdef CONFIG_DEBUG_SNAPSHOT_LINUX_BUILD
		struct i2c_adapter *adap;
		struct i2c_msg *msgs;
#else
		void *adp;
		void *msgs;
#endif
		int num;
		int en;
	} i2c[DSS_LOG_MAX_NUM];
#endif
#ifdef CONFIG_DEBUG_SNAPSHOT_SPI
	struct __spi_log {
		unsigned long long time;
		int cpu;
#ifdef CONFIG_DEBUG_SNAPSHOT_LINUX_BUILD
		struct spi_controller *ctlr;
		struct spi_message *cur_msg;
#else
		void *ctlr;
		void *cur_msg;
#endif
		int en;
	} spi[DSS_LOG_MAX_NUM];
#endif
#ifdef CONFIG_DEBUG_SNAPSHOT_BINDER
	struct __binder_log {
		unsigned long long time;
		int cpu;
		struct trace_binder_transaction_base base;
		struct trace_binder_transaction transaction;
		struct trace_binder_transaction_error error;
	} binder[DSS_API_MAX_NUM << 2];
#endif

#ifndef CONFIG_DEBUG_SNAPSHOT_MINIMIZED_MODE
	struct __printkl_log {
		unsigned long long time;
		int cpu;
		size_t msg;
		size_t val;
		void *caller[DSS_CALLSTACK_MAX_NUM];
	} printkl[DSS_API_MAX_NUM];

	struct __printk_log {
		unsigned long long time;
		int cpu;
		char log[DSS_LOG_STRING_LEN];
		void *caller[DSS_CALLSTACK_MAX_NUM];
	} printk[DSS_API_MAX_NUM];
#endif
};

#endif
