diff options
Diffstat (limited to 'bsps/powerpc/beatnik/net/porting/README')
-rw-r--r-- | bsps/powerpc/beatnik/net/porting/README | 104 |
1 files changed, 0 insertions, 104 deletions
diff --git a/bsps/powerpc/beatnik/net/porting/README b/bsps/powerpc/beatnik/net/porting/README deleted file mode 100644 index b262d7797c..0000000000 --- a/bsps/powerpc/beatnik/net/porting/README +++ /dev/null @@ -1,104 +0,0 @@ -Templates to help porting freebsd networking drivers -to rtems (focus on i386 and powerpc) using a 'quick and dirty' -approach. -This is not an elegant piece of software -- be warned. - -/* Copyright: Till Straumann <strauman@slac.stanford.edu>, 2005; - * License: see LICENSE file. - */ - -Usage: - - A obtain the freebsd driver source. It usually is made - up of a - if_XXX.c -- core driver - if_XXXreg.h -- core header - if_XXXvar.h -- some have it, some don't - if_XXX_<bus>.c -- glue to integrate the core - driver with different environments - (such as pccard, pci, ...). There - are several of these. - - Note that you might have to get an older version - as some structures and interfaces may have undergone - significant changes since the bsd/networking version that - was ported to rtems. - - B Copy the Makefile and rtemscompat_defs.h templates to the - driver source dir and edit them. - - C Edit if_XXXreg.h and comment all unneeded fields from the - 'softc' structure declaration with - - #ifndef __rtems__ - #endif - - In particular, the bushandle field (as defined in rtemscompat_defs.h) - above, see comments in the template) must be re-declared: - - #ifndef __rtems__ - bus_space_handle_t XXX_bhandle; - #else - unsigned XXX_bhandle; - unsigned char irq_no; - unsigned char b,d,f; /* PCI tuple; needed for PCI only */ - rtems_id tid; /* driver task id */ - #endif - - Later, the compilation attempts will help identifying - fields that need to be removed. - - I like the #ifdef __rtems__ construct as it minimizes changes - to the source thus making merging updated driver versions easier. - - D Edit if_XXX.c; at the very top, include the lines - - #ifdef __rtems__ - #include <rtemscompat.h> - #endif - - use the #ifndef __rtems__ #endif construct to comment - unneeded / unsupported inclusion of headers and code pieces. - - - inclusion of net/if_media.h must usually be mapped to - libchip/if_media.h - - comment all vm, machine, bus, mii etc. related headers. - - - replace inclusion of if_XXXreg.h by - - #include "if_XXXreg.h" - #include <rtemscompat1.h> - - - work through the if_XXX.c and if_XXXreg.h files commenting - stuff until if_XXX.c compiles. This might involve hacking - the helper headers. - - - pay attention to endian issues; things may need to be fixed! - - - at the top where the freebsd 'methods' and the like are - commented, add a definition of the driver methods for RTEMS: - - #ifdef __rtems__ - net_drv_tbl_t METHODS = { - n_probe : XXX_probe, - n_attach : XXX_attach, - n_detach : XXX_detach, /* optional; */ - n_intr : XXX_intr, /* freebsd ISR; executed from daemon under RTEMS */ - }; - #endif - - - make sure all the if_xxx methods are set; in particular, - set - sc->if_output = ether_output; - - - on input: - you can use DO_ETHER_INPUT_SKIPPING_ETHER_HEADER() macro - -- if you don't MAKE SURE THE RECEIVING INTERFACE IS SET - in the mbuf packet header!!! - - E create 'rtems_<chip>_setup()' to probe for devices and - set the softc struct's base address, interrupt line and - bus/dev/fun triple (PCI only). - For PCI devices, a generic setup routine already comes with - porting/if_xxx_rtems.c -> nothing needs to be written! |