Merge branch 'for-2.6.27' of git://git.infradead.org/users/dwmw2/firmware-2.6
* 'for-2.6.27' of git://git.infradead.org/users/dwmw2/firmware-2.6: (64 commits) firmware: convert sb16_csp driver to use firmware loader exclusively dsp56k: use request_firmware edgeport-ti: use request_firmware() edgeport: use request_firmware() vicam: use request_firmware() dabusb: use request_firmware() cpia2: use request_firmware() ip2: use request_firmware() firmware: convert Ambassador ATM driver to request_firmware() whiteheat: use request_firmware() ti_usb_3410_5052: use request_firmware() emi62: use request_firmware() emi26: use request_firmware() keyspan_pda: use request_firmware() keyspan: use request_firmware() ttusb-budget: use request_firmware() kaweth: use request_firmware() smctr: use request_firmware() firmware: convert ymfpci driver to use firmware loader exclusively firmware: convert maestro3 driver to use firmware loader exclusively ... Fix up trivial conflicts with BKL removal in drivers/char/dsp56k.c and drivers/char/ip2/ip2main.c manually.
This commit is contained in:
@@ -34,6 +34,8 @@
|
||||
#include <linux/init.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/smp_lock.h>
|
||||
#include <linux/firmware.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
||||
#include <asm/atarihw.h>
|
||||
#include <asm/traps.h>
|
||||
@@ -93,49 +95,6 @@
|
||||
} \
|
||||
}
|
||||
|
||||
/* DSP56001 bootstrap code */
|
||||
static char bootstrap[] = {
|
||||
0x0c, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x60, 0xf4, 0x00, 0x00, 0x00, 0x4f, 0x61, 0xf4,
|
||||
0x00, 0x00, 0x7e, 0xa9, 0x06, 0x2e, 0x80, 0x00, 0x00, 0x47,
|
||||
0x07, 0xd8, 0x84, 0x07, 0x59, 0x84, 0x08, 0xf4, 0xa8, 0x00,
|
||||
0x00, 0x04, 0x08, 0xf4, 0xbf, 0x00, 0x0c, 0x00, 0x00, 0xfe,
|
||||
0xb8, 0x0a, 0xf0, 0x80, 0x00, 0x7e, 0xa9, 0x08, 0xf4, 0xa0,
|
||||
0x00, 0x00, 0x01, 0x08, 0xf4, 0xbe, 0x00, 0x00, 0x00, 0x0a,
|
||||
0xa9, 0x80, 0x00, 0x7e, 0xad, 0x08, 0x4e, 0x2b, 0x44, 0xf4,
|
||||
0x00, 0x00, 0x00, 0x03, 0x44, 0xf4, 0x45, 0x00, 0x00, 0x01,
|
||||
0x0e, 0xa0, 0x00, 0x0a, 0xa9, 0x80, 0x00, 0x7e, 0xb5, 0x08,
|
||||
0x50, 0x2b, 0x0a, 0xa9, 0x80, 0x00, 0x7e, 0xb8, 0x08, 0x46,
|
||||
0x2b, 0x44, 0xf4, 0x45, 0x00, 0x00, 0x02, 0x0a, 0xf0, 0xaa,
|
||||
0x00, 0x7e, 0xc9, 0x20, 0x00, 0x45, 0x0a, 0xf0, 0xaa, 0x00,
|
||||
0x7e, 0xd0, 0x06, 0xc6, 0x00, 0x00, 0x7e, 0xc6, 0x0a, 0xa9,
|
||||
0x80, 0x00, 0x7e, 0xc4, 0x08, 0x58, 0x6b, 0x0a, 0xf0, 0x80,
|
||||
0x00, 0x7e, 0xad, 0x06, 0xc6, 0x00, 0x00, 0x7e, 0xcd, 0x0a,
|
||||
0xa9, 0x80, 0x00, 0x7e, 0xcb, 0x08, 0x58, 0xab, 0x0a, 0xf0,
|
||||
0x80, 0x00, 0x7e, 0xad, 0x06, 0xc6, 0x00, 0x00, 0x7e, 0xd4,
|
||||
0x0a, 0xa9, 0x80, 0x00, 0x7e, 0xd2, 0x08, 0x58, 0xeb, 0x0a,
|
||||
0xf0, 0x80, 0x00, 0x7e, 0xad};
|
||||
static int sizeof_bootstrap = 375;
|
||||
|
||||
|
||||
static struct dsp56k_device {
|
||||
unsigned long in_use;
|
||||
long maxio, timeout;
|
||||
@@ -165,18 +124,40 @@ static int dsp56k_reset(void)
|
||||
|
||||
static int dsp56k_upload(u_char __user *bin, int len)
|
||||
{
|
||||
struct platform_device *pdev;
|
||||
const struct firmware *fw;
|
||||
const char fw_name[] = "dsp56k/bootstrap.bin";
|
||||
int err;
|
||||
int i;
|
||||
u_char *p;
|
||||
|
||||
|
||||
dsp56k_reset();
|
||||
|
||||
p = bootstrap;
|
||||
for (i = 0; i < sizeof_bootstrap/3; i++) {
|
||||
/* tx_wait(10); */
|
||||
dsp56k_host_interface.data.b[1] = *p++;
|
||||
dsp56k_host_interface.data.b[2] = *p++;
|
||||
dsp56k_host_interface.data.b[3] = *p++;
|
||||
|
||||
pdev = platform_device_register_simple("dsp56k", 0, NULL, 0);
|
||||
if (IS_ERR(pdev)) {
|
||||
printk(KERN_ERR "Failed to register device for \"%s\"\n",
|
||||
fw_name);
|
||||
return -EINVAL;
|
||||
}
|
||||
err = request_firmware(&fw, fw_name, &pdev->dev);
|
||||
platform_device_unregister(pdev);
|
||||
if (err) {
|
||||
printk(KERN_ERR "Failed to load image \"%s\" err %d\n",
|
||||
fw_name, err);
|
||||
return err;
|
||||
}
|
||||
if (fw->size % 3) {
|
||||
printk(KERN_ERR "Bogus length %d in image \"%s\"\n",
|
||||
fw->size, fw_name);
|
||||
release_firmware(fw);
|
||||
return -EINVAL;
|
||||
}
|
||||
for (i = 0; i < fw->size; i = i + 3) {
|
||||
/* tx_wait(10); */
|
||||
dsp56k_host_interface.data.b[1] = fw->data[i];
|
||||
dsp56k_host_interface.data.b[2] = fw->data[i + 1];
|
||||
dsp56k_host_interface.data.b[3] = fw->data[i + 2];
|
||||
}
|
||||
release_firmware(fw);
|
||||
for (; i < 512; i++) {
|
||||
/* tx_wait(10); */
|
||||
dsp56k_host_interface.data.b[1] = 0;
|
||||
@@ -540,3 +521,4 @@ static void __exit dsp56k_cleanup_driver(void)
|
||||
module_exit(dsp56k_cleanup_driver);
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_FIRMWARE("dsp56k/bootstrap.bin");
|
||||
|
Viittaa uudesa ongelmassa
Block a user