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

55-freebsd-126-freebsd-12
Last change on this file since 5892207 was 5892207, checked in by Christian Mauderer <Christian.Mauderer@…>, on 11/07/17 at 14:15:38

saf1761_otg: Port to RTEMS.

  • Property mode set to 100644
File size: 19.9 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 *   RTEMS_BSD_DRIVER_LPC32XX_TSC
43 *
44 *  Buses:
45 *   RTEMS_BSD_DRIVER_PC_LEGACY
46 *
47 *  USB:
48 *   RTEMS_BSD_DRIVER_DWCOTG0
49 *   RTEMS_BSD_DRIVER_DWCOTG0_BASE_ADDR
50 *    RTEMS_BSD_DRIVER_DWCOTG0_IRQ
51 *   RTEMS_BSD_DRIVER_LPC32XX_OHCI
52 *   RTEMS_BSD_DRIVER_DWC_MMC
53 *   RTEMS_BSD_DRIVER_MMC
54 *   RTEMS_BSD_DRIVER_USB
55 *   RTEMS_BSD_DRIVER_USB_MASS
56 *
57 *  Networking:
58 *   RTEMS_BSD_DRIVER_SMC0
59 *    RTEMS_BSD_DRIVER_SMC0_BASE_ADDR
60 *    RTEMS_BSD_DRIVER_SMC0_IRQ
61 *   RTEMS_BSD_DRIVER_LPC32XX_LPE
62 *   RTEMS_BSD_DRIVER_FEC
63 *   RTEMS_BSD_DRIVER_XILINX_ZYNQ_CGEM0
64 *    RTEMS_BSD_DRIVER_CGEM0_IRQ
65 *   RTEMS_BSD_DRIVER_DWC0
66 *    RTEMS_BSD_DRIVER_DWC0_BASE_ADDR
67 *    RTEMS_BSD_DRIVER_DWC0_IRQ
68 *   RTEMS_BSD_DRIVER_TSEC
69 *    RTEMS_BSD_DRIVER_TSEC_BASE_ADDR
70 *    RTEMS_BSD_DRIVER_TSEC_TX_IRQ
71 *    RTEMS_BSD_DRIVER_TSEC_RX_IRQ
72 *    RTEMS_BSD_DRIVER_TSEC_ER_IRQ
73 *   RTEMS_BSD_DRIVER_PCI_LEM
74 *   RTEMS_BSD_DRIVER_PCI_IGB
75 *   RTEMS_BSD_DRIVER_PCI_EM
76 *   RTEMS_BSD_DRIVER_PCI_RE
77 *
78 *  MMI PHY:
79 *   RTEMS_BSD_DRIVER_E1000PHY
80 *   RTEMS_BSD_DRIVER_ICSPHY
81 *   RTEMS_BSD_DRIVER_REPHY
82 *   RTEMS_BSD_DRIVER_MIPHY
83 */
84
85#if !defined(RTEMS_BSD_NEXUS_BUS_h)
86#define RTEMS_BSD_NEXUS_BUS_h
87
88#include <rtems/bsd/bsd.h>
89
90#ifdef __cplusplus
91extern "C" {
92#endif /* __cplusplus */
93
94/**
95 * Keep the order of the groups.
96 **/
97
98/**
99 ** Devices
100 **
101 **/
102
103/*
104 * Xilinx Zynq System Level Control Registers (SLCR).
105 */
106#if !defined(RTEMS_BSD_DRIVER_XILINX_ZYNQ_SLCR)
107  /*
108   * Hard IP part of the Zynq so a fixed address.
109   */
110  #define RTEMS_BSD_DRIVER_XILINX_ZYNQ_SLCR                            \
111    static const rtems_bsd_device_resource zy7_slcr_res[] = {          \
112      {                                                                 \
113        .type = RTEMS_BSD_RES_MEMORY,                                   \
114        .start_request = 0,                                             \
115        .start_actual = 0xf8000000                                      \
116      }                                                                 \
117    };                                                                  \
118    RTEMS_BSD_DEFINE_NEXUS_DEVICE(zy7_slcr, 0,                          \
119                                  RTEMS_ARRAY_SIZE(zy7_slcr_res),      \
120                                  &zy7_slcr_res[0])
121#endif /* RTEMS_BSD_DRIVER_XILINX_ZYNQ_SLCR */
122
123/*
124 * LPC32XX Power Control (PWR).
125 */
126#if !defined(RTEMS_BSD_DRIVER_LPC32XX_PWR)
127  #define RTEMS_BSD_DRIVER_LPC32XX_PWR                                        \
128    static const rtems_bsd_device_resource lpc_pwr0_res[] = {                 \
129      {                                                                       \
130        .type = RTEMS_BSD_RES_MEMORY,                                         \
131        .start_request = 0,                                                   \
132        .start_actual = LPC32XX_BASE_SYSCON                                   \
133      }                                                                       \
134    };                                                                        \
135    RTEMS_BSD_DEFINE_NEXUS_DEVICE_ORDERED(pwr, 0, RTEMS_SYSINIT_ORDER_FIRST,  \
136                                  RTEMS_ARRAY_SIZE(lpc_pwr0_res),             \
137                                  &lpc_pwr0_res[0])
138#endif /* RTEMS_BSD_DRIVER_LPC32XX_PWR */
139
140/*
141 * LPC32XX TSC.
142 */
143#if !defined(RTEMS_BSD_DRIVER_LPC32XX_TSC)
144  #define RTEMS_BSD_DRIVER_LPC32XX_TSC                                      \
145    static const rtems_bsd_device_resource lpc_tsc0_res[] = {               \
146      {                                                                     \
147        .type = RTEMS_BSD_RES_MEMORY,                                       \
148        .start_request = 0,                                                 \
149        .start_actual = LPC32XX_BASE_ADC                                    \
150      }, {                                                                  \
151        .type = RTEMS_BSD_RES_IRQ,                                          \
152        .start_request = 0,                                                 \
153        .start_actual = LPC32XX_IRQ_TS_IRQ_OR_ADC                           \
154      }                                                                     \
155    };                                                                      \
156    RTEMS_BSD_DEFINE_NEXUS_DEVICE(lpctsc, 0,                                \
157                                  RTEMS_ARRAY_SIZE(lpc_tsc0_res),           \
158                                  &lpc_tsc0_res[0])
159#endif /* RTEMS_BSD_DRIVER_LPC32XX_TSC */
160
161/**
162 ** Physical Buses
163 **/
164
165/*
166 * PC legacy bus.
167 */
168#if !defined(RTEMS_BSD_DRIVER_PC_LEGACY)
169  #define RTEMS_BSD_DRIVER_PC_LEGACY                      \
170    RTEMS_BSD_DEFINE_NEXUS_DEVICE(legacy, 0, 0, NULL);    \
171    SYSINIT_DRIVER_REFERENCE(pcib, legacy);               \
172    SYSINIT_DRIVER_REFERENCE(pci, pcib)
173#endif /* RTEMS_BSD_DRIVER_PC_LEGACY */
174
175/**
176 ** USB
177 **/
178
179/*
180 * Designware/Synopsys OTG USB Controller.
181 */
182#if !defined(RTEMS_BSD_DRIVER_DWCOTG0)
183  #define RTEMS_BSD_DRIVER_DWCOTG0(_base, _irq)                  \
184    static const rtems_bsd_device_resource dwcotg0_res[] = {     \
185      {                                                          \
186        .type = RTEMS_BSD_RES_MEMORY,                            \
187        .start_request = 0,                                      \
188        .start_actual = (_base)                                  \
189      }, {                                                       \
190        .type = RTEMS_BSD_RES_IRQ,                               \
191        .start_request = 0,                                      \
192        .start_actual = (_irq)                                   \
193      }                                                          \
194    };                                                           \
195    RTEMS_BSD_DEFINE_NEXUS_DEVICE(dwcotg, 0,                     \
196                                  RTEMS_ARRAY_SIZE(dwcotg0_res), \
197                                  &dwcotg0_res[0])
198#endif /* RTEMS_BSD_DRIVER_DWCOTG0 */
199
200/*
201 * LPC32XX OHCI.
202 */
203#if !defined(RTEMS_BSD_DRIVER_LPC32XX_OHCI)
204  #define RTEMS_BSD_DRIVER_LPC32XX_OHCI                                     \
205    static const rtems_bsd_device_resource lpc_ohci0_res[] = {              \
206      {                                                                     \
207        .type = RTEMS_BSD_RES_MEMORY,                                       \
208        .start_request = 0,                                                 \
209        .start_actual = LPC32XX_BASE_USB                                    \
210      }, {                                                                  \
211        .type = RTEMS_BSD_RES_MEMORY,                                       \
212        .start_request = 0,                                                 \
213        .start_actual = (unsigned long)(&LPC32XX_I2C_RX)                    \
214      }, {                                                                  \
215        .type = RTEMS_BSD_RES_IRQ,                                          \
216        .start_request = 0,                                                 \
217        .start_actual = LPC32XX_IRQ_USB_HOST                                \
218      }                                                                     \
219    };                                                                      \
220    RTEMS_BSD_DEFINE_NEXUS_DEVICE(ohci, 0,                                  \
221                                  RTEMS_ARRAY_SIZE(lpc_ohci0_res),          \
222                                  &lpc_ohci0_res[0])
223#endif /* RTEMS_BSD_DRIVER_LPC32XX_OHCI */
224
225/*
226 * Designware/Synopsys MMC.
227 */
228#if !defined(RTEMS_BSD_DRIVER_DWC_MMC)
229  #define RTEMS_BSD_DRIVER_DWC_MMC                                \
230    RTEMS_BSD_DEFINE_NEXUS_DEVICE(dw_mmc, 0, 0, NULL)
231#endif /* RTEMS_BSD_DRIVER_DWC_MMC */
232
233/*
234 * MMC Driver.
235 */
236#if !defined(RTEMS_BSD_DRIVER_MMC)
237  #define RTEMS_BSD_DRIVER_MMC                    \
238    SYSINIT_DRIVER_REFERENCE(mmcsd, mmc)
239#endif /* RTEMS_BSD_DRIVER_MMC */
240
241/*
242 * USB Drivers.
243 */
244#if !defined(RTEMS_BSD_DRIVER_USB)
245  #define RTEMS_BSD_DRIVER_USB                    \
246    SYSINIT_REFERENCE(usb_quirk_init);            \
247    SYSINIT_DRIVER_REFERENCE(uhub, usbus)
248#endif /* RTEMS_BSD_DRIVER_USB */
249
250/*
251 * USB Mass Storage Class driver.
252 */
253#if !defined(RTEMS_BSD_DRIVER_USB_MASS)
254  #define RTEMS_BSD_DRIVER_USB_MASS               \
255    SYSINIT_DRIVER_REFERENCE(umass, uhub)
256#endif /* RTEMS_BSD_DRIVER_USB_MASS */
257
258/*
259 * USB SAF1761 host controller driver.
260 */
261#if !defined(RTEMS_BSD_DRIVER_USB_SAF1761_OTG)
262  #define RTEMS_BSD_DRIVER_USB_SAF1761_OTG(_base, _irq)                  \
263    static const rtems_bsd_device_resource usb_saf1761_otg_res[] = {     \
264      {                                                                  \
265        .type = RTEMS_BSD_RES_MEMORY,                                    \
266        .start_request = 0,                                              \
267        .start_actual = (_base)                                          \
268      }, {                                                               \
269        .type = RTEMS_BSD_RES_IRQ,                                       \
270        .start_request = 0,                                              \
271        .start_actual = (_irq)                                           \
272      }                                                                  \
273    };                                                                   \
274    RTEMS_BSD_DEFINE_NEXUS_DEVICE(saf1761otg, 0,                         \
275                                  RTEMS_ARRAY_SIZE(usb_saf1761_otg_res), \
276                                  &usb_saf1761_otg_res[0])
277#endif /* RTEMS_BSD_DRIVER_USB_SAF1761_OTG */
278
279/**
280 ** Networking
281 **/
282
283/*
284 * SMC0 driver
285 */
286#if !defined(RTEMS_BSD_DRIVER_SMC0)
287  #define RTEMS_BSD_DRIVER_SMC0(_base, _irq)                     \
288    static const rtems_bsd_device_resource smc0_res[] = {        \
289      {                                                          \
290        .type = RTEMS_BSD_RES_MEMORY,                            \
291        .start_request = 0,                                      \
292        .start_actual = (_base)                                  \
293      }, {                                                       \
294        .type = RTEMS_BSD_RES_IRQ,                               \
295        .start_request = 0,                                      \
296        .start_actual = (_irq)                                   \
297      }                                                          \
298    };                                                           \
299    RTEMS_BSD_DEFINE_NEXUS_DEVICE(smc, 0,                        \
300                                  RTEMS_ARRAY_SIZE(smc0_res),    \
301                                  &smc0_res[0])
302#endif /* RTEMS_BSD_DRIVER_SMC */
303
304/*
305 * LPC32XX LPE driver
306 */
307#if !defined(RTEMS_BSD_DRIVER_LPC32XX_LPE)
308  #define RTEMS_BSD_DRIVER_LPC32XX_LPE                           \
309    static const rtems_bsd_device_resource lpc_lpe0_res[] = {    \
310      {                                                          \
311        .type = RTEMS_BSD_RES_MEMORY,                            \
312        .start_request = 0,                                      \
313        .start_actual = LPC32XX_BASE_ETHERNET                    \
314      }, {                                                       \
315        .type = RTEMS_BSD_RES_IRQ,                               \
316        .start_request = 0,                                      \
317        .start_actual = LPC32XX_IRQ_ETHERNET                     \
318      }                                                          \
319    };                                                           \
320    RTEMS_BSD_DEFINE_NEXUS_DEVICE(lpe, 0,                        \
321                                  RTEMS_ARRAY_SIZE(lpc_lpe0_res),    \
322                                  &lpc_lpe0_res[0])
323#endif /* RTEMS_BSD_DRIVER_LPC32XX_LPE */
324
325/*
326 * Coldfire Fast Ethernet Controller (FEC) driver.
327 */
328#if !defined(RTEMS_BSD_DRIVER_FEC)
329  #define RTEMS_BSD_DRIVER_FEC                            \
330    RTEMS_BSD_DEFINE_NEXUS_DEVICE(fec, 0, 0, NULL);
331#endif /* RTEMS_BSD_DRIVER_FEC */
332
333/*
334 * Atmel SAMv71 Ethernet Controller (sam) driver.
335 */
336#if !defined(RTEMS_BSD_DRIVER_IF_ATSAM)
337  #define RTEMS_BSD_DRIVER_IF_ATSAM                       \
338    RTEMS_BSD_DEFINE_NEXUS_DEVICE(if_atsam, 0, 0, NULL);
339#endif /* RTEMS_BSD_DRIVER_IF_ATSAM */
340
341/*
342 * Xilinx Zynq Cadence Gigbit Ethernet MAC (CGEM).
343 */
344#if !defined(RTEMS_BSD_DRIVER_XILINX_ZYNQ_CGEM)
345  #define RTEMS_BSD_DRIVER_XILINX_ZYNQ_CGEM(_num, _base, _irq)              \
346    static const rtems_bsd_device_resource cgem ## _num ## _res[] = {       \
347      {                                                                     \
348        .type = RTEMS_BSD_RES_MEMORY,                                       \
349        .start_request = 0,                                                 \
350        .start_actual = (_base)                                             \
351      }, {                                                                  \
352        .type = RTEMS_BSD_RES_IRQ,                                          \
353        .start_request = 0,                                                 \
354        .start_actual = (_irq)                                              \
355      }                                                                     \
356    };                                                                      \
357    RTEMS_BSD_DEFINE_NEXUS_DEVICE(cgem, _num,                               \
358                                  RTEMS_ARRAY_SIZE(cgem ## _num ## _res),   \
359                                  &cgem ## _num ## _res[0])
360#endif /* RTEMS_BSD_DRIVER_XILINX_ZYNQ_CGEM */
361#if !defined(RTEMS_BSD_DRIVER_XILINX_ZYNQ_CGEM0)
362  #define RTEMS_BSD_DRIVER_XILINX_ZYNQ_CGEM0(_irq)                \
363    RTEMS_BSD_DRIVER_XILINX_ZYNQ_CGEM(0, 0xe000b000, _irq)
364#endif /* RTEMS_BSD_DRIVER_XILINX_ZYNQ_CGEM0 */
365#if !defined(RTEMS_BSD_DRIVER_XILINX_ZYNQ_CGEM1)
366  #define RTEMS_BSD_DRIVER_XILINX_ZYNQ_CGEM1(_irq)       \
367    RTEMS_BSD_DRIVER_XILINX_ZYNQ_CGEM(1, 0xe000c000, _irq)
368#endif /* RTEMS_BSD_DRIVER_XILINX_ZYNQ_CGEM1 */
369
370/*
371 * Designware/Synopsys Ethernet MAC Controller.
372 */
373#if !defined(RTEMS_BSD_DRIVER_DWC0)
374  #define RTEMS_BSD_DRIVER_DWC0(_base, _irq)                     \
375    static const rtems_bsd_device_resource dwc0_res[] = {        \
376      {                                                          \
377        .type = RTEMS_BSD_RES_MEMORY,                            \
378        .start_request = 0,                                      \
379        .start_actual = (_base)                                  \
380      }, {                                                       \
381        .type = RTEMS_BSD_RES_IRQ,                               \
382        .start_request = 0,                                      \
383        .start_actual = (_irq)                                   \
384      }                                                          \
385    };                                                           \
386    RTEMS_BSD_DEFINE_NEXUS_DEVICE(dwc, 0,                        \
387                                  RTEMS_ARRAY_SIZE(dwc0_res),    \
388                                  &dwc0_res[0])
389#endif /* RTEMS_BSD_DRIVER_DWC0 */
390
391/*
392 * NXP QorIQ Network Driver.
393 */
394#if !defined(RTEMS_BSD_DRIVER_TSEC)
395  #define RTEMS_BSD_DRIVER_TSEC(_base, _tx_irq, _rx_irq, _er_irq)   \
396    static const rtems_bsd_device_resource tsec0_res[] = {          \
397      {                                                             \
398        .type = RTEMS_BSD_RES_MEMORY,                               \
399        .start_request = 0,                                         \
400        .start_actual = (_base)                                     \
401      }, {                                                          \
402        .type = RTEMS_BSD_RES_IRQ,                                  \
403        .start_request = 0,                                         \
404        .start_actual = (_tx_irq)                                   \
405      }, {                                                          \
406        .type = RTEMS_BSD_RES_IRQ,                                  \
407        .start_request = 1,                                         \
408        .start_actual = (_rx_irq)                                   \
409      }, {                                                          \
410        .type = RTEMS_BSD_RES_IRQ,                                  \
411        .start_request = 2,                                         \
412        .start_actual = (_er_irq)                                   \
413      }                                                             \
414    };                                                              \
415    RTEMS_BSD_DEFINE_NEXUS_DEVICE(tsec, 0,                          \
416                                  RTEMS_ARRAY_SIZE(tsec0_res),      \
417                                  &tsec0_res[0])
418#endif /* RTEMS_BSD_DRIVER_TSEC */
419
420/*
421 * Intel's Legacy EM driver.
422 */
423#if !defined(RTEMS_BSD_DRIVER_PCI_LEM)
424  #define RTEMS_BSD_DRIVER_PCI_LEM                \
425    SYSINIT_DRIVER_REFERENCE(lem, pci);
426#endif /* RTEMS_BSD_DRIVER_PCI_LEM */
427
428/*
429 * Intel's Gigabit Driver.
430 */
431#if !defined(RTEMS_BSD_DRIVER_PCI_IGB)
432  #define RTEMS_BSD_DRIVER_PCI_IGB                \
433    SYSINIT_DRIVER_REFERENCE(igb, pci);
434#endif /* RTEMS_BSD_DRIVER_PCI_IGB */
435
436/*
437 * Intel's EM Driver.
438 */
439#if !defined(RTEMS_BSD_DRIVER_PCI_EM)
440  #define RTEMS_BSD_DRIVER_PCI_EM                 \
441    SYSINIT_DRIVER_REFERENCE(em, pci);
442#endif /* RTEMS_BSD_DRIVER_PCI_EM */
443
444/*
445 * Realtek Driver
446 */
447#if !defined(RTEMS_BSD_DRIVER_PCI_RE)
448  #define RTEMS_BSD_DRIVER_PCI_RE                 \
449    SYSINIT_DRIVER_REFERENCE(re, pci);
450#endif /* RTEMS_BSD_DRIVER_PCI_RE */
451
452/**
453 ** MMI Physical Layer Support.
454 **/
455
456/*
457 * E1000 PHY
458 */
459#if !defined(RTEMS_BSD_DRIVER_E1000PHY)
460  #define RTEMS_BSD_DRIVER_E1000PHY               \
461    SYSINIT_DRIVER_REFERENCE(e1000phy, miibus);
462#endif /* RTEMS_BSD_DRIVER_E1000PHY */
463
464/*
465 * ICS PHY
466 */
467#if !defined(RTEMS_BSD_DRIVER_ICSPHY)
468  #define RTEMS_BSD_DRIVER_ICSPHY               \
469    SYSINIT_DRIVER_REFERENCE(icsphy, miibus);
470#endif /* RTEMS_BSD_DRIVER_ICSPHY */
471
472/*
473 * Reltek PHY
474 */
475#if !defined(RTEMS_BSD_DRIVER_REPHY)
476  #define RTEMS_BSD_DRIVER_REPHY                  \
477    SYSINIT_DRIVER_REFERENCE(rgephy, miibus);
478#endif /* RTEMS_BSD_DRIVER_REPHY */
479
480/*
481 * MI PHY.
482 */
483#if !defined(RTEMS_BSD_DRIVER_MIPHY)
484  #define RTEMS_BSD_DRIVER_MIPHY                  \
485    SYSINIT_DRIVER_REFERENCE(micphy, miibus);
486#endif /* RTEMS_BSD_DRIVER_MIPHY */
487
488#ifdef __cplusplus
489}
490#endif /* __cplusplus */
491
492#endif
Note: See TracBrowser for help on using the repository browser.