You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
V4L/DVB (5829): Firmware extract and loading for opera dvb-usb update
Better way of creating and loading the firmware used. Update for get_dvb_firmware script to extract the files for opera usb-box Help file for creating the firmware added Signed-off-by: Marco Gittler <g.marco@freenet.de> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
This commit is contained in:
committed by
Mauro Carvalho Chehab
parent
b31c33bd8b
commit
59800555f7
@@ -435,9 +435,9 @@ static int opera1_xilinx_load_firmware(struct usb_device *dev,
|
||||
{
|
||||
const struct firmware *fw = NULL;
|
||||
u8 *b, *p;
|
||||
int ret = 0, i;
|
||||
int ret = 0, i,fpgasize=40;
|
||||
u8 testval;
|
||||
info("start downloading fpga firmware");
|
||||
info("start downloading fpga firmware %s",filename);
|
||||
|
||||
if ((ret = request_firmware(&fw, filename, &dev->dev)) != 0) {
|
||||
err("did not find the firmware file. (%s) "
|
||||
@@ -454,17 +454,20 @@ static int opera1_xilinx_load_firmware(struct usb_device *dev,
|
||||
/* clear fpga ? */
|
||||
opera1_xilinx_rw(dev, 0xbc, 0xaa, &fpga_command, 1,
|
||||
OPERA_WRITE_MSG);
|
||||
for (i = 0; p[i] != 0 && i < fw->size;) {
|
||||
for (i = 0; i < fw->size;) {
|
||||
if ( (fw->size - i) <fpgasize){
|
||||
fpgasize=fw->size-i;
|
||||
}
|
||||
b = (u8 *) p + i;
|
||||
if (opera1_xilinx_rw
|
||||
(dev, OPERA_WRITE_FX2, 0x0, b + 1, b[0],
|
||||
OPERA_WRITE_MSG) != b[0]
|
||||
(dev, OPERA_WRITE_FX2, 0x0, b , fpgasize,
|
||||
OPERA_WRITE_MSG) != fpgasize
|
||||
) {
|
||||
err("error while transferring firmware");
|
||||
ret = -EINVAL;
|
||||
break;
|
||||
}
|
||||
i = i + 1 + b[0];
|
||||
i = i + fpgasize;
|
||||
}
|
||||
/* restart the CPU */
|
||||
if (ret || opera1_xilinx_rw
|
||||
@@ -538,7 +541,7 @@ static int opera1_probe(struct usb_interface *intf,
|
||||
|
||||
if (udev->descriptor.idProduct == USB_PID_OPERA1_WARM &&
|
||||
udev->descriptor.idVendor == USB_VID_OPERA1 &&
|
||||
opera1_xilinx_load_firmware(udev, "dvb-usb-opera1-fpga.fw") != 0
|
||||
opera1_xilinx_load_firmware(udev, "dvb-usb-opera1-fpga-01.fw") != 0
|
||||
) {
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user