element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • 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 & Tria Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • About Us
  • 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
      • Japan
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Vietnam
      • 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
Raspberry Pi
  • Products
  • More
Raspberry Pi
Raspberry Pi Forum Driver fixes and updates to kernel 3.18.16 and 4.0.5
  • Blog
  • Forum
  • Documents
  • Quiz
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Raspberry Pi to participate - click to join for free!
Featured Articles
Announcing Pi
Technical Specifications
Raspberry Pi FAQs
Win a Pi
Raspberry Pi Wishlist
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • Replies 180 replies
  • Subscribers 689 subscribers
  • Views 23024 views
  • Users 0 members are here
  • raspberry_pi
  • raspeberry_pi_accessories
Related

Driver fixes and updates to kernel 3.18.16 and 4.0.5

hiassoft
hiassoft over 10 years ago

Edit: Current kernel versions and install/config instructions are also available from my webpage http://www.horus.com/~hias/cirrus-driver.html

 

During the last few weeks I fixed various issues in the Wolfson/Cirrus driver and rebased it so it works with the current RPi kernel versions (3.18.16 and 4.0.5).

 

You can download the patches from my GitHub repository. The 3.18 kernel with Cirrus drivers is in the cirrus-3.18.y branch, the 4.0 kernel with Cirrus drivers is in the cirrus-4.0.y branch. I'll rebase and update these branches from time to time so that the Cirrus driver and my changes will stay on top of the commit list.

 

If you just want to have an updated 3.18.16 kernel you can download precompiled binaries from here. Just unpack the tarball in the root directory. Before you do that it might be a good idea to update the firmware files (bootcode.bin, start*.elf and fixup*.dat in the boot directory) to the latest version.

 

Here's a list of my changes:

- Added the FLL1 setup back so that switching between 44.1kHz and 48kHz (and other sample rates) works fine.

- Don't register Arizona IRQ if it's set to 0. The Cirrus driver uses polling here and if we register an interrupt handler for irq 0 we get lots of "spurious interrupt" messages spamming dmesg in kernel 3.19 and newer. IRQ 0 is wrong anyway.

- Include DCVDD patches from the Cirrus linux-drivers repository. These patches make sure the WM8804 chip is initialized properly. Without this patch I sometimes had SPDIF audio out only on the right channel.

- Disable spidev0 in Cirrus device tree overlay. That's mainly a safety precaution so that userspace programs trying to access spi0.0 won't interfere with the WM8804 reset line. I'm not 100% sure this is needed at all, so maybe I'll remove it some time later.

 

And some important notes:

I haven't included the mmap patch, this is already supported in the upstream kernels but currently disabled by default. To enable mmap support add the following line to config.txt:

dtoverlay=i2s-mmap

 

If you compile the kernel on your own please note that the devicetree overlays have now been moved to arch/arm/boot/dts/overlays.

 

Kernel 4.0 now uses spi_bcm2835 by default (the older spi_bcm2708 module is available via a devicetree overlay) so you have to extend your /etc/modprobe.d conf file and add a pre-depend for spi_bcm2835 as well. It's safe to have both the old and the new module in here, so just use this configuration:

softdep arizona-spi pre: arizona-ldo1
softdep spi-bcm2708 pre: fixed
softdep spi-bcm2835 pre: fixed

 

so long,

 

Hias

  • Sign in to reply
  • Cancel
