Hi,
attached the patch to add basic support for the mainboard in a so called IGEL-316 graphical terminal. I'm not sure who the original manufacturer of this mainboard is. It is labeled with "WINNET100 VER: 1.1 (30-3130000-110)"
Comments are welcome.
Juergen
Hi Jürgen!
On Fri, May 11, 2007 at 11:11:59PM +0200, Juergen Beisert wrote:
attached the patch to add basic support for the mainboard in a so called IGEL-316 graphical terminal. I'm not sure who the original manufacturer of this mainboard is. It is labeled with "WINNET100 VER: 1.1 (30-3130000-110)"
Great, thanks! Comments below, but please resend with a proper sign-off, otherwise we cannot commit the code: http://linuxbios.org/Development_Guidelines#Sign-off_Procedure
That, and please add the common license header to all source files: http://linuxbios.org/Development_Guidelines#Common_License_Header
(At least the following ones:)
- src/mainboard/igel/igel-316/auto.c - src/mainboard/igel/igel-316/chip.h - targets/igel/igel-316/Config.lb - src/mainboard/igel/igel-316/irq_tables.c - src/mainboard/igel/igel-316/mainboard.c - src/mainboard/igel/igel-316/raminit.h - src/mainboard/igel/igel-316/sdram_timing.h
What's the status of this code? Does it boot a payload correctly? Does it fully boot a Linux kernel? Which hardware works, which doesn't when booted with LinuxBIOS?
Index: LinuxBIOSv2/src/mainboard/igel/igel-316/Config.lb
--- /dev/null +chip northbridge/amd/gx1
- device pci_domain 0 on
- device pci 0.0 on end
chip southbridge/amd/cs5530
device pci 12.0 on
chip superio/nsc/pc97317
device pnp 2e.0 on # Keyboard
io 0x60 = 0x60
io 0x62 = 0x64
irq 0x70 = 1
end
device pnp 2e.1 on # Mouse
irq 0x70 = 12
end
device pnp 2e.2 on # RTC
io 0x60 = 0x70
irq 0x70 = 8
end
device pnp 2e.3 off # FDC
end
device pnp 2e.4 on # Parallel Port
io 0x60 = 0x378
irq 0x70 = 7
end
device pnp 2e.5 off # COM2
io 0x60 = 0x2f8
irq 0x70 = 3
end
device pnp 2e.6 on # COM1
io 0x60 = 0x3f8
irq 0x70 = 4
end
device pnp 2e.7 on # GPIO
io 0x60 = 0xe0
end
device pnp 2e.8 on # Power Management
io 0x60 = 0xe800
end
register "com1" = "{115200}"
register "com2" = "{38400}"
end
device pci 12.1 off end # SMI
device pci 12.2 off end # IDE
device pci 12.3 on end # Audio
device pci 12.4 on end # VGA
+# device pci 13.0 on end # USB
end
- end
- end
Is the above correct for the Winnet? What does 'lspnp -v' report when booted from the proprietary BIOS?
Also, can you please send some more system information (lspci -nn, /proc/cpuinfo etc. etc.) so it gets recorded in the list archives for other people who'll search for it later...
A full bootlog (LinuxBIOS + Linux, with maximum verbosity) would be nice, too.
Index: LinuxBIOSv2/src/mainboard/igel/igel-316/cmos.layout
--- /dev/null +++ LinuxBIOSv2/src/mainboard/igel/igel-316/cmos.layout
Is this needed or used at the moment? Otherwise please drop it for now (needs some adaptions in Config.lb otherwise it won't compile any more). We can reintroduce it when it's really needed.
Index: LinuxBIOSv2/targets/igel/igel-316/Config.lb
--- /dev/null +++ LinuxBIOSv2/targets/igel/igel-316/Config.lb
^^^^^^^^
@@ -0,0 +1,22 @@ +# Config file for the IGEL-316 motherboard
+target igel-316
^^^^^^^^
+mainboard igel/igel-316
^^^^^^^^
Shouldn't we use igel_316 instead of igel-316 as directory name? All other mainboards do that AFAICS.
My guess is that this is an ASI/BCom board (but I don't have evidence), so it should go into targets/asi/xxxx, too?
Are there any other names or part numbers on the PCB? Something similar to (MB-)5BL* or so?
Index: LinuxBIOSv2/src/mainboard/igel/igel-316/irq_tables.c
--- /dev/null +++ LinuxBIOSv2/src/mainboard/igel/igel-316/irq_tables.c @@ -0,0 +1,113 @@ +/**
- Documentation at : http://www.microsoft.com/whdc/archive/pciirq.mspx
- **/
+/*
- It was not possible to read back the pirq-Table. In the 0xF segment was
- no string like $PIRQ...
- But the already running 2.4.21 kernel provides eth0 IRQ15 and USB IRQ 11
- The Realtek was device 0.f.0, the usb 0.13.0
- */
+#include <arch/pirq_routing.h>
+/*
- IRQ 5530 USB Network
- controller northbridge device device
00.13.0 00.0f.00
- 11 INTA# INTA# n.c.
- 10 INTB# n.c. n.c.
- 15 INTC# n.c. INTA#
9 INTD# n.c. n.c.
I'm currently trying to figure out the IRQ settings for my Winnet III (ASI MB-5BLMP). Where/how did you gather the information required to write the correct version for this file?
I have the values from lspci and lspnp, so I know which IRQs the original kernel uses, but that's about it. How do I generate an irq_tables.c file out of this?
The getpir utility didn't give any results on my board either, btw...
Index: LinuxBIOSv2/src/mainboard/igel/igel-316/raminit.c
--- /dev/null +++ LinuxBIOSv2/src/mainboard/igel/igel-316/raminit.c
OK, this part should definately be done in the generic RAM init code, not here. Can this easily be merged into the generic GX1 code? I haven't yet looked at that...
Index: LinuxBIOSv2/src/mainboard/igel/igel-316/raminit.h
--- /dev/null +++ LinuxBIOSv2/src/mainboard/igel/igel-316/raminit.h
Is this mainboard-specific or generic for the GX1? Maybe it should go into src/northbridge/amd/gx1/raminit.[ch], too?
Index: LinuxBIOSv2/src/mainboard/igel/igel-316/sdram_timing.h
--- /dev/null +++ LinuxBIOSv2/src/mainboard/igel/igel-316/sdram_timing.h
Same here. Is it mainboard-specific? Otherwise merge it into src/northbridge/amd/gx1/raminit.[ch]? Should it get its own file? If so, why?
+/**
- @brief This defines CPU's core frequency in kHz
The @brief is not needed, we configure Doxygen to always use the first sentence as short description (JavaDoc-like).
+/******************************************************************************
- This is SDRAM specific. Currently I found no way to read the SPD EEPROM
- on the SO-DIMM to autodetect things. I have no clue where the manufacturer
- has connected the required I2C lines for this purpose
- ******************************************************************************/
I'll try to dump the SPD information on my Winnet3 and report the results...
Index: LinuxBIOSv2/documentation/HOWTO/igel-316-howto.txt
--- /dev/null +++ LinuxBIOSv2/documentation/HOWTO/igel-316-howto.txt
Please drop this here, and create a wiki tutorial containing this info (and other instructions how to get LinuxBIOS+Linux running on this thin client).
@@ -0,0 +1,37 @@ +The IGEL-316 is a small and nice terminal based on the old Geode GX1 CPU. It +was shipped with a 16MiB DOC, that contains an older 2.4 Linux kernel and a 3.x +Xfree86 for the graphics. There was no regular BIOS in it to boot other things +than the DOC content.
Are you sure? Mine has a BIOS chip and a DoC. While the BIOS usually boots a kernel from the DoC, if you attach an IDE disk (with external power, as the thin client doesn't provide it), it will boot a Linux from the disk just fine.
HTH, Uwe.
Hi Uwe,
so many questions.... ;-)
On Saturday 12 May 2007 09:56, Uwe Hermann wrote:
Hi Jürgen!
On Fri, May 11, 2007 at 11:11:59PM +0200, Juergen Beisert wrote:
attached the patch to add basic support for the mainboard in a so called IGEL-316 graphical terminal. I'm not sure who the original manufacturer of this mainboard is. It is labeled with "WINNET100 VER: 1.1 (30-3130000-110)"
Great, thanks! Comments below, but please resend with a proper sign-off, otherwise we cannot commit the code: http://linuxbios.org/Development_Guidelines#Sign-off_Procedure
That, and please add the common license header to all source files: http://linuxbios.org/Development_Guidelines#Common_License_Header
(At least the following ones:)
- src/mainboard/igel/igel-316/auto.c
- src/mainboard/igel/igel-316/chip.h
- targets/igel/igel-316/Config.lb
- src/mainboard/igel/igel-316/irq_tables.c
- src/mainboard/igel/igel-316/mainboard.c
- src/mainboard/igel/igel-316/raminit.h
- src/mainboard/igel/igel-316/sdram_timing.h
I will do and resend the patch.
What's the status of this code? Does it boot a payload correctly? Does it fully boot a Linux kernel? Which hardware works, which doesn't when booted with LinuxBIOS?
Status is "tested on my boards" (I'm currenlty using 5 IGEL-316 at home). It works with etherboot and FILO. And boots my 2.6.21 kernel with Video and without (one IGEL is my file server, the others are small X terminals, connected to my main workstation).
Index: LinuxBIOSv2/src/mainboard/igel/igel-316/Config.lb
--- /dev/null +chip northbridge/amd/gx1
- device pci_domain 0 on
- device pci 0.0 on end
chip southbridge/amd/cs5530
device pci 12.0 on
chip superio/nsc/pc97317
device pnp 2e.0 on # Keyboard
io 0x60 = 0x60
io 0x62 = 0x64
irq 0x70 = 1
end
device pnp 2e.1 on # Mouse
irq 0x70 = 12
end
device pnp 2e.2 on # RTC
io 0x60 = 0x70
irq 0x70 = 8
end
device pnp 2e.3 off # FDC
end
device pnp 2e.4 on # Parallel Port
io 0x60 = 0x378
irq 0x70 = 7
end
device pnp 2e.5 off # COM2
io 0x60 = 0x2f8
irq 0x70 = 3
end
device pnp 2e.6 on # COM1
io 0x60 = 0x3f8
irq 0x70 = 4
end
device pnp 2e.7 on # GPIO
io 0x60 = 0xe0
end
device pnp 2e.8 on # Power Management
io 0x60 = 0xe800
end
register "com1" = "{115200}"
register "com2" = "{38400}"
end
device pci 12.1 off end # SMI
device pci 12.2 off end # IDE
device pci 12.3 on end # Audio
device pci 12.4 on end # VGA
+# device pci 13.0 on end # USB
end
- end
- end
Is the above correct for the Winnet? What does 'lspnp -v' report when booted from the proprietary BIOS?
As I stated. I copied it from the eaglelion/5bcm and modified it until it works on my hardware...
Also, can you please send some more system information (lspci -nn, /proc/cpuinfo etc. etc.) so it gets recorded in the list archives for other people who'll search for it later...
A full bootlog (LinuxBIOS + Linux, with maximum verbosity) would be nice, too.
I will do so.
Index: LinuxBIOSv2/src/mainboard/igel/igel-316/cmos.layout
--- /dev/null +++ LinuxBIOSv2/src/mainboard/igel/igel-316/cmos.layout
Is this needed or used at the moment? Otherwise please drop it for now (needs some adaptions in Config.lb otherwise it won't compile any more). We can reintroduce it when it's really needed.
I have currently no idea what it does. So I will try t oremove it.
Index: LinuxBIOSv2/targets/igel/igel-316/Config.lb
--- /dev/null +++ LinuxBIOSv2/targets/igel/igel-316/Config.lb
^^^^^^^^
@@ -0,0 +1,22 @@ +# Config file for the IGEL-316 motherboard
+target igel-316
^^^^^^^^
+mainboard igel/igel-316
^^^^^^^^
Shouldn't we use igel_316 instead of igel-316 as directory name? All other mainboards do that AFAICS.
Ack.
My guess is that this is an ASI/BCom board (but I don't have evidence), so it should go into targets/asi/xxxx, too?
Is there a way to compare it with other boards (pictures from the other boards)?
Are there any other names or part numbers on the PCB? Something similar to (MB-)5BL* or so?
I will send a list of components on this board.
Index: LinuxBIOSv2/src/mainboard/igel/igel-316/irq_tables.c
--- /dev/null +++ LinuxBIOSv2/src/mainboard/igel/igel-316/irq_tables.c @@ -0,0 +1,113 @@ +/**
- Documentation at : http://www.microsoft.com/whdc/archive/pciirq.mspx
- **/
+/*
- It was not possible to read back the pirq-Table. In the 0xF segment
was + * no string like $PIRQ...
- But the already running 2.4.21 kernel provides eth0 IRQ15 and USB IRQ
11 + * The Realtek was device 0.f.0, the usb 0.13.0
- */
+#include <arch/pirq_routing.h>
+/*
- IRQ 5530 USB Network
- controller northbridge device device
00.13.0 00.0f.00
- 11 INTA# INTA# n.c.
- 10 INTB# n.c. n.c.
- 15 INTC# n.c. INTA#
9 INTD# n.c. n.c.
I'm currently trying to figure out the IRQ settings for my Winnet III (ASI MB-5BLMP). Where/how did you gather the information required to write the correct version for this file?
Long time ago I sent my instructions how to do it to this list. But I will place it on the wiki.
I have the values from lspci and lspnp, so I know which IRQs the original kernel uses, but that's about it. How do I generate an irq_tables.c file out of this?
The getpir utility didn't give any results on my board either, btw...
Its a bit tricky but no impossible. There are only 16 irq channels. No so much to test... ;-)
Index: LinuxBIOSv2/src/mainboard/igel/igel-316/raminit.c
--- /dev/null +++ LinuxBIOSv2/src/mainboard/igel/igel-316/raminit.c
OK, this part should definately be done in the generic RAM init code, not here. Can this easily be merged into the generic GX1 code? I haven't yet looked at that...
A few day ago I ask how to do so, but no answer yet. I we merge it into the generic GX1 code we also must adapt all other GX1 implementations.
Index: LinuxBIOSv2/src/mainboard/igel/igel-316/raminit.h
--- /dev/null +++ LinuxBIOSv2/src/mainboard/igel/igel-316/raminit.h
Is this mainboard-specific or generic for the GX1? Maybe it should go into src/northbridge/amd/gx1/raminit.[ch], too?
If my raminit.c will be generic, then this file also would be generic.
Index: LinuxBIOSv2/src/mainboard/igel/igel-316/sdram_timing.h
--- /dev/null +++ LinuxBIOSv2/src/mainboard/igel/igel-316/sdram_timing.h
Same here. Is it mainboard-specific? Otherwise merge it into src/northbridge/amd/gx1/raminit.[ch]? Should it get its own file? If so, why?
Some parts are mainboard specific, some are SDRAM specific. Unless we can read back the SPD EEPROM, we must manually add the SDRAM data.
+/**
- @brief This defines CPU's core frequency in kHz
The @brief is not needed, we configure Doxygen to always use the first sentence as short description (JavaDoc-like).
I see, I will remove them.
+/*********************************************************************** ******* + * This is SDRAM specific. Currently I found no way to read the SPD EEPROM + * on the SO-DIMM to autodetect things. I have no clue where the manufacturer + * has connected the required I2C lines for this purpose
*****/
I'll try to dump the SPD information on my Winnet3 and report the results...
But it would be valid only for exact one SDRAM type! Not for all the others.
Index: LinuxBIOSv2/documentation/HOWTO/igel-316-howto.txt
--- /dev/null +++ LinuxBIOSv2/documentation/HOWTO/igel-316-howto.txt
Please drop this here, and create a wiki tutorial containing this info (and other instructions how to get LinuxBIOS+Linux running on this thin client).
Ack.
@@ -0,0 +1,37 @@ +The IGEL-316 is a small and nice terminal based on the old Geode GX1 CPU. It +was shipped with a 16MiB DOC, that contains an older 2.4 Linux kernel and a 3.x +Xfree86 for the graphics. There was no regular BIOS in it to boot other things +than the DOC content.
Are you sure? Mine has a BIOS chip and a DoC. While the BIOS usually boots a kernel from the DoC, if you attach an IDE disk (with external power, as the thin client doesn't provide it), it will boot a Linux from the disk just fine.
Yes I'm sure. At system start I only see "booting...". No way found to stop it.
Juergen
* Juergen Beisert juergen127@kreuzholzen.de [070512 12:26]:
Index: LinuxBIOSv2/src/mainboard/igel/igel-316/raminit.c
--- /dev/null +++ LinuxBIOSv2/src/mainboard/igel/igel-316/raminit.c
OK, this part should definately be done in the generic RAM init code, not here. Can this easily be merged into the generic GX1 code? I haven't yet looked at that...
A few day ago I ask how to do so, but no answer yet. I we merge it into the generic GX1 code we also must adapt all other GX1 implementations.
Some parts are mainboard specific, some are SDRAM specific. Unless we can read back the SPD EEPROM, we must manually add the SDRAM data.
Does the v2 GX1 code not read SPD-ROMs? I know the v1 code did...
On Saturday 12 May 2007 14:31, Stefan Reinauer wrote:
- Juergen Beisert juergen127@kreuzholzen.de [070512 12:26]:
Index: LinuxBIOSv2/src/mainboard/igel/igel-316/raminit.c
--- /dev/null +++ LinuxBIOSv2/src/mainboard/igel/igel-316/raminit.c
OK, this part should definately be done in the generic RAM init code, not here. Can this easily be merged into the generic GX1 code? I haven't yet looked at that...
A few day ago I ask how to do so, but no answer yet. I we merge it into the generic GX1 code we also must adapt all other GX1 implementations.
Some parts are mainboard specific, some are SDRAM specific. Unless we can read back the SPD EEPROM, we must manually add the SDRAM data.
Does the v2 GX1 code not read SPD-ROMs? I know the v1 code did...
Does someone knows how the I2C lines are connected to the CPU? Then I can add the code again.
Juergen
On Sat, May 12, 2007 at 12:26:51PM +0200, Juergen Beisert wrote:
What's the status of this code? Does it boot a payload correctly? Does it fully boot a Linux kernel? Which hardware works, which doesn't when booted with LinuxBIOS?
Status is "tested on my boards" (I'm currenlty using 5 IGEL-316 at home). It works with etherboot and FILO. And boots my 2.6.21 kernel with Video and without (one IGEL is my file server, the others are small X terminals, connected to my main workstation).
So X11 works? Sound? Ethernet? USB? Booting from USB? All the other hardware such as keyboard, mouse, parallel port etc. etc?
Is the above correct for the Winnet? What does 'lspnp -v' report when booted from the proprietary BIOS?
As I stated. I copied it from the eaglelion/5bcm and modified it until it works on my hardware...
Yes, sure. The above just looks very similar to the 5BCM and that is pretty different from my Winnet3 so I guessed the values would differ for the IGEL-316, too!? (the PNP stuff mostly)
My guess is that this is an ASI/BCom board (but I don't have evidence), so it should go into targets/asi/xxxx, too?
Is there a way to compare it with other boards (pictures from the other boards)?
I have uploaded a few photos, see here: http://linuxbios.org/ASI_MB-5BLMP_Build_Tutorial
A photo of the PCB is here: http://linuxbios.org/images/1/1f/Igel_winnet3_3.jpg
The quality is not _that_ good, I'll try to make a better one soonish.
Index: LinuxBIOSv2/src/mainboard/igel/igel-316/sdram_timing.h
--- /dev/null +++ LinuxBIOSv2/src/mainboard/igel/igel-316/sdram_timing.h
Same here. Is it mainboard-specific? Otherwise merge it into src/northbridge/amd/gx1/raminit.[ch]? Should it get its own file? If so, why?
Some parts are mainboard specific, some are SDRAM specific. Unless we can read back the SPD EEPROM, we must manually add the SDRAM data.
Yes, reading the SPD values is definately the correct thing to do. We should try to make that work...
I'll try to dump the SPD information on my Winnet3 and report the results...
But it would be valid only for exact one SDRAM type! Not for all the others.
Ah yes, sure, the SDRAM info is specific. I meant that I'll check whether reading SPD values works at all on my board.
Are you sure? Mine has a BIOS chip and a DoC. While the BIOS usually boots a kernel from the DoC, if you attach an IDE disk (with external power, as the thin client doesn't provide it), it will boot a Linux from the disk just fine.
Yes I'm sure. At system start I only see "booting...". No way found to stop it.
On my system there's no need to enter the BIOS. Just attach an IDE disk (and power for it), and the BIOS will automatically boot from that (instead of the DoC).
FWIW, I can enter the original BIOS by pressing ESC while the IGEL logo is displayed on the screen.
Uwe.
On Saturday 12 May 2007 15:24, Uwe Hermann wrote:
On Sat, May 12, 2007 at 12:26:51PM +0200, Juergen Beisert wrote:
What's the status of this code? Does it boot a payload correctly? Does it fully boot a Linux kernel? Which hardware works, which doesn't when booted with LinuxBIOS?
Status is "tested on my boards" (I'm currenlty using 5 IGEL-316 at home). It works with etherboot and FILO. And boots my 2.6.21 kernel with Video and without (one IGEL is my file server, the others are small X terminals, connected to my main workstation).
So X11 works? Sound? Ethernet? USB? Booting from USB? All the other hardware such as keyboard, mouse, parallel port etc. etc?
Ok, here we go:
- X11 works fine. But not with the official geode driver from Xorg. This driver relies also on the SMM, so it fails on my LinuxBIOSv2 based system - With my own Xorg driver implementation it works fine! - Sound: I can play mp3 with "madplay". But only on a system with no other load. My driver must poll the SMI registers to know when the sound DMA finishes a data block. I need to play with priorities and maybe RT Preempt to ensure my polling routine will always get the CPU when there is the need. Otherwise system hangs. The sound DMA seems to be a fragile beast. - Ethernet: My onboard RTL8139C works since month. All systems are running "in production". My Geode based fileserver 24hours@365days... - Booting from USB? Not tried yet. Only etherboot and FILO (harddisk). But connecting memory sticks and MP3 players works fine (very important for my children!). - Keyboard: PS/2 and USB based keyboards are working fine - Mouse: PS/2 and USB based mice are working fine - LPT: Don't know. Never tried.
Is the above correct for the Winnet? What does 'lspnp -v' report when booted from the proprietary BIOS?
As I stated. I copied it from the eaglelion/5bcm and modified it until it works on my hardware...
This is from the machine I'm currently write this mail (X terminal):
root@finas:~ lspci -tv -[0000:00]-+-00.0 Cyrix Corporation PCI Master +-0f.0 Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ +-12.0 Cyrix Corporation 5530 Legacy [Kahlua] +-12.1 Cyrix Corporation 5530 SMI [Kahlua] +-12.2 Cyrix Corporation 5530 IDE [Kahlua] +-12.3 Cyrix Corporation 5530 Audio [Kahlua] +-12.4 Cyrix Corporation 5530 Video [Kahlua] -13.0 Compaq Computer Corporation ZFMicro Chipset USB
root@finas:~ lspci -v 00:00.0 Host bridge: Cyrix Corporation PCI Master Flags: bus master, medium devsel, latency 0
00:0f.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10) Subsystem: Realtek Semiconductor Co., Ltd. RT8139 Flags: bus master, medium devsel, latency 64, IRQ 15 I/O ports at 1000 [size=256] Memory at febfd000 (32-bit, non-prefetchable) [size=256] Capabilities: [50] Power Management version 2
00:12.0 ISA bridge: Cyrix Corporation 5530 Legacy [Kahlua] (rev 30) Flags: bus master, medium devsel, latency 0
00:12.1 Bridge: Cyrix Corporation 5530 SMI [Kahlua] Flags: medium devsel Memory at febfe000 (32-bit, non-prefetchable) [size=256]
00:12.2 IDE interface: Cyrix Corporation 5530 IDE [Kahlua] (prog-if 80 [Master]) Flags: medium devsel [virtual] Memory at 000001f0 (32-bit, non-prefetchable) [disabled] [size=8] [virtual] Memory at 000003f0 (type 3, non-prefetchable) [disabled] [size=1] [virtual] Memory at 00000170 (32-bit, non-prefetchable) [disabled] [size=8] [virtual] Memory at 00000370 (type 3, non-prefetchable) [disabled] [size=1] I/O ports at 1400 [size=128]
00:12.3 Multimedia audio controller: Cyrix Corporation 5530 Audio [Kahlua] Flags: medium devsel Memory at febff000 (32-bit, non-prefetchable) [size=128]
00:12.4 VGA compatible controller: Cyrix Corporation 5530 Video [Kahlua] (prog-if 00 [VGA]) Flags: medium devsel Memory at febfb000 (32-bit, non-prefetchable) [size=4K]
00:13.0 USB Controller: Compaq Computer Corporation ZFMicro Chipset USB (rev 06) (prog-if 10 [OHCI]) Subsystem: Compaq Computer Corporation ZFMicro Chipset USB Flags: bus master, medium devsel, latency 64, IRQ 11 Memory at febfc000 (32-bit, non-prefetchable) [size=4K]
root@finas:~ cat /proc/interrupts CPU0 0: 382432 XT-PIC-XT timer 1: 14931 XT-PIC-XT i8042 2: 0 XT-PIC-XT cascade 4: 3 XT-PIC-XT serial 8: 0 XT-PIC-XT rtc 11: 0 XT-PIC-XT ohci_hcd:usb1 12: 74170 XT-PIC-XT i8042 15: 435969 XT-PIC-XT eth0 NMI: 0 ERR: 0
root@finas:~ cat /proc/iomem 00000000-000006d3 : reserved 000006d4-0009ffff : System RAM 000a0000-000bffff : Video RAM area 000f0000-000fffff : System ROM 00100000-01bfffff : System RAM 00100000-00253ad9 : Kernel code 00253ada-002a5f2b : Kernel data 40000000-40000fff : scratch_pad_ram 40000000-40000fff : Geode GX1 Framebuffer 40008000-400080ff : bus_interface 40008000-400080ff : Geode GX1 Bus Interface 40008100-400082ff : video_pipeline 40008100-400082ff : Geode GX1 Framebuffer 40008300-400083ff : display_control 40008300-400083ff : Geode GX1 Framebuffer 40008400-400084ff : memory_control 40008400-400084ff : Geode GX1 Memory Control 40008500-40008fff : power_control.0 40400000-407fffff : smm_area.0 40800000-487fffff : video_memory 40800000-487fffff : Geode GX1 Framebuffer febfb000-febfbfff : 0000:00:12.4 febfb000-febfbfff : Geode GX1 Framebuffer febfc000-febfcfff : 0000:00:13.0 febfc000-febfcfff : ohci_hcd febfd000-febfd0ff : 0000:00:0f.0 febfd000-febfd0ff : 8139too febfe000-febfe0ff : 0000:00:12.1 febfe000-febfe0ff : CS5530a (Kahlua) SMI handler febff000-febff07f : 0000:00:12.3 fffc0000-ffffffff : flash_memory.0
root@finas:~ cat /proc/cpuinfo processor : 0 vendor_id : Geode by NSC cpu family : 5 model : 9 model name : Geode(TM) Integrated Processor by National Semi stepping : 2 cpu MHz : 300.691 cache size : 16 KB fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 2 wp : yes flags : fpu tsc msr cx8 cmov mmx cxmmx bogomips : 602.14 clflush size : 32
I have uploaded a few photos, see here: http://linuxbios.org/ASI_MB-5BLMP_Build_Tutorial
A photo of the PCB is here: http://linuxbios.org/images/1/1f/Igel_winnet3_3.jpg
Looks completly different to my mainboard.
Index: LinuxBIOSv2/src/mainboard/igel/igel-316/sdram_timing.h
--- /dev/null +++ LinuxBIOSv2/src/mainboard/igel/igel-316/sdram_timing.h
Same here. Is it mainboard-specific? Otherwise merge it into src/northbridge/amd/gx1/raminit.[ch]? Should it get its own file? If so, why?
Some parts are mainboard specific, some are SDRAM specific. Unless we can read back the SPD EEPROM, we must manually add the SDRAM data.
Yes, reading the SPD values is definately the correct thing to do. We should try to make that work...
Yes.
I'll try to dump the SPD information on my Winnet3 and report the results...
But it would be valid only for exact one SDRAM type! Not for all the others.
Ah yes, sure, the SDRAM info is specific. I meant that I'll check whether reading SPD values works at all on my board.
I think no one of this manufacturer has made his own development. They all redo National's reference schematic in various ways to ensure the standard BIOS will work (this is one advantage of closed source: You must be hardware compatible in any way to ensure it works...). Does someone has this reference schematic? This would help to improve our development.
Are you sure? Mine has a BIOS chip and a DoC. While the BIOS usually boots a kernel from the DoC, if you attach an IDE disk (with external power, as the thin client doesn't provide it), it will boot a Linux from the disk just fine.
Yes I'm sure. At system start I only see "booting...". No way found to stop it.
On my system there's no need to enter the BIOS. Just attach an IDE disk (and power for it), and the BIOS will automatically boot from that (instead of the DoC).
FWIW, I can enter the original BIOS by pressing ESC while the IGEL logo is displayed on the screen.
No way here. :-(
Juergen
* Uwe Hermann uwe@hermann-uwe.de [070512 09:56]:
Index: LinuxBIOSv2/src/mainboard/igel/igel-316/cmos.layout
--- /dev/null +++ LinuxBIOSv2/src/mainboard/igel/igel-316/cmos.layout
Is this needed or used at the moment? Otherwise please drop it for now (needs some adaptions in Config.lb otherwise it won't compile any more). We can reintroduce it when it's really needed.
No, cmos.layout is always needed, except the machine has no battery backed up clock. Please dont drop this
+/**
- @brief This defines CPU's core frequency in kHz
The @brief is not needed, we configure Doxygen to always use the first sentence as short description (JavaDoc-like).
does it hurt to do it cleanly anyways?
+++ LinuxBIOSv2/documentation/HOWTO/igel-316-howto.txt
Please drop this here, and create a wiki tutorial containing this info (and other instructions how to get LinuxBIOS+Linux running on this thin client).
I dont think I agree that this should be dropped. I do agree it should go to the Wiki though.
On Sat, May 12, 2007 at 02:28:04PM +0200, Stefan Reinauer wrote:
- Uwe Hermann uwe@hermann-uwe.de [070512 09:56]:
Index: LinuxBIOSv2/src/mainboard/igel/igel-316/cmos.layout
--- /dev/null +++ LinuxBIOSv2/src/mainboard/igel/igel-316/cmos.layout
Is this needed or used at the moment? Otherwise please drop it for now (needs some adaptions in Config.lb otherwise it won't compile any more). We can reintroduce it when it's really needed.
No, cmos.layout is always needed, except the machine has no battery backed up clock. Please dont drop this
OK, let's keep it then.
- @brief This defines CPU's core frequency in kHz
The @brief is not needed, we configure Doxygen to always use the first sentence as short description (JavaDoc-like).
does it hurt to do it cleanly anyways?
No, but I wouldn't consider using @brief more clean. The comments are shorter and better readable without it, IHMO (in the source; the generated HTML output is the same of course).
+++ LinuxBIOSv2/documentation/HOWTO/igel-316-howto.txt
Please drop this here, and create a wiki tutorial containing this info (and other instructions how to get LinuxBIOS+Linux running on this thin client).
I dont think I agree that this should be dropped. I do agree it should go to the Wiki though.
Yes, that's what I meant :) Kill the file, stick the information in the wiki.
Uwe.
Hi,
On Saturday 12 May 2007 09:56, Uwe Hermann wrote:
My guess is that this is an ASI/BCom board (but I don't have evidence), so it should go into targets/asi/xxxx, too?
Yes it is. I found it here http://en.taiwan.ru/ProductInfo/?product_id=43083 and at various other locations when I google for "winnet100". BCom seems to be the manufacturer.
Juergen
* Juergen Beisert juergen127@kreuzholzen.de [070511 23:11]:
Hi,
attached the patch to add basic support for the mainboard in a so called IGEL-316 graphical terminal. I'm not sure who the original manufacturer of this mainboard is. It is labeled with "WINNET100 VER: 1.1 (30-3130000-110)"
Please dont put raminit into the mainboard specific code. It belongs to the northbridge code instead. Please implement this generic.
Stefan
On Saturday 12 May 2007 14:21, Stefan Reinauer wrote:
- Juergen Beisert juergen127@kreuzholzen.de [070511 23:11]:
Hi,
attached the patch to add basic support for the mainboard in a so called IGEL-316 graphical terminal. I'm not sure who the original manufacturer of this mainboard is. It is labeled with "WINNET100 VER: 1.1 (30-3130000-110)"
Please dont put raminit into the mainboard specific code. It belongs to the northbridge code instead. Please implement this generic.
But how? Without access to the SPD EEPROM content, I need some way to define board specific what kind of SDRAM is in use. And we need a way to consider some board/layout specific things (delay values, load and so on). To setup the SDRAM controller in a correct way we need all this info. And this info is not generic!
Juergen
On Sat, May 12, 2007 at 05:29:59PM +0200, Juergen Beisert wrote:
On Saturday 12 May 2007 14:21, Stefan Reinauer wrote:
- Juergen Beisert juergen127@kreuzholzen.de [070511 23:11]:
Hi,
attached the patch to add basic support for the mainboard in a so called IGEL-316 graphical terminal. I'm not sure who the original manufacturer of this mainboard is. It is labeled with "WINNET100 VER: 1.1 (30-3130000-110)"
Please dont put raminit into the mainboard specific code. It belongs to the northbridge code instead. Please implement this generic.
But how? Without access to the SPD EEPROM content, I need some way to define board specific what kind of SDRAM is in use. And we need a way to consider some board/layout specific things (delay values, load and so on). To setup the SDRAM controller in a correct way we need all this info. And this info is not generic!
I think we can use the 'fake SPD' technique here, or am I wrong? See fakespd.c here for an examples (the code was removed, but is still in svn history):
http://tracker.linuxbios.org/trac/LinuxBIOS/browser/trunk/LinuxBIOSv2/src/ma...
Uwe.
On Saturday 12 May 2007 18:39, Uwe Hermann wrote:
On Sat, May 12, 2007 at 05:29:59PM +0200, Juergen Beisert wrote:
On Saturday 12 May 2007 14:21, Stefan Reinauer wrote:
- Juergen Beisert juergen127@kreuzholzen.de [070511 23:11]:
Hi,
attached the patch to add basic support for the mainboard in a so called IGEL-316 graphical terminal. I'm not sure who the original manufacturer of this mainboard is. It is labeled with "WINNET100 VER: 1.1 (30-3130000-110)"
Please dont put raminit into the mainboard specific code. It belongs to the northbridge code instead. Please implement this generic.
Yes it belongs to the northbridge, but the data it need to setup the SDRAM in a correct manner belongs to the board.
But how? Without access to the SPD EEPROM content, I need some way to define board specific what kind of SDRAM is in use. And we need a way to consider some board/layout specific things (delay values, load and so on). To setup the SDRAM controller in a correct way we need all this info. And this info is not generic!
I think we can use the 'fake SPD' technique here, or am I wrong? See fakespd.c here for an examples (the code was removed, but is still in svn history):
http://tracker.linuxbios.org/trac/LinuxBIOS/browser/trunk/LinuxBIOSv2/src/m ainboard/amd/quartet/fakespd.c?rev=2545
It seems to find a generic way to configure the SDRAM in a Geode bases system is nearly impossible. At last we need some information about
- the physical behaviour of the mainboard (line load, line length for delay calculation, max possible SDRAM clock, jitter and so on) - the type of connected SDRAM modules (soldered, SO-DIMM, DIMM -> line load/length!) - the type of the SDRAM devices (timing requirements)
Maybe we are able to detect the SPD EEPROM on *some* boards. But never on all boards. There are too many individual incarnations how you can connect the I2C lines to your CPU (thanks to popconserve for the reference schematics!). Mainboard's physical behaviour (I believe) you never can autodetect. So we might need a filestructure you can try to autodetect things, or to hardcode most or all of the required settings. And then call ram_init with this data. Any idea? The faked-SPD alone does not help.
Juergen
On Mon, May 14, 2007 at 09:39:57AM +0200, Juergen Beisert wrote:
It seems to find a generic way to configure the SDRAM in a Geode bases system is nearly impossible.
I think it can be done.
At last we need some information about
- the physical behaviour of the mainboard (line load, line length
for delay calculation, max possible SDRAM clock, jitter and so on)
Create some new board options for the relevant parameters.
- the type of connected SDRAM modules (soldered, SO-DIMM, DIMM ->
line load/length!)
This is just a subset of the above, right?
- the type of the SDRAM devices (timing requirements)
Is this not in SPD?
Maybe we are able to detect the SPD EEPROM on *some* boards. But never on all boards. There are too many individual incarnations how you can connect the I2C lines to your CPU
Because of pin multiplexing you mean? Make the relevant PMRs options (I think they should be anyway) and teach raminit how to decode them ss it knows how to do SPD.
//Peter
On Monday 14 May 2007 16:52, Peter Stuge wrote:
On Mon, May 14, 2007 at 09:39:57AM +0200, Juergen Beisert wrote:
It seems to find a generic way to configure the SDRAM in a Geode bases system is nearly impossible.
I think it can be done.
At last we need some information about
- the physical behaviour of the mainboard (line load, line length
for delay calculation, max possible SDRAM clock, jitter and so on)
Create some new board options for the relevant parameters.
Any doc how to do? Naming conventions and policy?
- the type of connected SDRAM modules (soldered, SO-DIMM, DIMM ->
line load/length!)
This is just a subset of the above, right?
Yes and no. The above are fixed params. But you can change the SDRAM module so some params change (device count and load)
- the type of the SDRAM devices (timing requirements)
Is this not in SPD?
Yes.
Maybe we are able to detect the SPD EEPROM on *some* boards. But never on all boards. There are too many individual incarnations how you can connect the I2C lines to your CPU
Because of pin multiplexing you mean?
Yes and no. Where ever you have some spare GPIOs you can connect an I2C bus. And it seems every manufacurer did so. Some connect it to the companion chip, some to the multiIO, various multiIOs are possible. How to deal with it?
Make the relevant PMRs options (I think they should be anyway) and teach raminit how to decode them ss it knows how to do SPD.
raminit could call back some board specific routines to query for SDRAM params. And they handle it in a board specific way. Some ask the SPD EEPROM if they know how deal with the I2C, some other provide generic params, and some uses specific params as one know the SDRAM devices that are plugged in.
Juergen