Subject: Update: XBOX boots kernel, but I need help...
To: None <port-i386@netbsd.org>
From: Andrew Gillham <gillham@roadsign.com>
List: port-i386
Date: 12/13/2006 11:06:21
[Sorry if this ends up a dupe, but it didn't seem to make it from my 
gmail account]

I could use some help getting my Xbox working with NetBSD/i386 
-current.  I tweaked a few things based on the FreeBSD code.  For 
example I added a PCI quirk for one multifunction device that hangs the 
bus if accessed, a real show stopper issue.

My kernel is booting, I have _very_ minimal diagnostic output to an 
hd44780 LCD (hooked to a mod chip), via low level 'outb' style calls in 
function called from PRINTK, showing the kernel getting all the way up, 
being pingable via my usb ethernet, but no matter what I do with 
boothowto it doesn't seem to be able to go multi-user enough to run 
anything from my NFS root.  For all I know my USB ethernet may be hosing 
after the first few NFS packets, since tcpdump shows a little action and 
then nothing.  I need to analyze the traffic further, but I thought I 
would ask for some help in other areas first.

Since my kernel is coming up enough to mount the root file system, I 
think I can use the LCD output to help get the onboard frame buffer 
working, with some help some someone that knows a lot more than me about 
the kernel. (which is most of you.) :)

Here are my issues at the moment:
1) doesn't seem to try to go multi-user, even with boothowto = 
RB_AUTOBOOT in init_main.c, am I missing the obvious here?

2) The LCD "driver" I am using is just a function I created based on 
reading some c++ code for Xbox Media Center that talks to the chipset.  
I haven't been able to get the in tree tslcd, toasterlcd, hd47780 
driver, etc to talk to it as it is wired up the same way and I am not 
knowledgeable enough to tweak the routines.  I *think* the outb calls 
are just writing to the two main hd47780 registers and I created a x3lcd 
driver based on tslcd with writereg & readreg modded to inb/outb the two 
locations, but the driver just reports "LCD is not responding" and I am 
stuck with my diagnostic code.  Note that trying to have x3lcd attach 
without my code running does work either, and of course I can't tell 
what it is doing. :)

3) The nfe driver seems to be able to send a packet, e.g. DHCP, but just 
starts reporting 'watchdog timeout' and is unable to receive anything.  
So I am using a USB ethernet for now.  I make a couple of changes based 
on some OpenBSD fixes for this, but no luck.  I'm not sure what is doing 
on, and of course I have this 4x40 LCD to get output on, with the lines 
out of order. :)  If anyone is aware of a solution to the watchdog 
timeout I would appreciate hearing about it.

4) I'm not sure how to map the 4MB frame buffer the Cromwell BIOS sets 
up.  It is located roughly from 60-64MB and the FreeBSD driver just 
seems to map this 4MB to some place accessible to the frame buffer 
driver.  I am quite ignorant on the whole UVM thing and not sure how to 
map a specific chunk of physical memory space via bus_space or whatever 
so a dumb FB driver could use it.  Since my kernel is booting and seems 
to be staying up and I have 4 lines of LCD output for debugging , I 
think I can work on getting a real frame buffer driver going and get a 
real wscons console at some point.

I could use some help with these items.  I'm not really much of a coder, 
so I would need specifics, pointers to actual working code on some of 
these.  Anyone have some time to help get the Xbox booting?

-Andrew