linux-mips-fnet
[Top] [All Lists]

Re: Hrumph!

To: linux-mips@fnet.fr
Subject: Re: Hrumph!
From: Ralf Baechle <ralf@waldorf-gmbh.de>
Date: Sun, 3 Sep 1995 02:16:12 +0200 (MET DST)
In-reply-to: <199509021556.JAA15992@rover.village.org> from "Warner Losh" at Sep 2, 95 09:56:19 am
Hi,

> Yes.  I did that, and the driver still isn't working, so I must have
> done something wrong.
> 
> : Also, make sure that you have a correct map0_table in kernel/head.S
> : for the RPC44. Without a correct initial mapping nothing will work!
> 
> That's the problem, I think.  What is supposed to be mapped where?
> I've stumbled around a bit trying to find it all, but more keeps
> popping up.

The mappings for the Tyne should be almost right for your purposes.  Just
adjust the physical addresses for the rPC44.  The mappings should be
as follows:

table entry   virtual address   ->  physical address
   #1         0xe0000000            0x0, uncached
   #2         0xe2000000            0x10000000, uncached

The ENTRYLO1 field of both mappings is unused.

> Also, when MILO boots, is it in translated (using virtual addresses)
> or untranslated mode?  Does the MIPS even have an untranslated mode?

Depending of the system Milo either uses KSEG0 or KSEG1.  Both are
mapped.  Both KSEG0 and KSEG1 map a 512mb segment from 0x80000000/
0xa0000000 to physical address 0x0.  There is no real untranslated mode
as on 68k when you switch off the address translation.

> I know that in MILO the addresses 0x8000000 and 0xa0000000 start the
> range of memory and the ISA bus is "overmapped" from 0xn00a0000 to
> 0xn00fffff.  And that I/O ports start at 0xB0000000.

With a bit of luck this might be all you have to know about your machine's
hardware!

If your I/O ports start at 0xb0000000, which is physical address 0x10000000,
you just need to map them to virtual address 0xe2000000 and port accesses
using in/out macros should work.  If you didn't do this right, the kernel
probably crashed with an invalid (tlbl) exception when it first tried to
use in/out.

You should probably try to do something like

        lw      t0,0xe2000061
        xori    t0,3
        sw      t0,0xe2000061

after setting up the wired mappings - just to verify that your mappings are
right.  This code tries to access port 0x61 which controls a certain buzzing
sound device on normal PCs.

Or even easier for you - post your map0 mapping table.

> Hmmm, just got mail from Ralf suggesting I use tlbdump to see where
> these guys are mapped and then put that into the map statement.  Hmmm,
> I'll see if that works, but I thought I had this down :-(.

Well, I thought this more as a verification that your initial mappings have
been installed right.

We also used an additional primitive console driver for debugging output.  It
is being used in Milo's dummy vmlinux if I remember right and was quite
usefull for initial debugging.  Just in case ...

   Ralf

<Prev in Thread] Current Thread [Next in Thread>