[Top] [All Lists]

Re: HAL2 support.

To: Alex deVries <>
Subject: Re: HAL2 support.
From: Ulf Carlsson <>
Date: Thu, 28 Jan 1999 19:50:21 +0100
Cc: Linux SGI <>
In-reply-to: <>; from Alex deVries on Mon, Jan 25, 1999 at 01:12:55PM -0500
Mail-followup-to: Alex deVries <>, Linux SGI <>
References: <> <>
> First, many thanks for the files.
> 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.

> 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.

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


> 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;

And this line should actually be:

} *h2_ctrl = (hal2_ctrl_regs *) KSEG1ADDR(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

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