Commit Graph

138 Commits

Author SHA1 Message Date
Sebastian Sumpf 95a16adb6f sd_card: Make OMAP4 'sd_card.h' default 2013-03-22 15:26:13 +01:00
Norman Feske c36909e5dc acpi: Adjust device_pd quota for 64bit machines 2013-03-22 12:45:31 +01:00
Norman Feske 022e762a40 timer: Remove debug message 2013-03-21 15:49:27 +01:00
Christian Prochaska 452624e1a6 Fiasco(.OC) KDB UART driver
The KDB UART driver uses the Fiasco(.OC) kernel debugger console as backend
for input and output. This is useful in the case that only one UART is
available.

Fixes #665.
2013-03-18 15:28:16 +01:00
Stefan Kalkowski ce58a63fb6 Remove 'epit' from generic i.MX platform spec
Remove the 'epit' variable from the generic imx31 and imx53 specification,
and only add it to base-hw specific i.MX specs. Thereby the EPIT timer
library gets build for base-hw only.
Moreover, fix some const-ness issues in the platform_timer implementation
for the EPIT timer.
Fixes #688.
2013-03-14 11:27:51 +01:00
Ivan Loskutov 33b59a6276 atapi_drv: Add LBA48 support
Fixes #678
2013-03-08 12:14:38 +01:00
Martin Stein 571f8fb2f3 omap_fb_drv: use usleep in 'Timer_delayer'
fix #670
2013-02-25 22:14:22 +01:00
Alexander Boettcher 430d4064b8 acpi: free mapping of rsdp before using rsdt/xsdt
Fix #635
2013-02-25 22:14:22 +01:00
Alexander Boettcher 7e7fa81c8f acpi: reserve 2MB for ACPI and rest is for PCI_DRV 2013-02-22 20:28:27 +01:00
Alexander Boettcher d447910520 ahci: use pci_drv with class code/mask 2013-02-22 20:28:26 +01:00
Alexander Boettcher 3a85d16597 pci: support to lookup dev via class code/mask 2013-02-22 20:28:26 +01:00
Alexander Boettcher e05adecfab pci: add device_pd functionality 2013-02-22 20:28:26 +01:00
Alexander Boettcher 2123f3f7e8 ahci: allocate dma-able memory via pci_drv 2013-02-22 20:28:26 +01:00
Alexander Boettcher d58439ca56 pci: provide dma-able memory via pci_drv 2013-02-22 20:28:26 +01:00
Alexander Boettcher c374f294c8 pci: add support to provide PCI ECMA config 2013-02-21 11:52:02 +01:00
Alexander Boettcher 822b4f2d96 acpi: provide pci express style configs to pci_drv
Parse the mcfg table and  provide the extended PCI config space data via
the config file to the pci_drv.
2013-02-21 11:52:02 +01:00
Alexander Boettcher ba566a1530 acpi: add MCFG table parsing 2013-02-21 11:52:02 +01:00
Norman Feske 002ea7cfc4 uart_drv: Mechanism for detecting terminal size 2013-02-20 22:10:32 +01:00
Martin Stein 2a9a653b2b timer & hw & omap4: compile bug in Platform_timer
fix #652
2013-02-20 19:29:24 +01:00
Norman Feske 34ec65f2a8 timer & foc: use KIP->clock as curr_time 2013-02-20 15:20:38 +01:00
Norman Feske fae63f4fa9 Merge base libraries into a single library
This patch simplifies the way of how Genode's base libraries are
organized. Originally, the base API was implemented in the form of many
small libraries such as 'thread', 'env', 'server', etc. Most of them
used to consist of only a small number of files. Because those libraries
are incorporated in any build, the checking of their inter-dependencies
made the build process more verbose than desired. Also, the number of
libraries and their roles (core only, non-core only, shared by both core
and non-core) were not easy to capture.

Hereby, the base libraries have been reduced to the following few
libraries:

- startup.mk contains the startup code for normal Genode processes.
  On some platform, core is able to use the library as well.
- base-common.mk contains the parts of the base library that are
  identical by core and non-core processes.
- base.mk contains the complete base API implementation for non-core
  processes

