All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/2] ALSA: usb-audio: Add Pioneer DJM-450 support
@ 2021-02-02 13:42 Olivia Mackintosh
  2021-02-02 13:42 ` [PATCH v2 1/2] ALSA: usb-audio: Add DJM450 to Pioneer format quirk Olivia Mackintosh
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Olivia Mackintosh @ 2021-02-02 13:42 UTC (permalink / raw)
  To: alsa-devel; +Cc: tiwai, Olivia Mackintosh

Re-roll of this patchset to fix the following:
	1. Missing 'Signed-of-by:' line
	2. Spaces around operators
	3. Test that I'm threading submissions correctly

Apologies for the clumsiness on my part.

Olivia

Olivia Mackintosh (2):
  ALSA: usb-audio: Add DJM450 to Pioneer format quirk
  ALSA: usb-audio: Add DJM-450 to the quirks table

 sound/usb/quirks-table.h | 57 ++++++++++++++++++++++++++++++++++++++++
 sound/usb/quirks.c       | 20 ++++++++++++++
 2 files changed, 77 insertions(+)

-- 
2.30.0


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

* [PATCH v2 1/2] ALSA: usb-audio: Add DJM450 to Pioneer format quirk
  2021-02-02 13:42 [PATCH v2 0/2] ALSA: usb-audio: Add Pioneer DJM-450 support Olivia Mackintosh
@ 2021-02-02 13:42 ` Olivia Mackintosh
  2021-02-02 13:42 ` [PATCH v2 2/2] ALSA: usb-audio: Add DJM-450 to the quirks table Olivia Mackintosh
  2021-02-02 17:47 ` [PATCH v2 0/2] ALSA: usb-audio: Add Pioneer DJM-450 support Takashi Iwai
  2 siblings, 0 replies; 4+ messages in thread
From: Olivia Mackintosh @ 2021-02-02 13:42 UTC (permalink / raw)
  To: alsa-devel; +Cc: tiwai, Olivia Mackintosh

Like the DJM-750, ensure that the format control message is passed to
the device when opening a stream. It seems as though fmt->sync_ep is not
always set when this function is called hence the passing of the value
at the call site. If this can be fixed, fmt->sync_up should be used as
the wvalue.

There doesn't seem to be a "cpu_to_le24" type function defined hence for
the open code but I did see a similar thing done in Bluez lib. Perhaps
we can get these definitions defined in byteorder.h. See hci_cpu_to_le24
in include/net/bluetooth/hci.h:2543 for similar usage.

Signed-off-by: Olivia Mackintosh <livvy@base.nu>
---
 sound/usb/quirks.c | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c
index e196e364cef1..9ba4682ebc48 100644
--- a/sound/usb/quirks.c
+++ b/sound/usb/quirks.c
@@ -1470,6 +1470,23 @@ static void set_format_emu_quirk(struct snd_usb_substream *subs,
 	subs->pkt_offset_adj = (emu_samplerate_id >= EMU_QUIRK_SR_176400HZ) ? 4 : 0;
 }
 
+static int pioneer_djm_set_format_quirk(struct snd_usb_substream *subs,
+					u16 windex)
+{
+	unsigned int cur_rate = subs->data_endpoint->cur_rate;
+	u8 sr[3];
+	// Convert to little endian
+	sr[0] = cur_rate & 0xff;
+	sr[1] = (cur_rate >> 8) & 0xff;
+	sr[2] = (cur_rate >> 16) & 0xff;
+	usb_set_interface(subs->dev, 0, 1);
+	// we should derive windex from fmt-sync_ep but it's not set
+	snd_usb_ctl_msg(subs->stream->chip->dev,
+		usb_rcvctrlpipe(subs->stream->chip->dev, 0),
+		0x01, 0x22, 0x0100, windex, &sr, 0x0003);
+	return 0;
+}
+
 void snd_usb_set_format_quirk(struct snd_usb_substream *subs,
 			      const struct audioformat *fmt)
 {
@@ -1483,6 +1500,9 @@ void snd_usb_set_format_quirk(struct snd_usb_substream *subs,
 	case USB_ID(0x534d, 0x2109): /* MacroSilicon MS2109 */
 		subs->stream_offset_adj = 2;
 		break;
+	case USB_ID(0x2b73, 0x0013): /* Pioneer DJM-450 */
+		pioneer_djm_set_format_quirk(subs, 0x0082);
+		break;
 	}
 }
 
-- 
2.30.0


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

