Changeset c1205ee in rtems-libbsd


Ignore:
Timestamp:
Mar 2, 2017, 3:29:11 PM (3 years ago)
Author:
Sebastian Huber <sebastian.huber@…>
Branches:
c1e05b9ea378b2971e3d7704779112b4bc4296da, 4a77611a223ea883fb548679b516d326a020d447
Children:
5f3722a
Parents:
f0dd0c5
git-author:
Sebastian Huber <sebastian.huber@…> (03/02/17 15:29:11)
git-committer:
Sebastian Huber <sebastian.huber@…> (03/08/17 08:04:18)
Message:

FDT(4): Port to RTEMS

Files:
7 added
9 edited

Legend:

Unmodified
Added
Removed
  • Makefile.todo

    rf0dd0c5 rc1205ee  
    1919GENERATED += $(LOCAL_SRC)/miibus_if.c
    2020GENERATED += $(LOCAL_INC)/miidevs.h
     21GENERATED += $(LOCAL_INC)/ofw_if.h
     22GENERATED += $(LOCAL_SRC)/ofw_if.c
     23GENERATED += $(LOCAL_INC)/ofw_bus_if.h
     24GENERATED += $(LOCAL_SRC)/ofw_bus_if.c
    2125GENERATED += $(LOCAL_INC)/pci_if.h
    2226GENERATED += $(LOCAL_SRC)/pci_if.c
     
    110114        mv mmcbr_if.c $@
    111115
     116$(LOCAL_INC)/ofw_if.h: $(FREEBSD_SRC)/sys/dev/ofw/ofw_if.m
     117        awk -f $(TOOLS)/makeobjops.awk $< -h
     118        mv ofw_if.h $@
     119
     120$(LOCAL_SRC)/ofw_if.c: $(FREEBSD_SRC)/sys/dev/ofw/ofw_if.m
     121        awk -f $(TOOLS)/makeobjops.awk $< -c
     122        mv ofw_if.c $@
     123
     124$(LOCAL_INC)/ofw_bus_if.h: $(FREEBSD_SRC)/sys/dev/ofw/ofw_bus_if.m
     125        awk -f $(TOOLS)/makeobjops.awk $< -h
     126        mv ofw_bus_if.h $@
     127
     128$(LOCAL_SRC)/ofw_bus_if.c: $(FREEBSD_SRC)/sys/dev/ofw/ofw_bus_if.m
     129        awk -f $(TOOLS)/makeobjops.awk $< -c
     130        mv ofw_bus_if.c $@
     131
    112132$(LOCAL_INC)/if_dwc_if.h: $(FREEBSD_SRC)/sys/dev/dwc/if_dwc_if.m
    113133        awk -f $(TOOLS)/makeobjops.awk $< -h
  • freebsd/sys/dev/ofw/ofw_fdt.c

    rf0dd0c5 rc1205ee  
    9898};
    9999
     100#ifndef __rtems__
    100101static ofw_def_t ofw_fdt = {
     102#else /* __rtems__ */
     103ofw_def_t ofw_fdt = {
     104#endif /* __rtems__ */
    101105        OFW_FDT,
    102106        ofw_fdt_methods,
    103107        0
    104108};
     109#ifndef __rtems__
    105110OFW_DEF(ofw_fdt);
     111#endif /* __rtems__ */
    106112
    107113static void *fdtp = NULL;
  • freebsd/sys/dev/ofw/ofwvar.h

    rf0dd0c5 rc1205ee  
    8181typedef struct ofw_kobj         *ofw_t;
    8282typedef struct kobj_class       ofw_def_t;
     83#ifdef __rtems__
     84extern ofw_def_t ofw_fdt;
     85#endif /* __rtems__ */
    8386
    8487#define ofw_method_t    kobj_method_t
  • freebsd/sys/dev/ofw/openfirm.c

    rf0dd0c5 rc1205ee  
    8585static ihandle_t stdout;
    8686
     87#ifndef __rtems__
    8788static ofw_def_t        *ofw_def_impl = NULL;
     89#else /* __rtems__ */
     90#define ofw_def_impl (&ofw_fdt)
     91#endif /* __rtems__ */
    8892static ofw_t            ofw_obj;
    8993static struct ofw_kobj  ofw_kernel_obj;
     
    145149{
    146150
     151#ifdef __rtems__
     152        if (OF_init(__DECONST(void *, bsp_fdt_get())) != 0)
     153                return (ENXIO);
     154#endif /* __rtems__ */
    147155        /*
    148156         * There is no locking during this init because it runs much earlier
     
    199207OF_install(char *name, int prio)
    200208{
     209#ifndef __rtems__
    201210        ofw_def_t *ofwp, **ofwpp;
    202211        static int curr_prio = 0;
     
    218227
    219228        return (FALSE);
     229#else /* __rtems__ */
     230        return (TRUE);
     231#endif /* __rtems__ */
    220232}
    221233
  • libbsd.py

    rf0dd0c5 rc1205ee  
    5252            'local/device_if.c',
    5353            'local/miibus_if.c',
     54            'local/ofw_bus_if.c',
     55            'local/ofw_if.c',
    5456            'local/pcib_if.c',
    5557            'local/pci_if.c',
     
    391393            'sys/vm/uma_core.c',
    392394            'sys/vm/uma_dbg.c',
     395        ],
     396        mm.generator['source']()
     397    )
     398    return mod
     399
     400#
     401# FDT
     402#
     403def fdt(mm):
     404    mod = builder.Module('fdt')
     405    mod.addKernelSpaceHeaderFiles(
     406        [
     407            'sys/sys/slicer.h',
     408            'sys/dev/fdt/fdt_common.h',
     409            'sys/dev/fdt/simplebus.h',
     410            'sys/dev/ofw/ofw_bus.h',
     411            'sys/dev/ofw/ofw_bus_subr.h',
     412            'sys/dev/ofw/ofw_subr.h',
     413            'sys/dev/ofw/ofw_pci.h',
     414            'sys/dev/ofw/ofwvar.h',
     415            'sys/dev/ofw/openfirm.h',
     416        ]
     417    )
     418    mod.addKernelSpaceSourceFiles(
     419        [
     420            'sys/dev/fdt/simplebus.c',
     421            'sys/dev/fdt/fdt_common.c',
     422            'sys/dev/ofw/ofwbus.c',
     423            'sys/dev/ofw/openfirm.c',
     424            'sys/dev/ofw/ofw_fdt.c',
     425            'sys/dev/ofw/ofw_bus_subr.c',
     426            'sys/dev/ofw/ofw_subr.c',
     427        ],
     428        mm.generator['source']()
     429    )
     430    mod.addRTEMSSourceFiles(
     431        [
     432            'rtems/ofw_machdep.c',
    393433        ],
    394434        mm.generator['source']()
     
    30403080    mm.addModule(base(mm))
    30413081
     3082    mm.addModule(fdt(mm))
    30423083    mm.addModule(mmc(mm))
    30433084
  • libbsd_waf.py

    rf0dd0c5 rc1205ee  
    774774              'freebsd/sys/dev/e1000/if_igb.c',
    775775              'freebsd/sys/dev/e1000/if_lem.c',
     776              'freebsd/sys/dev/fdt/fdt_common.c',
     777              'freebsd/sys/dev/fdt/simplebus.c',
    776778              'freebsd/sys/dev/fxp/if_fxp.c',
    777779              'freebsd/sys/dev/led/led.c',
     
    788790              'freebsd/sys/dev/mmc/mmc.c',
    789791              'freebsd/sys/dev/mmc/mmcsd.c',
     792              'freebsd/sys/dev/ofw/ofw_bus_subr.c',
     793              'freebsd/sys/dev/ofw/ofw_fdt.c',
     794              'freebsd/sys/dev/ofw/ofw_subr.c',
     795              'freebsd/sys/dev/ofw/ofwbus.c',
     796              'freebsd/sys/dev/ofw/openfirm.c',
    790797              'freebsd/sys/dev/pci/pci.c',
    791798              'freebsd/sys/dev/pci/pci_pci.c',
     
    12301237              'rtemsbsd/local/mmcbr_if.c',
    12311238              'rtemsbsd/local/mmcbus_if.c',
     1239              'rtemsbsd/local/ofw_bus_if.c',
     1240              'rtemsbsd/local/ofw_if.c',
    12321241              'rtemsbsd/local/pci_if.c',
    12331242              'rtemsbsd/local/pcib_if.c',
     
    12581267              'rtemsbsd/pppd/utils.c',
    12591268              'rtemsbsd/rtems/ipsec_get_policylen.c',
     1269              'rtemsbsd/rtems/ofw_machdep.c',
    12601270              'rtemsbsd/rtems/rtems-bsd-allocator-domain-size.c',
    12611271              'rtemsbsd/rtems/rtems-bsd-arp-processor.c',
  • rtemsbsd/include/machine/ofw_machdep.h

    rf0dd0c5 rc1205ee  
    3333#define _MACHINE_OFW_MACHDEP_H_
    3434
     35#include <sys/types.h>
     36#include <sys/bus.h>
     37#include <sys/rman.h>
     38#include <vm/vm.h>
     39
    3540typedef uint32_t        cell_t;
    3641
     42struct mem_region {
     43        uint64_t        mr_start;
     44        uint64_t        mr_size;
     45};
     46
    3747#endif /* _MACHINE_OFW_MACHDEP_H_ */
  • rtemsbsd/include/rtems/bsd/local/opt_platform.h

    rf0dd0c5 rc1205ee  
     1#include <bsp/fdt.h>
     2#ifdef BSP_FDT_IS_SUPPORTED
     3#define FDT 1
     4#endif
  • rtemsbsd/rtems/rtems-kernel-nexus.c

    rf0dd0c5 rc1205ee  
    88
    99/*
    10  * Copyright (c) 2009-2015 embedded brains GmbH.  All rights reserved.
     10 * Copyright (c) 2009, 2017 embedded brains GmbH.  All rights reserved.
    1111 *
    1212 *  embedded brains GmbH
     
    5151#include <machine/bus.h>
    5252
     53#include <rtems/bsd/local/opt_platform.h>
     54
     55#ifdef FDT
     56#include <dev/ofw/ofw_bus.h>
     57#endif
     58
    5359#include <rtems/bsd/bsd.h>
    5460#include <rtems/irq-extension.h>
    5561
    5662/* #define DISABLE_INTERRUPT_EXTENSION */
     63
     64#if defined(__i386__) || defined(FDT)
     65#define ENABLE_RESOURCE_ACTIVATE_DEACTIVATE
     66#endif
    5767
    5868RTEMS_BSD_DECLARE_SET(nexus, rtems_bsd_device);
     
    206216}
    207217
    208 #ifdef __i386__
     218#ifdef ENABLE_RESOURCE_ACTIVATE_DEACTIVATE
    209219static int
    210220nexus_activate_resource(device_t bus, device_t child, int type, int rid,
    211221    struct resource *res)
    212222{
     223
    213224        switch (type) {
     225#ifdef __i386__
    214226        case SYS_RES_IOPORT:
    215227                rman_set_bustag(res, X86_BUS_SPACE_IO);
    216228                break;
     229#endif
    217230        case SYS_RES_MEMORY:
     231#ifdef __i386__
    218232                rman_set_bustag(res, X86_BUS_SPACE_MEM);
     233#else
     234                rman_set_bushandle(res, rman_get_start(res));
     235#endif
    219236                break;
    220237        }
     
    330347        return (err);
    331348}
     349
     350#ifdef FDT
     351static int
     352nexus_ofw_map_intr(device_t dev, device_t child, phandle_t iparent, int icells,
     353    pcell_t *intr)
     354{
     355
     356        return ((int)bsp_fdt_map_intr(intr[0]));
     357}
     358#endif /* FDT */
    332359
    333360static device_method_t nexus_methods[] = {
     
    345372        DEVMETHOD(bus_alloc_resource, nexus_alloc_resource),
    346373        DEVMETHOD(bus_release_resource, nexus_release_resource),
    347 #ifdef __i386__
     374#ifdef ENABLE_RESOURCE_ACTIVATE_DEACTIVATE
    348375        DEVMETHOD(bus_activate_resource, nexus_activate_resource),
    349376        DEVMETHOD(bus_deactivate_resource, nexus_deactivate_resource),
     
    351378        DEVMETHOD(bus_setup_intr, nexus_setup_intr),
    352379        DEVMETHOD(bus_teardown_intr, nexus_teardown_intr),
     380
     381#ifdef FDT
     382        /* OFW interface */
     383        DEVMETHOD(ofw_bus_map_intr, nexus_ofw_map_intr),
     384#endif
    353385
    354386        { 0, 0 }
Note: See TracChangeset for help on using the changeset viewer.