lkml.org 
[lkml]   [2008]   [Feb]   [4]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
/
Subject[QUESTION] I have a question about making device driver
DateMon, 4 Feb 2008 18:54:30 +0900 (JST)
From ohyama_sec@ariel-ne ...
I have a question about device driver.



I'm writing device driver for parallel port on Linux.



In initial function which is argument of module_init() in my device driver, I reserved I/O address region, 0x378-0x37a, with using request_region() and regist my charactor device driver calling register_chrdev().



After I compile and link it. I insert this module and I can confirm that I obtaind the range of I/O address at /proc/ioports.

But I cannot write data on I/O address line, It means that following check program shows "false".



--- check program ---
#include <linux/types.h>

#include <asm/io.h>

#include <stdio.h>



int main(void){
    int base = 0x378;

    char read, write;



    ioperm(base, 1, 1);



    write = 0xa;

    outb(write, base);

    read = inb(base);



    if((read & 0xf) == write){
        printf("true\n");

    }else{
        printf("false\n");    
    }
    return 0;

}
---


At this time, I unloaded kernel modules which are related to parallel port. they are 'ppdev', 'lp', 'parport_pc' and 'parport'.



What should I do at initial funtion in my module to do I/O.

(The version of kernel that I use is 2.6.19-7.)





===

by Hiroyasu Ohyama



--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2008-02-04 10:17    [from the cache]
©2003-2008