[GSOC 2016] HD Audio Emulation For Bhyve Status

Alex Teaca ionutalex.teaca at gmail.com
Sun Jun 26 17:49:05 UTC 2016


Hi,

Short update.

- implement the stream management operations (stream_start, stream_stop,
hda stream interrupts, hda_transfer) in the hda and hda codec
- create one thread per stream in the initialization of the codec which
runs as long as the stream is started and waits on a conditional variable
when the stream is stopped.
- implement the Audio Player used to play samples to the sound device
(/dev/dsp) (3 functions: audio_init, audio_set_params and audio_playback)

Results: manage to play music in a bhyve virtual machine :)

Thanks,
Alex


On Fri, Jun 17, 2016 at 9:52 PM, Alex Teaca <ionutalex.teaca at gmail.com>
wrote:

> Hi,
>
> I added a pin widget (Line-out) and now the Audio Output Widget is
> enabled. The codec is installed as pcm0:
> root at vm_hda:~ # cat /dev/sndstat
> Installed devices:
> pcm0: <Generic (0x8086) (Analog Line-out)> (play) default
>
> The next step is to implement the stream management operations such as
> start_stream and stop_stream. I have taken a look on the Stream management
> chapter from the HDA specification in order to get familiar with these
> operations and study the driver implementation (hdaa_audio_setup,
> hdac_stream_start, hdac_stream_stop) to see what registers are programmed
> and what commands are sent to the codec.
>
> Together with Peter and Alexander we chose the design of the interaction
> between the HDA controller, codecs and Audio player regarding the stream
> management.
>
> Thanks,
> Alex
>
>
> On Mon, Jun 6, 2016 at 10:01 PM, Alex Teaca <ionutalex.teaca at gmail.com>
> wrote:
>
>> Hi,
>>
>> Here is the status with the features I have implemented so far.
>>
>>  - set up the HDA controller as a PCI device in bhyve
>>  - design the layout of registers and implement the read and write access
>> to the registers
>>  - implement the CORB and RIRB mechanisms in order to get commands from
>> driver and respond back
>>  - add the hdac_codec module and implement the interface of communication
>> between the hda controller and codec
>>  - describe the hda codec parameters for each node (ROOT, FG and AUDIO
>> OUTPUT)
>>  - handle the GET_PARAMETER verb
>>
>> At the moment there is only one widget: the Autio Output Widget and the
>> hda driver has disabled it because it does not find any Pin widget.
>>
>> The plan is to add the Pin output widget and to continue with the streams
>> data in order to play some samples.
>>
>> Thanks,
>> Alex
>>
>>
>


More information about the soc-status mailing list