All of lore.kernel.org
 help / color / mirror / Atom feed
* Re: [Alsa-user] ALSA Newbie - Getting Ensoniq SoundscapeVivo to work?
       [not found] <d382e1990704272206y9712a84x1e07d07eda58fb18@mail.gmail.com>
@ 2007-04-28  9:54 ` Rene Herman
  2007-04-28 11:52   ` Hannu Savolainen
  2007-04-28 15:56   ` Cody Jung
  0 siblings, 2 replies; 7+ messages in thread
From: Rene Herman @ 2007-04-28  9:54 UTC (permalink / raw)
  To: Cody Jung; +Cc: alsa-devel, alsa-user

On 04/28/2007 07:06 AM, Cody Jung wrote:

> As it suggests in the subject, I'm both a Linux-newbie and an
> ALSA-newbie. I have an old clunker of a machine running Ubuntu Feisty
> that I built out of parts left on curbs during spring cleanup, and that's
> how I came across my sound card. It's an Ensoniq SoundscapeVivo (Not a 
> Vivo90, AFAIK).

As far as I'm aware, there are no other VIVO's than the VIVO90.

> I've gone through install and troubleshooting guides galore, but I can't
> seem to get ALSA to recognize my card, and I'm confused and rather tired
> of it all.
> 
> Do you think you can help, and if so, what information do you need from
> me?

I probably can; I have both a Soundscape VIVO90 and a much older Soundscape 
S-2000. My VIVO90 is an ISA-PnP card and has a Ensoniq MARK5-RO, an OTTOR2C 
and a Analog Devices AD1845 codec:

http://en.wikipedia.org/wiki/Ensoniq_Soundscape_VIVO90

I tested that when I acquired it a while ago and if I remember correctly, it 
just worked... mmm. come to think of it, it might be the case that I needed 
to add its PnP ID to the driver. Not sure anymore. Could you confirm whether 
or not your Soundscape is an ISA-PnP card and if so (that's also a way to 
find out if you don't know if it is) run "pnpdump" with it installed and 
look for a PnP-ID for the card in it? Something of the form "ENSxxxx".

If your card is one of the older non-PnP soundscapes it's going to be a bit 
harder; they also need firmware and all that and I haven't tested that card 
myself yet.

(please use the @alsa-project.org list addresses by the way; in the case of 
alsa-devel, the sourceforge one is gone even).

Rene.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Alsa-user] ALSA Newbie - Getting Ensoniq SoundscapeVivo to work?
  2007-04-28  9:54 ` [Alsa-user] ALSA Newbie - Getting Ensoniq SoundscapeVivo to work? Rene Herman
@ 2007-04-28 11:52   ` Hannu Savolainen
  2007-04-28 22:39     ` Rene Herman
  2007-04-28 15:56   ` Cody Jung
  1 sibling, 1 reply; 7+ messages in thread
From: Hannu Savolainen @ 2007-04-28 11:52 UTC (permalink / raw)
  To: Rene Herman; +Cc: Cody Jung, alsa-devel, alsa-user

Rene Herman kirjoitti:
> On 04/28/2007 07:06 AM, Cody Jung wrote:
>
>   
>> As it suggests in the subject, I'm both a Linux-newbie and an
>> ALSA-newbie. I have an old clunker of a machine running Ubuntu Feisty
>> that I built out of parts left on curbs during spring cleanup, and that's
>> how I came across my sound card. It's an Ensoniq SoundscapeVivo (Not a 
>> Vivo90, AFAIK).
>>     
>
> As far as I'm aware, there are no other VIVO's than the VIVO90.
>   
Wrong. VIVO and VIVO90 are different models but I can't remember exactly 
what was the difference (maybe VIVO90 was PnP and VIVO just plain ISA). 
Both models were supported by earlier versions of OSS (not OSS/Free). 
ISA drivers are no longer included in OSS but older 3.9.8 version 
(requires 2.4.x kernel) still has it.

Best regards,

Hannu

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: ALSA Newbie - Getting Ensoniq SoundscapeVivo to work?
  2007-04-28  9:54 ` [Alsa-user] ALSA Newbie - Getting Ensoniq SoundscapeVivo to work? Rene Herman
  2007-04-28 11:52   ` Hannu Savolainen
@ 2007-04-28 15:56   ` Cody Jung
  2007-04-28 22:32     ` [Alsa-user] " Rene Herman
  1 sibling, 1 reply; 7+ messages in thread
From: Cody Jung @ 2007-04-28 15:56 UTC (permalink / raw)
  To: Rene Herman; +Cc: alsa-devel, alsa-user

> I tested that when I acquired it a while ago and if I remember correctly, it
> just worked... mmm. come to think of it, it might be the case that I needed
> to add its PnP ID to the driver. Not sure anymore. Could you confirm whether
> or not your Soundscape is an ISA-PnP card and if so (that's also a way to
> find out if you don't know if it is) run "pnpdump" with it installed and
> look for a PnP-ID for the card in it? Something of the form "ENSxxxx".

There was a Vendor Id (ENS4081) and two Logical device Ids (ENS1011
and ENS2020).

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Alsa-user] ALSA Newbie - Getting Ensoniq SoundscapeVivo to work?
  2007-04-28 15:56   ` Cody Jung
