All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/3] [RME - HDSP] Userlevel support for RPM
@ 2011-07-28 21:45 Adrian Knoth
  2011-07-28 21:45 ` [PATCH 1/3] hdspmixer: Add support for RME RPM Adrian Knoth
                   ` (3 more replies)
  0 siblings, 4 replies; 10+ messages in thread
From: Adrian Knoth @ 2011-07-28 21:45 UTC (permalink / raw)
  To: patch; +Cc: Adrian Knoth, alsa-devel

Hi!

Here's a series of recent work on RME RPM support. Confirmed to be
working by our one and only user so far. ;)

As soon as alsa-lib supports the RPM (it's a single define), I'll drop
the temporary define in both, hdsploader and hdspmixer.

RPM users: note that the current kernel code seems to be broken and does
not correctly detect your RPM box. More magic could be added to
hdsploader to provide a temporary workaround.


Cheers

Adrian Knoth (3):
  hdspmixer: Add support for RME RPM
  hdsploader: Add support for RME RPM
  hdsploader: Temporary define for RPM

 hdsploader/hdsploader.c             |    7 +++++++
 hdspmixer/src/HDSPMixerCard.cxx     |   11 +++++++++++
 hdspmixer/src/HDSPMixerCard.h       |    5 +++++
 hdspmixer/src/HDSPMixerOutput.cxx   |   15 +++++++++++++++
 hdspmixer/src/HDSPMixerSelector.cxx |    7 +++++++
 hdspmixer/src/HDSPMixerWindow.cxx   |    4 ++++
 hdspmixer/src/channelmap.cxx        |   12 ++++++++++++
 hdspmixer/src/channelmap.h          |    5 +++++
 hdspmixer/src/hdspmixer.cxx         |    4 ++++
 9 files changed, 70 insertions(+), 0 deletions(-)

-- 
1.7.5.4

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

* [PATCH 1/3] hdspmixer: Add support for RME RPM
  2011-07-28 21:45 [PATCH 0/3] [RME - HDSP] Userlevel support for RPM Adrian Knoth
@ 2011-07-28 21:45 ` Adrian Knoth
  2011-07-28 21:45 ` [PATCH 2/3] hdsploader: " Adrian Knoth
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 10+ messages in thread
From: Adrian Knoth @ 2011-07-28 21:45 UTC (permalink / raw)
  To: patch; +Cc: Adrian Knoth, alsa-devel

This patch adds support for the RME RPM devices. It's mostly based on
Florian Faber's previous patch against hdspmixer 1.0.23,
forwarded-ported to the current hdspmixer code.

Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de>

diff --git a/hdspmixer/src/HDSPMixerCard.cxx b/hdspmixer/src/HDSPMixerCard.cxx
index fbd5de5..78b88b6 100644
--- a/hdspmixer/src/HDSPMixerCard.cxx
+++ b/hdspmixer/src/HDSPMixerCard.cxx
@@ -255,6 +255,17 @@ void HDSPMixerCard::adjustSettings() {
         }
     }
 
