/*
 * Copyright (c) 2012, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
 * only version 2 as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 */
#ifndef _MACH_MSM_CACHE_DUMP_
#define _MACH_MSM_CACHE_DUMP_

#include <asm-generic/sizes.h>


struct l2_cache_line_dump {
	unsigned int l2dcrtr0_val;
	unsigned int l2dcrtr1_val;
	unsigned int cache_line_data[32];
	unsigned int ddr_data[32];
} __packed;

struct l2_cache_dump {
	unsigned int magic_number;
	unsigned int version;
	unsigned int tag_size;
	unsigned int line_size;
	unsigned int total_lines;
	struct l2_cache_line_dump cache[8*1024];
	unsigned int l2esr;
} __packed;


struct l1_cache_dump {
	unsigned int magic;
	unsigned int version;
	unsigned int flags;
	unsigned int cpu_count;
	unsigned int i_tag_size;
	unsigned int i_line_size;
	unsigned int i_num_sets;
	unsigned int i_num_ways;
	unsigned int d_tag_size;
	unsigned int d_line_size;
	unsigned int d_num_sets;
	unsigned int d_num_ways;
	unsigned int spare[32];
	unsigned int lines[];
} __packed;


struct msm_cache_dump_platform_data {
	unsigned int l1_size;
	unsigned int l2_size;
};

#define CACHE_BUFFER_DUMP_SIZE (L1_BUFFER_SIZE + L2_BUFFER_SIZE)

#define L1C_SERVICE_ID 3
#define L1C_BUFFER_SET_COMMAND_ID 4
#define CACHE_BUFFER_DUMP_COMMAND_ID 5
#define L1C_BUFFER_GET_SIZE_COMMAND_ID	6
#define L2C_BUFFER_SET_COMMAND_ID 7
#define L2C_BUFFER_GET_SIZE_COMMAND_ID 8

#endif
