Difference between revisions of "Board:msi/ms7260"

From coreboot
Jump to navigation Jump to search
(→‎Status: PCI add-on card issues are fixed. More details on RAM issue.)
m (Phcoder moved page MSI MS-7260 to Board:msi/ms7260)
 
(15 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[Image:Msi_ms7260_k9n_neo.jpg|thumb|The MSI MS-7260 (K9N Neo), revision 1.0]]
[[Image:Msi_ms7260_k9n_neo.jpg|thumb|The MSI MS-7260 (K9N Neo), revision 1.0]]


This page describes how to use LinuxBIOS on the [http://global.msi.com.tw/index.php?func=proddesc&prod_no=255&maincat_no=1&cat2_no=171 MSI MS-7260 (K9N Neo)] mainboard. It is maintained by [[User:Uwe|Uwe Hermann]].
This page describes how to use coreboot on the [http://www.msi.com/index.php?func=proddesc&maincat_no=1&prod_no=255 MSI MS-7260 (K9N Neo)] mainboard. It is maintained by [[User:Uwe|Uwe Hermann]].
 
== The mainboard ==
 
Some more information on the board is available [http://www.linuxbios.org/pipermail/linuxbios/2007-September/024605.html in the mailing list archives].
 
So far we have verified that revision 1.0 of the mainboard has a socketed PLCC32 ROM chip (512KB).
 
If you have any other revision of the board, please contact us on the [[Mailinglist|mailing list]] and let us know if it has a socketed (and PLCC-type) ROM chip.


== Status ==
== Status ==


{| border="0" style="font-size: smaller" valign="top"
{{Status|
|- bgcolor="#6699dd"
! align="left" | Device/functionality
! align="left" | Status
! align="left" | Comments
 
|- bgcolor="#eeeeee" valign="top"
| CPU
| style="background:lime" | Works
| I'm using an AMD Athlon 64 X2 Dual Core Processor 3600+, both cores work fine.
|- bgcolor="#eeeeee" valign="top"
| RAM
| style="background:lime" | Works
| It seems some combinations of DIMMs and RAM slots don't work. Using only one DIMM (in slot 1) works for me.
|- bgcolor="#eeeeee" valign="top"
| IDE
| style="background:lime" | Works
| —
|- bgcolor="#eeeeee" valign="top"
| IDE using CF-to-IDE adapter
| style="background:lime" | Works
| —
|- bgcolor="#eeeeee" valign="top"
| SATA
| style="background:yellow" | Untested
| —
|- bgcolor="#eeeeee" valign="top"
| USB
| style="background:lime" | Works
| Tested: USB thumb drive, USB keyboard, USB webcam, USB DVB-T adapter.
|- bgcolor="#eeeeee" valign="top"
| On-board ethernet
| style="background:lime" | Works
| —
|- bgcolor="#eeeeee" valign="top"
| On-board audio
| style="background:lime" | Works
| —
|- bgcolor="#eeeeee" valign="top"
| PCI add-on cards
| style="background:lime" | Works
| There were some problems with PCI add-on cards, but they're fixed as of svn revision [http://tracker.linuxbios.org/trac/LinuxBIOS/changeset/2807 2807].
|- bgcolor="#eeeeee" valign="top"
| PCI Express add-on cards
| style="background:yellow" | Untested
| —
|- bgcolor="#eeeeee" valign="top"
| Floppy
| style="background:yellow" | Untested
| —
|- bgcolor="#eeeeee" valign="top"
| Serial port (COM1)
| style="background:lime" | Works
| —
|- bgcolor="#eeeeee" valign="top"
| Parallel port
| style="background:yellow" | Untested
| —
|- bgcolor="#eeeeee" valign="top"
| PS/2 keyboard
| style="background:yellow" | Untested
| —
|- bgcolor="#eeeeee" valign="top"
| PS/2 mouse
| style="background:yellow" | Untested
| —
|- bgcolor="#eeeeee" valign="top"
| Mainboard sensors/fans
| style="background:lime" | Works
| The ''k8temp'' module loads fine, the ''sensors'' tool outputs the CPU temperature (both cores in my case) correctly.
|- bgcolor="#eeeeee" valign="top"
| CPU frequency scaling / powersave modes
| style="background:yellow" | Untested
| Probably won't work as long as there's no ACPI implementation for this board(?)
|- bgcolor="#eeeeee" valign="top"
| [[Flashrom]]
| style="background:lime" | Works
| Currently [[Flashrom]] works fine with LinuxBIOS, but it does ''not'' yet work with the proprietary BIOS.
|- bgcolor="#eeeeee" valign="top"
| X11
| style="background:lime" | Works
| Tested using a VGA add-on card (PCI).
|}
 
== Building LinuxBIOS ==
 
Build a LinuxBIOS [[Payloads|payload]], e.g. [[FILO]], and copy the resulting file to /tmp/filo.elf.
 
$ cp payload.file /tmp/filo.elf
 
Checkout LinuxBIOS:
 
$ svn co svn://linuxbios.org/repos/trunk/LinuxBIOSv2
 
Build the LinuxBIOS image, containing the payload.


$ cd LinuxBIOSv2/targets
|CPU_status = OK
$ ./buildtarget msi/ms7260
|CPU_comments = I'm using an AMD Athlon 64 X2 Dual Core Processor 3600+.
$ cd msi/ms7260/ms7260
|CPU_L1_status = OK
$ make
|CPU_L1_comments = CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line)
|CPU_L2_status = OK
|CPU_L2_comments = CPU: L2 Cache: 512K (64 bytes/line)
|CPU_L3_status = N/A
|CPU_multiple_status = N/A
|CPU_multicore_status = OK
|CPU_multicore_comments = Both cores appear in '''dmesg''' and '''/proc/cpuinfo''' and work fine.
|CPU_virt_status = OK
|CPU_virt_comments = Tested: '''modprobe kvm-amd''' and using '''kvm''' works fine (window title shows ''QEMU/KVM'' instead of just ''QEMU''). '''/proc/cpuinfo''' lists '''svm''', i.e. that the CPU support AMD SVM (a.k.a. Pacifica).


Write the LinuxBIOS image onto your ROM chip using [[flashrom]]:
|RAM_EDO_status = N/A
|RAM_SDRAM_status = N/A
|RAM_SODIMM_status = N/A
|RAM_DDR_status = N/A
|RAM_DDR2_status = OK
|RAM_DDR2_comments = It seems some combinations of DIMMs and RAM slots don't work. Using only one DIMM (in slot 1) works for me.
|RAM_DDR3_status = N/A
|RAM_dualchannel_status = Untested
|RAM_ecc_status = N/A


$ flashrom -wv linuxbios.rom
|IDE_status = OK
|IDE_25_status = N/A
|SATA_status = OK
|SATA_comments = Tested with a 40 GB SATA disk, connected to the "SATA1" connector of the board (there are four). Works with '''hde2:/vmlinuz initrd=/initrd.img root=/dev/sda2''' in [[FILO]] (my Linux partition is /dev/sda2). Mounting the drive also works fine when you don't boot from SATA (e.g. from IDE or via [[etherboot]]).
|USB_status = OK
|USB_comments = Tested: USB thumb drive, USB keyboard (in all 10 USB ports), USB webcam, USB DVB-T adapter.
|Onboard_VGA_status = N/A
|Onboard_ethernet_status = OK
|Onboard_audio_status = OK
|Onboard_audio_comments = Works fine using the '''snd_hda_intel''' driver.
|Onboard_modem_status = Untested
|Onboard_firewire_status = N/A
|Smartcard_status = N/A
|Onboard_CF_status = N/A
|Onboard_PCMCIA_status = N/A
|Onboard_SCSI_status = N/A


<div style="color: red">WARNING: This will overwrite your current BIOS! Make sure you know what you're doing! You should have a way to revert back to the original BIOS in case anything goes wrong. It's a good idea to have a spare ROM chip which contains the original proprietary BIOS. Read the [[FAQ]] for more information. If in doubt, contact the [[Mailinglist|mailing list]].</div>
|ISA_cards_status = N/A
|AMR_cards_status = N/A
|Mini_PCI_cards_status = N/A
|PCIX_cards_status = N/A
|PCI_cards_status = OK
|PCI_cards_comments = Tested: PCI VGA card (X11 works fine) in all three PCI slots.
|AGP_cards_status = N/A
|PCIE_x1_status = Untested
|PCIE_x2_status = N/A
|PCIE_x4_status = N/A
|PCIE_x8_status = N/A
|PCIE_x16_status = Untested
|PCIE_x32_status = N/A
|HTX_status = N/A


Note: At the moment flashrom does ''not'' work in the MS-7260 (when booted using the original BIOS). Thus, I'm flashing the ROM chip in a different mainboard where flashrom works. However, flashrom works just fine once the MS-7260 is booted using LinuxBIOS.
|Floppy_status = WIP
|Floppy_comments = Doesn't seem to work. This is being investigated.
|COM1_status = OK
|COM2_status = N/A
|PP_status = OK
|PP_comments = Doing '''modprobe ppdev''' works fine, but further tests were not performed.
|PS2_keyboard_status = OK
|PS2_mouse_status = OK
|Game_port_status = N/A
|IR_status = Untested
|Speaker_status = OK
|DiskOnChip_status = N/A


== TODO ==
|Sensors_status = OK
|Sensors_comments = The '''k8temp''' module loads fine, the '''sensors''' tool outputs the CPU temperature (of both cores in my case) correctly. The '''w83627ehf''' module (for various temperatures and fan speeds) works fine. Also, the '''eeprom''' and '''i2c-nforce2''' modules load fine.
|Watchdog_status = Untested
|CAN_bus_status = N/A
|CPUfreq_status = No
|CPUfreq_comments = Probably won't work as long as there's no ACPI implementation for this board.
|Powersave_status = N/A
|ACPI_status = No
|ACPI_comments = There's no ACPI implementation for this board.
|Reboot_status = OK
|Poweroff_status = No
|LEDs_status = N/A
|HPET_status = Untested
|HPET_comments = Seems to not be enabled currently, but [http://kerneltrap.org/mailarchive/linux-kernel/2007/10/19/348587 the hardware seems to support it].
|RNG_status = N/A
|WakeOnModem_status = Untested
|WakeOnLAN_status = Untested
|WakeOnKeyboard_status = Untested
|WakeOnMouse_status = Untested
|Flashrom_status = WIP
|Flashrom_comments = Currently [[Flashrom]] works fine with coreboot, but it does ''not'' yet work with the proprietary BIOS.


* Test the devices marked as "Untested" in the above status table.
}}
* Fix flashrom to also work when the board is booted using the proprietary BIOS.
* Fix the issues with PCI add-on cards.




{{GPL}}
{{GPL}}

Latest revision as of 23:22, 18 January 2014

The MSI MS-7260 (K9N Neo), revision 1.0

This page describes how to use coreboot on the MSI MS-7260 (K9N Neo) mainboard. It is maintained by Uwe Hermann.

Status

Device/functionality Status Comments
CPU
CPU works OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK I'm using an AMD Athlon 64 X2 Dual Core Processor 3600+.
L1 cache enabled OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line)
L2 cache enabled OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK CPU: L2 Cache: 512K (64 bytes/line)
L3 cache enabled OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Multiple CPU support OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Multi-core support OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Both cores appear in dmesg and /proc/cpuinfo and work fine.
Hardware virtualization OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Tested: modprobe kvm-amd and using kvm works fine (window title shows QEMU/KVM instead of just QEMU). /proc/cpuinfo lists svm, i.e. that the CPU support AMD SVM (a.k.a. Pacifica).
RAM
EDO OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
SDRAM OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
SO-DIMM OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
DDR OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
DDR2 OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK It seems some combinations of DIMMs and RAM slots don't work. Using only one DIMM (in slot 1) works for me.
DDR3 OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Dual channel support OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
ECC support OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
On-board Hardware
On-board IDE 3.5" OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
On-board IDE 2.5" OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
On-board SATA OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Tested with a 40 GB SATA disk, connected to the "SATA1" connector of the board (there are four). Works with hde2:/vmlinuz initrd=/initrd.img root=/dev/sda2 in FILO (my Linux partition is /dev/sda2). Mounting the drive also works fine when you don't boot from SATA (e.g. from IDE or via etherboot).
On-board SCSI OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
On-board USB OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Tested: USB thumb drive, USB keyboard (in all 10 USB ports), USB webcam, USB DVB-T adapter.
On-board VGA OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
On-board Ethernet OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
On-board Audio OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Works fine using the snd_hda_intel driver.
On-board Modem OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
On-board FireWire OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
On-board Smartcard reader OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
On-board CompactFlash OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
On-board PCMCIA OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
On-board Wifi OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
On-board Bluetooth OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
On-board SD card reader OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Add-on slots/cards
ISA add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Audio/Modem-Riser (AMR/CNR) cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
PCI add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Tested: PCI VGA card (X11 works fine) in all three PCI slots.
Mini-PCI add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Mini-PCI-Express add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Unknown
PCI-X add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
AGP graphics cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
PCI Express x1 add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
PCI Express x2 add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
PCI Express x4 add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
PCI Express x8 add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
PCI Express x16 add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
PCI Express x32 add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
HTX add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Legacy / Super I/O
Floppy OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | WIP Doesn't seem to work. This is being investigated.
Serial port 1 (COM1) OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
Serial port 2 (COM2) OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Parallel port OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Doing modprobe ppdev works fine, but further tests were not performed.
PS/2 keyboard OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
PS/2 mouse OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
Game port OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Infrared OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
PC speaker OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
DiskOnChip OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Input
Trackpoint OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Touchpad OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Fn Hotkeys OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Fingerprint Reader OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Laptop
Docking VGA OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Docking LAN OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Docking USB OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Docking Audio OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Docking Displayport OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Thinklight OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Webcam OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Miscellaneous
Sensors / fan control OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK The k8temp module loads fine, the sensors tool outputs the CPU temperature (of both cores in my case) correctly. The w83627ehf module (for various temperatures and fan speeds) works fine. Also, the eeprom and i2c-nforce2 modules load fine.
Hardware watchdog OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
SMBus OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Unknown
CAN bus OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
CPU frequency scaling OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | No Probably won't work as long as there's no ACPI implementation for this board.
Other powersaving features OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
ACPI OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | No There's no ACPI implementation for this board.
Reboot OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
Poweroff OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | No
Suspend OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Unknown
Nonstandard LEDs OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
High precision event timers (HPET) OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested Seems to not be enabled currently, but the hardware seems to support it.
Random number generator (RNG) OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Wake on modem ring OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
Wake on LAN OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
Wake on keyboard OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
Wake on mouse OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
TPM OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Unknown
Flashrom OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | WIP Currently Flashrom works fine with coreboot, but it does not yet work with the proprietary BIOS.


GNU head This work is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or any later version. This work is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.