Lines Matching defs:device

58 #define PA_UCM_PLAYBACK_PRIORITY_UNSET(device)      ((device)->playback_channels && !(device)->playback_priority)
59 #define PA_UCM_CAPTURE_PRIORITY_UNSET(device) ((device)->capture_channels && !(device)->capture_priority)
60 #define PA_UCM_DEVICE_PRIORITY_SET(device, priority) \
62 if (PA_UCM_PLAYBACK_PRIORITY_UNSET(device)) (device)->playback_priority = (priority); \
63 if (PA_UCM_CAPTURE_PRIORITY_UNSET(device)) (device)->capture_priority = (priority); \
84 static pa_alsa_jack* ucm_get_jack(pa_alsa_ucm_config *ucm, pa_alsa_ucm_device *device);
85 static void device_set_jack(pa_alsa_ucm_device *device, pa_alsa_jack *jack);
86 static void device_add_hw_mute_jack(pa_alsa_ucm_device *device, pa_alsa_jack *jack);
155 /* UCM device info - should be overwritten by ucm property */
261 pa_alsa_ucm_device *device,
275 value = pa_proplist_gets(device->proplist, mprop);
280 value = pa_proplist_gets(device->proplist, cprop);
309 pa_alsa_ucm_device *device,
319 mixer_elem = ucm_get_mixer_id(device, mprop, cprop, cid);
328 vol->master_elem = pa_xstrdup(pa_proplist_gets(device->proplist, masterid));
329 vol->master_type = pa_xstrdup(pa_proplist_gets(device->proplist, mastertype));
333 /* Get the ALSA mixer device for the UCM device */
350 /* Get the ALSA mixer device for the UCM jack */
358 /* Create a property list for this ucm device */
360 pa_alsa_ucm_device *device,
374 /* determine the device type */
375 device->type = PA_DEVICE_PORT_TYPE_UNKNOWN;
382 device->type = types[i].type;
395 pa_log_debug("Got %s for device %s: %s", item[i].id, device_name, value);
396 pa_proplist_sets(device->proplist, item[i].property, value);
401 value = pa_proplist_gets(device->proplist, PA_ALSA_PROP_UCM_PLAYBACK_CHANNELS);
405 device->playback_channels = ui;
407 pa_log("UCM playback channels %s for device %s out of range", value, device_name);
410 value = pa_proplist_gets(device->proplist, PA_ALSA_PROP_UCM_SINK);
412 pa_log("UCM playback device %s fetch pcm failed", device_name);
415 if (pa_proplist_gets(device->proplist, PA_ALSA_PROP_UCM_SINK) &&
416 device->playback_channels == 0) {
418 "for device %s, assuming stereo.", device_name);
419 device->playback_channels = 2;
422 value = pa_proplist_gets(device->proplist, PA_ALSA_PROP_UCM_CAPTURE_CHANNELS);
426 device->capture_channels = ui;
428 pa_log("UCM capture channels %s for device %s out of range", value, device_name);
431 value = pa_proplist_gets(device->proplist, PA_ALSA_PROP_UCM_SOURCE);
433 pa_log("UCM capture device %s fetch pcm failed", device_name);
436 if (pa_proplist_gets(device->proplist, PA_ALSA_PROP_UCM_SOURCE) &&
437 device->capture_channels == 0) {
439 "for device %s, assuming stereo.", device_name);
440 device->capture_channels = 2;
443 /* get rate and priority of device */
444 if (device->playback_channels) { /* sink device */
446 if ((value = pa_proplist_gets(device->proplist, PA_ALSA_PROP_UCM_PLAYBACK_RATE))) {
448 pa_log_debug("UCM playback device %s rate %d", device_name, ui);
449 device->playback_rate = ui;
451 pa_log_debug("UCM playback device %s has bad rate %s", device_name, value);
454 value = pa_proplist_gets(device->proplist, PA_ALSA_PROP_UCM_PLAYBACK_PRIORITY);
458 device->playback_priority = ui;
460 pa_log_debug("UCM playback priority %s for device %s error", value, device_name);
463 vol = ucm_get_mixer_volume(device,
470 pa_hashmap_put(device->playback_volumes, pa_xstrdup(pa_proplist_gets(verb->proplist, PA_ALSA_PROP_UCM_NAME)), vol);
473 if (device->capture_channels) { /* source device */
475 if ((value = pa_proplist_gets(device->proplist, PA_ALSA_PROP_UCM_CAPTURE_RATE))) {
477 pa_log_debug("UCM capture device %s rate %d", device_name, ui);
478 device->capture_rate = ui;
480 pa_log_debug("UCM capture device %s has bad rate %s", device_name, value);
483 value = pa_proplist_gets(device->proplist, PA_ALSA_PROP_UCM_CAPTURE_PRIORITY);
487 device->capture_priority = ui;
489 pa_log_debug("UCM capture priority %s for device %s error", value, device_name);
492 vol = ucm_get_mixer_volume(device,
499 pa_hashmap_put(device->capture_volumes, pa_xstrdup(pa_proplist_gets(verb->proplist, PA_ALSA_PROP_UCM_NAME)), vol);
502 if (PA_UCM_PLAYBACK_PRIORITY_UNSET(device) || PA_UCM_CAPTURE_PRIORITY_UNSET(device)) {
506 PA_UCM_DEVICE_PRIORITY_SET(device, dev_info[i].priority);
512 if (PA_UCM_PLAYBACK_PRIORITY_UNSET(device)) {
514 device->playback_priority = 100;
517 if (PA_UCM_CAPTURE_PRIORITY_UNSET(device)) {
519 device->capture_priority = 100;
527 pa_log_debug("No %s for device %s", "_conflictingdevs", device_name);
529 device->conflicting_devices = pa_idxset_new(pa_idxset_trivial_hash_func, pa_idxset_trivial_compare_func);
530 ucm_add_devices_to_idxset(device->conflicting_devices, device, verb->devices, devices, n_confdev);
539 pa_log_debug("No %s for device %s", "_supporteddevs", device_name);
541 device->supported_devices = pa_idxset_new(pa_idxset_trivial_hash_func, pa_idxset_trivial_compare_func);
542 ucm_add_devices_to_idxset(device->supported_devices, device, verb->devices, devices, n_suppdev);
658 pa_log_info("Add role %s to device %s(%s), result %s", role, dev_name, role_name, pa_proplist_gets(dev->proplist,
739 pa_log_warn("Add lost conflicting device %s to %s",
751 pa_log_warn("Add lost supported device %s to %s",
886 /* make conflicting or supported device mutual */
928 pa_log_error("The ELD device is already set!");
930 pa_log_error("The ELD mixer device is already set (%s, %s)!", dev->eld_mixer_device_name, dev->eld_mixer_device_name);
972 pa_log_error("Two mixer device names found ('%s', '%s'), using s/w volume", mdev, mdev2);
980 pa_log_error("Failed to find a working mixer device (%s).", mdev);
1072 pa_log_warn("Multiple jacks per combined device '%s': '%s' '%s'", name, jack->name, jack2->name);
1079 pa_log_warn("Multiple device types per combined device '%s': %d %d", name, type, type2);
1195 pa_log_debug("Check device %s conformance with %d other devices",
1198 pa_log_debug("First device in combination, number 1");
1202 if (dev->conflicting_devices) { /* the device defines conflicting devices */
1206 pa_log_debug("Conflicting device found");
1211 } else if (dev->supported_devices) { /* the device defines supported devices */
1214 pa_log_debug("Supported device not found");
1255 /* check if device at map_index can combine with existing devices combination */
1257 /* add device at map_index to devices combination */
1265 /* try other device with current elements number */
1372 pa_log_info("ALSA device %s roles: %s", pa_proplist_gets(proplist, PA_PROP_DEVICE_STRING), pa_strnull(merged_roles));
1376 /* Change UCM verb and device to match selected card profile */
1436 pa_log_debug("Disable ucm device %s", dev_name);
1438 pa_log("Failed to disable ucm device %s", dev_name);
1446 pa_log_debug("Enable ucm device %s", enable_devs[i]);
1448 pa_log("Failed to enable ucm device %s", enable_devs[i]);
1486 static void alsa_mapping_add_ucm_device(pa_alsa_mapping *m, pa_alsa_ucm_device *device) {
1491 pa_idxset_put(m->ucm_context.ucm_devices, device, NULL);
1493 new_desc = pa_proplist_gets(device->proplist, PA_ALSA_PROP_UCM_DESCRIPTION);
1504 /* save mapping to ucm device */
1506 device->playback_mapping = m;
1508 device->capture_mapping = m;
1510 mdev = get_mixer_device(device, is_sink);
1566 /* find private alsa-lib's configuration device prefix */
1587 pa_alsa_ucm_device *device,
1603 priority = is_sink ? device->playback_priority : device->capture_priority;
1604 rate = is_sink ? device->playback_rate : device->capture_rate;
1605 channels = is_sink ? device->playback_channels : device->capture_channels;
1630 alsa_mapping_add_ucm_device(m, device);
1667 } else if (!m->ucm_context.ucm_modifiers) /* share pcm with device */
1679 pa_alsa_ucm_device *device,
1693 ret = ucm_create_mapping_direction(ucm, ps, p, device, verb_name, device_name, sink, true);
1695 ret = ucm_create_mapping_direction(ucm, ps, p, device, verb_name, device_name, source, false);
1700 static pa_alsa_jack* ucm_get_jack(pa_alsa_ucm_config *ucm, pa_alsa_ucm_device *device) {
1708 pa_assert(device);
1710 device_name = pa_proplist_gets(device->proplist, PA_ALSA_PROP_UCM_NAME);
1712 jack_control = pa_proplist_gets(device->proplist, PA_ALSA_PROP_UCM_JACK_CONTROL);
1747 mixer_device_name = get_jack_mixer_device(device, true);
1749 mixer_device_name = get_jack_mixer_device(device, false);
1751 pa_log("[%s] No mixer device name for JackControl \"%s\"", device_name, jack_control);
1831 /* JackHWMute contains a list of device names. Each listed device must
1846 /* Search the referenced device from all verbs. If there are
1847 * multiple verbs that have a device with this name, we add the
1860 pa_log("[%s] JackHWMute references an unknown device: %s", name, hw_mute_device_name);
1986 pa_log_error("Unable to determine open mixer device '%s' for jack %s", dev->jack->mixer_device_name, dev->jack->name);
2015 * only be controlled on the main device/verb PCM. */
2030 * only be controlled on the main device/verb PCM. */
2141 pa_alsa_ucm_device *device;
2146 PA_LLIST_FOREACH(device, verb->devices) {
2149 name = pa_proplist_gets(device->proplist, PA_ALSA_PROP_UCM_NAME);
2151 return device;
2183 /* clear ucm device pointer to mapping */
2255 static void device_add_ucm_port(pa_alsa_ucm_device *device, pa_alsa_ucm_port_data *port) {
2256 pa_assert(device);
2259 pa_dynarray_append(device->ucm_ports, port);
2262 static void device_set_jack(pa_alsa_ucm_device *device, pa_alsa_jack *jack) {
2263 pa_assert(device);
2266 device->jack = jack;
2267 pa_alsa_jack_add_ucm_device(jack, device);
2269 pa_alsa_ucm_device_update_available(device);
2272 static void device_add_hw_mute_jack(pa_alsa_ucm_device *device, pa_alsa_jack *jack) {
2273 pa_assert(device);
2276 pa_dynarray_append(device->hw_mute_jacks, jack);
2277 pa_alsa_jack_add_ucm_hw_mute_device(jack, device);
2279 pa_alsa_ucm_device_update_available(device);
2282 static void device_set_available(pa_alsa_ucm_device *device, pa_available_t available) {
2286 pa_assert(device);
2288 if (available == device->available)
2291 device->available = available;
2293 PA_DYNARRAY_FOREACH(port, device->ucm_ports, idx)
2297 void pa_alsa_ucm_device_update_available(pa_alsa_ucm_device *device) {
2302 pa_assert(device);
2304 if (device->jack && device->jack->has_control)
2305 available = device->jack->plugged_in ? PA_AVAILABLE_YES : PA_AVAILABLE_NO;
2307 PA_DYNARRAY_FOREACH(jack, device->hw_mute_jacks, idx) {
2314 device_set_available(device, available);
2358 pa_alsa_ucm_device *device;
2364 PA_DYNARRAY_FOREACH(device, port->devices, idx) {
2365 if (device->available == PA_AVAILABLE_UNKNOWN)
2367 else if (device->available == PA_AVAILABLE_NO) {