os: Use VirtIO input drivers for virt_qemu.

This makes Genode's interactive test scenarios run on virt_qemu board
actually interactive.

Issue #4282
This commit is contained in:
Piotr Tworek 2021-10-04 21:17:30 +02:00 committed by Christian Helmuth
parent 80d11ca751
commit 4f1e9fd256
4 changed files with 64 additions and 12 deletions

View File

@ -1,4 +1,6 @@
_/src/virt_qemu_drivers
_/src/virtio_input_drv
_/src/platform_drv
_/src/event_filter
_/src/virtdev_rom
_/raw/drivers_interactive-virt_qemu

View File

@ -13,9 +13,9 @@
<default caps="100"/>
<start name="platform_drv">
<resource name="RAM" quantum="2M"/>
<provides> <service name="Platform"/> </provides>
<start name="virtdev_rom">
<resource name="RAM" quantum="640K"/>
<provides> <service name="ROM"/> </provides>
<route> <any-service> <parent/> </any-service> </route>
<config>
@ -28,9 +28,26 @@
<policy label="fb_drv -> " info="yes">
<device name="fw-cfg"/>
</policy>
<policy label_prefix="virtio_keyboard_drv" info="yes">
<device name="input0"/>
</policy>
<policy label_prefix="virtio_mouse_drv" info="yes">
<device name="input1"/>
</policy>
</config>
</start>
<start name="platform_drv">
<resource name="RAM" quantum="2M"/>
<provides> <service name="Platform"/> </provides>
<route>
<service name="ROM" label="config">
<child name="virtdev_rom"/>
</service>
<any-service> <parent/> </any-service>
</route>
</start>
<start name="fb_drv">
<binary name="ram_fb_drv"/>
<resource name="RAM" quantum="8M"/>
@ -63,4 +80,32 @@
</route>
</start>
<start name="virtio_keyboard_drv" caps="70">
<binary name="virtio_mmio_input_drv"/>
<resource name="RAM" quantum="1M"/>
<config match_product="keyboard"/>
<route>
<service name="Platform"> <child name="platform_drv"/> </service>
<service name="Event"> <child name="event_filter" label="keyboard"/> </service>
<service name="CPU"> <parent/> </service>
<service name="PD"> <parent/> </service>
<service name="LOG"> <parent/> </service>
<service name="ROM"> <parent/> </service>
</route>
</start>
<start name="virtio_mouse_drv" caps="80">
<binary name="virtio_mmio_input_drv"/>
<resource name="RAM" quantum="1M"/>
<config match_product="mouse"/>
<route>
<service name="Platform"> <child name="platform_drv"/> </service>
<service name="Event"> <child name="event_filter" label="mouse"/> </service>
<service name="CPU"> <parent/> </service>
<service name="PD"> <parent/> </service>
<service name="LOG"> <parent/> </service>
<service name="ROM"> <parent/> </service>
</route>
</start>
</config>

View File

@ -1,13 +1,16 @@
<config>
<output>
<chargen>
<accelerate max="50" sensitivity_percent="1000" curve="127">
<button-scroll>
<input name="ps2"/>
<vertical button="BTN_MIDDLE" speed_percent="-10"/>
<horizontal button="BTN_MIDDLE" speed_percent="-10"/>
</button-scroll>
</accelerate>
<merge>
<accelerate max="50" sensitivity_percent="1000" curve="127">
<button-scroll>
<input name="mouse"/>
<vertical button="BTN_MIDDLE" speed_percent="-10"/>
<horizontal button="BTN_MIDDLE" speed_percent="-10"/>
</button-scroll>
</accelerate>
<input name="keyboard"/>
</merge>
<mod1>
<key name="KEY_LEFTSHIFT"/> <key name="KEY_RIGHTSHIFT"/>
</mod1>
@ -22,5 +25,6 @@
<include rom="special.chargen"/>
</chargen>
</output>
<policy label="ps2" input="ps2"/>
<policy label="keyboard" input="keyboard"/>
<policy label="mouse" input="mouse"/>
</config>

View File

@ -27,7 +27,8 @@ struct Virtio_mmio_input::Main
{
Env &env;
Platform::Connection platform { env };
Platform::Device platform_device { platform, { "input" } };
Platform::Device platform_device { platform,
Platform::Device::Type { "input" } };
Virtio::Device virtio_device { platform_device };
Attached_rom_dataspace config { env, "config" };
Virtio_input::Driver driver { env, virtio_device, config.xml() };