1112ed2d3SChris Wilson /* 2112ed2d3SChris Wilson * SPDX-License-Identifier: GPL-2.0 3112ed2d3SChris Wilson * 4112ed2d3SChris Wilson * Copyright © 2018 Intel Corporation 5112ed2d3SChris Wilson */ 6112ed2d3SChris Wilson 7112ed2d3SChris Wilson #include "../i915_selftest.h" 8112ed2d3SChris Wilson 9112ed2d3SChris Wilson static int intel_mmio_bases_check(void *arg) 10112ed2d3SChris Wilson { 11112ed2d3SChris Wilson int i, j; 12112ed2d3SChris Wilson 13112ed2d3SChris Wilson for (i = 0; i < ARRAY_SIZE(intel_engines); i++) { 14112ed2d3SChris Wilson const struct engine_info *info = &intel_engines[i]; 15112ed2d3SChris Wilson char name[INTEL_ENGINE_CS_MAX_NAME]; 16112ed2d3SChris Wilson u8 prev = U8_MAX; 17112ed2d3SChris Wilson 18112ed2d3SChris Wilson __sprint_engine_name(name, info); 19112ed2d3SChris Wilson 20112ed2d3SChris Wilson for (j = 0; j < MAX_MMIO_BASES; j++) { 21112ed2d3SChris Wilson u8 gen = info->mmio_bases[j].gen; 22112ed2d3SChris Wilson u32 base = info->mmio_bases[j].base; 23112ed2d3SChris Wilson 24112ed2d3SChris Wilson if (gen >= prev) { 25112ed2d3SChris Wilson pr_err("%s: %s: mmio base for gen %x " 26112ed2d3SChris Wilson "is before the one for gen %x\n", 27112ed2d3SChris Wilson __func__, name, prev, gen); 28112ed2d3SChris Wilson return -EINVAL; 29112ed2d3SChris Wilson } 30112ed2d3SChris Wilson 31112ed2d3SChris Wilson if (gen == 0) 32112ed2d3SChris Wilson break; 33112ed2d3SChris Wilson 34112ed2d3SChris Wilson if (!base) { 35112ed2d3SChris Wilson pr_err("%s: %s: invalid mmio base (%x) " 36112ed2d3SChris Wilson "for gen %x at entry %u\n", 37112ed2d3SChris Wilson __func__, name, base, gen, j); 38112ed2d3SChris Wilson return -EINVAL; 39112ed2d3SChris Wilson } 40112ed2d3SChris Wilson 41112ed2d3SChris Wilson prev = gen; 42112ed2d3SChris Wilson } 43112ed2d3SChris Wilson 44112ed2d3SChris Wilson pr_info("%s: min gen supported for %s = %d\n", 45112ed2d3SChris Wilson __func__, name, prev); 46112ed2d3SChris Wilson } 47112ed2d3SChris Wilson 48112ed2d3SChris Wilson return 0; 49112ed2d3SChris Wilson } 50112ed2d3SChris Wilson 51112ed2d3SChris Wilson int intel_engine_cs_mock_selftests(void) 52112ed2d3SChris Wilson { 53112ed2d3SChris Wilson static const struct i915_subtest tests[] = { 54112ed2d3SChris Wilson SUBTEST(intel_mmio_bases_check), 55112ed2d3SChris Wilson }; 56112ed2d3SChris Wilson 57112ed2d3SChris Wilson return i915_subtests(tests, NULL); 58112ed2d3SChris Wilson } 59