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 23079 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
  • rmd6502
    rmd6502 over 9 years ago

    I have a pi3, using your 4.4.14 kernel.  I also have a pi touchscreen display installed.  The Cirrus card doesn't show up at all, aplay -l says "no soundcards found" - here's the pastebins:

    pi@robs-pi7:~ $ pastebinit /boot/config.txt

    http://paste.debian.net/780269/

    pi@robs-pi7:~ $ vcgencmd version | pastebinit

    http://paste.debian.net/780270/

    pi@robs-pi7:~ $ sudo vcdbg log msg 2>&1 | pastebinit

    http://paste.debian.net/780271/

    pi@robs-pi7:~ $ dmesg | pastebinit

    http://paste.debian.net/780272/

    pi@robs-pi7:~ $ lsmod | pastebinit

    http://paste.debian.net/780273/

    pi@robs-pi7:~ $ aplay -l | pastebinit

    aplay: device_list:268: no soundcards found...

     

    I think the relevant lines in dmesg are:

    [    4.606835] wm8804 1-003b: Failed to read device ID: -5

    [    4.607095] wm8804: probe of 1-003b failed with error -5

    [    4.628882] snd-rpi-wsp soc:sound: ASoC: CODEC DAI wm5102-aif1 not registered

    [    4.835827] snd-rpi-wsp soc:sound: ASoC: CODEC DAI wm5102-aif1 not registered

     

    I'll try removing the touchscreen display just in case.

     

    Thanks in advance!

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

    Hi Robert!

    I think the relevant lines in dmesg are:

    [ 4.606835] wm8804 1-003b: Failed to read device ID: -5

    [ 4.607095] wm8804: probe of 1-003b failed with error -5

    These are definitely the relevant lines, but it's puzzling why you get these when the touchscreen/display is connected - there shouldn't be a resource/GPIO conflict.

     

    These lines can indicate that the wm8804 reset (via GPIO) might have gone wrong and the wm8804 wasn't properly put into I2C mode. Usually that shouldn't happen unless someone/something drives the I2C bus during wm8804 reset. It could also happen when the voltage level on the I2C bus is too low. That part of the Cirrus card hardware design is rather awkward BTW...

     

    How are you powering the display? Have you tried using a separate, external power supply for it?

     

    Your config.txt looks fine, but also try to remove the "start_x" and "disable_camera_led" lines (there were some warnings/errors at the end of vcdbg log).

     

    so long,

     

    Hias

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

    That could be - I'll give that a try later.  I was using a single 5v1a supply, but then added a 5v1.5a supply - I'll remove the power wire so only the monitor is powered off the lower current supply and check the voltage on the i2c pullups.  I'll also apply the cleanups to config.txt that you suggest.

     

    I don't have a storage scope (an ancient but highly functional Tektronix from the '90s) so I can't check levels the instant the card starts up, though I suppose I could trigger on low voltage and see if I get a trace during startup...

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • rmd6502
    rmd6502 over 9 years ago in reply to rmd6502

    Yeah, almost certainly a voltage thing - it worked once when I split the power supply, but then started acting weird, and when I rebooted, was not detected again.

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

    What kind of power supply are you using for the RPi?

     

    The RPi3 is very picky about that and I'd recommend using only the official 2.5A for it.

     

    BTW: You can use "vcgencmd get_throttled" to check if an undervoltage or overtemperature situation has occurred. That command should output "throttled=0x0", if you get anything else you have a voltage/temperature problem.

    Read here for more details:

    https://www.raspberrypi.org/forums/viewtopic.php?f=63&t=147781&start=50#p972790

     

    so long,

     

    Hias

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

    hiassoft

         I just tried and got:

    pi@raspberrypi:~ $ vcgencmd get_throttled

    error=1 error_msg="Command not registered"

    What version of firmware is needed. This may be a new command sometime after the release of initial Pi 3 that I have installed back in March.

    Clem

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

    pi@raspberrypi:~ $ vcgencmd get_throttled

    error=1 error_msg="Command not registered"

    What version of firmware is needed. This may be a new command sometime after the release of initial Pi 3 that I have installed back in March.

    Clem

    Looks like it was added mid April: https://github.com/raspberrypi/firmware/commit/9628ed8ee809ace08e64beb58fddad5ebd8155f0

     

    so long,

     

    Hias

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

    Interesting after an rpi-update, now:

    pi@raspberrypi:~ $ vcgencmd get_throttled

    throttled=0x50000

    May need to investigate further. Thanks hiassoft

    C

    PS Under voltage. Time to get a new power source.

    0: under-voltage

    1: arm frequency capped

    2: currently throttled

    16: under-voltage has occurred

    17: arm frequency capped has occurred

    18: throttling has occurred

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

    Fixed:

    pi@raspberrypi:~ $ vcgencmd get_throttled

    throttled=0x0

    I replaced a lower voltage with an 5.1V 2.5 A adapter matching the recommendation. I am using the USB with a SDR so that should help.

    Clem

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

    Fixed:

    pi@raspberrypi:~ $ vcgencmd get_throttled

    throttled=0x0

    I replaced a lower voltage with an 5.1V 2.5 A adapter matching the recommendation. I am using the USB with a SDR so that should help.

    Clem

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Children
No Data
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