Subject: Re: HAL2 support.

From: Alex deVries <[email-masked]>
Date: Mon, 25 Jan 1999 14:27:12 -0500 (EST)

On Thu, 28 Jan 1999, Ulf Carlsson wrote:
> > Do you mind if I cvs upload them to the SGI kernel mailing list?
> CVS upload them to the mailing list, I don't get your point here. I have CVS
> access so I may upload them if I want to, and I can post it to the mailing list
> if you want me to. But it feels like too much people would laugh at me if I
> posted it at the moment.. I'll atleast get it through the compiler once again.

I'll merge them with a modern kernel and make sure that it all builds
properly.  That should be done in the next 30 hours.  Woo! Finally! Kernel
work!

> Does something else bother you than the incorrect type? I can't see anything
> else being wrong here.

No, but I just scanned the code quickly.

> And this line should actually be:
> } *h2_ctrl = (hal2_ctrl_regs *) KSEG1ADDR(H2_CTRL_PIO);

Okay.  Why's that?

Anyway, I'll get this code into the kernel so we have a way to debug it in
a distributed fashion.  It's clear there'll be problems with it; we'll get
through that over time.

- Alex

---

From: Ulf Carlsson <[email-masked]>
Date: Thu, 28 Jan 1999 19:50:21 +0100

> First, many thanks for the files.
> 

> Do you mind if we hold this discussion on the SGI list once I do that?

Sure, I actually forgot to group reply, that's why this discussion isn't
(wasn't) on the list :-)

> Next, I was hoping you could explain this bit of code to me, I don't quite
> see how it's right from the docs.  I'm looking at page 13 of the HAL2
> docs.

[snip]

> typedef volatile unsigned long hpcreg;

How stupid! I thought I had checked that it was unsigned short.. ;)
My spacing depends on that..

> Next, your spacing isn't quite right I don't think. I think it needs to
> be:
> 
> typedef volatile __u16 hal_reg;
> 
> struct hal2_ctrl_regs {
>         hal_reg _unused0[8];
>         hal_reg isr;             /* 0x10 Status Register */
>         hal_reg _unused1[7];
>         hal_reg rev;             /* 0x20 Revision Register */
>         hal_reg _unused2[7];
>         hal_reg iar;             /* 0x30 Indirect Address Register */
>         hal_reg _unused3[7];
>         hal_reg idr0;            /* 0x40 Indirect Data Register 0 */
>         hal_reg _unused4[7];
>         hal_reg idr1;            /* 0x50 Indirect Data Register 1 */
>         hal_reg _unused5[7];
>         hal_reg idr2;            /* 0x60 Indirect Data Register 2 */
>         hal_reg _unused6[7];
>         hal_reg idr3;            /* 0x70 Indirect Data Register 3 */
> } *h2_ctrl = (hal2_ctrl_regs *) H2_CTRL_PIO;

> Does that make sense, or otherwise, what was your thought on this?

It probably does, I have found two bugs so far.

- Ulf

---

From: Ulf Carlsson <[email-masked]>
Date: Thu, 28 Jan 1999 21:32:35 +0100

> properly.  That should be done in the next 30 hours.  Woo! Finally! Kernel

As you wish. I have actually merged it before, I can send you an old patch so
you can see what it should look like.

> > } *h2_ctrl = (hal2_ctrl_regs *) KSEG1ADDR(H2_CTRL_PIO);

Because it has to be in the virtual address space.

> a distributed fashion.  It's clear there'll be problems with it; we'll get

Great..

- Ulf