Thanks for your replies.
It helped to change the readb() with inb() and writeb() with outb().
Michael
----- Original Message -----
From: "Michael Nielsen" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Saturday, October 27, 2001 1:03 PM
Subject: [rtl] programming IO
> Hi!
> Even though my problem isn't concerning realtime yet, i hope that you will be able
>to help out.
> I have that some of you have maked some programs accessing IO, and thats where my
>problem is right now.
> I am trying to make a realtime device driver ARCNET. The project is in its early
>stages and i just start out with trying to make a device driver then later on, make
>it realtime.
> But it is givin me some problems when i try to write/read to the ISA-netcard.
> The ISA-card is at adress 0x300 (the card is I/O mapped).
> The ISA-card have some internal RAM.
> My problem is like this : i write something to the internal RAM via a data-register,
>then i write "something" else to the data-register, the i read from the internal RAM
>(same adress as i wrote to earlier) (this read should put data into the
>data-register), but i only read the "something" that i temporary wrote to the
>data-register before.
> I can easily register my ISA-card to port 0x300.
> I have put the source code at the buttom of this email.
>
> Does somebody have any idea to help me out ?
>
> Thanks in advance
> Michael
>
> //source-code starts here
>
> #ifndef __KERNEL__
> # define __KERNEL__
> #endif
> #ifndef MODULE
> # define MODULE
> #endif
>
> #include <linux/module.h>
> #include <linux/version.h>
> #include <linux/kernel.h>
> #include <linux/ioport.h>
> #include <linux/errno.h>
> #include <asm/system.h>
> #include <asm/bitops.h>
> #include <asm/io.h>
>
> #define ADRESS 0x300
>
> /* Define adress for most used regsters*/
> #define STATUS 0
> #define INTMASK 0
> #define COMMAND 1
> #define DIAG 1
> #define ADR_PTR_H 2
> #define ADR_PTR_L 3
> #define DATA 4
> #define SUBADR 5
> #define CONFIG 6
> #define REG7 7
> #define READ 0x80 //NO DMA
> #define WRITE 0x0 //NO DMA
>
> /*funktion til at initialisere isa-kortet*/
> void init_card(void){
> int value;
> void *io_base;
> io_base = ioremap(ADRESS,8);
> writeb(1,io_base+SUBADR); //prepare to write NODEID
> writeb(241,io_base+REG7); //NODEID=241
> writeb(0x7,io_base+DATA); //put 0x7 into data-register
> writeb(WRITE,io_base+ADR_PTR_H); //prepare to write
> writeb(0x11,io_base+ADR_PTR_L); //write to odd adr
> writeb(0xff,io_base+DATA); // put something else into data-register
>than what was written
> writeb(READ,io_base+ADR_PTR_H); //prepare to read
> writeb(0x11,io_base+ADR_PTR_L); //read at adr=0x11
> value=readb(io_base+DATA);
> printk("First READ gives : %X \n",value);
> iounmap(io_base);
> }
>
> int init_module(void){
> int errno;
> char *nam="test driver";
> request_region(ADRESS,8,nam);
> init_card();
> return 0;
> }
>
> void cleanup_module(void){
> release_region(ADRESS,8);
> }
>
>
>
>
>
> -- [rtl] ---
> To unsubscribe:
> echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR
> echo "unsubscribe rtl <Your_email>" | mail [EMAIL PROTECTED]
> --
> For more information on Real-Time Linux see:
> http://www.rtlinux.org/
>
>
>
-- [rtl] ---
To unsubscribe:
echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR
echo "unsubscribe rtl <Your_email>" | mail [EMAIL PROTECTED]
--
For more information on Real-Time Linux see:
http://www.rtlinux.org/