1*9bf9a700SWesley Yao /* Copyright 2006 Google Inc. All Rights Reserved. */ 2*9bf9a700SWesley Yao /* Licensed under the Apache License, Version 2.0 (the "License"); 3*9bf9a700SWesley Yao * you may not use this file except in compliance with the License. 4*9bf9a700SWesley Yao * You may obtain a copy of the License at 5*9bf9a700SWesley Yao * 6*9bf9a700SWesley Yao * http://www.apache.org/licenses/LICENSE-2.0 7*9bf9a700SWesley Yao * 8*9bf9a700SWesley Yao * Unless required by applicable law or agreed to in writing, software 9*9bf9a700SWesley Yao * distributed under the License is distributed on an "AS IS" BASIS, 10*9bf9a700SWesley Yao * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11*9bf9a700SWesley Yao * See the License for the specific language governing permissions and 12*9bf9a700SWesley Yao * limitations under the License. 13*9bf9a700SWesley Yao */ 14*9bf9a700SWesley Yao 15*9bf9a700SWesley Yao /* This is stressapptest for Rockchip platform in U-Boot, the design idea and 16*9bf9a700SWesley Yao * the patterns are from code.google.com/p/stressapptest. 17*9bf9a700SWesley Yao */ 18*9bf9a700SWesley Yao 19*9bf9a700SWesley Yao #ifndef __CMD_DDR_TOOL_STRESSAPPTEST_STRESSAPPTEST_H 20*9bf9a700SWesley Yao #define __CMD_DDR_TOOL_STRESSAPPTEST_STRESSAPPTEST_H 21*9bf9a700SWesley Yao 22*9bf9a700SWesley Yao struct stressapptest_params { 23*9bf9a700SWesley Yao ulong total_test_size_mb; 24*9bf9a700SWesley Yao /* total_test_size = page_size * page_num */ 25*9bf9a700SWesley Yao ulong page_size_byte; 26*9bf9a700SWesley Yao u32 page_num; 27*9bf9a700SWesley Yao /* page_size = block_size * block_num */ 28*9bf9a700SWesley Yao u32 block_size_byte; 29*9bf9a700SWesley Yao u32 block_num; 30*9bf9a700SWesley Yao 31*9bf9a700SWesley Yao u32 weight_count; 32*9bf9a700SWesley Yao 33*9bf9a700SWesley Yao u8 cpu_num; 34*9bf9a700SWesley Yao } sat; 35*9bf9a700SWesley Yao 36*9bf9a700SWesley Yao struct pat { 37*9bf9a700SWesley Yao const char *name; 38*9bf9a700SWesley Yao const unsigned int *data_array; 39*9bf9a700SWesley Yao /* mask = size - 1, So data_array[index & mask] is always valid. */ 40*9bf9a700SWesley Yao const unsigned int mask; 41*9bf9a700SWesley Yao const unsigned int weight[4]; /* Weighted frequency of this pattern. */ 42*9bf9a700SWesley Yao }; 43*9bf9a700SWesley Yao 44*9bf9a700SWesley Yao struct adler_sum { 45*9bf9a700SWesley Yao u64 a1; 46*9bf9a700SWesley Yao u64 b1; 47*9bf9a700SWesley Yao u64 a2; 48*9bf9a700SWesley Yao u64 b2; 49*9bf9a700SWesley Yao }; 50*9bf9a700SWesley Yao 51*9bf9a700SWesley Yao struct pattern { 52*9bf9a700SWesley Yao struct pat *pat; 53*9bf9a700SWesley Yao bool inv; 54*9bf9a700SWesley Yao u32 repeat; 55*9bf9a700SWesley Yao u32 weight; 56*9bf9a700SWesley Yao struct adler_sum adler_sum; 57*9bf9a700SWesley Yao }; 58*9bf9a700SWesley Yao 59*9bf9a700SWesley Yao struct page { 60*9bf9a700SWesley Yao void *base_addr; 61*9bf9a700SWesley Yao struct pattern *pattern; 62*9bf9a700SWesley Yao bool valid; /* 1: valid, 0: empty */ 63*9bf9a700SWesley Yao } *page_list; 64*9bf9a700SWesley Yao 65*9bf9a700SWesley Yao extern void secondary_init(void); 66*9bf9a700SWesley Yao extern void lock_byte_mutex(u32 *flag); 67*9bf9a700SWesley Yao extern u32 unlock_byte_mutex(u32 *flag); 68*9bf9a700SWesley Yao extern u32 get_cpu_id(void); 69*9bf9a700SWesley Yao 70*9bf9a700SWesley Yao #endif /* __CMD_DDR_TOOL_STRESSAPPTEST_STRESSAPPTEST_H */ 71