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