source: rtems-libbsd/rtemsbsd/include/machine/rtems-bsd-nexus-bus.h @ ae9e46d

55-freebsd-126-freebsd-12
Last change on this file since ae9e46d was ae9e46d, checked in by Sebastian Huber <sebastian.huber@…>, on 03/01/17 at 09:49:05

Fix dw_mmc dependencies

  • Property mode set to 100755
File size: 17.2 KB
Line 
1/*
2 * Copyright (c) 2013-2015 embedded brains GmbH.  All rights reserved.
3 *
4 *  embedded brains GmbH
5 *  Dornierstr. 4
6 *  82178 Puchheim
7 *  Germany
8 *  <rtems@embedded-brains.de>
9 *
10 * Copyright (c) 2016 Chris Johns <chrisj@rtems.org> All rights reserved.
11
12 * Redistribution and use in source and binary forms, with or without
13 * modification, are permitted provided that the following conditions
14 * are met:
15 * 1. Redistributions of source code must retain the above copyright
16 *    notice, this list of conditions and the following disclaimer.
17 * 2. Redistributions in binary form must reproduce the above copyright
18 *    notice, this list of conditions and the following disclaimer in the
19 *    documentation and/or other materials provided with the distribution.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
22 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
25 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 * SUCH DAMAGE.
32 */
33
34/*
35 * The Nexus bus devices.
36 *
37 * Driver Summary is:
38 *
39 *  Devices:
40 *   RTEMS_BSD_DRIVER_XILINX_ZYNQ_SLCR
41 *   RTEMS_BSD_DRIVER_LPC32XX_PWR
42 *
43 *  Buses:
44 *   RTEMS_BSD_DRIVER_PC_LEGACY
45 *
46 *  USB:
47 *   RTEMS_BSD_DRIVER_DWCOTG0
48 *   RTEMS_BSD_DRIVER_DWCOTG0_BASE_ADDR
49 *    RTEMS_BSD_DRIVER_DWCOTG0_IRQ
50 *   RTEMS_BSD_DRIVER_LPC32XX_OHCI
51 *   RTEMS_BSD_DRIVER_DWC_MMC
52 *   RTEMS_BSD_DRIVER_MMC
53 *   RTEMS_BSD_DRIVER_USB
54 *   RTEMS_BSD_DRIVER_USB_MASS
55 *
56 *  Networking:
57 *   RTEMS_BSD_DRIVER_SMC0
58 *    RTEMS_BSD_DRIVER_SMC0_BASE_ADDR
59 *    RTEMS_BSD_DRIVER_SMC0_IRQ
60 *   RTEMS_BSD_DRIVER_LPC32XX_LPE
61 *   RTEMS_BSD_DRIVER_FEC
62 *   RTEMS_BSD_DRIVER_XILINX_ZYNQ_CGEM0
63 *    RTEMS_BSD_DRIVER_CGEM0_IRQ
64 *   RTEMS_BSD_DRIVER_DWC0
65 *    RTEMS_BSD_DRIVER_DWC0_BASE_ADDR
66 *    RTEMS_BSD_DRIVER_DWC0_IRQ
67 *   RTEMS_BSD_DRIVER_TSEC
68 *    RTEMS_BSD_DRIVER_TSEC_BASE_ADDR
69 *    RTEMS_BSD_DRIVER_TSEC_TX_IRQ
70 *    RTEMS_BSD_DRIVER_TSEC_RX_IRQ
71 *    RTEMS_BSD_DRIVER_TSEC_ER_IRQ
72 *   RTEMS_BSD_DRIVER_PCI_LEM
73 *   RTEMS_BSD_DRIVER_PCI_IGB
74 *   RTEMS_BSD_DRIVER_PCI_EM
75 *   RTEMS_BSD_DRIVER_PCI_RE
76 *
77 *  MMI PHY:
78 *   RTEMS_BSD_DRIVER_E1000PHY
79 *   RTEMS_BSD_DRIVER_ICSPHY
80 *   RTEMS_BSD_DRIVER_REPHY
81 *   RTEMS_BSD_DRIVER_MIPHY
82 */
83
84#if !defined(RTEMS_BSD_NEXUS_BUS_h)
85#define RTEMS_BSD_NEXUS_BUS_h
86
87#include <rtems/bsd/bsd.h>
88
89#ifdef __cplusplus
90extern "C" {
91#endif /* __cplusplus */
92
93/**
94 * Keep the order of the groups.
95 **/
96
97/**
98 ** Devices
99 **
100 **/
101
102/*
103 * Xilinx Zynq System Level Control Registers (SLCR).
104 */
105#if !defined(RTEMS_BSD_DRIVER_XILINX_ZYNQ_SLCR)
106  /*
107   * Hard IP part of the Zynq so a fixed address.
108   */
109  #define RTEMS_BSD_DRIVER_XILINX_ZYNQ_SLCR                            \
110    static const rtems_bsd_device_resource zy7_slcr_res[] = {          \
111      {                                                                 \
112        .type = RTEMS_BSD_RES_MEMORY,                                   \
113        .start_request = 0,                                             \
114        .start_actual = 0xf8000000                                      \
115      }                                                                 \
116    };                                                                  \
117    RTEMS_BSD_DEFINE_NEXUS_DEVICE(zy7_slcr, 0,                          \
118                                  RTEMS_ARRAY_SIZE(zy7_slcr_res),      \
119                                  &zy7_slcr_res[0])
120#endif /* RTEMS_BSD_DRIVER_XILINX_ZYNQ_SLCR */
121
122/*
123 * LPC32XX Power Control (PWR).
124 */
125#if !defined(RTEMS_BSD_DRIVER_LPC32XX_PWR)
126  #define RTEMS_BSD_DRIVER_LPC32XX_PWR                                        \
127    static const rtems_bsd_device_resource lpc_pwr0_res[] = {                 \
128      {                                                                       \
129        .type = RTEMS_BSD_RES_MEMORY,                                         \
130        .start_request = 0,                                                   \
131        .start_actual = LPC32XX_BASE_SYSCON                                   \
132      }                                                                       \
133    };                                                                        \
134    RTEMS_BSD_DEFINE_NEXUS_DEVICE_ORDERED(pwr, 0, RTEMS_SYSINIT_ORDER_FIRST,  \
135                                  RTEMS_ARRAY_SIZE(lpc_pwr0_res),             \
136                                  &lpc_pwr0_res[0])
137#endif /* RTEMS_BSD_DRIVER_LPC32XX_PWR */
138
139/**
140 ** Physical Buses
141 **/
142
143/*
144 * PC legacy bus.
145 */
146#if !defined(RTEMS_BSD_DRIVER_PC_LEGACY)
147  #define RTEMS_BSD_DRIVER_PC_LEGACY                      \
148    RTEMS_BSD_DEFINE_NEXUS_DEVICE(legacy, 0, 0, NULL);    \
149    SYSINIT_DRIVER_REFERENCE(pcib, legacy);               \
150    SYSINIT_DRIVER_REFERENCE(pci, pcib)
151#endif /* RTEMS_BSD_DRIVER_PC_LEGACY */
152
153/**
154 ** USB
155 **/
156
157/*
158 * Designware/Synopsys OTG USB Controller.
159 */
160#if !defined(RTEMS_BSD_DRIVER_DWCOTG0)
161  #define RTEMS_BSD_DRIVER_DWCOTG0(_base, _irq)                  \
162    static const rtems_bsd_device_resource dwcotg0_res[] = {     \
163      {                                                          \
164        .type = RTEMS_BSD_RES_MEMORY,                            \
165        .start_request = 0,                                      \
166        .start_actual = (_base)                                  \
167      }, {                                                       \
168        .type = RTEMS_BSD_RES_IRQ,                               \
169        .start_request = 0,                                      \
170        .start_actual = (_irq)                                   \
171      }                                                          \
172    };                                                           \
173    RTEMS_BSD_DEFINE_NEXUS_DEVICE(dwcotg, 0,                     \
174                                  RTEMS_ARRAY_SIZE(dwcotg0_res), \
175                                  &dwcotg0_res[0])
176#endif /* RTEMS_BSD_DRIVER_DWCOTG0 */
177
178/*
179 * LPC32XX OHCI.
180 */
181#if !defined(RTEMS_BSD_DRIVER_LPC32XX_OHCI)
182  #define RTEMS_BSD_DRIVER_LPC32XX_OHCI                                     \
183    static const rtems_bsd_device_resource lpc_ohci0_res[] = {              \
184      {                                                                     \
185        .type = RTEMS_BSD_RES_MEMORY,                                       \
186        .start_request = 0,                                                 \
187        .start_actual = LPC32XX_BASE_USB                                    \
188      }, {                                                                  \
189        .type = RTEMS_BSD_RES_MEMORY,                                       \
190        .start_request = 0,                                                 \
191        .start_actual = (unsigned long)(&LPC32XX_I2C_RX)                    \
192      }, {                                                                  \
193        .type = RTEMS_BSD_RES_IRQ,                                          \
194        .start_request = 0,                                                 \
195        .start_actual = LPC32XX_IRQ_USB_HOST                                \
196      }                                                                     \
197    };                                                                      \
198    RTEMS_BSD_DEFINE_NEXUS_DEVICE(ohci, 0,                                  \
199                                  RTEMS_ARRAY_SIZE(lpc_ohci0_res),          \
200                                  &lpc_ohci0_res[0])
201#endif /* RTEMS_BSD_DRIVER_LPC32XX_OHCI */
202
203/*
204 * Designware/Synopsys MMC.
205 */
206#if !defined(RTEMS_BSD_DRIVER_DWC_MMC)
207  #define RTEMS_BSD_DRIVER_DWC_MMC                                \
208    RTEMS_BSD_DEFINE_NEXUS_DEVICE(dw_mmc, 0, 0, NULL)
209#endif /* RTEMS_BSD_DRIVER_DWC_MMC */
210
211/*
212 * MMC Driver.
213 */
214#if !defined(RTEMS_BSD_DRIVER_MMC)
215  #define RTEMS_BSD_DRIVER_MMC                    \
216    SYSINIT_DRIVER_REFERENCE(mmcsd, mmc)
217#endif /* RTEMS_BSD_DRIVER_MMC */
218
219/*
220 * USB Drivers.
221 */
222#if !defined(RTEMS_BSD_DRIVER_USB)
223  #define RTEMS_BSD_DRIVER_USB                    \
224    SYSINIT_REFERENCE(usb_quirk_init);            \
225    SYSINIT_DRIVER_REFERENCE(uhub, usbus)
226#endif /* RTEMS_BSD_DRIVER_USB */
227
228/*
229 * USB Mass Storage Class driver.
230 */
231#if !defined(RTEMS_BSD_DRIVER_USB_MASS)
232  #define RTEMS_BSD_DRIVER_USB_MASS               \
233    SYSINIT_DRIVER_REFERENCE(umass, uhub)
234#endif /* RTEMS_BSD_DRIVER_USB_MASS */
235
236/**
237 ** Networking
238 **/
239
240/*
241 * SMC0 driver
242 */
243#if !defined(RTEMS_BSD_DRIVER_SMC0)
244  #define RTEMS_BSD_DRIVER_SMC0(_base, _irq)                     \
245    static const rtems_bsd_device_resource smc0_res[] = {        \
246      {                                                          \
247        .type = RTEMS_BSD_RES_MEMORY,                            \
248        .start_request = 0,                                      \
249        .start_actual = (_base)                                  \
250      }, {                                                       \
251        .type = RTEMS_BSD_RES_IRQ,                               \
252        .start_request = 0,                                      \
253        .start_actual = (_irq)                                   \
254      }                                                          \
255    };                                                           \
256    RTEMS_BSD_DEFINE_NEXUS_DEVICE(smc, 0,                        \
257                                  RTEMS_ARRAY_SIZE(smc0_res),    \
258                                  &smc0_res[0])
259#endif /* RTEMS_BSD_DRIVER_SMC */
260
261/*
262 * LPC32XX LPE driver
263 */
264#if !defined(RTEMS_BSD_DRIVER_LPC32XX_LPE)
265  #define RTEMS_BSD_DRIVER_LPC32XX_LPE                           \
266    static const rtems_bsd_device_resource lpc_lpe0_res[] = {    \
267      {                                                          \
268        .type = RTEMS_BSD_RES_MEMORY,                            \
269        .start_request = 0,                                      \
270        .start_actual = LPC32XX_BASE_ETHERNET                    \
271      }, {                                                       \
272        .type = RTEMS_BSD_RES_IRQ,                               \
273        .start_request = 0,                                      \
274        .start_actual = LPC32XX_IRQ_ETHERNET                     \
275      }                                                          \
276    };                                                           \
277    RTEMS_BSD_DEFINE_NEXUS_DEVICE(lpe, 0,                        \
278                                  RTEMS_ARRAY_SIZE(lpc_lpe0_res),    \
279                                  &lpc_lpe0_res[0])
280#endif /* RTEMS_BSD_DRIVER_LPC32XX_LPE */
281
282/*
283 * Coldfire Fast Ethernet Controller (FEC) driver.
284 */
285#if !defined(RTEMS_BSD_DRIVER_FEC)
286  #define RTEMS_BSD_DRIVER_FEC                            \
287    RTEMS_BSD_DEFINE_NEXUS_DEVICE(fec, 0, 0, NULL);
288#endif /* RTEMS_BSD_DRIVER_FEC */
289
290/*
291 * Xilinx Zynq Cadence Gigbit Ethernet MAC (CGEM).
292 */
293#if !defined(RTEMS_BSD_DRIVER_XILINX_ZYNQ_CGEM)
294  #define RTEMS_BSD_DRIVER_XILINX_ZYNQ_CGEM(_num, _base, _irq)              \
295    static const rtems_bsd_device_resource cgem ## _num ## _res[] = {       \
296      {                                                                     \
297        .type = RTEMS_BSD_RES_MEMORY,                                       \
298        .start_request = 0,                                                 \
299        .start_actual = (_base)                                             \
300      }, {                                                                  \
301        .type = RTEMS_BSD_RES_IRQ,                                          \
302        .start_request = 0,                                                 \
303        .start_actual = (_irq)                                              \
304      }                                                                     \
305    };                                                                      \
306    RTEMS_BSD_DEFINE_NEXUS_DEVICE(cgem, _num,                               \
307                                  RTEMS_ARRAY_SIZE(cgem ## _num ## _res),   \
308                                  &cgem ## _num ## _res[0])
309#endif /* RTEMS_BSD_DRIVER_XILINX_ZYNQ_CGEM */
310#if !defined(RTEMS_BSD_DRIVER_XILINX_ZYNQ_CGEM0)
311  #define RTEMS_BSD_DRIVER_XILINX_ZYNQ_CGEM0(_irq)                \
312    RTEMS_BSD_DRIVER_XILINX_ZYNQ_CGEM(0, 0xe000b000, _irq)
313#endif /* RTEMS_BSD_DRIVER_XILINX_ZYNQ_CGEM0 */
314#if !defined(RTEMS_BSD_DRIVER_XILINX_ZYNQ_CGEM1)
315  #define RTEMS_BSD_DRIVER_XILINX_ZYNQ_CGEM1(_irq)       \
316    RTEMS_BSD_DRIVER_XILINX_ZYNQ_CGEM(1, 0xe000c000, _irq)
317#endif /* RTEMS_BSD_DRIVER_XILINX_ZYNQ_CGEM1 */
318
319/*
320 * Designware/Synopsys Ethernet MAC Controller.
321 */
322#if !defined(RTEMS_BSD_DRIVER_DWC0)
323  #define RTEMS_BSD_DRIVER_DWC0(_base, _irq)                     \
324    static const rtems_bsd_device_resource dwc0_res[] = {        \
325      {                                                          \
326        .type = RTEMS_BSD_RES_MEMORY,                            \
327        .start_request = 0,                                      \
328        .start_actual = (_base)                                  \
329      }, {                                                       \
330        .type = RTEMS_BSD_RES_IRQ,                               \
331        .start_request = 0,                                      \
332        .start_actual = (_irq)                                   \
333      }                                                          \
334    };                                                           \
335    RTEMS_BSD_DEFINE_NEXUS_DEVICE(dwc, 0,                        \
336                                  RTEMS_ARRAY_SIZE(dwc0_res),    \
337                                  &dwc0_res[0])
338#endif /* RTEMS_BSD_DRIVER_DWC0 */
339
340/*
341 * NXP QorIQ Network Driver.
342 */
343#if !defined(RTEMS_BSD_DRIVER_TSEC)
344  #define RTEMS_BSD_DRIVER_TSEC(_base, _tx_irq, _rx_irq, _er_irq)   \
345    static const rtems_bsd_device_resource tsec0_res[] = {          \
346      {                                                             \
347        .type = RTEMS_BSD_RES_MEMORY,                               \
348        .start_request = 0,                                         \
349        .start_actual = (_base)                                     \
350      }, {                                                          \
351        .type = RTEMS_BSD_RES_IRQ,                                  \
352        .start_request = 0,                                         \
353        .start_actual = (_tx_irq)                                   \
354      }, {                                                          \
355        .type = RTEMS_BSD_RES_IRQ,                                  \
356        .start_request = 1,                                         \
357        .start_actual = (_rx_irq)                                   \
358      }, {                                                          \
359        .type = RTEMS_BSD_RES_IRQ,                                  \
360        .start_request = 2,                                         \
361        .start_actual = (_er_irq)                                   \
362      }                                                             \
363    };                                                              \
364    RTEMS_BSD_DEFINE_NEXUS_DEVICE(tsec, 0,                          \
365                                  RTEMS_ARRAY_SIZE(tsec0_res),      \
366                                  &tsec0_res[0])
367#endif /* RTEMS_BSD_DRIVER_TSEC */
368
369/*
370 * Intel's Legacy EM driver.
371 */
372#if !defined(RTEMS_BSD_DRIVER_PCI_LEM)
373  #define RTEMS_BSD_DRIVER_PCI_LEM                \
374    SYSINIT_DRIVER_REFERENCE(lem, pci);
375#endif /* RTEMS_BSD_DRIVER_PCI_LEM */
376
377/*
378 * Intel's Gigabit Driver.
379 */
380#if !defined(RTEMS_BSD_DRIVER_PCI_IGB)
381  #define RTEMS_BSD_DRIVER_PCI_IGB                \
382    SYSINIT_DRIVER_REFERENCE(igb, pci);
383#endif /* RTEMS_BSD_DRIVER_PCI_IGB */
384
385/*
386 * Intel's EM Driver.
387 */
388#if !defined(RTEMS_BSD_DRIVER_PCI_EM)
389  #define RTEMS_BSD_DRIVER_PCI_EM                 \
390    SYSINIT_DRIVER_REFERENCE(em, pci);
391#endif /* RTEMS_BSD_DRIVER_PCI_EM */
392
393/*
394 * Realtek Driver
395 */
396#if !defined(RTEMS_BSD_DRIVER_PCI_RE)
397  #define RTEMS_BSD_DRIVER_PCI_RE                 \
398    SYSINIT_DRIVER_REFERENCE(re, pci);
399#endif /* RTEMS_BSD_DRIVER_PCI_RE */
400
401/**
402 ** MMI Physical Layer Support.
403 **/
404
405/*
406 * E1000 PHY
407 */
408#if !defined(RTEMS_BSD_DRIVER_E1000PHY)
409  #define RTEMS_BSD_DRIVER_E1000PHY               \
410    SYSINIT_DRIVER_REFERENCE(e1000phy, miibus);
411#endif /* RTEMS_BSD_DRIVER_E1000PHY */
412
413/*
414 * ICS PHY
415 */
416#if !defined(RTEMS_BSD_DRIVER_ICSPHY)
417  #define RTEMS_BSD_DRIVER_ICSPHY               \
418    SYSINIT_DRIVER_REFERENCE(icsphy, miibus);
419#endif /* RTEMS_BSD_DRIVER_ICSPHY */
420
421/*
422 * Reltek PHY
423 */
424#if !defined(RTEMS_BSD_DRIVER_REPHY)
425  #define RTEMS_BSD_DRIVER_REPHY                  \
426    SYSINIT_DRIVER_REFERENCE(rgephy, miibus);
427#endif /* RTEMS_BSD_DRIVER_REPHY */
428
429/*
430 * MI PHY.
431 */
432#if !defined(RTEMS_BSD_DRIVER_MIPHY)
433  #define RTEMS_BSD_DRIVER_MIPHY                  \
434    SYSINIT_DRIVER_REFERENCE(micphy, miibus);
435#endif /* RTEMS_BSD_DRIVER_MIPHY */
436
437#ifdef __cplusplus
438}
439#endif /* __cplusplus */
440
441#endif
Note: See TracBrowser for help on using the repository browser.