LCD4 and AUDI-02 not playing nicely together.

I have beaglebone black (running 5.10.168-ti-r83) and Audio Cape (using BB-BONE-AUDI-02-00A0) working and playing .wav files but only if LCD4 is not attached.

I have disabled what I believe needs to be enabled, but must be missing something else it should work or there is conflict between LCD4 and AUDIO cape.

My testing:

Using BBB and Audio Cape with NO LCD connected to pin headers.

  • Edit /boot/uEnv.txt
#Docs: http://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0

uname_r=5.10.168-ti-r83
#uuid=
#dtb=

###U-Boot Overlays###
###Documentation: http://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays
###Master Enable
enable_uboot_overlays=1
###
###Overide capes with eeprom
#uboot_overlay_addr0=<file0>.dtbo
#uboot_overlay_addr1=<file1>.dtbo
#uboot_overlay_addr2=<file2>.dtbo
#uboot_overlay_addr3=<file3>.dtbo
uboot_overlay_addr0=BB-I2C1-RTC-DS3231.dtbo
uboot_overlay_addr1=BB-BONE-AUDI-02-00A0.dtbo
###
###Additional custom capes
#uboot_overlay_addr4=<file4>.dtbo
#uboot_overlay_addr5=<file5>.dtbo
#uboot_overlay_addr6=<file6>.dtbo
#uboot_overlay_addr7=<file7>.dtbo
###
###Custom Cape
#dtb_overlay=<file8>.dtbo
###
###Disable auto loading of virtual capes (emmc/video/wireless/adc)
#disable_uboot_overlay_emmc=1
disable_uboot_overlay_video=1
disable_uboot_overlay_audio=1
#disable_uboot_overlay_wireless=1
#disable_uboot_overlay_adc=1
###
###Cape Universal Enable
enable_uboot_cape_universal=1
###
###Debug: disable uboot autoload of Cape
#disable_uboot_overlay_addr0=1
#disable_uboot_overlay_addr1=1
#disable_uboot_overlay_addr2=1
#disable_uboot_overlay_addr3=1
###
###U-Boot fdt tweaks... (60000 = 384KB)
#uboot_fdt_buffer=0x60000
###U-Boot Overlays###

console=ttyS0,115200n8
cmdline=coherent_pool=1M net.ifnames=0 lpj=1990656 rng_core.default_quality=100 quiet

#In the event of edid real failures, uncomment this next line:
#cmdline=coherent_pool=1M net.ifnames=0 lpj=1990656 rng_core.default_quality=100 quiet video=HDMI-A-1:1024x768@60e

#Use an overlayfs on top of a read-only root filesystem:
#cmdline=coherent_pool=1M net.ifnames=0 lpj=1990656 rng_core.default_quality=100 quiet overlayroot=tmpfs

##enable Generic eMMC Flasher:
#cmdline=init=/usr/sbin/init-beagle-flasher
  • reboot

  • view loaded overlays:

debian@BeagleBone:~$ ls /proc/device-tree/chosen/overlays
BB-ADC-00A0.kernel  BB-BONE-AUDI-02-00A0  BB-BONE-eMMC1-01-00A0.kernel  BB-BONE-BB-I2C1-RTC-DS3231.kernel  name
  • test audio and show it’s working
debian@BeagleBone:~$ sudo amixer sset 'PCM',0 100%
Simple mixer control 'PCM',0
  Capabilities: pvolume
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 127
  Mono:
  Front Left: Playback 127 [100%] [0.00dB]
  Front Right: Playback 127 [100%] [0.00dB]
debian@BeagleBone:~$ 
debian@BeagleBone:~$ sudo amixer sset 'HP DAC',0 100%
Simple mixer control 'HP DAC',0
  Capabilities: pvolume
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 118
  Mono:
  Front Left: Playback 118 [100%] [0.00dB]
  Front Right: Playback 118 [100%] [0.00dB]
