[linux-dvb] linux-dvb Digest, Vol 44, Issue 60

Steven Toth stoth at linuxtv.org
Sun Sep 14 02:08:37 CEST 2008

Paul Chubb wrote:
> Hi,
>      there is a good book on kernel development by Robert Love - Linux 
> Kernel Development. I read about two thirds of it. Lots of useful 
> information but I found it difficult to get a wide viewpoint of the 
> process. It would be great to have beside you as a reference. Looking on 
> Amazon - I wanted to check the details - there are several other books 
> including linux device drivers by Rubini.
> Cheers Paul
> Joe Djemal wrote:
>> I concur with the below. I can code in quite a few languages including 
>> assembly languages and I asked for a pointer on where to get started with 
>> learning how to make a Linux driver and there was complete silence as there 
>> was with my previous inquiry.
>> Come on guys, I've been Googling but where do I start?
>> Joe

Hey Joe, I didn't see your first request, sorry.

The Linux Drivers Manual (oreilly) is a good place to start for a 
generic overview of the kernel driver features. It's also online 
downloadable for free in PDF form.

Jumping head first into linuxtv.org is a steep learning curve if you 
haven't done driver work before. Get comfortable building the source 
tree (see the wiki). I'd then suggest you look at the small drivers 
(common/tuners) would be a good place to start.

Look at the struct_ interfaces that each of the smaller drivers use and 
you'll start to see the major interfaces between different parts of the 
kernel (tuners and demodulators) ( files 
inlinux/drivers/media/dvb/frontends). In the demodulator drivers you'll 
see dvb_frontend_ops, it contains the callbacks allowing other parts of 
the kernel (dvb/dvb-core/*.[hc]) to call the demodulators for 
configuration and tuning purposes. When applications tune then call 
interfaces in dvb-core, this marshals the data and passes those calls 
onto the demodulator drivers.

Tuners and demodulators are a good place to start as the drivers are 
generally fairly small. Get to grips with this before you look at the 
physical pci/pcie/usb drivers, they get large quickly and can easily 
confuse. Limit you learning to a specific field (tuners and demods) and 
submit a few cleanup patches. This is how most people start.

No substitute for look at the source code and finding the common 
structures that all tuners and demodulators use.

No good book on linux-dvb exists, apart form the spec (see linuxtv.org) 
and the actual project source code.

This is where I'd suggest you begin your journey.

Welcome, and good luck!

- Steve

More information about the linux-dvb mailing list