Consequently, the 'LIBS' declaration in 'target.mk' files becomes
simpler as well. In the most simple case, only the 'base' library must
be mentioned.

Fixes #18
2013-02-19 14:45:55 +01:00
Norman Feske cb225a1216 Adaptation to Timer::Session change 2013-02-14 13:23:33 +01:00
Norman Feske 20a5c86a22 timer: Build platform-specific parts as lib
By using the build system's library-selection mechanism instead of many
timer targets with different 'REQUIRES' declarations, this patch reduces
the noise of the build system. For all platforms, the target at
'os/src/drivers/timer' is built. The target, in turn, depends on a
'timer' library, which is platform-specific. The various library
description files are located under 'os/lib/mk/<platform>'. The common
bits are contained in 'os/lib/mk/timer.inc'.
2013-02-14 10:36:06 +01:00
Norman Feske 3049c1004c Turn 'Timer::Session' into asynchronous interface
The 'Timer::Session::msleep' function is one of the last occurrences of
long-blocking RPC calls. Synchronous blocking RPC interfaces turned out
to be constant source of trouble and code complexity. I.e., a timer
client that also wants to respond to non-timer events was forced to be a
multi-threaded process. This patch replaces the blocking 'msleep' call
by a mechanism for programming timeouts and receiving wakeup signals in
an asynchronous fashion. Thereby signals originating from the timer can
be handled along with signals from other signal sources by a single
thread.

The changed interface has been tested on Linux, L4/Fiasco, OKL4, NOVA,
L4ka::Pistachio, Codezero, Fiasco.OC, and hw_pbxa9. Furthermore, this
patch adds the timer test to autopilot.

Fixes #1
2013-02-14 10:36:06 +01:00
Markus Partheymueller 5b1156a3e2 rtc_drv: new service interface 2013-02-13 15:09:23 +01:00
Markus Partheymueller 2d2373a03b vancouver: Timer support
This required usleep to be added to the timer interface.
2013-02-13 15:09:22 +01:00
Alexander Boettcher 5fff9eb860 acpi: use xsdt on 64bit if available
Fix #155
2013-02-12 14:12:30 +01:00
Alexander Boettcher 44e7aa7d61 acpi: fix uninitialized members of element object
The default constructor didn't initialize all members, some of them holding
pointers. In the de-constructor the _name pointer was tried to free up, even
when it was not initialized.

Avoid any hassle for uninitialized members and just initialize it. Fixes
sporadic page fault on x86_64 base-nova.

Issue #155
2013-02-12 14:12:12 +01:00
Ivan Loskutov 8eba4440eb Fix OMAP4 uart driver compilation
Fixes #630
2013-01-24 11:04:12 +01:00
Norman Feske 4fd932f7c1 Reduce debug messages of UART driver 2013-01-11 21:07:22 +01:00
Sebastian Sumpf 5aea55e417 Audio: Replace old with new audio interface
Issue #602
2013-01-10 23:05:43 +01:00
Sebastian Sumpf 47bb48bdd6 Audio: Adjust components to new audio interface
OSS driver, ALSA driver, audio-out test, avplay, and mixer

Issue #602
2013-01-10 23:05:37 +01:00
Norman Feske 73ab30c22c Update copyright headers to 2013 2013-01-10 21:44:47 +01:00
Alexander Boettcher c2d3543e62 base: replace obj_by_* by lookup_and_lock
Add functionality to lookup an object and lock it. Additional the case is
handled that a object may be already in-destruction and the lookup will deny
returning the object.

The object_pool generalize the lookup and lock functionality of the rpc_server
and serve as base for following up patches to fix dangling pointer issues.
2013-01-10 11:13:13 +01:00
Stefan Kalkowski 5bbcbc74bb os & base-hw: freescale EPIT timer driver
Fix #576
2013-01-08 11:36:52 +01:00
Martin Stein f1d599ae8a base: rename generic Board drivers Board_base
To enable a repo to name its specific board driver 'Board'.

