[linux 2.4.18] via-rhine.c

Pawan Deepika (pawan_deepika@yahoo.com)
Mon, 19 May 2003 12:43:17 -0700 (PDT)


Hi,

I am learning device driver only now. I was going
through the source code in via-rhine.c. What I
understand till now is that in Memory-mapped devices,
I/O operation is performed using
read(b/w/l)/write(b/w/l) functions while in IO mapped
devices it is done using in/out(b/w/l). Am I right?

But in via-rhine.c I notice use of inb and outb even
in memory mapped case(code is shown below)

------------------------------------------------------
#ifdef USE_MEM
530 static void __devinit enable_mmio(long ioaddr, int
chip_id)
531 {
532 int n;
533 if (chip_id == VT3043 || chip_id ==
VT86C100A) {
534 /* More recent docs say that this
bit is reserved ... */
535 n = inb(ioaddr + ConfigA) | 0x20;
536 outb(n, ioaddr + ConfigA);
537 } else if (chip_id == VT6102) {
538 n = inb(ioaddr + ConfigD) | 0x80;
539 outb(n, ioaddr + ConfigD);
540 }
541 }
542 #endif
-----------------------------------------------------

Can anyone tell me how does it work here? Also, don't
we need to allocate I/O ports(using request_region() )
before performing any inb/outb operations?

Please advise.

Thanks & regards,
Deepika

__________________________________
Do you Yahoo!?
The New Yahoo! Search - Faster. Easier. Bingo.
http://search.yahoo.com
-
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/