SyterKit 0.4.0.x
SyterKit is a bare-metal framework
Loading...
Searching...
No Matches
sys-dram.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: GPL-2.0+ */
2
3#ifndef __SYS_DRAM_H__
4#define __SYS_DRAM_H__
5
6#include <io.h>
7#include <stdarg.h>
8#include <stdbool.h>
9#include <stddef.h>
10#include <stdint.h>
11#include <types.h>
12
13#include <reg/reg-dram.h>
14
15#ifdef __cplusplus
16extern "C" {
17#endif// __cplusplus
18
19/* Common is 0x40000000 */
20#ifndef SDRAM_BASE
21#define SDRAM_BASE (0x40000000)
22#endif
23
30
31#if defined SUNXI_DRAM_PARAM_V2
32typedef struct {
33 uint32_t dram_clk;
34 uint32_t dram_type;
35 uint32_t dram_dx_odt;
36 uint32_t dram_dx_dri;
37 uint32_t dram_ca_dri;
38 uint32_t dram_para0;
39 uint32_t dram_para1;
40 uint32_t dram_para2;
41 uint32_t dram_mr0;
42 uint32_t dram_mr1;
43 uint32_t dram_mr2;
44 uint32_t dram_mr3;
45 uint32_t dram_mr4;
46 uint32_t dram_mr5;
47 uint32_t dram_mr6;
48 uint32_t dram_mr11;
49 uint32_t dram_mr12;
50 uint32_t dram_mr13;
51 uint32_t dram_mr14;
52 uint32_t dram_mr16;
53 uint32_t dram_mr17;
54 uint32_t dram_mr22;
55 uint32_t dram_tpr0;
56 uint32_t dram_tpr1;
57 uint32_t dram_tpr2;
58 uint32_t dram_tpr3;
59 uint32_t dram_tpr6;
60 uint32_t dram_tpr10;
61 uint32_t dram_tpr11;
62 uint32_t dram_tpr12;
63 uint32_t dram_tpr13;
64 uint32_t dram_tpr14;
66#else
67typedef struct {
68 // normal configuration
70 uint32_t dram_type;// dram_type DDR2: 2 DDR3: 3 LPDDR2: 6 LPDDR3: 7 DDR3L: 31
71 uint32_t dram_zq; // do not need
73
74 // control configuration
77
78 // timing configuration
83 uint32_t dram_tpr0;// DRAMTMG0
84 uint32_t dram_tpr1;// DRAMTMG1
85 uint32_t dram_tpr2;// DRAMTMG2
86 uint32_t dram_tpr3;// DRAMTMG3
87 uint32_t dram_tpr4;// DRAMTMG4
88 uint32_t dram_tpr5;// DRAMTMG5
89 uint32_t dram_tpr6;// DRAMTMG8
90 // reserved for future use
99#endif
100
110
125uint32_t sunxi_dram_init(void *para);
126
127#ifdef __cplusplus
128}
129#endif// __cplusplus
130
131#endif// __SYS_DRAM_H__
u32_t uint32_t
Definition stdint.h:13
Definition sys-dram.h:67
uint32_t dram_zq
Definition sys-dram.h:71
uint32_t dram_para2
Definition sys-dram.h:76
uint32_t dram_tpr5
Definition sys-dram.h:88
uint32_t dram_odt_en
Definition sys-dram.h:72
uint32_t dram_mr1
Definition sys-dram.h:80
uint32_t dram_para1
Definition sys-dram.h:75
uint32_t dram_tpr0
Definition sys-dram.h:83
uint32_t dram_tpr7
Definition sys-dram.h:91
uint32_t dram_mr3
Definition sys-dram.h:82
uint32_t dram_tpr8
Definition sys-dram.h:92
uint32_t dram_tpr6
Definition sys-dram.h:89
uint32_t dram_tpr2
Definition sys-dram.h:85
uint32_t dram_tpr4
Definition sys-dram.h:87
uint32_t dram_mr2
Definition sys-dram.h:81
uint32_t dram_clk
Definition sys-dram.h:69
uint32_t dram_tpr12
Definition sys-dram.h:96
uint32_t dram_type
Definition sys-dram.h:70
uint32_t dram_tpr3
Definition sys-dram.h:86
uint32_t dram_tpr9
Definition sys-dram.h:93
uint32_t dram_tpr11
Definition sys-dram.h:95
uint32_t dram_tpr1
Definition sys-dram.h:84
uint32_t dram_tpr10
Definition sys-dram.h:94
uint32_t dram_mr0
Definition sys-dram.h:79
uint32_t dram_tpr13
Definition sys-dram.h:97
uint32_t sunxi_get_dram_size()
Get the size of the DRAM (Dynamic Random Access Memory).
Definition sys-dram.c:42
sunxi_dram_type
Definition sys-dram.h:24
@ SUNXI_DRAM_TYPE_DDR3
Definition sys-dram.h:26
@ SUNXI_DRAM_TYPE_DDR2
Definition sys-dram.h:25
@ SUNXI_DRAM_TYPE_LPDDR3
Definition sys-dram.h:28
@ SUNXI_DRAM_TYPE_LPDDR2
Definition sys-dram.h:27
uint32_t sunxi_dram_init(void *para)
Initialize the DRAM.
Definition sys-dram.c:1338