On Sep 21, 2006, at 12:21 PM, Segher Boessenkool wrote:
+ /* these give iface errors because the address is ambiguous
after
+ * the above bit dropping */
+ BUG_ON(addr == 0x8000);
Anything with the high bit set isn't available via SCOMC/SCOMD,
only via the external interfaces.
Thanks for clarifying that, will fix.
+ /* WARNING! older 970s (pre FX) shift the bits right 1
position */
They also don't have the exact same stuff at the exact same
registers -- SCOM is very CPU-specific, check every one you
want to use. That is, if you do the fix for the shifted bits,
if not, don't bother ;-)
Just a note-to-self until I get my hands on the early docs.
+ if (c.bits.iface_error)
+ udelay(10);
Why the udelay()?
This is interesting, The docs say that you should "retry" on an
iface error.
When accessing the 0x8000 address above I get an iface error, then an
immediate retry gives an addr|iface error.
If I wait 10us (a number I made up) before the retry I get only iface
consistently.
I'm waiting to hear back on the expected behavior, I will adjust at
that point.
+/* SCOMC addresses are 16bit but we are given 24 bits in the
+ * books. The low oerder 8 bits are some kinda parity thin and
should
+ * be ignored */
The low bit is the odd parity of the other 23 bits; everything
accessible via SCOMC/SCOMD has bits 16..22 zero.
Interesting thanks for the heads up.
All these comments are pretty minor, congratz on finally having
it working Jimi :-)
yeah.. now for the payoff
-JX
_______________________________________________
Xen-ppc-devel mailing list
Xen-ppc-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ppc-devel
|