[alsa-devel] [PATCH] ess1688: fix OPL3 port setting
Takashi Iwai
tiwai at suse.de
Thu Jan 29 16:05:14 CET 2009
At Thu, 29 Jan 2009 15:55:27 +0100,
Krzysztof Helt wrote:
>
> On Mon, 26 Jan 2009 10:42:29 +0100
> Takashi Iwai <tiwai at 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 at 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
More information about the Alsa-devel
mailing list