blob: 9864be7cf618425a049e41acd9442d9937f65362 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
/*
* Arm SCP/MCP Software
* Copyright (c) 2018-2020, Arm Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include "low_level_access.h"
#include "synquacer_common.h"
#include <internal/transaction_sw.h>
#include <mod_synquacer_system.h>
#include <fwk_log.h>
#include <stdint.h>
#define STATUS_ADDR 4
void set_transactionsw_off(
uint32_t transactionsw_reg_addr,
uint32_t disable_bit)
{
unsigned int intsts;
uint32_t value;
FWK_LOG_TRACE(
synquacer_system_ctx.log_api,
" traSW disable_bit = %08x\n",
disable_bit);
DI(intsts);
/* read transactionsw */
value = readl(transactionsw_reg_addr);
/* Clear transationsw disable bit */
value &= (~disable_bit);
/* transation sw enable */
writel(transactionsw_reg_addr, value);
EI(intsts);
/* setting wait */
while ((readl(transactionsw_reg_addr + STATUS_ADDR) & disable_bit) != 0)
continue;
}
void set_transactionsw_on(uint32_t transactionsw_reg_addr, uint32_t enable_bit)
{
unsigned int intsts;
uint32_t value;
FWK_LOG_TRACE(
synquacer_system_ctx.log_api,
" traSW enable_bit = %08x\n",
enable_bit);
DI(intsts);
/* read transactionsw */
value = readl(transactionsw_reg_addr);
/* Clear transactionsw disable bit */
value |= (enable_bit);
/* transaction sw enable */
writel(transactionsw_reg_addr, value);
EI(intsts);
/* setting wait */
while ((readl(transactionsw_reg_addr + STATUS_ADDR) & enable_bit) !=
enable_bit) {
continue;
}
}
|