[sorry - bad previous post]
I was going to ask a few questions to Greg KH when he told me that
my questions "look very reasonable for there, as long as I also
post my code".
So here is the context: we are developping 2 multi-IO boards at the
request of our customer and, unfortunately, they asked us to
develop their driver for Linux 2.4. As they are evaluating the
possibility to switch to 2.6 in some months I'm writing the driver
with 2.6 in mind.
I have already made some basic char drivers for our custom ARM
systems (GPIO/ADC/FPGA) and even begun a custom ARM-based
architecture support. I have read, of course, a lot of documentation
before: LDD2, LDD3 (of course), CodingStyle, How to NOT write a
device driver, writing portable device drivers, Device Drivers DOs
and DON'Ts and some other books, web sites and PDF about embedded
These boards will present the user a bunch of IO lines a bit like
GPIO. Registers are to be mapped into memory. By now the design is
not complete and we still are discussing if registers will present
information for all lines (eg: a data register for all lines, an
interrupt register holding information for all lines...) or 1
register per line holding the all information related to that line
(data, interrupt type, interrupt occured...). Anyway, that's not
really important right now.
I have already written some code for this driver. As I saw, in the
FAQ, that I might be well advised to put my code on a website/ftp,
here it is: http://tnemeth.free.fr/projets/btmio.c
My questions are the following ones:
- I use a probe() function that calls request_region() in order to
have access to the boards' registers. I have called ioremap() on
the requested region. Is that the right thing to do?
- I think I should make a "char" driver to allow access to device
nodes and this driver is registered at loading ...