RTEMS
6.3
Toggle main menu visibility
Loading...
Searching...
No Matches
bsps
include
grlib
ambapp_bus.h
1
/* SPDX-License-Identifier: BSD-2-Clause */
2
3
/* General part of a AMBA Plug & Play bus driver.
4
*
5
* COPYRIGHT (c) 2008.
6
* Cobham Gaisler AB.
7
*
8
* This is the general part of the different AMBA Plug & Play
9
* drivers. The drivers are wrappers around this driver, making
10
* the code size smaller for systems with multiple AMBA Plug &
11
* Play buses.
12
*
13
* Redistribution and use in source and binary forms, with or without
14
* modification, are permitted provided that the following conditions
15
* are met:
16
* 1. Redistributions of source code must retain the above copyright
17
* notice, this list of conditions and the following disclaimer.
18
* 2. Redistributions in binary form must reproduce the above copyright
19
* notice, this list of conditions and the following disclaimer in the
20
* documentation and/or other materials provided with the distribution.
21
*
22
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
23
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
26
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
27
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
28
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
29
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
30
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
31
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32
* POSSIBILITY OF SUCH DAMAGE.
33
*/
34
35
#ifndef __AMBAPP_BUS_H__
36
#define __AMBAPP_BUS_H__
37
38
#include <
drvmgr/drvmgr.h
>
39
#include "
ambapp.h
"
40
41
#ifdef __cplusplus
42
extern
"C"
{
43
#endif
44
45
/* GRLIB AMBA Plug&Play Driver ID generation */
46
#define DRIVER_AMBAPP_ID(vendor, device) \
47
DRIVER_ID(DRVMGR_BUS_TYPE_AMBAPP, ((((vendor) & 0xff) << 16) | ((device) & 0xfff)))
48
49
/*** Gaisler Hardware Device Driver IDs ***/
50
#define DRIVER_AMBAPP_GAISLER_AHBSTAT_ID DRIVER_AMBAPP_ID(VENDOR_GAISLER, GAISLER_AHBSTAT)
51
#define DRIVER_AMBAPP_GAISLER_APBUART_ID DRIVER_AMBAPP_ID(VENDOR_GAISLER, GAISLER_APBUART)
52
#define DRIVER_AMBAPP_GAISLER_B1553BRM_ID DRIVER_AMBAPP_ID(VENDOR_GAISLER, GAISLER_B1553BRM)
53
#define DRIVER_AMBAPP_GAISLER_B1553RT_ID DRIVER_AMBAPP_ID(VENDOR_GAISLER, GAISLER_B1553RT)
54
#define DRIVER_AMBAPP_GAISLER_GPTIMER_ID DRIVER_AMBAPP_ID(VENDOR_GAISLER, GAISLER_GPTIMER)
55
#define DRIVER_AMBAPP_GAISLER_GR1553B_ID DRIVER_AMBAPP_ID(VENDOR_GAISLER, GAISLER_GR1553B)
56
#define DRIVER_AMBAPP_GAISLER_GRADCDAC_ID DRIVER_AMBAPP_ID(VENDOR_GAISLER, GAISLER_GRADCDAC)
57
#define DRIVER_AMBAPP_GAISLER_GRAES_ID DRIVER_AMBAPP_ID(VENDOR_GAISLER, GAISLER_GRAESDMA)
58
#define DRIVER_AMBAPP_GAISLER_GRCAN_ID DRIVER_AMBAPP_ID(VENDOR_GAISLER, GAISLER_GRCAN)
59
#define DRIVER_AMBAPP_GAISLER_GRCTM_ID DRIVER_AMBAPP_ID(VENDOR_GAISLER, GAISLER_GRCTM)
60
#define DRIVER_AMBAPP_GAISLER_GRETH_ID DRIVER_AMBAPP_ID(VENDOR_GAISLER, GAISLER_ETHMAC)
61
#define DRIVER_AMBAPP_GAISLER_GRGPIO_ID DRIVER_AMBAPP_ID(VENDOR_GAISLER, GAISLER_GPIO)
62
#define DRIVER_AMBAPP_GAISLER_GRPCI2_ID DRIVER_AMBAPP_ID(VENDOR_GAISLER, GAISLER_GRPCI2)
63
#define DRIVER_AMBAPP_GAISLER_GRIOMMU_ID DRIVER_AMBAPP_ID(VENDOR_GAISLER, GAISLER_GRIOMMU)
64
#define DRIVER_AMBAPP_GAISLER_GRPCI_ID DRIVER_AMBAPP_ID(VENDOR_GAISLER, GAISLER_PCIFBRG)
65
#define DRIVER_AMBAPP_GAISLER_GRPWM_ID DRIVER_AMBAPP_ID(VENDOR_GAISLER, GAISLER_GRPWM)
66
#define DRIVER_AMBAPP_GAISLER_GRPWRX_ID DRIVER_AMBAPP_ID(VENDOR_GAISLER, GAISLER_PW2APB)
67
#define DRIVER_AMBAPP_GAISLER_GRSPW_ID DRIVER_AMBAPP_ID(VENDOR_GAISLER, GAISLER_SPW)
68
#define DRIVER_AMBAPP_GAISLER_GRSPW2_ID DRIVER_AMBAPP_ID(VENDOR_GAISLER, GAISLER_SPW2)
69
#define DRIVER_AMBAPP_GAISLER_GRTC_ID DRIVER_AMBAPP_ID(VENDOR_GAISLER, GAISLER_GRTC)
70
#define DRIVER_AMBAPP_GAISLER_GRTM_ID DRIVER_AMBAPP_ID(VENDOR_GAISLER, GAISLER_GRTM)
71
#define DRIVER_AMBAPP_GAISLER_I2CMST_ID DRIVER_AMBAPP_ID(VENDOR_GAISLER, GAISLER_I2CMST)
72
#define DRIVER_AMBAPP_GAISLER_OCCAN_ID DRIVER_AMBAPP_ID(VENDOR_GAISLER, GAISLER_CANAHB)
73
#define DRIVER_AMBAPP_GAISLER_PCIF_ID DRIVER_AMBAPP_ID(VENDOR_GAISLER, GAISLER_PCIF)
74
#define DRIVER_AMBAPP_GAISLER_PCITRACE_ID DRIVER_AMBAPP_ID(VENDOR_GAISLER, GAISLER_PCITRACE)
75
#define DRIVER_AMBAPP_GAISLER_SPICTRL_ID DRIVER_AMBAPP_ID(VENDOR_GAISLER, GAISLER_SPICTRL)
76
#define DRIVER_AMBAPP_GAISLER_SPWCUC_ID DRIVER_AMBAPP_ID(VENDOR_GAISLER, GAISLER_SPWCUC)
77
#define DRIVER_AMBAPP_GAISLER_SPW_ROUTER_ID DRIVER_AMBAPP_ID(VENDOR_GAISLER, GAISLER_SPW_ROUTER)
78
#define DRIVER_AMBAPP_GAISLER_L2CACHE_ID DRIVER_AMBAPP_ID(VENDOR_GAISLER, GAISLER_L2CACHE)
79
#define DRIVER_AMBAPP_GAISLER_MEMSCRUB_ID DRIVER_AMBAPP_ID(VENDOR_GAISLER, GAISLER_MEMSCRUB)
80
#define DRIVER_AMBAPP_GAISLER_L4STAT_ID DRIVER_AMBAPP_ID(VENDOR_GAISLER, GAISLER_L4STAT)
81
#define DRIVER_AMBAPP_GAISLER_SPWTDP_ID DRIVER_AMBAPP_ID(VENDOR_GAISLER, GAISLER_SPWTDP)
82
83
/*** ESA Hardware Device Driver IDs ***/
84
#define DRIVER_AMBAPP_ESA_MCTRL_ID DRIVER_AMBAPP_ID(VENDOR_ESA, ESA_MCTRL)
85
#define DRIVER_AMBAPP_MCTRL_ID DRIVER_AMBAPP_ESA_MCTRL_ID
86
87
struct
amba_dev_id
{
88
unsigned
short
vendor;
89
unsigned
short
device;
90
/* Version ? */
91
};
92
93
struct
amba_drv_info
{
94
struct
drvmgr_drv
general;
/* General bus info */
95
/* AMBA specific bus information */
96
struct
amba_dev_id
*ids;
/* Supported hardware */
97
};
98
99
struct
amba_dev_info
{
100
struct
amba_dev_id
id;
101
struct
ambapp_core
info;
102
};
103
104
struct
ambapp_ops
{
105
int (*int_register)
106
(
struct
drvmgr_dev
*dev,
int
index,
const
char
*info, drvmgr_isr isr,
void
*arg);
107
int (*int_unregister)
108
(
struct
drvmgr_dev
*dev,
int
index, drvmgr_isr isr,
void
*arg);
109
int (*int_clear)(
struct
drvmgr_dev
*dev,
int
index);
110
int (*int_mask)(
struct
drvmgr_dev
*dev,
int
index);
111
int (*int_unmask)(
struct
drvmgr_dev
*dev,
int
index);
112
#ifdef RTEMS_SMP
113
int (*int_set_affinity)(
struct
drvmgr_dev
*dev,
int
index,
114
const
Processor_mask *cpus);
115
#endif
116
int (*get_params)
117
(
struct
drvmgr_dev
*,
struct
drvmgr_bus_params
*);
118
};
119
120
struct
ambapp_config
{
121
struct
ambapp_bus
*abus;
/* Prescanned AMBA PnP bus */
122
struct
ambapp_ops
*ops;
/* AMBA bus operations */
123
struct
drvmgr_map_entry
*maps_up;
/* Bus memory map up-stream towards CPU */
124
struct
drvmgr_map_entry
*maps_down;
/* Bus memory map down-stream towards HW */
125
struct
drvmgr_bus_res
*resources;
/* Driver Resources */
126
int
bus_type;
/* Set DRVMGR_BUS_TYPE_AMBAPP_DIST if distributed AMBA Bus */
127
struct
drvmgr_func
*funcs;
/* Custom functions */
128
};
129
130
/*** Bus operations with READ/WRITE access operations ***
131
*
132
* The functions are implemented using the standard drvmgr RW interface
133
*/
134
#define AMBAPP_R8 DRVMGR_RWFUNC(RW_SIZE_1|RW_READ|RW_REG)
135
#define AMBAPP_R16 DRVMGR_RWFUNC(RW_SIZE_2|RW_READ|RW_REG)
136
#define AMBAPP_R32 DRVMGR_RWFUNC(RW_SIZE_4|RW_READ|RW_REG)
137
#define AMBAPP_R64 DRVMGR_RWFUNC(RW_SIZE_8|RW_READ|RW_REG)
138
#define AMBAPP_W8 DRVMGR_RWFUNC(RW_SIZE_1|RW_WRITE|RW_REG)
139
#define AMBAPP_W16 DRVMGR_RWFUNC(RW_SIZE_2|RW_WRITE|RW_REG)
140
#define AMBAPP_W32 DRVMGR_RWFUNC(RW_SIZE_4|RW_WRITE|RW_REG)
141
#define AMBAPP_W64 DRVMGR_RWFUNC(RW_SIZE_8|RW_WRITE|RW_REG)
142
#define AMBAPP_RMEM DRVMGR_RWFUNC(RW_SIZE_ANY|RW_READ|RW_MEM)
143
#define AMBAPP_WMEM DRVMGR_RWFUNC(RW_SIZE_ANY|RW_WRITE|RW_MEM)
144
#define AMBAPP_MEMSET DRVMGR_RWFUNC(RW_SIZE_ANY|RW_SET|RW_MEM)
145
#define AMBAPP_RW_ARG DRVMGR_RWFUNC(RW_ARG)
146
147
/* Register an ambapp bus on-top of a device */
148
extern
int
ambapp_bus_register(
149
struct
drvmgr_dev
*dev,
150
struct
ambapp_config
*config
151
);
152
153
extern
void
ambapp_bus_freq_register(
154
struct
drvmgr_dev
*dev,
155
int
amba_interface,
156
unsigned
int
freq_hz);
157
158
#ifdef __cplusplus
159
}
160
#endif
161
162
#endif
ambapp.h
drvmgr.h
Driver Manager Interface.
amba_dev_id
Definition
ambapp_bus.h:87
amba_dev_info
Definition
ambapp_bus.h:99
amba_drv_info
Definition
ambapp_bus.h:93
ambapp_bus
Definition
ambapp.h:133
ambapp_config
Definition
ambapp_bus.h:120
ambapp_core
Definition
ambapp.h:109
ambapp_ops
Definition
ambapp_bus.h:104
drvmgr_bus_params
Definition
drvmgr.h:145
drvmgr_bus_res
Definition
drvmgr.h:238
drvmgr_dev
Definition
drvmgr.h:299
drvmgr_drv
Definition
drvmgr.h:329
drvmgr_func
Definition
drvmgr.h:182
drvmgr_map_entry
Definition
drvmgr.h:249
Generated by
1.18.0