[PATCH] usb: gadget: f_midi: Add configfs attrs for card and device

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



An f_midi instance will have a corresponding native
device in /dev/snd/midiC%dD%d where the first number
is the number of the sound card and the second is the
number of the device. Expose both of these through
configfs so the user can find the correct sound device.

The configfs attrs are read only and will return the
appropriate value, or -1 if it is not available.

Signed-off-by: Jerry Zhang <zhangjerry@xxxxxxxxxx>
---
 drivers/usb/gadget/function/f_midi.c | 38 ++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

diff --git a/drivers/usb/gadget/function/f_midi.c b/drivers/usb/gadget/function/f_midi.c
index a89908eb035f..5d4a444ff073 100644
--- a/drivers/usb/gadget/function/f_midi.c
+++ b/drivers/usb/gadget/function/f_midi.c
@@ -1179,6 +1179,42 @@ static ssize_t f_midi_opts_id_store(struct config_item *item,
 
 CONFIGFS_ATTR(f_midi_opts_, id);
 
+static ssize_t f_midi_opts_card_show(struct config_item *item, char *page)
+{
+	struct f_midi_opts *opts = to_f_midi_opts(item);
+	int card = -1;
+	struct f_midi *midi;
+
+	if (opts->func_inst.f) {
+		midi = func_to_midi(opts->func_inst.f);
+		if (midi->rmidi && midi->rmidi->card) {
+			card = midi->rmidi->card->number;
+		}
+	}
+
+	return sprintf(page, "%d\n", card);
+}
+
+CONFIGFS_ATTR_RO(f_midi_opts_, card);
+
+static ssize_t f_midi_opts_device_show(struct config_item *item, char *page)
+{
+	struct f_midi_opts *opts = to_f_midi_opts(item);
+	int device = -1;
+	struct f_midi *midi;
+
+	if (opts->func_inst.f) {
+		midi = func_to_midi(opts->func_inst.f);
+		if (midi->rmidi) {
+			device = midi->rmidi->device;
+		}
+	}
+
+	return sprintf(page, "%d\n", device);
+}
+
+CONFIGFS_ATTR_RO(f_midi_opts_, device);
+
 static struct configfs_attribute *midi_attrs[] = {
 	&f_midi_opts_attr_index,
 	&f_midi_opts_attr_buflen,
@@ -1186,6 +1222,8 @@ static struct configfs_attribute *midi_attrs[] = {
 	&f_midi_opts_attr_in_ports,
 	&f_midi_opts_attr_out_ports,
 	&f_midi_opts_attr_id,
+	&f_midi_opts_attr_card,
+	&f_midi_opts_attr_device,
 	NULL,
 };
 
-- 
2.17.0.484.g0c8726318c-goog

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux