Commit Graph

98856 Commits

Author SHA1 Message Date
David Woodhouse 04a33e406a cpia2: use request_firmware()
Thanks for Jaswinder Singh for converting the firmware blob itself to ihex.

Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
2008-07-14 14:43:28 -07:00
David Woodhouse 547d8bb7dd ip2: use request_firmware()
Converted with help from Jaswinder Singh

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Acked-by: Alan Cox <alan@redhat.com>
2008-07-10 14:49:41 +01:00
David Woodhouse 27d202fff1 firmware: convert Ambassador ATM driver to request_firmware()
Since it had various regions to be loaded to separate addresses, and it
wanted to do them in fairly small chunks anyway, switch it to use the
new ihex code. Encode the start address in the first record.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Acked-by: Chas Williams <chas@cmf.nrl.navy.mil>
2008-07-10 14:49:39 +01:00
David Woodhouse ec6752f5af whiteheat: use request_firmware()
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2008-07-10 14:49:38 +01:00
David Woodhouse 5f24e2d6b4 ti_usb_3410_5052: use request_firmware()
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2008-07-10 14:49:34 +01:00
David Woodhouse b8e24bfabb emi62: use request_firmware()
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2008-07-10 14:49:14 +01:00
David Woodhouse ae93a55bf9 emi26: use request_firmware()
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2008-07-10 14:49:12 +01:00
David Woodhouse 3edbf98b86 keyspan_pda: use request_firmware()
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2008-07-10 14:49:09 +01:00
David Woodhouse 2971c579f9 keyspan: use request_firmware()
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2008-07-10 14:48:49 +01:00
David Woodhouse 0a2a736afa ttusb-budget: use request_firmware()
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Acked-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2008-07-10 14:47:53 +01:00
David Woodhouse 79682499d9 kaweth: use request_firmware()
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2008-07-10 14:47:51 +01:00
David Woodhouse 0f805b86c9 smctr: use request_firmware()
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2008-07-10 14:47:50 +01:00
David Woodhouse 18ee6dfae8 firmware: convert ymfpci driver to use firmware loader exclusively
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2008-07-10 14:47:48 +01:00
David Woodhouse a292f404fa firmware: convert maestro3 driver to use firmware loader exclusively
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2008-07-10 14:47:46 +01:00
David Woodhouse 76770664dc firmware: convert korg1212 driver to use firmware loader exclusively
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2008-07-10 14:47:44 +01:00
David Woodhouse 59890f74e5 ihex: Add support for long records to ihex2fw.c
Some drivers could do with using records like Intel HEX, but with each
record being larger than 256 bytes. This has been possible in the binary
representation (struct ihex_binrec) in the kernel since the beginning --
at least of the the current version of history. But we haven't been able
to represent that in the .HEX files which get converted to .fw files.

This adds a '-w' option to ihex2fw to make it interpret the first _two_
bytes of each line as the record length, instead of only one byte. And
adds makefile rules for %.H16->%.fw which use that.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2008-07-10 14:47:42 +01:00
David Woodhouse 8bd6b2229b ihex: add ihex2fw tool for converting HEX files into firmware images
Not the straight conversion to binary which objcopy can do for us, but
actually representing each record with its original {addr, length},
because some drivers need that information preserved.

Fix up 'firmware_install' to be able to build $(hostprogs-y) too.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2008-07-10 14:47:41 +01:00
David Woodhouse f1485f3deb ihex: request_ihex_firmware() function to load and validate firmware
Provide a helper to load the file and validate it in one call, to
simplify error handling in the drivers which are going to use it.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2008-07-10 14:47:38 +01:00
David Woodhouse bacfe09dd7 ihex.h: binary representation of ihex records
Some devices need their firmware as a set of {address, len, data...}
records in some specific order rather than a simple blob.

The normal way of doing this kind of thing is 'ihex', which is a text
format and not entirely suitable for use in the kernel.

This provides a binary representation which is very similar, but much
more compact -- and a helper routine to skip to the next record,
because the alignment constraints mean that everybody will screw it up
for themselves otherwise.

Also a helper function which can verify that a 'struct firmware'
contains a valid set of ihex records, and that following them won't run
off the end of the loaded data.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2008-07-10 14:47:36 +01:00
David Woodhouse 88ecf814c4 firmware: Add firmware installation to modules_install, add firmware_install
For 'make modules_install', install any firmware required by
the modules which are being installed.

Also add a 'make firmware_install' target which doesn't depend on the
configuration, but installs _all_ available in-kernel-tree firmware into
$(INSTALL_FW_PATH), which defaults to /lib/firmware. This is intended
for distributors to make arch-independent (and config-independent)
packages containing firmware.

Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
2008-07-10 14:47:34 +01:00
David Woodhouse d172e7f5c6 firmware: Add CONFIG_FIRMWARE_IN_KERNEL option.
This will control whether we build firmware into the kernel image for
_every_ driver which we convert to request_firmware(), to avoid a
proliferation of 'CONFIG_XXX_FIRMWARE' options for each one.

Default to 'y' for now, which is the wrong thing to do but people seem
to be insisting on it and refusing to even review patches until it's
done. And it does preserve the existing behaviour for built-in drivers.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2008-07-10 14:47:20 +01:00
David Woodhouse 4d2acfbfdf firmware: Add CONFIG_EXTRA_FIRMWARE option
This allows arbitrary firmware files to be included in the static kernel
where the firmware loader can find them without requiring userspace to
be alive.

(Updated and CONFIG_EXTRA_FIRMWARE_DIR added with lots of help from
Johannes Berg).

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
2008-07-10 14:30:39 +01:00
David Woodhouse 5658c76944 firmware: allow firmware files to be built into kernel image
Some drivers have their own hacks to bypass the kernel's firmware loader
and build their firmware into the kernel; this renders those unnecessary.

