--- ../../alsa-kernel/drivers/opl3/opl3_lib.c	2007-10-31 08:53:02.000000000 +0100
+++ opl3_lib.c	2007-12-20 11:09:52.000000000 +0100
@@ -1,3 +1,4 @@
+#include "adriver.h"
 /*
  *  Copyright (c) by Jaroslav Kysela <perex@perex.cz>,
  *                   Hannu Savolainen 1993-1996,
@@ -435,6 +436,26 @@
 	case OPL3_HW_OPL3_FM801:
 		opl3->command = &snd_opl3_command;
 		break;
+	case OPL3_HW_OPL3_PC98:
+		opl3->command = &snd_opl3_command;
+
+		/* Initialize? */
+		opl3->command(opl3, OPL3_RIGHT | 0x05, 0x05);
+		opl3->command(opl3, OPL3_RIGHT | 0x08, 0x04);
+		opl3->command(opl3, OPL3_RIGHT | 0x08, 0x00);
+		opl3->command(opl3, OPL3_LEFT | 0xf7, 0x00);
+		opl3->command(opl3, OPL3_LEFT | 0x04, 0x60);
+		opl3->command(opl3, OPL3_LEFT | 0x04, 0x80);
+		inb(opl3->l_port);
+
+		opl3->command(opl3, OPL3_LEFT | 0x02, 0xff);
+		opl3->command(opl3, OPL3_LEFT | 0x04, 0x21);
+		inb(opl3->l_port);
+
+		opl3->command(opl3, OPL3_LEFT | 0x04, 0x60);
+		opl3->command(opl3, OPL3_LEFT | 0x04, 0x80);
+
+		break;
 	default:
 		opl3->command = &snd_opl2_command;
 		if ((err = snd_opl3_detect(opl3)) < 0) {
