Subject: Re: NEC RiscServer 2200
To: Noriyuki Soda <soda@sra.co.jp>
From: bob meader <bob@cci.net>
List: port-arc
Date: 08/03/2000 09:57:28
Actually it's still not quite right (which is why a sent a complete file)..
Really what is needed is the clock read and clock write routines need
to be changed... specifically NEC_R96  jazz internal setup address
for the clock is 'PICA' but the chip data address is NEC_R94...

example:

static u_int
mc_read_r96(csc, reg)
        struct clock_softc *csc;
        u_int reg;
{
        int i,as;
        as = in32(PICA_SYS_ISA_AS) & 0x80;
        out32(PICA_SYS_ISA_AS, as | reg);
        i = inb(RD94_SYS_CLOCK);
        return(i);
}

Notice I have tested that my proposed clock 'write' code is correct
since I have yet to get to single-user login prompt.

Noriyuki Soda wrote:

> > > Hmm, that means the patch attached below is needed?
>
> >>>>> On Wed, 02 Aug 2000 11:15:14 -0700,
>         bob meader <bob@cci.net> wrote:
>
> > Actually that's not quite right ... I should have looked at my notes
> > more closely
> > (been 3 months..)
> > This is the way the file should be ...
> >
> > The kernel may still not boot (this is about where I stopped working on RISC
> > server port in May )...
> > but with this change it should now mount successfully a nfs root...
>
> Thanks. Your change to clock_mc.c certainly makes sense.
>
> I think the patch attached below is equivalent to your change,
> and put a new kernel with this patch on the following URL:
> ftp://ftp.sra.co.jp/pub/os/NetBSD/misc/arc/netbsd.COMCONS.2000-08-01.ecoff.gz
>
> BTW,
> RISCstation 2200 (NEC_R94) may have to be treated as similar to
> RISCserver 2200...
> --
> soda
>
> --- clock_mc.c- Thu Aug  3 18:13:42 2000
> +++ clock_mc.c  Thu Aug  3 18:12:12 2000
> @@ -135,10 +135,15 @@
>                 mc146818_write(csc, MC_REGB, MC_REGB_BINARY | MC_REGB_24HR);
>                 break;
>
> +       case NEC_R96:
> +               csc->sc_init = mcclock_init_rd94;
> +               csc->sc_data = &mcclockdata_pica;
> +               mc146818_write(csc, MC_REGB, MC_REGB_BINARY | MC_REGB_24HR);
> +               break;
> +
>         case NEC_R94:
>         case NEC_RAx94:
>         case NEC_RD94:
> -       case NEC_R96:
>                 csc->sc_init = mcclock_init_rd94;
>                 csc->sc_data = &mcclockdata_rd94;
>                 mc146818_write(csc, MC_REGB, MC_REGB_BINARY | MC_REGB_24HR);