/
qspi.h
143 lines (130 loc) · 3.16 KB
/
qspi.h
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
// Copyright 2020-2021 Beken
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#pragma once
#include <driver/qspi_types.h>
#ifdef __cplusplus
extern "C" {
#endif
/**
* @brief Init the QSPI driver
*
* This API init the resoure common:
* - Init QSPI driver control memory
*
* @attention 1. This API should be called before any other QSPI APIs.
*
* @return
* - BK_OK: succeed
* - others: other errors.
*/
bk_err_t bk_qspi_driver_init(void);
/**
* @brief Deinit the QSPI driver
*
* This API free all resource related to QSPI and disable QSPI.
*
* @return
* - BK_OK: succeed
* - others: other errors.
*/
bk_err_t bk_qspi_driver_deinit(void);
/**
* @brief Init the QSPI
*
* This API init the QSPI:
* - Power up the QSPI
* - Configure the QSPI clock
* - Map the QSPI to dedicated GPIO port
* - Enabel QSPI interrupt
*
* @param config QSPI parameter settings
*
* @return
* - BK_OK: succeed
* - BK_ERR_QSPI_NOT_INIT: QSPI driver not init
* - BK_ERR_NULL_PARAM: QSPI config parameter is NULL
* - others: other errors.
*/
bk_err_t bk_qspi_init(const qspi_config_t *config);
/**
* @brief Deinit the QSPI
*
* This API deinit the QSPI:
* - Disable the QSPI interrupt
* - Power down the QSPI
*
* @return
* - BK_OK: succeed
* - others: other errors.
*/
bk_err_t bk_qspi_deinit(void);
/**
* @brief Init the QSPI command
*
* @param cmd QSPI device command
*
* @return
* - BK_OK: succeed
* - others: other errors.
*/
bk_err_t bk_qspi_command(const qspi_cmd_t *cmd);
/**
* @brief QSPI indirect mode write
*
* @param base_addr QSPI write address
* @param data QSPI write data
* @param size the size of QSPI write data
*
* @return
* - BK_OK: succeed
* - others: other errors.
*/
bk_err_t bk_qspi_write(const void *data, uint32_t size);
/**
* @brief QSPI indirect mode read
*
* @param base_addr QSPI read address
* @param data QSPI read data
* @param size the size of QSPI read data
*
* @return
* - BK_OK: succeed
* - others: other errors.
*/
bk_err_t bk_qspi_read(void *data, uint32_t size);
/**
* @brief Register the TX interrupt service routine for QSPI
*
* @param isr QSPI TX callback
* @param param QSPI TX callback parameter
*
* @return
* - BK_OK: succeed
* - others: other errors.
*/
bk_err_t bk_qspi_register_tx_isr(qspi_isr_t isr, void *param);
/**
* @brief Register the RX interrupt service routine for QSPI
*
* @param isr QSPI RX callback
* @param param QSPI RX callback parameter
*
* @return
* - BK_OK: succeed
* - others: other errors.
*/
bk_err_t bk_qspi_register_rx_isr(qspi_isr_t isr, void *param);
#ifdef __cplusplus
}
#endif