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