From: Sebastian Kuzminsky <seb@highlab.com>
To: linux-hotplug@vger.kernel.org
Subject: absolute firmware paths
Date: Tue, 01 Jul 2008 04:04:05 +0000 [thread overview]
Message-ID: <200806302204.05544.seb@highlab.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 1380 bytes --]
Hi folks, I'm looking into using request_firmware()/udev to get firmware
into a couple of device drivers i'm writing, but I want to be able
to provide absolute paths for the firmware file and have firmware.sh
honor it.
The drivers are for a family of FPGA-based cards, mostly PCI. We're
using the cards for motion control of machine tools and other robots,
see <http://www.linuxcnc.org>.
Anyway, the drivers and the firmware are distributed together. A common
use case for many of our developers and some of our users is to check
out the source code, maybe hack on it some, build it, and run it out of
the sandbox (without installing). The problem is that udev can't find
the firmwares in peoples home directories.
My proposal is to have the driver accept a modparam giving the absolute
path to the firmware file the user wants, and have the firmware.sh
helper read it from there, bypassing the normal firmware search path.
In the other use case, when the software is installed properly, the
modparam can be skipped and the driver will request default firmware
using relative paths (and udev will find the firmware in /lib/firmware).
I've attached a patch against udev.git showing what I mean.
Comments?
--
Sebastian Kuzminsky
"The brain is [a machine]. The fact that it's made out of meat is a
red herring." -- David Adler <http://www.spectrum.ieee.org/print/6268>
[-- Attachment #2: udev-absolute-firmware-paths.patch --]
[-- Type: text/x-diff, Size: 791 bytes --]
diff --git a/extras/firmware/firmware.sh b/extras/firmware/firmware.sh
index b89b428..3d9cc61 100755
--- a/extras/firmware/firmware.sh
+++ b/extras/firmware/firmware.sh
@@ -9,0 +10,9 @@ err() {
+try_firmware() {
+ FILE=$1
+ [ -e "$FILE" ] || return 0
+ echo 1 > /sys$DEVPATH/loading
+ cat "$FILE" > /sys$DEVPATH/data
+ echo 0 > /sys$DEVPATH/loading
+ exit 0
+}
+
@@ -15,7 +24,9 @@ fi
-for DIR in $FIRMWARE_DIRS; do
- [ -e "$DIR/$FIRMWARE" ] || continue
- echo 1 > /sys$DEVPATH/loading
- cat "$DIR/$FIRMWARE" > /sys$DEVPATH/data
- echo 0 > /sys$DEVPATH/loading
- exit 0
-done
+if [ $(echo $FIRMWARE | cut -b 1) = "/" ]; then
+ # absolute path
+ try_firmware $FIRMWARE
+else
+ # relative path, search the FIRMWARE_DIRS
+ for DIR in $FIRMWARE_DIRS; do
+ try_firmware $DIR/$FIRMWARE
+ done
+fi
next reply other threads:[~2008-07-01 4:04 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-07-01 4:04 Sebastian Kuzminsky [this message]
2008-07-01 5:20 ` absolute firmware paths Marcel Holtmann
2008-07-04 3:04 ` Sebastian Kuzminsky
2008-07-04 4:50 ` Marcel Holtmann
2008-07-04 6:20 ` Sebastian Kuzminsky
2008-07-04 8:30 ` Marcel Holtmann
2008-07-05 16:13 ` Sebastian Kuzminsky
2008-07-05 17:24 ` Marcel Holtmann
2008-07-05 18:42 ` Sebastian Kuzminsky
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=200806302204.05544.seb@highlab.com \
--to=seb@highlab.com \
--cc=linux-hotplug@vger.kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).