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 23055 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 have been here:

    www.horus.com/~hias/cirrus-driver.html looking at the precompiled kernel and I see that the latest one is 4.1.19 and it says it works for Rpi3 (which I've just received).  I've just received an Rpi3 and have a Cirrus Logic - Element14 audio board on order.  I also have an Rpi2 with the audio board and I believe I got the kernel 4.1.13 from this site (and it works wonderfully well).  Unfortunately, the current Arch Linux supplies kernel 4.1.20.

     

    So my question would be - will there be a downloadable 4.1.20 pre-patched and compiled kernel available?

     

    If not, where can I find step by step instructions on how to patch and compile the kernel myself?

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

    So my question would be - will there be a downloadable 4.1.20 pre-patched and compiled kernel available?

     

    If not, where can I find step by step instructions on how to patch and compile the kernel myself?

    There aren't any really important changes to 4.1.20 (compared to 4.1.19) and the RPi foundation will switch to 4.4 soon. So I'll skip 4.1.20, also I don't have much time ATM, this weekend I'm at the Easterhegg image

     

    You can either use the 4.1.19 kernel or clone my 4.1 github tree (it's already up at 4.1.20 plus patches until yesterday) and compile it yourself - just like the standard RPi kerrnel. make bcm2709_defconfig enables all options needed for the Cirrus card.

     

    https://github.com/HiassofT/rpi-linux/tree/cirrus-4.1.y

     

    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

    Ah yes, I downloaded the sources for 4.1.19 and I have finished the compile which looks good.  An experienced Linux friend explained that It would likely work to put the 4.1.19 kernel in a 4.1.20 installation.  The board should be delivered today, so I will be able to test it sometime later and I'll post here about my results.

     

    Thank you for this effort and hard work, very grateful.

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

    Raspberry Pi 3 testing 4.1.19 kernel build

     

    I followed instructions at these sites:

    github.com/RoEdAl/linux-raspberrypi-wsp

    headless.audio/#raspberry-pi-2-model-b.

     

    From that, I downloaded sources for kernel 4.1.19 for Arch Linux.  I had initially installed Arch Linux with 4.1.20 kernel.  I then executed the pacman command and the compile took place without error (checked the log files for the word 'error').  I did the other modifications as well.  The system boots and doesn't appear to have any problems.

     

    When I execute aplay -l, I get:

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

     

    Note that I blacklisted the Raspberry Pi 3 default on-board audio.  Before I did that, aplay -l would list only the on-board hardware.

     

    uname -a gives:

    Linux pi3 4.1.19-4-WSP #1 SMP Sat Mar 26 00:21:28 PDT 2016 armv7l GNU/Linux

     

    Both of the audio card LEDs (red and green) remain on.  I see no mention of wsp or cirrus in dmesg output using grep -i

     

    I have an Rpi2 with the same audio card which works, so tomorrow I'll put the new audio card on the Rpi2 and see if it works.

     

    /etc/modprobe.d/cirrus.conf

    softdep arizona-spi pre: arizona-ldo1

    softdep spi-bcm2708 pre: fixed

    softdep spi-bcm2835 pre: fixed

    blacklist snd_bcm2835

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

    Dmesg showed nothing like loading driver for cirrus card? Curiously that means hardware not responding to a probe during startup. I think i2cdetect should be run to see the card respond.

    Clem

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

    Both of the audio card LEDs (red and green) remain on.  I see no mention of wsp or cirrus in dmesg output using grep -i

    add dtdebug=1 to config.txt and then run sudo vcdbg log msg 2>&1 | less to check if the rpi-cirrus-wm5102 overlay was loaded correctly.

     

    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

    Ok, I feel pretty lame...  IT WORKS WONDERFULLY WELL!!!

     

    Somewhere along the line, /boot/config.txt was overwritten and had default settings which had i2c turned OFF.  I found this by running i2cdetect.  Once I corrected the settings in /boot/config.txt, it worked and I was able to use mplayer to play an MP3 file.

     

    So - my results - 4.1.19 works on Rpi3 running Arch Linux.

     

    THANK YOU SO MUCH FOR YOUR GENEROUS WORK ON THIS ! !

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

    Somewhere along the line, /boot/config.txt was overwritten and had default settings which had i2c turned OFF.  I found this by running i2cdetect.  Once I corrected the settings in /boot/config.txt, it worked and I was able to use mplayer to play an MP3 file.

    That is great new. I am glad the i2cdetect led to the discovery what happened. Also for experts like hiassoft

    Clem

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

    Hi, I've been trying to get the 4.1x Kernel that you provide with the RPI 2 and cirrus audio card from the link : RPi Linux driver for Wolfson / Cirrus Logic Audio Card

    I am trying to incorporate this into a buildroot built pi2 image. I am using the rpi-linux/arch/arm/configs/bcm2709_defconfig configuration for the kernel and 4.1.19 kernel headers

    The rpi firmware which contains the config.txt and dtb overlays come from official rpi git ( 046effa13ebc4cc7601df4f06f4834bd0eebb0f8 which is think is latest ).

     

    my config.txt is :-

    arm_freq=900

    core_freq=250

    sdram_freq=450

    over_voltage=2

    dtoverlay=rpi-cirrus-wm5102-overlay

    dtoverlay=i2s-mmap

     

    I took the overlays for rpi-cirrus-wm5102-overlay.dtb , i2s-mmap-overlay.dtb from your 4.1 prebuilt kernel gz image

    ( a question about the overlays , does the reference in the contig.txt have to match exact file name . i.e. I've seen : dtoverlay=rpi-cirrus-wm5102  & dtoverlay=rpi-cirrus-wm5102 does the file name have to correspond exactly to the overlay dtb file name or does it automatically remove the -overlay part? )

     

    Also i've seen both raspi-blacklist.config and cirrus.config in different instructions up the page. Which is correct? why?

    Mine is cirrus.config and it contains

     

    softdep arizona-spi pre: arizona-ldo1

    softdep spi-bcm2708 pre: fixed

    softdep spi-bcm2835 pre: fixed

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

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

     

    is this correct?

    Am I missing something?

     

    here is extract of my dmesg where the audio card is attempted to be initialised. Could you tell me what is wrong here?

     

    4.074966] udevd[84]: starting version 3.1.5
    [4.124325] random: udevd urandom read with 78 bits of entropy available
    [4.183491] udevd[84]: specified group 'xenomai' unknown
    [4.557839] snd-rpi-wsp sound: ASoC: CPU DAI (null) not registered
    [5.199562] bcm2835-rng 3f104000.rng: hwrng registered
    [5.210740] snd-rpi-wsp sound: ASoC: CPU DAI (null) not registered
    [5.223868] snd-rpi-wsp sound: ASoC: CPU DAI (null) not registered
    [5.236290] snd-rpi-wsp sound: ASoC: CPU DAI (null) not registered
    [5.238387] bcm2708_i2c 3f804000.i2c: BSC1 Controller at 0x3f804000 (irq 79) (baudrate 100000)
    [5.240210] spi spi0.1: setting up native-CS1 as GPIO 7
    [5.240418] spi spi0.0: setting up native-CS0 as GPIO 8
    [5.256563] gpiomem-bcm2835 3f200000.gpiomem: Initialised: Registers at 0x3f200000
    [5.302334] snd-rpi-wsp sound: ASoC: CODEC DAI wm5102-aif1 not registered
    [5.413108] spi0.1 supply DCVDD not found, using dummy regulator
    [5.425351] wm8804 1-003a: Failed to read device ID: -5
    [5.436674] wm8804: probe of 1-003a failed with error -5
    [5.467651] arizona spi0.1: Unknown device ID: 0
    [5.481030] snd-rpi-wsp sound: ASoC: CODEC DAI wm5102-aif1 not registered
    [6.057559] NET: Registered protocol family 10
    [6.350161] smsc95xx 1-1.1:1.0 eth0: hardware isn't capable of remote wakeup
    [6.363772] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
    [7.117400] cfg80211: Calling CRDA to update world regulatory domain
    [7.957661] smsc95xx 1-1.1:1.0 eth0: link up, 100Mbps, full-duplex, lpa 0x45E1
    [7.970849] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • hiassoft
    hiassoft over 9 years ago in reply to Former Member

    Hi Rob!

     

    The problem you're running into probably come from mixing dtbs/overlays. The dtbs/overlays are tied to the kernel, so always use the ones generated from "make dtbs / make dtbs_install".

     

    Use the GPU firmware (bootcode.bin, start_x.elf, fixup_x.elf) from the rpi-firmware repo and config.txt from there as a template. Compile the kernel from my github tree, using bcm2709_defconfig from that tree, and use kernel(7).img, modules and dtbs from there.

     

    As for overlays: better use "dtoverlay=rpi-cirrus-wm5102", without the "-overlay". With kernel 4.1 both versions will work but with kernel 4.4 that'll change - the overlay files are named "rpi-cirrus-wm5102.dtbo" there (instead of previously rpi-cirrus-wm5102-overlay.dtb) and the "-overlay" variants will no longer work.

     

    As for the modprobe file: Use cirrus.conf - putting the config into blacklist.conf as described in the original instructions is rather counter-intuitive IMO. Also you don't need the 2 last softdep lines with wm8804-i2c when using my 4.1.19 kernel, that was only needed for older kernels where I tried a different approach to fix wm8804 initialization issues (which I've now replaced by a better fix).

     

    so long,

     

    Hias

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

    Hi Rob!

     

    The problem you're running into probably come from mixing dtbs/overlays. The dtbs/overlays are tied to the kernel, so always use the ones generated from "make dtbs / make dtbs_install".

     

    Use the GPU firmware (bootcode.bin, start_x.elf, fixup_x.elf) from the rpi-firmware repo and config.txt from there as a template. Compile the kernel from my github tree, using bcm2709_defconfig from that tree, and use kernel(7).img, modules and dtbs from there.

     

    As for overlays: better use "dtoverlay=rpi-cirrus-wm5102", without the "-overlay". With kernel 4.1 both versions will work but with kernel 4.4 that'll change - the overlay files are named "rpi-cirrus-wm5102.dtbo" there (instead of previously rpi-cirrus-wm5102-overlay.dtb) and the "-overlay" variants will no longer work.

     

    As for the modprobe file: Use cirrus.conf - putting the config into blacklist.conf as described in the original instructions is rather counter-intuitive IMO. Also you don't need the 2 last softdep lines with wm8804-i2c when using my 4.1.19 kernel, that was only needed for older kernels where I tried a different approach to fix wm8804 initialization issues (which I've now replaced by a better fix).

     

    so long,

     

    Hias

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

    Hi Mattias, It's taken me a while to come back about this sorry. I've been trying every conceivable way to try to get this working but it's still not working for some reason. I have been trying to build from your repository, first using buildroot and then when it didn't work I tried to do it manually using the commands below :-

     

    I took your 4.1.y cirrus rpi-linux :-

    git status

    On branch cirrus-4.1.y

    Your branch is up-to-date with 'origin/cirrus-4.1.y'.

     

    I've used the following commands and built the kernel from your config , modules & dtb

     

    /opt/projects/rpi-linux$ /usr/bin/make -j5 -C /opt/projects/rpi-linux HOSTCC="/usr/bin/gcc" HOSTCFLAGS="" ARCH=arm INSTALL_MOD_PATH=/opt/projects/rpi-linux/modules CROSS_COMPILE="/opt/projects/buildroot-gr/buildroot/output/host/usr/bin/arm-buildroot-linux-gnueabihf-" bcm2709_defconfig

     

     

    /usr/bin/make -j5 HOSTCC="/usr/bin/gcc" HOSTCFLAGS="" ARCH=arm INSTALL_MOD_PATH=/opt/projects/rpi-linux/modules/ CROSS_COMPILE="/opt/projects/buildroot-gr/buildroot/output/host/usr/bin/arm-buildroot-linux-gnueabihf-" -C /opt/projects/rpi-linux zImage

     

     

    /usr/bin/make -j5 HOSTCC="/usr/bin/gcc" HOSTCFLAGS="" ARCH=arm INSTALL_MOD_PATH=/opt/projects/rpi-linux/modules/ CROSS_COMPILE="/opt/projects/buildroot-gr/buildroot/output/host/usr/bin/arm-buildroot-linux-gnueabihf-" modules

     

     

    /usr/bin/make -j5 HOSTCC="/usr/bin/gcc" HOSTCFLAGS="" ARCH=arm INSTALL_MOD_PATH=/opt/projects/rpi-linux/modules/ CROSS_COMPILE="/opt/projects/buildroot-gr/buildroot/output/host/usr/bin/arm-buildroot-linux-gnueabihf-" dtbs

     

    I have at the moment manually put the Zimage ( as kernel.img ) in the boot directory

    moved the arch/arm/boot/dts/*.dtb to boot partition and arch/arm/boot/dts/overlays*.dtb to boot partition ./overlays

    I've moved the modules to /lib where they are at /lib/modules/v.1.20-v7/ also firmware was moved to /lib/firmware

     

    My config is the same as it was which is the same as yours. The /etc/modprobe.d/cirrus.conf is the same

     

    My board boots but there are no messages at all in dmesg about any of the card interfaces , i2c etc..

     

    I can't run vcdbg as although I have installed it there is no msg file, I do have dtdebug=on

     

    The rootfs is not raspbian though , it's custom from buildroot using packages I've told it to include. rpi-firmware is one of these which is where I get my startup.elf etc.. files

     

    The issue is that it doesn't even try to load the devices. In fact it doesn't even seem to see the i2c bus.

     

    I've compared my SDcard with one made with one of your pre-built images. My config.txt is the same. I noted that you originally loaded kernel7.img but don't see that in config.txt . Is that a change you did in startup? or is this to do with the older 3.18 version I have as an SDcard image?

     

    On my buildroot image my partitions do not seem to be named. I.E. if I put the SDcard I made in the PI2 I don't see boot named as the partition , how important is the name?

     

    Next I notice when I make dtbs from your config I get only rpi-2-b and rpi-3 device overlays, that is correct?

     

    I've run out of things to check

     

    Best Regards

     

    Rob

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

    I2C must be enabled if you build your own rootfs. By default in many distros it is not enabled!

    Clem

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

    Hi Clem, Not sure what you mean by that?  Surely if I'm using the bcm2709_defconfig for building the kernel provided by https://github.com/CirrusLogic/rpi-linux 

    in the 4.1.y branch the i2c will be part of the kernel configuration provided there and as long as my kernel, dtb and associated kernel modules built from here are on the rootfs partition ( in /lib ) then it should boot the card?  Or are there userspace libraries needed aswell?

     

    Best Regards

     

    Rob

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

    Hi Rob!

    I have at the moment manually put the Zimage ( as kernel.img ) in the boot directory

    You need to run "scripts/mkknlimg" from the kernel tree to generate kernel.img/kernel7.img, otherwise the devicetree stuff won't work at all. eg

    ./scripts/mkknlimg arch/arm/boot/zImage /boot/kernel7.img

     

    The kernel for RPi2+3 should usually be named kernel7.img, the kernel for RPi1 kernel.img - the GPU firmware uses these names by default (so you can have a system bootable both on RPi1 and on RPi2/3) but will automatically fallback to kernel.img when it can't find a kernel7.img.

     

    If you want to build kernel/modules/dtbs for RPi1 you have to do it in a separate directory (or completely clean the RPi2 binaries before) and use "make bcmrpi_defconfig". Then you'll get the dtb files for RPi1, but not for RPi2/3 - and of course kernel and modules runnable on the RPi1.

     

    As for debugging: try to get vcdbg log working, that's really helpful. It'll only work as root and outputs to stderr instead of stdout so eg on raspbian you have to use "sudo vcdbg log msg 2>&1 | less" to get output. Maybe you are missing some library on the target system, vcdbg links to /opt/vc/lib/libdebug_sym.so and /opt/vc/lib/libvcos.so on Raspbian - check with ldd.

     

    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

    Hi Hias, The issues I am having were due to the way devices were registered. The build system was using /tmpfs only . When I changed this to devtmpfs with eudev option the modules now try to load. However all is not well. Even if I use my rootfs with your prebuilt kernel and modules I get the same problem as myself :-

     

    [    3.977633] udevd[75]: starting version 3.1.5

    [    4.014171] random: udevd urandom read with 78 bits of entropy available

    [    4.062315] udevd[75]: specified group 'xenomai' unknown

    [    4.385334] snd-rpi-wsp sound: ASoC: CPU DAI (null) not registered

    [    5.144403] bcm2835-rng 3f104000.rng: hwrng registered

    [    5.155435] snd-rpi-wsp sound: ASoC: CPU DAI (null) not registered

    [    5.157030] bcm2708_i2c 3f804000.i2c: BSC1 Controller at 0x3f804000 (irq 79) (baudrate 100000)

    [    5.159863] gpiomem-bcm2835 3f200000.gpiomem: Initialised: Registers at 0x3f200000

    [    5.160797] spi spi0.1: setting up native-CS1 as GPIO 7

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

    [    5.321515] wm8804 1-003b: revision E

    [    5.322951] spi0.1 supply DCVDD not found, using dummy regulator

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

    [    5.365942] arizona spi0.1: Unknown device ID: 0

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

     

    edit : this is with kernel 4.1.19-v7 from your tgz together with the installed /lib copied into my rootfs. uname -a shows I'm using the correct kernel. Config.txt hasn't changed. The dtb files are definately the ones I copied over from the cirrus-4.1.19 /boot and so are the overlays

    I get the same issue if I build my own 4.1.20 kernel from scratch , install my modules and dtb from matching kernel and load this way. Exactly same messages

     

    The question is what am I missing. There is a difference between how Raspbian and my buildroot file system registers devices. Do you have any ideas of what to try? I need to add my own WIFI drivers to the image and make it really minimal wso using the raspbian really wasn't what I wanted.

     

     

    Best Regards

     

    Rob

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

    Hi Rob!

    [    5.322951] spi0.1 supply DCVDD not found, using dummy regulator

    [    5.365942] arizona spi0.1: Unknown device ID: 0

    That's the culprit, you seem to be missing the softdeps. arizona-ldo1 needs to be loaded before arizona-spi, otherwise the chip won't be powered up correctly. Disabling regulator support in the kernel will have the same effect BTW.

     

    If everything's setup correctly it should look like this (note the "LDO1" and various "supply" messages and that the arizona driver found a WM5102):

     

    [4.228265] wm8804 1-003b: revision E
    [4.228602] snd-rpi-wsp sound: ASoC: CODEC DAI wm5102-aif1 not registered
    [4.241035] LDO1: supplied by DC_1V8
    [4.241090] snd-rpi-wsp sound: ASoC: CODEC DAI wm5102-aif1 not registered
    [4.294048] arizona spi0.1: WM5102 revision C
    [4.313641] Adding alias for supply MICVDD,(null) -> MICVDD,spi0.1
    [4.314060] Adding alias for supply MICVDD,(null) -> MICVDD,spi0.1
    [4.314072] Adding alias for supply DBVDD2,(null) -> DBVDD2,spi0.1
    [4.314082] Adding alias for supply DBVDD3,(null) -> DBVDD3,spi0.1
    [4.314093] Adding alias for supply CPVDD,(null) -> CPVDD,spi0.1
    [4.314103] Adding alias for supply SPKVDDL,(null) -> SPKVDDL,spi0.1
    [4.314114] Adding alias for supply SPKVDDR,(null) -> SPKVDDR,spi0.1

     

    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

    Hi Hias, I finally have it working. On my SD card my boot up files are in a partition but it is not mounted on the rootfs. The config.txt in my parition was being ignored. When created /boot directory on the rootfs partition and copied filesthere and rebooted, it now picks up the config correctly, uses the preinit from the modprobe.d and all works fine.. 

     

    I want to thank you so much for your help as I would have been very lost without it..

     

     

    Best Regards

     

    Rob

    • 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