@ 2007-04-28 22:32     ` Rene Herman
  0 siblings, 0 replies; 7+ messages in thread
From: Rene Herman @ 2007-04-28 22:32 UTC (permalink / raw)
  To: Cody Jung; +Cc: alsa-devel, alsa-user

[-- Attachment #1: Type: text/plain, Size: 1915 bytes --]

On 04/28/2007 05:56 PM, Cody Jung wrote:

> There was a Vendor Id (ENS4081) and two Logical device Ids (ENS1011 and
> ENS2020).

Okay, that's a VIVO90. snd-sscape does not work for this card, and not just 
as a matter of a missing PnP ID. I suppose PnP Soundscapes exist for which 
the driver is correct but at least for the VIVO90 it fails the detect, tries 
to talk to the codec at a completely wrong address, and generally seems to 
not be applicable.

Attached is a minimal driver for the VIVO90. It only drives the AD1845 codec 
but chances are fairly good that's actually all you care about. Hardware 
(firmware rather) midi is what makes the Soundscape better/nicer than most 
but it's also the hard (undocumented) part and I haven't concerned myself 
with it for now.

The msleep(500) in there is not nice, but the card needs a delay after 
activation  until the codec is available and while I did look, I haven't 
found what to poll yet (it's not interrupting). The 500 ms hasn't failed to 
load for me yet, but it's not hugely roomy; 400 ms hasn't _succeeded_ for me 
yet so if it won't load for you please increase the 500 to 1000 as a first try.

This is not being submitted. It's only a very minimal thing and since Hannu 
said that the VIVO and the VIVO90 are in fact different models (mine does 
advertise itself as a "ENSONIQ SoundscapeVIVO" without the 90 in its PNP 
string) I'm not even sure if this is VIVO90 specific. The PNP ID probably 
is. It's only being posted in the hope that it'll work for your needs.

It'll probably grow into a real driver some day, but not soon; given that 
it's all very undocumented, getting more to work might be fairly painful. 
The old/other driver will help to some degree but I'm not sure to which.

The patch was generated against 2.6.21 and should apply without trouble to 
most recent kernels. Loading works just as "modprobe snd-vivo", no params.

Rene.


[-- Attachment #2: vivo.diff --]
[-- Type: text/plain, Size: 5197 bytes --]

commit d67e8af62cf79955fd0c4cb2e54d80be9c19629f
Author: Rene Herman <rene.herman@gmail.com>
Date:   Sat Apr 28 23:49:43 2007 +0200

    [ALSA] snd-vivo

diff --git a/sound/isa/Kconfig b/sound/isa/Kconfig
index 4e3a972..7338c37 100644
--- a/sound/isa/Kconfig
+++ b/sound/isa/Kconfig
@@ -388,6 +388,18 @@ config SND_SSCAPE
 	  To compile this driver as a module, choose M here: the module
 	  will be called snd-sscape.
 
+config SND_VIVO
+	tristate "Ensoniq Soundscape VIVO(90) Driver"
+	depends on SND
+	select SND_MPU401_UART
+	select SND_CS4231_LIB
+	help
+	  Say Y here to include support for Ensoniq Soundscape VIVO(90)
+	  soundcards.
+
+	  To compile this driver as a module, choose M here: the module
+	  will be called snd-vivo.
+
 config SND_WAVEFRONT
 	tristate "Turtle Beach Maui,Tropez,Tropez+ (Wavefront)"
 	depends on SND
diff --git a/sound/isa/Makefile b/sound/isa/Makefile
index bb317cc..8f246af 100644
--- a/sound/isa/Makefile
+++ b/sound/isa/Makefile
@@ -12,6 +12,7 @@ snd-es18xx-objs := es18xx.o
 snd-opl3sa2-objs := opl3sa2.o
 snd-sgalaxy-objs := sgalaxy.o
 snd-sscape-objs := sscape.o
+snd-vivo-objs := vivo.o
 
 # Toplevel Module Dependency
 obj-$(CONFIG_SND_ADLIB) += snd-adlib.o
@@ -23,6 +24,7 @@ obj-$(CONFIG_SND_ES18XX) += snd-es18xx.o
 obj-$(CONFIG_SND_OPL3SA2) += snd-opl3sa2.o
 obj-$(CONFIG_SND_SGALAXY) += snd-sgalaxy.o
 obj-$(CONFIG_SND_SSCAPE) += snd-sscape.o
+obj-$(CONFIG_SND_VIVO) += snd-vivo.o
 
 obj-$(CONFIG_SND) += ad1816a/ ad1848/ cs423x/ es1688/ gus/ opti9xx/ \
 		     sb/ wavefront/
diff --git a/sound/isa/vivo.c b/sound/isa/vivo.c
new file mode 100644
index 0000000..fd2c774
--- /dev/null
+++ b/sound/isa/vivo.c
@@ -0,0 +1,148 @@
+/*
+ * Ensoniq Soundscape VIVO(90) Driver
+ */
+
+#include <sound/driver.h>
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/pnp.h>
+#include <linux/delay.h>
+#include <sound/core.h>
+#include <sound/initval.h>
+#include <sound/mpu401.h>
+#include <sound/cs4231.h>
+
+#define CRD_NAME "Ensoniq Soundscape VIVO(90)"
+#define DRV_NAME "VIVO"
+#define DEV_NAME "vivo"
+
+MODULE_DESCRIPTION(CRD_NAME);
+MODULE_AUTHOR("Rene Herman");
+MODULE_LICENSE("GPL");
+
+static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX;
+static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR;
+static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE;
+
+module_param_array(index, int, NULL, 0444);
+MODULE_PARM_DESC(index, "Index value for " CRD_NAME " soundcard");
+module_param_array(id, charp, NULL, 0444);
+MODULE_PARM_DESC(id, "ID string for " CRD_NAME " soundcard");
+module_param_array(enable, bool, NULL, 0444);
+MODULE_PARM_DESC(enable, "Enable " CRD_NAME " soundcard");
+
+static struct pnp_card_device_id snd_vivo_pnpids[] = {
+	{ .id = "ENS4081", .devs = { { "ENS1011" } } },
+	{ .id = "" }
+};
+
+MODULE_DEVICE_TABLE(pnp_card, snd_vivo_pnpids);
+
+static int snd_vivo_error __devinitdata = -ENODEV;
+
+static int __devinit snd_vivo_probe(struct pnp_card_link *pcard,
+				    const struct pnp_card_device_id *pid)
+{
+	static int card_num;
+
+	struct pnp_dev	  *pdev;
+	struct snd_card	  *card;
+	struct snd_cs4231 *chip;
+
+	int num, error;
+
+	if (card_num == SNDRV_CARDS)
+		return -ENODEV;
+
+	num = card_num++;
+	if (!enable[num])
+		return -ENODEV;
+
+	pdev = pnp_request_card_device(pcard, pid->devs[0].id, NULL);
+	if (!pdev || pnp_activate_dev(pdev) < 0)
+		return -ENODEV;
+
+	card = snd_card_new(index[num], id[num], THIS_MODULE, 0);
+	if (!card)
+		return -EINVAL;
+
+	snd_card_set_dev(card, &pdev->dev);
+
+	strcpy(card->driver, DRV_NAME);
+	strcpy(card->shortname, DRV_NAME);
+	strcpy(card->longname, CRD_NAME);
+
+	error = snd_mpu401_uart_new(card, 0, MPU401_HW_MPU401,
+				    pnp_port_start(pdev, 0), 0,
+				    pnp_irq(pdev, 1), 0, NULL);
+	if (error < 0)
+		goto out;
+
+	msleep(500);
+
+	error = snd_cs4231_create(card, pnp_port_start(pdev, 1) + 4, -1,
+				  pnp_irq(pdev, 0), pnp_dma(pdev, 0),
+				  pnp_dma(pdev, 1), CS4231_HW_DETECT,
+				  0, &chip);
+	if (error < 0)
+		goto out;
+
+	error = snd_cs4231_pcm(chip, 0, NULL);
+	if (error < 0)
+		goto out;
+
+	error = snd_cs4231_mixer(chip);
+	if (error < 0)
+		goto out;
+
+	error = snd_cs4231_timer(chip, 0, NULL);
+	if (error < 0)
+		goto out;
+
+	error = snd_card_register(card);
+	if (error < 0)
+		goto out;
+
+	pnp_set_card_drvdata(pcard, card);
+	return (snd_vivo_error = 0);
+
+out:	snd_card_free(card);
+	return error;
+}
+
+static void __devexit snd_vivo_remove(struct pnp_card_link *pcard)
+{
+	snd_card_free(pnp_get_card_drvdata(pcard));
+	pnp_set_card_drvdata(pcard, NULL);
+}
+
+static struct pnp_card_driver snd_vivo_driver = {
+	.flags		= PNP_DRIVER_RES_DISABLE,
+	.name		= DEV_NAME,
+	.id_table	= snd_vivo_pnpids,
+	.probe		= snd_vivo_probe,
+	.remove		= __devexit_p(snd_vivo_remove)
+};
+
+static int __init alsa_card_vivo_init(void)
+{
+	int error;
+
+	error = pnp_register_card_driver(&snd_vivo_driver);
+	if (error < 0)
+		goto out;
+
+	error = snd_vivo_error;
+	if (error < 0)
+		pnp_unregister_card_driver(&snd_vivo_driver);
+
+out:	return error;
+}
+
+static void __exit alsa_card_vivo_exit(void)
+{
+	pnp_unregister_card_driver(&snd_vivo_driver);
+}
+
+module_init(alsa_card_vivo_init);
+module_exit(alsa_card_vivo_exit);

[-- Attachment #3: Type: text/plain, Size: 160 bytes --]

_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [Alsa-user] ALSA Newbie - Getting Ensoniq SoundscapeVivo to work?
  2007-04-28 11:52   ` Hannu Savolainen
