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 New reworked driver for Wolfson/Cirrus Logic audio card
  • 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 390 replies
  • Subscribers 743 subscribers
  • Views 42464 views
  • Users 0 members are here
  • raspberry_pi
  • raspeberry_pi_accessories
Related

New reworked driver for Wolfson/Cirrus Logic audio card

hiassoft
hiassoft over 9 years ago

I've been working on a driver rework, mainly to get rid of the requirement to carry around a bunch of patches to upstream driver code, and also to fix some outstanding issues and introduce some new features.

 

Most issues have been ironed out so here's the first public release.

 

Edit: the driver has been included in official RPi kernels. Just run sudo rpi-update to install it.

You still have to install the mixer scripts and add the /etc/modprobe.d file. See my website for details

RPi Linux driver for Wolfson / Cirrus Logic Audio Card

 

Source: https://github.com/HiassofT/rpi-linux/tree/cirrus-ng-4.9.0

Precompiled kernel: http://www.horus.com/~hias/tmp/cirrus/cirrus-ng-linux-4.9.0.tgz

New mixer scripts: http://www.horus.com/~hias/tmp/cirrus/cirrus-ng-scripts.tgz

 

Important notes:

  • The new driver bases on the rather fresh kernel 4.9.0 which means there's some risk of (yet unknown) issues. Use it at your own risk and please run "rpi-update" to get the latest firmware before installing the new driver.
  • The soundcard name has been changed from "snd_rpi_wsp" to "RPi-Cirrus", also several ALSA controls have been removed and new ones were added. This means the old usecase scripts and any custom-made scripts will no longer work. Use the new mixer scripts instead of the old usecase/listen scripts.
  • The new driver supports setting (and receiving) of the S/PDIF channel status bits (aka AES bits). If you add an ALSA card configuration file this means applications like Kodi can do proper AC3/DTS passthrough. A sample card configuration file (plus the mixer scripts) can be found here: https://github.com/HiassofT/rpi-cirrus-config
  • I haven't fully updated the documentation on my website RPi Linux driver for Wolfson / Cirrus Logic Audio Card  yet, will do that during the next weeks/months. But except for the things noted above most stuff should still work as in previous driver versions.

 

Please report back if you tested the driver (either successfully or unsuccessfully), any feedback will help me!

 

so long,

 

Hias

  • Sign in to reply
  • Cancel
