summaryrefslogtreecommitdiffstats
path: root/bsps/riscv/riscv/include/bsp/k210.h
blob: d5ae062863c815ced7cc88ad5a0dc27dc6ea45ad (plain) (blame)
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
/* SPDX-License-Identifier: BSD-2-Clause */

/**
 * @file
 *
 * @ingroup k210_regs
 *
 * @brief k210 RISC-V CPU defines.
 */

/*
 * Copyright (c) 2022 Alan Cudmore
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *      notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *      notice, this list of conditions and the following disclaimer in the
 *      documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 */

#ifndef LIBBSP_RISCV_RISCV_K210_H
#define LIBBSP_RISCV_RISCV_K210_H

#include <bspopts.h>
#include <stdint.h>
#include <bsp/utility.h>

/**
 * @defgroup K210 RISC V Register Definitions
 *
 * @ingroup RTEMSBSPsriscv
 *
 * @brief Register Definitions
 *
 * @{
 */

#ifdef __cplusplus
extern "C" {
#endif

/* For PLL / Clocks */
#define K210_SYSCTL_BASE     0x50440000

#define PLL_CLK_R(n)         (n & 0x00000F)
#define PLL_CLK_F(n)         ((n & 0x0003F0) >> 4)
#define PLL_CLK_OD(n)        ((n & 0x003C00) >> 10)
#define CLKSEL0_ACLK_SEL(n)  (n & 0x00000001)

typedef struct {
  uint32_t git_id;
  uint32_t clk_freq;
  uint32_t pll0;
  uint32_t pll1;
  uint32_t pll2;
  uint32_t resv5;
  uint32_t pll_lock;
  uint32_t rom_error;
  uint32_t clk_sel0;
  uint32_t clk_sel1;
  uint32_t clk_en_cent;
  uint32_t clk_en_peri;
  uint32_t soft_reset;
  uint32_t peri_reset;
  uint32_t clk_th0;
  uint32_t clk_th1;
  uint32_t clk_th2;
  uint32_t clk_th3;
  uint32_t clk_th4;
  uint32_t clk_th5;
  uint32_t clk_th6;
  uint32_t misc;
  uint32_t peri;
  uint32_t spi_sleep;
  uint32_t reset_status;
  uint32_t dma_sel0;
  uint32_t dma_sel1;
  uint32_t power_sel;
  uint32_t resv28;
  uint32_t resv29;
  uint32_t resv30;
  uint32_t resv31;
} k210_sysctl_t;

#ifdef __cplusplus
}
#endif

/** @} */
#endif /* LIBBSP_RISCV_RISCV_K210_H */