[linux-dvb] How to compile the firmware into the driver?

Klaus Schmidinger Klaus.Schmidinger at cadsoft.de
Sun Dec 4 15:59:55 CET 2005


Gerald Raaf wrote:
> Am Sonntag, 4. Dezember 2005 15:28 schrieb Klaus Schmidinger:
> 
>>Klaus Schmidinger wrote:
>>
>>>I have downloaded the latest driver snapshot from
>>>
>>>  http://linuxtv.org/downloads/snapshots/v4l-dvb-20051202.tar.gz
>>>
>>>and the latest firmware from
>>>
>>>  http://linuxtv.org/downloads/firmware/dvb-ttpci-01.fw-2622
>>>
>>>and expanded the driver source into
>>>
>>>  /home/kls/vdr/DVB-v4l-dvb.2005-12-02
>>>
>>>
>>>What is the simplest method to build this driver and have
>>>it compile the firmware into it?
>>>
>>>I tried writing
>>>
>>>CONFIG_DVB_AV7110_FIRMWARE=y
>>>CONFIG_DVB_AV7110_FIRMWARE_FILE=./dvb-ttpci-01.fw
>>>
>>>into /usr/src/linux/.config and create a symlink in
>>>/home/kls/vdr/DVB-v4l-dvb.2005-12-02/linux/drivers/media/dvb/ttpci
>>>
>>>-rw-r--r--   1 kls users 239956 Dec  4 13:13 dvb-ttpci-01.fw-2622
>>>lrwxrwxrwx   1 kls users     20 Dec  4 13:13 dvb-ttpci-01.fw ->
>>>dvb-ttpci-01.fw-2622
>>>
>>>but apparently that doesn't impress the make process.
>>>
>>>
>>>Is there a simple trick to do this?
>>
>>Ok, so I think I've managed to do this, by editing some source files.
>>I'm still hoping there is a clean way to do this, though.
>>
>>So now I have all the *.ko files in
>>/home/kls/vdr/DVB-v4l-dvb.2005-12-02/v4l, but I can't seen to find out how
>>to properly load them. There used to be an 'insmod.sh' script before the
>>v4l/dvb merge, but that's no
>>longer there.
>>
>>Does anybody know how to properly load the *.ko files?
>>Note that I do _not_ want to do "make install", because I
>>want to be able to have several driver versions in their
>>own directories, and want to switch between these by simply
>>placing a symlink. Therefore I need a way to load and unload
>>the modules from a given driver directory, without copying anything
>>to /lib/modules/...
> 
> 
> go to the directory where the *.ko files are.
> insmod *.ko

This didn't work...

> I think you can use an insmod.sh from old directory.

...but this did - the sequence is important.
I wonder why this script isn't part of the driver source any more...

> What did you change to create the firmware (av7110_firm.h)? Because i didn't 
> manage to do this.

--- /home/kls/vdr/DVB.head/v4l-dvb/v4l/Make.config      2005-11-29 14:36:59.000000000 +0100
+++ Make.config 2005-12-04 14:43:03.919359189 +0100
@@ -19,7 +19,7 @@

  # doesn't build on kernels older than 2.6.12

-CONFIG_VIDEO_BUF_DVB           := n
+CONFIG_VIDEO_BUF_DVB           := m
  CONFIG_VIDEO_CX88_DVB          := n
  CONFIG_VIDEO_SAA7134_DVB       := n

@@ -90,5 +90,7 @@
   CONFIG_DVB_TTUSB_DEC          := m
   CONFIG_VIDEO_SAA7146          := m
   CONFIG_VIDEO_SAA7146_VV       := m
+ CONFIG_DVB_AV7110_FIRMWARE    := y
+ CONFIG_DVB_AV7110_FIRMWARE_FILE := ./dvb-ttpci-01.fw
  endif


--- /home/kls/vdr/DVB.head/v4l-dvb/linux/drivers/media/dvb/ttpci/av7110.c       2005-11-27 00:46:56.000000000 +0100
+++ av7110.c    2005-12-04 14:54:58.478392378 +0100
@@ -1461,6 +1461,7 @@
         return 0;
  }

+#define CONFIG_DVB_AV7110_FIRMWARE_FILE
  #ifdef CONFIG_DVB_AV7110_FIRMWARE_FILE
  #include "av7110_firm.h"
  static void put_firmware(struct av7110* av7110)



Don't know why I had to also change av7110.c, because I would have
expected the CONFIG_DVB_AV7110_FIRMWARE_FILE macro to be set in
Make.config, but at least that way it worked.

Maybe (hopefully!) there is a simpler method of doing this,
but then at least it wasn't obvious to me...

Klaus



More information about the linux-dvb mailing list