<div dir="ltr"><div dir="ltr"><br><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Jun 19, 2019 at 9:14 PM Christian Mauderer <<a href="mailto:list@c-mauderer.de">list@c-mauderer.de</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Bit less adaptions than I thought that you have in the code. I assumed<br>
that I would see some more locations in that patch where you already<br>
removed code blocks with ifdef __rtems__. I wanted to have a look<br>
especially at these parts. I expect that you will have some problems<br>
with memories (like allocating or copying from/to I/O memory or some DMA<br>
stuff). Please try to be really careful with that stuff. A lot of the<br>
RTEMS implementations are quite a bit simplified or there have been<br>
hacks during porting such parts.<br>
<br></blockquote><div>There were some other files where I needed to do many adaptations but </div><div>I have removed them for now to reduce the number of errors I'm getting,</div><div>I'll incrementally add them only on top of working patches. </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
For example sometimes you can replace some FreeBSD I/O memory operations<br>
by just plain memory accesses. But sometimes (like for DMA) it is<br>
necessary to think about them and add cache handling.<br>
<br></blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 18/06/2019 21:53, Vijay Kumar Banerjee wrote:<br>
> ---<br>
> Makefile.todo | 41 +++++++<br>
> buildset/default.ini | 2 +<br>
> libbsd.py | 100 ++++++++++++++++++<br>
> rtemsbsd/include/bsp/nexus-devices.h | 13 ++-<br>
> .../machine/rtems-bsd-kernel-namespace.h | 89 ++++++++++++++++<br>
> rtemsbsd/include/rtems/bsd/local/clknode_if.h | 92 ++++++++++++++++<br>
> rtemsbsd/include/rtems/bsd/local/fb_if.h | 45 ++++++++<br>
> rtemsbsd/include/rtems/bsd/local/hdmi_if.h | 71 +++++++++++++<br>
> rtemsbsd/local/clknode_if.c | 40 +++++++<br>
> rtemsbsd/local/fb_if.c | 30 ++++++<br>
> rtemsbsd/local/hdmi_if.c | 35 ++++++<br>
> rtemsbsd/sys/dev/iicbus/rtems-i2c.c | 4 +-<br>
> 12 files changed, 557 insertions(+), 5 deletions(-)<br>
> create mode 100644 rtemsbsd/include/rtems/bsd/local/clknode_if.h<br>
> create mode 100644 rtemsbsd/include/rtems/bsd/local/fb_if.h<br>
> create mode 100644 rtemsbsd/include/rtems/bsd/local/hdmi_if.h<br>
> create mode 100644 rtemsbsd/local/clknode_if.c<br>
> create mode 100644 rtemsbsd/local/fb_if.c<br>
> create mode 100644 rtemsbsd/local/hdmi_if.c<br>
> <br>
> diff --git a/Makefile.todo b/Makefile.todo<br>
> index 74188531..910f8c95 100644<br>
> --- a/Makefile.todo<br>
> +++ b/Makefile.todo<br>
> @@ -45,6 +45,14 @@ GENERATED += $(LOCAL_INC)/sdhci_if.h<br>
> GENERATED += $(LOCAL_SRC)/sdhci_if.c<br>
> GENERATED += $(LOCAL_INC)/gpiobus_if.h<br>
> GENERATED += $(LOCAL_SRC)/gpiobus_if.c<br>
> +GENERATED += $(LOCAL_INC)/iicbus_if.h<br>
> +GENERATED += $(LOCAL_SRC)/iicbus_if.c<br>
> +GENERATED += $(LOCAL_INC)/clknode_if.h<br>
> +GENERATED += $(LOCAL_SRC)/clknode_if.c<br>
> +GENERATED += $(LOCAL_INC)/hdmi_if.h<br>
> +GENERATED += $(LOCAL_SRC)/hdmi_if.c<br>
> +GENERATED += $(LOCAL_INC)/fb_if.h<br>
> +GENERATED += $(LOCAL_SRC)/fb_if.c<br>
> GENERATED += rtemsbsd/include/machine/rtems-bsd-regdomain.h<br>
> GENERATED += rtemsbsd/rtems/rtems-bsd-regdomain.c<br>
> <br>
> @@ -226,6 +234,39 @@ $(LOCAL_SRC)/iicbus_if.c: $(FREEBSD_SRC)/sys/dev/iicbus/iicbus_if.m<br>
> -e 's|#include "iicbus_if.h"|#include <rtems/bsd/local/iicbus_if.h>|'<br>
> mv iicbus_if.c $@<br>
> <br>
> +$(LOCAL_INC)/clknode_if.h: $(FREEBSD_SRC)/sys/dev/extres/clk/clknode_if.m<br>
> + awk -f $(TOOLS)/makeobjops.awk $< -h<br>
> + mv clknode_if.h $@<br>
> +<br>
> +$(LOCAL_SRC)/clknode_if.c: $(FREEBSD_SRC)/sys/dev/extres/clk/clknode_if.m<br>
> + awk -f $(TOOLS)/makeobjops.awk $< -c<br>
> + sed -i clknode_if.c \<br>
> + -e '1 i\#include <machine/rtems-bsd-kernel-space.h>\n' \<br>
> + -e 's|#include "clknode_if.h"|#include <rtems/bsd/local/clknode_if.h>|'<br>
> + mv clknode_if.c $@<br>
> +<br>
> +$(LOCAL_INC)/hdmi_if.h: $(FREEBSD_SRC)/sys/dev/hdmi/hdmi_if.m<br>
> + awk -f $(TOOLS)/makeobjops.awk $< -h<br>
> + mv hdmi_if.h $@<br>
> +<br>
> +$(LOCAL_SRC)/hdmi_if.c: $(FREEBSD_SRC)/sys/dev/hdmi/hdmi_if.m<br>
> + awk -f $(TOOLS)/makeobjops.awk $< -c<br>
> + sed -i hdmi_if.c \<br>
> + -e '1 i\#include <machine/rtems-bsd-kernel-space.h>\n' \<br>
> + -e 's|#include "hdmi_if.h"|#include <rtems/bsd/local/hdmi_if.h>|'<br>
> + mv hdmi_if.c $@<br>
> +<br>
> +$(LOCAL_INC)/fb_if.h: $(FREEBSD_SRC)/sys/dev/fb/fb_if.m<br>
> + awk -f $(TOOLS)/makeobjops.awk $< -h<br>
> + mv fb_if.h $@<br>
> +<br>
> +$(LOCAL_SRC)/fb_if.c: $(FREEBSD_SRC)/sys/dev/fb/fb_if.m<br>
> + awk -f $(TOOLS)/makeobjops.awk $< -c<br>
> + sed -i fb_if.c \<br>
> + -e '1 i\#include <machine/rtems-bsd-kernel-space.h>\n' \<br>
> + -e 's|#include "fb_if.h"|#include <rtems/bsd/local/fb_if.h>|'<br>
> + mv fb_if.c $@<br>
> +<br>
> $(LOCAL_INC)/sdhci_if.h: $(FREEBSD_SRC)/sys/dev/sdhci/sdhci_if.m<br>
> awk -f $(TOOLS)/makeobjops.awk $< -h<br>
> mv sdhci_if.h $@<br>
> diff --git a/buildset/default.ini b/buildset/default.ini<br>
> index 4acb2368..b2ae6f32 100644<br>
> --- a/buildset/default.ini<br>
> +++ b/buildset/default.ini<br>
> @@ -37,6 +37,8 @@ dev_usb_storage = on<br>
> dev_usb_wlan = off<br>
> dev_wlan_rtwn = off<br>
> iic = on<br>
> +tda = on<br>
> +fb_ti = on<br>
> dhcpcd = on<br>
> dpaa = on<br>
> evdev = on<br>
> diff --git a/libbsd.py b/libbsd.py<br>
> index 12d4c2ed..fab7a05d 100644<br>
> --- a/libbsd.py<br>
> +++ b/libbsd.py<br>
> @@ -758,6 +758,7 @@ class iic(builder.Module):<br>
> 'sys/dev/iicbus/iicbus.h',<br>
> 'sys/dev/iicbus/iic.h',<br>
> 'sys/dev/iicbus/iiconf.h',<br>
> + 'sys/arm/ti/ti_i2c.h',<br>
> ]<br>
> )<br>
> self.addKernelSpaceSourceFiles(<br>
> @@ -766,6 +767,7 @@ class iic(builder.Module):<br>
> 'sys/dev/iicbus/iicbus.c',<br>
> 'sys/dev/iicbus/iiconf.c',<br>
> 'sys/dev/iicbus/ofw_iicbus.c',<br>
> + 'sys/arm/ti/ti_i2c.c',<br>
> ],<br>
> mm.generator['source']()<br>
> )<br>
> @@ -777,6 +779,102 @@ class iic(builder.Module):<br>
> mm.generator['source']()<br>
> )<br>
> <br>
> +#<br>
> +# TDA<br>
> +#<br>
> +class tda(builder.Module):<br>
<br>
Small problem: Naming. Your module does a lot more than just importing<br>
the TDA driver. You have EDID, Vesa and some other HDMI specific stuff.<br>
So maybe `display` or `monitor` would be a better description.<br>
<br></blockquote><div>OK. Will change that. </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
> +<br>
> + def __init__(self, manager):<br>
> + super(tda, self).__init__(manager, type(self).__name__)<br>
> +<br>
> + def generate(self):<br>
> + mm = self.manager<br>
> + self.addKernelSpaceHeaderFiles(<br>
> + [<br>
> + 'sys/dev/extres/clk/clk.h',<br>
> + 'sys/dev/hdmi/dwc_hdmi.h',<br>
> + 'sys/dev/hdmi/dwc_hdmireg.h',<br>
> + 'sys/dev/videomode/videomode.h',<br>
> + 'sys/dev/videomode/edidvar.h',<br>
> + 'sys/dev/videomode/edidreg.h',<br>
> + 'sys/dev/videomode/ediddevs.h',<br>
> + 'sys/dev/videomode/ediddevs_data.h',<br>
> + 'sys/dev/videomode/vesagtf.h',<br>
> + ]<br>
> + )<br>
> + self.addKernelSpaceSourceFiles(<br>
> + [<br>
> + 'sys/arm/ti/am335x/tda19988.c',<br>
> + 'sys/dev/hdmi/dwc_hdmi.c',<br>
> + 'sys/dev/hdmi/dwc_hdmi_fdt.c',<br>
> + 'sys/dev/extres/clk/clk.c',<br>
> + 'sys/dev/videomode/pickmode.c',<br>
> + 'sys/dev/videomode/edid.c',<br>
> + 'sys/dev/videomode/vesagtf.c',<br>
> + 'sys/dev/videomode/videomode.c',<br>
> + ],<br>
> + mm.generator['source']()<br>
> + )<br>
> + self.addRTEMSSourceFiles(<br>
> + [<br>
> + 'local/clknode_if.c',<br>
> + 'local/hdmi_if.c',<br>
> + ],<br>
> + mm.generator['source']()<br>
> + )<br>
> +<br>
> +#<br>
> +# FB_TI<br>
> +#<br>
> +class fb_ti(builder.Module):<br>
<br>
Do you see an application where you can use this driver independent of<br>
the TDA module? Otherwise I would suggest merging them into one.<br>
<br></blockquote><div>OK. will merge them into one. </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Note that most of the time adding drivers isn't problematic. They are<br>
linked in only if the application requests them (or if they are<br>
referenced via nexus-devices.h). So no problem with a bigger group here.<br>
<br></blockquote><div>OK. </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
> +<br>
> + def __init__(self, manager):<br>
> + super(fb_ti, self).__init__(manager, type(self).__name__)<br>
> +<br>
> + def generate(self):<br>
> + mm = self.manager<br>
> + self.addKernelSpaceHeaderFiles(<br>
> + [<br>
> + 'sys/sys/fbio.h',<br>
> + 'sys/sys/power.h',<br>
> + 'sys/sys/_eventhandler.h',<br>
> + 'sys/sys/consio.h',<br>
> + 'sys/sys/terminal.h',<br>
> + 'sys/dev/fb/fbreg.h',<br>
> + 'sys/dev/syscons/syscons.h',<br>
> + 'sys/dev/vt/vt.h',<br>
> + 'sys/arm/ti/am335x/am335x_lcd.h',<br>
> + 'sys/arm/ti/am335x/am335x_pwm.h',<br>
> + 'sys/dev/vt/hw/fb/vt_fb.h',<br>
> + 'sys/arm/include/pmap.h',<br>
> + 'sys/arm/include/vm.h',<br>
> + 'sys/vm/vm.h',<br>
> + 'sys/vm/pmap.h',<br>
> + 'sys/dev/vt/colors/vt_termcolors.h',<br>
> + 'sys/teken/teken.h',<br>
> + 'sys/arm/include/bus.h',<br>
> + ]<br>
> + )<br>
> + self.addKernelSpaceSourceFiles(<br>
> + [<br>
> + 'sys/dev/fb/fb.c',<br>
> + 'sys/arm/ti/am335x/am335x_lcd.c',<br>
> + 'sys/arm/ti/am335x/am335x_lcd_syscons.c',<br>
> + 'sys/arm/ti/am335x/am335x_pwmss.c',<br>
> + 'sys/arm/ti/am335x/am335x_ecap.c',<br>
> + 'sys/dev/fb/fbd.c',<br>
> + 'sys/dev/vt/hw/fb/vt_fb.c',<br>
> + 'sys/dev/vt/hw/fb/vt_early_fb.c',<br>
> + ],<br>
> + mm.generator['source']()<br>
> + )<br>
> + self.addRTEMSSourceFiles(<br>
> + [<br>
> + 'local/fb_if.c',<br>
> + ],<br>
> + mm.generator['source']()<br>
> + )<br>
> +<br>
> #<br>
> # USB<br>
> #<br>
> @@ -5134,6 +5232,8 @@ def load(mm):<br>
> mm.addModule(dev_input(mm))<br>
> mm.addModule(evdev(mm))<br>
> mm.addModule(iic(mm))<br>
> + mm.addModule(tda(mm))<br>
> + mm.addModule(fb_ti(mm))<br>
> <br>
> mm.addModule(dev_usb(mm))<br>
> mm.addModule(dev_usb_controller(mm))<br>
> diff --git a/rtemsbsd/include/bsp/nexus-devices.h b/rtemsbsd/include/bsp/nexus-devices.h<br>
> index 97f6d2b2..27f42f38 100644<br>
> --- a/rtemsbsd/include/bsp/nexus-devices.h<br>
> +++ b/rtemsbsd/include/bsp/nexus-devices.h<br>
> @@ -61,10 +61,17 @@ SYSINIT_DRIVER_REFERENCE(sdhci_ti, simplebus);<br>
> SYSINIT_DRIVER_REFERENCE(mmcsd, mmc);<br>
> SYSINIT_DRIVER_REFERENCE(cpsw, cpswss);<br>
> SYSINIT_DRIVER_REFERENCE(ukphy, miibus);<br>
> -SYSINIT_DRIVER_REFERENCE(rtems_i2c, simplebus);<br>
> -SYSINIT_DRIVER_REFERENCE(ofw_iicbus, rtems_i2c);<br>
> +SYSINIT_DRIVER_REFERENCE(am335x_lcd, simplebus);<br>
> +SYSINIT_DRIVER_REFERENCE(am335x_pwmss, simplebus);<br>
<br>
Where is the PWM module used? To generate some clock?<br>
<br></blockquote><div>The am335x_lcd driver seems to be using it. </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
> +SYSINIT_DRIVER_REFERENCE(ti_iic, simplebus);<br>
> +SYSINIT_DRIVER_REFERENCE(iicbus, ti_iic);<br>
> +SYSINIT_DRIVER_REFERENCE(ofw_iicbus, ti_iic);<br>
> +//SYSINIT_DRIVER_REFERENCE(rtems_i2c, simplebus);<br>
> +//SYSINIT_DRIVER_REFERENCE(ofw_iicbus, rtems_i2c);<br>
> +//SYSINIT_DRIVER_REFERENCE(iicbus, rtems_i2c);<br>
> +SYSINIT_DRIVER_REFERENCE(fbd, am335x_lcd);<br>
> +SYSINIT_DRIVER_REFERENCE(tda, iicbus);<br>
> SYSINIT_DRIVER_REFERENCE(iic, iicbus);<br>
> -SYSINIT_DRIVER_REFERENCE(iicbus, rtems_i2c);<br>
> #ifdef RTEMS_BSD_MODULE_NET80211<br>
> SYSINIT_DRIVER_REFERENCE(rtwn_usb, uhub);<br>
> SYSINIT_MODULE_REFERENCE(wlan_ratectl_none);<br>
> diff --git a/rtemsbsd/include/machine/rtems-bsd-kernel-namespace.h b/rtemsbsd/include/machine/rtems-bsd-kernel-namespace.h<br>
> index 235c9886..45c9f31a 100644<br>
> --- a/rtemsbsd/include/machine/rtems-bsd-kernel-namespace.h<br>
> +++ b/rtemsbsd/include/machine/rtems-bsd-kernel-namespace.h<br>
> @@ -46,6 +46,10 @@<br>
> #define altq_remove _bsd_altq_remove<br>
> #define altq_remove_queue _bsd_altq_remove_queue<br>
> #define altqs_inactive_open _bsd_altqs_inactive_open<br>
> +#define am335x_dummysw _bsd_am335x_dummysw<br>
> +#define am335x_lcd_syscons_setup _bsd_am335x_lcd_syscons_setup<br>
> +#define am335x_pwm_config_ecap _bsd_am335x_pwm_config_ecap<br>
> +#define am335x_pwmss_driver _bsd_am335x_pwmss_driver<br>
> #define arp_announce_ifaddr _bsd_arp_announce_ifaddr<br>
> #define arp_ifinit _bsd_arp_ifinit<br>
> #define arprequest _bsd_arprequest<br>
> @@ -563,7 +567,53 @@<br>
> #define clean_unrhdrl _bsd_clean_unrhdrl<br>
> #define ClearCheckNewLink _bsd_ClearCheckNewLink<br>
> #define clear_unrhdr _bsd_clear_unrhdr<br>
> +#define clk_disable _bsd_clk_disable<br>
> +#define clkdom_create _bsd_clkdom_create<br>
> +#define clkdom_dump _bsd_clkdom_dump<br>
> +#define clkdom_finit _bsd_clkdom_finit<br>
> +#define clkdom_get_by_dev _bsd_clkdom_get_by_dev<br>
> +#define clkdom_set_ofw_mapper _bsd_clkdom_set_ofw_mapper<br>
> +#define clkdom_unlock _bsd_clkdom_unlock<br>
> +#define clkdom_xlock _bsd_clkdom_xlock<br>
> +#define clk_enable _bsd_clk_enable<br>
> +#define clk_get_by_id _bsd_clk_get_by_id<br>
> +#define clk_get_by_name _bsd_clk_get_by_name<br>
> +#define clk_get_by_ofw_index _bsd_clk_get_by_ofw_index<br>
> +#define clk_get_by_ofw_index_prop _bsd_clk_get_by_ofw_index_prop<br>
> +#define clk_get_by_ofw_name _bsd_clk_get_by_ofw_name<br>
> +#define clk_get_freq _bsd_clk_get_freq<br>
> +#define clk_get_name _bsd_clk_get_name<br>
> +#define clk_get_parent _bsd_clk_get_parent<br>
> #define clk_intr_event _bsd_clk_intr_event<br>
> +#define clknode_class _bsd_clknode_class<br>
> +#define clknode_create _bsd_clknode_create<br>
> +#define clknode_disable _bsd_clknode_disable<br>
> +#define clknode_enable _bsd_clknode_enable<br>
> +#define clknode_find_by_id _bsd_clknode_find_by_id<br>
> +#define clknode_find_by_name _bsd_clknode_find_by_name<br>
> +#define clknode_get_device _bsd_clknode_get_device<br>
> +#define clknode_get_flags _bsd_clknode_get_flags<br>
> +#define clknode_get_freq _bsd_clknode_get_freq<br>
> +#define clknode_get_name _bsd_clknode_get_name<br>
> +#define clknode_get_parent _bsd_clknode_get_parent<br>
> +#define clknode_get_parent_idx _bsd_clknode_get_parent_idx<br>
> +#define clknode_get_parent_names _bsd_clknode_get_parent_names<br>
> +#define clknode_get_parents_num _bsd_clknode_get_parents_num<br>
> +#define clknode_get_softc _bsd_clknode_get_softc<br>
> +#define clknode_init_parent_idx _bsd_clknode_init_parent_idx<br>
> +#define clknode_register _bsd_clknode_register<br>
> +#define clknode_set_freq _bsd_clknode_set_freq<br>
> +#define clknode_set_parent_by_idx _bsd_clknode_set_parent_by_idx<br>
> +#define clknode_set_parent_by_name _bsd_clknode_set_parent_by_name<br>
> +#define clknode_stop _bsd_clknode_stop<br>
> +#define clk_parse_ofw_clk_name _bsd_clk_parse_ofw_clk_name<br>
> +#define clk_parse_ofw_out_names _bsd_clk_parse_ofw_out_names<br>
> +#define clk_release _bsd_clk_release<br>
> +#define clk_set_assigned _bsd_clk_set_assigned<br>
> +#define clk_set_freq _bsd_clk_set_freq<br>
> +#define clk_set_parent_by_clk _bsd_clk_set_parent_by_clk<br>
> +#define clk_stop _bsd_clk_stop<br>
> +#define clk_test_freq _bsd_clk_test_freq<br>
> #define comp_algo_deflate _bsd_comp_algo_deflate<br>
> #define comp_algorithm_lookup _bsd_comp_algorithm_lookup<br>
> #define config_intrhook_disestablish _bsd_config_intrhook_disestablish<br>
> @@ -775,6 +825,9 @@<br>
> #define drbr_needs_enqueue_drv _bsd_drbr_needs_enqueue_drv<br>
> #define driver_module_handler _bsd_driver_module_handler<br>
> #define dwc_driver _bsd_dwc_driver<br>
> +#define dwc_hdmi_get_edid _bsd_dwc_hdmi_get_edid<br>
> +#define dwc_hdmi_init _bsd_dwc_hdmi_init<br>
> +#define dwc_hdmi_set_videomode _bsd_dwc_hdmi_set_videomode<br>
> #define dwc_otg_attach _bsd_dwc_otg_attach<br>
> #define dwc_otg_detach _bsd_dwc_otg_detach<br>
> #define dwc_otg_driver _bsd_dwc_otg_driver<br>
> @@ -1087,6 +1140,13 @@<br>
> #define e1000_write_vfta_generic _bsd_e1000_write_vfta_generic<br>
> #define e1000_write_vfta_i350 _bsd_e1000_write_vfta_i350<br>
> #define e1000_write_xmdio_reg _bsd_e1000_write_xmdio_reg<br>
> +#define edid_is_valid _bsd_edid_is_valid<br>
> +#define edid_nproducts _bsd_edid_nproducts<br>
> +#define edid_nvendors _bsd_edid_nvendors<br>
> +#define edid_parse _bsd_edid_parse<br>
> +#define edid_print _bsd_edid_print<br>
> +#define edid_products _bsd_edid_products<br>
> +#define edid_vendors _bsd_edid_vendors<br>
> #define ehci_detach _bsd_ehci_detach<br>
> #define ehci_get_port_speed_hostc _bsd_ehci_get_port_speed_hostc<br>
> #define ehci_get_port_speed_portsc _bsd_ehci_get_port_speed_portsc<br>
> @@ -1208,6 +1268,16 @@<br>
> #define eventhandler_find_list _bsd_eventhandler_find_list<br>
> #define eventhandler_prune_list _bsd_eventhandler_prune_list<br>
> #define eventhandler_register _bsd_eventhandler_register<br>
> +#define fb_commonioctl _bsd_fb_commonioctl<br>
> +#define fbd_devclass _bsd_fbd_devclass<br>
> +#define fbd_driver _bsd_fbd_driver<br>
> +#define fbd_list _bsd_fbd_list<br>
> +#define fbd_register _bsd_fbd_register<br>
> +#define fb_dump_adp_info _bsd_fb_dump_adp_info<br>
> +#define fb_dump_mode_info _bsd_fb_dump_mode_info<br>
> +#define fbd_unregister _bsd_fbd_unregister<br>
> +#define fb_list_head _bsd_fb_list_head<br>
> +#define fb_type _bsd_fb_type<br>
> #define fdt_addrsize_cells _bsd_fdt_addrsize_cells<br>
> #define fdt_data_get _bsd_fdt_data_get<br>
> #define fdt_data_to_res _bsd_fdt_data_to_res<br>
> @@ -2732,6 +2802,7 @@<br>
> #define m_checkalignment _bsd_m_checkalignment<br>
> #define m_clget _bsd_m_clget<br>
> #define m_cljget _bsd_m_cljget<br>
> +#define M_CLOCK _bsd_M_CLOCK<br>
> #define m_collapse _bsd_m_collapse<br>
> #define m_copyback _bsd_m_copyback<br>
> #define m_copydata _bsd_m_copydata<br>
> @@ -3442,6 +3513,8 @@<br>
> #define pgsigio _bsd_pgsigio<br>
> #define phashinit _bsd_phashinit<br>
> #define phashinit_flags _bsd_phashinit_flags<br>
> +#define pick_mode_by_dotclock _bsd_pick_mode_by_dotclock<br>
> +#define pick_mode_by_ref _bsd_pick_mode_by_ref<br>
> #define pipe_dtor _bsd_pipe_dtor<br>
> #define pipe_named_ctor _bsd_pipe_named_ctor<br>
> #define pipeselwakeup _bsd_pipeselwakeup<br>
> @@ -4614,6 +4687,7 @@<br>
> #define soreceive_generic _bsd_soreceive_generic<br>
> #define soreserve _bsd_soreserve<br>
> #define sorflush _bsd_sorflush<br>
> +#define sort_modes _bsd_sort_modes<br>
> #define sosend _bsd_sosend<br>
> #define sosend_dgram _bsd_sosend_dgram<br>
> #define sosend_generic _bsd_sosend_generic<br>
> @@ -4722,6 +4796,7 @@<br>
> #define sysctl_handle_uma_zone_max _bsd_sysctl_handle_uma_zone_max<br>
> #define sysctl___hw _bsd_sysctl___hw<br>
> #define sysctl___hw_bus _bsd_sysctl___hw_bus<br>
> +#define sysctl___hw_clock _bsd_sysctl___hw_clock<br>
> #define sysctl___hw_fdt _bsd_sysctl___hw_fdt<br>
> #define sysctl___hw_pci _bsd_sysctl___hw_pci<br>
> #define sysctl___hw_sdhci _bsd_sysctl___hw_sdhci<br>
> @@ -5450,6 +5525,20 @@<br>
> #define uuid_ether_add _bsd_uuid_ether_add<br>
> #define uuid_ether_del _bsd_uuid_ether_del<br>
> #define vht80_chan_ranges _bsd_vht80_chan_ranges<br>
> +#define vesagtf_mode _bsd_vesagtf_mode<br>
> +#define vesagtf_mode_params _bsd_vesagtf_mode_params<br>
> +#define vid_allocate _bsd_vid_allocate<br>
> +#define vid_configure _bsd_vid_configure<br>
> +#define videomode_count _bsd_videomode_count<br>
> +#define videomode_list _bsd_videomode_list<br>
> +#define vid_find_adapter _bsd_vid_find_adapter<br>
> +#define vid_get_adapter _bsd_vid_get_adapter<br>
> +#define vid_get_switch _bsd_vid_get_switch<br>
> +#define vid_init_struct _bsd_vid_init_struct<br>
> +#define vid_register _bsd_vid_register<br>
> +#define vid_release _bsd_vid_release<br>
> +#define vidsw _bsd_vidsw<br>
> +#define vid_unregister _bsd_vid_unregister<br>
> #define vlan_cookie_p _bsd_vlan_cookie_p<br>
> #define vlan_devat_p _bsd_vlan_devat_p<br>
> #define vlan_input_p _bsd_vlan_input_p<br>
> diff --git a/rtemsbsd/include/rtems/bsd/local/clknode_if.h b/rtemsbsd/include/rtems/bsd/local/clknode_if.h<br>
> new file mode 100644<br>
> index 00000000..97f4c956<br>
> --- /dev/null<br>
> +++ b/rtemsbsd/include/rtems/bsd/local/clknode_if.h<br>
> @@ -0,0 +1,92 @@<br>
> +/*<br>
> + * This file is @generated automatically.<br>
> + * Do not modify anything in here by hand.<br>
> + *<br>
> + * Created from source file<br>
> + * freebsd-org/sys/dev/extres/clk/clknode_if.m<br>
> + * with<br>
> + * makeobjops.awk<br>
> + *<br>
> + * See the source file for legal information<br>
> + */<br>
> +<br>
> +<br>
> +#ifndef _clknode_if_h_<br>
> +#define _clknode_if_h_<br>
> +<br>
> +<br>
> +struct clknode;<br>
> +<br>
> +/** @brief Unique descriptor for the CLKNODE_INIT() method */<br>
> +extern struct kobjop_desc clknode_init_desc;<br>
> +/** @brief A function implementing the CLKNODE_INIT() method */<br>
> +typedef int clknode_init_t(struct clknode *clk, device_t dev);<br>
> +<br>
> +static __inline int CLKNODE_INIT(struct clknode *clk, device_t dev)<br>
> +{<br>
> + kobjop_t _m;<br>
> + int rc;<br>
> + KOBJOPLOOKUP(((kobj_t)clk)->ops,clknode_init);<br>
> + rc = ((clknode_init_t *) _m)(clk, dev);<br>
> + return (rc);<br>
> +}<br>
> +<br>
> +/** @brief Unique descriptor for the CLKNODE_RECALC_FREQ() method */<br>
> +extern struct kobjop_desc clknode_recalc_freq_desc;<br>
> +/** @brief A function implementing the CLKNODE_RECALC_FREQ() method */<br>
> +typedef int clknode_recalc_freq_t(struct clknode *clk, uint64_t *freq);<br>
> +<br>
> +static __inline int CLKNODE_RECALC_FREQ(struct clknode *clk, uint64_t *freq)<br>
> +{<br>
> + kobjop_t _m;<br>
> + int rc;<br>
> + KOBJOPLOOKUP(((kobj_t)clk)->ops,clknode_recalc_freq);<br>
> + rc = ((clknode_recalc_freq_t *) _m)(clk, freq);<br>
> + return (rc);<br>
> +}<br>
> +<br>
> +/** @brief Unique descriptor for the CLKNODE_SET_FREQ() method */<br>
> +extern struct kobjop_desc clknode_set_freq_desc;<br>
> +/** @brief A function implementing the CLKNODE_SET_FREQ() method */<br>
> +typedef int clknode_set_freq_t(struct clknode *clk, uint64_t fin,<br>
> + uint64_t *fout, int flags, int *done);<br>
> +<br>
> +static __inline int CLKNODE_SET_FREQ(struct clknode *clk, uint64_t fin,<br>
> + uint64_t *fout, int flags, int *done)<br>
> +{<br>
> + kobjop_t _m;<br>
> + int rc;<br>
> + KOBJOPLOOKUP(((kobj_t)clk)->ops,clknode_set_freq);<br>
> + rc = ((clknode_set_freq_t *) _m)(clk, fin, fout, flags, done);<br>
> + return (rc);<br>
> +}<br>
> +<br>
> +/** @brief Unique descriptor for the CLKNODE_SET_GATE() method */<br>
> +extern struct kobjop_desc clknode_set_gate_desc;<br>
> +/** @brief A function implementing the CLKNODE_SET_GATE() method */<br>
> +typedef int clknode_set_gate_t(struct clknode *clk, bool enable);<br>
> +<br>
> +static __inline int CLKNODE_SET_GATE(struct clknode *clk, bool enable)<br>
> +{<br>
> + kobjop_t _m;<br>
> + int rc;<br>
> + KOBJOPLOOKUP(((kobj_t)clk)->ops,clknode_set_gate);<br>
> + rc = ((clknode_set_gate_t *) _m)(clk, enable);<br>
> + return (rc);<br>
> +}<br>
> +<br>
> +/** @brief Unique descriptor for the CLKNODE_SET_MUX() method */<br>
> +extern struct kobjop_desc clknode_set_mux_desc;<br>
> +/** @brief A function implementing the CLKNODE_SET_MUX() method */<br>
> +typedef int clknode_set_mux_t(struct clknode *clk, int idx);<br>
> +<br>
> +static __inline int CLKNODE_SET_MUX(struct clknode *clk, int idx)<br>
> +{<br>
> + kobjop_t _m;<br>
> + int rc;<br>
> + KOBJOPLOOKUP(((kobj_t)clk)->ops,clknode_set_mux);<br>
> + rc = ((clknode_set_mux_t *) _m)(clk, idx);<br>
> + return (rc);<br>
> +}<br>
> +<br>
> +#endif /* _clknode_if_h_ */<br>
> diff --git a/rtemsbsd/include/rtems/bsd/local/fb_if.h b/rtemsbsd/include/rtems/bsd/local/fb_if.h<br>
> new file mode 100644<br>
> index 00000000..7b97028f<br>
> --- /dev/null<br>
> +++ b/rtemsbsd/include/rtems/bsd/local/fb_if.h<br>
> @@ -0,0 +1,45 @@<br>
> +/*<br>
> + * This file is @generated automatically.<br>
> + * Do not modify anything in here by hand.<br>
> + *<br>
> + * Created from source file<br>
> + * freebsd-org/sys/dev/fb/fb_if.m<br>
> + * with<br>
> + * makeobjops.awk<br>
> + *<br>
> + * See the source file for legal information<br>
> + */<br>
> +<br>
> +<br>
> +#ifndef _fb_if_h_<br>
> +#define _fb_if_h_<br>
> +<br>
> +/** @brief Unique descriptor for the FB_PIN_MAX() method */<br>
> +extern struct kobjop_desc fb_pin_max_desc;<br>
> +/** @brief A function implementing the FB_PIN_MAX() method */<br>
> +typedef int fb_pin_max_t(device_t dev, int *npins);<br>
> +<br>
> +static __inline int FB_PIN_MAX(device_t dev, int *npins)<br>
> +{<br>
> + kobjop_t _m;<br>
> + int rc;<br>
> + KOBJOPLOOKUP(((kobj_t)dev)->ops,fb_pin_max);<br>
> + rc = ((fb_pin_max_t *) _m)(dev, npins);<br>
> + return (rc);<br>
> +}<br>
> +<br>
> +/** @brief Unique descriptor for the FB_GETINFO() method */<br>
> +extern struct kobjop_desc fb_getinfo_desc;<br>
> +/** @brief A function implementing the FB_GETINFO() method */<br>
> +typedef struct fb_info * fb_getinfo_t(device_t dev);<br>
> +<br>
> +static __inline struct fb_info * FB_GETINFO(device_t dev)<br>
> +{<br>
> + kobjop_t _m;<br>
> + struct fb_info * rc;<br>
> + KOBJOPLOOKUP(((kobj_t)dev)->ops,fb_getinfo);<br>
> + rc = ((fb_getinfo_t *) _m)(dev);<br>
> + return (rc);<br>
> +}<br>
> +<br>
> +#endif /* _fb_if_h_ */<br>
> diff --git a/rtemsbsd/include/rtems/bsd/local/hdmi_if.h b/rtemsbsd/include/rtems/bsd/local/hdmi_if.h<br>
> new file mode 100644<br>
> index 00000000..fc23c801<br>
> --- /dev/null<br>
> +++ b/rtemsbsd/include/rtems/bsd/local/hdmi_if.h<br>
> @@ -0,0 +1,71 @@<br>
> +/*<br>
> + * This file is @generated automatically.<br>
> + * Do not modify anything in here by hand.<br>
> + *<br>
> + * Created from source file<br>
> + * freebsd-org/sys/dev/hdmi/hdmi_if.m<br>
> + * with<br>
> + * makeobjops.awk<br>
> + *<br>
> + * See the source file for legal information<br>
> + */<br>
> +<br>
> +<br>
> +#ifndef _hdmi_if_h_<br>
> +#define _hdmi_if_h_<br>
> +<br>
> +<br>
> +#include <sys/eventhandler.h><br>
> +<br>
> +typedef void (*hdmi_event_hook)(void *, device_t, int);<br>
> +EVENTHANDLER_DECLARE(hdmi_event, hdmi_event_hook);<br>
> +<br>
> +#define HDMI_EVENT_CONNECTED 0<br>
> +<br>
> +/** @brief Unique descriptor for the HDMI_GET_EDID() method */<br>
> +extern struct kobjop_desc hdmi_get_edid_desc;<br>
> +/** @brief A function implementing the HDMI_GET_EDID() method */<br>
> +typedef int hdmi_get_edid_t(device_t dev, uint8_t **edid,<br>
> + uint32_t *edid_length);<br>
> +<br>
> +static __inline int HDMI_GET_EDID(device_t dev, uint8_t **edid,<br>
> + uint32_t *edid_length)<br>
> +{<br>
> + kobjop_t _m;<br>
> + int rc;<br>
> + KOBJOPLOOKUP(((kobj_t)dev)->ops,hdmi_get_edid);<br>
> + rc = ((hdmi_get_edid_t *) _m)(dev, edid, edid_length);<br>
> + return (rc);<br>
> +}<br>
> +<br>
> +/** @brief Unique descriptor for the HDMI_SET_VIDEOMODE() method */<br>
> +extern struct kobjop_desc hdmi_set_videomode_desc;<br>
> +/** @brief A function implementing the HDMI_SET_VIDEOMODE() method */<br>
> +typedef int hdmi_set_videomode_t(device_t dev,<br>
> + const struct videomode *videomode);<br>
> +<br>
> +static __inline int HDMI_SET_VIDEOMODE(device_t dev,<br>
> + const struct videomode *videomode)<br>
> +{<br>
> + kobjop_t _m;<br>
> + int rc;<br>
> + KOBJOPLOOKUP(((kobj_t)dev)->ops,hdmi_set_videomode);<br>
> + rc = ((hdmi_set_videomode_t *) _m)(dev, videomode);<br>
> + return (rc);<br>
> +}<br>
> +<br>
> +/** @brief Unique descriptor for the HDMI_ENABLE() method */<br>
> +extern struct kobjop_desc hdmi_enable_desc;<br>
> +/** @brief A function implementing the HDMI_ENABLE() method */<br>
> +typedef int hdmi_enable_t(device_t dev, int onoff);<br>
> +<br>
> +static __inline int HDMI_ENABLE(device_t dev, int onoff)<br>
> +{<br>
> + kobjop_t _m;<br>
> + int rc;<br>
> + KOBJOPLOOKUP(((kobj_t)dev)->ops,hdmi_enable);<br>
> + rc = ((hdmi_enable_t *) _m)(dev, onoff);<br>
> + return (rc);<br>
> +}<br>
> +<br>
> +#endif /* _hdmi_if_h_ */<br>
> diff --git a/rtemsbsd/local/clknode_if.c b/rtemsbsd/local/clknode_if.c<br>
> new file mode 100644<br>
> index 00000000..6f1c0ba3<br>
> --- /dev/null<br>
> +++ b/rtemsbsd/local/clknode_if.c<br>
> @@ -0,0 +1,40 @@<br>
> +#include <machine/rtems-bsd-kernel-space.h><br>
> +<br>
> +/*<br>
> + * This file is @generated automatically.<br>
> + * Do not modify anything in here by hand.<br>
> + *<br>
> + * Created from source file<br>
> + * freebsd-org/sys/dev/extres/clk/clknode_if.m<br>
> + * with<br>
> + * makeobjops.awk<br>
> + *<br>
> + * See the source file for legal information<br>
> + */<br>
> +<br>
> +#include <sys/param.h><br>
> +#include <sys/queue.h><br>
> +#include <sys/kernel.h><br>
> +#include <sys/kobj.h><br>
> +#include <rtems/bsd/local/clknode_if.h><br>
> +<br>
> +struct kobjop_desc clknode_init_desc = {<br>
> + 0, { &clknode_init_desc, (kobjop_t)kobj_error_method }<br>
> +};<br>
> +<br>
> +struct kobjop_desc clknode_recalc_freq_desc = {<br>
> + 0, { &clknode_recalc_freq_desc, (kobjop_t)kobj_error_method }<br>
> +};<br>
> +<br>
> +struct kobjop_desc clknode_set_freq_desc = {<br>
> + 0, { &clknode_set_freq_desc, (kobjop_t)kobj_error_method }<br>
> +};<br>
> +<br>
> +struct kobjop_desc clknode_set_gate_desc = {<br>
> + 0, { &clknode_set_gate_desc, (kobjop_t)kobj_error_method }<br>
> +};<br>
> +<br>
> +struct kobjop_desc clknode_set_mux_desc = {<br>
> + 0, { &clknode_set_mux_desc, (kobjop_t)kobj_error_method }<br>
> +};<br>
> +<br>
> diff --git a/rtemsbsd/local/fb_if.c b/rtemsbsd/local/fb_if.c<br>
> new file mode 100644<br>
> index 00000000..ceb57e4b<br>
> --- /dev/null<br>
> +++ b/rtemsbsd/local/fb_if.c<br>
> @@ -0,0 +1,30 @@<br>
> +#include <machine/rtems-bsd-kernel-space.h><br>
> +<br>
> +/*<br>
> + * This file is @generated automatically.<br>
> + * Do not modify anything in here by hand.<br>
> + *<br>
> + * Created from source file<br>
> + * freebsd-org/sys/dev/fb/fb_if.m<br>
> + * with<br>
> + * makeobjops.awk<br>
> + *<br>
> + * See the source file for legal information<br>
> + */<br>
> +<br>
> +#include <sys/param.h><br>
> +#include <sys/queue.h><br>
> +#include <sys/kernel.h><br>
> +#include <sys/kobj.h><br>
> +#include <sys/bus.h><br>
> +#include <sys/fbio.h><br>
> +#include <rtems/bsd/local/fb_if.h><br>
> +<br>
> +struct kobjop_desc fb_pin_max_desc = {<br>
> + 0, { &fb_pin_max_desc, (kobjop_t)kobj_error_method }<br>
> +};<br>
> +<br>
> +struct kobjop_desc fb_getinfo_desc = {<br>
> + 0, { &fb_getinfo_desc, (kobjop_t)kobj_error_method }<br>
> +};<br>
> +<br>
> diff --git a/rtemsbsd/local/hdmi_if.c b/rtemsbsd/local/hdmi_if.c<br>
> new file mode 100644<br>
> index 00000000..847f7d4d<br>
> --- /dev/null<br>
> +++ b/rtemsbsd/local/hdmi_if.c<br>
> @@ -0,0 +1,35 @@<br>
> +#include <machine/rtems-bsd-kernel-space.h><br>
> +<br>
> +/*<br>
> + * This file is @generated automatically.<br>
> + * Do not modify anything in here by hand.<br>
> + *<br>
> + * Created from source file<br>
> + * freebsd-org/sys/dev/hdmi/hdmi_if.m<br>
> + * with<br>
> + * makeobjops.awk<br>
> + *<br>
> + * See the source file for legal information<br>
> + */<br>
> +<br>
> +#include <sys/param.h><br>
> +#include <sys/queue.h><br>
> +#include <sys/kernel.h><br>
> +#include <sys/kobj.h><br>
> +#include <sys/bus.h><br>
> +#include <dev/videomode/videomode.h><br>
> +#include <dev/videomode/edidvar.h><br>
> +#include <rtems/bsd/local/hdmi_if.h><br>
> +<br>
> +struct kobjop_desc hdmi_get_edid_desc = {<br>
> + 0, { &hdmi_get_edid_desc, (kobjop_t)kobj_error_method }<br>
> +};<br>
> +<br>
> +struct kobjop_desc hdmi_set_videomode_desc = {<br>
> + 0, { &hdmi_set_videomode_desc, (kobjop_t)kobj_error_method }<br>
> +};<br>
> +<br>
> +struct kobjop_desc hdmi_enable_desc = {<br>
> + 0, { &hdmi_enable_desc, (kobjop_t)kobj_error_method }<br>
> +};<br>
> +<br>
> diff --git a/rtemsbsd/sys/dev/iicbus/rtems-i2c.c b/rtemsbsd/sys/dev/iicbus/rtems-i2c.c<br>
> index 61881e74..5dfd4ab8 100644<br>
> --- a/rtemsbsd/sys/dev/iicbus/rtems-i2c.c<br>
> +++ b/rtemsbsd/sys/dev/iicbus/rtems-i2c.c<br>
> @@ -211,5 +211,5 @@ static driver_t rtems_i2c_driver = {<br>
> <br>
> static devclass_t rtems_i2c_devclass;<br>
> DRIVER_MODULE(rtems_i2c, simplebus, rtems_i2c_driver, rtems_i2c_devclass, 0, 0);<br>
> -DRIVER_MODULE(iicbus, rtems_i2c, iicbus_driver, iicbus_devclass, 0, 0);<br>
> -DRIVER_MODULE(ofw_iicbus, rtems_i2c, ofw_iicbus_driver, ofw_iicbus_devclass, 0, 0);<br>
> +//DRIVER_MODULE(iicbus, rtems_i2c, iicbus_driver, iicbus_devclass, 0, 0);<br>
> +//DRIVER_MODULE(ofw_iicbus, rtems_i2c, ofw_iicbus_driver, ofw_iicbus_devclass, 0, 0);<br>
> <br>
<br>
</blockquote></div></div>