mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* PCI driver architecture [repost]
@ 2008-05-21 13:14 Thomas Nemeth
  0 siblings, 0 replies; only message in thread
From: Thomas Nemeth @ 2008-05-21 13:14 UTC (permalink / raw)
  To: linux-kernel

[-- Attachment #1: Type: text/plain, Size: 2958 bytes --]

[sorry - bad previous post]

    Hi!

    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
    linux.

    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 time. Is that
      right too?
      For now I coded the following things:
      - driver_init calls pci_register_driver and register_chrdev
      - device_probe sets up the detected boards
      - when a program opens a device node, if the board has not been
        configured by the probe function, it returns an error.

    - I have to use IOCTLs to manage configuration of (eg) interrupts
      (set/get[/reset] interrupt type, read/write to only 1 line). As it
      is something frowned upon, where could I get some IOCTLs to reuse?


    As I haven't subscribed to the list could I be CC'd for the reply ?
    Thanks in advance.

Thomas
-- 
Thomas Nemeth - Ingénieur d'Études en Informatique Industrielle
                Industrial Computing Software Designer
BETAtech - 15, rue Apollo, Z.A. de Montredon, 31240, L'Union.
05 34 30 40 00 (standard)  /  05 34 30 40 09 (ligne directe)

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2008-05-21 13:14 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-05-21 13:14 PCI driver architecture [repost] Thomas Nemeth

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®