Here is my actual proposal. Note that draft manual pages have been placed in the case directory.
Public Audio DDI ---------------- Problem: Solaris currently has no public DDI for audio drivers. This makes it impossible for third parties such as 4Front to provide unbundled audio drivers. It also creates a requirement for cross-consolidation contracts to be used when one consolidation provides a driver. Solution: We believe that we have enough experience with the Boomer (PSARC 2008/318) Audio DDI to raise the commitment level for device drivers; particularly after the integration of the simplifications that were part of PSARC 2009/639, PSARC 2009/689 and PSARC 2009/674. Note that these interfaces are intended for Solaris Next (Minor binding) only. We are not at this time proposing to change or backport the Boomer implementation to any release of Solaris 10 or earlier. Details: In the case materials directory are man pages for the interfaces that we want to raise to Committed level. Any interface not covered by those manual pages will remain Consolidation Private. (See the interface table below.) Note that the AC'97 framework and its interfaces remain at Consolidation Private for now. We intend to raise the commitment level of those as part of a future case. The original Boomer case supplied manual pages for a number of functions and entry points. The manual pages in the materials directory have had some improvements and clarifications added, but there have also been some changes to the semantics. With one minor exception, these changes reflect the current state of ON as of March 17, 2010. * audio_dev_suspend.9f -- New man page (see PSARC 2009/689) * audio_engine_playahead.9e -- New man page (see PSARC 2009/639) * audio_engine_qlen.9e -- New man page (see PSARC 2009/639) * audio_engine_ops.9s -- added members (see PSARC 2009/639) * audio_engine_produce.9f -- Removed (see PSARC 2009/674) * audio_engine_open.9e -- Simplified arg list (see PSARC 2009/674) * audio_engine_set_private.9f -- New man page (was audio_dev_set_private.9f) * audio_dev_add_control.9f -- Added audio_dev_add_soft_volume, returns void. (In ON returns useless int.) Please pay special attention to audio_dev_add_soft_volume() (in the audio_dev_add_control.9f manual page) -- it represents a new interface that has not been reviewed before. In the current tree it is present and returns an int; we are proposing to change the return type to void. (That is the only change to the actual code that this case proposes.) Also note that not all possible values of control names or flags are documented. The specific list of supported audio controls is provided in audio_dev_add_control.9f. See also the interface table below. Interface Table Exported Interfaces Name Commitment Comments --------------------------------------------------------------------------- <sys/audio/audio_driver.h> Committed Header file for audio drivers drv/audio Committed Link dependency for drivers ENGINE_OUTPUT_CAP Committed See audio_engine_alloc(9F) ENGINE_INPUT_CAP Committed See audio_engine_alloc(9F) ENGINE_INPUT Committed See audio_engine_open(9E) ENGINE_OUTPUT Committed See audio_engine_open(9E) audio_init_ops() Committed Functions for drivers to call audio_fini_ops() Committed " " audio_dev_alloc() Committed " " audio_dev_set_description() Committed " " audio_dev_set_version() Committed " " audio_dev_add_info() Committed " " audio_engine_alloc() Committed " " audio_engine_free() Committed " " audio_engine_get_private() Committed " " audio_engine_set_private() Committed " " audio_dev_add_engine() Committed " " audio_dev_remove_engine() Committed " " audio_dev_register() Committed " " audio_dev_unregister() Committed " " audio_dev_suspend() Committed " " audio_dev_resume() Committed " " audio_dev_warn() Committed " " audio_dev_add_control() Committed " " audio_dev_del_control() Committed " " audio_dev_update_controls() Committed " " audio_dev_add_soft_volume() Committed " " audio_control_read() Committed " " audio_control_write() Committed " " struct audio_engine_ops Committed Driver supplied engine info AUDIO_ENGINE_VERSION Committed See audio_engine_ops(9S) audio_engine_open() Committed Driver supplied entry point audio_engine_close() Committed " " audio_engine_start() Committed " " audio_engine_stop() Committed " " audio_engine_count() Committed " " audio_engine_format() Committed " " audio_engine_channels() Committed " " audio_engine_rate() Committed " " audio_engine_sync() Committed " " audio_engine_qlen() Committed " " audio_engine_chinfo() Committed " " audio_engine_playahead() Committed " " struct audio_ctrl_desc Committed Driver supplied control info AUDIO_CTRL_ID_VOLUME Committed Audio control name AUDIO_CTRL_ID_LINEOUT Committed " " AUDIO_CTRL_ID_FRONT Committed " " AUDIO_CTRL_ID_REAR Committed " " AUDIO_CTRL_ID_HEADPHONE Committed " " AUDIO_CTRL_ID_CENTER Committed " " AUDIO_CTRL_ID_LFE Committed " " AUDIO_CTRL_ID_SPEAKER Committed " " AUDIO_CTRL_ID_MIC Committed " " AUDIO_CTRL_ID_CD Committed " " AUDIO_CTRL_ID_LINEIN Committed " " AUDIO_CTRL_ID_RECGAIN Committed " " AUDIO_CTRL_ID_MONGAIN Committed " " AUDIO_CTRL_ID_RECSRC Committed " " AUDIO_CTRL_TYPE_BOOLEAN Committed Audio control type AUDIO_CTRL_TYPE_STEREO Committed " " AUDIO_CTRL_TYPE_MONO Committed " " AUDIO_CTRL_TYPE_ENUM Committed " " AUDIO_CTRL_FLAG_READABLE Committed Audio control flag AUDIO_CTRL_FLAG_WRITEABLE Committed " " AUDIO_CTRL_FLAG_RW Committed " " AUDIO_CTRL_FLAG_MAINVOL Committed " " AUDIO_CTRL_FLAG_PCMVOL Committed " " AUDIO_CTRL_FLAG_RECVOL Committed " " AUDIO_CTRL_FLAG_MONVOL Committed " " AUDIO_CTRL_FLAG_PLAY Committed " " AUDIO_CTRL_FLAG_REC Committed " " AUDIO_CTRL_FLAG_MONITOR Committed " " AUDIO_CTRL_FLAG_MULTI Committed " " AUDIO_PORT_MIC Committed Audio port name AUDIO_PORT_CD Committed " " AUDIO_PORT_VIDEO Committed " " AUDIO_PORT_AUX1OUT Committed " " AUDIO_PORT_AUX2OUT Committed " " AUDIO_PORT_LINEOUT Committed " " AUDIO_PORT_LINEIN Committed " " AUDIO_PORT_AUX1IN Committed " " AUDIO_PORT_AUX2IN Committed " " AUDIO_PORT_HEADPHONES Committed " " AUDIO_PORT_SPDIFIN Committed " " AUDIO_PORT_SPDIFOUT Committed " " AUDIO_PORT_DIGOUT Committed " " AUDIO_PORT_DIGIN Committed " " AUDIO_PORT_HDMI Committed " " AUDIO_VALUE_ON Committed Audio enumeration value AUDIO_VALUE_OFF Committed " " AUDIO_VALUE_VERYLOW Committed " " AUDIO_VALUE_LOW Committed " " AUDIO_VALUE_MEDIUM Committed " " AUDIO_VALUE_HIGH Committed " " AUDIO_VALUE_VERYHIGH Committed " " audio_ctrl_desc_t Committed Convenience typedef audio_engine_ops_t Committed Convenience typedef audio_ctrl_wr_t Committed Control accessor typedef audio_ctrl_rd_t Committed Control accessor typedef audio_ctrl_t Committed Opaque type handle audio_dev_t Committed " " audio_engine_t Committed " "