111313Sandreas.sandberg@arm.com/*
211313Sandreas.sandberg@arm.com * Copyright (c) 2016 ARM Limited
311313Sandreas.sandberg@arm.com * All rights reserved
411313Sandreas.sandberg@arm.com *
511313Sandreas.sandberg@arm.com * Licensed under the Apache License, Version 2.0 (the "License");
611313Sandreas.sandberg@arm.com * you may not use this file except in compliance with the License.
711313Sandreas.sandberg@arm.com * You may obtain a copy of the License at
811313Sandreas.sandberg@arm.com *
911313Sandreas.sandberg@arm.com *     http://www.apache.org/licenses/LICENSE-2.0
1011313Sandreas.sandberg@arm.com *
1111313Sandreas.sandberg@arm.com * Unless required by applicable law or agreed to in writing, software
1211313Sandreas.sandberg@arm.com * distributed under the License is distributed on an "AS IS" BASIS,
1311313Sandreas.sandberg@arm.com * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1411313Sandreas.sandberg@arm.com * See the License for the specific language governing permissions and
1511313Sandreas.sandberg@arm.com * limitations under the License.
1611313Sandreas.sandberg@arm.com *
1711313Sandreas.sandberg@arm.com * Authors: Andreas Sandberg
1811313Sandreas.sandberg@arm.com */
1911313Sandreas.sandberg@arm.com
2011313Sandreas.sandberg@arm.com#include <libnomali/nomali.h>
2111313Sandreas.sandberg@arm.com#include <inttypes.h>
2211313Sandreas.sandberg@arm.com
2311313Sandreas.sandberg@arm.com#include "nomali_test_helpers.h"
2411313Sandreas.sandberg@arm.com#include "../lib/mali_midg_regmap.h"
2511313Sandreas.sandberg@arm.com
2611313Sandreas.sandberg@arm.com#define TEST_ASn_STATUS(n)                                              \
2711313Sandreas.sandberg@arm.com    E_NOMALI_TEST_REG("AS" # n "_STATUS", h, MMU_AS_REG(n, ASn_STATUS), \
2811313Sandreas.sandberg@arm.com                      value == 0)
2911313Sandreas.sandberg@arm.com
3011313Sandreas.sandberg@arm.comstatic void
3111313Sandreas.sandberg@arm.comon_reset(nomali_handle_t h, void *usr)
3211313Sandreas.sandberg@arm.com{
3311313Sandreas.sandberg@arm.com    E_NOMALI_BAIL(nomali_reg_write_raw(h, 0x0000, 0xC0FFEE));
3411313Sandreas.sandberg@arm.com}
3511313Sandreas.sandberg@arm.com
3611313Sandreas.sandberg@arm.comint
3711313Sandreas.sandberg@arm.commain(int argc, char **argv)
3811313Sandreas.sandberg@arm.com{
3911313Sandreas.sandberg@arm.com    const nomali_config_t cfg = {
4011313Sandreas.sandberg@arm.com        .type = NOMALI_GPU_T60X,
4111313Sandreas.sandberg@arm.com        .ver_maj = 0,
4211313Sandreas.sandberg@arm.com        .ver_min = 1,
4311313Sandreas.sandberg@arm.com        .ver_status = 0,
4411313Sandreas.sandberg@arm.com    };
4511313Sandreas.sandberg@arm.com
4611313Sandreas.sandberg@arm.com    nomali_callback_t reset_callback = {
4711313Sandreas.sandberg@arm.com        .type = NOMALI_CALLBACK_RESET,
4811313Sandreas.sandberg@arm.com        .usr = NULL,
4911313Sandreas.sandberg@arm.com        .func.reset = &on_reset,
5011313Sandreas.sandberg@arm.com    };
5111313Sandreas.sandberg@arm.com
5211313Sandreas.sandberg@arm.com    nomali_handle_t h;
5311313Sandreas.sandberg@arm.com    nomali_error_t error;
5411313Sandreas.sandberg@arm.com
5511313Sandreas.sandberg@arm.com    E_NOMALI_BAIL(nomali_create(&h, &cfg));
5611313Sandreas.sandberg@arm.com
5711313Sandreas.sandberg@arm.com    NOMALI_TEST_REG("gpu_id", h, 0x0000, value == 0x69560010);
5811313Sandreas.sandberg@arm.com
5911313Sandreas.sandberg@arm.com    E_NOMALI_TEST("reg_callback", nomali_set_callback(h, &reset_callback));
6011313Sandreas.sandberg@arm.com    E_NOMALI_BAIL(nomali_reset(h));
6111313Sandreas.sandberg@arm.com
6211313Sandreas.sandberg@arm.com    NOMALI_TEST_REG("custom_gpu_id", h, 0x0000, value == 0xC0FFEE);
6311313Sandreas.sandberg@arm.com
6411313Sandreas.sandberg@arm.com    E_NOMALI_BAIL(nomali_destroy(h));
6511313Sandreas.sandberg@arm.com
6611313Sandreas.sandberg@arm.com
6711313Sandreas.sandberg@arm.com    return 0;
6811313Sandreas.sandberg@arm.com}
69