Author: trasz
Date: Mon Apr 16 15:48:15 2018
New Revision: 332578
URL: https://svnweb.freebsd.org/changeset/base/332578

Log:
  MFC r328219:
  
  Add missing manufacturer/serial number string descriptors.

Modified:
  stable/11/sys/dev/usb/template/usb_template_audio.c
  stable/11/sys/dev/usb/template/usb_template_kbd.c
  stable/11/sys/dev/usb/template/usb_template_midi.c
  stable/11/sys/dev/usb/template/usb_template_modem.c
  stable/11/sys/dev/usb/template/usb_template_mouse.c
  stable/11/sys/dev/usb/template/usb_template_phone.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/dev/usb/template/usb_template_audio.c
==============================================================================
--- stable/11/sys/dev/usb/template/usb_template_audio.c Mon Apr 16 15:46:24 
2018        (r332577)
+++ stable/11/sys/dev/usb/template/usb_template_audio.c Mon Apr 16 15:48:15 
2018        (r332578)
@@ -70,19 +70,25 @@ enum {
        AUDIO_MIXER_INDEX,
        AUDIO_RECORD_INDEX,
        AUDIO_PLAYBACK_INDEX,
+       AUDIO_MANUFACTURER_INDEX,
        AUDIO_PRODUCT_INDEX,
+       AUDIO_SERIAL_NUMBER_INDEX,
        AUDIO_MAX_INDEX,
 };
 
-#define        AUDIO_DEFAULT_PRODUCT           "Audio Test Device"
 #define        AUDIO_DEFAULT_MIXER             "Mixer interface"
 #define        AUDIO_DEFAULT_RECORD            "Record interface"
 #define        AUDIO_DEFAULT_PLAYBACK          "Playback interface"
+#define        AUDIO_DEFAULT_MANUFACTURER      "FreeBSD foundation"
+#define        AUDIO_DEFAULT_PRODUCT           "Audio Test Device"
+#define        AUDIO_DEFAULT_SERIAL_NUMBER     "March 2008"
 
 static struct usb_string_descriptor    audio_mixer;
 static struct usb_string_descriptor    audio_record;
 static struct usb_string_descriptor    audio_playback;
+static struct usb_string_descriptor    audio_manufacturer;
 static struct usb_string_descriptor    audio_product;
+static struct usb_string_descriptor    audio_serial_number;
 
 static struct sysctl_ctx_list          audio_ctx_list;
 
