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