Other drivers don't use the firmware loader at all, because they always
want the firmware to be available. This allows them to start using the
firmware loader.

A third set of drivers already use the firmware loader, but can't be
used without help from userspace, which sometimes requires an initrd.
This allows them to work in a static kernel.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2008-07-10 14:30:13 +01:00
David Woodhouse b7a39bd0af firmware: make fw->data const
In preparation for supporting firmware files linked into the static
kernel, make fw->data const to ensure that users aren't modifying it (so
that we can pass a pointer to the original in-kernel copy, rather than
having to copy it).

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2008-07-10 14:29:25 +01:00
David Howells fd4f80de46 Fix a const pointer usage warning in the Digigram miXart soundcard driver
Fix a const pointer usage warning in the Digigram miXart soundcard driver.  A
const pointer is being passed to copy_from_user() to load the firmware into.
This is okay in this case because the function has allocated the firmware
struct itself, but the const qualifier is part of the firmware struct - so the
patch casts the const away.

Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
2008-07-10 14:29:01 +01:00
David Howells 67852dc08c Fix a const pointer usage warning in the Digigram pcxhr soundcard driver
Fix a const pointer usage warning in the Digigram pcxhr compatible soundcard
driver.  A const pointer is being passed to copy_from_user() to load the
firmware into.  This is okay in this case because the function has allocated
the firmware struct itself, but the const qualifier is part of the firmware
struct - so the patch casts the const away.

Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
2008-07-10 14:28:52 +01:00
David Howells 9b8a3e4cb1 Fix a const pointer error in the Conexant cx23418 MPEG encoder driver
Fix a const pointer to non-const pointer assignment error in the Conexant
cx23418 MPEG encoder driver.

Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
2008-07-10 14:28:29 +01:00
David Howells 2bca76e89b Fix a const assignment in moxa_load_fw()
Fix an assignment of a const pointer to a non-const pointer in moxa_load_fw().

Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
2008-07-10 14:27:18 +01:00
David Howells b561c74ae2 Fix a const pointer usage warning in the Digigram VX soundcard driver
Fix a const pointer usage warning in the Digigram VX soundcard driver.  A
const pointer is being passed to copy_from_user() to load the firmware into.
This is okay in this case because the function has allocated the firmware
struct itself, but the const qualifier will be part of the firmware 
struct - so the patch casts the const away.

Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
2008-07-10 14:27:11 +01:00
gregkh@suse.de ed5a2825fe isight: treat firmware data as const
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2008-07-10 14:26:45 +01:00
Greg Kroah-Hartman a13b04af71 x86 microcode: firmware data is const
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2008-07-10 14:26:44 +01:00
Greg Kroah-Hartman c6c1c94e82 dell_rbu: firmware data is const
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2008-07-10 14:26:42 +01:00
David Woodhouse b82a82d0a9 ymfpci: treat firmware data as const
Standardise both in-kernel and loaded firmware to be stored as
little-endian instead of host-endian.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2008-07-10 14:26:40 +01:00
David Woodhouse fa6e1cb66e maestro3: treat firmware data as const
The maestro3 driver is byte-swapping its firmware to be host-endian in
advance, when it doesn't seem to be necessary -- we could just use
le16_to_cpu() as we load it.

Doing that means that we need to switch the in-tree firmware to be
little-endian too.

Take the least intrusive way of doing this, which is to switch the
existing snd_m3_convert_from_le() function to convert _to_ little-endian
instead, and use it on the in-tree firmware instead of the loaded
firmware. It's a bit suboptimal but doesn't matter much right now
because we're about to remove the special cases for the in-tree version
anyway.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2008-07-10 14:26:39 +01:00
David Woodhouse c63e87e90a tuners: treat firmware data as const
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2008-07-10 14:26:36 +01:00
David Woodhouse 3a9282cacd gp8psk: treat firmware data as const
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2008-07-10 14:26:34 +01:00
David Woodhouse e62f89f2ae cxusb: treat firmware data as const
...which means allocating our own copy when we want to modify it.

(stupid thinko fixed by mkrufky)

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
2008-07-10 14:26:33 +01:00
David Woodhouse bc179153ae dvb frontends: treat firmware data as const
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2008-07-10 14:26:31 +01:00
David Woodhouse 99b6e4f511 ttusb-dec: treat firmware data as const
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2008-07-10 14:26:29 +01:00
David Woodhouse 4f2a0c3cdb bt8xx: treat firmware data as const
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2008-07-10 14:26:28 +01:00
David Woodhouse 2c733a1678 cxgb3: treat firmware data as const
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2008-07-10 14:26:26 +01:00
David Woodhouse afd636e94d irda-usb: treat firmware data as const
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2008-07-10 14:26:25 +01:00
David Woodhouse 2f26e8afb2 atmel: treat firmware data as const
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2008-07-10 14:26:23 +01:00
David Woodhouse 8b72eb4333 p54: treat firmware data as const
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2008-07-10 14:26:21 +01:00
David Woodhouse f160ebcbeb rt2x00: treat firmware data as const
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2008-07-10 14:26:19 +01:00
David Woodhouse 45ef0bdb18 zd1201: treat firmware data as const
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2008-07-10 14:26:17 +01:00
David Woodhouse 0bc202e0fd aic94xx: treat firmware data as const
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2008-07-10 14:26:15 +01:00
David Woodhouse 3b216d186c cxacru: treat firmware data as const
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2008-07-10 14:26:14 +01:00
David Woodhouse aafcd2f7d6 ueagle-atm: treat firmware data as const
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2008-07-10 14:26:12 +01:00
David Woodhouse 2f0600b639 vx: treat firmware data as const
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2008-07-10 14:26:10 +01:00