summaryrefslogtreecommitdiffstats
path: root/bsps/powerpc/beatnik/net/if_gfe/rtemscompat_defs.h
diff options
context:
space:
mode:
Diffstat (limited to 'bsps/powerpc/beatnik/net/if_gfe/rtemscompat_defs.h')
-rw-r--r--bsps/powerpc/beatnik/net/if_gfe/rtemscompat_defs.h161
1 files changed, 161 insertions, 0 deletions
diff --git a/bsps/powerpc/beatnik/net/if_gfe/rtemscompat_defs.h b/bsps/powerpc/beatnik/net/if_gfe/rtemscompat_defs.h
new file mode 100644
index 0000000000..971b1d3cca
--- /dev/null
+++ b/bsps/powerpc/beatnik/net/if_gfe/rtemscompat_defs.h
@@ -0,0 +1,161 @@
+#ifndef RTEMS_COMPAT_DEFS_H
+#define RTEMS_COMPAT_DEFS_H
+
+#include <stdint.h>
+#include <stddef.h>
+
+/* Number of device instances the driver should support
+ * - may be limited to 1 depending on IRQ API
+ * (braindamaged PC586 and powerpc)
+ */
+#define NETDRIVER_SLOTS 1
+/* String name to print with error messages */
+#define NETDRIVER "gfe"
+/* Name snippet used to make global symbols unique to this driver */
+#define NETDRIVER_PREFIX gfe
+
+/* Define according to endianness of the *ethernet*chip*
+ * (not the CPU - most probably are LE)
+ * This must be either NET_CHIP_LE or NET_CHIP_BE
+ */
+
+#define NET_CHIP_LE
+#undef NET_CHIP_BE
+
+/* Define either NET_CHIP_MEM_IO or NET_CHIP_PORT_IO,
+ * depending whether the CPU sees it in memory address space
+ * or (e.g. x86) uses special I/O instructions.
+ */
+#define NET_CHIP_MEM_IO
+#undef NET_CHIP_PORT_IO
+
+/* The name of the hijacked 'bus handle' field in the softc
+ * structure. We use this field to store the chip's base address.
+ */
+#define NET_SOFTC_BHANDLE_FIELD sc_memh
+
+/* define the names of the 'if_XXXreg.h' and 'if_XXXvar.h' headers
+ * (only if present, i.e., if the BSDNET driver has no respective
+ * header, leave this undefined).
+ *
+ */
+#undef IF_REG_HEADER
+#define IF_VAR_HEADER "../if_gfe/if_gfevar.h"
+
+/* define if a pci device */
+/*
+#define NETDRIVER_PCI <bsp/pci.h>
+*/
+#undef NETDRIVER_PCI
+
+/* Macros to disable and enable interrupts, respectively.
+ * The 'disable' macro is expanded in the ISR, the 'enable'
+ * macro is expanded in the driver task.
+ * The global network semaphore usually provides mutex
+ * protection of the device registers.
+ * Special care must be taken when coding the 'disable' macro,
+ * however to MAKE SURE THERE ARE NO OTHER SIDE EFFECTS such
+ * as:
+ * - macro must not clear any status flags
+ * - macro must save/restore any context information
+ * (e.g., a address register pointer or a bank switch register)
+ *
+ * ARGUMENT: the macro arg is a pointer to the driver's 'softc' structure
+ */
+
+#define NET_DISABLE_IRQS(sc) GE_WRITE(sc, EIMR, 0)
+#define NET_ENABLE_IRQS(sc) GE_WRITE(sc, EIMR, sc->sc_intrmask)
+
+/* Driver may provide a macro/function to copy the hardware address
+ * from the device into 'softc.arpcom'.
+ * If this is undefined, the driver must to the copy itself.
+ * Preferrably, it should check soft.arpcom.ac_enaddr for all
+ * zeros and leave it alone if it is nonzero, i.e., write it
+ * to the hardware.
+#define NET_READ_MAC_ADDR(sc)
+ */
+
+typedef struct {
+ uint32_t ds_addr;
+ uint32_t ds_len;
+} bus_dma_segment_t;
+
+#define dm_segs gdm_segs
+#define dm_nsegs gdm_nsegs
+typedef struct gfe_dmamem *bus_dmamap_t;
+
+typedef uint32_t bus_addr_t;
+typedef uint32_t bus_size_t;
+
+typedef struct device blah;
+
+#define BUS_DMA_NOCACHE 0xdeadbeef
+
+#ifdef __PPC__
+#define bus_dmamap_sync(args...) do { __asm__ volatile("sync":::"memory"); } while(0)
+#else
+#error "Dont' know how to sync memory on your CPU"
+#endif
+
+int ether_sprintf_r(const unsigned char *enaddr, char *buf, int len);
+
+/* we have it although we're not ansi */
+int snprintf(char *, size_t, const char *,...);
+
+#include <string.h>
+
+/* declare in every routine using ether_sprintf */
+#define SPRINTFVARDECL char rtems_sprintf_local_buf[3*6] /* ethernet string */
+
+#define ether_sprintf_macro(a) \
+ (snprintf(rtems_sprintf_local_buf, \
+ sizeof(rtems_sprintf_local_buf), \
+ "%02X:%02X:%02X:%02X:%02X:%02X", \
+ a[0],a[1],a[2],a[3],a[4],a[5]) ? \
+ rtems_sprintf_local_buf : 0 \
+ )
+
+
+#define aprint_normal(args...) printf(args)
+#define aprint_error(args...) fprintf(stderr,args)
+
+#define delay(arg) DELAY(arg)
+
+#define KASSERT(a...) do {} while (0)
+
+#define gfe_assign_desc _bsd_gfe_assign_desc
+#define gfe_attach _bsd_gfe_attach
+#define gfe_dbg_config _bsd_gfe_dbg_config
+#define gfe_dmamem_alloc _bsd_gfe_dmamem_alloc
+#define gfe_dmamem_free _bsd_gfe_dmamem_free
+#define gfe_hash_alloc _bsd_gfe_hash_alloc
+#define gfe_hash_compute _bsd_gfe_hash_compute
+#define gfe_hash_entry_op _bsd_gfe_hash_entry_op
+#define gfe_hash_fill _bsd_gfe_hash_fill
+#define gfe_ifioctl _bsd_gfe_ifioctl
+#define gfe_ifstart _bsd_gfe_ifstart
+#define gfe_ifwatchdog _bsd_gfe_ifwatchdog
+#define gfe_init _bsd_gfe_init
+#define gfe_intr _bsd_gfe_intr
+#define gfe_mdio_access _bsd_gfe_mdio_access
+#define gfe_mii_read _bsd_gfe_mii_read
+#define gfe_mii_write _bsd_gfe_mii_write
+#define gfe_probe _bsd_gfe_probe
+#define gfe_rx_cleanup _bsd_gfe_rx_cleanup
+#define gfe_rx_get _bsd_gfe_rx_get
+#define gfe_rx_prime _bsd_gfe_rx_prime
+#define gfe_rx_process _bsd_gfe_rx_process
+#define gfe_rx_rxqalloc _bsd_gfe_rx_rxqalloc
+#define gfe_rx_rxqinit _bsd_gfe_rx_rxqinit
+#define gfe_rx_stop _bsd_gfe_rx_stop
+#define gfe_tick _bsd_gfe_tick
+#define gfe_tx_cleanup _bsd_gfe_tx_cleanup
+#define gfe_tx_done _bsd_gfe_tx_done
+#define gfe_tx_enqueue _bsd_gfe_tx_enqueue
+#define gfe_tx_start _bsd_gfe_tx_start
+#define gfe_tx_stop _bsd_gfe_tx_stop
+#define gfe_tx_txqalloc _bsd_gfe_tx_txqalloc
+#define gfe_whack _bsd_gfe_whack
+#define the_gfe_devs _bsd_the_gfe_devs
+
+#endif