The patch number 8437 was added via Jean-Francois Moine <[EMAIL PROTECTED]>
to http://linuxtv.org/hg/v4l-dvb master development tree.

Kernel patches in this development tree may be modified to be backward
compatible with older kernels. Compatibility modifications will be
removed before inclusion into the mainstream Kernel

If anyone has any objections, please let us know by sending a message to:
        [EMAIL PROTECTED]

------

merge: v4l-dvb


---

 COPYING                                              |    7 +
 INSTALL                                              |    9 ++
 linux/drivers/media/video/cx25840/cx25840-firmware.c |   27 ++----
 linux/drivers/media/video/videodev.c                 |    4 
 linux/firmware/Makefile                              |   47 +++++++++++
 v4l/Makefile                                         |    6 +
 v4l/firmware/Makefile                                |   30 +++++--
 7 files changed, 107 insertions(+), 23 deletions(-)

diff -r f78709313c7f -r 10faaa0f41db COPYING
--- a/COPYING   Sat Jul 19 11:49:28 2008 +0200
+++ b/COPYING   Sun Jul 20 09:16:13 2008 +0200
@@ -1,3 +1,10 @@
+   NOTE! This copyright does *not* cover the firmware hex files contained
+ under linux/firmware and v4l/firmware directories. Those firmwares are here 
+ just as a convenience to make easier to develop and test V4L/DVB drivers.
+
+                       Mauro Carvalho Chehab
+
+----------------------------------------
 
    NOTE! This copyright does *not* cover user programs that use kernel
  services by normal system calls - this is merely considered normal use
diff -r f78709313c7f -r 10faaa0f41db INSTALL
--- a/INSTALL   Sat Jul 19 11:49:28 2008 +0200
+++ b/INSTALL   Sun Jul 20 09:16:13 2008 +0200
@@ -35,6 +35,15 @@ rminstall    - cleans previous installation
 
 sound-install  - installs the sound modules related to V4L/DVB
                  tree.
+
+======================
+Firmware rules:
+
+firmware       - Create the firmware files that are enclosed at the
+                 tree.
+                 Notice: Only a very few firmwares are currently here
+
+firmware_install- Install firmware files under /lib/firmware
 
 =======================
 Module selection rules:
diff -r f78709313c7f -r 10faaa0f41db 
linux/drivers/media/video/cx25840/cx25840-firmware.c
--- a/linux/drivers/media/video/cx25840/cx25840-firmware.c      Sat Jul 19 
11:49:28 2008 +0200
+++ b/linux/drivers/media/video/cx25840/cx25840-firmware.c      Sun Jul 20 
09:16:13 2008 +0200
@@ -80,7 +80,7 @@ static int check_fw_load(struct i2c_clie
        return 0;
 }
 
