From owner-freebsd-isdn Sun Feb 20 15:32:34 2000 Delivered-To: freebsd-isdn@freebsd.org Received: from arg1.demon.co.uk (arg1.demon.co.uk [194.222.34.166]) by hub.freebsd.org (Postfix) with ESMTP id 15EA637C02A for ; Sun, 20 Feb 2000 15:32:27 -0800 (PST) (envelope-from arg@arg1.demon.co.uk) Received: from localhost (arg@localhost) by arg1.demon.co.uk (8.8.8/8.8.8) with ESMTP id XAA20982; Sun, 20 Feb 2000 23:32:22 GMT (envelope-from arg@arg1.demon.co.uk) Date: Sun, 20 Feb 2000 23:32:21 +0000 (GMT) From: Andrew Gordon X-Sender: arg@server.arg.sj.co.uk To: Hellmuth Michaelis Cc: dfr@nlsystems.com, freebsd-isdn@freebsd.org Subject: Re: Big ATA problems In-Reply-To: <20000220191947.A58381F17@bert.kts.org> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-freebsd-isdn@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org On Sun, 20 Feb 2000, Hellmuth Michaelis wrote: > Andrew Gordon wrote: > > On Sun, 20 Feb 2000, Hellmuth Michaelis wrote: > > > > > > A typical isic hardware has an ISAC and an HSCX chip onboard. The ISAC > > > chip does the D-channel handling and uses offsets 0-0x2b and 0x30-0x3b, > > > the HSCX (B-channels) uses offsets 0-0x3b and 0x40-0x73. > > > > But in the case of the teles16.3, it does _not_ use offsets 0x00-0x3b in > > the HSCX or ISAC: the ASIC on the card has 'folded' the address space so > > that the fifo appears at an address 3 bytes after the last register (0x3e > > with the current scheme - see tels0163_read_fifo()). > > Oh yes, you are right! I was (and am still a bit) confused. > > So it uses 0x20-0x3e for the ISAC and 0x20-0x3e and 0x60-0x7e for the HSCX > and at least three bytes at its base address, right ? Well, this depends where you measure the offsets from! With the current bus space allocations, ISAC/HSCX-A/HSCX-B all use offsets 0x20-0x3e relative to the base addresses 0x160 etc. When the bus allocations have been cut down to the right size, each will use offsets 0x00-0x1e within a size 0x20 allocation at 0x180 etc. I notice that in i4b/layer1/isa_isic.c (ie. OpenBSD/NetBSD) the bus_space_map calls use the "correct" starting addresses (0x180, 0x580, 0x980, 0xd80) but still have the wrong sizes. I haven't analysed how this works. Attached is a patch that _might_ do the right thing on FreeBSD. I have fiddled the offsets in tels0163_write_reg/tels0163_read_reg so that the register numbers remain unchanged. I am particularly unsure if I have done the right thing with the allocation at 0xd80 - I copied the code from elsewhere, but I don't understand NewBus well enough to know if this is right. > > This makes sense. Now the real question left is are this the only locations > where the card is driving the bus ? I will test this as soon as I can dismantle the machine with my 16.3 card in it. To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-isdn" in the body of the message