Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 9 Sep 1995 01:10:11 +1000
From:      Bruce Evans <bde@zeta.org.au>
To:        bde@zeta.org.au, current@freebsd.org, deischen@iworks.InterWorks.org
Subject:   Re: Getting around conflicts for a driver w/out base address
Message-ID:  <199509081510.BAA20724@godzilla.zeta.org.au>

next in thread | raw e-mail | index | archive | help
>It sounds like you want some sort of sorted linked list of port
>addresses and ranges hanging off the isa_device structure.  If this
>kind of what you're thinking and there aren't enough horses to
>implement it, then I'll volunteer to help out.

>As to config, someone else would probably have to do that.  I'm not
>sure I understand the rules and yacc well enough to hack config.

I don't want to change config very much now.  It can already sort of
handle lists of ports by duplicating entries, e.g.:

device sc0 at isa? port "IO_KBD" tty irq 1 vector scintr # usual
device sc0 at isa? port 0x3b4 iomem 0xb0000 iosiz  0x8000 # portsize  0xc # mda
device sc0 at isa? port 0x3c0 iomem 0xa0000 iosiz 0x10000 # portsize 0x10 # vga
device sc0 at isa? port 0x3d4 iomem 0xb8000 iosiz  0x8000 # portsize  0xc # cga

This gives 4 fairly usable entries in ioconf.c.   An array format is
probably better than a linked list format in all stages until the
tables are actually used.  There are a couple of external representations
and the linked list would have to be linearized for each.  It would be
useful to have some routines for hanging all the info for each device
off a single isa_device structure (so that every driver doesn't have
to search all the devtabs for info about itself).

There might be complications for overlapped ranges.  E.g., vga memory
isn't as shown above - it overlaps mda and cga memory.  Ports such as
the PPI only have conflicts at the bit level.

Bruce



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199509081510.BAA20724>