-static int fw_write(struct i2c_client *client, u8 *data, int size)
+static int fw_write(struct i2c_client *client, const u8 *data, int size)
 {
        if (i2c_master_send(client, data, size) < size) {
                v4l_err(client, "firmware load i2c failure\n");
@@ -94,7 +94,8 @@ int cx25840_loadfw(struct i2c_client *cl
 {
        struct cx25840_state *state = i2c_get_clientdata(client);
        const struct firmware *fw = NULL;
-       u8 buffer[4], *ptr;
+       u8 buffer[FWSEND];
+       const u8 *ptr;
        int size, retval;
 
        if (state->is_cx23885)
@@ -109,29 +110,23 @@ int cx25840_loadfw(struct i2c_client *cl
 
        buffer[0] = 0x08;
        buffer[1] = 0x02;
-       buffer[2] = fw->data[0];
-       buffer[3] = fw->data[1];
-       retval = fw_write(client, buffer, 4);
 
-       if (retval < 0) {
-               release_firmware(fw);
-               return retval;
-       }
-
-       size = fw->size - 2;
+       size = fw->size;
        ptr = fw->data;
        while (size > 0) {
-               ptr[0] = 0x08;
-               ptr[1] = 0x02;
-               retval = fw_write(client, ptr, min(FWSEND, size + 2));
+               int len = min(FWSEND - 2, size);
+
+               memcpy(buffer + 2, ptr, len);
+
+               retval = fw_write(client, buffer, len + 2);
 
                if (retval < 0) {
                        release_firmware(fw);
                        return retval;
                }
 
-               size -= FWSEND - 2;
-               ptr += FWSEND - 2;
+               size -= len;
+               ptr += len;
        }
 
        end_fw_load(client);
diff -r f78709313c7f -r 10faaa0f41db linux/drivers/media/video/videodev.c
--- a/linux/drivers/media/video/videodev.c      Sat Jul 19 11:49:28 2008 +0200
+++ b/linux/drivers/media/video/videodev.c      Sun Jul 20 09:16:13 2008 +0200
@@ -40,6 +40,7 @@
 #include <linux/init.h>
 #include <linux/kmod.h>
 #include <linux/slab.h>
+#include <linux/smp_lock.h>
 #include <asm/uaccess.h>
 #include <asm/system.h>
 
@@ -492,6 +493,7 @@ static int video_open(struct inode *inod
 
        if(minor>=VIDEO_NUM_DEVICES)
                return -ENODEV;
+       lock_kernel();
        mutex_lock(&videodev_lock);
        vfl=video_device[minor];
        if(vfl==NULL) {
@@ -501,6 +503,7 @@ static int video_open(struct inode *inod
                vfl=video_device[minor];
                if (vfl==NULL) {
                        mutex_unlock(&videodev_lock);
+                       unlock_kernel();
                        return -ENODEV;
                }
        }
@@ -518,6 +521,7 @@ static int video_open(struct inode *inod
        }
        fops_put(old_fops);
        mutex_unlock(&videodev_lock);
+       unlock_kernel();
        return err;
 }
 
diff -r f78709313c7f -r 10faaa0f41db linux/firmware/Makefile
--- a/linux/firmware/Makefile   Sat Jul 19 11:49:28 2008 +0200
+++ b/linux/firmware/Makefile   Sun Jul 20 09:16:13 2008 +0200
@@ -20,8 +20,55 @@ fw-external-y := $(subst ",,$(CONFIG_EXT
 # accurate. In the latter case it doesn't matter -- it'll use 
$(fw-shipped-all).
 # But be aware that the config file might not be included at all.
 
+fw-shipped-$(CONFIG_ATARI_DSP56K) += dsp56k/bootstrap.bin
+fw-shipped-$(CONFIG_ATM_AMBASSADOR) += atmsar11.fw
+fw-shipped-$(CONFIG_COMPUTONE) += intelliport2.bin
 fw-shipped-$(CONFIG_DVB_TTUSB_BUDGET) += ttusb-budget/dspbootcode.bin
+fw-shipped-$(CONFIG_SMCTR) += tr_smctr.bin
+fw-shipped-$(CONFIG_SND_KORG1212) += korg/k1212.dsp
+fw-shipped-$(CONFIG_SND_MAESTRO3) += ess/maestro3_assp_kernel.fw \
+                                    ess/maestro3_assp_minisrc.fw
+fw-shipped-$(CONFIG_SND_SB16_CSP) += sb16/mulaw_main.csp sb16/alaw_main.csp \
+                                    sb16/ima_adpcm_init.csp \
+                                    sb16/ima_adpcm_playback.csp \
+                                    sb16/ima_adpcm_capture.csp
+fw-shipped-$(CONFIG_SND_YMFPCI) += yamaha/ds1_ctrl.fw yamaha/ds1_dsp.fw \
+                                  yamaha/ds1e_ctrl.fw
 fw-shipped-$(CONFIG_USB_DABUSB) += dabusb/firmware.fw dabusb/bitstream.bin
+fw-shipped-$(CONFIG_USB_EMI26) += emi26/loader.fw emi26/firmware.fw \
+                                 emi26/bitstream.fw
+fw-shipped-$(CONFIG_USB_EMI62) += emi62/loader.fw emi62/bitstream.fw \
+                                 emi62/spdif.fw emi62/midi.fw
+fw-shipped-$(CONFIG_USB_KAWETH) += kaweth/new_code.bin kaweth/trigger_code.bin 
\
+                                  kaweth/new_code_fix.bin \
+                                  kaweth/trigger_code_fix.bin
+ifdef CONFIG_FIRMWARE_IN_KERNEL
+fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_MPR) += keyspan/mpr.fw
+fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA18X) += keyspan/usa18x.fw
+fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA19) += keyspan/usa19.fw
+fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA19QI) += keyspan/usa19qi.fw
+fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA19QW) += keyspan/usa19qw.fw
+fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA19W) += keyspan/usa19w.fw
+fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA28) += keyspan/usa28.fw
+fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA28XA) += keyspan/usa28xa.fw
+fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA28XB) += keyspan/usa28xb.fw
+fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA28X) += keyspan/usa28x.fw
+fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA49W) += keyspan/usa49w.fw
+fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA49WLC) += keyspan/usa49wlc.fw
+else
+fw-shipped- += keyspan/mpr.fw keyspan/usa18x.fw keyspan/usa19.fw       \
+       keyspan/usa19qi.fw keyspan/usa19qw.fw keyspan/usa19w.fw         \
+       keyspan/usa28.fw keyspan/usa28xa.fw keyspan/usa28xb.fw          \
+       keyspan/usa28x.fw keyspan/usa49w.fw keyspan/usa49wlc.fw
+endif
+fw-shipped-$(CONFIG_USB_SERIAL_TI) += ti_3410.fw ti_5052.fw
+fw-shipped-$(CONFIG_USB_SERIAL_EDGEPORT) += edgeport/boot.fw edgeport/boot2.fw 
\
+                                           edgeport/down.fw edgeport/down2.fw
+fw-shipped-$(CONFIG_USB_SERIAL_EDGEPORT_TI) += edgeport/down3.bin
+fw-shipped-$(CONFIG_USB_SERIAL_WHITEHEAT) += whiteheat_loader.fw whiteheat.fw \
+                                          # whiteheat_loader_debug.fw
+fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_PDA) += keyspan_pda/keyspan_pda.fw
+fw-shipped-$(CONFIG_USB_SERIAL_XIRCOM) += keyspan_pda/xircom_pgs.fw
 fw-shipped-$(CONFIG_USB_VICAM) += vicam/firmware.fw
 fw-shipped-$(CONFIG_VIDEO_CPIA2) += cpia2/stv0672_vp4.bin
 
diff -r f78709313c7f -r 10faaa0f41db v4l/Makefile
--- a/v4l/Makefile      Sat Jul 19 11:49:28 2008 +0200
+++ b/v4l/Makefile      Sun Jul 20 09:16:13 2008 +0200
@@ -39,7 +39,7 @@ endif # TOPDIR
 #################################################
 # default compilation rule
 
-default:: config-compat.h Makefile.media links oss # firmware
+default:: config-compat.h Makefile.media links oss
        @echo Kernel build directory is $(OUTDIR)
        $(MAKE) -C $(OUTDIR) SUBDIRS=$(PWD) $(MYCFLAGS) modules
        ./scripts/rmmod.pl check
@@ -205,6 +205,9 @@ install:: media-install
 install:: media-install
 
 remove rminstall:: media-rminstall
+
+firmware_install::
+       make -C firmware install
 
 #################################################
 # Compiling preparation rules
@@ -287,6 +290,7 @@ distclean:: clean
        -rm -f scripts/lxdialog scripts/kconfig oss
        @find .. -name '*.orig' -exec rm '{}' \;
        @find .. -name '*.rej' -exec rm '{}' \;
+       $(MAKE) -C firmware distclean
 
 #################################################
 # Kernel module insert/removal rules
diff -r f78709313c7f -r 10faaa0f41db v4l/firmware/Makefile
--- a/v4l/firmware/Makefile     Sat Jul 19 11:49:28 2008 +0200
+++ b/v4l/firmware/Makefile     Sun Jul 20 09:16:13 2008 +0200
@@ -1,27 +1,45 @@ TARGETS = ihex2fw ttusb-budget vicam.fw 
-TARGETS = ihex2fw ttusb-budget vicam.fw dabusb_bitstream dabusb.fw stv0672_v4
+DIRS = vicam dabusb ttusb-budget cpia2
+
+TARGETS = ihex2fw vicam/firmware.fw dabusb/firmware.fw dabusb/bitstream.bin 
ttusb-budget/dspbootcode.bin cpia2/stv0672_vp4.bin
+
+####
 
 default: $(TARGETS)
 
 clean:
        -rm $(TARGETS)
 
+distclean: clean
+       -rmdir $(DIRS)
+
+install: default
+       -for i in $(DIRS); do mkdir /lib/firmware/$$i; done
+       -for i in $(TARGETS); do cp $$i /lib/firmware/$$i; done
+       
+
+######
+
+mkdir:
+       -mkdir $(DIRS)
+
 
 ihex2fw: ../../linux/firmware/ihex2fw.c
        gcc -Wall -o $@ $<
 
-vicam.fw: ../../linux/firmware/vicam/firmware.H16
+vicam/firmware.fw: ../../linux/firmware/vicam/firmware.H16 mkdir
+       -mkdir vicam
        ./ihex2fw -w $< $@
 
-dabusb.fw: ../../linux/firmware/dabusb/firmware.HEX
+dabusb/firmware.fw: ../../linux/firmware/dabusb/firmware.HEX mkdir
        ./ihex2fw $< $@
 
-ttusb-budget: ../../linux/firmware/ttusb-budget/dspbootcode.bin.ihex
+ttusb-budget/dspbootcode.bin: 
../../linux/firmware/ttusb-budget/dspbootcode.bin.ihex mkdir
        objcopy -Iihex -Obinary $< $@
 
 
-dabusb_bitstream: ../../linux/firmware/dabusb/bitstream.bin.ihex
+dabusb/bitstream.bin: ../../linux/firmware/dabusb/bitstream.bin.ihex mkdir
        objcopy -Iihex -Obinary $< $@
 
-stv0672_v4: ../../linux/firmware/cpia2/stv0672_vp4.bin.ihex
+cpia2/stv0672_vp4.bin: ../../linux/firmware/cpia2/stv0672_vp4.bin.ihex mkdir
        objcopy -Iihex -Obinary $< $@
 


---

Patch is available at: 
http://linuxtv.org/hg/v4l-dvb/rev/10faaa0f41db5ce8269fcaf7443330ebe04b0d8a

_______________________________________________
linuxtv-commits mailing list
linuxtv-commits@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to