Re: isa memory address

From: Maciej W. Rozycki
Date: Wed Nov 10 2004 - 22:56:19 EST


On Wed, 10 Nov 2004, Antonino Sergi wrote:

> > Because you are trying to use the region in the I/O port space. That's
> > probably not what you want to do and an 8-bit ISA board cannot decode it
> > at all anyway. Actually for some platforms using the I/O space outside
> > the low 16-bit range may be quite difficult even for buses and devices
> > that support it and Linux does not support it then, either. So Linux
> > correctly informs you you cannot use that range.
>
> This is actually not clear for me.

The port I/O space range differs among platforms. You get -EBUSY in a
response to a request for a range of ports outside the supported range.

> > ... or better yet request_mem_region()/release_resource(), as the former
> > is deprecated and will be removed.
>
> I tried but (on 2.4.2):
> - request_region fails but, ignoring it and remapping physical address
> to virtual, everything works fine, except for release_region, of course.
> - request_mem_region works but what I get from communication with the
> actual device are numbers that sometimes are surely wrong.

As both request_region() and request_mem_region() merely reserve
different resources in Linux structures, you can't get a different
behavior from your device depending on which one you call, if any at all,
unless you change code elsewhere at the same time.

> I couldn't understand what is the actual difference between
> ioport_resource and iomem_resource to track the problem.

The former holds I/O resources mapped in the port space, whilst the
latter holds ones mapped in the memory space. The spaces use different
cycles each at the bus the destined device is located on.

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