In my mind a port is an "atomic routing unit", and a port that can be used for both input and output is not atomic (it defines two routes). An example of practical problems having two routes in one port: you can't set a property for output without setting it also for input. The first version of this patch set was sent in April: http://thread.gmane.org/gmane.comp.audio.pulseaudio.general/13010 Changes in v2: - Dropped the "device-port: Initialize profiles in pa_device_port_new()" patch, because a fully equivalent patch has already been merged. - As suggested by David, I added a new path option to be used in path description lookup: "description-key". - The logic for making path descriptions unique is now retained (it was completely removed in v1). - General rebasing work on top of the newest master. Tanu Kaskinen (5): card: Store a pa_card pointer in pa_card_profile. switch-on-port-available: Prepare for port->is_{out,in}put going away. alsa-mixer: Introduce "description-key" option for paths. alsa-mixer: Remove the "name" option from the "General" section of path configuration files. device-port: Make it impossible to have a dual-direction port. src/modules/alsa/alsa-mixer.c | 136 +++++++++++++------- src/modules/alsa/alsa-mixer.h | 1 + src/modules/alsa/mixer/paths/analog-input-aux.conf | 2 +- .../alsa/mixer/paths/analog-input-dock-mic.conf | 2 +- src/modules/alsa/mixer/paths/analog-input-fm.conf | 2 +- .../alsa/mixer/paths/analog-input-front-mic.conf | 2 +- .../mixer/paths/analog-input-internal-mic.conf | 2 +- .../alsa/mixer/paths/analog-input-mic-line.conf | 2 +- src/modules/alsa/mixer/paths/analog-input-mic.conf | 2 +- .../alsa/mixer/paths/analog-input-rear-mic.conf | 2 +- .../alsa/mixer/paths/analog-input-tvtuner.conf | 2 +- .../mixer/paths/analog-output-desktop-speaker.conf | 2 +- .../mixer/paths/analog-output-headphones-2.conf | 2 +- .../alsa/mixer/paths/analog-output-headphones.conf | 2 +- .../alsa/mixer/paths/analog-output-speaker.conf | 2 +- .../alsa/mixer/paths/analog-output.conf.common | 8 +- src/modules/bluetooth/module-bluetooth-device.c | 24 +--- src/modules/module-switch-on-port-available.c | 97 ++++++++------ src/pulsecore/card.c | 22 +++- src/pulsecore/card.h | 1 + src/pulsecore/device-port.c | 45 ++++--- src/pulsecore/device-port.h | 5 +- src/pulsecore/protocol-native.c | 2 +- 23 files changed, 222 insertions(+), 145 deletions(-) -- 1.7.10