debian@BeagleBone:~$ cd tmp
debian@BeagleBone:~/tmp$ aplay Flight_of_the_Bumblebee.wav 
Playing WAVE 'Flight_of_the_Bumblebee.wav' : Signed 16 bit Little Endian, Rate 11025 Hz, Stereo
  • Shutdown board, add LCD4 Cape and power back up.
  • dmesg output snippets (See errors relating to audio cape:
[    9.897857] debugfs: Directory '49000000.dma' with parent 'dmaengine' already present!
[    9.897914] edma 49000000.dma: TI EDMA DMA engine driver
[    9.941563] pinctrl-single 44e10800.pinmux: 142 pins, size 568
[    9.943161] gpio-of-helper ocp:cape-universal: Failed to get gpio property of 'P8_03'
[    9.943192] gpio-of-helper ocp:cape-universal: Failed to create gpio entry

[   10.027601] OF: graph: no port node found in /ocp/interconnect@48000000/segment@300000/target-module@e000/lcdc@0
[   10.038553] OF: graph: no port node found in /ocp/interconnect@48000000/segment@300000/target-module@e000/lcdc@0

[   45.780264] pinctrl-single 44e10800.pinmux: pin PIN102 already requested by gpio-keys; cannot claim for 48038000.mcasp
[   45.930961] pinctrl-single 44e10800.pinmux: pin-102 (48038000.mcasp) status -22
[   45.990770] tlv320aic3x-codec 2-0018: supply IOVDD not found, using dummy regulator
[   45.991198] tlv320aic3x-codec 2-0018: supply DVDD not found, using dummy regulator
-> [   46.045631] pinctrl-single 44e10800.pinmux: could not request pin 102 (PIN102) from group pinmux_bone_audio_cape_audio_pins  on device pinctrl-single
[   46.077347] tlv320aic3x-codec 2-0018: supply AVDD not found, using dummy regulator
[   46.077579] tlv320aic3x-codec 2-0018: supply DRVDD not found, using dummy regulator
[   46.077712] tlv320aic3x-codec 2-0018: Invalid supply voltage(s) AVDD: -22, DVDD: -22
[   46.243534] davinci-mcasp 48038000.mcasp: Error applying setting, reverse things back
[   46.355046] davinci-mcasp: probe of 48038000.mcasp failed with error -22
  • view overlays:
debian@BeagleBone:~$ ls /proc/device-tree/chosen/overlays
BB-ADC-00A0.kernel  BB-BONE-AUDI-02-00A0  BB-BONE-eMMC1-01-00A0.kernel  BB-BONE-LCD4-01-00A1.kernel  BB-I2C1-RTC-DS3231.kernel  name
  • Checking audio which fails
debian@BeagleBone:~$ sudo amixer sset 'PCM',0 100%
[sudo] password for debian: 
amixer: Mixer attach default error: No such file or directory
debian@BeagleBone:~$ sudo amixer sset 'HP DAC',0 100%
amixer: Mixer attach default error: No such file or directory
debian@BeagleBone:~$ aplay tmp/Flight_of_the_Bumblebee.wav 
ALSA lib confmisc.c:767:(parse_card) cannot find card '0'
ALSA lib conf.c:4745:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings
ALSA lib conf.c:4745:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
ALSA lib confmisc.c:1246:(snd_func_refer) error evaluating name
ALSA lib conf.c:4745:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5233:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM default
aplay: main:830: audio open error: No such file or directory

Obviously missing something and hoping someone can steer me in the right direction.

~Colin

probably the ā€˜button’ on the lcd4, grabbing a pin used for audio…

Regards,

(post deleted by author)

Curios how one decodes PIN102 and which pin that actually refers to. I am unable to see how PIN102 relates to pins assigned to gpis-keys in repo

(post deleted by author)

I have created a new BB-BONE-LCD4-01-00A1-NB.dts file with the gpio keys removed but don’t know how to blacklist/prevent BB-BONE-LCD4-01-00A1.kernel from being loaded.

I tried disable_uboot_overlay_addr0=BB-BONE-LCD4-01-00A1.dtbo but that didn’t work.

Just use the hard coded name.

(post deleted by author)

Crazy how there is always something new to learn - this time round it was I have been setting up overlays in /boot/uEnv.txt incorrectly all this time - or at least not understanding it.

The ā€œtrickā€ is to actually READ the comments in the file :slight_smile:

In my case I needed to create my own LCD4 overlay file, one that didn’t utilize the gpio-keys which our cape doesn’t use.

I copied across the BB-BONE-LCD4-01-00A1.dts to BB-BONE-LCD4-02-00A1.dts and using compiled the new dts file and copied to /boot/dtbs folder.

As the LCD4 cape has identifying eeprom the BB-BONE-LCD4-01-00A1 needs to be overridden with BB-BONE-LCD4-02-00A1.

Comments in dts file clearly state ###Overide capes with eeprom what I didn’t realize was the the 0,1,2,3 related to the id of the card. In the case of LCD4 Cape it is identified at address 0x57.

Check it out using sudo cat /sys/bus/i2c/devices/2-0057/eeprom | hexdump -C

So, to overide BB-BONE-LCD4-01-00A1 with BB-BONE-LCD4-02-00A1 the new file needs to be entered into corresponding ā€˜channel’ (not sure of correct terminology) which is index 3.

Entry in uEnv.txt looks like:

###Overide capes with eeprom
#uboot_overlay_addr0=<file0>.dtbo
#uboot_overlay_addr1=<file1>.dtbo
#uboot_overlay_addr2=<file2>.dtbo
#uboot_overlay_addr3=<file3>.dtbo
uboot_overlay_addr3=BB-BONE-LCD4-02-00A1.dtbo

And now I no longer have two LCD4 overlays loaded

debian@BeagleBone:/opt/source/bbb-pin-utils$ ls -l /proc/device-tree/chosen/overlays
total 0
-r--r--r-- 1 root root 25 Aug 16 13:51 BB-ADC-00A0.kernel
-r--r--r-- 1 root root 25 Aug 16 13:51 BB-BONE-AUDI-02-00A0
-r--r--r-- 1 root root 25 Aug 16 13:51 BB-BONE-eMMC1-01-00A0.kernel
-r--r--r-- 1 root root 25 Aug 16 13:51 BB-BONE-LCD4-02-00A1.kernel
-r--r--r-- 1 root root 25 Aug 16 13:51 BB-I2C1-RTC-DS3231.kernel
1 Like