element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • About Us
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Avnet Boards Forums
  • Products
  • Dev Tools
  • Avnet Boards Community
  • Avnet Boards Forums
  • More
  • Cancel
Avnet Boards Forums
Software Application Development Can't recompile the xillinux-diligent
  • Forum
  • Documents
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Avnet Boards Forums to participate - click to join for free!
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • State Not Answered
  • Replies 4 replies
  • Subscribers 329 subscribers
  • Views 426 views
  • Users 0 members are here
Related

Can't recompile the xillinux-diligent

joswa
joswa over 12 years ago

I've downloaded the kernel from https://github.com/Digilent/linux-digilent.git and try to recompile the kernel by,

> make xilinx_zynq_defconfig
> make

However, at the final stage, it reports a lot of errors in clock_divider.o and most of the errors are related to adv7511.

What's wrong with it? How should I recompile the kernel correctly? And how should I patch the kernel?

Could you show me step by step?

Thanks!

  • Sign in to reply
  • Cancel
  • Former Member
    0 Former Member over 12 years ago

    man git-apply describes how to apply patches into a git repository (which is what you already have after downloading the kernel from github).

    The patches are at /usr/src/xillinux/kernel-patches

    This will also set the .config file correctly for a "thin" kernel. So the kernel is ready for compilation immediately after applying the patches.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • joswa
    0 joswa over 12 years ago

    Actually, the error I got is listed,

    ......
      LD      vmlinux.o
      MODPOST vmlinux.o
    WARNING: modpost: Found 11 section mismatch(es).
    To see full details build your kernel with:
    'make CONFIG_DEBUG_SECTION_MISMATCH=y'
      GEN     .version
      CHK     include/generated/compile.h
      UPD     include/generated/compile.h
      CC      init/version.o
      LD      init/built-in.o
      LD      .tmp_vmlinux1
    drivers/built-in.o: In function `analog_drm_encoder_dpms':
    clk-divider.c:(.text+0x2cd68): undefined reference to `drm_detect_hdmi_monitor'
    drivers/built-in.o: In function `analog_drm_encoder_destroy':
    clk-divider.c:(.text+0x2ce6c): undefined reference to `drm_encoder_cleanup'
    drivers/built-in.o: In function `analog_drm_connector_destroy':
    clk-divider.c:(.text+0x2ce94): undefined reference to `drm_sysfs_connector_remove'
    clk-divider.c:(.text+0x2cea0): undefined reference to `drm_connector_cleanup'
    drivers/built-in.o: In function `analog_drm_connector_detect':
    clk-divider.c:(.text+0x2cee8): undefined reference to `drm_get_edid'
    drivers/built-in.o: In function `analog_drm_connector_get_modes':
    clk-divider.c:(.text+0x2cf5c): undefined reference to `drm_get_edid'
    clk-divider.c:(.text+0x2cf6c): undefined reference to `drm_mode_connector_update_edid_property'
    clk-divider.c:(.text+0x2cf7c): undefined reference to `drm_add_edid_modes'
    drivers/built-in.o: In function `analog_drm_encoder_create':
    clk-divider.c:(.text+0x2cffc): undefined reference to `drm_err'
    clk-divider.c:(.text+0x2d024): undefined reference to `drm_encoder_init'
    clk-divider.c:(.text+0x2d03c): undefined reference to `drm_i2c_encoder_init'
    clk-divider.c:(.text+0x2d05c): undefined reference to `drm_connector_init'
    clk-divider.c:(.text+0x2d068): undefined reference to `drm_sysfs_connector_add'
    clk-divider.c:(.text+0x2d080): undefined reference to `drm_mode_connector_attach_encoder'
    clk-divider.c:(.text+0x2d094): undefined reference to `drm_err'
    clk-divider.c:(.text+0x2d09c): undefined reference to `drm_sysfs_connector_remove'
    clk-divider.c:(.text+0x2d0a4): undefined reference to `drm_connector_cleanup'
    drivers/built-in.o: In function `analog_drm_crtc_destroy':
    clk-divider.c:(.text+0x2d2e0): undefined reference to `drm_crtc_cleanup'
    drivers/built-in.o: In function `analog_drm_crtc_create':
    clk-divider.c:(.text+0x2d31c): undefined reference to `drm_err'
    clk-divider.c:(.text+0x2d358): undefined reference to `drm_crtc_init'
    drivers/built-in.o: In function `analog_drm_platform_remove':
    clk-divider.c:(.text+0x2d38c): undefined reference to `drm_platform_exit'
    drivers/built-in.o: In function `analog_drm_unload':
    clk-divider.c:(.text+0x2d3ac): undefined reference to `drm_kms_helper_poll_fini'
    clk-divider.c:(.text+0x2d3b4): undefined reference to `drm_mode_config_cleanup'
    drivers/built-in.o: In function `analog_drm_load':
    clk-divider.c:(.text+0x2d438): undefined reference to `drm_mode_config_init'
    clk-divider.c:(.text+0x2d440): undefined reference to `drm_kms_helper_poll_init'
    clk-divider.c:(.text+0x2d4bc): undefined reference to `drm_err'
    clk-divider.c:(.text+0x2d4c4): undefined reference to `drm_mode_config_cleanup'
    drivers/built-in.o: In function `drm_register_work':
    clk-divider.c:(.text+0x2d53c): undefined reference to `drm_platform_init'
    drivers/built-in.o: In function `analog_drm_gem_alloc':
    clk-divider.c:(.text+0x2d64c): undefined reference to `drm_err'
    clk-divider.c:(.text+0x2d66c): undefined reference to `drm_gem_object_init'
    clk-divider.c:(.text+0x2d680): undefined reference to `drm_err'
    drivers/built-in.o: In function `analog_drm_gem_free_object':
    clk-divider.c:(.text+0x2d6dc): undefined reference to `drm_ut_debug_printk'
    clk-divider.c:(.text+0x2d6f8): undefined reference to `drm_ut_debug_printk'
    clk-divider.c:(.text+0x2d70c): undefined reference to `drm_gem_free_mmap_offset'
    clk-divider.c:(.text+0x2d714): undefined reference to `drm_gem_object_release'
    drivers/built-in.o: In function `analog_drm_gem_dumb_create':
    clk-divider.c:(.text+0x2d7a8): undefined reference to `drm_gem_handle_create'
    clk-divider.c:(.text+0x2d7b8): undefined reference to `drm_gem_object_release'
    clk-divider.c:(.text+0x2d804): undefined reference to `drm_gem_object_free'
    drivers/built-in.o: In function `analog_drm_gem_dumb_map_offset':
    clk-divider.c:(.text+0x2d84c): undefined reference to `drm_ut_debug_printk'
    clk-divider.c:(.text+0x2d864): undefined reference to `drm_gem_object_lookup'
    clk-divider.c:(.text+0x2d880): undefined reference to `drm_err'
    clk-divider.c:(.text+0x2d89c): undefined reference to `drm_gem_create_mmap_offset'
    clk-divider.c:(.text+0x2d8c0): undefined reference to `drm_ut_debug_printk'
    clk-divider.c:(.text+0x2d8e4): undefined reference to `drm_ut_debug_printk'
    clk-divider.c:(.text+0x2d910): undefined reference to `drm_gem_object_free'
    drivers/built-in.o: In function `analog_drm_gem_dumb_destroy':
    clk-divider.c:(.text+0x2da2c): undefined reference to `drm_gem_handle_delete'
    drivers/built-in.o: In function `analog_drm_gem_mmap':
    clk-divider.c:(.text+0x2da54): undefined reference to `drm_ut_debug_printk'
    clk-divider.c:(.text+0x2da60): undefined reference to `drm_gem_mmap'
    clk-divider.c:(.text+0x2da74): undefined reference to `drm_err'
    drivers/built-in.o: In function `analog_drm_fb_create_handle':
    clk-divider.c:(.text+0x2dab4): undefined reference to `drm_gem_handle_create'
    drivers/built-in.o: In function `analog_drm_fb_destroy':
    clk-divider.c:(.text+0x2db04): undefined reference to `drm_gem_object_free'
    clk-divider.c:(.text+0x2db14): undefined reference to `drm_framebuffer_cleanup'
    drivers/built-in.o: In function `analog_drm_fb_alloc':
    clk-divider.c:(.text+0x2db60): undefined reference to `drm_framebuffer_init'
    clk-divider.c:(.text+0x2db78): undefined reference to `drm_err'
    clk-divider.c:(.text+0x2db88): undefined reference to `drm_helper_mode_fill_fb_struct'
    drivers/built-in.o: In function `analog_drm_fbdev_probe':
    clk-divider.c:(.text+0x2dbec): undefined reference to `drm_ut_debug_printk'
    clk-divider.c:(.text+0x2dc18): undefined reference to `drm_ut_debug_printk'
    clk-divider.c:(.text+0x2dc40): undefined reference to `drm_mode_legacy_fb_format'
    clk-divider.c:(.text+0x2dc84): undefined reference to `drm_err'
    clk-divider.c:(.text+0x2dcb4): undefined reference to `drm_err'
    clk-divider.c:(.text+0x2dcf8): undefined reference to `drm_err'
    clk-divider.c:(.text+0x2dd0c): undefined reference to `drm_fb_helper_fill_fix'
    clk-divider.c:(.text+0x2dd20): undefined reference to `drm_fb_helper_fill_var'
    clk-divider.c:(.text+0x2dd7c): undefined reference to `drm_err'
    drivers/built-in.o: In function `analog_drm_output_poll_changed':
    clk-divider.c:(.text+0x2ddf8): undefined reference to `drm_fb_helper_hotplug_event'
    drivers/built-in.o: In function `analog_drm_fb_create':
    clk-divider.c:(.text+0x2de0c): undefined reference to `drm_gem_object_lookup'
    clk-divider.c:(.text+0x2de20): undefined reference to `drm_err'
    drivers/built-in.o: In function `analog_drm_fbdev_init':
    clk-divider.c:(.text+0x2de98): undefined reference to `drm_ut_debug_printk'
    clk-divider.c:(.text+0x2dec0): undefined reference to `drm_err'
    clk-divider.c:(.text+0x2dee4): undefined reference to `drm_fb_helper_init'
    clk-divider.c:(.text+0x2def8): undefined reference to `drm_err'
    clk-divider.c:(.text+0x2df04): undefined reference to `drm_fb_helper_single_add_all_connectors'
    clk-divider.c:(.text+0x2df18): undefined reference to `drm_err'
    clk-divider.c:(.text+0x2df20): undefined reference to `drm_fb_helper_fini'
    clk-divider.c:(.text+0x2df30): undefined reference to `drm_fb_helper_initial_config'
    drivers/built-in.o: In function `analog_drm_fbdev_fini':
    clk-divider.c:(.text+0x2dfc8): undefined reference to `drm_ut_debug_printk'
    clk-divider.c:(.text+0x2dfec): undefined reference to `drm_fb_helper_fini'
    drivers/built-in.o: In function `analog_drm_fbdev_restore_mode':
    clk-divider.c:(.text+0x2e020): undefined reference to `drm_fb_helper_restore_fbdev_mode'
    drivers/built-in.o: In function `adv7511_get_modes':
    clk-divider.c:(.text+0x2e0fc): undefined reference to `regmap_update_bits'
    clk-divider.c:(.text+0x2e114): undefined reference to `drm_do_get_edid'
    clk-divider.c:(.text+0x2e138): undefined reference to `regmap_update_bits'
    clk-divider.c:(.text+0x2e14c): undefined reference to `drm_mode_connector_update_edid_property'
    clk-divider.c:(.text+0x2e158): undefined reference to `drm_add_edid_modes'
    drivers/built-in.o: In function `adv7511_encoder_mode_set':
    clk-divider.c:(.text+0x2e210): undefined reference to `regmap_write'
    clk-divider.c:(.text+0x2e220): undefined reference to `regmap_write'
    clk-divider.c:(.text+0x2e23c): undefined reference to `regmap_write'
    clk-divider.c:(.text+0x2e254): undefined reference to `regmap_write'
    clk-divider.c:(.text+0x2e268): undefined reference to `regmap_write'
    drivers/built-in.o:clk-divider.c:(.text+0x2e278): more undefined references to `regmap_write' follow
    drivers/built-in.o: In function `adv7511_encoder_mode_set':
    clk-divider.c:(.text+0x2e2c0): undefined reference to `regmap_update_bits'
    clk-divider.c:(.text+0x2e2d4): undefined reference to `regmap_update_bits'
    drivers/built-in.o: In function `adv7511_set_config':
    clk-divider.c:(.text+0x2e30c): undefined reference to `regmap_update_bits'
    clk-divider.c:(.text+0x2e330): undefined reference to `regmap_update_bits'
    clk-divider.c:(.text+0x2e344): undefined reference to `regmap_write'
    clk-divider.c:(.text+0x2e364): undefined reference to `regmap_update_bits'
    clk-divider.c:(.text+0x2e378): undefined reference to `regmap_update_bits'
    clk-divider.c:(.text+0x2e3bc): undefined reference to `regmap_update_bits'
    clk-divider.c:(.text+0x2e3e8): undefined reference to `regmap_write'
    clk-divider.c:(.text+0x2e40c): undefined reference to `regmap_write'
    clk-divider.c:(.text+0x2e434): undefined reference to `regmap_write'
    clk-divider.c:(.text+0x2e44c): undefined reference to `regmap_update_bits'
    clk-divider.c:(.text+0x2e464): undefined reference to `regmap_update_bits'
    clk-divider.c:(.text+0x2e484): undefined reference to `regmap_write'
    drivers/built-in.o: In function `adv7511_encoder_dpms':
    clk-divider.c:(.text+0x2e4b4): undefined reference to `regmap_update_bits'
    clk-divider.c:(.text+0x2e4c8): undefined reference to `regmap_update_bits'
    clk-divider.c:(.text+0x2e4d0): undefined reference to `regcache_sync'
    clk-divider.c:(.text+0x2e4e8): undefined reference to `regmap_update_bits'
    clk-divider.c:(.text+0x2e4f0): undefined reference to `regcache_mark_dirty'
    drivers/built-in.o: In function `adv7511_hpd':
    clk-divider.c:(.text+0x2e53c): undefined reference to `regmap_read'
    clk-divider.c:(.text+0x2e564): undefined reference to `regmap_write'
    drivers/built-in.o: In function `adv7511_encoder_detect':
    clk-divider.c:(.text+0x2e588): undefined reference to `regmap_read'
    clk-divider.c:(.text+0x2e5c4): undefined reference to `regcache_mark_dirty'
    clk-divider.c:(.text+0x2e5e8): undefined reference to `regmap_update_bits'
    drivers/built-in.o: In function `adv7511_irq_handler':
    clk-divider.c:(.text+0x2e618): undefined reference to `drm_helper_hpd_irq_event'
    drivers/built-in.o: In function `adv7511_get_edid_block':
    clk-divider.c:(.text+0x2e67c): undefined reference to `regmap_read'
    clk-divider.c:(.text+0x2e698): undefined reference to `regmap_write'
    clk-divider.c:(.text+0x2e7c0): undefined reference to `regmap_write'
    drivers/built-in.o: In function `adv7511_packet_enable':
    clk-divider.c:(.text+0x2e8e0): undefined reference to `regmap_update_bits'
    clk-divider.c:(.text+0x2e8fc): undefined reference to `regmap_update_bits'
    drivers/built-in.o: In function `adv7511_packet_disable':
    clk-divider.c:(.text+0x2e92c): undefined reference to `regmap_update_bits'
    clk-divider.c:(.text+0x2e948): undefined reference to `regmap_update_bits'
    drivers/built-in.o: In function `adv7511_set_dai_fmt':
    clk-divider.c:(.text+0x2ea08): undefined reference to `regmap_update_bits'
    drivers/built-in.o:clk-divider.c:(.text+0x2ea1c): more undefined references to `regmap_update_bits' follow
    drivers/built-in.o: In function `adv7511_hw_params':
    clk-divider.c:(.text+0x2ebcc): undefined reference to `regmap_write'
    clk-divider.c:(.text+0x2ebdc): undefined reference to `regmap_write'
    clk-divider.c:(.text+0x2ebec): undefined reference to `regmap_write'
    clk-divider.c:(.text+0x2ebfc): undefined reference to `regmap_write'
    clk-divider.c:(.text+0x2ec0c): undefined reference to `regmap_write'
    drivers/built-in.o:clk-divider.c:(.text+0x2ec1c): more undefined references to `regmap_write' follow
    drivers/built-in.o: In function `adv7511_hw_params':
    clk-divider.c:(.text+0x2ec30): undefined reference to `regmap_update_bits'
    clk-divider.c:(.text+0x2ec44): undefined reference to `regmap_update_bits'
    drivers/built-in.o: In function `adv7511_set_bias_level':
    clk-divider.c:(.text+0x2ed24): undefined reference to `regmap_update_bits'
    drivers/built-in.o: In function `adv7511_probe':
    clk-divider.c:(.text+0x2ed98): undefined reference to `snd_soc_codec_set_cache_io'
    drivers/built-in.o: In function `adv7511_audio_init':
    clk-divider.c:(.text+0x2ede0): undefined reference to `snd_soc_register_codec'
    drivers/built-in.o: In function `adv7511_audio_exit':
    clk-divider.c:(.text+0x2ede8): undefined reference to `snd_soc_unregister_codec'
    drivers/built-in.o: In function `adv7511_is_interrupt_pending.constprop.2':
    clk-divider.c:(.text.unlikely+0x16c): undefined reference to `regmap_read'
    clk-divider.c:(.text.unlikely+0x184): undefined reference to `regmap_read'
    drivers/built-in.o: In function `adv7511_probe':
    clk-divider.c:(.devinit.text+0x4bc): undefined reference to `regmap_init_i2c'
    clk-divider.c:(.devinit.text+0x4d8): undefined reference to `regmap_read'
    clk-divider.c:(.devinit.text+0x4e8): undefined reference to `regmap_write'
    clk-divider.c:(.devinit.text+0x4f8): undefined reference to `regmap_write'
    clk-divider.c:(.devinit.text+0x508): undefined reference to `regmap_write'
    clk-divider.c:(.devinit.text+0x558): undefined reference to `regmap_write'
    clk-divider.c:(.devinit.text+0x5b8): undefined reference to `regmap_write'
    clk-divider.c:(.devinit.text+0x5cc): undefined reference to `regmap_update_bits'
    clk-divider.c:(.devinit.text+0x5f4): undefined reference to `regmap_exit'
    drivers/built-in.o: In function `adv7511_remove':
    clk-divider.c:(.devexit.text+0x118): undefined reference to `regmap_exit'
    drivers/built-in.o:(.rodata+0x4008): undefined reference to `drm_read'
    drivers/built-in.o:(.rodata+0x401c): undefined reference to `drm_poll'
    drivers/built-in.o:(.rodata+0x4020): undefined reference to `drm_ioctl'
    drivers/built-in.o:(.rodata+0x402c): undefined reference to `drm_open'
    drivers/built-in.o:(.rodata+0x4034): undefined reference to `drm_release'
    drivers/built-in.o:(.data+0x3d88): undefined reference to `drm_helper_connector_dpms'
    drivers/built-in.o:(.data+0x3d9c): undefined reference to `drm_helper_probe_single_connector_modes'
    drivers/built-in.o:(.data+0x3e1c): undefined reference to `drm_crtc_helper_set_config'
    drivers/built-in.o:(.data+0x3f94): undefined reference to `drm_gem_vm_open'
    drivers/built-in.o:(.data+0x3f98): undefined reference to `drm_gem_vm_close'
    drivers/built-in.o:(.data+0x3fc8): undefined reference to `drm_fb_helper_check_var'
    drivers/built-in.o:(.data+0x3fcc): undefined reference to `drm_fb_helper_set_par'
    drivers/built-in.o:(.data+0x3fd4): undefined reference to `drm_fb_helper_setcmap'
    drivers/built-in.o:(.data+0x3fd8): undefined reference to `drm_fb_helper_blank'
    drivers/built-in.o:(.data+0x3fdc): undefined reference to `drm_fb_helper_pan_display'
    drivers/built-in.o:(.data+0x3fe0): undefined reference to `sys_fillrect'
    drivers/built-in.o:(.data+0x3fe4): undefined reference to `sys_copyarea'
    drivers/built-in.o:(.data+0x3fe8): undefined reference to `sys_imageblit'
    make: *** [.tmp_vmlinux1] Error 1
    root@localhost:~/projects/linux-digilent#

    Is it because I didn't apply patches or some other things went wrong?

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Former Member
    0 Former Member over 12 years ago in reply to joswa

    It looks like clk-divider.c depends on some modules which were opted out. These things don't happen when the configuration system's dependencies are set up properly, but they do happen sometimes...

    I couldn't see anything that is related to Xillinux' patches.

    Anyhow, these things are unpleasant to track down, and there's a rather straightforward fix for it. So I can't find much point in tweaking the existing setting, rather than just applying the patches (and get the .config file along).

    Regards,
       Eli

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Former Member
    0 Former Member over 12 years ago in reply to joswa

    make XXX_defconfig should not be used when applying Xillinux' patches, because the latter take care of adding the .config file. Not the standard way to do it, but it's convenient.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube