Can not add codec drvier

On Version L4T 35.4.1
I add the CONFIG_SND_SOC_RT5660=m or CONFIG_SND_SOC_RT5660=y on the file tegra_defconfig
But I cant find the rt5660.ko or any other compilation result

Be careful to only change those via a config editor (which understands dependencies). Before a build I see this from the $TOP of source:

# find . -name '*rt5660*'
./sound/soc/intel/boards/kbl_rt5660.c
./sound/soc/intel/boards/ehl_rt5660.c
./sound/soc/codecs/rt5660.h
./sound/soc/codecs/rt5660.c
./include/sound/rt5660.h
./Documentation/devicetree/bindings/sound/rt5660.txt

This implies the module would likely be in:
$TOP/sound/soc/codecs/
(I’m assuming it is a CODEC; if it is an Intel chipset, then perhaps $TOP/sound/soc/intel/boards/)

But I can not find any info whlie I use the command

find kernel_out -name "*5660*"

There is not any information

I just want to add the codec driver

Did you start configuration with the target “tegra_defconfig”? When you added the CODEC configuration, did you use a configuration editor, e.g., something like the target menuconfig or nconfig?

I add config CONFIG_SND_SOC_RT5660=m in file kernel/kernel-5.10/arch/arm64/configstegra_defconfig and use the command nvbuild.sh -o kernel_out

Editing a file might be the problem. Many configuration items have dependencies, and simply editing a file would leave those out with a result of failing to build the module (or perhaps building the module, but failing to load). Even if you did not have a dependency issue, then the module might still fail to load without a matching CONFIG_LOCALVERSION.

You might find this useful:
https://forums.developer.nvidia.com/t/topic/262647/12

I will suggest to revert the change to tegra_defconfig. Set up compile to an empty outside directory with the “O=/some/where” option. Then do the following (you’d still need to use other steps for cross compile if cross compiling, I’m just shortening the commands):

  • make O=/some/where tegra_defconfig
  • make O=/some/where nconfig
    (you could use “menuconfig”, but I like nconfig since it has a symbol search)
  • Save a backup of the original tegra_defconfig.
  • Copy the “/some/where/.config” to the tegra_defconfig.

Once that is in place you’ll know that any edits via the editor properly dealt with dependencies.

If you are only building modules, then you might set up “CONFIG_LOCALVERSION=-tegra” (which changes where modules are searched for).

Then build. If the module is still not present, then there might be an actual problem.

This should not be related to dependencies, as there is a similar codec device in the default compilation option that can successfully compile, CONFIG_ SND_ SOC_ RT5640=m, I was able to successfully see rt5640. ko, I just added CONFIG_ SND_ SOC_ RT5660=m, dependencies should be the same

Additionally, my ultimate goal is to compile RT5660 into the kernel, which is CONFIG_ SND_ SOC_ RT5660=y

Did the other successful compile have any other changes? If so, they might be dependencies. I can say that using a configuration editor will guarantee dependencies are enforced and properly set up, but I can’t say for certain if that feature being enabled in some other setup implies there are no dependencies. Maybe…but I’m suggesting that until you use a proper configuration editor, we won’t know. If that’s out of the way, then we know there is some other issue.

Incidentally, when you add with “=y”, that implies you’ll need to rebuild both Image and all modules (preferably with a different CONFIG_LOCALVERSION).

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.