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               "       "

Reply via email to