1/*
2 * Copyright 2019, Data61
3 * Commonwealth Scientific and Industrial Research Organisation (CSIRO)
4 * ABN 41 687 119 230.
5 *
6 * This software may be distributed and modified according to the terms of
7 * the GNU General Public License version 2. Note that NO WARRANTY is provided.
8 * See "LICENSE_GPLv2.txt" for details.
9 *
10 * @TAG(DATA61_GPL)
11 */
12#pragma once
13
14#include <camkes-BPMPServer.h>
15#include <camkes-ClockServer.h>
16#include <camkes-ResetServer.h>
17#include <camkes-GPIOServer.h>
18#include <camkes-fdt-bind-driver.h>
19
20#define HARDWARE_ETHERNET_EXTRA_IMPORTS             \
21    import <BPMP.idl4>;                             \
22    import <BPMPServer/BPMPServer.camkes>;          \
23    import <ClockServer/ClockServer.camkes>;        \
24    import <ResetServer/ResetServer.camkes>;        \
25    import <GPIOMUXServer/GPIOMUXServer.camkes>;
26
27#define HARDWARE_ETHERNET_COMPONENT
28
29#define HARDWARE_ETHERNET_INTERFACES    \
30    consumes Dummy EthDriver;           \
31    emits Dummy dummy_source;           \
32    ClockServer_client_interfaces(clock)\
33    ResetServer_client_interfaces(reset)\
34    GPIOServer_client_interfaces(gpio)\
35    fdt_bind_drivers_interfaces(["/ether_qos@2490000"]); \
36    attribute int dma_pool_paddr = 0x90000000;
37
38
39#define HARDWARE_ETHERNET_COMPOSITION                                                   \
40    component BPMPServer bpmp_server;                                                   \
41    component ClockServer clock_server;                                                 \
42    component ResetServer reset_server;                                                 \
43    component GPIOMUXServer gpiomux_server;                                             \
44    BPMPServer_client_connections(bpmp, clock_server, the_bpmp, bpmp_server) \
45    BPMPServer_client_connections(bpmp, reset_server, the_bpmp, bpmp_server) \
46    ClockServer_client_connections_embedded(clock, the_clock, clock_server) \
47    ResetServer_client_connections_embedded(reset, the_reset, reset_server) \
48    GPIOServer_client_connections_embedded(gpio, the_gpio, gpiomux_server) \
49    connection seL4DTBHardwareThreadless ethdriver_conn(from dummy_source, to EthDriver);         \
50    fdt_bind_driver_connections();
51
52
53
54#define HARDWARE_ETHERNET_CONFIG                                \
55    EthDriver.dtb = dtb({ "path" : "/ether_qos@2490000" });     \
56    EthDriver.generate_interrupts = 1; \
57    BPMPServer_client_configurations(bpmp, clock_server) \
58    BPMPServer_client_configurations(bpmp, reset_server) \
59    ClockServer_client_configurations_embedded(clock) \
60    ResetServer_client_configurations_embedded(reset) \
61    GPIOServer_client_configurations_embedded(gpio)
62