Jump to content

How to make the whole "media support" branch a module


Go to solution Solved by Tony3,

Recommended Posts

Posted

I am trying to compile a new kernel in order to support some satellite receiver tuner (from TBS).

I did that successfully (In February 2023) on Orange Pi 5 with Linux kernel 5.10.110, but I am struggling doing it with Orange PI 5 Plus with Linux 5.10.160 (jammy).

 

Basically I would like to turn as Modules lots of CONFIG_VIDEOBUF2_*, in order to replace the modules with the ones compiled separately (that I know are working fine with my TBS USD card).

 

These are my issues:

     - I do not manage to set separately those CONFIG_VIDEOBUF2_* through the menu config.

     - Thus I tried to set the whole "multimedia support" as a module and got the error:

--------------------------------------------------

[🔨]   /usr/bin/aarch64-linux-gnu-ld: drivers/phy/rockchip/phy-rockchip-samsung-dcphy.o: in function `samsung_mipi_dcphy_power_on':
[🔨]   phy-rockchip-samsung-dcphy.c:(.text+0xe1c): undefined reference to `v4l2_subdev_call_wrappers'
[🔨]   /usr/bin/aarch64-linux-gnu-ld: drivers/phy/rockchip/phy-rockchip-samsung-dcphy.o: relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `v4l2_subdev_call_wrappers' which may bind externally can not be used when making a shared object; recompile with -fPIC
[🔨]   phy-rockchip-samsung-dcphy.c:(.text+0xe1c): dangerous relocation: unsupported relocation
[🔨]   /usr/bin/aarch64-linux-gnu-ld: phy-rockchip-samsung-dcphy.c:(.text+0xe2c): undefined reference to `v4l2_subdev_call_wrappers'
[🔨]   /usr/bin/aarch64-linux-gnu-ld: phy-rockchip-samsung-dcphy.c:(.text+0xe74): undefined reference to `v4l2_subdev_call_wrappers'
[🔨]   /usr/bin/aarch64-linux-gnu-ld: drivers/phy/rockchip/phy-rockchip-samsung-dcphy.o: relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `v4l2_subdev_call_wrappers' which may bind externally can not be used when making a shared object; recompile with -fPIC
[🔨]   phy-rockchip-samsung-dcphy.c:(.text+0xe74): dangerous relocation: unsupported relocation
[🔨]   /usr/bin/aarch64-linux-gnu-ld: phy-rockchip-samsung-dcphy.c:(.text+0xe84): undefined reference to `v4l2_subdev_call_wrappers'

-------------------------------------------------------

Any idea on how to unblock that?

 

I am compiling on native on the PI 5 Plus.

 

Thanks.

Posted (edited)

Looks like you need to set a few drivers at least to y instead of module. Something about linking static library against dynamic library.

I've made this script as executable in /usr/local/bin/findtext

#!/bin/bash
location="$1"
text="$2"
grep -rnw $location -e $text

 

Then you could search with findtext /location/of/kernel/drivers/media v4l2_subdev_call_wrappers

 

Perhaps you could find the options in the kernel config after enabling/saving?

cat saved-kernel-config | grep CONFIG_VIDEOBUF2_

 

Or with findtext without the "w"

Edited by royk
  • Solution
Posted (edited)

The solution consisted to set the parameter CONFIG_PHY_ROCKCHIP_SAMSUNG_DCPHY=m.

This eliminates the compilation error, as it makes that code a Module.

Edited by Tony3
typo

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...

Important Information

Terms of Use - Privacy Policy - Guidelines