+    if (type == RPM) {
+        /* RPM has no digital audio connectors, hence channel mappings don't
+         * depend on speedmode */
+        channels_input = 5;
+        channels_playback = channels_output = 6; /* 2xMain,2xMon,2xPH */
+        channel_map_input = channel_map_playback = channel_map_rpm;
+        dest_map = dest_map_rpm;
+        meter_map_input = meter_map_playback = channel_map_rpm;
+    }
+
+
     if (type == H9652) {
         switch (speed_mode) {
         case 0:
diff --git a/hdspmixer/src/HDSPMixerCard.h b/hdspmixer/src/HDSPMixerCard.h
index d2ef8a6..656702b 100644
--- a/hdspmixer/src/HDSPMixerCard.h
+++ b/hdspmixer/src/HDSPMixerCard.h
@@ -32,6 +32,11 @@
 #include "channelmap.h"
 #include "HDSPMixerWindow.h"
 
+/* temporary workaround until hdsp.h (HDSP_IO_Type gets fixed */
+#ifndef RPM
+# define RPM	5
+#endif
+
 class HDSPMixerWindow;
 
 class HDSPMixerCard
diff --git a/hdspmixer/src/HDSPMixerOutput.cxx b/hdspmixer/src/HDSPMixerOutput.cxx
index 17ab25d..5a88f41 100644
--- a/hdspmixer/src/HDSPMixerOutput.cxx
+++ b/hdspmixer/src/HDSPMixerOutput.cxx
@@ -77,6 +77,15 @@ static char const *labels_raydat_qs[12] = {
   "SP.L", "SP.R"
 };
 
+static char const *labels_rpm_output[6] = {
+  "Main L", "Main R", "Mon L", "Mon R", "PH L", "PH R"
+};
+
+static char const *labels_rpm_input[5] = {
+  "Phono 1.L", "Phono 1.R",
+  "Phono 2.L", "Phono 2.R",
+  "Mic"
+};
 
 static char const *labels_aio_ss_input[14] = {
   "AN 1",  "AN 2",
@@ -219,6 +228,12 @@ void HDSPMixerOutput::setLabels()
             labels_input = labels_playback = labels_mf_ss;
         return;
     };
+
+    if (type == RPM) {
+        labels_input = labels_rpm_input;
+        labels_playback = labels_rpm_output;
+        return;
+    };
     
     if (type == Digiface || type == H9652) {
         if (sm)
diff --git a/hdspmixer/src/HDSPMixerSelector.cxx b/hdspmixer/src/HDSPMixerSelector.cxx
index 32d91db..084c80d 100644
--- a/hdspmixer/src/HDSPMixerSelector.cxx
+++ b/hdspmixer/src/HDSPMixerSelector.cxx
@@ -131,6 +131,10 @@ static char const *destinations_df_ds[8] = {
   "SPDIF", "Analog"
 };
 
+static char const *destinations_rpm[3] = {
+  "Main", "Mon", "Phones"
+};
+
 static char const *destinations_h9652_ss[13] = {
   "A1 1+2", "A1 3+4", "A1 5+6", "A1 7+8",
   "A2 1+2", "A2 3+4", "A2 5+6", "A2 7+8",
@@ -261,6 +265,9 @@ void HDSPMixerSelector::setLabels()
 	    /* should never happen */
 	    break;
 	}
+    } else if (type == RPM) {
+        max_dest = 3;
+        destinations = destinations_rpm;
     } else if (type == H9652) {
 	switch (sm) {
 	case 0:
diff --git a/hdspmixer/src/HDSPMixerWindow.cxx b/hdspmixer/src/HDSPMixerWindow.cxx
index 74b5630..e1fe18c 100644
--- a/hdspmixer/src/HDSPMixerWindow.cxx
+++ b/hdspmixer/src/HDSPMixerWindow.cxx
@@ -709,6 +709,10 @@ void HDSPMixerWindow::restoreDefaults(int card)
 	maxdest[0] = 14;
 	maxdest[1] = 8;
 	break;
+    case RPM:
+    chnls[0] = chnls[1] = 6;
+    maxdest[0] = maxdest[1] = 3;
+    break;
     case H9652:
 	chnls[0] = 26;
 	chnls[1] = 14;
diff --git a/hdspmixer/src/channelmap.cxx b/hdspmixer/src/channelmap.cxx
index 598be56..e3ca15c 100644
--- a/hdspmixer/src/channelmap.cxx
+++ b/hdspmixer/src/channelmap.cxx
@@ -78,6 +78,18 @@ char dest_map_ds[8] = {
 	0, 2, 8, 10, 16, 18, 24, 26
 };
 
+/* RPM */
+char dest_map_rpm[3] = {
+    0, 2, 4
+};
+
+char channel_map_rpm[26] = {
+     0,  1,  2,  3,  4,  5, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1
+};
+
 // HDSP 9652
 
 char dest_map_h9652_ss[13] = {
diff --git a/hdspmixer/src/channelmap.h b/hdspmixer/src/channelmap.h
index 6b151a0..51b69ce 100644
--- a/hdspmixer/src/channelmap.h
+++ b/hdspmixer/src/channelmap.h
@@ -54,6 +54,11 @@ extern char channel_map_ds[26];
 
 extern char dest_map_ds[8];
 
+// RPM
+
+extern char dest_map_rpm[3];
+extern char channel_map_rpm[26];
+
 // HDSP 9652
 
 extern char dest_map_h9652_ss[13];
diff --git a/hdspmixer/src/hdspmixer.cxx b/hdspmixer/src/hdspmixer.cxx
index 4929863..9c0a3c4 100644
--- a/hdspmixer/src/hdspmixer.cxx
+++ b/hdspmixer/src/hdspmixer.cxx
@@ -65,6 +65,10 @@ int main(int argc, char **argv)
             printf("Digiface found!\n");
             hdsp_cards[cards] = new HDSPMixerCard(Digiface, card, shortname);
             cards++;
+        } else if (!strncmp(name, "RME Hammerfall DSP + RPM", 24)) {
+            printf("RPM found!\n");
+            hdsp_cards[cards] = new HDSPMixerCard(RPM, card, shortname);
+            cards++;
         } else if (!strncmp(name, "RME Hammerfall HDSP 9652", 24)) {
             printf("HDSP 9652 found!\n");
             hdsp_cards[cards] = new HDSPMixerCard(H9652, card, shortname);
-- 
1.7.5.4

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

* [PATCH 2/3] hdsploader: Add support for RME RPM
  2011-07-28 21:45 [PATCH 0/3] [RME - HDSP] Userlevel support for RPM Adrian Knoth
  2011-07-28 21:45 ` [PATCH 1/3] hdspmixer: Add support for RME RPM Adrian Knoth
@ 2011-07-28 21:45 ` Adrian Knoth
  2011-07-28 21:45 ` [PATCH 3/3] hdsploader: Temporary define for RPM Adrian Knoth
  2011-07-29  5:49 ` [PATCH 0/3] [RME - HDSP] Userlevel support " Takashi Iwai
  3 siblings, 0 replies; 10+ messages in thread
From: Adrian Knoth @ 2011-07-28 21:45 UTC (permalink / raw)
  To: patch; +Cc: Adrian Knoth, alsa-devel

Augment hdsploader to support the RME RPM devices. The firmware is
already present in alsa-firmware, so we can directly load it.

Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de>

diff --git a/hdsploader/hdsploader.c b/hdsploader/hdsploader.c
index d1855b1..fa488a2 100644
--- a/hdsploader/hdsploader.c
+++ b/hdsploader/hdsploader.c
@@ -86,6 +86,9 @@ void upload_firmware(int card)
 	    err = read_bin_file(code, DATAPATH "/digiface_firmware_rev11.bin");
 	}
 	break;
+    case RPM:
+	err = read_bin_file(code, DATAPATH "/rpm_firmware.bin");
+	break;
     default:
 	fprintf(stderr, "Unknown iobox or firmware revision\n");
 	snd_hwdep_close(hw);
-- 
1.7.5.4

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

* [PATCH 3/3] hdsploader: Temporary define for RPM
  2011-07-28 21:45 [PATCH 0/3] [RME - HDSP] Userlevel support for RPM Adrian Knoth
  2011-07-28 21:45 ` [PATCH 1/3] hdspmixer: Add support for RME RPM Adrian Knoth
  2011-07-28 21:45 ` [PATCH 2/3] hdsploader: " Adrian Knoth
@ 2011-07-28 21:45 ` Adrian Knoth
  2011-07-29  5:50   ` Takashi Iwai
  2011-07-29  5:49 ` [PATCH 0/3] [RME - HDSP] Userlevel support " Takashi Iwai
  3 siblings, 1 reply; 10+ messages in thread
From: Adrian Knoth @ 2011-07-28 21:45 UTC (permalink / raw)
  To: patch; +Cc: Adrian Knoth, alsa-devel

Right now (1.0.24.1), alsa-lib's hdsp.h doesn't know about the RPM. To
avoid a strong dependency on unreleased code, temporary provide the
define here.

It can be dropped as soon as a new version of alsa-lib will be released,
thus effectively making it the required minimum version for alsa-tools.

Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de>

diff --git a/hdsploader/hdsploader.c b/hdsploader/hdsploader.c
index fa488a2..bfbe3bc 100644
--- a/hdsploader/hdsploader.c
+++ b/hdsploader/hdsploader.c
@@ -27,6 +27,10 @@
 
 static u_int32_t code[24413];
 
+#ifndef RPM
+# define RPM	5
+#endif
+
 int read_bin_file(u_int32_t *array, const char *filename)
 {
 	FILE *out;
-- 
1.7.5.4

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

* Re: [PATCH 0/3] [RME - HDSP] Userlevel support for RPM
  2011-07-28 21:45 [PATCH 0/3] [RME - HDSP] Userlevel support for RPM Adrian Knoth
                   ` (2 preceding siblings ...)
  2011-07-28 21:45 ` [PATCH 3/3] hdsploader: Temporary define for RPM Adrian Knoth
@ 2011-07-29  5:49 ` Takashi Iwai
  3 siblings, 0 replies; 10+ messages in thread
From: Takashi Iwai @ 2011-07-29  5:49 UTC (permalink / raw)
  To: Adrian Knoth; +Cc: alsa-devel

At Thu, 28 Jul 2011 23:45:45 +0200,
Adrian Knoth wrote:
> 
> Hi!
> 
> Here's a series of recent work on RME RPM support. Confirmed to be
> working by our one and only user so far. ;)
> 
> As soon as alsa-lib supports the RPM (it's a single define), I'll drop
> the temporary define in both, hdsploader and hdspmixer.
> 
> RPM users: note that the current kernel code seems to be broken and does
> not correctly detect your RPM box. More magic could be added to
> hdsploader to provide a temporary workaround.

OK, applied now all three patches.  The drop can be done later.


thanks,

Takashi

> 
> 
> Cheers
> 
> Adrian Knoth (3):
>   hdspmixer: Add support for RME RPM
>   hdsploader: Add support for RME RPM
>   hdsploader: Temporary define for RPM
> 
>  hdsploader/hdsploader.c             |    7 +++++++
>  hdspmixer/src/HDSPMixerCard.cxx     |   11 +++++++++++
>  hdspmixer/src/HDSPMixerCard.h       |    5 +++++
>  hdspmixer/src/HDSPMixerOutput.cxx   |   15 +++++++++++++++
>  hdspmixer/src/HDSPMixerSelector.cxx |    7 +++++++
>  hdspmixer/src/HDSPMixerWindow.cxx   |    4 ++++
>  hdspmixer/src/channelmap.cxx        |   12 ++++++++++++
>  hdspmixer/src/channelmap.h          |    5 +++++
>  hdspmixer/src/hdspmixer.cxx         |    4 ++++
>  9 files changed, 70 insertions(+), 0 deletions(-)
> 
> -- 
> 1.7.5.4
> 

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

* Re: [PATCH 3/3] hdsploader: Temporary define for RPM
  2011-07-28 21:45 ` [PATCH 3/3] hdsploader: Temporary define for RPM Adrian Knoth
@ 2011-07-29  5:50   ` Takashi Iwai
  2011-07-29  5:51     ` Takashi Iwai
  2011-07-29 15:46     ` Adrian Knoth
  0 siblings, 2 replies; 10+ messages in thread
From: Takashi Iwai @ 2011-07-29  5:50 UTC (permalink / raw)
  To: Adrian Knoth; +Cc: alsa-devel

At Thu, 28 Jul 2011 23:45:48 +0200,
Adrian Knoth wrote:
> 
> Right now (1.0.24.1), alsa-lib's hdsp.h doesn't know about the RPM. To
> avoid a strong dependency on unreleased code, temporary provide the
> define here.
> 
> It can be dropped as soon as a new version of alsa-lib will be released,
> thus effectively making it the required minimum version for alsa-tools.
> 
> Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de>
> 
> diff --git a/hdsploader/hdsploader.c b/hdsploader/hdsploader.c
> index fa488a2..bfbe3bc 100644
> --- a/hdsploader/hdsploader.c
> +++ b/hdsploader/hdsploader.c
> @@ -27,6 +27,10 @@
>  
>  static u_int32_t code[24413];
>  
> +#ifndef RPM
> +# define RPM	5
> +#endif

Now (after committing it), I found that it should be 4 instead of 5...?


Takashi

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

* Re: [PATCH 3/3] hdsploader: Temporary define for RPM
  2011-07-29  5:50   ` Takashi Iwai
@ 2011-07-29  5:51     ` Takashi Iwai
  2011-07-29 15:50       ` Adrian Knoth
  2011-07-29 15:46     ` Adrian Knoth
  1 sibling, 1 reply; 10+ messages in thread
From: Takashi Iwai @ 2011-07-29  5:51 UTC (permalink / raw)
  To: Adrian Knoth; +Cc: alsa-devel

At Fri, 29 Jul 2011 07:50:32 +0200,
Takashi Iwai wrote:
> 
> At Thu, 28 Jul 2011 23:45:48 +0200,
> Adrian Knoth wrote:
> > 
> > Right now (1.0.24.1), alsa-lib's hdsp.h doesn't know about the RPM. To
> > avoid a strong dependency on unreleased code, temporary provide the
> > define here.
> > 
> > It can be dropped as soon as a new version of alsa-lib will be released,
> > thus effectively making it the required minimum version for alsa-tools.
> > 
> > Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de>
> > 
> > diff --git a/hdsploader/hdsploader.c b/hdsploader/hdsploader.c
> > index fa488a2..bfbe3bc 100644
> > --- a/hdsploader/hdsploader.c
> > +++ b/hdsploader/hdsploader.c
> > @@ -27,6 +27,10 @@
> >  
> >  static u_int32_t code[24413];
> >  
> > +#ifndef RPM
> > +# define RPM	5
> > +#endif
> 
> Now (after committing it), I found that it should be 4 instead of 5...?

Also, the corresponding firmware file isn't found in alsa-firmware tree.
Could you submit it, too?


thanks,

Takashi

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

* Re: [PATCH 3/3] hdsploader: Temporary define for RPM
  2011-07-29  5:50   ` Takashi Iwai
  2011-07-29  5:51     ` Takashi Iwai
@ 2011-07-29 15:46     ` Adrian Knoth
  1 sibling, 0 replies; 10+ messages in thread
From: Adrian Knoth @ 2011-07-29 15:46 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: alsa-devel

On Fri, Jul 29, 2011 at 07:50:32AM +0200, Takashi Iwai wrote:

> > Right now (1.0.24.1), alsa-lib's hdsp.h doesn't know about the RPM. To
> > avoid a strong dependency on unreleased code, temporary provide the
> > define here.
> > 
> > It can be dropped as soon as a new version of alsa-lib will be released,
> > thus effectively making it the required minimum version for alsa-tools.
> > 
> > Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de>
> > 
> > diff --git a/hdsploader/hdsploader.c b/hdsploader/hdsploader.c
> > index fa488a2..bfbe3bc 100644
> > --- a/hdsploader/hdsploader.c
> > +++ b/hdsploader/hdsploader.c
> > @@ -27,6 +27,10 @@
> >  
> >  static u_int32_t code[24413];
> >  
> > +#ifndef RPM
> > +# define RPM	5
> > +#endif
> 
> Now (after committing it), I found that it should be 4 instead of 5...?

Indeed. That's why repeated code is evil. ;) I'll come up with a fix.

Thanks for spotting.

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

* Re: [PATCH 3/3] hdsploader: Temporary define for RPM
  2011-07-29  5:51     ` Takashi Iwai
@ 2011-07-29 15:50       ` Adrian Knoth
  2011-07-29 15:53         ` Takashi Iwai
  0 siblings, 1 reply; 10+ messages in thread
From: Adrian Knoth @ 2011-07-29 15:50 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: alsa-devel

On Fri, Jul 29, 2011 at 07:51:31AM +0200, Takashi Iwai wrote:

Hi!

> > > +# define RPM	5
> > > +#endif
> > 
> > Now (after committing it), I found that it should be 4 instead of 5...?
> 
> Also, the corresponding firmware file isn't found in alsa-firmware tree.
> Could you submit it, too?

http://git.alsa-project.org/?p=alsa-firmware.git;a=tree;f=hdsploader;hb=HEAD

There is rpm_firmware.bin, exactly the one we need.


Or am I missing something?


Cheers

-- 
mail: adi@thur.de  	http://adi.thur.de	PGP/GPG: key via keyserver

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

* Re: [PATCH 3/3] hdsploader: Temporary define for RPM
  2011-07-29 15:50       ` Adrian Knoth
@ 2011-07-29 15:53         ` Takashi Iwai
  0 siblings, 0 replies; 10+ messages in thread
From: Takashi Iwai @ 2011-07-29 15:53 UTC (permalink / raw)
  To: Adrian Knoth; +Cc: alsa-devel

At Fri, 29 Jul 2011 17:50:17 +0200,
Adrian Knoth wrote:
> 
> On Fri, Jul 29, 2011 at 07:51:31AM +0200, Takashi Iwai wrote:
> 
> Hi!
> 
> > > > +# define RPM	5
> > > > +#endif
> > > 
> > > Now (after committing it), I found that it should be 4 instead of 5...?
> > 
> > Also, the corresponding firmware file isn't found in alsa-firmware tree.
> > Could you submit it, too?
> 
> http://git.alsa-project.org/?p=alsa-firmware.git;a=tree;f=hdsploader;hb=HEAD
> 
> There is rpm_firmware.bin, exactly the one we need.

Never mind, I just overlooked it.


Takashi

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

end of thread, other threads:[~2011-07-29 15:53 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-07-28 21:45 [PATCH 0/3] [RME - HDSP] Userlevel support for RPM Adrian Knoth
2011-07-28 21:45 ` [PATCH 1/3] hdspmixer: Add support for RME RPM Adrian Knoth
2011-07-28 21:45 ` [PATCH 2/3] hdsploader: " Adrian Knoth
2011-07-28 21:45 ` [PATCH 3/3] hdsploader: Temporary define for RPM Adrian Knoth
2011-07-29  5:50   ` Takashi Iwai
2011-07-29  5:51     ` Takashi Iwai
2011-07-29 15:50       ` Adrian Knoth
2011-07-29 15:53         ` Takashi Iwai
2011-07-29 15:46     ` Adrian Knoth
2011-07-29  5:49 ` [PATCH 0/3] [RME - HDSP] Userlevel support " Takashi Iwai

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.