source: rtems/c/src/lib/libbsp/sparc/shared/drvmgr/ambapp_bus_grlib.c @ 8570ad2

5
Last change on this file since 8570ad2 was 8570ad2, checked in by Daniel Hellstrom <daniel@…>, on 08/24/17 at 14:02:33

leon,ambapp_bus: make unreferenced global function static

Fixes #3072

  • Property mode set to 100644
File size: 5.3 KB
Line 
1/*  LEON3 GRLIB AMBA Plug & Play bus driver.
2 *
3 *  COPYRIGHT (c) 2008.
4 *  Cobham Gaisler AB.
5 *
6 *  This is driver is a wrapper for the general AMBA Plug & Play bus
7 *  driver. This is the root bus driver for GRLIB systems.
8 *
9 *  The license and distribution terms for this file may be
10 *  found in the file LICENSE in this distribution or at
11 *  http://www.rtems.org/license/LICENSE.
12 */
13
14#include <stdlib.h>
15#include <stdio.h>
16#include <string.h>
17#include <stdint.h>
18#include <libcpu/access.h>
19
20#include <drvmgr/ambapp_bus.h>
21#include <drvmgr/ambapp_bus_grlib.h>
22#include <bsp/genirq.h>
23
24#include <bsp.h>
25#include <bsp/irq.h>
26
27#define DBG(args...)
28/*#define DBG(args...) printk(args)*/
29
30static int ambapp_grlib_int_register(
31        struct drvmgr_dev *dev,
32        int irq,
33        const char *info,
34        drvmgr_isr isr,
35        void *arg);
36static int ambapp_grlib_int_unregister(
37        struct drvmgr_dev *dev,
38        int irq,
39        drvmgr_isr isr,
40        void *arg);
41static int ambapp_grlib_int_clear(
42        struct drvmgr_dev *dev,
43        int irq);
44static int ambapp_grlib_int_mask(
45        struct drvmgr_dev *dev,
46        int irq);
47static int ambapp_grlib_int_unmask(
48        struct drvmgr_dev *dev,
49        int irq);
50#ifdef RTEMS_SMP
51static int ambapp_grlib_int_set_affinity(
52        struct drvmgr_dev *dev,
53        int irq,
54        const Processor_mask *cpus);
55#endif
56static int ambapp_grlib_get_params(
57        struct drvmgr_dev *dev,
58        struct drvmgr_bus_params *params);
59
60static int ambapp_grlib_init1(struct drvmgr_dev *dev);
61static int ambapp_grlib_init2(struct drvmgr_dev *dev);
62static int ambapp_grlib_remove(struct drvmgr_dev *dev);
63
64/* READ/WRITE access to SpaceWire target over RMAP */
65static void *ambapp_grlib_rw_arg(struct drvmgr_dev *dev);
66
67static struct ambapp_ops ambapp_grlib_ops = {
68        .int_register = ambapp_grlib_int_register,
69        .int_unregister = ambapp_grlib_int_unregister,
70        .int_clear = ambapp_grlib_int_clear,
71        .int_mask = ambapp_grlib_int_mask,
72        .int_unmask = ambapp_grlib_int_unmask,
73#ifdef RTEMS_SMP
74        .int_set_affinity = ambapp_grlib_int_set_affinity,
75#endif
76        .get_params = ambapp_grlib_get_params
77};
78
79static void *ambapp_grlib_rw_arg(struct drvmgr_dev *dev)
80{
81        return dev; /* No argument really needed, but for debug? */
82}
83
84static struct drvmgr_func ambapp_grlib_funcs[] =
85{
86        DRVMGR_FUNC(AMBAPP_RW_ARG, ambapp_grlib_rw_arg),
87
88        DRVMGR_FUNC(AMBAPP_R8,  _ld8),
89        DRVMGR_FUNC(AMBAPP_R16, _ld16),
90        DRVMGR_FUNC(AMBAPP_R32, _ld32),
91        DRVMGR_FUNC(AMBAPP_R64, _ld64),
92
93        DRVMGR_FUNC(AMBAPP_W8,  _st8),
94        DRVMGR_FUNC(AMBAPP_W16, _st16),
95        DRVMGR_FUNC(AMBAPP_W32, _st32),
96        DRVMGR_FUNC(AMBAPP_W64, _st64),
97
98        DRVMGR_FUNC(AMBAPP_RMEM, memcpy),
99        DRVMGR_FUNC(AMBAPP_WMEM, memcpy),
100
101        DRVMGR_FUNC_END,
102};
103
104static struct drvmgr_drv_ops ambapp_grlib_drv_ops =
105{
106        .init = {ambapp_grlib_init1, ambapp_grlib_init2, NULL, NULL},
107        .remove = ambapp_grlib_remove,
108        .info = NULL,
109};
110
111static struct drvmgr_drv ambapp_bus_drv_grlib =
112{
113        DRVMGR_OBJ_DRV,                 /* Driver */
114        NULL,                           /* Next driver */
115        NULL,                           /* Device list */
116        DRIVER_GRLIB_AMBAPP_ID,         /* Driver ID */
117        "AMBAPP_GRLIB_DRV",             /* Driver Name */
118        DRVMGR_BUS_TYPE_ROOT,           /* Bus Type */
119        &ambapp_grlib_drv_ops,
120        NULL,                           /* Funcs */
121        0,
122        0,
123};
124
125static struct grlib_config *drv_mgr_grlib_config = NULL;
126
127void ambapp_grlib_register(void)
128{
129        drvmgr_drv_register(&ambapp_bus_drv_grlib);
130}
131
132int ambapp_grlib_root_register(struct grlib_config *config)
133{
134
135        /* Save the configuration for later */
136        drv_mgr_grlib_config = config;
137
138        /* Register root device driver */
139        drvmgr_root_drv_register(&ambapp_bus_drv_grlib);
140
141        return 0;
142}
143
144/* Function called from Driver Manager Initialization Stage 1 */
145static int ambapp_grlib_init1(struct drvmgr_dev *dev)
146{
147        struct ambapp_config *config;
148
149        dev->priv = NULL;
150        dev->name = "GRLIB AMBA PnP";
151
152        DBG("AMBAPP GRLIB: intializing\n");
153
154        config = malloc(sizeof(struct ambapp_config));
155        if ( !config )
156                return RTEMS_NO_MEMORY;
157
158        config->ops = &ambapp_grlib_ops;
159        config->maps_up = DRVMGR_TRANSLATE_ONE2ONE;
160        config->maps_down = DRVMGR_TRANSLATE_ONE2ONE;
161        config->abus = drv_mgr_grlib_config->abus;
162        config->resources = drv_mgr_grlib_config->resources;
163        config->funcs = ambapp_grlib_funcs;
164        config->bus_type = DRVMGR_BUS_TYPE_AMBAPP;
165
166        /* Initialize the generic part of the AMBA Bus */
167        return ambapp_bus_register(dev, config);
168}
169
170static int ambapp_grlib_init2(struct drvmgr_dev *dev)
171{
172        return 0;
173}
174
175static int ambapp_grlib_remove(struct drvmgr_dev *dev)
176{
177        return 0;
178}
179
180static int ambapp_grlib_int_register
181        (
182        struct drvmgr_dev *dev,
183        int irq,
184        const char *info,
185        drvmgr_isr isr,
186        void *arg
187        )
188{
189        return BSP_shared_interrupt_register(irq, info, isr, arg);
190}
191
192static int ambapp_grlib_int_unregister
193        (
194        struct drvmgr_dev *dev,
195        int irq,
196        drvmgr_isr isr,
197        void *arg
198        )
199{
200        return BSP_shared_interrupt_unregister(irq, isr, arg);
201}
202
203static int ambapp_grlib_int_clear
204        (
205        struct drvmgr_dev *dev,
206        int irq)
207{
208        BSP_shared_interrupt_clear(irq);
209        return DRVMGR_OK;
210}
211
212static int ambapp_grlib_int_mask
213        (
214        struct drvmgr_dev *dev,
215        int irq
216        )
217{
218        BSP_shared_interrupt_mask(irq);
219        return DRVMGR_OK;
220}
221
222static int ambapp_grlib_int_unmask
223        (
224        struct drvmgr_dev *dev,
225        int irq
226        )
227{
228        BSP_shared_interrupt_unmask(irq);
229        return DRVMGR_OK;
230}
231
232#ifdef RTEMS_SMP
233static int ambapp_grlib_int_set_affinity
234        (
235        struct drvmgr_dev *dev,
236        int irq,
237        const Processor_mask *cpus
238        )
239{
240        bsp_interrupt_set_affinity(irq, cpus);
241        return DRVMGR_OK;
242}
243#endif
244
245static int ambapp_grlib_get_params(struct drvmgr_dev *dev, struct drvmgr_bus_params *params)
246{
247        /* Leave params->freq_hz untouched for default */
248        params->dev_prefix = "";
249        return 0;
250}
Note: See TracBrowser for help on using the repository browser.