@ 2007-04-28 22:39     ` Rene Herman
       [not found]       ` <d382e1990704281918g42165aaas4cac717fe5b4bab0@mail.gmail.com>
  0 siblings, 1 reply; 7+ messages in thread
From: Rene Herman @ 2007-04-28 22:39 UTC (permalink / raw)
  To: Hannu Savolainen; +Cc: Cody Jung, alsa-devel, alsa-user

On 04/28/2007 01:52 PM, Hannu Savolainen wrote:

> Wrong. VIVO and VIVO90 are different models but I can't remember exactly 
> what was the difference (maybe VIVO90 was PnP and VIVO just plain ISA).

Okay, thank you for the information. The one I have here has a large sticker 
on it saying "Soundscape VIVO90" but "ENSONIQ SoundscapeVIVO" as the PNP ID 
so I assumed they were probably the same thing...

> Both models were supported by earlier versions of OSS (not OSS/Free). ISA
> drivers are no longer included in OSS but older 3.9.8 version (requires
> 2.4.x kernel) still has it.

Given that OSS no longer supports ISA drivers -- no source for these would 
be available, would it? I have a specific hobby interest in these old ISA 
soundcards.

Rene.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Alsa-user] ALSA Newbie - Getting Ensoniq SoundscapeVivo to work?
       [not found]       ` <d382e1990704281918g42165aaas4cac717fe5b4bab0@mail.gmail.com>
@ 2007-04-29  7:31         ` Rene Herman
  2007-04-29  7:33           ` Rene Herman
  0 siblings, 1 reply; 7+ messages in thread
From: Rene Herman @ 2007-04-29  7:31 UTC (permalink / raw)
  To: Cody Jung, ALSA devel, ALSA user

On 04/29/2007 04:18 AM, Cody Jung wrote:

> Er...that appears to be a .diff file. Do I have to do something with it
> for it to be workable, or...?

Yes. You'd have to apply the patch (as it's called) to a recent kernel
source tree, reconfigure the kernel adding this new VIVO driver to your
config and then recompile and reinstall that kernel.

Oh well, you posting to alsa-user and not alsa-devel should've been a hint.
Rest assured the driver would've worked nicely :-/

There is another thing you can do. What was posted was just a wrapper around
cs4231-lib in much the same way that the existing snd-cs4231 module is and
that module you _will_ already have installed. That one doesn't do anything
automatic though, so you will have to know how to manually enable your card
first.

First, open a root shell and look through the /sys/bus/pnp/devices directory
for your VIVO. Under the "xx:yy.zz" sub-directories there you will find "id"
files, and one of them will say "ENS1011". Example:

# cat /sys/bus/pnp/devices/01\:01.00/id
ENS1011

After having found it in there, activate the card:

# echo activate >/sys/bus/pnp/devices/01\:01.00/resources

and look at what resources were assigned to it by the PnP layer:

# cat /sys/bus/pnp/devices/01\:01.00/resources
state = active
io 0x330-0x33f
io 0x530-0x537
io 0x2100-0x213f
irq 5
irq 9
dma 1
dma 0

You can now load the snd-cs4231 module specifying those card resources manually:

# modprobe snd-cs4231 port=0x534 irq=5 dma1=1 dma2=0

Yes, 0x534. The second io resource + 4. This should've loaded without
problem. Start up alsamixer:

# alsamixer

and up and unmute the PCM volume. With -> and <- you can walk through the
sliders; ^ ups the one you're on, and "m" toggles the mute (the "MM" at the
bottom should turn to a highlighted "OO"). PCM is the first slider. 90 seems
to be an okay value.

Quit alsamixer again with Alt-Q and now you should be able to hear things.
If you have a plain "wav" file around somewhere, that makes for the quickest
test:

# aplay foo.wav

No, I'm not going to tell you to plug in your speakers.

If anything in the above doesn't work as expected, your system is not as
expected and there's isn't much I can help with. If everything does work,
you can automate it for the next time.

I've attached (to try and avoid linewrap) the lines that you will need in
/etc/modprobe.conf. Ubuntu has no doubt found a way to make that dark and
muddy again so you might need to add it to an /etc/modprobe/whatever file
instead. Please ask a fellow ubuntu victim for advice about translating this
generic linux advice to your install.

Once you do have that all setup, sound should "Just Work". You probably need
to adjust the volume as specified above once only after which ubuntu will
save it for the next boot, but if you don't hear anything ater rebooting,
please check that first.

Rene.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Alsa-user] ALSA Newbie - Getting Ensoniq SoundscapeVivo to work?
  2007-04-29  7:31         ` Rene Herman
@ 2007-04-29  7:33           ` Rene Herman
  0 siblings, 0 replies; 7+ messages in thread
From: Rene Herman @ 2007-04-29  7:33 UTC (permalink / raw)
  To: Cody Jung; +Cc: ALSA devel, ALSA user

[-- Attachment #1: Type: text/plain, Size: 164 bytes --]

On 04/29/2007 09:31 AM, Rene Herman wrote:

> I've attached (to try and avoid linewrap) the lines that you will need in
> /etc/modprobe.conf.

No I haven't.

Rene.

[-- Attachment #2: modprobe.conf --]
[-- Type: text/plain, Size: 392 bytes --]

alias		snd-card-0	snd-cs4231
alias		sound-slot-0	snd-cs4231

options		snd-cs4231	index=0 port=0x534 irq=5 dma1=1 dma2=0

install		snd-cs4231	echo activate >/sys/bus/pnp/devices/01\:01.00/resources &&\
				sleep 1 &&\
				/sbin/modprobe --ignore-install snd-cs4231

remove		snd-cs4231	/sbin/modprobe -r --ignore-remove snd-cs4231 &&\
				echo disable >/sys/bus/pnp/devices/01\:01.00/resources

[-- Attachment #3: Type: text/plain, Size: 160 bytes --]

_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2007-04-29  7:33 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <d382e1990704272206y9712a84x1e07d07eda58fb18@mail.gmail.com>
2007-04-28  9:54 ` [Alsa-user] ALSA Newbie - Getting Ensoniq SoundscapeVivo to work? Rene Herman
2007-04-28 11:52   ` Hannu Savolainen
2007-04-28 22:39     ` Rene Herman
     [not found]       ` <d382e1990704281918g42165aaas4cac717fe5b4bab0@mail.gmail.com>
2007-04-29  7:31         ` Rene Herman
2007-04-29  7:33           ` Rene Herman
2007-04-28 15:56   ` Cody Jung
2007-04-28 22:32     ` [Alsa-user] " Rene Herman

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.