@@ -362,7 +368,9 @@ struct usb_temp_device_desc usb_template_audio = {
        .bDeviceClass = UDCLASS_COMM,
        .bDeviceSubClass = 0,
        .bDeviceProtocol = 0,
+       .iManufacturer = AUDIO_MANUFACTURER_INDEX,
        .iProduct = AUDIO_PRODUCT_INDEX,
+       .iSerialNumber = AUDIO_SERIAL_NUMBER_INDEX,
 };
 
 /*------------------------------------------------------------------------*
@@ -380,7 +388,9 @@ audio_get_string_desc(uint16_t lang_id, uint8_t string
                [AUDIO_MIXER_INDEX] = &audio_mixer,
                [AUDIO_RECORD_INDEX] = &audio_record,
                [AUDIO_PLAYBACK_INDEX] = &audio_playback,
+               [AUDIO_MANUFACTURER_INDEX] = &audio_manufacturer,
                [AUDIO_PRODUCT_INDEX] = &audio_product,
+               [AUDIO_SERIAL_NUMBER_INDEX] = &audio_serial_number,
        };
 
        if (string_index == 0) {
@@ -407,8 +417,12 @@ audio_init(void *arg __unused)
            AUDIO_DEFAULT_RECORD);
        usb_make_str_desc(&audio_playback, sizeof(audio_playback),
            AUDIO_DEFAULT_PLAYBACK);
+       usb_make_str_desc(&audio_manufacturer, sizeof(audio_manufacturer),
+           AUDIO_DEFAULT_MANUFACTURER);
        usb_make_str_desc(&audio_product, sizeof(audio_product),
            AUDIO_DEFAULT_PRODUCT);
+       usb_make_str_desc(&audio_serial_number, sizeof(audio_serial_number),
+           AUDIO_DEFAULT_SERIAL_NUMBER);
 
        snprintf(parent_name, sizeof(parent_name), "%d", USB_TEMP_AUDIO);
        sysctl_ctx_init(&audio_ctx_list);
@@ -438,9 +452,17 @@ audio_init(void *arg __unused)
            "A", "Playback interface string");
 #endif
        SYSCTL_ADD_PROC(&audio_ctx_list, SYSCTL_CHILDREN(parent), OID_AUTO,
+           "manufacturer", CTLTYPE_STRING | CTLFLAG_RWTUN | CTLFLAG_MPSAFE,
+           &audio_manufacturer, sizeof(audio_manufacturer), usb_temp_sysctl,
+           "A", "Manufacturer string");
+       SYSCTL_ADD_PROC(&audio_ctx_list, SYSCTL_CHILDREN(parent), OID_AUTO,
            "product", CTLTYPE_STRING | CTLFLAG_RWTUN | CTLFLAG_MPSAFE,
            &audio_product, sizeof(audio_product), usb_temp_sysctl,
            "A", "Product string");
+       SYSCTL_ADD_PROC(&audio_ctx_list, SYSCTL_CHILDREN(parent), OID_AUTO,
+           "serial_number", CTLTYPE_STRING | CTLFLAG_RWTUN | CTLFLAG_MPSAFE,
+           &audio_serial_number, sizeof(audio_serial_number), usb_temp_sysctl,
+           "A", "Serial number string");
 }
 
 static void

Modified: stable/11/sys/dev/usb/template/usb_template_kbd.c
==============================================================================
--- stable/11/sys/dev/usb/template/usb_template_kbd.c   Mon Apr 16 15:46:24 
2018        (r332577)
+++ stable/11/sys/dev/usb/template/usb_template_kbd.c   Mon Apr 16 15:48:15 
2018        (r332578)
@@ -68,15 +68,21 @@
 enum {
        KBD_LANG_INDEX,
        KBD_INTERFACE_INDEX,
+       KBD_MANUFACTURER_INDEX,
        KBD_PRODUCT_INDEX,
+       KBD_SERIAL_NUMBER_INDEX,
        KBD_MAX_INDEX,
 };
 
 #define        KBD_DEFAULT_INTERFACE           "Keyboard Interface"
+#define        KBD_DEFAULT_MANUFACTURER        "FreeBSD foundation"
 #define        KBD_DEFAULT_PRODUCT             "Keyboard Test Device"
+#define        KBD_DEFAULT_SERIAL_NUMBER       "March 2008"
 
 static struct usb_string_descriptor    kbd_interface;
+static struct usb_string_descriptor    kbd_manufacturer;
 static struct usb_string_descriptor    kbd_product;
+static struct usb_string_descriptor    kbd_serial_number;
 
 static struct sysctl_ctx_list          kbd_ctx_list;
 
@@ -170,9 +176,9 @@ struct usb_temp_device_desc usb_template_kbd = {
        .bDeviceClass = UDCLASS_COMM,
        .bDeviceSubClass = 0,
        .bDeviceProtocol = 0,
-       .iManufacturer = 0,
+       .iManufacturer = KBD_MANUFACTURER_INDEX,
        .iProduct = KBD_PRODUCT_INDEX,
-       .iSerialNumber = 0,
+       .iSerialNumber = KBD_SERIAL_NUMBER_INDEX,
 };
 
 /*------------------------------------------------------------------------*
@@ -208,7 +214,9 @@ keyboard_get_string_desc(uint16_t lang_id, uint8_t str
        static const void *ptr[KBD_MAX_INDEX] = {
                [KBD_LANG_INDEX] = &usb_string_lang_en,
                [KBD_INTERFACE_INDEX] = &kbd_interface,
+               [KBD_MANUFACTURER_INDEX] = &kbd_manufacturer,
                [KBD_PRODUCT_INDEX] = &kbd_product,
+               [KBD_SERIAL_NUMBER_INDEX] = &kbd_serial_number,
        };
 
        if (string_index == 0) {
@@ -231,8 +239,12 @@ kbd_init(void *arg __unused)
 
        usb_make_str_desc(&kbd_interface, sizeof(kbd_interface),
            KBD_DEFAULT_INTERFACE);
+       usb_make_str_desc(&kbd_manufacturer, sizeof(kbd_manufacturer),
+           KBD_DEFAULT_MANUFACTURER);
        usb_make_str_desc(&kbd_product, sizeof(kbd_product),
            KBD_DEFAULT_PRODUCT);
+       usb_make_str_desc(&kbd_serial_number, sizeof(kbd_serial_number),
+           KBD_DEFAULT_SERIAL_NUMBER);
 
        snprintf(parent_name, sizeof(parent_name), "%d", USB_TEMP_KBD);
        sysctl_ctx_init(&kbd_ctx_list);
@@ -254,9 +266,17 @@ kbd_init(void *arg __unused)
            "A", "Interface string");
 #endif
        SYSCTL_ADD_PROC(&kbd_ctx_list, SYSCTL_CHILDREN(parent), OID_AUTO,
+           "manufacturer", CTLTYPE_STRING | CTLFLAG_RWTUN | CTLFLAG_MPSAFE,
+           &kbd_manufacturer, sizeof(kbd_manufacturer), usb_temp_sysctl,
+           "A", "Manufacturer string");
+       SYSCTL_ADD_PROC(&kbd_ctx_list, SYSCTL_CHILDREN(parent), OID_AUTO,
            "product", CTLTYPE_STRING | CTLFLAG_RWTUN | CTLFLAG_MPSAFE,
            &kbd_product, sizeof(kbd_product), usb_temp_sysctl,
            "A", "Product string");
+       SYSCTL_ADD_PROC(&kbd_ctx_list, SYSCTL_CHILDREN(parent), OID_AUTO,
+           "serial_number", CTLTYPE_STRING | CTLFLAG_RWTUN | CTLFLAG_MPSAFE,
+           &kbd_serial_number, sizeof(kbd_serial_number), usb_temp_sysctl,
+           "A", "Serial number string");
 }
 
 static void

Modified: stable/11/sys/dev/usb/template/usb_template_midi.c
==============================================================================
--- stable/11/sys/dev/usb/template/usb_template_midi.c  Mon Apr 16 15:46:24 
2018        (r332577)
+++ stable/11/sys/dev/usb/template/usb_template_midi.c  Mon Apr 16 15:48:15 
2018        (r332578)
@@ -69,15 +69,21 @@
 enum {
        MIDI_LANG_INDEX,
        MIDI_INTERFACE_INDEX,
+       MIDI_MANUFACTURER_INDEX,
        MIDI_PRODUCT_INDEX,
+       MIDI_SERIAL_NUMBER_INDEX,
        MIDI_MAX_INDEX,
 };
 
 #define        MIDI_DEFAULT_INTERFACE          "MIDI interface"
+#define        MIDI_DEFAULT_MANUFACTURER       "FreeBSD foundation"
 #define        MIDI_DEFAULT_PRODUCT            "MIDI Test Device"
+#define        MIDI_DEFAULT_SERIAL_NUMBER      "March 2008"
 
 static struct usb_string_descriptor    midi_interface;
+static struct usb_string_descriptor    midi_manufacturer;
 static struct usb_string_descriptor    midi_product;
+static struct usb_string_descriptor    midi_serial_number;
 
 static struct sysctl_ctx_list          midi_ctx_list;
 
@@ -212,9 +218,9 @@ struct usb_temp_device_desc usb_template_midi = {
        .bDeviceClass = 0,
        .bDeviceSubClass = 0,
        .bDeviceProtocol = 0,
-       .iManufacturer = 0,
+       .iManufacturer = MIDI_MANUFACTURER_INDEX,
        .iProduct = MIDI_PRODUCT_INDEX,
-       .iSerialNumber = 0,
+       .iSerialNumber = MIDI_SERIAL_NUMBER_INDEX,
 };
 
 /*------------------------------------------------------------------------*
@@ -230,7 +236,9 @@ midi_get_string_desc(uint16_t lang_id, uint8_t string_
        static const void *ptr[MIDI_MAX_INDEX] = {
                [MIDI_LANG_INDEX] = &usb_string_lang_en,
                [MIDI_INTERFACE_INDEX] = &midi_interface,
+               [MIDI_MANUFACTURER_INDEX] = &midi_manufacturer,
                [MIDI_PRODUCT_INDEX] = &midi_product,
+               [MIDI_SERIAL_NUMBER_INDEX] = &midi_serial_number,
        };
 
        if (string_index == 0) {
@@ -253,8 +261,12 @@ midi_init(void *arg __unused)
 
        usb_make_str_desc(&midi_interface, sizeof(midi_interface),
            MIDI_DEFAULT_INTERFACE);
+       usb_make_str_desc(&midi_manufacturer, sizeof(midi_manufacturer),
+           MIDI_DEFAULT_MANUFACTURER);
        usb_make_str_desc(&midi_product, sizeof(midi_product),
            MIDI_DEFAULT_PRODUCT);
+       usb_make_str_desc(&midi_serial_number, sizeof(midi_serial_number),
+           MIDI_DEFAULT_SERIAL_NUMBER);
 
        snprintf(parent_name, sizeof(parent_name), "%d", USB_TEMP_MIDI);
        sysctl_ctx_init(&midi_ctx_list);
@@ -276,9 +288,17 @@ midi_init(void *arg __unused)
            "A", "Interface string");
 #endif
        SYSCTL_ADD_PROC(&midi_ctx_list, SYSCTL_CHILDREN(parent), OID_AUTO,
+           "manufacturer", CTLTYPE_STRING | CTLFLAG_RWTUN | CTLFLAG_MPSAFE,
+           &midi_manufacturer, sizeof(midi_manufacturer), usb_temp_sysctl,
+           "A", "Manufacturer string");
+       SYSCTL_ADD_PROC(&midi_ctx_list, SYSCTL_CHILDREN(parent), OID_AUTO,
            "product", CTLTYPE_STRING | CTLFLAG_RWTUN | CTLFLAG_MPSAFE,
            &midi_product, sizeof(midi_product), usb_temp_sysctl,
            "A", "Product string");
+       SYSCTL_ADD_PROC(&midi_ctx_list, SYSCTL_CHILDREN(parent), OID_AUTO,
+           "serial_number", CTLTYPE_STRING | CTLFLAG_RWTUN | CTLFLAG_MPSAFE,
+           &midi_serial_number, sizeof(midi_serial_number), usb_temp_sysctl,
+           "A", "Serial number string");
 }
 
 static void

Modified: stable/11/sys/dev/usb/template/usb_template_modem.c
==============================================================================
--- stable/11/sys/dev/usb/template/usb_template_modem.c Mon Apr 16 15:46:24 
2018        (r332577)
+++ stable/11/sys/dev/usb/template/usb_template_modem.c Mon Apr 16 15:48:15 
2018        (r332578)
@@ -68,15 +68,21 @@
 enum {
        MODEM_LANG_INDEX,
        MODEM_INTERFACE_INDEX,
+       MODEM_MANUFACTURER_INDEX,
        MODEM_PRODUCT_INDEX,
+       MODEM_SERIAL_NUMBER_INDEX,
        MODEM_MAX_INDEX,
 };
 
 #define        MODEM_DEFAULT_INTERFACE         "Modem interface"
+#define        MODEM_DEFAULT_MANUFACTURER      "FreeBSD foundation"
 #define MODEM_DEFAULT_PRODUCT          "Modem Test Device"
+#define        MODEM_DEFAULT_SERIAL_NUMBER     "March 2008"
 
 static struct usb_string_descriptor    modem_interface;
+static struct usb_string_descriptor    modem_manufacturer;
 static struct usb_string_descriptor    modem_product;
+static struct usb_string_descriptor    modem_serial_number;
 
 static struct sysctl_ctx_list          modem_ctx_list;
 
@@ -205,9 +211,9 @@ struct usb_temp_device_desc usb_template_modem = {
        .bDeviceClass = UDCLASS_COMM,
        .bDeviceSubClass = 0,
        .bDeviceProtocol = 0,
-       .iManufacturer = 0,
+       .iManufacturer = MODEM_MANUFACTURER_INDEX,
        .iProduct = MODEM_PRODUCT_INDEX,
-       .iSerialNumber = 0,
+       .iSerialNumber = MODEM_SERIAL_NUMBER_INDEX,
 };
 
 /*------------------------------------------------------------------------*
@@ -236,7 +242,9 @@ modem_get_string_desc(uint16_t lang_id, uint8_t string
        static const void *ptr[MODEM_MAX_INDEX] = {
                [MODEM_LANG_INDEX] = &usb_string_lang_en,
                [MODEM_INTERFACE_INDEX] = &modem_interface,
+               [MODEM_MANUFACTURER_INDEX] = &modem_manufacturer,
                [MODEM_PRODUCT_INDEX] = &modem_product,
+               [MODEM_SERIAL_NUMBER_INDEX] = &modem_serial_number,
        };
 
        if (string_index == 0) {
@@ -259,8 +267,12 @@ modem_init(void *arg __unused)
 
        usb_make_str_desc(&modem_interface, sizeof(modem_interface),
            MODEM_DEFAULT_INTERFACE);
+       usb_make_str_desc(&modem_manufacturer, sizeof(modem_manufacturer),
+           MODEM_DEFAULT_MANUFACTURER);
        usb_make_str_desc(&modem_product, sizeof(modem_product),
            MODEM_DEFAULT_PRODUCT);
+       usb_make_str_desc(&modem_serial_number, sizeof(modem_serial_number),
+           MODEM_DEFAULT_SERIAL_NUMBER);
 
        snprintf(parent_name, sizeof(parent_name), "%d", USB_TEMP_MODEM);
        sysctl_ctx_init(&modem_ctx_list);
@@ -282,9 +294,17 @@ modem_init(void *arg __unused)
            "A", "Interface string");
 #endif
        SYSCTL_ADD_PROC(&modem_ctx_list, SYSCTL_CHILDREN(parent), OID_AUTO,
+           "manufacturer", CTLTYPE_STRING | CTLFLAG_RWTUN | CTLFLAG_MPSAFE,
+           &modem_manufacturer, sizeof(modem_manufacturer), usb_temp_sysctl,
+           "A", "Manufacturer string");
+       SYSCTL_ADD_PROC(&modem_ctx_list, SYSCTL_CHILDREN(parent), OID_AUTO,
            "product", CTLTYPE_STRING | CTLFLAG_RWTUN | CTLFLAG_MPSAFE,
            &modem_product, sizeof(modem_product), usb_temp_sysctl,
            "A", "Product string");
+       SYSCTL_ADD_PROC(&modem_ctx_list, SYSCTL_CHILDREN(parent), OID_AUTO,
+           "serial_number", CTLTYPE_STRING | CTLFLAG_RWTUN | CTLFLAG_MPSAFE,
+           &modem_serial_number, sizeof(modem_serial_number), usb_temp_sysctl,
+           "A", "Serial number string");
 }
 
 static void

Modified: stable/11/sys/dev/usb/template/usb_template_mouse.c
==============================================================================
--- stable/11/sys/dev/usb/template/usb_template_mouse.c Mon Apr 16 15:46:24 
2018        (r332577)
+++ stable/11/sys/dev/usb/template/usb_template_mouse.c Mon Apr 16 15:48:15 
2018        (r332578)
@@ -68,15 +68,21 @@
 enum {
        MOUSE_LANG_INDEX,
        MOUSE_INTERFACE_INDEX,
+       MOUSE_MANUFACTURER_INDEX,
        MOUSE_PRODUCT_INDEX,
+       MOUSE_SERIAL_NUMBER_INDEX,
        MOUSE_MAX_INDEX,
 };
 
 #define        MOUSE_DEFAULT_INTERFACE         "Mouse interface"
+#define        MOUSE_DEFAULT_MANUFACTURER      "FreeBSD foundation"
 #define        MOUSE_DEFAULT_PRODUCT           "Mouse Test Interface"
+#define        MOUSE_DEFAULT_SERIAL_NUMBER     "March 2008"
 
 static struct usb_string_descriptor    mouse_interface;
+static struct usb_string_descriptor    mouse_manufacturer;
 static struct usb_string_descriptor    mouse_product;
+static struct usb_string_descriptor    mouse_serial_number;
 
 static struct sysctl_ctx_list          mouse_ctx_list;
 
@@ -168,9 +174,9 @@ struct usb_temp_device_desc usb_template_mouse = {
        .bDeviceClass = UDCLASS_COMM,
        .bDeviceSubClass = 0,
        .bDeviceProtocol = 0,
-       .iManufacturer = 0,
+       .iManufacturer = MOUSE_MANUFACTURER_INDEX,
        .iProduct = MOUSE_PRODUCT_INDEX,
-       .iSerialNumber = 0,
+       .iSerialNumber = MOUSE_SERIAL_NUMBER_INDEX,
 };
 
 /*------------------------------------------------------------------------*
@@ -206,7 +212,9 @@ mouse_get_string_desc(uint16_t lang_id, uint8_t string
        static const void *ptr[MOUSE_MAX_INDEX] = {
                [MOUSE_LANG_INDEX] = &usb_string_lang_en,
                [MOUSE_INTERFACE_INDEX] = &mouse_interface,
+               [MOUSE_MANUFACTURER_INDEX] = &mouse_manufacturer,
                [MOUSE_PRODUCT_INDEX] = &mouse_product,
+               [MOUSE_SERIAL_NUMBER_INDEX] = &mouse_serial_number,
        };
 
        if (string_index == 0) {
@@ -229,8 +237,12 @@ mouse_init(void *arg __unused)
 
        usb_make_str_desc(&mouse_interface, sizeof(mouse_interface),
            MOUSE_DEFAULT_INTERFACE);
+       usb_make_str_desc(&mouse_manufacturer, sizeof(mouse_manufacturer),
+           MOUSE_DEFAULT_MANUFACTURER);
        usb_make_str_desc(&mouse_product, sizeof(mouse_product),
            MOUSE_DEFAULT_PRODUCT);
+       usb_make_str_desc(&mouse_serial_number, sizeof(mouse_serial_number),
+           MOUSE_DEFAULT_SERIAL_NUMBER);
 
        snprintf(parent_name, sizeof(parent_name), "%d", USB_TEMP_MOUSE);
        sysctl_ctx_init(&mouse_ctx_list);
@@ -252,9 +264,17 @@ mouse_init(void *arg __unused)
            "A", "Interface string");
 #endif
        SYSCTL_ADD_PROC(&mouse_ctx_list, SYSCTL_CHILDREN(parent), OID_AUTO,
+           "manufacturer", CTLTYPE_STRING | CTLFLAG_RWTUN | CTLFLAG_MPSAFE,
+           &mouse_manufacturer, sizeof(mouse_manufacturer), usb_temp_sysctl,
+           "A", "Manufacturer string");
+       SYSCTL_ADD_PROC(&mouse_ctx_list, SYSCTL_CHILDREN(parent), OID_AUTO,
            "product", CTLTYPE_STRING | CTLFLAG_RWTUN | CTLFLAG_MPSAFE,
            &mouse_product, sizeof(mouse_product), usb_temp_sysctl,
            "A", "Product string");
+       SYSCTL_ADD_PROC(&mouse_ctx_list, SYSCTL_CHILDREN(parent), OID_AUTO,
+           "serial_number", CTLTYPE_STRING | CTLFLAG_RWTUN | CTLFLAG_MPSAFE,
+           &mouse_serial_number, sizeof(mouse_serial_number), usb_temp_sysctl,
+           "A", "Serial number string");
 }
 
 static void

Modified: stable/11/sys/dev/usb/template/usb_template_phone.c
==============================================================================
--- stable/11/sys/dev/usb/template/usb_template_phone.c Mon Apr 16 15:46:24 
2018        (r332577)
+++ stable/11/sys/dev/usb/template/usb_template_phone.c Mon Apr 16 15:48:15 
2018        (r332578)
@@ -72,22 +72,28 @@ enum {
        PHONE_MIXER_INDEX,
        PHONE_RECORD_INDEX,
        PHONE_PLAYBACK_INDEX,
-       PHONE_PRODUCT_INDEX,
        PHONE_HID_INDEX,
+       PHONE_MANUFACTURER_INDEX,
+       PHONE_PRODUCT_INDEX,
+       PHONE_SERIAL_NUMBER_INDEX,
        PHONE_MAX_INDEX,
 };
 
 #define        PHONE_DEFAULT_MIXER             "Mixer interface"
 #define        PHONE_DEFAULT_RECORD            "Record interface"
 #define        PHONE_DEFAULT_PLAYBACK          "Playback interface"
-#define        PHONE_DEFAULT_PRODUCT           "USB Phone Device"
 #define        PHONE_DEFAULT_HID               "HID interface"
+#define        PHONE_DEFAULT_MANUFACTURER      "FreeBSD foundation"
+#define        PHONE_DEFAULT_PRODUCT           "USB Phone Device"
+#define        PHONE_DEFAULT_SERIAL_NUMBER     "March 2008"
 
 static struct usb_string_descriptor    phone_mixer;
 static struct usb_string_descriptor    phone_record;
 static struct usb_string_descriptor    phone_playback;
-static struct usb_string_descriptor    phone_product;
 static struct usb_string_descriptor    phone_hid;
+static struct usb_string_descriptor    phone_manufacturer;
+static struct usb_string_descriptor    phone_product;
+static struct usb_string_descriptor    phone_serial_number;
 
 static struct sysctl_ctx_list          phone_ctx_list;
 
@@ -362,9 +368,9 @@ struct usb_temp_device_desc usb_template_phone = {
        .bDeviceClass = UDCLASS_IN_INTERFACE,
        .bDeviceSubClass = 0,
        .bDeviceProtocol = 0,
-       .iManufacturer = 0,
+       .iManufacturer = PHONE_MANUFACTURER_INDEX,
        .iProduct = PHONE_PRODUCT_INDEX,
-       .iSerialNumber = 0,
+       .iSerialNumber = PHONE_SERIAL_NUMBER_INDEX,
 };
 
 /*------------------------------------------------------------------------*
@@ -402,8 +408,10 @@ phone_get_string_desc(uint16_t lang_id, uint8_t string
                [PHONE_MIXER_INDEX] = &phone_mixer,
                [PHONE_RECORD_INDEX] = &phone_record,
                [PHONE_PLAYBACK_INDEX] = &phone_playback,
-               [PHONE_PRODUCT_INDEX] = &phone_product,
                [PHONE_HID_INDEX] = &phone_hid,
+               [PHONE_MANUFACTURER_INDEX] = &phone_manufacturer,
+               [PHONE_PRODUCT_INDEX] = &phone_product,
+               [PHONE_SERIAL_NUMBER_INDEX] = &phone_serial_number,
        };
 
        if (string_index == 0) {
@@ -430,10 +438,14 @@ phone_init(void *arg __unused)
            PHONE_DEFAULT_RECORD);
        usb_make_str_desc(&phone_playback, sizeof(phone_playback),
            PHONE_DEFAULT_PLAYBACK);
-       usb_make_str_desc(&phone_product, sizeof(phone_product),
-           PHONE_DEFAULT_PRODUCT);
        usb_make_str_desc(&phone_hid, sizeof(phone_hid),
            PHONE_DEFAULT_HID);
+       usb_make_str_desc(&phone_manufacturer, sizeof(phone_manufacturer),
+           PHONE_DEFAULT_MANUFACTURER);
+       usb_make_str_desc(&phone_product, sizeof(phone_product),
+           PHONE_DEFAULT_PRODUCT);
+       usb_make_str_desc(&phone_serial_number, sizeof(phone_serial_number),
+           PHONE_DEFAULT_SERIAL_NUMBER);
 
        snprintf(parent_name, sizeof(parent_name), "%d", USB_TEMP_PHONE);
        sysctl_ctx_init(&phone_ctx_list);
@@ -461,15 +473,23 @@ phone_init(void *arg __unused)
            "playback", CTLTYPE_STRING | CTLFLAG_RWTUN | CTLFLAG_MPSAFE,
            &phone_playback, sizeof(phone_playback), usb_temp_sysctl,
            "A", "Playback interface string");
+       SYSCTL_ADD_PROC(&phone_ctx_list, SYSCTL_CHILDREN(parent), OID_AUTO,
+           "hid", CTLTYPE_STRING | CTLFLAG_RWTUN | CTLFLAG_MPSAFE,
+           &phone_hid, sizeof(phone_hid), usb_temp_sysctl,
+           "A", "HID interface string");
 #endif
        SYSCTL_ADD_PROC(&phone_ctx_list, SYSCTL_CHILDREN(parent), OID_AUTO,
+           "manufacturer", CTLTYPE_STRING | CTLFLAG_RWTUN | CTLFLAG_MPSAFE,
+           &phone_manufacturer, sizeof(phone_manufacturer), usb_temp_sysctl,
+           "A", "Manufacturer string");
+       SYSCTL_ADD_PROC(&phone_ctx_list, SYSCTL_CHILDREN(parent), OID_AUTO,
            "product", CTLTYPE_STRING | CTLFLAG_RWTUN | CTLFLAG_MPSAFE,
            &phone_product, sizeof(phone_product), usb_temp_sysctl,
            "A", "Product string");
        SYSCTL_ADD_PROC(&phone_ctx_list, SYSCTL_CHILDREN(parent), OID_AUTO,
-           "hid", CTLTYPE_STRING | CTLFLAG_RWTUN | CTLFLAG_MPSAFE,
-           &phone_hid, sizeof(phone_hid), usb_temp_sysctl,
-           "A", "HID interface string");
+           "serial_number", CTLTYPE_STRING | CTLFLAG_RWTUN | CTLFLAG_MPSAFE,
+           &phone_serial_number, sizeof(phone_serial_number), usb_temp_sysctl,
+           "A", "Serial number string");
 }
 
 static void
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to