mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-28 09:38:53 +00:00
9d7a58f6a7
Besides updating to a newer version the update adds the AC97 ICH driver
and addresses shortcomings with the OpenBSD emulation environment:
* Fix 'delay(9)' implementation - it now properly uses 'us' as unit,
which results on faster initialization of the drivers.
* Fix LOG output that got lost during commit f23579532
and bring over
the printf implementation from dde_linux for more structured
printing.
* As said the driver now recognizes the AUICH devices. So far it was
only tested with the device model in VirtualBox where it produces
stuttering audio, investigating the cause is still ongoing.
Fixes #3641.
142 lines
2.7 KiB
Plaintext
142 lines
2.7 KiB
Plaintext
assert_spec x86
|
|
|
|
#
|
|
# Check used commands
|
|
#
|
|
|
|
set wget [installed_command wget]
|
|
|
|
#
|
|
# Configure
|
|
#
|
|
|
|
set use_mixer 0
|
|
|
|
#
|
|
# Build
|
|
#
|
|
|
|
set build_components {
|
|
core init timer
|
|
drivers/audio
|
|
test/audio_out
|
|
}
|
|
|
|
lappend_if $use_mixer build_components server/mixer
|
|
|
|
source ${genode_dir}/repos/base/run/platform_drv.inc
|
|
append_platform_drv_build_components
|
|
|
|
build $build_components
|
|
|
|
create_boot_directory
|
|
|
|
#
|
|
# Config
|
|
#
|
|
|
|
append config {
|
|
<config>
|
|
<parent-provides>
|
|
<service name="ROM"/>
|
|
<service name="IRQ"/>
|
|
<service name="IO_MEM"/>
|
|
<service name="IO_PORT"/>
|
|
<service name="PD"/>
|
|
<service name="RM"/>
|
|
<service name="CPU"/>
|
|
<service name="LOG"/>
|
|
</parent-provides>
|
|
<default-route>
|
|
<any-service> <parent/> <any-child/> </any-service>
|
|
</default-route>
|
|
<default caps="100"/>
|
|
<start name="timer">
|
|
<resource name="RAM" quantum="1M"/>
|
|
<provides><service name="Timer"/></provides>
|
|
</start>}
|
|
|
|
append_platform_drv_config
|
|
|
|
append_if $use_mixer config {
|
|
<start name="mixer">
|
|
<resource name="RAM" quantum="2M"/>
|
|
<provides><service name="Audio_out"/></provides>
|
|
<route>
|
|
<service name="Audio_out"> <child name="audio_drv"/> </service>
|
|
<any-service> <parent/> <any-child/> </any-service>
|
|
</route>
|
|
</start>}
|
|
|
|
append_if [have_spec linux] config {
|
|
<start name="audio_drv" ld="no">}
|
|
append_if [expr ![have_spec linux]] config {
|
|
<start name="audio_drv">}
|
|
append config {
|
|
<binary name="} [audio_drv_binary] {"/>
|
|
<resource name="RAM" quantum="8M"/>
|
|
<provides> <service name="Audio_out"/> </provides>
|
|
<!--
|
|
The proper ALSA device might need to be configured, e.g.
|
|
<config alsa_device="hw:CARD=Schiit,DEV=0"/>
|
|
when using Linux.
|
|
-->
|
|
<config/>
|
|
</start>
|
|
<start name="test-audio_out">
|
|
<resource name="RAM" quantum="4M"/>
|
|
<config>
|
|
<filename>sample.raw</filename>
|
|
</config>
|
|
<route>}
|
|
append_if $use_mixer config {
|
|
<service name="Audio_out"><child name="mixer"/></service>}
|
|
append config {
|
|
<any-service><parent/><any-child/></any-service>
|
|
</route>
|
|
</start>
|
|
</config>}
|
|
|
|
install_config $config
|
|
|
|
|
|
#
|
|
# Get sample file
|
|
#
|
|
|
|
if {[info exists env(GENODE_SAMPLE_RAW)]} {
|
|
catch { exec $wget $::env(GENODE_SAMPLE_RAW) -O bin/sample.raw }
|
|
}
|
|
|
|
if {![file exists bin/sample.raw]} {
|
|
puts ""
|
|
puts "The sample file is missing. Please take a look at"
|
|
puts "repos/dde_bsd/README, create 'sample.raw' and put"
|
|
puts "the file into './bin'. afterwards"
|
|
puts ""
|
|
exit 1
|
|
}
|
|
|
|
#
|
|
# Boot modules
|
|
#
|
|
|
|
append boot_modules {
|
|
core ld.lib.so init timer } [audio_drv_binary] {
|
|
test-audio_out sample.raw
|
|
}
|
|
|
|
lappend_if $use_mixer boot_modules mixer
|
|
|
|
append_platform_drv_boot_modules
|
|
|
|
build_boot_image $boot_modules
|
|
|
|
append qemu_args " -nographic -soundhw es1370 "
|
|
|
|
#
|
|
# For obvious reasons the timeout depends on the total
|
|
# length of the used sample file.
|
|
#
|
|
run_genode_until {.*played.*1 time\(s\)} 60
|