At Thu, 29 Jan 2009 15:55:27 +0100, Krzysztof Helt wrote:
On Mon, 26 Jan 2009 10:42:29 +0100 Takashi Iwai tiwai@suse.de wrote:
At Sun, 25 Jan 2009 23:05:55 +0100, Rene Herman wrote:
On 25-01-09 21:10, Krzysztof Helt wrote:
From: Krzysztof Helt krzysztof.h1@wp.pl
The ess1688 driver uses the same port for PCM audio (SB compatible) and OPL3 synthesis. It is wrong so allow to choose a correct port for OPL3 synthesis.
Only a very quick reply -- generally, the low 2 SB ports are indeed OPL3 compatible (or was it just OPL2? ...)
All devices have separate OPL3 I/O ports. So there must be a reason...
The ESS 688 datasheet states that FM chip select signal (FMCSB) is activated when one of the port ranges: 388H-389H, 2x8H-2x9H, 2x0H-2x3H is selected. The current code may work on on the ESS 688. However, it obviously does not work with the ESS 1688 (bug #282). The bug report states that the OPL3 synthesis works with the OSS driver which chooses the 0x388 port for the OPL3.
My patch adds a new port setting so it is still possible to set the fm_port value the same as the port value. No change here. However, it allows setting different values to the port and the fm_port setting if needed.
Fair enough. However...
Takashi, please consider applying my patch to the alsa tree.
One thing I noticed in your patch is that opl3 won't be created after your change as default, as fmport=SNDRV_AUTO_PORT. This is a regression. The code should be like below instead:
if (fm_port[n] == SNDRV_AUTO_PORT) fm_port[n] = chip->port; /* share the same port */
if (fm_port[n] > 0) { if (snd_opl3_create(card, fm_port[n], fm_port[n] + 2, OPL3_HW_OPL3, 0, &opl3) < 0) ...
Could you fix and repost?
thanks,
Takashi