* [PATCH v2 2/2] ALSA: usb-audio: Add DJM-450 to the quirks table
  2021-02-02 13:42 [PATCH v2 0/2] ALSA: usb-audio: Add Pioneer DJM-450 support Olivia Mackintosh
  2021-02-02 13:42 ` [PATCH v2 1/2] ALSA: usb-audio: Add DJM450 to Pioneer format quirk Olivia Mackintosh
@ 2021-02-02 13:42 ` Olivia Mackintosh
  2021-02-02 17:47 ` [PATCH v2 0/2] ALSA: usb-audio: Add Pioneer DJM-450 support Takashi Iwai
  2 siblings, 0 replies; 4+ messages in thread
From: Olivia Mackintosh @ 2021-02-02 13:42 UTC (permalink / raw)
  To: alsa-devel; +Cc: tiwai, Olivia Mackintosh

As with most Pioneer devices, the device descriptor is vendor specific
and as such, the number of channels, the PCM format, endpoints and
sample rate need to be specified. This device has 8 inputs and 8 outputs
and a sample rate of 48000 only. The PCM format is S24_3LE like other
devices.

There seems to be an appetite for reducing duplication amongs these
Pioneer patches but again, I feel this is a step to be taken after
support has been added as it's not completely clear where the
commonalities are.

Signed-off-by: Olivia Mackintosh <livvy@base.nu>
---
 sound/usb/quirks-table.h | 57 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 57 insertions(+)

diff --git a/sound/usb/quirks-table.h b/sound/usb/quirks-table.h
index 93d55cd1a5a4..1165a5ac60f2 100644
--- a/sound/usb/quirks-table.h
+++ b/sound/usb/quirks-table.h
@@ -3817,6 +3817,63 @@ AU0828_DEVICE(0x2040, 0x7270, "Hauppauge", "HVR-950Q"),
 		}
 	}
 },
+{
+	/*
+	 * Pioneer DJ DJM-450
+	 * PCM is 8 channels out @ 48 fixed (endpoint 0x01)
+	 * and 8 channels in @ 48 fixed (endpoint 0x82).
+	 */
+	USB_DEVICE_VENDOR_SPEC(0x2b73, 0x0013),
+	.driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
+		.ifnum = QUIRK_ANY_INTERFACE,
+		.type = QUIRK_COMPOSITE,
+		.data = (const struct snd_usb_audio_quirk[]) {
+			{
+				.ifnum = 0,
+				.type = QUIRK_AUDIO_FIXED_ENDPOINT,
+				.data = &(const struct audioformat) {
+					.formats = SNDRV_PCM_FMTBIT_S24_3LE,
+					.channels = 8, // outputs
+					.iface = 0,
+					.altsetting = 1,
+					.altset_idx = 1,
+					.endpoint = 0x01,
+					.ep_attr = USB_ENDPOINT_XFER_ISOC|
+						USB_ENDPOINT_SYNC_ASYNC,
+					.rates = SNDRV_PCM_RATE_48000,
+					.rate_min = 48000,
+					.rate_max = 48000,
+					.nr_rates = 1,
+					.rate_table = (unsigned int[]) { 48000 }
+					}
+			},
+			{
+				.ifnum = 0,
+				.type = QUIRK_AUDIO_FIXED_ENDPOINT,
+				.data = &(const struct audioformat) {
+					.formats = SNDRV_PCM_FMTBIT_S24_3LE,
+					.channels = 8, // inputs
+					.iface = 0,
+					.altsetting = 1,
+					.altset_idx = 1,
+					.endpoint = 0x82,
+					.ep_idx = 1,
+					.ep_attr = USB_ENDPOINT_XFER_ISOC|
+						USB_ENDPOINT_SYNC_ASYNC|
+						USB_ENDPOINT_USAGE_IMPLICIT_FB,
+					.rates = SNDRV_PCM_RATE_48000,
+					.rate_min = 48000,
+					.rate_max = 48000,
+					.nr_rates = 1,
+					.rate_table = (unsigned int[]) { 48000 }
+				}
+			},
+			{
+				.ifnum = -1
+			}
+		}
+	}
+},
 
 #undef USB_DEVICE_VENDOR_SPEC
 #undef USB_AUDIO_DEVICE
-- 
2.30.0


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

* Re: [PATCH v2 0/2] ALSA: usb-audio: Add Pioneer DJM-450 support
  2021-02-02 13:42 [PATCH v2 0/2] ALSA: usb-audio: Add Pioneer DJM-450 support Olivia Mackintosh
  2021-02-02 13:42 ` [PATCH v2 1/2] ALSA: usb-audio: Add DJM450 to Pioneer format quirk Olivia Mackintosh
  2021-02-02 13:42 ` [PATCH v2 2/2] ALSA: usb-audio: Add DJM-450 to the quirks table Olivia Mackintosh
@ 2021-02-02 17:47 ` Takashi Iwai
  2 siblings, 0 replies; 4+ messages in thread
From: Takashi Iwai @ 2021-02-02 17:47 UTC (permalink / raw)
  To: Olivia Mackintosh; +Cc: alsa-devel

On Tue, 02 Feb 2021 14:42:24 +0100,
Olivia Mackintosh wrote:
> 
> Re-roll of this patchset to fix the following:
> 	1. Missing 'Signed-of-by:' line
> 	2. Spaces around operators
> 	3. Test that I'm threading submissions correctly
> 
> Apologies for the clumsiness on my part.
> 
> Olivia
> 
> Olivia Mackintosh (2):
>   ALSA: usb-audio: Add DJM450 to Pioneer format quirk
>   ALSA: usb-audio: Add DJM-450 to the quirks table

Applied both patches now.  Thanks.


Takashi

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

end of thread, other threads:[~2021-02-02 17:48 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-02-02 13:42 [PATCH v2 0/2] ALSA: usb-audio: Add Pioneer DJM-450 support Olivia Mackintosh
2021-02-02 13:42 ` [PATCH v2 1/2] ALSA: usb-audio: Add DJM450 to Pioneer format quirk Olivia Mackintosh
2021-02-02 13:42 ` [PATCH v2 2/2] ALSA: usb-audio: Add DJM-450 to the quirks table Olivia Mackintosh
2021-02-02 17:47 ` [PATCH v2 0/2] ALSA: usb-audio: Add Pioneer DJM-450 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.