Parents
  • timg73
    timg73 over 8 years ago

    Hias,

    A huge thank-you for all the work you've put into supporting the Cirrus Audio card.  Until now I've been using your kernel packages, and have just got round to trying the latest official 4.9 kernel which is also working very nicely.  It's a real shame that the Cirrus card has (or appears to have) gone out of production just when the software support became so good.  The older Wolfson cards are still available, so perhaps I'll get a couple and try modifying them to fit a 40-pin header.  Anyway, thanks again for everything you've done.  I really do appreciate it.

    Tim

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • hystrix
    hystrix over 8 years ago in reply to timg73

    The Cirrus Card does seem to be out of stock everywhere - what a shame.  I just started working on an alternative ultrasound sensistive microphone, since the electret type I was using has been out of production for years and is now virtually impossible to get hold of.

     

    What other options are there for recording audio at 192kHz with the Raspberry Pi?

     

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • psyj
    psyj over 8 years ago in reply to analysis

    Hi,

     

    Here is the KiCAD file that I used.  You may want to add to it,  feel free!  And if you are going to get some made with gold plated pads for the pogo connector, please let me know  ..... I would like to buy a couple if possible

     

    Regards

     

    John

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • psyj
    psyj over 8 years ago in reply to analysis

    Hi,

     

    Here is the KiCAD file that I used.  You may want to add to it,  feel free!  And if you are going to get some made with gold plated pads for the pogo connector, please let me know  ..... I would like to buy a couple if possible

     

    Regards

     

    John

     

    Postscript:-  I cannot post the file directly, forum rules.  If you pass a private message with an email address, I will send it straight to you

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • analysis
    analysis over 8 years ago in reply to psyj

    Hi John   I can't  send you a  private message ...we must be  connected first 

     

    Best Regards 

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • analysis
    analysis over 8 years ago in reply to psyj

    John , follow also me 

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • psyj
    psyj over 8 years ago in reply to analysis

    Hello Athanasios (and others)

     

    Producing printed circuit boards is certainly possible (and I have spoken to the fabricators), but I will need to add to the design I published some time ago.  I am putting this message out to the community in order to see what I should add to the design.  Hias has already suggested that the board should be larger so that it can support the wolfson.  But are there other useful things I should try and incorporate? I guarantee nothing, but suggestions are welcome!

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • analysis
    analysis over 8 years ago in reply to psyj

    Hi John

    At first, I would like to thank you for your help

    Your prototype board meets Hias, hardware modifications, I have tested it also and works perfectly. 

    So why not to move forward with some printed circuit boards for test

    Remain the problem with the CAD layout to generate the Gerber

     

    All the best

     

     

     

     

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • spambake
    spambake over 8 years ago in reply to psyj

    Some basic things to add to the pcb would be a .1" pin header with any available GPIO pins (not being used by the Wolfson card), the I2C bus, and the UART.  Also a parallel row of ground pins and several 3.3V  and 5V pins.

     

    I use something like added onto the Cirrus card for indicator LEDs, a temperature sensor, a shutdown button,  RTC via I2C and GPS via UART.  A low noise LDO to convert the 5V to a clean 3.3V (or whatever voltage) for a preamp or something might come in handy for some uses.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • psyj
    psyj over 8 years ago in reply to spambake

    Hi Spambake,

     

    Very reasonable suggestions, many thanks.  The biggest problem with a 0.1 header would be that the board will need to be larger than the wolfson (which sits above it) in order to give access to the pins.  This would mean that the overall "footprint" will be greater than the raspberry beneath ..... not a problem in some instances. But when space is limited?  What do you (and others) think?

     

    The obvious thing to do would be to reproduce almost all of the 40 way header (including the gpio used by the wolfson) outwards  (giving access, eg, to I2C...... leaving the covered space of the PCB (beneath the Wolfson) unused.  A low noise LDO? maybe?  But in my limited experience getting a really low noise power supply it would be best to source from other than the raspberry.

     

    I had thought of an uncommited array of 0.1" pitch holes for prototyping,  but that rather shows my age!  Or some useful I2C device  .... but what?

     

     

    Athanasios

     

    How do you feel about adding a 40 way header to allow other connections? (Sadly that would not allow  stacking of further cards).  I am in two minds about whether to complicate the design (with extra risk),  but when the boards cost around 12 euros each (in small quantities) , plus VAT and delivery, it seems a shame to waste the board space?

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • dspmandavid
    dspmandavid over 8 years ago in reply to psyj

    Hi John,

     

    I believe that there is a way that you can program the ADSP2 to your desires.

    The tools for creating your own DSP software are available from Cirrus Logic (WISCE), and the compiler is from Synopsis (Target Compiler Technologies) (Chess Development Environment).

    Depending upon which specific DSP (Smart Codec) you have from Cirrus, you may be able to obtain a development board for your specific needs and experiment with your own code development on the DSP and implement all the fancy processing you desire.

    There is a learning curve, but once you get over the early part, you will be up and running.

     

    Best regards,

    David

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Cancel
  • psyj
    psyj over 8 years ago in reply to dspmandavid

    David,

     

    Many thanks for this tip.  I have used the WISCE software quite extensively.  It provides a means of setting parameters in the "static" part of the digital core and also (if I remember correctly) uploading soft/firmware into the 5102, but does not, as far as I am aware, allow development of the DSP code.  So your tip for Synopsis is useful, and I will follow it up.  Wolfson (who were brought out by Cirrus) called there DSP core the ADSP2, but there are several clues that it is a brought in design   ...... but exactly which is less clear!

     

    The main clues in the 5102 manual are

     

    Program memory      10_0000h to 10_5FFFh (24576 registers)      8192 x 40-bit words

    Coefficient memory      18_0000h to 18_07FFh (2048 registers)      1024 x 24-bit words

    X Data memory           19_0000h to 19_47FFh (18432 registers)      9216 x 24-bit words

    Y Data memory           1A_8000h to 1A_97FFh (6144 registers)      3072 x 24-bit words

     

    So the data memories correspond to the ADC and DAC width (but I guess the core will run at higher precision to allow multiply etc)

     

    Just noticed there is a JTAG interface to the core, but whether I have the time to hack ....


    I also have some stock firmware images for the 5102 DSP, which might also provide clues as to whether I am on the right track. 

     

    If I make progress I will report back here, but my life is pretty busy at the moment, so it may not be very soon.

     

    Regardless, thanks again  .... the prospect of developing a FIR filter still appeals to me

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Reply
  • psyj
    psyj over 8 years ago in reply to dspmandavid

    David,

     

    Many thanks for this tip.  I have used the WISCE software quite extensively.  It provides a means of setting parameters in the "static" part of the digital core and also (if I remember correctly) uploading soft/firmware into the 5102, but does not, as far as I am aware, allow development of the DSP code.  So your tip for Synopsis is useful, and I will follow it up.  Wolfson (who were brought out by Cirrus) called there DSP core the ADSP2, but there are several clues that it is a brought in design   ...... but exactly which is less clear!

     

    The main clues in the 5102 manual are

     

    Program memory      10_0000h to 10_5FFFh (24576 registers)      8192 x 40-bit words

    Coefficient memory      18_0000h to 18_07FFh (2048 registers)      1024 x 24-bit words

    X Data memory           19_0000h to 19_47FFh (18432 registers)      9216 x 24-bit words

    Y Data memory           1A_8000h to 1A_97FFh (6144 registers)      3072 x 24-bit words

     

    So the data memories correspond to the ADC and DAC width (but I guess the core will run at higher precision to allow multiply etc)

     

    Just noticed there is a JTAG interface to the core, but whether I have the time to hack ....


    I also have some stock firmware images for the 5102 DSP, which might also provide clues as to whether I am on the right track. 

     

    If I make progress I will report back here, but my life is pretty busy at the moment, so it may not be very soon.

     

    Regardless, thanks again  .... the prospect of developing a FIR filter still appeals to me

    • 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