Parents
  • Former Member
    Former Member over 9 years ago

    I am hitting a wall with my Raspberry Pi B+ and Cirrus Audio card. I'm pretty sure the card is not recognized now and/or the driver is not even loading. It was working previously on wheezy before I switched to jessie.

     

    After downloading your precompiled kernel, I installed like so:

    pi@raspberrypi ~ $ sudo tar zxf cirrus-linux-4.1.19.tgz -C /

     

    Then I updated /boot/config.txt like so:

    dtdebug=1
    dtoverlay=rpi-cirrus-wm5102
    dtoverlay=i2s-mmap
    #dtparam=audio=on

    I know this config.txt file is correct because after commenting that last line it does indeed disable the on-board sound (see note below about aplay -l after reboot).

     

    ...and I created /etc/modprobe.d/cirrus.conf as follows:

    softdep arizona-spi pre: arizona-ldo1
    softdep spi-bcm2708 pre: fixed
    softdep spi-bcm2835 pre: fixed

     

    Then I rebooted, but now...

    pi@raspberrypi ~ $ aplay -l
    aplay: device_list:268: no soundcards found...

     

    Here is some info about my Pi:

    pi@raspberrypi ~ $ uname -a
    Linux raspberrypi 4.1.19+ #1 Fri Mar 11 15:05:42 CET 2016 armv6l GNU/Linux
    pi@raspberrypi ~ $ vcgencmd version
    Mar  9 2016 18:15:17
    Copyright (c) 2012 Broadcom
    version 3a754304b032a5298ee7889b179c667bbc75dec5 (clean) (release)

     

    I checked vcdbg log msg, but it has only this:

    debug_sym: OpenVideoCoreMemoryFileWithOffset: Unable to open '/dev/vc-mem': Permission denied(13)
    Unable to open videocore memory access: -13

     

    I also checked dmesg with grep for various terms relating to the soundcard, and it appears there are no errors about it at all, so I don't know what to make of that. Here is the pastebin link. Maybe there is something else there that will shed some light on the problem.

    http://paste.debian.net/417519/

     

    Hopefully this week or next my new RPi 2 will arrive, and it will not have these problems, but until then I'd like to get the B+ working again if possible. I upgraded to jessie because I was having problems with the camera's inaccurate framerate, which made synchronizing video and audio impossible. Supposedly a firmware update fixed that framerate problem, but of course I'll need the Cirrus working to test the new firmware.

     

     

    Additional notes:

     

    I also tried these lines in /etc/modprobe.d/cirrus.conf even though they apparently are not needed after 4.1.16, and of course they didn't help:

    softdep snd-soc-wm8804-i2c pre: snd-soc-rpi-wsp-preinit
    softdep snd-soc-rpi-wsp pre: snd-soc-wm8804-i2c

     

    By the way, there is also /etc/modprobe.d/fbdevblacklist.conf with this line:

    blacklist cirrusfb

    ...so I tried commenting that line, but it does not seem to change anything.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Reply
  • Former Member
    Former Member over 9 years ago

    I am hitting a wall with my Raspberry Pi B+ and Cirrus Audio card. I'm pretty sure the card is not recognized now and/or the driver is not even loading. It was working previously on wheezy before I switched to jessie.

     

    After downloading your precompiled kernel, I installed like so:

    pi@raspberrypi ~ $ sudo tar zxf cirrus-linux-4.1.19.tgz -C /

     

    Then I updated /boot/config.txt like so:

    dtdebug=1
    dtoverlay=rpi-cirrus-wm5102
    dtoverlay=i2s-mmap
    #dtparam=audio=on

    I know this config.txt file is correct because after commenting that last line it does indeed disable the on-board sound (see note below about aplay -l after reboot).

     

    ...and I created /etc/modprobe.d/cirrus.conf as follows:

    softdep arizona-spi pre: arizona-ldo1
    softdep spi-bcm2708 pre: fixed
    softdep spi-bcm2835 pre: fixed

     

    Then I rebooted, but now...

    pi@raspberrypi ~ $ aplay -l
    aplay: device_list:268: no soundcards found...

     

    Here is some info about my Pi:

    pi@raspberrypi ~ $ uname -a
    Linux raspberrypi 4.1.19+ #1 Fri Mar 11 15:05:42 CET 2016 armv6l GNU/Linux
    pi@raspberrypi ~ $ vcgencmd version
    Mar  9 2016 18:15:17
    Copyright (c) 2012 Broadcom
    version 3a754304b032a5298ee7889b179c667bbc75dec5 (clean) (release)

     

    I checked vcdbg log msg, but it has only this:

    debug_sym: OpenVideoCoreMemoryFileWithOffset: Unable to open '/dev/vc-mem': Permission denied(13)
    Unable to open videocore memory access: -13

     

    I also checked dmesg with grep for various terms relating to the soundcard, and it appears there are no errors about it at all, so I don't know what to make of that. Here is the pastebin link. Maybe there is something else there that will shed some light on the problem.

    http://paste.debian.net/417519/

     

    Hopefully this week or next my new RPi 2 will arrive, and it will not have these problems, but until then I'd like to get the B+ working again if possible. I upgraded to jessie because I was having problems with the camera's inaccurate framerate, which made synchronizing video and audio impossible. Supposedly a firmware update fixed that framerate problem, but of course I'll need the Cirrus working to test the new firmware.

     

     

    Additional notes:

     

    I also tried these lines in /etc/modprobe.d/cirrus.conf even though they apparently are not needed after 4.1.16, and of course they didn't help:

    softdep snd-soc-wm8804-i2c pre: snd-soc-rpi-wsp-preinit
    softdep snd-soc-rpi-wsp pre: snd-soc-wm8804-i2c

     

    By the way, there is also /etc/modprobe.d/fbdevblacklist.conf with this line:

    blacklist cirrusfb

    ...so I tried commenting that line, but it does not seem to change anything.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Children
  • hiassoft
    hiassoft over 9 years ago in reply to Former Member

    Hi Matt!

    I am hitting a wall with my Raspberry Pi B+ and Cirrus Audio card. I'm pretty sure the card is not recognized now and/or the driver is not even loading. It was working previously on wheezy before I switched to jessie.

    Indeed, it looks like the overlay isn't loaded at all. Just installed the current NOOBS and Raspbian on a fresh SD card and things worked fine...

     

    Could you enter the following commands and post the URLs?

    sudo vcdbg log msg 2>&1 | paste
    sudo fdisk -l /dev/mmcblk0 | paste
    mount | paste
    df -h | paste
    ls -laR /boot | paste
    paste /boot/config.txt

     

    so long,

     

    Hias

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Former Member
    Former Member over 9 years ago in reply to hiassoft

    Here are all the pastes. Thanks!

    http://paste.debian.net/417792/

    http://paste.debian.net/417793/

    http://paste.debian.net/417794/

    http://paste.debian.net/417795/

    http://paste.debian.net/417796/

    http://paste.debian.net/417797/

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • hiassoft
    hiassoft over 9 years ago in reply to Former Member

    Here are all the pastes. Thanks!

    OK, found the culprit in vcdbg log:

    001560.383: Failed to load overlay 'rpi-cirrus-wm5102 # new value 2016-03-20 per www.horus.com directions'
    001560.448: Failed to load overlay 'i2s-mmap # added for MMAP support (e.g. ALSA plugins) 2016-03-20 per'

     

    Move the "comments" after both dtoverlay entries in config.txt to a separate line, the firmware doesn't support comments on the same line image

     

    so long,

     

    Hias

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Former Member
    Former Member over 9 years ago in reply to hiassoft

    image it's always the little things! haha

     

    Audio recording through the Cirrus works great now! Thanks, Hias! image

     

    Now if only raspivid would record a video with timestamps so I can sync this audio with the video...

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • clem57
    clem57 over 9 years ago in reply to Former Member

    But alas that is a question for another discussion. Great job hiassoft

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • 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 © 2026 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