Fix #569
2013-01-08 11:36:51 +01:00
Ivan Loskutov f9b82a7b8e Add setting baudrate to i8250 and OMAP4 UART drivers
Fixes #445
2012-12-21 14:54:15 +01:00
Ivan Loskutov 5b8a0e5423 Add OMAP4 UART driver
Fixes #444
2012-12-20 14:40:18 +01:00
Alexander Boettcher 7ee4b75156 Fix vesa_drv on native hardware
When vesa_drv tries to access values lying across region boundaries, the
second region may be not mapped.

Fixes #524
2012-11-27 20:08:54 +01:00
Stefan Kalkowski 5f81705488 Atapi: limit block count in DMA request (fix #514)
The block count in DMA requests is limited to 8 bit. Therefore,
if a client requests more than 255 blocks in a single packet request,
split the request in a loop.
2012-11-23 12:20:28 +01:00
Ivan Loskutov 5e66b6d5ed Add OMAP4 GPIO driver
Add Gpio session interface. Add test for Pandaboard.

Fixes #427
2012-11-23 12:20:27 +01:00
Martin Stein cfa0a40d5e base_hw & omap4: USB HID and framebuffer driver.
Implement 'Signal_receiver::pending()'.

Provide display-subsystem MMIO.

Avoid method ambiguousness in 'Irq_context' in
'dde_linux/src/drivers/usb/signal/irq.cc'
(it derives from two list element classes when using 'base_hw').

Enables demo scenario with 'hw_panda_a2'.
2012-11-14 16:36:50 +01:00
Martin Stein 612735732a base_hw & omap4: Timer driver.
Fix bug regarding idle thread in thread scheduling in
'base-hw/src/core/kernel.cc'.

Fix regarding signal submit in signal framework in
'base-hw/src/core/kernel.cc'.
2012-11-14 16:36:50 +01:00
Norman Feske 5b4edeb031 Introduce 'Uart::Session' interface
The new 'Uart::Session' interface is an extension of the
'Terminal::Session' interface that allows for configuring UART-specific
parameters, i.e., the baud rate.
2012-11-07 13:43:09 +01:00
Norman Feske d1de48e4a4 Fix narrowing issue reported by gcc-4.7 2012-11-01 17:04:03 +01:00
Norman Feske 746f3d4603 Add missing variable initialization 2012-10-30 12:06:55 +01:00
Stefan Kalkowski 96d45c1159 Define board declarations in a more generic fashion
By naming all board declaration (previously in base/include/drivers/board) the
same way, and putting them in platform-specific include-pathes, we save additional
declaration redirection in the base-hw kernel, and in driver definitions.
2012-10-24 16:41:13 +02:00
Christian Helmuth 502976dec1 PCI: log PCI device as bus:device.function tuple
Refers to comment in #417.
2012-10-18 21:51:54 +02:00
Martin Stein 9dba710989 Enable 'signal' test on 'base_hw'. 2012-10-12 13:10:45 +02:00
Sebastian Sumpf ff0c7825e4 ACPI/IRQ: Add interrupt mode to IRQ connection
Read flags (polarity/trigger) from MADT and add information to 'Irq_connection'
arguments.

Issue #390
2012-10-09 13:47:47 +02:00
Norman Feske 4a1b545770 Move 'Child' API implementation to library 2012-10-09 13:45:33 +02:00
Norman Feske b62492837d Move 'Static_root' to public place
The 'Static_root' class template has proven to be useful for more than
one program. So we expose it as part of the API in the os repository.
2012-10-08 15:08:26 +02:00
Stefan Kalkowski 62d81ae487 Timer: make ram_quota and stack platform-dependent 2012-09-19 14:28:36 +02:00
Sebastian Sumpf de5d5c2a1e ACPI: Fix offsets when mapping I/O mem
Fixes #309
2012-08-22 09:51:26 +02:00
Sebastian Sumpf 9486022164 ACPI: Allow PCI slave to use CPU sessions 2012-08-22 09:51:26 +02:00
Alexander Boettcher 2f84fd0434 NOVA: allocate stack size depending on word size 2012-08-09 11:09:41 +02:00
Sebastian Sumpf ae88dc233c ACPI: Increase quota of PCI service
Some tests trigger memory exhaustions of the PCI-slave service used by the
ACPI-driver.
2012-08-07 22:21:37 +02:00
Martin Stein 8220ea272c Timer session and timer test for 'base-hw'. 2012-08-03 12:06:36 +02:00
Norman Feske f279a1df00 Add write operation to OMAP4 SD-card benchmark 2012-07-26 19:11:40 +02:00
Norman Feske 0f6110ea97 Let OMAP4 SD-card driver use DMA and interrupts
With this patch, the driver code gets complemented with DMA support.
The support for master DMA, in turn, cleared the way for using
interrupts to wait for the completion of transfers, which largely
relieves the CPU compared to the polling PIO mode. Consequently, the new
version has a much lower CPU footprint.

In the current version, both modes of operation PIO and DMA are
functional. However, PIO mode is retained for benchmarking purposes only
and will possibly be removed to keep the driver simple. It is disabled
in the driver's 'main.cc'.
2012-07-25 19:14:06 +02:00
Norman Feske e9497a183f Improve measurement accuracy
This patch replaces the jiffies thread in 'sd_card/omap4/bench' calls to
'Timer::Session::elapsed_ms()'. This way, we use wall-clock time for the
measurements. Depending on the load of the rest of the system, the
previous version used to accumulate the inaccuracy for each 'msleep'
call.
2012-07-25 19:14:06 +02:00
Norman Feske 847c8cccd9 Add 'Timer::Session::elapsed_ms' function
This function allows a timer-session client to request a wall-clock
time value from the timer.
2012-07-25 19:14:06 +02:00
Norman Feske eac9055c92 Operate SD card in 4-bit data mode 2012-07-25 19:14:06 +02:00
Norman Feske f3ac72f909 Simple SD card driver benchmarking program 2012-07-25 19:14:05 +02:00
Norman Feske 7c8ca5be64 Move 'Block::Omap4_driver' into header file
By placing this code into a distinct header, we can easily reuse it for
benchmarking purposes.
2012-07-25 19:14:05 +02:00
Norman Feske 5cd099ed90 OMAP4 SD card driver
The new SD card driver at 'os/src/drivers/sd_card/omap4' allows the use
of an SD card with the Pandaboard as block service. Currently, the
driver is using PIO, no DMA, and no IRQs. The driver can be tested using
the 'os/run/sd_card.run' script.
2012-07-09 15:51:51 +02:00
Norman Feske cfda8ac4ae Add bitfield polling support to MMIO framework 2012-07-09 15:07:32 +02:00
Norman Feske 53f55cdfa9 Turn OMAP4 framebufer driver into Genode service 2012-06-22 11:50:12 +02:00
Norman Feske a60dac3b3d OMAP4 HDMI driver 2012-06-22 11:38:36 +02:00
Christian Prochaska 7d86edc355 Remove Qemu bug workaround in pl11x driver
Remove a workaround for Qemu <= 0.14.x which results in a wrong
pixel format on Qemu >= 1.0.

Fixes #243.
2012-06-20 10:19:53 +02:00
Norman Feske 288fd4e56e Add support for allocating DMA memory
This patch extends the RAM session interface with the ability to
allocate DMA buffers. The client specifies the type of RAM dataspace to
allocate via the new 'cached' argument of the 'Ram_session::alloc()'
function. By default, 'cached' is true, which correponds to the common
case and the original behavior. When setting 'cached' to 'false', core
takes the precautions needed to register the memory as uncached in the
page table of each process that has the dataspace attached.

Currently, the support for allocating DMA buffers is implemented for
Fiasco.OC only. On x86 platforms, it is generally not needed. But on
platforms with more relaxed cache coherence (such as ARM), user-level
device drivers should always use uncacheable memory for DMA transactions.
2012-06-20 09:17:48 +02:00
Christian Prochaska 06fdc7b897 Qt-based media player
This patch implements a simple Qt-based media player which is actually a
graphical user interface for the SDL-based 'avplay' media player from
'libav'. It starts 'avplay' as a child and shows its graphical output in a
'QNitpickerViewWidget'. The widgets for controlling the player state send
the according keyboard and mouse input events to 'avplay'.

The 'qt_avplay' player supports the following configuration options:

<mediafile name="..."/>
-> name of the media file to play

<framebuffer_filter name="..." ram_quota="..."/> (may appear multiple times)
-> name of a framebuffer filter service to filter the video output

Fixes #222.
2012-05-29 13:55:00 +02:00
Christian Prochaska c2f23de2e7 Introduce server-role member to 'Child' class
This patch is needed to use children as services in a dynamic
way (closing and reopening sessions).
2012-05-29 13:54:59 +02:00
Christian Prochaska 13bd859e31 Increase stack size of entry points
This patch increases the stack size of entrypoint threads in the PCI and
PS/2 drivers, in the Terminal server and in the Signal service for 64-bit
Genode/Fiasco.OC built with -O0.

Fixes #198.
2012-05-09 20:55:48 +02:00
Sebastian Sumpf d460820cf6 ACPI: Remove quota checking
Remove RAM quota checking on IRQ session creation. Spelling fixes.
(Fix #151)
2012-03-16 18:22:52 +01:00
Sebastian Sumpf ed8eb91107 ACPI: Parse MADT
Implemented IRQ service and MATD parsing. Please have a look at the 'README'
file. Fixes issue #151
2012-03-16 14:57:12 +01:00
Norman Feske db8058c16f Add x86_32 requirement to AHCI and ACPI drivers 2012-03-16 14:53:56 +01:00
Sebastian Sumpf c5e2fa06cb ACPI: Cleanup
Remove unnecessary debugging output. Filter output correctly in run script.
2012-03-10 16:01:17 +01:00
Sebastian Sumpf 10d7022395 ACPI: Handle indirect packages
Scan for packages outside of _PRT-methods (fix #141)
2012-03-06 16:59:02 +01:00
Sebastian Sumpf 7e00ef96ee ACPI: GSI parser, fix #34
Read GSIs from ACPI tables and rewrite PCI-config space IRQs
2012-02-26 13:37:33 +01:00
Sebastian Sumpf c2c87c8833 AHCI: MSI updates
Disable MSIs on device initialzation. Add ACPI-driver to run script
2012-02-26 13:37:14 +01:00
Norman Feske d880386091 Qualifying RPC functions as const
This patch makes use of the recently added support for const RPC
functions by turning 'Framebuffer::Session::mode()' and
'Input::Session::is_pending()' into const functions.
2012-01-27 16:54:05 +01:00
Norman Feske c35207d9c4 Add mode_sigh and release to framebuffer::Session
The 'mode_sigh' function allows the client to receive notifications
about server-side display-mode changes. To respond to such a signal, the
client can use the new 'release' function, which acknowledges the mode
change at the server and frees the original framebuffer dataspace. Via a
subsequent call of 'dataspace', a framebuffer dataspace corresponding to
the new mode can be obtained. Related to issue #11.
2012-01-25 16:08:24 +01:00
Norman Feske 9e3ecade16 Replace Framebuffer::info by Framebuffer::mode
As a preliminary step for working on issue #11, this patch revisits the
'Framebuffer::info' RPC call. Instead of using C-style out paramters,
the new 'mode()' RPC call returns the mode information as an object of
type 'Mode'. Consequently, mode-specific functions such as
'bytes_per_pixel' have been moved to the new 'Framebuffer::Mode' class.
2012-01-25 13:27:47 +01:00
Norman Feske 834f433222 ATAPI driver support for re-opening sessions
The probing and I/O resource allocation is done only once at the
creation time of the first session. When closing and re-opening the
session, the '_device' object is simply reused. This patch fixes #92.
2012-01-25 12:58:41 +01:00
Norman Feske 08ce32215d Bump year in copyright headers to 2012 2012-01-03 15:35:05 +01:00
Norman Feske 032f9810a9 Resolve ambiguity about SDL headers in fb_sdl
This patch prevents 'fb_sdl' from wrongly using SDL headers located in
the libports repository. We have to make sure to use the headers
installed on the host system.
2011-12-24 06:14:54 +08:00
Genode Labs da4e1feaa5 Imported Genode release 11.11 2011-12-22 16:19:25 +01:00