All of lore.kernel.org
 help / color / mirror / Atom feed
From: John Weber <rjohnweber@gmail.com>
To: "meta-freescale@yoctoproject.org"
	<meta-freescale@yoctoproject.org>,
	 poky@yoctoproject.org
Subject: Firmware loading
Date: Wed, 06 Mar 2013 09:06:36 -0600	[thread overview]
Message-ID: <51375B7C.9010106@gmail.com> (raw)

I'm attempting to configure Linux to load firmware for a Broadcom SDIO Wifi chip 
(BCM4329) onto an i.MX6-based board.

Here is my main question - How is firmware supposed to be loaded within the 
paradigm of a Yocto/Poky-built system?  Any insight and guidance is appreciated.

What I've done so far, and what I've discovered:

I've incorporated the driver into the kernel (backported from an upstream kernel 
rev), and removed the staging drivers present in 3.0.35.  It is built-in at the 
moment (not a module) and this is the error that I'm getting when it times-out 
loading firmware:

brcmfmac: brcmf_sdbrcm_download_code_file: Fail to request firmware -2
brcmfmac: _brcmf_sdbrcm_download_firmware: dongle image file download failed
brcmfmac: brcmf_bus_start: brcmf_sdbrcm_bus_init failed -1

The error code indicates that it cannot load firmware because it can't find the 
firmware file.

I've taken care to put the firmware in /lib/firmware/brcm (2 files).  The driver 
hardcodes a relative path filename to the firmware files and I've made sure that 
they are the same.

I've researched the firmware request process for the kernel.  My understanding 
is that the process looks like this:
1) driver requests firmware file
2) kernel opens up a special set of files in sysfs (/sys/class/firmware/xxx 
where xxx is the device name)
3) kernel signals udev to load firmware, giving it the filename and the device name
4) udev, through its rules, locates the firmware file for the device and writes 
it to the special file in sysfs

So, here is where I'm starting to get confused.  The default udev rules that are 
created in /lib/udev/rules.d/50-udev-default.rules show the following rule for 
firmware:

SUBSYSTEM=="firmware", ACTION=="add", IMPORT{builtin}="firmware"

I'm guessing that this is for cases where the firmware file is built-in to the 
kernel image.  I can see the necessity for doing this in some cases, but that is 
not what I'm doing at the moment, I'm trying to load the firmware from a file in 
the filesystem.  That requires udev to run a program or script that will read 
the file and write it to the appropriate file in sysfs.

The files in the poky udev recipe offers a clue, but for some reason that I 
don't understand, this file does not make it into the filesystem:

poky/meta/recipes-core/udev/udev/udev.rules:

# Firmware Helper
ACTION=="add", SUBSYSTEM=="firmware", RUN+="/lib/udev/firmware.sh"

This rule expects that there is a firmware helper script "firmware.sh" somewhere 
in the filesystem.  Other than this file, I can't file any reference to a 
"firmware.sh" file anywhere in the metadata, which could explain why this line 
doesn't make it into the installed filesystem.  I could only find references to 
files named this on the net.










             reply	other threads:[~2013-03-06 15:06 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-06 15:06 John Weber [this message]
2013-03-06 21:18 ` Firmware loading Otavio Salvador
2013-03-06 21:50   ` [meta-freescale] " John Weber
2013-03-06 21:50     ` John Weber
2013-03-06 21:48 ` [meta-freescale] " Eric Bénard
2013-03-06 21:48   ` Eric Bénard
2013-03-06 21:56   ` [meta-freescale] " John Weber
2013-03-06 21:56     ` John Weber
2013-03-06 22:04     ` [meta-freescale] " Eric Bénard
2013-03-06 22:04       ` Eric Bénard
2013-03-07 16:21       ` [meta-freescale] " John Weber
2013-03-07 16:21         ` John Weber
2013-03-07 17:50         ` [meta-freescale] " John Weber
2013-03-07 17:50           ` John Weber
2013-03-08 12:15           ` Otavio Salvador
2013-03-08 15:35             ` [meta-freescale] " John Weber
2013-03-08 15:35               ` John Weber
2013-03-08 17:36               ` Otavio Salvador
2013-03-12  3:53                 ` [meta-freescale] " John Weber
2013-03-12  3:53                   ` John Weber
  -- strict thread matches above, loose matches on Subject: below --
2009-07-02 13:32 firmware loading Daniel Drake
2009-07-02 14:08 ` Harald Hoyer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=51375B7C.9010106@gmail.com \
    --to=rjohnweber@gmail.com \
    --cc=meta-freescale@yoctoproject.org \
    --cc=poky@yoctoproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.