xref: /rk3399_rockchip-uboot/cmd/ddr_tool/stressapptest/stressapptest.h (revision 2d08ea87864a34c9e03c965b76b5fb18c1573675)
19bf9a700SWesley Yao /* Copyright 2006 Google Inc. All Rights Reserved. */
29bf9a700SWesley Yao /* Licensed under the Apache License, Version 2.0 (the "License");
39bf9a700SWesley Yao  * you may not use this file except in compliance with the License.
49bf9a700SWesley Yao  * You may obtain a copy of the License at
59bf9a700SWesley Yao  *
69bf9a700SWesley Yao  *	http://www.apache.org/licenses/LICENSE-2.0
79bf9a700SWesley Yao  *
89bf9a700SWesley Yao  * Unless required by applicable law or agreed to in writing, software
99bf9a700SWesley Yao  * distributed under the License is distributed on an "AS IS" BASIS,
109bf9a700SWesley Yao  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
119bf9a700SWesley Yao  * See the License for the specific language governing permissions and
129bf9a700SWesley Yao  * limitations under the License.
139bf9a700SWesley Yao  */
149bf9a700SWesley Yao 
159bf9a700SWesley Yao /* This is stressapptest for Rockchip platform in U-Boot, the design idea and
169bf9a700SWesley Yao  * the patterns are from code.google.com/p/stressapptest.
179bf9a700SWesley Yao  */
189bf9a700SWesley Yao 
199bf9a700SWesley Yao #ifndef __CMD_DDR_TOOL_STRESSAPPTEST_STRESSAPPTEST_H
209bf9a700SWesley Yao #define __CMD_DDR_TOOL_STRESSAPPTEST_STRESSAPPTEST_H
219bf9a700SWesley Yao 
229bf9a700SWesley Yao struct stressapptest_params {
23*2ac0a64aSWesley Yao 	ulong total_start_addr;
249bf9a700SWesley Yao 	ulong total_test_size_mb;
259bf9a700SWesley Yao 	/* total_test_size = page_size * page_num */
269bf9a700SWesley Yao 	ulong page_size_byte;
279bf9a700SWesley Yao 	u32 page_num;
289bf9a700SWesley Yao 	/* page_size = block_size * block_num */
299bf9a700SWesley Yao 	u32 block_size_byte;
309bf9a700SWesley Yao 	u32 block_num;
319bf9a700SWesley Yao 
329bf9a700SWesley Yao 	u32 weight_count;
339bf9a700SWesley Yao 
349bf9a700SWesley Yao 	u8 cpu_num;
359bf9a700SWesley Yao } sat;
369bf9a700SWesley Yao 
379bf9a700SWesley Yao struct pat {
389bf9a700SWesley Yao 	const char *name;
399bf9a700SWesley Yao 	const unsigned int *data_array;
409bf9a700SWesley Yao 	/* mask = size - 1, So data_array[index & mask] is always valid. */
419bf9a700SWesley Yao 	const unsigned int mask;
429bf9a700SWesley Yao 	const unsigned int weight[4];	/* Weighted frequency of this pattern. */
439bf9a700SWesley Yao };
449bf9a700SWesley Yao 
459bf9a700SWesley Yao struct adler_sum {
469bf9a700SWesley Yao 	u64 a1;
479bf9a700SWesley Yao 	u64 b1;
489bf9a700SWesley Yao 	u64 a2;
499bf9a700SWesley Yao 	u64 b2;
509bf9a700SWesley Yao };
519bf9a700SWesley Yao 
529bf9a700SWesley Yao struct pattern {
539bf9a700SWesley Yao 	struct pat *pat;
549bf9a700SWesley Yao 	bool inv;
559bf9a700SWesley Yao 	u32 repeat;
569bf9a700SWesley Yao 	u32 weight;
579bf9a700SWesley Yao 	struct adler_sum adler_sum;
589bf9a700SWesley Yao };
599bf9a700SWesley Yao 
609bf9a700SWesley Yao struct page {
619bf9a700SWesley Yao 	void *base_addr;
629bf9a700SWesley Yao 	struct pattern *pattern;
639bf9a700SWesley Yao 	bool valid;	/* 1: valid, 0: empty */
649bf9a700SWesley Yao } *page_list;
659bf9a700SWesley Yao 
669bf9a700SWesley Yao extern void secondary_init(void);
679bf9a700SWesley Yao extern void lock_byte_mutex(u32 *flag);
689bf9a700SWesley Yao extern u32 unlock_byte_mutex(u32 *flag);
699bf9a700SWesley Yao 
709bf9a700SWesley Yao #endif /* __CMD_DDR_TOOL_STRESSAPPTEST_STRESSAPPTEST_H */
71