mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-22 06:57:51 +00:00
parent
32e792dc74
commit
1f40d9de6a
@ -8,6 +8,7 @@ SPECS += x86 32bit
|
|||||||
#
|
#
|
||||||
REP_INC_DIR += include/x86
|
REP_INC_DIR += include/x86
|
||||||
REP_INC_DIR += include/x86_32
|
REP_INC_DIR += include/x86_32
|
||||||
|
REP_INC_DIR += include/platform/x86
|
||||||
|
|
||||||
#
|
#
|
||||||
# x86-specific flags
|
# x86-specific flags
|
||||||
|
@ -8,6 +8,7 @@ SPECS += x86 64bit
|
|||||||
#
|
#
|
||||||
REP_INC_DIR += include/x86
|
REP_INC_DIR += include/x86
|
||||||
REP_INC_DIR += include/x86_64
|
REP_INC_DIR += include/x86_64
|
||||||
|
REP_INC_DIR += include/platform/x86
|
||||||
|
|
||||||
CC_MARCH ?= -m64
|
CC_MARCH ?= -m64
|
||||||
|
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
proc have_platform_drv {} {
|
proc have_platform_drv {} {
|
||||||
return [expr [have_spec platform_arndale] || [have_spec platform_imx53] || [have_spec platform_rpi]]
|
if {[have_spec linux]} {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
return [expr [have_spec platform_arndale] || [have_spec platform_imx53] || [have_spec platform_rpi] || [have_spec x86]]
|
||||||
}
|
}
|
||||||
|
|
||||||
proc append_platform_drv_build_components {} {
|
proc append_platform_drv_build_components {} {
|
||||||
@ -8,7 +11,7 @@ proc append_platform_drv_build_components {} {
|
|||||||
lappend_if [have_platform_drv] build_components drivers/platform
|
lappend_if [have_platform_drv] build_components drivers/platform
|
||||||
lappend_if [have_spec acpi] build_components drivers/acpi
|
lappend_if [have_spec acpi] build_components drivers/acpi
|
||||||
lappend_if [have_spec acpi] build_components server/report_rom
|
lappend_if [have_spec acpi] build_components server/report_rom
|
||||||
lappend_if [have_spec pci] build_components drivers/pci
|
lappend_if [have_spec nova] build_components drivers/platform/x86/device_pd
|
||||||
}
|
}
|
||||||
|
|
||||||
proc append_platform_drv_boot_modules {} {
|
proc append_platform_drv_boot_modules {} {
|
||||||
@ -17,12 +20,12 @@ proc append_platform_drv_boot_modules {} {
|
|||||||
lappend_if [have_platform_drv] boot_modules platform_drv
|
lappend_if [have_platform_drv] boot_modules platform_drv
|
||||||
lappend_if [have_spec acpi] boot_modules acpi_drv
|
lappend_if [have_spec acpi] boot_modules acpi_drv
|
||||||
lappend_if [have_spec acpi] boot_modules report_rom
|
lappend_if [have_spec acpi] boot_modules report_rom
|
||||||
lappend_if [have_spec pci] boot_modules pci_drv
|
lappend_if [have_spec nova] boot_modules device_pd
|
||||||
lappend_if [have_spec nova] boot_modules pci_device_pd
|
|
||||||
}
|
}
|
||||||
|
|
||||||
proc platform_drv_policy {} {
|
proc platform_drv_policy {} {
|
||||||
|
|
||||||
|
if ([have_spec x86]) {
|
||||||
return {
|
return {
|
||||||
<policy label="ps2_drv"> <device name="PS2"/> </policy>
|
<policy label="ps2_drv"> <device name="PS2"/> </policy>
|
||||||
<policy label="nic_drv"> <pci class="ETHERNET"/> </policy>
|
<policy label="nic_drv"> <pci class="ETHERNET"/> </policy>
|
||||||
@ -30,6 +33,9 @@ proc platform_drv_policy {} {
|
|||||||
<policy label="wifi_drv"> <pci class="WIFI"/> </policy>
|
<policy label="wifi_drv"> <pci class="WIFI"/> </policy>
|
||||||
<policy label="usb_drv"> <pci class="USB"/> </policy>
|
<policy label="usb_drv"> <pci class="USB"/> </policy>
|
||||||
<policy label="ahci_drv"> <pci class="AHCI"/> </policy>}
|
<policy label="ahci_drv"> <pci class="AHCI"/> </policy>}
|
||||||
|
} else {
|
||||||
|
return {}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
proc platform_drv_priority {} { return "" }
|
proc platform_drv_priority {} { return "" }
|
||||||
@ -37,18 +43,6 @@ proc platform_drv_priority {} { return "" }
|
|||||||
proc append_platform_drv_config {} {
|
proc append_platform_drv_config {} {
|
||||||
global config
|
global config
|
||||||
|
|
||||||
if {[have_platform_drv]} {
|
|
||||||
append config {
|
|
||||||
<start name="platform_drv">
|
|
||||||
<resource name="RAM" quantum="1M" />
|
|
||||||
<provides>
|
|
||||||
<service name="Regulator"/>
|
|
||||||
<service name="Platform"/>
|
|
||||||
</provides>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if {[have_spec acpi]} {
|
if {[have_spec acpi]} {
|
||||||
|
|
||||||
append config "
|
append config "
|
||||||
@ -75,7 +69,7 @@ proc append_platform_drv_config {} {
|
|||||||
<service name="Report" />
|
<service name="Report" />
|
||||||
</provides>
|
</provides>
|
||||||
<config>
|
<config>
|
||||||
<rom> <policy label="pci_drv -> acpi" report="acpi_drv -> acpi"/> </rom>
|
<rom> <policy label="platform_drv -> acpi" report="acpi_drv -> acpi"/> </rom>
|
||||||
</config>
|
</config>
|
||||||
<route>
|
<route>
|
||||||
<service name="LOG"> <parent/> </service>
|
<service name="LOG"> <parent/> </service>
|
||||||
@ -87,28 +81,36 @@ proc append_platform_drv_config {} {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if {[have_spec pci]} {
|
if {[have_platform_drv]} {
|
||||||
|
|
||||||
append config "
|
append config "
|
||||||
<start name=\"pci_drv\" [platform_drv_priority]>"
|
<start name=\"platform_drv\" [platform_drv_priority]>"
|
||||||
|
|
||||||
append config {
|
append config {
|
||||||
<resource name="RAM" quantum="3M" constrain_phys="yes"/>
|
<resource name="RAM" quantum="3M" constrain_phys="yes"/>
|
||||||
<provides> <service name="PCI"/> </provides>
|
<provides>
|
||||||
|
<service name="Platform"/>}
|
||||||
|
|
||||||
|
append_if [have_spec arm] config {
|
||||||
|
<service name="Regulator"/>}
|
||||||
|
|
||||||
|
append config {
|
||||||
|
</provides>
|
||||||
<route>}
|
<route>}
|
||||||
|
|
||||||
if {[have_spec acpi]} {
|
append_if [have_spec acpi] config {
|
||||||
append config {
|
|
||||||
<service name="ROM">
|
<service name="ROM">
|
||||||
<if-arg key="label" value="acpi"/> <child name="acpi_report_rom"/>
|
<if-arg key="label" value="acpi"/> <child name="acpi_report_rom"/>
|
||||||
</service>}
|
</service>}
|
||||||
}
|
|
||||||
|
append_if [have_spec platform_rpi] config {
|
||||||
|
<service name="Timer"> <any-child/> </service>}
|
||||||
|
|
||||||
append config {
|
append config {
|
||||||
<any-service> <parent/> </any-service>
|
<any-service> <parent/> </any-service>
|
||||||
</route>}
|
</route>}
|
||||||
|
|
||||||
if {[have_spec acpi]} {
|
if {[have_spec acpi] || [have_spec arm]} {
|
||||||
|
|
||||||
append config {
|
append config {
|
||||||
<config>}
|
<config>}
|
||||||
|
@ -20,14 +20,14 @@ set build_components {
|
|||||||
core init
|
core init
|
||||||
drivers/timer
|
drivers/timer
|
||||||
drivers/audio_out
|
drivers/audio_out
|
||||||
drivers/pci
|
|
||||||
test/audio_out
|
test/audio_out
|
||||||
}
|
}
|
||||||
|
|
||||||
lappend_if [have_spec acpi] build_components drivers/acpi
|
|
||||||
lappend_if [have_spec pci] build_components drivers/pci/device_pd
|
|
||||||
lappend_if $use_mixer build_components server/mixer
|
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
|
build $build_components
|
||||||
|
|
||||||
create_boot_directory
|
create_boot_directory
|
||||||
@ -59,36 +59,7 @@ append config {
|
|||||||
<provides><service name="Timer"/></provides>
|
<provides><service name="Timer"/></provides>
|
||||||
</start>}
|
</start>}
|
||||||
|
|
||||||
append_if [have_spec acpi] config {
|
append_platform_drv_config
|
||||||
<start name="acpi_drv">
|
|
||||||
<resource name="RAM" quantum="6M"/>
|
|
||||||
<provides>
|
|
||||||
<service name="PCI"/>
|
|
||||||
<service name="IRQ" />
|
|
||||||
</provides>
|
|
||||||
<route>
|
|
||||||
<any-service> <parent/> <any-child /> </any-service>
|
|
||||||
</route>
|
|
||||||
<config>
|
|
||||||
<policy label="acpi_drv">
|
|
||||||
<pci class="ALL"/>
|
|
||||||
</policy>
|
|
||||||
<policy label="audio_out_drv">
|
|
||||||
<pci class="AUDIO"/>
|
|
||||||
</policy>
|
|
||||||
</config>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if [expr ![have_spec acpi] && [have_spec pci]] config {
|
|
||||||
<start name="pci_drv">
|
|
||||||
<resource name="RAM" quantum="4M" constrain_phys="yes"/>
|
|
||||||
<provides> <service name="PCI"/> </provides>
|
|
||||||
<config>
|
|
||||||
<policy label="audio_out_drv">
|
|
||||||
<pci class="AUDIO"/>
|
|
||||||
</policy>
|
|
||||||
</config>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if $use_mixer config {
|
append_if $use_mixer config {
|
||||||
<start name="mixer">
|
<start name="mixer">
|
||||||
@ -150,10 +121,7 @@ set boot_modules {
|
|||||||
|
|
||||||
lappend_if $use_mixer boot_modules mixer
|
lappend_if $use_mixer boot_modules mixer
|
||||||
|
|
||||||
# platform-specific modules
|
append_platform_drv_boot_modules
|
||||||
lappend_if [have_spec acpi] boot_modules acpi_drv
|
|
||||||
lappend_if [have_spec pci] boot_modules pci_drv
|
|
||||||
lappend_if [have_spec nova] boot_modules pci_device_pd
|
|
||||||
|
|
||||||
build_boot_image $boot_modules
|
build_boot_image $boot_modules
|
||||||
|
|
||||||
|
@ -17,8 +17,8 @@
|
|||||||
#include <dataspace/client.h>
|
#include <dataspace/client.h>
|
||||||
#include <io_port_session/connection.h>
|
#include <io_port_session/connection.h>
|
||||||
#include <io_mem_session/connection.h>
|
#include <io_mem_session/connection.h>
|
||||||
#include <pci_session/connection.h>
|
#include <platform_session/connection.h>
|
||||||
#include <pci_device/client.h>
|
#include <platform_device/client.h>
|
||||||
|
|
||||||
/* local includes */
|
/* local includes */
|
||||||
#include "bsd.h"
|
#include "bsd.h"
|
||||||
@ -43,8 +43,8 @@ class Pci_driver : public Bsd::Bus_driver
|
|||||||
|
|
||||||
struct pci_attach_args _pa { 0, 0, 0, 0, 0 };
|
struct pci_attach_args _pa { 0, 0, 0, 0, 0 };
|
||||||
|
|
||||||
Pci::Connection _pci;
|
Platform::Connection _pci;
|
||||||
Pci::Device_capability _cap;
|
Platform::Device_capability _cap;
|
||||||
|
|
||||||
Genode::Io_port_connection *_io_port { nullptr };
|
Genode::Io_port_connection *_io_port { nullptr };
|
||||||
|
|
||||||
@ -104,9 +104,9 @@ class Pci_driver : public Bsd::Bus_driver
|
|||||||
/**
|
/**
|
||||||
* Scan pci bus for sound devices
|
* Scan pci bus for sound devices
|
||||||
*/
|
*/
|
||||||
Pci::Device_capability _scan_pci(Pci::Device_capability const &prev)
|
Platform::Device_capability _scan_pci(Platform::Device_capability const &prev)
|
||||||
{
|
{
|
||||||
Pci::Device_capability cap;
|
Platform::Device_capability cap;
|
||||||
/* shift values for Pci interface used by Genode */
|
/* shift values for Pci interface used by Genode */
|
||||||
cap = _pci.next_device(prev, PCI_CLASS_MULTIMEDIA << 16,
|
cap = _pci.next_device(prev, PCI_CLASS_MULTIMEDIA << 16,
|
||||||
PCI_CLASS_MASK << 16);
|
PCI_CLASS_MASK << 16);
|
||||||
@ -133,9 +133,9 @@ class Pci_driver : public Bsd::Bus_driver
|
|||||||
|
|
||||||
Pci_driver() : _dma_region_manager(*Genode::env()->heap(), *this) { }
|
Pci_driver() : _dma_region_manager(*Genode::env()->heap(), *this) { }
|
||||||
|
|
||||||
Pci::Device_capability cap() { return _cap; }
|
Platform::Device_capability cap() { return _cap; }
|
||||||
|
|
||||||
Pci::Connection &pci() { return _pci; }
|
Platform::Connection &pci() { return _pci; }
|
||||||
|
|
||||||
int probe()
|
int probe()
|
||||||
{
|
{
|
||||||
@ -150,7 +150,7 @@ class Pci_driver : public Bsd::Bus_driver
|
|||||||
|
|
||||||
int found = 0;
|
int found = 0;
|
||||||
while ((_cap = _scan_pci(_cap)).valid()) {
|
while ((_cap = _scan_pci(_cap)).valid()) {
|
||||||
Pci::Device_client device(_cap);
|
Platform::Device_client device(_cap);
|
||||||
|
|
||||||
uint8_t bus, dev, func;
|
uint8_t bus, dev, func;
|
||||||
device.bus_address(&bus, &dev, &func);
|
device.bus_address(&bus, &dev, &func);
|
||||||
@ -181,7 +181,7 @@ class Pci_driver : public Bsd::Bus_driver
|
|||||||
**************************/
|
**************************/
|
||||||
|
|
||||||
Genode::Irq_session_capability irq_session() override {
|
Genode::Irq_session_capability irq_session() override {
|
||||||
return Pci::Device_client(_cap).irq(0); }
|
return Platform::Device_client(_cap).irq(0); }
|
||||||
|
|
||||||
Genode::addr_t alloc(Genode::size_t size, int align) override {
|
Genode::addr_t alloc(Genode::size_t size, int align) override {
|
||||||
return _dma_region_manager.alloc(size, align); }
|
return _dma_region_manager.alloc(size, align); }
|
||||||
@ -326,26 +326,26 @@ extern "C" int pci_mapreg_map(struct pci_attach_args *pa,
|
|||||||
|
|
||||||
Pci_driver *drv = (Pci_driver*)pa->pa_pc;
|
Pci_driver *drv = (Pci_driver*)pa->pa_pc;
|
||||||
|
|
||||||
Pci::Device_capability cap = drv->cap();
|
Platform::Device_capability cap = drv->cap();
|
||||||
Pci::Device_client device(cap);
|
Platform::Device_client device(cap);
|
||||||
Pci::Device::Resource res = device.resource(r);
|
Platform::Device::Resource res = device.resource(r);
|
||||||
|
|
||||||
switch (res.type()) {
|
switch (res.type()) {
|
||||||
case Pci::Device::Resource::IO:
|
case Platform::Device::Resource::IO:
|
||||||
{
|
{
|
||||||
Io_port *iop = new (Genode::env()->heap())
|
Io_port *iop = new (Genode::env()->heap())
|
||||||
Io_port(res.base(), device.io_port(r));
|
Io_port(res.base(), device.io_port(r));
|
||||||
*tagp = (Genode::addr_t) iop;
|
*tagp = (Genode::addr_t) iop;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case Pci::Device::Resource::MEMORY:
|
case Platform::Device::Resource::MEMORY:
|
||||||
{
|
{
|
||||||
Io_memory *iom = new (Genode::env()->heap())
|
Io_memory *iom = new (Genode::env()->heap())
|
||||||
Io_memory(res.base(), device.io_mem(r));
|
Io_memory(res.base(), device.io_mem(r));
|
||||||
*tagp = (Genode::addr_t) iom;
|
*tagp = (Genode::addr_t) iom;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case Pci::Device::Resource::INVALID:
|
case Platform::Device::Resource::INVALID:
|
||||||
{
|
{
|
||||||
PERR("PCI resource type invalid");
|
PERR("PCI resource type invalid");
|
||||||
return -1;
|
return -1;
|
||||||
@ -360,8 +360,8 @@ extern "C" int pci_mapreg_map(struct pci_attach_args *pa,
|
|||||||
*sizep = maxsize > 0 && res.size() > maxsize ? maxsize : res.size();
|
*sizep = maxsize > 0 && res.size() > maxsize ? maxsize : res.size();
|
||||||
|
|
||||||
/* enable bus master and I/O or memory bits */
|
/* enable bus master and I/O or memory bits */
|
||||||
uint16_t cmd = device.config_read(Pci_driver::CMD, Pci::Device::ACCESS_16BIT);
|
uint16_t cmd = device.config_read(Pci_driver::CMD, Platform::Device::ACCESS_16BIT);
|
||||||
if (res.type() == Pci::Device::Resource::IO) {
|
if (res.type() == Platform::Device::Resource::IO) {
|
||||||
cmd &= ~Pci_driver:: CMD_MEMORY;
|
cmd &= ~Pci_driver:: CMD_MEMORY;
|
||||||
cmd |= Pci_driver::CMD_IO;
|
cmd |= Pci_driver::CMD_IO;
|
||||||
} else {
|
} else {
|
||||||
@ -370,7 +370,7 @@ extern "C" int pci_mapreg_map(struct pci_attach_args *pa,
|
|||||||
}
|
}
|
||||||
|
|
||||||
cmd |= Pci_driver::CMD_MASTER;
|
cmd |= Pci_driver::CMD_MASTER;
|
||||||
device.config_write(Pci_driver::CMD, cmd, Pci::Device::ACCESS_16BIT);
|
device.config_write(Pci_driver::CMD, cmd, Platform::Device::ACCESS_16BIT);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -383,8 +383,8 @@ extern "C" int pci_mapreg_map(struct pci_attach_args *pa,
|
|||||||
extern "C" pcireg_t pci_conf_read(pci_chipset_tag_t pc, pcitag_t tag, int reg)
|
extern "C" pcireg_t pci_conf_read(pci_chipset_tag_t pc, pcitag_t tag, int reg)
|
||||||
{
|
{
|
||||||
Pci_driver *drv = (Pci_driver *)pc;
|
Pci_driver *drv = (Pci_driver *)pc;
|
||||||
Pci::Device_client device(drv->cap());
|
Platform::Device_client device(drv->cap());
|
||||||
return device.config_read(reg, Pci::Device::ACCESS_32BIT);
|
return device.config_read(reg, Platform::Device::ACCESS_32BIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -392,8 +392,8 @@ extern "C" void pci_conf_write(pci_chipset_tag_t pc, pcitag_t tag, int reg,
|
|||||||
pcireg_t val)
|
pcireg_t val)
|
||||||
{
|
{
|
||||||
Pci_driver *drv = (Pci_driver *)pc;
|
Pci_driver *drv = (Pci_driver *)pc;
|
||||||
Pci::Device_client device(drv->cap());
|
Platform::Device_client device(drv->cap());
|
||||||
return device.config_write(reg, val, Pci::Device::ACCESS_32BIT);
|
return device.config_write(reg, val, Platform::Device::ACCESS_32BIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -30,8 +30,8 @@
|
|||||||
#include <io_port_session/connection.h>
|
#include <io_port_session/connection.h>
|
||||||
#include <irq_session/connection.h>
|
#include <irq_session/connection.h>
|
||||||
#include <os/server.h>
|
#include <os/server.h>
|
||||||
#include <pci_device/client.h>
|
#include <platform_device/client.h>
|
||||||
#include <pci_session/connection.h>
|
#include <platform_session/connection.h>
|
||||||
#include <rm_session/connection.h>
|
#include <rm_session/connection.h>
|
||||||
#include <timer_session/connection.h>
|
#include <timer_session/connection.h>
|
||||||
#include <util/misc_math.h>
|
#include <util/misc_math.h>
|
||||||
@ -124,9 +124,9 @@ struct Pci_driver
|
|||||||
CLASS_NETWORK = PCI_BASE_CLASS_NETWORK << 16
|
CLASS_NETWORK = PCI_BASE_CLASS_NETWORK << 16
|
||||||
};
|
};
|
||||||
|
|
||||||
Pci::Connection _pci;
|
Platform::Connection _pci;
|
||||||
Pci::Device_capability _cap;
|
Platform::Device_capability _cap;
|
||||||
Pci::Device_capability _last_cap;
|
Platform::Device_capability _last_cap;
|
||||||
|
|
||||||
struct Region
|
struct Region
|
||||||
{
|
{
|
||||||
@ -135,21 +135,21 @@ struct Pci_driver
|
|||||||
} _region;
|
} _region;
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
Pci::Device::Access_size _access_size(T t)
|
Platform::Device::Access_size _access_size(T t)
|
||||||
{
|
{
|
||||||
switch (sizeof(T)) {
|
switch (sizeof(T)) {
|
||||||
case 1:
|
case 1:
|
||||||
return Pci::Device::ACCESS_8BIT;
|
return Platform::Device::ACCESS_8BIT;
|
||||||
case 2:
|
case 2:
|
||||||
return Pci::Device::ACCESS_16BIT;
|
return Platform::Device::ACCESS_16BIT;
|
||||||
default:
|
default:
|
||||||
return Pci::Device::ACCESS_32BIT;
|
return Platform::Device::ACCESS_32BIT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void _bus_address(int *bus, int *dev, int *fun)
|
void _bus_address(int *bus, int *dev, int *fun)
|
||||||
{
|
{
|
||||||
Pci::Device_client client(_cap);
|
Platform::Device_client client(_cap);
|
||||||
unsigned char b, d, f;
|
unsigned char b, d, f;
|
||||||
client.bus_address(&b, &d, &f);
|
client.bus_address(&b, &d, &f);
|
||||||
|
|
||||||
@ -164,14 +164,14 @@ struct Pci_driver
|
|||||||
template <typename T>
|
template <typename T>
|
||||||
void config_read(unsigned int devfn, T *val)
|
void config_read(unsigned int devfn, T *val)
|
||||||
{
|
{
|
||||||
Pci::Device_client client(_cap);
|
Platform::Device_client client(_cap);
|
||||||
*val = client.config_read(devfn, _access_size(*val));
|
*val = client.config_read(devfn, _access_size(*val));
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
void config_write(unsigned int devfn, T val)
|
void config_write(unsigned int devfn, T val)
|
||||||
{
|
{
|
||||||
Pci::Device_client client(_cap);
|
Platform::Device_client client(_cap);
|
||||||
client.config_write(devfn, val, _access_size(val));
|
client.config_write(devfn, val, _access_size(val));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -302,7 +302,7 @@ extern "C" int dde_interrupt_attach(void(*handler)(void *), void *priv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Pci::Device_client device(pci_drv()._cap);
|
Platform::Device_client device(pci_drv()._cap);
|
||||||
_irq_handler = new (Genode::env()->heap())
|
_irq_handler = new (Genode::env()->heap())
|
||||||
Irq_handler(*_ep, device.irq(0), handler, priv);
|
Irq_handler(*_ep, device.irq(0), handler, priv);
|
||||||
} catch (...) { return -1; }
|
} catch (...) { return -1; }
|
||||||
@ -375,7 +375,7 @@ extern "C" void dde_request_io(dde_uint8_t virt_bar_ioport)
|
|||||||
sleep_forever();
|
sleep_forever();
|
||||||
}
|
}
|
||||||
|
|
||||||
Pci::Device_client device(pci_drv()._cap);
|
Platform::Device_client device(pci_drv()._cap);
|
||||||
Io_port_session_capability cap = device.io_port(virt_bar_ioport);
|
Io_port_session_capability cap = device.io_port(virt_bar_ioport);
|
||||||
|
|
||||||
_io_port = new (env()->heap()) Io_port_session_client(cap);
|
_io_port = new (env()->heap()) Io_port_session_client(cap);
|
||||||
@ -622,13 +622,13 @@ extern "C" int dde_request_iomem(dde_addr_t start, dde_addr_t *vaddr)
|
|||||||
Genode::sleep_forever();
|
Genode::sleep_forever();
|
||||||
}
|
}
|
||||||
|
|
||||||
Pci::Device_client device(pci_drv()._cap);
|
Platform::Device_client device(pci_drv()._cap);
|
||||||
Genode::Io_mem_session_capability cap;
|
Genode::Io_mem_session_capability cap;
|
||||||
|
|
||||||
Genode::uint8_t virt_iomem_bar = 0;
|
Genode::uint8_t virt_iomem_bar = 0;
|
||||||
for (unsigned i = 0; i < Pci::Device::NUM_RESOURCES; i++) {
|
for (unsigned i = 0; i < Platform::Device::NUM_RESOURCES; i++) {
|
||||||
Pci::Device::Resource res = device.resource(i);
|
Platform::Device::Resource res = device.resource(i);
|
||||||
if (res.type() == Pci::Device::Resource::MEMORY) {
|
if (res.type() == Platform::Device::Resource::MEMORY) {
|
||||||
if (res.base() == start) {
|
if (res.base() == start) {
|
||||||
cap = device.io_mem(virt_iomem_bar);
|
cap = device.io_mem(virt_iomem_bar);
|
||||||
break;
|
break;
|
||||||
|
@ -13,13 +13,13 @@
|
|||||||
|
|
||||||
set build_components {
|
set build_components {
|
||||||
core init
|
core init
|
||||||
drivers/pci drivers/timer drivers/usb
|
drivers/timer drivers/usb
|
||||||
test/lwip/http_srv
|
test/lwip/http_srv
|
||||||
}
|
}
|
||||||
|
|
||||||
lappend_if [have_spec acpi] build_components drivers/acpi
|
source ${genode_dir}/repos/base/run/platform_drv.inc
|
||||||
lappend_if [have_spec pci] build_components drivers/pci/device_pd
|
append_platform_drv_build_components
|
||||||
lappend_if [have_spec platform_arndale] build_components drivers/platform
|
|
||||||
lappend_if [have_spec gpio] build_components drivers/gpio
|
lappend_if [have_spec gpio] build_components drivers/gpio
|
||||||
|
|
||||||
build $build_components
|
build $build_components
|
||||||
@ -70,25 +70,7 @@ set config {
|
|||||||
</config>
|
</config>
|
||||||
</start>}
|
</start>}
|
||||||
|
|
||||||
append_if [have_spec acpi] config {
|
append_platform_drv_config
|
||||||
<start name="acpi">
|
|
||||||
<resource name="RAM" quantum="10M" constrain_phys="yes"/>
|
|
||||||
<binary name="acpi_drv"/>
|
|
||||||
<provides>
|
|
||||||
<service name="PCI"/>
|
|
||||||
<service name="IRQ" />
|
|
||||||
</provides>
|
|
||||||
<route>
|
|
||||||
<service name="PCI"> <any-child /> </service>
|
|
||||||
<any-service> <parent/> <any-child /> </any-service>
|
|
||||||
</route>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if [have_spec platform_arndale] config {
|
|
||||||
<start name="platform_drv">
|
|
||||||
<resource name="RAM" quantum="1M"/>
|
|
||||||
<provides><service name="Regulator"/></provides>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if [have_spec gpio] config {
|
append_if [have_spec gpio] config {
|
||||||
<start name="gpio_drv">
|
<start name="gpio_drv">
|
||||||
@ -97,12 +79,6 @@ append_if [have_spec gpio] config {
|
|||||||
<config/>
|
<config/>
|
||||||
</start>}
|
</start>}
|
||||||
|
|
||||||
append_if [expr ![have_spec acpi] && [have_spec pci]] config {
|
|
||||||
<start name="pci_drv">
|
|
||||||
<resource name="RAM" quantum="3M" constrain_phys="yes"/>
|
|
||||||
<provides> <service name="PCI"/> </provides>
|
|
||||||
</start> }
|
|
||||||
|
|
||||||
append config {
|
append config {
|
||||||
</config>
|
</config>
|
||||||
}
|
}
|
||||||
@ -120,10 +96,7 @@ set boot_modules {
|
|||||||
ld.lib.so libc.lib.so lwip.lib.so test-lwip_httpsrv
|
ld.lib.so libc.lib.so lwip.lib.so test-lwip_httpsrv
|
||||||
}
|
}
|
||||||
|
|
||||||
lappend_if [have_spec acpi] boot_modules acpi_drv
|
append_platform_drv_boot_modules
|
||||||
lappend_if [have_spec pci] boot_modules pci_drv
|
|
||||||
lappend_if [have_spec nova] boot_modules pci_device_pd
|
|
||||||
lappend_if [have_spec platform_arndale] boot_modules platform_drv
|
|
||||||
lappend_if [have_spec gpio] boot_modules gpio_drv
|
lappend_if [have_spec gpio] boot_modules gpio_drv
|
||||||
|
|
||||||
build_boot_image $boot_modules
|
build_boot_image $boot_modules
|
||||||
|
@ -15,12 +15,11 @@ set build_components {
|
|||||||
test/blk/cli
|
test/blk/cli
|
||||||
}
|
}
|
||||||
|
|
||||||
lappend_if [have_spec acpi] build_components drivers/acpi
|
|
||||||
lappend_if [have_spec pci] build_components drivers/pci
|
|
||||||
lappend_if [have_spec pci] build_components drivers/pci/device_pd
|
|
||||||
lappend_if [have_spec platform_arndale] build_components drivers/platform
|
|
||||||
lappend_if [have_spec gpio] build_components drivers/gpio
|
lappend_if [have_spec gpio] build_components drivers/gpio
|
||||||
|
|
||||||
|
source ${genode_dir}/repos/base/run/platform_drv.inc
|
||||||
|
append_platform_drv_build_components
|
||||||
|
|
||||||
build $build_components
|
build $build_components
|
||||||
|
|
||||||
create_boot_directory
|
create_boot_directory
|
||||||
@ -48,31 +47,7 @@ set config {
|
|||||||
<any-service> <parent/> <any-child/> </any-service>
|
<any-service> <parent/> <any-child/> </any-service>
|
||||||
</default-route>}
|
</default-route>}
|
||||||
|
|
||||||
append_if [have_spec acpi] config {
|
append_platform_drv_config
|
||||||
<start name="acpi">
|
|
||||||
<resource name="RAM" quantum="8M" constrain_phys="yes"/>
|
|
||||||
<binary name="acpi_drv"/>
|
|
||||||
<provides>
|
|
||||||
<service name="PCI"/>
|
|
||||||
<service name="IRQ" />
|
|
||||||
</provides>
|
|
||||||
<route>
|
|
||||||
<service name="PCI"> <any-child /> </service>
|
|
||||||
<any-service> <parent/> <any-child /> </any-service>
|
|
||||||
</route>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if [expr ![have_spec acpi] && [have_spec pci]] config {
|
|
||||||
<start name="pci_drv">
|
|
||||||
<resource name="RAM" quantum="5M" constrain_phys="yes"/>
|
|
||||||
<provides><service name="PCI"/></provides>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if [have_spec platform_arndale] config {
|
|
||||||
<start name="platform_drv">
|
|
||||||
<resource name="RAM" quantum="1M"/>
|
|
||||||
<provides><service name="Regulator"/></provides>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if [have_spec gpio] config {
|
append_if [have_spec gpio] config {
|
||||||
<start name="gpio_drv">
|
<start name="gpio_drv">
|
||||||
@ -108,10 +83,7 @@ set boot_modules {
|
|||||||
core init timer usb_drv test-blk-cli
|
core init timer usb_drv test-blk-cli
|
||||||
}
|
}
|
||||||
|
|
||||||
lappend_if [have_spec acpi] boot_modules acpi_drv
|
append_platform_drv_boot_modules
|
||||||
lappend_if [have_spec pci] boot_modules pci_drv
|
|
||||||
lappend_if [have_spec nova] boot_modules pci_device_pd
|
|
||||||
lappend_if [have_spec platform_arndale] boot_modules platform_drv
|
|
||||||
|
|
||||||
build_boot_image $boot_modules
|
build_boot_image $boot_modules
|
||||||
|
|
||||||
|
@ -17,12 +17,11 @@ set build_components {
|
|||||||
test/terminal_echo
|
test/terminal_echo
|
||||||
}
|
}
|
||||||
|
|
||||||
lappend_if [have_spec acpi] build_components drivers/acpi
|
|
||||||
lappend_if [have_spec pci] build_components drivers/pci
|
|
||||||
lappend_if [have_spec pci] build_components drivers/pci/device_pd
|
|
||||||
lappend_if [have_spec platform_arndale] build_components drivers/platform
|
|
||||||
lappend_if [have_spec gpio] build_components drivers/gpio
|
lappend_if [have_spec gpio] build_components drivers/gpio
|
||||||
|
|
||||||
|
source ${genode_dir}/repos/base/run/platform_drv.inc
|
||||||
|
append_platform_drv_build_components
|
||||||
|
|
||||||
build $build_components
|
build $build_components
|
||||||
|
|
||||||
create_boot_directory
|
create_boot_directory
|
||||||
@ -50,12 +49,6 @@ append config {
|
|||||||
<any-service> <parent/> <any-child/> </any-service>
|
<any-service> <parent/> <any-child/> </any-service>
|
||||||
</default-route>}
|
</default-route>}
|
||||||
|
|
||||||
append_if [have_spec platform_arndale] config {
|
|
||||||
<start name="platform_drv">
|
|
||||||
<resource name="RAM" quantum="1M"/>
|
|
||||||
<provides><service name="Regulator"/></provides>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if [have_spec gpio] config {
|
append_if [have_spec gpio] config {
|
||||||
<start name="gpio_drv">
|
<start name="gpio_drv">
|
||||||
<resource name="RAM" quantum="4M"/>
|
<resource name="RAM" quantum="4M"/>
|
||||||
@ -63,25 +56,7 @@ append_if [have_spec gpio] config {
|
|||||||
<config/>
|
<config/>
|
||||||
</start>}
|
</start>}
|
||||||
|
|
||||||
append_if [have_spec acpi] config {
|
append_platform_drv_config
|
||||||
<start name="acpi">
|
|
||||||
<resource name="RAM" quantum="8M"/>
|
|
||||||
<binary name="acpi_drv"/>
|
|
||||||
<provides>
|
|
||||||
<service name="PCI"/>
|
|
||||||
<service name="IRQ" />
|
|
||||||
</provides>
|
|
||||||
<route>
|
|
||||||
<service name="PCI"> <any-child /> </service>
|
|
||||||
<any-service> <parent/> <any-child /> </any-service>
|
|
||||||
</route>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if [expr ![have_spec acpi] && [have_spec pci]] config {
|
|
||||||
<start name="pci_drv">
|
|
||||||
<resource name="RAM" quantum="5M"/>
|
|
||||||
<provides><service name="PCI"/></provides>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append config {
|
append config {
|
||||||
<start name="timer">
|
<start name="timer">
|
||||||
@ -116,12 +91,10 @@ set boot_modules {
|
|||||||
usb_terminal
|
usb_terminal
|
||||||
}
|
}
|
||||||
|
|
||||||
lappend_if [have_spec acpi] boot_modules acpi_drv
|
|
||||||
lappend_if [have_spec pci] boot_modules pci_drv
|
|
||||||
lappend_if [have_spec nova] boot_modules pci_device_pd
|
|
||||||
lappend_if [have_spec platform_arndale] boot_modules platform_drv
|
|
||||||
lappend_if [have_spec gpio] boot_modules gpio_drv
|
lappend_if [have_spec gpio] boot_modules gpio_drv
|
||||||
|
|
||||||
|
append_platform_drv_boot_modules
|
||||||
|
|
||||||
build_boot_image $boot_modules
|
build_boot_image $boot_modules
|
||||||
|
|
||||||
append qemu_args " -m 256 -nographic -usb -usbdevice host:$::env(USB_RAW_DEVICE) -nographic"
|
append qemu_args " -m 256 -nographic -usb -usbdevice host:$::env(USB_RAW_DEVICE) -nographic"
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
set build_components {
|
set build_components {
|
||||||
core init
|
core init
|
||||||
drivers/pci drivers/timer drivers/wifi
|
drivers/timer drivers/wifi
|
||||||
drivers/rtc
|
drivers/rtc
|
||||||
server/report_rom
|
server/report_rom
|
||||||
server/ram_fs
|
server/ram_fs
|
||||||
@ -12,11 +12,11 @@ set build_components {
|
|||||||
test/lwip/http_srv
|
test/lwip/http_srv
|
||||||
}
|
}
|
||||||
|
|
||||||
lappend_if [have_spec acpi] build_components drivers/acpi
|
|
||||||
lappend_if [have_spec pci] build_components drivers/pci/device_pd
|
|
||||||
lappend_if [have_spec platform_arndale] build_components drivers/platform
|
|
||||||
lappend_if [have_spec gpio] build_components drivers/gpio
|
lappend_if [have_spec gpio] build_components drivers/gpio
|
||||||
|
|
||||||
|
source ${genode_dir}/repos/base/run/platform_drv.inc
|
||||||
|
append_platform_drv_build_components
|
||||||
|
|
||||||
build $build_components
|
build $build_components
|
||||||
|
|
||||||
create_boot_directory
|
create_boot_directory
|
||||||
@ -105,38 +105,13 @@ set config {
|
|||||||
<route>
|
<route>
|
||||||
<service name="Rtc"> <any-child /> </service>
|
<service name="Rtc"> <any-child /> </service>
|
||||||
<service name="File_system"> <child name="config_fs"/> </service>
|
<service name="File_system"> <child name="config_fs"/> </service>
|
||||||
|
<service name="Report"> <child name="report_rom"/> </service>
|
||||||
<service name="ROM"> <if-arg key="label" value="wlan_configuration" /> <child name="config_rom" /> </service>
|
<service name="ROM"> <if-arg key="label" value="wlan_configuration" /> <child name="config_rom" /> </service>
|
||||||
<any-service> <parent/> <any-child /> </any-service>
|
<any-service> <parent/> <any-child /> </any-service>
|
||||||
</route>
|
</route>
|
||||||
</start>}
|
</start>}
|
||||||
|
|
||||||
append_if [have_spec acpi] config {
|
append_platform_drv_config
|
||||||
<start name="acpi">
|
|
||||||
<resource name="RAM" quantum="16M" constrain_phys="yes"/>
|
|
||||||
<binary name="acpi_drv"/>
|
|
||||||
<provides>
|
|
||||||
<service name="PCI"/>
|
|
||||||
<service name="IRQ" />
|
|
||||||
</provides>
|
|
||||||
<route>
|
|
||||||
<service name="PCI"> <any-child /> </service>
|
|
||||||
<any-service> <parent/> <any-child /> </any-service>
|
|
||||||
</route>
|
|
||||||
<config>
|
|
||||||
<policy label="acpi_drv">
|
|
||||||
<pci class="ALL"/>
|
|
||||||
</policy>
|
|
||||||
<policy label="wifi_drv">
|
|
||||||
<pci class="WIFI"/>
|
|
||||||
</policy>
|
|
||||||
</config>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if [have_spec platform_arndale] config {
|
|
||||||
<start name="platform_drv">
|
|
||||||
<resource name="RAM" quantum="1M"/>
|
|
||||||
<provides><service name="Regulator"/></provides>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if [have_spec gpio] config {
|
append_if [have_spec gpio] config {
|
||||||
<start name="gpio_drv">
|
<start name="gpio_drv">
|
||||||
@ -145,12 +120,6 @@ append_if [have_spec gpio] config {
|
|||||||
<config/>
|
<config/>
|
||||||
</start>}
|
</start>}
|
||||||
|
|
||||||
append_if [expr ![have_spec acpi] && [have_spec pci]] config {
|
|
||||||
<start name="pci_drv">
|
|
||||||
<resource name="RAM" quantum="3M" constrain_phys="yes"/>
|
|
||||||
<provides> <service name="PCI"/> </provides>
|
|
||||||
</start> }
|
|
||||||
|
|
||||||
append config {
|
append config {
|
||||||
</config>
|
</config>
|
||||||
}
|
}
|
||||||
@ -183,12 +152,10 @@ set boot_modules {
|
|||||||
|
|
||||||
append boot_modules $firmware_modules
|
append boot_modules $firmware_modules
|
||||||
|
|
||||||
lappend_if [have_spec acpi] boot_modules acpi_drv
|
|
||||||
lappend_if [have_spec pci] boot_modules pci_drv
|
|
||||||
lappend_if [have_spec nova] boot_modules pci_device_pd
|
|
||||||
lappend_if [have_spec platform_arndale] boot_modules platform_drv
|
|
||||||
lappend_if [have_spec gpio] boot_modules gpio_drv
|
lappend_if [have_spec gpio] boot_modules gpio_drv
|
||||||
|
|
||||||
|
append_platform_drv_boot_modules
|
||||||
|
|
||||||
build_boot_image $boot_modules
|
build_boot_image $boot_modules
|
||||||
|
|
||||||
run_genode_until forever
|
run_genode_until forever
|
||||||
|
@ -19,8 +19,8 @@
|
|||||||
|
|
||||||
/* Genode os includes */
|
/* Genode os includes */
|
||||||
#include <io_port_session/client.h>
|
#include <io_port_session/client.h>
|
||||||
#include <pci_session/connection.h>
|
#include <platform_session/connection.h>
|
||||||
#include <pci_device/client.h>
|
#include <platform_device/client.h>
|
||||||
#include <util/volatile_object.h>
|
#include <util/volatile_object.h>
|
||||||
|
|
||||||
/* Linux includes */
|
/* Linux includes */
|
||||||
@ -102,7 +102,7 @@ class Pci_driver : public Genode::List<Pci_driver>::Element
|
|||||||
private:
|
private:
|
||||||
|
|
||||||
pci_driver *_drv; /* Linux PCI driver */
|
pci_driver *_drv; /* Linux PCI driver */
|
||||||
Pci::Device_capability _cap; /* PCI cap */
|
Platform::Device_capability _cap; /* PCI cap */
|
||||||
pci_device_id const *_id; /* matched id for this driver */
|
pci_device_id const *_id; /* matched id for this driver */
|
||||||
Io_port _port;
|
Io_port _port;
|
||||||
|
|
||||||
@ -120,7 +120,7 @@ class Pci_driver : public Genode::List<Pci_driver>::Element
|
|||||||
*/
|
*/
|
||||||
void _setup_pci_device()
|
void _setup_pci_device()
|
||||||
{
|
{
|
||||||
using namespace Pci;
|
using namespace Platform;
|
||||||
|
|
||||||
Device_client client(_cap);
|
Device_client client(_cap);
|
||||||
uint8_t bus, dev, func;
|
uint8_t bus, dev, func;
|
||||||
@ -195,16 +195,16 @@ class Pci_driver : public Genode::List<Pci_driver>::Element
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
Pci::Device::Access_size _access_size(T t)
|
Platform::Device::Access_size _access_size(T t)
|
||||||
{
|
{
|
||||||
switch (sizeof(T))
|
switch (sizeof(T))
|
||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
return Pci::Device::ACCESS_8BIT;
|
return Platform::Device::ACCESS_8BIT;
|
||||||
case 2:
|
case 2:
|
||||||
return Pci::Device::ACCESS_16BIT;
|
return Platform::Device::ACCESS_16BIT;
|
||||||
default:
|
default:
|
||||||
return Pci::Device::ACCESS_32BIT;
|
return Platform::Device::ACCESS_32BIT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -216,7 +216,7 @@ class Pci_driver : public Genode::List<Pci_driver>::Element
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
Pci_driver(pci_driver *drv, Pci::Device_capability cap,
|
Pci_driver(pci_driver *drv, Platform::Device_capability cap,
|
||||||
pci_device_id const * id)
|
pci_device_id const * id)
|
||||||
: _drv(drv), _cap(cap), _id(id), _dev(0)
|
: _drv(drv), _cap(cap), _id(id), _dev(0)
|
||||||
{
|
{
|
||||||
@ -240,14 +240,14 @@ class Pci_driver : public Genode::List<Pci_driver>::Element
|
|||||||
template <typename T>
|
template <typename T>
|
||||||
void config_read(unsigned int devfn, T *val)
|
void config_read(unsigned int devfn, T *val)
|
||||||
{
|
{
|
||||||
Pci::Device_client client(_cap);
|
Platform::Device_client client(_cap);
|
||||||
*val = client.config_read(devfn, _access_size(*val));
|
*val = client.config_read(devfn, _access_size(*val));
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
void config_write(unsigned int devfn, T val)
|
void config_write(unsigned int devfn, T val)
|
||||||
{
|
{
|
||||||
Pci::Device_client client(_cap);
|
Platform::Device_client client(_cap);
|
||||||
client.config_write(devfn, val, _access_size(val));
|
client.config_write(devfn, val, _access_size(val));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -257,7 +257,7 @@ class Pci_driver : public Genode::List<Pci_driver>::Element
|
|||||||
if (d->_dev && d->_dev->irq != irq)
|
if (d->_dev && d->_dev->irq != irq)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
Pci::Device_client client(d->_cap);
|
Platform::Device_client client(d->_cap);
|
||||||
return client.irq(0);
|
return client.irq(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -279,7 +279,7 @@ class Pci_driver : public Genode::List<Pci_driver>::Element
|
|||||||
if (bar >= PCI_ROM_RESOURCE)
|
if (bar >= PCI_ROM_RESOURCE)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
Pci::Device_client client(d->_cap);
|
Platform::Device_client client(d->_cap);
|
||||||
return client.io_mem(bar);
|
return client.io_mem(bar);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -346,7 +346,7 @@ struct Dma_object : Memory_object_base
|
|||||||
** Linux interface **
|
** Linux interface **
|
||||||
*********************/
|
*********************/
|
||||||
|
|
||||||
static Pci::Connection pci;
|
static Platform::Connection pci;
|
||||||
static Genode::Object_pool<Memory_object_base> memory_pool;
|
static Genode::Object_pool<Memory_object_base> memory_pool;
|
||||||
|
|
||||||
int pci_register_driver(struct pci_driver *drv)
|
int pci_register_driver(struct pci_driver *drv)
|
||||||
@ -372,13 +372,13 @@ int pci_register_driver(struct pci_driver *drv)
|
|||||||
|
|
||||||
Genode::env()->parent()->upgrade(pci.cap(), "ram_quota=4096");
|
Genode::env()->parent()->upgrade(pci.cap(), "ram_quota=4096");
|
||||||
|
|
||||||
Pci::Device_capability cap = pci.first_device(id->class_,
|
Platform::Device_capability cap = pci.first_device(id->class_,
|
||||||
id->class_mask);
|
id->class_mask);
|
||||||
while (cap.valid()) {
|
while (cap.valid()) {
|
||||||
|
|
||||||
if (DEBUG_PCI) {
|
if (DEBUG_PCI) {
|
||||||
uint8_t bus, dev, func;
|
uint8_t bus, dev, func;
|
||||||
Pci::Device_client client(cap);
|
Platform::Device_client client(cap);
|
||||||
client.bus_address(&bus, &dev, &func);
|
client.bus_address(&bus, &dev, &func);
|
||||||
lx_log(DEBUG_PCI, "bus: %x dev: %x func: %x", bus, dev, func);
|
lx_log(DEBUG_PCI, "bus: %x dev: %x func: %x", bus, dev, func);
|
||||||
}
|
}
|
||||||
@ -387,10 +387,10 @@ int pci_register_driver(struct pci_driver *drv)
|
|||||||
try {
|
try {
|
||||||
/* probe device */
|
/* probe device */
|
||||||
pci_drv = new (env()->heap()) Pci_driver(drv, cap, id);
|
pci_drv = new (env()->heap()) Pci_driver(drv, cap, id);
|
||||||
pci.on_destruction(Pci::Connection::KEEP_OPEN);
|
pci.on_destruction(Platform::Connection::KEEP_OPEN);
|
||||||
found = true;
|
found = true;
|
||||||
|
|
||||||
} catch (Pci::Device::Quota_exceeded) {
|
} catch (Platform::Device::Quota_exceeded) {
|
||||||
Genode::env()->parent()->upgrade(pci.cap(), "ram_quota=4096");
|
Genode::env()->parent()->upgrade(pci.cap(), "ram_quota=4096");
|
||||||
continue;
|
continue;
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
@ -398,11 +398,11 @@ int pci_register_driver(struct pci_driver *drv)
|
|||||||
pci_drv = 0;
|
pci_drv = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
Pci::Device_capability free_up = cap;
|
Platform::Device_capability free_up = cap;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
cap = pci.next_device(cap, id->class_, id->class_mask);
|
cap = pci.next_device(cap, id->class_, id->class_mask);
|
||||||
} catch (Pci::Device::Quota_exceeded) {
|
} catch (Platform::Device::Quota_exceeded) {
|
||||||
Genode::env()->parent()->upgrade(pci.cap(), "ram_quota=4096");
|
Genode::env()->parent()->upgrade(pci.cap(), "ram_quota=4096");
|
||||||
cap = pci.next_device(cap, id->class_, id->class_mask);
|
cap = pci.next_device(cap, id->class_, id->class_mask);
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
#include <base/tslab.h>
|
#include <base/tslab.h>
|
||||||
#include <timer_session/connection.h>
|
#include <timer_session/connection.h>
|
||||||
#include <irq_session/connection.h>
|
#include <irq_session/connection.h>
|
||||||
#include <pci_device/client.h>
|
#include <platform_device/client.h>
|
||||||
|
|
||||||
/* local includes */
|
/* local includes */
|
||||||
#include <lx.h>
|
#include <lx.h>
|
||||||
@ -81,7 +81,7 @@ namespace Lx {
|
|||||||
|
|
||||||
static void run_irq(void *args);
|
static void run_irq(void *args);
|
||||||
|
|
||||||
extern "C" Pci::Device_capability pci_device_cap;
|
extern "C" Platform::Device_capability pci_device_cap;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Lx::Irq
|
* Lx::Irq
|
||||||
@ -147,11 +147,11 @@ class Lx::Irq
|
|||||||
* Constructor
|
* Constructor
|
||||||
*/
|
*/
|
||||||
Context(Server::Entrypoint &ep, unsigned irq,
|
Context(Server::Entrypoint &ep, unsigned irq,
|
||||||
Pci::Device_capability pci_dev)
|
Platform::Device_capability pci_dev)
|
||||||
:
|
:
|
||||||
_name(irq),
|
_name(irq),
|
||||||
_irq(irq),
|
_irq(irq),
|
||||||
_irq_sess(Pci::Device_client(pci_dev).irq(0)),
|
_irq_sess(Platform::Device_client(pci_dev).irq(0)),
|
||||||
_task(run_irq, this, _name.name),
|
_task(run_irq, this, _name.name),
|
||||||
_dispatcher(ep, *this, &Context::_handle)
|
_dispatcher(ep, *this, &Context::_handle)
|
||||||
{
|
{
|
||||||
|
@ -15,8 +15,8 @@
|
|||||||
/* Genode inludes */
|
/* Genode inludes */
|
||||||
#include <ram_session/client.h>
|
#include <ram_session/client.h>
|
||||||
#include <base/object_pool.h>
|
#include <base/object_pool.h>
|
||||||
#include <pci_session/connection.h>
|
#include <platform_session/connection.h>
|
||||||
#include <pci_device/client.h>
|
#include <platform_device/client.h>
|
||||||
#include <io_mem_session/connection.h>
|
#include <io_mem_session/connection.h>
|
||||||
|
|
||||||
/* local includes */
|
/* local includes */
|
||||||
@ -42,7 +42,7 @@ class Pci_driver
|
|||||||
private:
|
private:
|
||||||
|
|
||||||
pci_driver *_drv; /* Linux PCI driver */
|
pci_driver *_drv; /* Linux PCI driver */
|
||||||
Pci::Device_capability _cap; /* PCI cap */
|
Platform::Device_capability _cap; /* PCI cap */
|
||||||
pci_device_id const *_id; /* matched id for this driver */
|
pci_device_id const *_id; /* matched id for this driver */
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -62,7 +62,7 @@ class Pci_driver
|
|||||||
*/
|
*/
|
||||||
bool _setup_pci_device()
|
bool _setup_pci_device()
|
||||||
{
|
{
|
||||||
using namespace Pci;
|
using namespace Platform;
|
||||||
|
|
||||||
Device_client client(_cap);
|
Device_client client(_cap);
|
||||||
if (client.device_id() != _id->device)
|
if (client.device_id() != _id->device)
|
||||||
@ -159,22 +159,22 @@ class Pci_driver
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
Pci::Device::Access_size _access_size(T t)
|
Platform::Device::Access_size _access_size(T t)
|
||||||
{
|
{
|
||||||
switch (sizeof(T))
|
switch (sizeof(T))
|
||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
return Pci::Device::ACCESS_8BIT;
|
return Platform::Device::ACCESS_8BIT;
|
||||||
case 2:
|
case 2:
|
||||||
return Pci::Device::ACCESS_16BIT;
|
return Platform::Device::ACCESS_16BIT;
|
||||||
default:
|
default:
|
||||||
return Pci::Device::ACCESS_32BIT;
|
return Platform::Device::ACCESS_32BIT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
Pci_driver(pci_driver *drv, Pci::Device_capability cap,
|
Pci_driver(pci_driver *drv, Platform::Device_capability cap,
|
||||||
pci_device_id const * id)
|
pci_device_id const * id)
|
||||||
: _drv(drv), _cap(cap), _id(id), _dev(0)
|
: _drv(drv), _cap(cap), _id(id), _dev(0)
|
||||||
{
|
{
|
||||||
@ -196,14 +196,14 @@ class Pci_driver
|
|||||||
template <typename T>
|
template <typename T>
|
||||||
void config_read(unsigned int devfn, T *val)
|
void config_read(unsigned int devfn, T *val)
|
||||||
{
|
{
|
||||||
Pci::Device_client client(_cap);
|
Platform::Device_client client(_cap);
|
||||||
*val = client.config_read(devfn, _access_size(*val));
|
*val = client.config_read(devfn, _access_size(*val));
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
void config_write(unsigned int devfn, T val)
|
void config_write(unsigned int devfn, T val)
|
||||||
{
|
{
|
||||||
Pci::Device_client client(_cap);
|
Platform::Device_client client(_cap);
|
||||||
client.config_write(devfn, val, _access_size(val));
|
client.config_write(devfn, val, _access_size(val));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -251,10 +251,10 @@ struct Dma_object : Memory_object_base
|
|||||||
** Linux interface **
|
** Linux interface **
|
||||||
*********************/
|
*********************/
|
||||||
|
|
||||||
extern "C" { Pci::Device_capability pci_device_cap; }
|
extern "C" { Platform::Device_capability pci_device_cap; }
|
||||||
static Pci::Connection *pci()
|
static Platform::Connection *pci()
|
||||||
{
|
{
|
||||||
static Pci::Connection _pci;
|
static Platform::Connection _pci;
|
||||||
return &_pci;
|
return &_pci;
|
||||||
}
|
}
|
||||||
static Genode::Object_pool<Memory_object_base> memory_pool;
|
static Genode::Object_pool<Memory_object_base> memory_pool;
|
||||||
@ -287,7 +287,7 @@ extern "C" int pci_register_driver(struct pci_driver *drv)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
Pci::Device_capability cap = pci()->first_device(PCI_CLASS_WIFI,
|
Platform::Device_capability cap = pci()->first_device(PCI_CLASS_WIFI,
|
||||||
PCI_CLASS_MASK);
|
PCI_CLASS_MASK);
|
||||||
|
|
||||||
while (cap.valid()) {
|
while (cap.valid()) {
|
||||||
@ -297,10 +297,10 @@ extern "C" int pci_register_driver(struct pci_driver *drv)
|
|||||||
|
|
||||||
/* probe device */
|
/* probe device */
|
||||||
pci_drv = new (env()->heap()) Pci_driver(drv, cap, id);
|
pci_drv = new (env()->heap()) Pci_driver(drv, cap, id);
|
||||||
pci()->on_destruction(Pci::Connection::KEEP_OPEN);
|
pci()->on_destruction(Platform::Connection::KEEP_OPEN);
|
||||||
found++;
|
found++;
|
||||||
|
|
||||||
} catch (Pci::Device::Quota_exceeded) {
|
} catch (Platform::Device::Quota_exceeded) {
|
||||||
Genode::env()->parent()->upgrade(pci()->cap(), "ram_quota=4096");
|
Genode::env()->parent()->upgrade(pci()->cap(), "ram_quota=4096");
|
||||||
continue;
|
continue;
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
@ -311,7 +311,7 @@ extern "C" int pci_register_driver(struct pci_driver *drv)
|
|||||||
if (found)
|
if (found)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
Pci::Device_capability free_up = cap;
|
Platform::Device_capability free_up = cap;
|
||||||
cap = pci()->next_device(cap, PCI_CLASS_WIFI, PCI_CLASS_MASK);
|
cap = pci()->next_device(cap, PCI_CLASS_WIFI, PCI_CLASS_MASK);
|
||||||
if (!pci_drv)
|
if (!pci_drv)
|
||||||
pci()->release_device(free_up);
|
pci()->release_device(free_up);
|
||||||
@ -362,7 +362,7 @@ extern "C" void *pci_ioremap_bar(struct pci_dev *dev, int bar)
|
|||||||
|
|
||||||
Io_mem_session_client *io_mem;
|
Io_mem_session_client *io_mem;
|
||||||
try {
|
try {
|
||||||
Pci::Device_client device(pci_device_cap);
|
Platform::Device_client device(pci_device_cap);
|
||||||
io_mem = new (env()->heap()) Io_mem_session_client(device.io_mem(device.phys_bar_to_virt(bar)));
|
io_mem = new (env()->heap()) Io_mem_session_client(device.io_mem(device.phys_bar_to_virt(bar)));
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
PERR("Failed to request I/O memory: [%zx,%zx)", start, start + size);
|
PERR("Failed to request I/O memory: [%zx,%zx)", start, start + size);
|
||||||
|
@ -13,14 +13,14 @@ set build_components {
|
|||||||
app/decorator
|
app/decorator
|
||||||
server/nitpicker server/report_rom
|
server/nitpicker server/report_rom
|
||||||
test/decorator_stress
|
test/decorator_stress
|
||||||
drivers/framebuffer drivers/pci drivers/input
|
drivers/framebuffer drivers/input
|
||||||
}
|
}
|
||||||
|
|
||||||
|
source ${genode_dir}/repos/base/run/platform_drv.inc
|
||||||
|
append_platform_drv_build_components
|
||||||
|
|
||||||
lappend_if [have_spec usb] build_components drivers/usb
|
lappend_if [have_spec usb] build_components drivers/usb
|
||||||
lappend_if [have_spec gpio] build_components drivers/gpio
|
lappend_if [have_spec gpio] build_components drivers/gpio
|
||||||
lappend_if [have_spec imx53] build_components drivers/platform
|
|
||||||
lappend_if [have_spec platform_arndale] build_components drivers/platform
|
|
||||||
lappend_if [have_spec platform_rpi] build_components drivers/platform
|
|
||||||
|
|
||||||
build $build_components
|
build $build_components
|
||||||
|
|
||||||
@ -58,11 +58,7 @@ append_if [have_spec sdl] config {
|
|||||||
</provides>
|
</provides>
|
||||||
</start>}
|
</start>}
|
||||||
|
|
||||||
append_if [have_spec pci] config {
|
append_platform_drv_config
|
||||||
<start name="pci_drv">
|
|
||||||
<resource name="RAM" quantum="1M"/>
|
|
||||||
<provides><service name="PCI"/></provides>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if [have_spec framebuffer] config {
|
append_if [have_spec framebuffer] config {
|
||||||
<start name="fb_drv">
|
<start name="fb_drv">
|
||||||
@ -77,26 +73,7 @@ append_if [have_spec gpio] config {
|
|||||||
<config/>
|
<config/>
|
||||||
</start>}
|
</start>}
|
||||||
|
|
||||||
append_if [have_spec platform_arndale] config {
|
|
||||||
<start name="platform_drv">
|
|
||||||
<resource name="RAM" quantum="1M"/>
|
|
||||||
<provides><service name="Regulator"/></provides>
|
|
||||||
<config/>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if [have_spec platform_rpi] config {
|
|
||||||
<start name="platform_drv">
|
|
||||||
<resource name="RAM" quantum="1M"/>
|
|
||||||
<provides><service name="Platform"/></provides>
|
|
||||||
<config/>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if [have_spec imx53] config {
|
append_if [have_spec imx53] config {
|
||||||
<start name="platform_drv">
|
|
||||||
<resource name="RAM" quantum="1M"/>
|
|
||||||
<provides><service name="Platform"/></provides>
|
|
||||||
<config/>
|
|
||||||
</start>
|
|
||||||
<start name="input_drv">
|
<start name="input_drv">
|
||||||
<resource name="RAM" quantum="1M"/>
|
<resource name="RAM" quantum="1M"/>
|
||||||
<provides><service name="Input"/></provides>
|
<provides><service name="Input"/></provides>
|
||||||
@ -129,6 +106,10 @@ append config {
|
|||||||
<policy label="" domain=""/>
|
<policy label="" domain=""/>
|
||||||
<report pointer="yes" />
|
<report pointer="yes" />
|
||||||
</config>
|
</config>
|
||||||
|
<route>
|
||||||
|
<service name="Report"> <child name="report_rom"/> </service>
|
||||||
|
<any-service> <parent/> <any-child/> </any-service>
|
||||||
|
</route>
|
||||||
</start>
|
</start>
|
||||||
<start name="report_rom">
|
<start name="report_rom">
|
||||||
<resource name="RAM" quantum="2M"/>
|
<resource name="RAM" quantum="2M"/>
|
||||||
@ -145,6 +126,10 @@ append config {
|
|||||||
</start>
|
</start>
|
||||||
<start name="test-decorator_stress">
|
<start name="test-decorator_stress">
|
||||||
<resource name="RAM" quantum="2M"/>
|
<resource name="RAM" quantum="2M"/>
|
||||||
|
<route>
|
||||||
|
<service name="Report"> <child name="report_rom"/> </service>
|
||||||
|
<any-service> <parent/> <any-child/> </any-service>
|
||||||
|
</route>
|
||||||
</start>
|
</start>
|
||||||
<start name="decorator">
|
<start name="decorator">
|
||||||
<resource name="RAM" quantum="8M"/>
|
<resource name="RAM" quantum="8M"/>
|
||||||
@ -157,6 +142,7 @@ append config {
|
|||||||
<if-arg key="label" value="window_layout" />
|
<if-arg key="label" value="window_layout" />
|
||||||
<child name="report_rom" />
|
<child name="report_rom" />
|
||||||
</service>
|
</service>
|
||||||
|
<service name="Report"> <child name="report_rom"/> </service>
|
||||||
<any-service> <parent/> <any-child/> </any-service>
|
<any-service> <parent/> <any-child/> </any-service>
|
||||||
</route>
|
</route>
|
||||||
</start>
|
</start>
|
||||||
@ -180,15 +166,13 @@ set boot_modules {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# platform-specific modules
|
# platform-specific modules
|
||||||
|
append_platform_drv_boot_modules
|
||||||
|
|
||||||
lappend_if [have_spec linux] boot_modules fb_sdl
|
lappend_if [have_spec linux] boot_modules fb_sdl
|
||||||
lappend_if [have_spec pci] boot_modules pci_drv
|
|
||||||
lappend_if [have_spec ps2] boot_modules ps2_drv
|
lappend_if [have_spec ps2] boot_modules ps2_drv
|
||||||
lappend_if [have_spec framebuffer] boot_modules fb_drv
|
lappend_if [have_spec framebuffer] boot_modules fb_drv
|
||||||
lappend_if [have_spec usb] boot_modules usb_drv
|
lappend_if [have_spec usb] boot_modules usb_drv
|
||||||
lappend_if [have_spec gpio] boot_modules gpio_drv
|
lappend_if [have_spec gpio] boot_modules gpio_drv
|
||||||
lappend_if [have_spec imx53] boot_modules platform_drv
|
|
||||||
lappend_if [have_spec platform_arndale] boot_modules platform_drv
|
|
||||||
lappend_if [have_spec platform_rpi] boot_modules platform_drv
|
|
||||||
lappend_if [have_spec imx53] boot_modules input_drv
|
lappend_if [have_spec imx53] boot_modules input_drv
|
||||||
|
|
||||||
build_boot_image $boot_modules
|
build_boot_image $boot_modules
|
||||||
|
@ -11,7 +11,6 @@ if {[have_spec hw_odroid_xu]} {
|
|||||||
|
|
||||||
set use_usb_driver [expr [have_spec omap4] || [have_spec platform_arndale] || [have_spec platform_rpi]]
|
set use_usb_driver [expr [have_spec omap4] || [have_spec platform_arndale] || [have_spec platform_rpi]]
|
||||||
set use_nic_driver [expr !$use_usb_driver && ![have_spec platform_imx53]]
|
set use_nic_driver [expr !$use_usb_driver && ![have_spec platform_imx53]]
|
||||||
set use_platform_driver [expr [have_spec platform_arndale] || [have_spec platform_imx53] || [have_spec platform_rpi]]
|
|
||||||
|
|
||||||
if {[expr !$use_usb_driver && !$use_nic_driver]} {
|
if {[expr !$use_usb_driver && !$use_nic_driver]} {
|
||||||
puts "\n Run script is not supported on this platform. \n"; exit 0 }
|
puts "\n Run script is not supported on this platform. \n"; exit 0 }
|
||||||
@ -31,12 +30,11 @@ set build_components {
|
|||||||
# platform-specific modules
|
# platform-specific modules
|
||||||
lappend_if $use_usb_driver build_components drivers/usb
|
lappend_if $use_usb_driver build_components drivers/usb
|
||||||
lappend_if $use_nic_driver build_components drivers/nic
|
lappend_if $use_nic_driver build_components drivers/nic
|
||||||
lappend_if $use_platform_driver build_components drivers/platform
|
|
||||||
lappend_if [have_spec acpi] build_components drivers/acpi
|
|
||||||
lappend_if [have_spec pci] build_components drivers/pci
|
|
||||||
lappend_if [have_spec pci] build_components drivers/pci/device_pd
|
|
||||||
lappend_if [have_spec gpio] build_components drivers/gpio
|
lappend_if [have_spec gpio] build_components drivers/gpio
|
||||||
|
|
||||||
|
source ${genode_dir}/repos/base/run/platform_drv.inc
|
||||||
|
append_platform_drv_build_components
|
||||||
|
|
||||||
build $build_components
|
build $build_components
|
||||||
|
|
||||||
create_boot_directory
|
create_boot_directory
|
||||||
@ -64,13 +62,6 @@ append config {
|
|||||||
<provides><service name="Timer"/></provides>
|
<provides><service name="Timer"/></provides>
|
||||||
</start>}
|
</start>}
|
||||||
|
|
||||||
append_if $use_platform_driver config {
|
|
||||||
<start name="platform_drv">
|
|
||||||
<resource name="RAM" quantum="1M" />
|
|
||||||
<provides><service name="Regulator"/></provides>
|
|
||||||
<provides><service name="Platform"/></provides>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if [have_spec gpio] config {
|
append_if [have_spec gpio] config {
|
||||||
<start name="gpio_drv">
|
<start name="gpio_drv">
|
||||||
<resource name="RAM" quantum="4M"/>
|
<resource name="RAM" quantum="4M"/>
|
||||||
@ -95,25 +86,7 @@ append_if $use_nic_driver config {
|
|||||||
<provides><service name="Nic"/></provides>
|
<provides><service name="Nic"/></provides>
|
||||||
</start>}
|
</start>}
|
||||||
|
|
||||||
append_if [have_spec acpi] config {
|
append_platform_drv_config
|
||||||
<start name="acpi">
|
|
||||||
<resource name="RAM" quantum="6M" constrain_phys="yes"/>
|
|
||||||
<binary name="acpi_drv"/>
|
|
||||||
<provides>
|
|
||||||
<service name="PCI"/>
|
|
||||||
<service name="IRQ" />
|
|
||||||
</provides>
|
|
||||||
<route>
|
|
||||||
<service name="PCI"> <any-child /> </service>
|
|
||||||
<any-service> <parent/> <any-child /> </any-service>
|
|
||||||
</route>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if [expr ![have_spec acpi] && [have_spec pci]] config {
|
|
||||||
<start name="pci_drv">
|
|
||||||
<resource name="RAM" quantum="3M" constrain_phys="yes"/>
|
|
||||||
<provides> <service name="PCI"/> </provides>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append config {
|
append config {
|
||||||
<start name="nic_bridge">
|
<start name="nic_bridge">
|
||||||
@ -139,6 +112,7 @@ append config {
|
|||||||
</config>
|
</config>
|
||||||
<route>
|
<route>
|
||||||
<service name="Nic"> <child name="nic_bridge"/> </service>
|
<service name="Nic"> <child name="nic_bridge"/> </service>
|
||||||
|
<service name="ROM"> <parent/> </service>
|
||||||
<any-service> <any-child /> <parent/> </any-service>
|
<any-service> <any-child /> <parent/> </any-service>
|
||||||
</route>
|
</route>
|
||||||
</start>
|
</start>
|
||||||
@ -186,6 +160,7 @@ mimetype.assign = (
|
|||||||
</config>
|
</config>
|
||||||
<route>
|
<route>
|
||||||
<service name="Nic"> <child name="nic_bridge"/> </service>
|
<service name="Nic"> <child name="nic_bridge"/> </service>
|
||||||
|
<service name="ROM"> <parent/> </service>
|
||||||
<any-service> <any-child /> <parent/> </any-service>
|
<any-service> <any-child /> <parent/> </any-service>
|
||||||
</route>
|
</route>
|
||||||
</start>
|
</start>
|
||||||
@ -208,13 +183,11 @@ set boot_modules {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# platform-specific modules
|
# platform-specific modules
|
||||||
lappend_if $use_platform_driver boot_modules platform_drv
|
|
||||||
lappend_if [have_spec acpi] boot_modules acpi_drv
|
|
||||||
lappend_if [have_spec pci] boot_modules pci_drv
|
|
||||||
lappend_if [have_spec gpio] boot_modules gpio_drv
|
lappend_if [have_spec gpio] boot_modules gpio_drv
|
||||||
lappend_if $use_usb_driver boot_modules usb_drv
|
lappend_if $use_usb_driver boot_modules usb_drv
|
||||||
lappend_if $use_nic_driver boot_modules nic_drv
|
lappend_if $use_nic_driver boot_modules nic_drv
|
||||||
lappend_if [have_spec nova] boot_modules pci_device_pd
|
|
||||||
|
append_platform_drv_boot_modules
|
||||||
|
|
||||||
build_boot_image $boot_modules
|
build_boot_image $boot_modules
|
||||||
|
|
||||||
|
@ -3,13 +3,16 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
set build_components {
|
set build_components {
|
||||||
core init drivers/timer drivers/framebuffer drivers/input drivers/pci
|
core init drivers/timer drivers/framebuffer drivers/input
|
||||||
server/dynamic_rom server/nitpicker server/report_rom
|
server/dynamic_rom server/nitpicker server/report_rom
|
||||||
app/pointer app/menu_view
|
app/pointer app/menu_view
|
||||||
app/scout app/launchpad app/launcher test/nitpicker
|
app/scout app/launchpad app/launcher test/nitpicker
|
||||||
server/nit_fader
|
server/nit_fader
|
||||||
}
|
}
|
||||||
|
|
||||||
|
source ${genode_dir}/repos/base/run/platform_drv.inc
|
||||||
|
append_platform_drv_build_components
|
||||||
|
|
||||||
build $build_components
|
build $build_components
|
||||||
|
|
||||||
create_boot_directory
|
create_boot_directory
|
||||||
@ -46,11 +49,7 @@ append_if [have_spec sdl] config {
|
|||||||
</provides>
|
</provides>
|
||||||
</start>}
|
</start>}
|
||||||
|
|
||||||
append_if [have_spec pci] config {
|
append_platform_drv_config
|
||||||
<start name="pci_drv">
|
|
||||||
<resource name="RAM" quantum="1M"/>
|
|
||||||
<provides><service name="PCI"/></provides>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if [have_spec framebuffer] config {
|
append_if [have_spec framebuffer] config {
|
||||||
<start name="fb_drv">
|
<start name="fb_drv">
|
||||||
@ -89,6 +88,10 @@ append config {
|
|||||||
<global-key name="KEY_F11" operation="kill" />
|
<global-key name="KEY_F11" operation="kill" />
|
||||||
<global-key name="KEY_F12" operation="xray" />
|
<global-key name="KEY_F12" operation="xray" />
|
||||||
</config>
|
</config>
|
||||||
|
<route>
|
||||||
|
<service name="Report"> <child name="report_rom"/> </service>
|
||||||
|
<any-service> <parent/> <any-child/> </any-service>
|
||||||
|
</route>
|
||||||
</start>
|
</start>
|
||||||
<start name="pointer">
|
<start name="pointer">
|
||||||
<resource name="RAM" quantum="1M"/>
|
<resource name="RAM" quantum="1M"/>
|
||||||
@ -167,8 +170,9 @@ set boot_modules {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# platform-specific modules
|
# platform-specific modules
|
||||||
|
append_platform_drv_boot_modules
|
||||||
|
|
||||||
lappend_if [have_spec linux] boot_modules fb_sdl
|
lappend_if [have_spec linux] boot_modules fb_sdl
|
||||||
lappend_if [have_spec pci] boot_modules pci_drv
|
|
||||||
lappend_if [have_spec ps2] boot_modules ps2_drv
|
lappend_if [have_spec ps2] boot_modules ps2_drv
|
||||||
lappend_if [have_spec framebuffer] boot_modules fb_drv
|
lappend_if [have_spec framebuffer] boot_modules fb_drv
|
||||||
|
|
||||||
|
@ -22,9 +22,8 @@ set build_components {
|
|||||||
test/terminal_echo
|
test/terminal_echo
|
||||||
}
|
}
|
||||||
|
|
||||||
lappend_if [have_spec acpi] build_components drivers/acpi
|
source ${genode_dir}/repos/base/run/platform_drv.inc
|
||||||
lappend_if [have_spec pci] build_components drivers/pci
|
append_platform_drv_build_components
|
||||||
lappend_if [have_spec pci] build_components drivers/pci/device_pd
|
|
||||||
|
|
||||||
build $build_components
|
build $build_components
|
||||||
|
|
||||||
@ -50,7 +49,7 @@ set config {
|
|||||||
<service name="SIGNAL"/>
|
<service name="SIGNAL"/>
|
||||||
</parent-provides>
|
</parent-provides>
|
||||||
<default-route>
|
<default-route>
|
||||||
<any-service> <any-child/> <parent/> </any-service>
|
<any-service> <parent/> <any-child/> </any-service>
|
||||||
</default-route>
|
</default-route>
|
||||||
<start name="timer">
|
<start name="timer">
|
||||||
<resource name="RAM" quantum="1M"/>
|
<resource name="RAM" quantum="1M"/>
|
||||||
@ -67,33 +66,14 @@ set config {
|
|||||||
<policy label="test-terminal_echo" port="8888"/>
|
<policy label="test-terminal_echo" port="8888"/>
|
||||||
<libc stdout="/dev/log">
|
<libc stdout="/dev/log">
|
||||||
<vfs> <dir name="dev"> <log/> </dir> </vfs>
|
<vfs> <dir name="dev"> <log/> </dir> </vfs>
|
||||||
</lib>
|
</libc>
|
||||||
</config>
|
</config>
|
||||||
</start>
|
</start>
|
||||||
<start name="test-terminal_echo">
|
<start name="test-terminal_echo">
|
||||||
<resource name="RAM" quantum="1M"/>
|
<resource name="RAM" quantum="1M"/>
|
||||||
</start>}
|
</start>}
|
||||||
|
|
||||||
append_if [have_spec acpi] config {
|
append_platform_drv_config
|
||||||
<start name="acpi">
|
|
||||||
<resource name="RAM" quantum="6M" constrain_phys="yes"/>
|
|
||||||
<binary name="acpi_drv"/>
|
|
||||||
<provides>
|
|
||||||
<service name="PCI"/>
|
|
||||||
<service name="IRQ" />
|
|
||||||
</provides>
|
|
||||||
<route>
|
|
||||||
<service name="PCI"> <any-child /> </service>
|
|
||||||
<service name="IRQ"> <parent /> </service>
|
|
||||||
<any-service> <parent/> <any-child /> </any-service>
|
|
||||||
</route>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if [expr ![have_spec acpi] && [have_spec pci]] config {
|
|
||||||
<start name="pci_drv">
|
|
||||||
<resource name="RAM" quantum="2M" constrain_phys="yes"/>
|
|
||||||
<provides> <service name="PCI"/> </provides>
|
|
||||||
</start> }
|
|
||||||
|
|
||||||
append config {
|
append config {
|
||||||
</config>
|
</config>
|
||||||
@ -115,9 +95,7 @@ set boot_modules {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# platform-specific modules
|
# platform-specific modules
|
||||||
lappend_if [have_spec pci] boot_modules pci_drv
|
append_platform_drv_boot_modules
|
||||||
lappend_if [have_spec acpi] boot_modules acpi_drv
|
|
||||||
lappend_if [have_spec nova] boot_modules pci_device_pd
|
|
||||||
|
|
||||||
build_boot_image $boot_modules
|
build_boot_image $boot_modules
|
||||||
|
|
||||||
|
@ -1,9 +1,14 @@
|
|||||||
build {
|
set build_components {
|
||||||
core init drivers/timer
|
core init drivers/timer
|
||||||
server/terminal test/terminal_echo
|
server/terminal test/terminal_echo
|
||||||
drivers/framebuffer drivers/pci drivers/input
|
drivers/framebuffer drivers/input
|
||||||
}
|
}
|
||||||
|
|
||||||
|
source ${genode_dir}/repos/base/run/platform_drv.inc
|
||||||
|
append_platform_drv_build_components
|
||||||
|
|
||||||
|
build $build_components
|
||||||
|
|
||||||
create_boot_directory
|
create_boot_directory
|
||||||
|
|
||||||
append config {
|
append config {
|
||||||
@ -22,7 +27,7 @@ append config {
|
|||||||
<service name="SIGNAL"/>
|
<service name="SIGNAL"/>
|
||||||
</parent-provides>
|
</parent-provides>
|
||||||
<default-route>
|
<default-route>
|
||||||
<any-service> <any-child/> <parent/> </any-service>
|
<any-service> <parent/> <any-child/> </any-service>
|
||||||
</default-route>
|
</default-route>
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -35,11 +40,7 @@ append_if [have_spec sdl] config {
|
|||||||
</provides>
|
</provides>
|
||||||
</start>}
|
</start>}
|
||||||
|
|
||||||
append_if [have_spec pci] config {
|
append_platform_drv_config
|
||||||
<start name="pci_drv">
|
|
||||||
<resource name="RAM" quantum="1M"/>
|
|
||||||
<provides><service name="PCI"/></provides>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if [have_spec framebuffer] config {
|
append_if [have_spec framebuffer] config {
|
||||||
<start name="fb_drv">
|
<start name="fb_drv">
|
||||||
@ -85,10 +86,10 @@ set boot_modules {
|
|||||||
|
|
||||||
# platform-specific modules
|
# platform-specific modules
|
||||||
lappend_if [have_spec linux] boot_modules fb_sdl
|
lappend_if [have_spec linux] boot_modules fb_sdl
|
||||||
lappend_if [have_spec pci] boot_modules pci_drv
|
|
||||||
lappend_if [have_spec framebuffer] boot_modules fb_drv
|
lappend_if [have_spec framebuffer] boot_modules fb_drv
|
||||||
lappend_if [have_spec ps2] boot_modules ps2_drv
|
lappend_if [have_spec ps2] boot_modules ps2_drv
|
||||||
|
|
||||||
|
append_platform_drv_boot_modules
|
||||||
|
|
||||||
build_boot_image $boot_modules
|
build_boot_image $boot_modules
|
||||||
|
|
||||||
|
@ -4,13 +4,12 @@
|
|||||||
# \date 2012-05-21
|
# \date 2012-05-21
|
||||||
#
|
#
|
||||||
|
|
||||||
build {
|
set build_components {
|
||||||
core
|
core
|
||||||
init
|
init
|
||||||
drivers/framebuffer
|
drivers/framebuffer
|
||||||
drivers/input
|
drivers/input
|
||||||
drivers/timer
|
drivers/timer
|
||||||
drivers/pci
|
|
||||||
server/nitpicker
|
server/nitpicker
|
||||||
server/nit_fb
|
server/nit_fb
|
||||||
server/terminal
|
server/terminal
|
||||||
@ -19,6 +18,12 @@ build {
|
|||||||
app/launchpad
|
app/launchpad
|
||||||
app/pointer
|
app/pointer
|
||||||
}
|
}
|
||||||
|
|
||||||
|
source ${genode_dir}/repos/base/run/platform_drv.inc
|
||||||
|
append_platform_drv_build_components
|
||||||
|
|
||||||
|
build $build_components
|
||||||
|
|
||||||
create_boot_directory
|
create_boot_directory
|
||||||
|
|
||||||
append config {
|
append config {
|
||||||
@ -40,7 +45,7 @@ append config {
|
|||||||
<service name="Nitpicker"> <child name="nitpicker"/> </service>
|
<service name="Nitpicker"> <child name="nitpicker"/> </service>
|
||||||
<service name="Timer"> <child name="timer"/> </service>
|
<service name="Timer"> <child name="timer"/> </service>
|
||||||
<service name="Terminal"> <child name="terminal"/> </service>
|
<service name="Terminal"> <child name="terminal"/> </service>
|
||||||
<service name="PCI"> <child name="pci_drv"/> </service>
|
<service name="Platform"> <child name="platform_drv"/> </service>
|
||||||
<any-service><parent/></any-service>
|
<any-service><parent/></any-service>
|
||||||
</default-route>
|
</default-route>
|
||||||
<start name="timer">
|
<start name="timer">
|
||||||
@ -73,11 +78,7 @@ append_if [have_spec sdl] config {
|
|||||||
</route>
|
</route>
|
||||||
</start>}
|
</start>}
|
||||||
|
|
||||||
append_if [have_spec pci] config {
|
append_platform_drv_config
|
||||||
<start name="pci_drv">
|
|
||||||
<resource name="RAM" quantum="1M"/>
|
|
||||||
<provides><service name="PCI"/></provides>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if [have_spec framebuffer] config {
|
append_if [have_spec framebuffer] config {
|
||||||
<start name="fb_drv">
|
<start name="fb_drv">
|
||||||
@ -86,8 +87,7 @@ append_if [have_spec framebuffer] config {
|
|||||||
</start>}
|
</start>}
|
||||||
|
|
||||||
append_if [have_spec ps2] config {
|
append_if [have_spec ps2] config {
|
||||||
<start name="input_drv">
|
<start name="ps2_drv">
|
||||||
<binary name="ps2_drv"/>
|
|
||||||
<resource name="RAM" quantum="1M"/>
|
<resource name="RAM" quantum="1M"/>
|
||||||
<provides><service name="Input"/></provides>
|
<provides><service name="Input"/></provides>
|
||||||
</start> }
|
</start> }
|
||||||
@ -103,7 +103,7 @@ append_if [expr ! [have_spec sdl]] config {
|
|||||||
<policy label="" domain=""/>
|
<policy label="" domain=""/>
|
||||||
</config>
|
</config>
|
||||||
<route>
|
<route>
|
||||||
<service name="Input"> <child name="input_drv"/> </service>
|
<service name="Input"> <child name="ps2_drv"/> </service>
|
||||||
<service name="Framebuffer"> <child name="fb_drv"/> </service>
|
<service name="Framebuffer"> <child name="fb_drv"/> </service>
|
||||||
<any-service> <parent/> <any-child/> </any-service>
|
<any-service> <parent/> <any-child/> </any-service>
|
||||||
</route>
|
</route>
|
||||||
@ -164,10 +164,11 @@ set boot_modules {
|
|||||||
|
|
||||||
# platform-specific modules
|
# platform-specific modules
|
||||||
lappend_if [have_spec linux] boot_modules fb_sdl
|
lappend_if [have_spec linux] boot_modules fb_sdl
|
||||||
lappend_if [have_spec pci] boot_modules pci_drv
|
|
||||||
lappend_if [have_spec framebuffer] boot_modules fb_drv
|
lappend_if [have_spec framebuffer] boot_modules fb_drv
|
||||||
lappend_if [have_spec ps2] boot_modules ps2_drv
|
lappend_if [have_spec ps2] boot_modules ps2_drv
|
||||||
|
|
||||||
|
append_platform_drv_boot_modules
|
||||||
|
|
||||||
build_boot_image $boot_modules
|
build_boot_image $boot_modules
|
||||||
|
|
||||||
append qemu_args " -m 256 "
|
append qemu_args " -m 256 "
|
||||||
|
@ -10,7 +10,7 @@ set build_components {
|
|||||||
drivers/timer
|
drivers/timer
|
||||||
server/wm app/decorator app/floating_window_layouter
|
server/wm app/decorator app/floating_window_layouter
|
||||||
server/nitpicker app/pointer server/report_rom
|
server/nitpicker app/pointer server/report_rom
|
||||||
drivers/framebuffer drivers/pci drivers/input
|
drivers/framebuffer drivers/input
|
||||||
test/nitpicker
|
test/nitpicker
|
||||||
app/backdrop
|
app/backdrop
|
||||||
app/launchpad
|
app/launchpad
|
||||||
@ -19,9 +19,9 @@ set build_components {
|
|||||||
|
|
||||||
lappend_if [have_spec usb] build_components drivers/usb
|
lappend_if [have_spec usb] build_components drivers/usb
|
||||||
lappend_if [have_spec gpio] build_components drivers/gpio
|
lappend_if [have_spec gpio] build_components drivers/gpio
|
||||||
lappend_if [have_spec imx53] build_components drivers/platform
|
|
||||||
lappend_if [have_spec platform_arndale] build_components drivers/platform
|
source ${genode_dir}/repos/base/run/platform_drv.inc
|
||||||
lappend_if [have_spec platform_rpi] build_components drivers/platform
|
append_platform_drv_build_components
|
||||||
|
|
||||||
build $build_components
|
build $build_components
|
||||||
|
|
||||||
@ -59,11 +59,7 @@ append_if [have_spec sdl] config {
|
|||||||
</provides>
|
</provides>
|
||||||
</start>}
|
</start>}
|
||||||
|
|
||||||
append_if [have_spec pci] config {
|
append_platform_drv_config
|
||||||
<start name="pci_drv">
|
|
||||||
<resource name="RAM" quantum="1M"/>
|
|
||||||
<provides><service name="PCI"/></provides>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if [have_spec framebuffer] config {
|
append_if [have_spec framebuffer] config {
|
||||||
<start name="fb_drv">
|
<start name="fb_drv">
|
||||||
@ -78,26 +74,7 @@ append_if [have_spec gpio] config {
|
|||||||
<config/>
|
<config/>
|
||||||
</start>}
|
</start>}
|
||||||
|
|
||||||
append_if [have_spec platform_arndale] config {
|
|
||||||
<start name="platform_drv">
|
|
||||||
<resource name="RAM" quantum="1M"/>
|
|
||||||
<provides><service name="Regulator"/></provides>
|
|
||||||
<config/>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if [have_spec platform_rpi] config {
|
|
||||||
<start name="platform_drv">
|
|
||||||
<resource name="RAM" quantum="1M"/>
|
|
||||||
<provides><service name="Platform"/></provides>
|
|
||||||
<config/>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if [have_spec imx53] config {
|
append_if [have_spec imx53] config {
|
||||||
<start name="platform_drv">
|
|
||||||
<resource name="RAM" quantum="1M"/>
|
|
||||||
<provides><service name="Platform"/></provides>
|
|
||||||
<config/>
|
|
||||||
</start>
|
|
||||||
<start name="input_drv">
|
<start name="input_drv">
|
||||||
<resource name="RAM" quantum="1M"/>
|
<resource name="RAM" quantum="1M"/>
|
||||||
<provides><service name="Input"/></provides>
|
<provides><service name="Input"/></provides>
|
||||||
@ -241,15 +218,13 @@ set boot_modules {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# platform-specific modules
|
# platform-specific modules
|
||||||
|
append_platform_drv_boot_modules
|
||||||
|
|
||||||
lappend_if [have_spec linux] boot_modules fb_sdl
|
lappend_if [have_spec linux] boot_modules fb_sdl
|
||||||
lappend_if [have_spec pci] boot_modules pci_drv
|
|
||||||
lappend_if [have_spec ps2] boot_modules ps2_drv
|
lappend_if [have_spec ps2] boot_modules ps2_drv
|
||||||
lappend_if [have_spec framebuffer] boot_modules fb_drv
|
lappend_if [have_spec framebuffer] boot_modules fb_drv
|
||||||
lappend_if [have_spec usb] boot_modules usb_drv
|
lappend_if [have_spec usb] boot_modules usb_drv
|
||||||
lappend_if [have_spec gpio] boot_modules gpio_drv
|
lappend_if [have_spec gpio] boot_modules gpio_drv
|
||||||
lappend_if [have_spec imx53] boot_modules platform_drv
|
|
||||||
lappend_if [have_spec platform_arndale] boot_modules platform_drv
|
|
||||||
lappend_if [have_spec platform_rpi] boot_modules platform_drv
|
|
||||||
lappend_if [have_spec imx53] boot_modules input_drv
|
lappend_if [have_spec imx53] boot_modules input_drv
|
||||||
|
|
||||||
build_boot_image $boot_modules
|
build_boot_image $boot_modules
|
||||||
|
@ -2,14 +2,19 @@
|
|||||||
# Build
|
# Build
|
||||||
#
|
#
|
||||||
|
|
||||||
build {
|
set build_components {
|
||||||
core init
|
core init
|
||||||
drivers/timer
|
drivers/timer
|
||||||
drivers/framebuffer drivers/pci drivers/input drivers/audio_out
|
drivers/framebuffer drivers/input drivers/audio_out
|
||||||
server/mixer
|
server/mixer
|
||||||
app/avplay drivers/acpi
|
app/avplay drivers/acpi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
source ${genode_dir}/repos/base/run/platform_drv.inc
|
||||||
|
append_platform_drv_build_components
|
||||||
|
|
||||||
|
build $build_components
|
||||||
|
|
||||||
#
|
#
|
||||||
# Download media file
|
# Download media file
|
||||||
#
|
#
|
||||||
@ -55,40 +60,7 @@ append_if [have_spec sdl] config {
|
|||||||
</provides>
|
</provides>
|
||||||
</start>}
|
</start>}
|
||||||
|
|
||||||
append_if [have_spec acpi] config {
|
append_platform_drv_config
|
||||||
<start name="acpi">
|
|
||||||
<resource name="RAM" quantum="8M" constrain_phys="yes"/>
|
|
||||||
<binary name="acpi_drv"/>
|
|
||||||
<provides>
|
|
||||||
<service name="PCI"/>
|
|
||||||
<service name="IRQ" />
|
|
||||||
</provides>
|
|
||||||
<route>
|
|
||||||
<any-service> <parent/> <any-child /> </any-service>
|
|
||||||
</route>
|
|
||||||
<config>
|
|
||||||
<policy label="acpi_drv"> <pci class="ALL"/> </policy>
|
|
||||||
<policy label="ps2_drv"> <device name="PS2"/> </policy>
|
|
||||||
<policy label="usb_drv"> <pci class="USB"/> </policy>
|
|
||||||
<policy label="fb_drv"> <pci class="VGA"/> </policy>
|
|
||||||
<policy label="audio_out_drv"> <pci class="AUDIO"/> </policy>
|
|
||||||
</config>
|
|
||||||
</start>
|
|
||||||
}
|
|
||||||
|
|
||||||
append_if [expr [have_spec pci] && ![have_spec acpi]] config {
|
|
||||||
<start name="pci_drv">
|
|
||||||
<resource name="RAM" quantum="2M" constrain_phys="yes"/>
|
|
||||||
<provides>
|
|
||||||
<service name="PCI"/>
|
|
||||||
</provides>
|
|
||||||
<policy label="acpi_drv"> <pci class="ALL"/> </policy>
|
|
||||||
<policy label="ps2_drv"> <device name="PS2"/> </policy>
|
|
||||||
<policy label="usb_drv"> <pci class="USB"/> </policy>
|
|
||||||
<policy label="fb_drv"> <pci class="VGA"/> </policy>
|
|
||||||
<policy label="audio_out_drv"> <pci class="AUDIO"/> </policy>
|
|
||||||
</start>
|
|
||||||
}
|
|
||||||
|
|
||||||
append_if [have_spec framebuffer] config {
|
append_if [have_spec framebuffer] config {
|
||||||
<start name="fb_drv">
|
<start name="fb_drv">
|
||||||
@ -139,7 +111,7 @@ append config {
|
|||||||
</libc>
|
</libc>
|
||||||
</config>
|
</config>
|
||||||
<route>
|
<route>
|
||||||
<service name="PCI"> <any-child /> </service>
|
<service name="Platform"> <any-child /> </service>
|
||||||
<service name="Audio_out"> <child name="mixer"/> </service>
|
<service name="Audio_out"> <child name="mixer"/> </service>
|
||||||
<any-service> <parent/> <any-child /> </any-service>
|
<any-service> <parent/> <any-child /> </any-service>
|
||||||
</route>
|
</route>
|
||||||
@ -161,11 +133,10 @@ set boot_modules {
|
|||||||
}
|
}
|
||||||
|
|
||||||
lappend_if [have_spec linux] boot_modules fb_sdl
|
lappend_if [have_spec linux] boot_modules fb_sdl
|
||||||
lappend_if [have_spec pci] boot_modules pci_drv
|
|
||||||
lappend_if [have_spec pci] boot_modules acpi_drv
|
|
||||||
lappend_if [have_spec framebuffer] boot_modules fb_drv
|
lappend_if [have_spec framebuffer] boot_modules fb_drv
|
||||||
lappend_if [have_spec ps2] boot_modules ps2_drv
|
lappend_if [have_spec ps2] boot_modules ps2_drv
|
||||||
lappend_if [have_spec nova] boot_modules pci_device_pd
|
|
||||||
|
append_platform_drv_boot_modules
|
||||||
|
|
||||||
build_boot_image $boot_modules
|
build_boot_image $boot_modules
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@ build {
|
|||||||
server/nitpicker server/nit_fb
|
server/nitpicker server/nit_fb
|
||||||
app/launchpad app/pointer
|
app/launchpad app/pointer
|
||||||
app/eglgears
|
app/eglgears
|
||||||
drivers/framebuffer drivers/pci drivers/input
|
drivers/framebuffer drivers/input
|
||||||
lib/gallium
|
lib/gallium
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -39,11 +39,7 @@ append_if [have_spec sdl] config {
|
|||||||
</provides>
|
</provides>
|
||||||
</start>}
|
</start>}
|
||||||
|
|
||||||
append_if [have_spec pci] config {
|
append_platform_drv_config
|
||||||
<start name="pci_drv">
|
|
||||||
<resource name="RAM" quantum="1M"/>
|
|
||||||
<provides><service name="PCI"/></provides>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if [have_spec framebuffer] config {
|
append_if [have_spec framebuffer] config {
|
||||||
<start name="fb_drv">
|
<start name="fb_drv">
|
||||||
@ -92,7 +88,7 @@ append config {
|
|||||||
<service name="RM"/>
|
<service name="RM"/>
|
||||||
<service name="CPU"/>
|
<service name="CPU"/>
|
||||||
<service name="LOG"/>
|
<service name="LOG"/>
|
||||||
<service name="PCI"/>
|
<service name="Platform"/>
|
||||||
<service name="SIGNAL"/>
|
<service name="SIGNAL"/>
|
||||||
<service name="Nitpicker"/>
|
<service name="Nitpicker"/>
|
||||||
<service name="Timer"/>
|
<service name="Timer"/>
|
||||||
@ -128,11 +124,12 @@ set boot_modules {
|
|||||||
}
|
}
|
||||||
|
|
||||||
lappend_if [have_spec linux] boot_modules fb_sdl
|
lappend_if [have_spec linux] boot_modules fb_sdl
|
||||||
lappend_if [have_spec pci] boot_modules pci_drv
|
|
||||||
lappend_if [have_spec framebuffer] boot_modules fb_drv
|
lappend_if [have_spec framebuffer] boot_modules fb_drv
|
||||||
lappend_if [have_spec ps2] boot_modules ps2_drv
|
lappend_if [have_spec ps2] boot_modules ps2_drv
|
||||||
lappend_if [have_spec i915] boot_modules gallium-i915.lib.so
|
lappend_if [have_spec i915] boot_modules gallium-i915.lib.so
|
||||||
|
|
||||||
|
append_platform_drv_boot_modules
|
||||||
|
|
||||||
build_boot_image $boot_modules
|
build_boot_image $boot_modules
|
||||||
|
|
||||||
append qemu_args " -m 768"
|
append qemu_args " -m 768"
|
||||||
|
@ -28,12 +28,17 @@ requires_installation_of lynx
|
|||||||
# Build
|
# Build
|
||||||
#
|
#
|
||||||
|
|
||||||
build {
|
set build_components {
|
||||||
core init
|
core init
|
||||||
drivers/acpi drivers/pci drivers/timer drivers/nic
|
drivers/timer drivers/nic
|
||||||
test/lwip/http_srv_tracing
|
test/lwip/http_srv_tracing
|
||||||
}
|
}
|
||||||
|
|
||||||
|
source ${genode_dir}/repos/base/run/platform_drv.inc
|
||||||
|
append_platform_drv_build_components
|
||||||
|
|
||||||
|
build $build_components
|
||||||
|
|
||||||
create_boot_directory
|
create_boot_directory
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -75,25 +80,7 @@ set config {
|
|||||||
</config>
|
</config>
|
||||||
</start>}
|
</start>}
|
||||||
|
|
||||||
append_if [have_spec acpi] config {
|
append_platform_drv_config
|
||||||
<start name="acpi">
|
|
||||||
<resource name="RAM" quantum="6M" constrain_phys="yes"/>
|
|
||||||
<binary name="acpi_drv"/>
|
|
||||||
<provides>
|
|
||||||
<service name="PCI"/>
|
|
||||||
<service name="IRQ" />
|
|
||||||
</provides>
|
|
||||||
<route>
|
|
||||||
<service name="PCI"> <any-child /> </service>
|
|
||||||
<any-service> <parent/> <any-child /> </any-service>
|
|
||||||
</route>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if [expr ![have_spec acpi] && [have_spec pci]] config {
|
|
||||||
<start name="pci_drv">
|
|
||||||
<resource name="RAM" quantum="3M" constrain_phys="yes"/>
|
|
||||||
<provides> <service name="PCI"/> </provides>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append config {
|
append config {
|
||||||
</config>
|
</config>
|
||||||
@ -114,8 +101,7 @@ set boot_modules {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# platform-specific modules
|
# platform-specific modules
|
||||||
lappend_if [have_spec pci] boot_modules pci_drv
|
append_platform_drv_boot_modules
|
||||||
lappend_if [have_spec acpi] boot_modules acpi_drv
|
|
||||||
|
|
||||||
build_boot_image $boot_modules
|
build_boot_image $boot_modules
|
||||||
|
|
||||||
|
@ -10,6 +10,7 @@ if {![have_include power_on/qemu]} {
|
|||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Build
|
# Build
|
||||||
#
|
#
|
||||||
@ -20,11 +21,12 @@ set build_components {
|
|||||||
test/libc_block
|
test/libc_block
|
||||||
}
|
}
|
||||||
|
|
||||||
lappend_if [have_spec pci] build_components drivers/pci
|
|
||||||
lappend_if [have_spec acpi] build_components drivers/acpi
|
|
||||||
lappend_if $use_ahci_drv build_components drivers/ahci
|
lappend_if $use_ahci_drv build_components drivers/ahci
|
||||||
lappend_if $use_sd_card_drv build_components drivers/sd_card
|
lappend_if $use_sd_card_drv build_components drivers/sd_card
|
||||||
|
|
||||||
|
source ${genode_dir}/repos/base/run/platform_drv.inc
|
||||||
|
append_platform_drv_build_components
|
||||||
|
|
||||||
build $build_components
|
build $build_components
|
||||||
create_boot_directory
|
create_boot_directory
|
||||||
|
|
||||||
@ -66,28 +68,9 @@ set config {
|
|||||||
</vfs>
|
</vfs>
|
||||||
</libc>
|
</libc>
|
||||||
</config>
|
</config>
|
||||||
</start>
|
|
||||||
}
|
|
||||||
|
|
||||||
append_if [have_spec acpi] config {
|
|
||||||
<start name="acpi">
|
|
||||||
<resource name="RAM" quantum="8M" constrain_phys="yes"/>
|
|
||||||
<binary name="acpi_drv"/>
|
|
||||||
<provides>
|
|
||||||
<service name="PCI"/>
|
|
||||||
<service name="IRQ" />
|
|
||||||
</provides>
|
|
||||||
<route>
|
|
||||||
<service name="PCI"> <any-child /> </service>
|
|
||||||
<any-service> <parent/> <any-child /> </any-service>
|
|
||||||
</route>
|
|
||||||
</start>}
|
</start>}
|
||||||
|
|
||||||
append_if [expr ![have_spec acpi] && [have_spec pci]] config {
|
append_platform_drv_config
|
||||||
<start name="pci_drv">
|
|
||||||
<resource name="RAM" quantum="5M" constrain_phys="yes"/>
|
|
||||||
<provides><service name="PCI"/></provides>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if $use_ahci_drv config {
|
append_if $use_ahci_drv config {
|
||||||
<start name="ahci">
|
<start name="ahci">
|
||||||
@ -121,11 +104,11 @@ set boot_modules {
|
|||||||
test-libc_block
|
test-libc_block
|
||||||
}
|
}
|
||||||
|
|
||||||
lappend_if [have_spec pci] boot_modules pci_drv
|
|
||||||
lappend_if [have_spec acpi] boot_modules acpi_drv
|
|
||||||
lappend_if $use_ahci_drv boot_modules ahci
|
lappend_if $use_ahci_drv boot_modules ahci
|
||||||
lappend_if $use_sd_card_drv boot_modules sd_card_drv
|
lappend_if $use_sd_card_drv boot_modules sd_card_drv
|
||||||
|
|
||||||
|
append_platform_drv_boot_modules
|
||||||
|
|
||||||
build_boot_image $boot_modules
|
build_boot_image $boot_modules
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -22,11 +22,12 @@ set build_components {
|
|||||||
test/libc_vfs
|
test/libc_vfs
|
||||||
}
|
}
|
||||||
|
|
||||||
lappend_if [have_spec pci] build_components drivers/pci
|
|
||||||
lappend_if [have_spec acpi] build_components drivers/acpi
|
|
||||||
lappend_if $use_ahci_drv build_components drivers/ahci
|
lappend_if $use_ahci_drv build_components drivers/ahci
|
||||||
lappend_if $use_sd_card_drv build_components drivers/sd_card
|
lappend_if $use_sd_card_drv build_components drivers/sd_card
|
||||||
|
|
||||||
|
source ${genode_dir}/repos/base/run/platform_drv.inc
|
||||||
|
append_platform_drv_build_components
|
||||||
|
|
||||||
build $build_components
|
build $build_components
|
||||||
create_boot_directory
|
create_boot_directory
|
||||||
|
|
||||||
@ -71,34 +72,9 @@ set config {
|
|||||||
</vfs>
|
</vfs>
|
||||||
</libc>
|
</libc>
|
||||||
</config>
|
</config>
|
||||||
</start>
|
|
||||||
}
|
|
||||||
|
|
||||||
append_if [have_spec acpi] config {
|
|
||||||
<start name="acpi">
|
|
||||||
<resource name="RAM" quantum="8M" constrain_phys="yes"/>
|
|
||||||
<binary name="acpi_drv"/>
|
|
||||||
<provides>
|
|
||||||
<service name="PCI"/>
|
|
||||||
<service name="IRQ" />
|
|
||||||
</provides>
|
|
||||||
<route>
|
|
||||||
<any-service> <parent/> <any-child /> </any-service>
|
|
||||||
</route>
|
|
||||||
<config>
|
|
||||||
<policy label="acpi_drv"><pci class="ALL" /></policy>
|
|
||||||
<policy label="ahci_drv"><pci class="AHCI" /></policy>
|
|
||||||
</config>
|
|
||||||
</start>}
|
</start>}
|
||||||
|
|
||||||
append_if [expr ![have_spec acpi] && [have_spec pci]] config {
|
append_platform_drv_config
|
||||||
<start name="pci_drv">
|
|
||||||
<resource name="RAM" quantum="5M" constrain_phys="yes"/>
|
|
||||||
<provides><service name="PCI"/></provides>
|
|
||||||
<config>
|
|
||||||
<policy label="ahci_drv"/><pci class="AHCI" /></policy>
|
|
||||||
</config>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if $use_ahci_drv config {
|
append_if $use_ahci_drv config {
|
||||||
<start name="ahci_drv">
|
<start name="ahci_drv">
|
||||||
@ -134,11 +110,11 @@ set boot_modules {
|
|||||||
test-libc_vfs
|
test-libc_vfs
|
||||||
}
|
}
|
||||||
|
|
||||||
lappend_if [have_spec pci] boot_modules pci_drv
|
|
||||||
lappend_if [have_spec acpi] boot_modules acpi_drv
|
|
||||||
lappend_if $use_ahci_drv boot_modules ahci_drv
|
lappend_if $use_ahci_drv boot_modules ahci_drv
|
||||||
lappend_if $use_sd_card_drv boot_modules sd_card_drv
|
lappend_if $use_sd_card_drv boot_modules sd_card_drv
|
||||||
|
|
||||||
|
append_platform_drv_boot_modules
|
||||||
|
|
||||||
build_boot_image $boot_modules
|
build_boot_image $boot_modules
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -1,10 +1,15 @@
|
|||||||
build {
|
set build_components {
|
||||||
core init
|
core init
|
||||||
drivers/timer
|
drivers/timer
|
||||||
app/mupdf
|
app/mupdf
|
||||||
drivers/framebuffer drivers/pci drivers/input
|
drivers/framebuffer drivers/input
|
||||||
}
|
}
|
||||||
|
|
||||||
|
source ${genode_dir}/repos/base/run/platform_drv.inc
|
||||||
|
append_platform_drv_build_components
|
||||||
|
|
||||||
|
build $build_components
|
||||||
|
|
||||||
create_boot_directory
|
create_boot_directory
|
||||||
|
|
||||||
set config {
|
set config {
|
||||||
@ -36,11 +41,7 @@ append_if [have_spec sdl] config {
|
|||||||
</provides>
|
</provides>
|
||||||
</start>}
|
</start>}
|
||||||
|
|
||||||
append_if [have_spec pci] config {
|
append_platform_drv_config
|
||||||
<start name="pci_drv">
|
|
||||||
<resource name="RAM" quantum="1M"/>
|
|
||||||
<provides><service name="PCI"/></provides>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if [have_spec framebuffer] config {
|
append_if [have_spec framebuffer] config {
|
||||||
<start name="fb_drv">
|
<start name="fb_drv">
|
||||||
@ -98,10 +99,11 @@ set boot_modules {
|
|||||||
}
|
}
|
||||||
|
|
||||||
lappend_if [have_spec linux] boot_modules fb_sdl
|
lappend_if [have_spec linux] boot_modules fb_sdl
|
||||||
lappend_if [have_spec pci] boot_modules pci_drv
|
|
||||||
lappend_if [have_spec framebuffer] boot_modules fb_drv
|
lappend_if [have_spec framebuffer] boot_modules fb_drv
|
||||||
lappend_if [have_spec ps2] boot_modules ps2_drv
|
lappend_if [have_spec ps2] boot_modules ps2_drv
|
||||||
|
|
||||||
|
append_platform_drv_boot_modules
|
||||||
|
|
||||||
build_boot_image $boot_modules
|
build_boot_image $boot_modules
|
||||||
|
|
||||||
append qemu_args " -m 768"
|
append qemu_args " -m 768"
|
||||||
|
@ -6,9 +6,12 @@ set build_components {
|
|||||||
core init
|
core init
|
||||||
drivers/timer
|
drivers/timer
|
||||||
test/sdl
|
test/sdl
|
||||||
drivers/framebuffer drivers/pci drivers/input
|
drivers/framebuffer drivers/input
|
||||||
}
|
}
|
||||||
|
|
||||||
|
source ${genode_dir}/repos/base/run/platform_drv.inc
|
||||||
|
append_platform_drv_build_components
|
||||||
|
|
||||||
build $build_components
|
build $build_components
|
||||||
|
|
||||||
create_boot_directory
|
create_boot_directory
|
||||||
@ -45,11 +48,7 @@ append_if [have_spec sdl] config {
|
|||||||
</provides>
|
</provides>
|
||||||
</start>}
|
</start>}
|
||||||
|
|
||||||
append_if [have_spec pci] config {
|
append_platform_drv_config
|
||||||
<start name="pci_drv">
|
|
||||||
<resource name="RAM" quantum="1M"/>
|
|
||||||
<provides><service name="PCI"/></provides>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if [have_spec framebuffer] config {
|
append_if [have_spec framebuffer] config {
|
||||||
<start name="fb_drv">
|
<start name="fb_drv">
|
||||||
@ -94,10 +93,11 @@ set boot_modules {
|
|||||||
|
|
||||||
# platform-specific modules
|
# platform-specific modules
|
||||||
lappend_if [have_spec linux] boot_modules fb_sdl
|
lappend_if [have_spec linux] boot_modules fb_sdl
|
||||||
lappend_if [have_spec pci] boot_modules pci_drv
|
|
||||||
lappend_if [have_spec framebuffer] boot_modules fb_drv
|
lappend_if [have_spec framebuffer] boot_modules fb_drv
|
||||||
lappend_if [have_spec ps2] boot_modules ps2_drv
|
lappend_if [have_spec ps2] boot_modules ps2_drv
|
||||||
|
|
||||||
|
append_platform_drv_boot_modules
|
||||||
|
|
||||||
build_boot_image $boot_modules
|
build_boot_image $boot_modules
|
||||||
|
|
||||||
append qemu_args " -m 256 "
|
append qemu_args " -m 256 "
|
||||||
|
@ -4,13 +4,16 @@
|
|||||||
|
|
||||||
set build_components {
|
set build_components {
|
||||||
core init
|
core init
|
||||||
drivers/timer drivers/pci drivers/nic
|
drivers/timer drivers/nic
|
||||||
server/nic_bridge
|
server/nic_bridge
|
||||||
test/lwip/http_srv_static
|
test/lwip/http_srv_static
|
||||||
test/lwip/http_clnt
|
test/lwip/http_clnt
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
source ${genode_dir}/repos/base/run/platform_drv.inc
|
||||||
|
append_platform_drv_build_components
|
||||||
|
|
||||||
build $build_components
|
build $build_components
|
||||||
|
|
||||||
create_boot_directory
|
create_boot_directory
|
||||||
@ -38,12 +41,7 @@ append config {
|
|||||||
<any-service> <parent/> <any-child/> </any-service>
|
<any-service> <parent/> <any-child/> </any-service>
|
||||||
</default-route>}
|
</default-route>}
|
||||||
|
|
||||||
append_if [have_spec pci] config {
|
append_platform_drv_config
|
||||||
<start name="pci_drv">
|
|
||||||
<resource name="RAM" quantum="1M"/>
|
|
||||||
<provides><service name="PCI"/></provides>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
|
|
||||||
append config {
|
append config {
|
||||||
<start name="timer">
|
<start name="timer">
|
||||||
@ -112,9 +110,10 @@ set boot_modules {
|
|||||||
|
|
||||||
# platform-specific modules
|
# platform-specific modules
|
||||||
lappend_if [have_spec linux] boot_modules fb_sdl
|
lappend_if [have_spec linux] boot_modules fb_sdl
|
||||||
lappend_if [have_spec pci] boot_modules pci_drv
|
|
||||||
lappend_if [have_spec ps2] boot_modules ps2_drv
|
lappend_if [have_spec ps2] boot_modules ps2_drv
|
||||||
|
|
||||||
|
append_platform_drv_boot_modules
|
||||||
|
|
||||||
build_boot_image $boot_modules
|
build_boot_image $boot_modules
|
||||||
|
|
||||||
append qemu_args " -m 512 "
|
append qemu_args " -m 512 "
|
||||||
|
@ -4,13 +4,16 @@
|
|||||||
|
|
||||||
set build_components {
|
set build_components {
|
||||||
core init
|
core init
|
||||||
drivers/timer drivers/input drivers/pci drivers/nic
|
drivers/timer drivers/input drivers/nic
|
||||||
server/nic_bridge
|
server/nic_bridge
|
||||||
app/lighttpd
|
app/lighttpd
|
||||||
test/lwip/http_clnt
|
test/lwip/http_clnt
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
source ${genode_dir}/repos/base/run/platform_drv.inc
|
||||||
|
append_platform_drv_build_components
|
||||||
|
|
||||||
build $build_components
|
build $build_components
|
||||||
|
|
||||||
create_boot_directory
|
create_boot_directory
|
||||||
@ -38,12 +41,7 @@ append config {
|
|||||||
<any-service> <parent/> <any-child/> </any-service>
|
<any-service> <parent/> <any-child/> </any-service>
|
||||||
</default-route>}
|
</default-route>}
|
||||||
|
|
||||||
append_if [have_spec pci] config {
|
append_platform_drv_config
|
||||||
<start name="pci_drv">
|
|
||||||
<resource name="RAM" quantum="1M"/>
|
|
||||||
<provides><service name="PCI"/></provides>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
|
|
||||||
append config {
|
append config {
|
||||||
<start name="timer">
|
<start name="timer">
|
||||||
@ -155,9 +153,10 @@ set boot_modules {
|
|||||||
|
|
||||||
# platform-specific modules
|
# platform-specific modules
|
||||||
lappend_if [have_spec linux] boot_modules fb_sdl
|
lappend_if [have_spec linux] boot_modules fb_sdl
|
||||||
lappend_if [have_spec pci] boot_modules pci_drv
|
|
||||||
lappend_if [have_spec ps2] boot_modules ps2_drv
|
lappend_if [have_spec ps2] boot_modules ps2_drv
|
||||||
|
|
||||||
|
append_platform_drv_boot_modules
|
||||||
|
|
||||||
build_boot_image $boot_modules
|
build_boot_image $boot_modules
|
||||||
|
|
||||||
append qemu_args " -m 512 "
|
append qemu_args " -m 512 "
|
||||||
|
@ -15,14 +15,16 @@ if {[have_spec hw_odroid_xu]} {
|
|||||||
|
|
||||||
set build_components {
|
set build_components {
|
||||||
core init
|
core init
|
||||||
drivers/pci drivers/timer drivers/nic
|
drivers/timer drivers/nic
|
||||||
test/lwip/pingpong/client
|
test/lwip/pingpong/client
|
||||||
}
|
}
|
||||||
|
|
||||||
lappend_if [expr [have_spec omap4] || [have_spec platform_arndale]] build_components drivers/usb
|
lappend_if [expr [have_spec omap4] || [have_spec platform_arndale]] build_components drivers/usb
|
||||||
lappend_if [have_spec platform_arndale] build_components drivers/platform
|
|
||||||
lappend_if [have_spec gpio] build_components drivers/gpio
|
lappend_if [have_spec gpio] build_components drivers/gpio
|
||||||
|
|
||||||
|
source ${genode_dir}/repos/base/run/platform_drv.inc
|
||||||
|
append_platform_drv_build_components
|
||||||
|
|
||||||
build $build_components
|
build $build_components
|
||||||
|
|
||||||
create_boot_directory
|
create_boot_directory
|
||||||
@ -54,12 +56,6 @@ set config {
|
|||||||
<provides> <service name="Timer"/> </provides>
|
<provides> <service name="Timer"/> </provides>
|
||||||
</start> }
|
</start> }
|
||||||
|
|
||||||
append_if [have_spec platform_arndale] config {
|
|
||||||
<start name="platform_drv">
|
|
||||||
<resource name="RAM" quantum="1M"/>
|
|
||||||
<provides><service name="Regulator"/></provides>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if [have_spec gpio] config {
|
append_if [have_spec gpio] config {
|
||||||
<start name="gpio_drv">
|
<start name="gpio_drv">
|
||||||
<resource name="RAM" quantum="4M"/>
|
<resource name="RAM" quantum="4M"/>
|
||||||
@ -84,11 +80,7 @@ append_if [expr ![have_spec omap4] && ![have_spec platform_arndale]] config {
|
|||||||
<provides><service name="Nic"/></provides>
|
<provides><service name="Nic"/></provides>
|
||||||
</start>}
|
</start>}
|
||||||
|
|
||||||
append_if [have_spec pci] config {
|
append_platform_drv_config
|
||||||
<start name="pci_drv">
|
|
||||||
<resource name="RAM" quantum="2M"/>
|
|
||||||
<provides> <service name="PCI"/> </provides>
|
|
||||||
</start> }
|
|
||||||
|
|
||||||
# establish serial connection with the server system
|
# establish serial connection with the server system
|
||||||
spawn picocom -b 115200 /dev/ttyUSB0
|
spawn picocom -b 115200 /dev/ttyUSB0
|
||||||
@ -143,12 +135,12 @@ set boot_modules {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# platform-specific modules
|
# platform-specific modules
|
||||||
lappend_if [have_spec pci] boot_modules pci_drv
|
|
||||||
lappend_if [expr [have_spec omap4] || [have_spec platform_arndale]] boot_modules usb_drv
|
lappend_if [expr [have_spec omap4] || [have_spec platform_arndale]] boot_modules usb_drv
|
||||||
lappend_if [expr ![have_spec omap4] && ![have_spec platform_arndale]] boot_modules nic_drv
|
lappend_if [expr ![have_spec omap4] && ![have_spec platform_arndale]] boot_modules nic_drv
|
||||||
lappend_if [have_spec platform_arndale] boot_modules platform_drv
|
|
||||||
lappend_if [have_spec gpio] boot_modules gpio_drv
|
lappend_if [have_spec gpio] boot_modules gpio_drv
|
||||||
|
|
||||||
|
append_platform_drv_boot_modules
|
||||||
|
|
||||||
build_boot_image $boot_modules
|
build_boot_image $boot_modules
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -15,14 +15,16 @@ if {[have_spec hw_odroid_xu]} {
|
|||||||
|
|
||||||
set build_components {
|
set build_components {
|
||||||
core init
|
core init
|
||||||
drivers/pci drivers/timer drivers/nic
|
drivers/timer drivers/nic
|
||||||
test/lwip/pingpong/server
|
test/lwip/pingpong/server
|
||||||
}
|
}
|
||||||
|
|
||||||
lappend_if [expr [have_spec omap4] || [have_spec platform_arndale]] build_components drivers/usb
|
lappend_if [expr [have_spec omap4] || [have_spec platform_arndale]] build_components drivers/usb
|
||||||
lappend_if [have_spec platform_arndale] build_components drivers/platform
|
|
||||||
lappend_if [have_spec gpio] build_components drivers/gpio
|
lappend_if [have_spec gpio] build_components drivers/gpio
|
||||||
|
|
||||||
|
source ${genode_dir}/repos/base/run/platform_drv.inc
|
||||||
|
append_platform_drv_build_components
|
||||||
|
|
||||||
build $build_components
|
build $build_components
|
||||||
|
|
||||||
create_boot_directory
|
create_boot_directory
|
||||||
@ -63,12 +65,6 @@ set config {
|
|||||||
</config>
|
</config>
|
||||||
</start> }
|
</start> }
|
||||||
|
|
||||||
append_if [have_spec platform_arndale] config {
|
|
||||||
<start name="platform_drv">
|
|
||||||
<resource name="RAM" quantum="1M"/>
|
|
||||||
<provides><service name="Regulator"/></provides>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if [have_spec gpio] config {
|
append_if [have_spec gpio] config {
|
||||||
<start name="gpio_drv">
|
<start name="gpio_drv">
|
||||||
<resource name="RAM" quantum="4M"/>
|
<resource name="RAM" quantum="4M"/>
|
||||||
@ -93,11 +89,7 @@ append_if [expr ![have_spec omap4] && ![have_spec platform_arndale]] config {
|
|||||||
<provides><service name="Nic"/></provides>
|
<provides><service name="Nic"/></provides>
|
||||||
</start>}
|
</start>}
|
||||||
|
|
||||||
append_if [have_spec pci] config {
|
append_platform_drv_config
|
||||||
<start name="pci_drv">
|
|
||||||
<resource name="RAM" quantum="2M"/>
|
|
||||||
<provides> <service name="PCI"/> </provides>
|
|
||||||
</start> }
|
|
||||||
|
|
||||||
append config {
|
append config {
|
||||||
</config>
|
</config>
|
||||||
@ -117,12 +109,12 @@ set boot_modules {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# platform-specific modules
|
# platform-specific modules
|
||||||
lappend_if [have_spec pci] boot_modules pci_drv
|
|
||||||
lappend_if [expr [have_spec omap4] || [have_spec platform_arndale]] boot_modules usb_drv
|
lappend_if [expr [have_spec omap4] || [have_spec platform_arndale]] boot_modules usb_drv
|
||||||
lappend_if [expr ![have_spec omap4] && ![have_spec platform_arndale]] boot_modules nic_drv
|
lappend_if [expr ![have_spec omap4] && ![have_spec platform_arndale]] boot_modules nic_drv
|
||||||
lappend_if [have_spec platform_arndale] boot_modules platform_drv
|
|
||||||
lappend_if [have_spec gpio] boot_modules gpio_drv
|
lappend_if [have_spec gpio] boot_modules gpio_drv
|
||||||
|
|
||||||
|
append_platform_drv_boot_modules
|
||||||
|
|
||||||
build_boot_image $boot_modules
|
build_boot_image $boot_modules
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -30,8 +30,8 @@ static const bool verbose = false;
|
|||||||
** PCI virtualization **
|
** PCI virtualization **
|
||||||
************************/
|
************************/
|
||||||
|
|
||||||
#include <pci_session/connection.h>
|
#include <platform_session/connection.h>
|
||||||
#include <pci_device/client.h>
|
#include <platform_device/client.h>
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
PCI_ADDR_REG = 0xcf8,
|
PCI_ADDR_REG = 0xcf8,
|
||||||
@ -42,22 +42,22 @@ class Pci_card
|
|||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
|
||||||
Pci::Connection _pci_drv;
|
Platform::Connection _pci_drv;
|
||||||
Pci::Device_client _device;
|
Platform::Device_client _device;
|
||||||
unsigned short _devfn;
|
unsigned short _devfn;
|
||||||
|
|
||||||
Pci::Device_capability _find_vga_card()
|
Platform::Device_capability _find_vga_card()
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Iterate through all accessible devices.
|
* Iterate through all accessible devices.
|
||||||
*/
|
*/
|
||||||
Pci::Device_capability prev_device_cap, device_cap;
|
Platform::Device_capability prev_device_cap, device_cap;
|
||||||
Genode::env()->parent()->upgrade(_pci_drv.cap(), "ram_quota=4096");
|
Genode::env()->parent()->upgrade(_pci_drv.cap(), "ram_quota=4096");
|
||||||
for (device_cap = _pci_drv.first_device();
|
for (device_cap = _pci_drv.first_device();
|
||||||
device_cap.valid();
|
device_cap.valid();
|
||||||
device_cap = _pci_drv.next_device(prev_device_cap)) {
|
device_cap = _pci_drv.next_device(prev_device_cap)) {
|
||||||
|
|
||||||
Pci::Device_client device(device_cap);
|
Platform::Device_client device(device_cap);
|
||||||
|
|
||||||
if (prev_device_cap.valid())
|
if (prev_device_cap.valid())
|
||||||
_pci_drv.release_device(prev_device_cap);
|
_pci_drv.release_device(prev_device_cap);
|
||||||
@ -93,7 +93,7 @@ class Pci_card
|
|||||||
PDBG("Found PCI VGA at %x:%x.%x", bus, dev, fn);
|
PDBG("Found PCI VGA at %x:%x.%x", bus, dev, fn);
|
||||||
}
|
}
|
||||||
|
|
||||||
Pci::Device_client &device() { return _device; }
|
Platform::Device_client &device() { return _device; }
|
||||||
unsigned short devfn() const { return _devfn; }
|
unsigned short devfn() const { return _devfn; }
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -190,7 +190,7 @@ static bool handle_pci_port_read(unsigned short port, T *val)
|
|||||||
case 4: /* status and command */
|
case 4: /* status and command */
|
||||||
case 8: /* class code / revision ID */
|
case 8: /* class code / revision ID */
|
||||||
raw_val = pci_card()->device().config_read(pci_cfg_addr,
|
raw_val = pci_card()->device().config_read(pci_cfg_addr,
|
||||||
Pci::Device::ACCESS_32BIT);
|
Platform::Device::ACCESS_32BIT);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x10: /* base address register 0 */
|
case 0x10: /* base address register 0 */
|
||||||
@ -201,8 +201,8 @@ static bool handle_pci_port_read(unsigned short port, T *val)
|
|||||||
case 0x24: /* base address register 5 */
|
case 0x24: /* base address register 5 */
|
||||||
{
|
{
|
||||||
unsigned bar = (pci_cfg_addr - 0x10) / 4;
|
unsigned bar = (pci_cfg_addr - 0x10) / 4;
|
||||||
Pci::Device::Resource res = pci_card()->device().resource(bar);
|
Platform::Device::Resource res = pci_card()->device().resource(bar);
|
||||||
if (res.type() == Pci::Device::Resource::INVALID) {
|
if (res.type() == Platform::Device::Resource::INVALID) {
|
||||||
PWRN("requested PCI resource 0x%x invalid", bar);
|
PWRN("requested PCI resource 0x%x invalid", bar);
|
||||||
*val = 0;
|
*val = 0;
|
||||||
return true;
|
return true;
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
|
|
||||||
#include <io_port_session/connection.h>
|
#include <io_port_session/connection.h>
|
||||||
#include <io_mem_session/connection.h>
|
#include <io_mem_session/connection.h>
|
||||||
#include <pci_session/connection.h>
|
#include <platform_session/connection.h>
|
||||||
|
|
||||||
#include "ifx86emu.h"
|
#include "ifx86emu.h"
|
||||||
#include "framebuffer.h"
|
#include "framebuffer.h"
|
||||||
@ -512,7 +512,7 @@ int X86emu::init(void)
|
|||||||
* concurrently accesses by this driver and the Acpi/Pci driver to the
|
* concurrently accesses by this driver and the Acpi/Pci driver to the
|
||||||
* graphic device (PCI config space).
|
* graphic device (PCI config space).
|
||||||
*/
|
*/
|
||||||
Pci::Connection conn;
|
Platform::Connection conn;
|
||||||
|
|
||||||
if (map_code_area())
|
if (map_code_area())
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -1,22 +0,0 @@
|
|||||||
/*
|
|
||||||
* \brief PCI session capability type
|
|
||||||
* \author Norman Feske
|
|
||||||
* \date 2008-08-16
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Copyright (C) 2008-2013 Genode Labs GmbH
|
|
||||||
*
|
|
||||||
* This file is part of the Genode OS framework, which is distributed
|
|
||||||
* under the terms of the GNU General Public License version 2.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _INCLUDE__PCI_SESSION__CAPABILITY_H_
|
|
||||||
#define _INCLUDE__PCI_SESSION__CAPABILITY_H_
|
|
||||||
|
|
||||||
#include <base/capability.h>
|
|
||||||
#include <pci_session/pci_session.h>
|
|
||||||
|
|
||||||
namespace Pci { typedef Genode::Capability<Session> Session_capability; }
|
|
||||||
|
|
||||||
#endif /* _INCLUDE__PCI_SESSION__CAPABILITY_H_ */
|
|
@ -1,32 +0,0 @@
|
|||||||
/*
|
|
||||||
* \brief Connection to PCI service
|
|
||||||
* \author Norman Feske
|
|
||||||
* \date 2008-08-22
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Copyright (C) 2008-2013 Genode Labs GmbH
|
|
||||||
*
|
|
||||||
* This file is part of the Genode OS framework, which is distributed
|
|
||||||
* under the terms of the GNU General Public License version 2.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _INCLUDE__PCI_SESSION__CONNECTION_H_
|
|
||||||
#define _INCLUDE__PCI_SESSION__CONNECTION_H_
|
|
||||||
|
|
||||||
#include <pci_session/client.h>
|
|
||||||
#include <base/connection.h>
|
|
||||||
|
|
||||||
namespace Pci { struct Connection; }
|
|
||||||
|
|
||||||
|
|
||||||
struct Pci::Connection : Genode::Connection<Session>, Session_client
|
|
||||||
{
|
|
||||||
Connection()
|
|
||||||
:
|
|
||||||
Genode::Connection<Session>(session("ram_quota=12K")),
|
|
||||||
Session_client(cap())
|
|
||||||
{ }
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif /* _INCLUDE__PCI_SESSION__CONNECTION_H_ */
|
|
@ -16,9 +16,9 @@
|
|||||||
#include <irq_session/capability.h>
|
#include <irq_session/capability.h>
|
||||||
#include <io_mem_session/capability.h>
|
#include <io_mem_session/capability.h>
|
||||||
|
|
||||||
namespace Platform { class Device; }
|
namespace Platform { class Abstract_device; }
|
||||||
|
|
||||||
struct Platform::Device
|
struct Platform::Abstract_device
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Get IRQ session capability
|
* Get IRQ session capability
|
||||||
|
@ -11,12 +11,9 @@
|
|||||||
* under the terms of the GNU General Public License version 2.
|
* under the terms of the GNU General Public License version 2.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _INCLUDE__PCI_DEVICE__CAPABILITY_H_
|
#pragma once
|
||||||
#define _INCLUDE__PCI_DEVICE__CAPABILITY_H_
|
|
||||||
|
|
||||||
#include <base/capability.h>
|
#include <base/capability.h>
|
||||||
#include <pci_device/pci_device.h>
|
#include <platform_device/platform_device.h>
|
||||||
|
|
||||||
namespace Pci { typedef Genode::Capability<Device> Device_capability; }
|
namespace Platform { typedef Genode::Capability<Device> Device_capability; }
|
||||||
|
|
||||||
#endif /* _INCLUDE__PCI_DEVICE__CAPABILITY_H_ */
|
|
@ -11,18 +11,17 @@
|
|||||||
* under the terms of the GNU General Public License version 2.
|
* under the terms of the GNU General Public License version 2.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _INCLUDE__PCI_DEVICE__CLIENT_H_
|
#pragma once
|
||||||
#define _INCLUDE__PCI_DEVICE__CLIENT_H_
|
|
||||||
|
|
||||||
#include <pci_session/pci_session.h>
|
#include <platform_session/platform_session.h>
|
||||||
#include <pci_device/pci_device.h>
|
#include <platform_device/platform_device.h>
|
||||||
#include <base/rpc_client.h>
|
#include <base/rpc_client.h>
|
||||||
#include <io_mem_session/io_mem_session.h>
|
#include <io_mem_session/io_mem_session.h>
|
||||||
|
|
||||||
namespace Pci { struct Device_client; }
|
namespace Platform { struct Device_client; }
|
||||||
|
|
||||||
|
|
||||||
struct Pci::Device_client : public Genode::Rpc_client<Device>
|
struct Platform::Device_client : public Genode::Rpc_client<Device>
|
||||||
{
|
{
|
||||||
Device_client(Device_capability device)
|
Device_client(Device_capability device)
|
||||||
: Genode::Rpc_client<Device>(device) { }
|
: Genode::Rpc_client<Device>(device) { }
|
||||||
@ -57,5 +56,3 @@ struct Pci::Device_client : public Genode::Rpc_client<Device>
|
|||||||
Genode::Io_mem_session_capability io_mem(Genode::uint8_t id) override {
|
Genode::Io_mem_session_capability io_mem(Genode::uint8_t id) override {
|
||||||
return call<Rpc_io_mem>(id); }
|
return call<Rpc_io_mem>(id); }
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* _INCLUDE__PCI_DEVICE__CLIENT_H_ */
|
|
@ -11,8 +11,7 @@
|
|||||||
* under the terms of the GNU General Public License version 2.
|
* under the terms of the GNU General Public License version 2.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _INCLUDE__PCI_DEVICE__PCI_DEVICE_H_
|
#pragma once
|
||||||
#define _INCLUDE__PCI_DEVICE__PCI_DEVICE_H_
|
|
||||||
|
|
||||||
#include <base/rpc.h>
|
#include <base/rpc.h>
|
||||||
#include <base/signal.h>
|
#include <base/signal.h>
|
||||||
@ -26,10 +25,10 @@
|
|||||||
#include <platform/device.h>
|
#include <platform/device.h>
|
||||||
|
|
||||||
|
|
||||||
namespace Pci { struct Device; }
|
namespace Platform { struct Device; }
|
||||||
|
|
||||||
|
|
||||||
struct Pci::Device : Platform::Device
|
struct Platform::Device : Platform::Abstract_device
|
||||||
{
|
{
|
||||||
/*********************
|
/*********************
|
||||||
** Exception types **
|
** Exception types **
|
||||||
@ -258,5 +257,3 @@ struct Pci::Device : Platform::Device
|
|||||||
Genode::Meta::Empty>
|
Genode::Meta::Empty>
|
||||||
> > > > > > > > > Rpc_functions;
|
> > > > > > > > > Rpc_functions;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* _INCLUDE__PCI_DEVICE__PCI_DEVICE_H_ */
|
|
@ -11,20 +11,19 @@
|
|||||||
* under the terms of the GNU General Public License version 2.
|
* under the terms of the GNU General Public License version 2.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _INCLUDE__PCI_SESSION__CLIENT_H_
|
#pragma once
|
||||||
#define _INCLUDE__PCI_SESSION__CLIENT_H_
|
|
||||||
|
|
||||||
#include <base/rpc_client.h>
|
#include <base/rpc_client.h>
|
||||||
|
|
||||||
#include <pci_device/client.h>
|
#include <platform_device/client.h>
|
||||||
#include <pci_session/capability.h>
|
#include <platform_session/capability.h>
|
||||||
|
|
||||||
namespace Pci { struct Session_client; }
|
namespace Platform { struct Client; }
|
||||||
|
|
||||||
|
|
||||||
struct Pci::Session_client : public Genode::Rpc_client<Session>
|
struct Platform::Client : public Genode::Rpc_client<Session>
|
||||||
{
|
{
|
||||||
Session_client(Session_capability session)
|
Client(Session_capability session)
|
||||||
: Genode::Rpc_client<Session>(session) { }
|
: Genode::Rpc_client<Session>(session) { }
|
||||||
|
|
||||||
Device_capability first_device(unsigned device_class = 0,
|
Device_capability first_device(unsigned device_class = 0,
|
||||||
@ -51,5 +50,3 @@ struct Pci::Session_client : public Genode::Rpc_client<Session>
|
|||||||
Device_capability device(String const &device) override {
|
Device_capability device(String const &device) override {
|
||||||
return call<Rpc_device>(device); }
|
return call<Rpc_device>(device); }
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* _INCLUDE__PCI_SESSION__CLIENT_H_ */
|
|
29
repos/os/include/platform/x86/platform_session/connection.h
Normal file
29
repos/os/include/platform/x86/platform_session/connection.h
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
/*
|
||||||
|
* \brief Connection to Platform service
|
||||||
|
* \author Norman Feske
|
||||||
|
* \date 2008-08-22
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2008-2015 Genode Labs GmbH
|
||||||
|
*
|
||||||
|
* This file is part of the Genode OS framework, which is distributed
|
||||||
|
* under the terms of the GNU General Public License version 2.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <base/connection.h>
|
||||||
|
#include <platform_session/client.h>
|
||||||
|
|
||||||
|
namespace Platform { struct Connection; }
|
||||||
|
|
||||||
|
|
||||||
|
struct Platform::Connection : Genode::Connection<Session>, Client
|
||||||
|
{
|
||||||
|
Connection()
|
||||||
|
:
|
||||||
|
Genode::Connection<Session>(session("ram_quota=12K")),
|
||||||
|
Client(cap())
|
||||||
|
{ }
|
||||||
|
};
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* \brief PCI session interface
|
* \brief Platform session interface
|
||||||
* \author Norman Feske
|
* \author Norman Feske
|
||||||
* \date 2008-01-28
|
* \date 2008-01-28
|
||||||
*/
|
*/
|
||||||
@ -11,27 +11,22 @@
|
|||||||
* under the terms of the GNU General Public License version 2.
|
* under the terms of the GNU General Public License version 2.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _INCLUDE__PCI_SESSION__PCI_SESSION_H_
|
#pragma once
|
||||||
#define _INCLUDE__PCI_SESSION__PCI_SESSION_H_
|
|
||||||
|
|
||||||
/* base */
|
/* base */
|
||||||
#include <session/session.h>
|
#include <session/session.h>
|
||||||
#include <ram_session/ram_session.h>
|
#include <ram_session/ram_session.h>
|
||||||
|
|
||||||
/* os */
|
/* os */
|
||||||
#include <pci_device/pci_device.h>
|
#include <platform_device/platform_device.h>
|
||||||
|
#include <platform_device/capability.h>
|
||||||
|
|
||||||
namespace Pci {
|
namespace Platform { struct Session; }
|
||||||
|
|
||||||
typedef Genode::Capability<Pci::Device> Device_capability;
|
|
||||||
|
|
||||||
struct Session;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
struct Pci::Session : Genode::Session
|
struct Platform::Session : Genode::Session
|
||||||
{
|
{
|
||||||
static const char *service_name() { return "PCI"; }
|
static const char *service_name() { return "Platform"; }
|
||||||
|
|
||||||
virtual ~Session() { }
|
virtual ~Session() { }
|
||||||
|
|
||||||
@ -87,24 +82,24 @@ struct Pci::Session : Genode::Session
|
|||||||
*********************/
|
*********************/
|
||||||
|
|
||||||
GENODE_RPC_THROW(Rpc_first_device, Device_capability, first_device,
|
GENODE_RPC_THROW(Rpc_first_device, Device_capability, first_device,
|
||||||
GENODE_TYPE_LIST(Pci::Device::Quota_exceeded),
|
GENODE_TYPE_LIST(Platform::Device::Quota_exceeded),
|
||||||
unsigned, unsigned);
|
unsigned, unsigned);
|
||||||
GENODE_RPC_THROW(Rpc_next_device, Device_capability, next_device,
|
GENODE_RPC_THROW(Rpc_next_device, Device_capability, next_device,
|
||||||
GENODE_TYPE_LIST(Pci::Device::Quota_exceeded),
|
GENODE_TYPE_LIST(Platform::Device::Quota_exceeded),
|
||||||
Device_capability, unsigned, unsigned);
|
Device_capability, unsigned, unsigned);
|
||||||
GENODE_RPC(Rpc_release_device, void, release_device, Device_capability);
|
GENODE_RPC(Rpc_release_device, void, release_device, Device_capability);
|
||||||
GENODE_RPC_THROW(Rpc_config_extended, Genode::Io_mem_dataspace_capability,
|
GENODE_RPC_THROW(Rpc_config_extended, Genode::Io_mem_dataspace_capability,
|
||||||
config_extended,
|
config_extended,
|
||||||
GENODE_TYPE_LIST(Pci::Device::Quota_exceeded),
|
GENODE_TYPE_LIST(Platform::Device::Quota_exceeded),
|
||||||
Device_capability);
|
Device_capability);
|
||||||
GENODE_RPC_THROW(Rpc_alloc_dma_buffer, Genode::Ram_dataspace_capability,
|
GENODE_RPC_THROW(Rpc_alloc_dma_buffer, Genode::Ram_dataspace_capability,
|
||||||
alloc_dma_buffer,
|
alloc_dma_buffer,
|
||||||
GENODE_TYPE_LIST(Pci::Device::Quota_exceeded),
|
GENODE_TYPE_LIST(Platform::Device::Quota_exceeded),
|
||||||
Genode::size_t);
|
Genode::size_t);
|
||||||
GENODE_RPC(Rpc_free_dma_buffer, void, free_dma_buffer,
|
GENODE_RPC(Rpc_free_dma_buffer, void, free_dma_buffer,
|
||||||
Genode::Ram_dataspace_capability);
|
Genode::Ram_dataspace_capability);
|
||||||
GENODE_RPC_THROW(Rpc_device, Device_capability, device,
|
GENODE_RPC_THROW(Rpc_device, Device_capability, device,
|
||||||
GENODE_TYPE_LIST(Pci::Device::Quota_exceeded),
|
GENODE_TYPE_LIST(Platform::Device::Quota_exceeded),
|
||||||
String const &);
|
String const &);
|
||||||
|
|
||||||
GENODE_RPC_INTERFACE(Rpc_first_device, Rpc_next_device,
|
GENODE_RPC_INTERFACE(Rpc_first_device, Rpc_next_device,
|
||||||
@ -112,5 +107,3 @@ struct Pci::Session : Genode::Session
|
|||||||
Rpc_alloc_dma_buffer, Rpc_free_dma_buffer,
|
Rpc_alloc_dma_buffer, Rpc_free_dma_buffer,
|
||||||
Rpc_device);
|
Rpc_device);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* _INCLUDE__PCI_SESSION__PCI_SESSION_H_ */
|
|
@ -13,8 +13,8 @@ set build_components {
|
|||||||
test/blk/bench
|
test/blk/bench
|
||||||
}
|
}
|
||||||
|
|
||||||
lappend_if [have_spec acpi] build_components drivers/acpi
|
source ${genode_dir}/repos/base/run/platform_drv.inc
|
||||||
lappend_if [have_spec pci] build_components drivers/pci
|
append_platform_drv_build_components
|
||||||
|
|
||||||
build $build_components
|
build $build_components
|
||||||
#
|
#
|
||||||
@ -51,42 +51,11 @@ set config {
|
|||||||
<provides><service name="Timer"/></provides>
|
<provides><service name="Timer"/></provides>
|
||||||
</start>
|
</start>
|
||||||
}
|
}
|
||||||
append_if [expr ![have_spec acpi] && ![have_spec pci]] config {
|
|
||||||
<start name="platform_drv">
|
|
||||||
<resource name="RAM" quantum="1M"/>
|
|
||||||
<provides><service name="Regulator"/></provides>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if [have_spec acpi] config {
|
append_platform_drv_config
|
||||||
<start name="acpi">
|
|
||||||
<resource name="RAM" quantum="6M" constrain_phys="yes"/>
|
|
||||||
<binary name="acpi_drv"/>
|
|
||||||
<provides>
|
|
||||||
<service name="PCI"/>
|
|
||||||
<service name="IRQ" />
|
|
||||||
</provides>
|
|
||||||
<route>
|
|
||||||
<any-service> <parent/> <any-child /> </any-service>
|
|
||||||
</route>
|
|
||||||
<config>
|
|
||||||
<policy label="acpi_drv"><pci class="ALL" /></policy>
|
|
||||||
<policy label="ahci"><pci class="AHCI" /></policy>
|
|
||||||
</config>
|
|
||||||
</start>
|
|
||||||
}
|
|
||||||
|
|
||||||
append_if [expr ![have_spec acpi] && [have_spec pci]] config {
|
|
||||||
<start name="pci_drv">
|
|
||||||
<resource name="RAM" quantum="3M" constrain_phys="yes"/>
|
|
||||||
<provides> <service name="PCI"/> </provides>
|
|
||||||
<config>
|
|
||||||
<policy label="ahci"/><pci class="AHCI" /></policy>
|
|
||||||
</config>
|
|
||||||
</start> }
|
|
||||||
|
|
||||||
append config {
|
append config {
|
||||||
<start name="ahci">
|
<start name="ahci_drv">
|
||||||
<binary name="ahci_drv" />
|
|
||||||
<resource name="RAM" quantum="10M" />
|
<resource name="RAM" quantum="10M" />
|
||||||
<provides><service name="Block" /></provides>
|
<provides><service name="Block" /></provides>
|
||||||
<config>
|
<config>
|
||||||
@ -105,7 +74,7 @@ append config {
|
|||||||
</libc>
|
</libc>
|
||||||
</config>
|
</config>
|
||||||
<route>
|
<route>
|
||||||
<service name="Block"><child name="ahci"/></service>
|
<service name="Block"><child name="ahci_drv"/></service>
|
||||||
<any-service> <parent/> <any-child /> </any-service>
|
<any-service> <parent/> <any-child /> </any-service>
|
||||||
</route>
|
</route>
|
||||||
</start>
|
</start>
|
||||||
@ -119,10 +88,7 @@ install_config $config
|
|||||||
set boot_modules { core init timer ahci_drv test-blk-bench libc.lib.so
|
set boot_modules { core init timer ahci_drv test-blk-bench libc.lib.so
|
||||||
ld.lib.so }
|
ld.lib.so }
|
||||||
|
|
||||||
lappend_if [expr ![have_spec acpi] && ![have_spec pci]] boot_modules platform_drv
|
append_platform_drv_boot_modules
|
||||||
lappend_if [have_spec pci] boot_modules pci_drv
|
|
||||||
lappend_if [have_spec nova] boot_modules pci_device_pd
|
|
||||||
lappend_if [have_spec acpi] boot_modules acpi_drv
|
|
||||||
|
|
||||||
build_boot_image $boot_modules
|
build_boot_image $boot_modules
|
||||||
|
|
||||||
|
@ -9,14 +9,14 @@ set build_components {
|
|||||||
core init
|
core init
|
||||||
drivers/timer
|
drivers/timer
|
||||||
drivers/ahci
|
drivers/ahci
|
||||||
drivers/platform
|
|
||||||
test/blk/cli
|
test/blk/cli
|
||||||
}
|
}
|
||||||
|
|
||||||
lappend_if [have_spec acpi] build_components drivers/acpi
|
source ${genode_dir}/repos/base/run/platform_drv.inc
|
||||||
lappend_if [have_spec pci] build_components drivers/pci
|
append_platform_drv_build_components
|
||||||
|
|
||||||
build $build_components
|
build $build_components
|
||||||
|
|
||||||
#
|
#
|
||||||
# Build EXT2-file-system image
|
# Build EXT2-file-system image
|
||||||
#
|
#
|
||||||
@ -49,44 +49,12 @@ set config {
|
|||||||
<start name="timer">
|
<start name="timer">
|
||||||
<resource name="RAM" quantum="1M"/>
|
<resource name="RAM" quantum="1M"/>
|
||||||
<provides><service name="Timer"/></provides>
|
<provides><service name="Timer"/></provides>
|
||||||
</start>
|
|
||||||
}
|
|
||||||
append_if [expr ![have_spec acpi] && ![have_spec pci]] config {
|
|
||||||
<start name="platform_drv">
|
|
||||||
<resource name="RAM" quantum="1M"/>
|
|
||||||
<provides><service name="Regulator"/></provides>
|
|
||||||
</start>}
|
</start>}
|
||||||
|
|
||||||
append_if [have_spec acpi] config {
|
append_platform_drv_config
|
||||||
<start name="acpi">
|
|
||||||
<resource name="RAM" quantum="8M" constrain_phys="yes"/>
|
|
||||||
<binary name="acpi_drv"/>
|
|
||||||
<provides>
|
|
||||||
<service name="PCI"/>
|
|
||||||
<service name="IRQ" />
|
|
||||||
</provides>
|
|
||||||
<route>
|
|
||||||
<any-service> <parent/> <any-child /> </any-service>
|
|
||||||
</route>
|
|
||||||
<config>
|
|
||||||
<policy label="acpi_drv"><pci class="ALL" /></policy>
|
|
||||||
<policy label="ahci"><pci class="AHCI" /></policy>
|
|
||||||
</config>
|
|
||||||
</start>
|
|
||||||
}
|
|
||||||
|
|
||||||
append_if [expr ![have_spec acpi] && [have_spec pci]] config {
|
|
||||||
<start name="pci_drv">
|
|
||||||
<resource name="RAM" quantum="3M" constrain_phys="yes"/>
|
|
||||||
<provides> <service name="PCI"/> </provides>
|
|
||||||
<config>
|
|
||||||
<policy label="ahci"><pci class="AHCI" /></policy>
|
|
||||||
</config>
|
|
||||||
</start> }
|
|
||||||
|
|
||||||
append config {
|
append config {
|
||||||
<start name="ahci">
|
<start name="ahci_drv">
|
||||||
<binary name="ahci_drv" />
|
|
||||||
<resource name="RAM" quantum="10M" />
|
<resource name="RAM" quantum="10M" />
|
||||||
<provides><service name="Block" /></provides>
|
<provides><service name="Block" /></provides>
|
||||||
<config>
|
<config>
|
||||||
@ -98,7 +66,7 @@ append config {
|
|||||||
<resource name="RAM" quantum="50M" />
|
<resource name="RAM" quantum="50M" />
|
||||||
<config test_size="100M"></config>
|
<config test_size="100M"></config>
|
||||||
<route>
|
<route>
|
||||||
<service name="Block"><child name="ahci"/></service>
|
<service name="Block"><child name="ahci_drv"/></service>
|
||||||
<any-service> <parent/> <any-child /> </any-service>
|
<any-service> <parent/> <any-child /> </any-service>
|
||||||
</route>
|
</route>
|
||||||
</start>
|
</start>
|
||||||
@ -111,10 +79,7 @@ install_config $config
|
|||||||
#
|
#
|
||||||
set boot_modules { core init timer ahci_drv test-blk-cli }
|
set boot_modules { core init timer ahci_drv test-blk-cli }
|
||||||
|
|
||||||
lappend_if [expr ![have_spec acpi] && ![have_spec pci]] boot_modules platform_drv
|
append_platform_drv_boot_modules
|
||||||
lappend_if [have_spec pci] boot_modules pci_drv
|
|
||||||
lappend_if [have_spec nova] boot_modules pci_device_pd
|
|
||||||
lappend_if [have_spec acpi] boot_modules acpi_drv
|
|
||||||
|
|
||||||
build_boot_image $boot_modules
|
build_boot_image $boot_modules
|
||||||
|
|
||||||
|
@ -127,6 +127,10 @@ append config {
|
|||||||
<global-key name="KEY_F11" operation="kill" />
|
<global-key name="KEY_F11" operation="kill" />
|
||||||
<global-key name="KEY_F12" operation="xray" />
|
<global-key name="KEY_F12" operation="xray" />
|
||||||
</config>
|
</config>
|
||||||
|
<route>
|
||||||
|
<service name="Report"> <child name="report_rom"/> </service>
|
||||||
|
<any-service> <parent/> <any-child/> </any-service>
|
||||||
|
</route>
|
||||||
</start>
|
</start>
|
||||||
<start name="pointer">
|
<start name="pointer">
|
||||||
<resource name="RAM" quantum="1M"/>
|
<resource name="RAM" quantum="1M"/>
|
||||||
|
@ -7,9 +7,8 @@ if {[have_spec hw_odroid_xu]} {
|
|||||||
|
|
||||||
set build_components { core init test/framebuffer drivers/framebuffer drivers/timer }
|
set build_components { core init test/framebuffer drivers/framebuffer drivers/timer }
|
||||||
|
|
||||||
lappend_if [have_spec pci] build_components drivers/pci
|
source ${genode_dir}/repos/base/run/platform_drv.inc
|
||||||
lappend_if [have_spec acpi] build_components drivers/acpi
|
append_platform_drv_build_components
|
||||||
lappend_if [have_spec platform_arndale] build_components drivers/platform
|
|
||||||
|
|
||||||
build $build_components
|
build $build_components
|
||||||
|
|
||||||
@ -52,25 +51,7 @@ append_if [have_spec sdl] config {
|
|||||||
</provides>
|
</provides>
|
||||||
</start>}
|
</start>}
|
||||||
|
|
||||||
append_if [have_spec acpi] config {
|
append_platform_drv_config
|
||||||
<start name="acpi">
|
|
||||||
<resource name="RAM" quantum="8M" constrain_phys="yes"/>
|
|
||||||
<binary name="acpi_drv"/>
|
|
||||||
<provides>
|
|
||||||
<service name="PCI"/>
|
|
||||||
<service name="IRQ" />
|
|
||||||
</provides>
|
|
||||||
<route>
|
|
||||||
<service name="PCI"> <any-child /> </service>
|
|
||||||
<any-service> <parent/> <any-child /> </any-service>
|
|
||||||
</route>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if [expr ![have_spec acpi] && [have_spec pci]] config {
|
|
||||||
<start name="pci_drv">
|
|
||||||
<resource name="RAM" quantum="5M" constrain_phys="yes"/>
|
|
||||||
<provides><service name="PCI"/></provides>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if [have_spec framebuffer] config {
|
append_if [have_spec framebuffer] config {
|
||||||
<start name="fb_drv">
|
<start name="fb_drv">
|
||||||
@ -78,12 +59,6 @@ append_if [have_spec framebuffer] config {
|
|||||||
<provides><service name="Framebuffer"/></provides>
|
<provides><service name="Framebuffer"/></provides>
|
||||||
</start>}
|
</start>}
|
||||||
|
|
||||||
append_if [have_spec platform_arndale] config {
|
|
||||||
<start name="platform_drv">
|
|
||||||
<resource name="RAM" quantum="1M"/>
|
|
||||||
<provides><service name="Regulator"/></provides>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append config {
|
append config {
|
||||||
<start name="test-framebuffer">
|
<start name="test-framebuffer">
|
||||||
<resource name="RAM" quantum="10M"/>
|
<resource name="RAM" quantum="10M"/>
|
||||||
@ -103,12 +78,10 @@ set boot_modules {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# platform-specific modules
|
# platform-specific modules
|
||||||
|
append_platform_drv_boot_modules
|
||||||
|
|
||||||
lappend_if [have_spec sdl] boot_modules fb_sdl
|
lappend_if [have_spec sdl] boot_modules fb_sdl
|
||||||
lappend_if [have_spec pci] boot_modules pci_drv
|
|
||||||
lappend_if [have_spec nova] boot_modules pci_device_pd
|
|
||||||
lappend_if [have_spec acpi] boot_modules acpi_drv
|
|
||||||
lappend_if [have_spec framebuffer] boot_modules fb_drv
|
lappend_if [have_spec framebuffer] boot_modules fb_drv
|
||||||
lappend_if [have_spec platform_arndale] boot_modules platform_drv
|
|
||||||
|
|
||||||
build_boot_image $boot_modules
|
build_boot_image $boot_modules
|
||||||
|
|
||||||
|
@ -65,7 +65,7 @@ append config {
|
|||||||
<service name="SIGNAL"> <parent/> </service>
|
<service name="SIGNAL"> <parent/> </service>
|
||||||
<service name="IO_MEM"> <parent/> </service>
|
<service name="IO_MEM"> <parent/> </service>
|
||||||
<service name="IRQ"> <parent/> </service>
|
<service name="IRQ"> <parent/> </service>
|
||||||
<service name="PCI"> <any-child/> </service>
|
<service name="Platform"> <any-child/> </service>
|
||||||
</route>
|
</route>
|
||||||
</start>
|
</start>
|
||||||
|
|
||||||
|
@ -7,9 +7,12 @@ set build_components {
|
|||||||
drivers/timer
|
drivers/timer
|
||||||
server/nitpicker server/loader
|
server/nitpicker server/loader
|
||||||
test/nitpicker test/loader
|
test/nitpicker test/loader
|
||||||
drivers/framebuffer drivers/pci drivers/input
|
drivers/framebuffer drivers/input
|
||||||
}
|
}
|
||||||
|
|
||||||
|
source ${genode_dir}/repos/base/run/platform_drv.inc
|
||||||
|
append_platform_drv_build_components
|
||||||
|
|
||||||
build $build_components
|
build $build_components
|
||||||
|
|
||||||
create_boot_directory
|
create_boot_directory
|
||||||
@ -37,6 +40,8 @@ append config {
|
|||||||
<any-service> <parent/> <any-child/> </any-service>
|
<any-service> <parent/> <any-child/> </any-service>
|
||||||
</default-route>}
|
</default-route>}
|
||||||
|
|
||||||
|
append_platform_drv_config
|
||||||
|
|
||||||
append_if [have_spec sdl] config {
|
append_if [have_spec sdl] config {
|
||||||
<start name="fb_sdl">
|
<start name="fb_sdl">
|
||||||
<resource name="RAM" quantum="4M"/>
|
<resource name="RAM" quantum="4M"/>
|
||||||
@ -46,12 +51,6 @@ append_if [have_spec sdl] config {
|
|||||||
</provides>
|
</provides>
|
||||||
</start>}
|
</start>}
|
||||||
|
|
||||||
append_if [have_spec pci] config {
|
|
||||||
<start name="pci_drv">
|
|
||||||
<resource name="RAM" quantum="1M"/>
|
|
||||||
<provides><service name="PCI"/></provides>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if [have_spec framebuffer] config {
|
append_if [have_spec framebuffer] config {
|
||||||
<start name="fb_drv">
|
<start name="fb_drv">
|
||||||
<resource name="RAM" quantum="4M"/>
|
<resource name="RAM" quantum="4M"/>
|
||||||
@ -96,10 +95,11 @@ set boot_modules { core init timer nitpicker testnit loader test-loader }
|
|||||||
|
|
||||||
# platform-specific modules
|
# platform-specific modules
|
||||||
lappend_if [have_spec linux] boot_modules fb_sdl
|
lappend_if [have_spec linux] boot_modules fb_sdl
|
||||||
lappend_if [have_spec pci] boot_modules pci_drv
|
|
||||||
lappend_if [have_spec framebuffer] boot_modules fb_drv
|
lappend_if [have_spec framebuffer] boot_modules fb_drv
|
||||||
lappend_if [have_spec ps2] boot_modules ps2_drv
|
lappend_if [have_spec ps2] boot_modules ps2_drv
|
||||||
|
|
||||||
|
append_platform_drv_boot_modules
|
||||||
|
|
||||||
build_boot_image $boot_modules
|
build_boot_image $boot_modules
|
||||||
|
|
||||||
append qemu_args " -m 256 "
|
append qemu_args " -m 256 "
|
||||||
|
@ -11,11 +11,8 @@ set build_components {
|
|||||||
test/audio_out
|
test/audio_out
|
||||||
}
|
}
|
||||||
|
|
||||||
# platform-specific components
|
source ${genode_dir}/repos/base/run/platform_drv.inc
|
||||||
if {![have_spec linux]} {
|
append_platform_drv_build_components
|
||||||
lappend build_components drivers/pci
|
|
||||||
lappend build_components drivers/acpi
|
|
||||||
}
|
|
||||||
|
|
||||||
build $build_components
|
build $build_components
|
||||||
create_boot_directory
|
create_boot_directory
|
||||||
@ -43,49 +40,13 @@ set config {
|
|||||||
<default-route>
|
<default-route>
|
||||||
<service name="Audio_out"> <child name="mixer"/> </service>
|
<service name="Audio_out"> <child name="mixer"/> </service>
|
||||||
<any-service> <parent/> <any-child/> </any-service>
|
<any-service> <parent/> <any-child/> </any-service>
|
||||||
</default-route>
|
</default-route>}
|
||||||
}
|
|
||||||
|
|
||||||
if {![have_spec linux]} {
|
append_platform_drv_config
|
||||||
append config {
|
|
||||||
<start name="acpi">
|
|
||||||
<resource name="RAM" quantum="2M" constrain_phys="yes"/>
|
|
||||||
<binary name="acpi_drv"/>
|
|
||||||
<provides>
|
|
||||||
<service name="PCI"/>
|
|
||||||
<service name="IRQ" />
|
|
||||||
</provides>
|
|
||||||
<route>
|
|
||||||
<service name="PCI"> <any-child /> </service>
|
|
||||||
<any-service> <parent/> <any-child /> </any-service>
|
|
||||||
</route>
|
|
||||||
</start>
|
|
||||||
<start name="audio_out_drv">
|
|
||||||
<resource name="RAM" quantum="6M"/>
|
|
||||||
<route>
|
|
||||||
<service name="IRQ"><child name="acpi" /></service>
|
|
||||||
<any-service> <parent /> <any-child /></any-service>
|
|
||||||
</route>
|
|
||||||
<provides>
|
|
||||||
<service name="Audio_out" />
|
|
||||||
</provides>
|
|
||||||
</start>
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
append config {
|
append config {
|
||||||
<start name="audio_out_drv">
|
<start name="audio_out_drv">
|
||||||
<resource name="RAM" quantum="6M"/>
|
<resource name="RAM" quantum="6M"/>
|
||||||
}
|
|
||||||
|
|
||||||
append_if [expr ![have_spec linux]] config {
|
|
||||||
<route>
|
|
||||||
<service name="IRQ"><child name="acpi" /></service>
|
|
||||||
<any-service> <parent /> <any-child /></any-service>
|
|
||||||
</route>
|
|
||||||
}
|
|
||||||
|
|
||||||
append config {
|
|
||||||
<provides>
|
<provides>
|
||||||
<service name="Audio_out"/>
|
<service name="Audio_out"/>
|
||||||
</provides>
|
</provides>
|
||||||
@ -137,10 +98,7 @@ set boot_modules {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# platform-specific components
|
# platform-specific components
|
||||||
if {![have_spec linux]} {
|
append_platform_drv_boot_modules
|
||||||
lappend boot_modules acpi_drv
|
|
||||||
lappend boot_modules pci_drv
|
|
||||||
}
|
|
||||||
|
|
||||||
build_boot_image $boot_modules
|
build_boot_image $boot_modules
|
||||||
append qemu_args "-m 256 -soundhw es1370 -nographic"
|
append qemu_args "-m 256 -soundhw es1370 -nographic"
|
||||||
|
@ -5,50 +5,33 @@ Behavior
|
|||||||
|
|
||||||
This server should be used when using a kernel (like Fiasco.OC, Nova,
|
This server should be used when using a kernel (like Fiasco.OC, Nova,
|
||||||
base_hw x86_64) that takes advantage of x86's APIC. The server traverses the
|
base_hw x86_64) that takes advantage of x86's APIC. The server traverses the
|
||||||
ACPI tables and sets the interrupt line of devices within the PCI config space
|
ACPI tables and reports the interrupt line of devices within the PCI config
|
||||||
to the GSIs found in the ACPI tables. The 'MADT' table is parsed by the server
|
space of GSIs found in the ACPI tables. The 'MADT' table is parsed by the
|
||||||
as well, enabling clients to use the correct IRQ when 'Interrupt Override'
|
server as well, enabling clients to use the correct IRQ when
|
||||||
structures are found wihtin the table.
|
'Interrupt Override' structures are found within the table. All information
|
||||||
|
are reported to a report_rom service as "acpi" report. The report can be
|
||||||
|
consumed by any interested party, e.g. the platform driver. Please consult
|
||||||
|
the platform driver README for more details.
|
||||||
|
|
||||||
Usage
|
Usage
|
||||||
-----
|
-----
|
||||||
|
|
||||||
Start the 'acpi_drv' in your Genode environment. Do not start the 'pci_drv'
|
|
||||||
since this will be used as a slave of the 'acpi_drv'. You still must load the
|
|
||||||
'pci_drv' in your boot loader.
|
|
||||||
|
|
||||||
Configuration snipped (please note that IRQ service requests of the 'timer' are
|
|
||||||
routed to the ACPI-driver):
|
|
||||||
|
|
||||||
!<start name="acpi_drv">
|
!<start name="acpi_drv">
|
||||||
! <resource name="RAM" quantum="2M" constrain_phys="yes"/>
|
! <resource name="RAM" quantum="2M"/>
|
||||||
! <provides>
|
|
||||||
! <service name="PCI"/>
|
|
||||||
! <service name="IRQ" />
|
|
||||||
! </provides>
|
|
||||||
! <config>
|
|
||||||
! <policy label="acpi_drv">
|
|
||||||
! <pci class="ALL"/>
|
|
||||||
! </policy>
|
|
||||||
! </config>
|
|
||||||
! <route>
|
|
||||||
! <any-service> <parent/> <any-child /> </any-service>
|
|
||||||
! </route>
|
|
||||||
!</start>
|
!</start>
|
||||||
!
|
!
|
||||||
!<start name="timer">
|
!<start name="report_rom">
|
||||||
! <resource name="RAM" quantum="1M"/>
|
! <resource name="RAM" quantum="2M"/>
|
||||||
! <provides><service name="Timer"/></provides>
|
! <provides>
|
||||||
! <route>
|
! <service name="ROM" />
|
||||||
! <service name="IRQ"><child name="acpi_drv" /></service>
|
! <service name="Report" />
|
||||||
! <any-service> <parent /> <any-child /></any-service>
|
! </provides>
|
||||||
! </route>
|
! <config>
|
||||||
|
! <rom>
|
||||||
|
! <policy label="platform_drv -> acpi" report="acpi_drv -> acpi"/>
|
||||||
|
! </rom>
|
||||||
|
! </config>
|
||||||
!</start>
|
!</start>
|
||||||
|
!
|
||||||
The 'config' node on the 'acpi_drv' requires an policy entry that permits the
|
!<start name="platform_drv">
|
||||||
'acpi_drv' to iterate over all pci devices in order to rewrite the
|
! ...
|
||||||
interrupt numbers according to the 'MADT' table. Furthermore the whole 'config'
|
|
||||||
node will be passed on to the 'pci_drv' which obtains from it the required
|
|
||||||
policy for each client. Additionally the constrain_phys attribute is a
|
|
||||||
feature of init, which applies to the pci_drv. Please read the 'pci_drv'
|
|
||||||
README for more details.
|
|
||||||
|
@ -12,8 +12,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <irq_session/connection.h>
|
#include <irq_session/connection.h>
|
||||||
#include <pci_session/connection.h>
|
#include <platform_session/connection.h>
|
||||||
#include <pci_device/client.h>
|
#include <platform_device/client.h>
|
||||||
#include <util/volatile_object.h>
|
#include <util/volatile_object.h>
|
||||||
|
|
||||||
#include <ahci.h>
|
#include <ahci.h>
|
||||||
@ -32,9 +32,9 @@ struct X86_hba : Platform::Hba
|
|||||||
PCI_CMD = 0x4,
|
PCI_CMD = 0x4,
|
||||||
};
|
};
|
||||||
|
|
||||||
Pci::Connection pci;
|
Platform::Connection pci;
|
||||||
Pci::Device_capability pci_device_cap;
|
Platform::Device_capability pci_device_cap;
|
||||||
Lazy_volatile_object<Pci::Device_client> pci_device;
|
Lazy_volatile_object<Platform::Device_client> pci_device;
|
||||||
Lazy_volatile_object<Irq_session_client> irq;
|
Lazy_volatile_object<Irq_session_client> irq;
|
||||||
addr_t res_base;
|
addr_t res_base;
|
||||||
size_t res_size;
|
size_t res_size;
|
||||||
@ -49,7 +49,7 @@ struct X86_hba : Platform::Hba
|
|||||||
throw -1;
|
throw -1;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
} catch (Pci::Device::Quota_exceeded) {
|
} catch (Platform::Device::Quota_exceeded) {
|
||||||
Genode::env()->parent()->upgrade(pci.cap(), "ram_quota=4096");
|
Genode::env()->parent()->upgrade(pci.cap(), "ram_quota=4096");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -60,7 +60,7 @@ struct X86_hba : Platform::Hba
|
|||||||
pci_device->device_id(), pci_device->class_code());
|
pci_device->device_id(), pci_device->class_code());
|
||||||
|
|
||||||
/* read base address of controller */
|
/* read base address of controller */
|
||||||
Pci::Device::Resource resource = pci_device->resource(AHCI_BASE_ID);
|
Platform::Device::Resource resource = pci_device->resource(AHCI_BASE_ID);
|
||||||
res_base = resource.base();
|
res_base = resource.base();
|
||||||
res_size = resource.size();
|
res_size = resource.size();
|
||||||
|
|
||||||
@ -68,9 +68,9 @@ struct X86_hba : Platform::Hba
|
|||||||
PDBG("base: %lx size: %zx", res_base, res_size);
|
PDBG("base: %lx size: %zx", res_base, res_size);
|
||||||
|
|
||||||
/* enable bus master */
|
/* enable bus master */
|
||||||
uint16_t cmd = pci_device->config_read(PCI_CMD, Pci::Device::ACCESS_16BIT);
|
uint16_t cmd = pci_device->config_read(PCI_CMD, Platform::Device::ACCESS_16BIT);
|
||||||
cmd |= 0x4;
|
cmd |= 0x4;
|
||||||
pci_device->config_write(PCI_CMD, cmd, Pci::Device::ACCESS_16BIT);
|
pci_device->config_write(PCI_CMD, cmd, Platform::Device::ACCESS_16BIT);
|
||||||
|
|
||||||
irq.construct(pci_device->irq(0));
|
irq.construct(pci_device->irq(0));
|
||||||
}
|
}
|
||||||
@ -78,19 +78,19 @@ struct X86_hba : Platform::Hba
|
|||||||
void disable_msi()
|
void disable_msi()
|
||||||
{
|
{
|
||||||
enum { PM_CAP_OFF = 0x34, MSI_CAP = 0x5, MSI_ENABLED = 0x1 };
|
enum { PM_CAP_OFF = 0x34, MSI_CAP = 0x5, MSI_ENABLED = 0x1 };
|
||||||
uint8_t cap = pci_device->config_read(PM_CAP_OFF, ::Pci::Device::ACCESS_8BIT);
|
uint8_t cap = pci_device->config_read(PM_CAP_OFF, Platform::Device::ACCESS_8BIT);
|
||||||
|
|
||||||
/* iterate through cap pointers */
|
/* iterate through cap pointers */
|
||||||
for (uint16_t val = 0; cap; cap = val >> 8) {
|
for (uint16_t val = 0; cap; cap = val >> 8) {
|
||||||
val = pci_device->config_read(cap, ::Pci::Device::ACCESS_16BIT);
|
val = pci_device->config_read(cap, Platform::Device::ACCESS_16BIT);
|
||||||
|
|
||||||
if ((val & 0xff) != MSI_CAP)
|
if ((val & 0xff) != MSI_CAP)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
uint16_t msi = pci_device->config_read(cap + 2, ::Pci::Device::ACCESS_16BIT);
|
uint16_t msi = pci_device->config_read(cap + 2, Platform::Device::ACCESS_16BIT);
|
||||||
|
|
||||||
if (msi & MSI_ENABLED) {
|
if (msi & MSI_ENABLED) {
|
||||||
pci_device->config_write(cap + 2, msi ^ MSI_CAP, ::Pci::Device::ACCESS_8BIT);
|
pci_device->config_write(cap + 2, msi ^ MSI_CAP, Platform::Device::ACCESS_8BIT);
|
||||||
PINF("Disabled MSIs %x", msi);
|
PINF("Disabled MSIs %x", msi);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
#include <input/component.h>
|
#include <input/component.h>
|
||||||
#include <input/root.h>
|
#include <input/root.h>
|
||||||
#include <os/server.h>
|
#include <os/server.h>
|
||||||
#include <pci_session/connection.h>
|
#include <platform_session/connection.h>
|
||||||
|
|
||||||
/* local includes */
|
/* local includes */
|
||||||
#include "i8042.h"
|
#include "i8042.h"
|
||||||
@ -38,8 +38,8 @@ struct Main
|
|||||||
Input::Session_component session;
|
Input::Session_component session;
|
||||||
Input::Root_component root;
|
Input::Root_component root;
|
||||||
|
|
||||||
Pci::Connection platform;
|
Platform::Connection platform;
|
||||||
Pci::Device_client device_ps2;
|
Platform::Device_client device_ps2;
|
||||||
|
|
||||||
I8042 i8042;
|
I8042 i8042;
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
This directory contains the implementation of Genode's PCI driver.
|
This directory contains the implementation of Genode's x86 platform driver.
|
||||||
|
|
||||||
Behavior
|
Behavior
|
||||||
--------
|
--------
|
||||||
@ -7,12 +7,13 @@ On startup the driver scans the PCI bus hierarchy and stores the found devices.
|
|||||||
Per client a policy must be configured that states which client can
|
Per client a policy must be configured that states which client can
|
||||||
access certain devices to form a virtual pci bus per client. The client may
|
access certain devices to form a virtual pci bus per client. The client may
|
||||||
iterate through the virtual pci bus using the 'first' and 'next' methods of
|
iterate through the virtual pci bus using the 'first' and 'next' methods of
|
||||||
the pci_session interface to discover all available devices of the virtual bus.
|
the platform_session interface to discover all available devices of the virtual
|
||||||
Non PCI devices may be discovered by using 'device' of the pci_session
|
bus. Non PCI devices may be discovered by using 'device' of the
|
||||||
interface. As a result of the discovery a client obtains a device capability.
|
platform_session interface. As a result of the discovery a client obtains a
|
||||||
|
device capability.
|
||||||
|
|
||||||
With the device capability the resources of the devices can be obtained, e.g.
|
With the device capability the resources of the devices can be obtained, e.g.
|
||||||
io_port, io_mem and irq of the pci_device interface.
|
io_port, io_mem and irq of the platform_device interface.
|
||||||
|
|
||||||
Policy usage
|
Policy usage
|
||||||
------------
|
------------
|
||||||
@ -21,7 +22,7 @@ A policy may contain several nodes describing several devices. The entries of
|
|||||||
a policy may describe PCI devices as non PCI devices. A PCI device is
|
a policy may describe PCI devices as non PCI devices. A PCI device is
|
||||||
explicitly configured by the triple 'bus', 'device', 'function':
|
explicitly configured by the triple 'bus', 'device', 'function':
|
||||||
|
|
||||||
!<start name="pci_drv">
|
!<start name="platform_drv">
|
||||||
! <resource name="RAM" quantum="8M" constrain_phys="yes"/>
|
! <resource name="RAM" quantum="8M" constrain_phys="yes"/>
|
||||||
! ...
|
! ...
|
||||||
! <config>
|
! <config>
|
||||||
@ -30,11 +31,11 @@ explicitly configured by the triple 'bus', 'device', 'function':
|
|||||||
! <pci bus="0" device="18" function="3"/>
|
! <pci bus="0" device="18" function="3"/>
|
||||||
! </policy>
|
! </policy>
|
||||||
! </config>
|
! </config>
|
||||||
!</start>
|
! ...
|
||||||
|
|
||||||
or more fuzzy by a device class alias:
|
or more fuzzy by a device class alias:
|
||||||
|
|
||||||
!<start name="pci_drv">
|
!<start name="platform_drv">
|
||||||
! <resource name="RAM" quantum="8M" constrain_phys="yes"/>
|
! <resource name="RAM" quantum="8M" constrain_phys="yes"/>
|
||||||
! ...
|
! ...
|
||||||
! <config>
|
! <config>
|
||||||
@ -42,19 +43,19 @@ or more fuzzy by a device class alias:
|
|||||||
! <pci class="USB"/>
|
! <pci class="USB"/>
|
||||||
! </policy>
|
! </policy>
|
||||||
! </config>
|
! </config>
|
||||||
!</start>
|
! ...
|
||||||
|
|
||||||
|
|
||||||
Non PCI devices, as the PS2 controller are named by a "device" node in the policy:
|
Non PCI devices, as the PS2 controller are named by a "device" node in the policy:
|
||||||
|
|
||||||
!<start name="pci_drv">
|
!<start name="platform_drv">
|
||||||
! <resource name="RAM" quantum="8M" constrain_phys="yes"/>
|
! <resource name="RAM" quantum="8M" constrain_phys="yes"/>
|
||||||
! <config>
|
! <config>
|
||||||
! <policy label="ps_drv">
|
! <policy label="ps_drv">
|
||||||
! <device name="PS2/>
|
! <device name="PS2/>
|
||||||
! </policy>
|
! </policy>
|
||||||
! </config>
|
! </config>
|
||||||
!</start>
|
! ...
|
||||||
|
|
||||||
|
|
||||||
The first entry ('pci' or 'dev') of the policy node that matches will grant
|
The first entry ('pci' or 'dev') of the policy node that matches will grant
|
||||||
@ -68,24 +69,53 @@ discovery by the client with the fuzzy pci class policy.
|
|||||||
By default the driver will try to use MSIs if the device and the used kernel
|
By default the driver will try to use MSIs if the device and the used kernel
|
||||||
supports it. This behaviour can be overwritten:
|
supports it. This behaviour can be overwritten:
|
||||||
|
|
||||||
!<start name="pci_drv">
|
!<start name="platform_drv">
|
||||||
! <resource name="RAM" quantum="8M" constrain_phys="yes"/>
|
! <resource name="RAM" quantum="8M" constrain_phys="yes"/>
|
||||||
! <config>
|
! <config>
|
||||||
! <policy label="nic_drv" irq_mode="nomsi">
|
! <policy label="nic_drv" irq_mode="nomsi">
|
||||||
! ...
|
! ...
|
||||||
! </policy>
|
! </policy>
|
||||||
! </config>
|
! </config>
|
||||||
!</start>
|
! ...
|
||||||
|
|
||||||
The constrain_phys attribute is evaluated by init. If set to "yes" it
|
The constrain_phys attribute is evaluated by init. If set to "yes" it
|
||||||
permits a component, the pci driver, to restrict the allocation of memory to
|
permits a component, the platform driver, to restrict the allocation of memory to
|
||||||
specific physical RAM ranges. The PCI driver uses this feature to ensure that
|
specific physical RAM ranges. The platform driver uses this feature to ensure that
|
||||||
the allocation of DMA capable memory consider several restrictions. For
|
the allocation of DMA capable memory consider several restrictions. For
|
||||||
example, some drivers, as the UHCI controller, requires a
|
example, some drivers, as the UHCI controller, requires a
|
||||||
physical memory address below 4G. Another example is that on 32bit hosts
|
physical memory address below 4G. Another example is that on 32bit hosts
|
||||||
physical to virtual identical mappings of DMA memory for the device_pd
|
physical to virtual identical mappings of DMA memory for the device_pd
|
||||||
(required when IOMMU is used) must be below the kernel memory boundary (3G).
|
(required when IOMMU is used) must be below the kernel memory boundary (3G).
|
||||||
|
|
||||||
|
By default the platform driver waits on startup on a report of the acpi driver,
|
||||||
|
which conatins further information about the platform the platform driver can
|
||||||
|
not discover (e.g. IRQ re-routing information, pci config extended space
|
||||||
|
information).
|
||||||
|
|
||||||
|
A specific route to a report_rom service named 'acpi_report_rom' looks as
|
||||||
|
in the following:
|
||||||
|
|
||||||
|
!<start name="platform_drv">
|
||||||
|
! ...
|
||||||
|
! <route>
|
||||||
|
! <service name="ROM">
|
||||||
|
! <if-arg key="label" value="acpi"/> <child name="acpi_report_rom"/>
|
||||||
|
! </service>
|
||||||
|
! ...
|
||||||
|
! </route>
|
||||||
|
! ...
|
||||||
|
|
||||||
|
For platforms which don't support or require the ACPI information -
|
||||||
|
e.g. base-okl4, base-pistachio, base-fiasco - the platform driver can be
|
||||||
|
configured to not wait for the acpi report:
|
||||||
|
|
||||||
|
!<start name="platform_drv">
|
||||||
|
! ...
|
||||||
|
! <config acpi="no">
|
||||||
|
! ...
|
||||||
|
! </config>
|
||||||
|
! ...
|
||||||
|
|
||||||
Supported PCI class aliases
|
Supported PCI class aliases
|
||||||
---------------------------
|
---------------------------
|
||||||
|
|
||||||
@ -108,7 +138,7 @@ Supported non PCI devices
|
|||||||
|
|
||||||
The driver provides for the PS2 controller the IO_PORT and IRQ resources.
|
The driver provides for the PS2 controller the IO_PORT and IRQ resources.
|
||||||
|
|
||||||
!<start name="pci_drv">
|
!<start name="platform_drv">
|
||||||
! <resource name="RAM" quantum="8M" constrain_phys="yes"/>
|
! <resource name="RAM" quantum="8M" constrain_phys="yes"/>
|
||||||
! <config>
|
! <config>
|
||||||
! <policy label="ps_drv">
|
! <policy label="ps_drv">
|
@ -1,11 +1,11 @@
|
|||||||
/*
|
/*
|
||||||
* \brief Pci device protection domain service for pci_drv
|
* \brief Pci device protection domain service for platform driver
|
||||||
* \author Alexander Boettcher
|
* \author Alexander Boettcher
|
||||||
* \date 2013-02-10
|
* \date 2013-02-10
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 2013-2013 Genode Labs GmbH
|
* Copyright (C) 2013-2015 Genode Labs GmbH
|
||||||
*
|
*
|
||||||
* This file is part of the Genode OS framework, which is distributed
|
* This file is part of the Genode OS framework, which is distributed
|
||||||
* under the terms of the GNU General Public License version 2.
|
* under the terms of the GNU General Public License version 2.
|
||||||
@ -24,7 +24,7 @@
|
|||||||
#include "../pci_device_pd_ipc.h"
|
#include "../pci_device_pd_ipc.h"
|
||||||
|
|
||||||
|
|
||||||
void Pci::Device_pd_component::attach_dma_mem(Genode::Ram_dataspace_capability ds_cap)
|
void Platform::Device_pd_component::attach_dma_mem(Genode::Ram_dataspace_capability ds_cap)
|
||||||
{
|
{
|
||||||
using namespace Genode;
|
using namespace Genode;
|
||||||
|
|
||||||
@ -52,7 +52,7 @@ void Pci::Device_pd_component::attach_dma_mem(Genode::Ram_dataspace_capability d
|
|||||||
touch_read(reinterpret_cast<unsigned char *>(page));
|
touch_read(reinterpret_cast<unsigned char *>(page));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Pci::Device_pd_component::assign_pci(Genode::Io_mem_dataspace_capability io_mem_cap)
|
void Platform::Device_pd_component::assign_pci(Genode::Io_mem_dataspace_capability io_mem_cap)
|
||||||
{
|
{
|
||||||
using namespace Genode;
|
using namespace Genode;
|
||||||
|
|
||||||
@ -78,7 +78,7 @@ int main(int argc, char **argv)
|
|||||||
{
|
{
|
||||||
using namespace Genode;
|
using namespace Genode;
|
||||||
|
|
||||||
Genode::printf("PCI device pd starting ...\n");
|
Genode::printf("Device protection domain starting ...\n");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initialize server entry point
|
* Initialize server entry point
|
||||||
@ -88,18 +88,18 @@ int main(int argc, char **argv)
|
|||||||
};
|
};
|
||||||
|
|
||||||
static Cap_connection cap;
|
static Cap_connection cap;
|
||||||
static Rpc_entrypoint ep(&cap, STACK_SIZE, "pci_device_pd_ep");
|
static Rpc_entrypoint ep(&cap, STACK_SIZE, "device_pd_ep");
|
||||||
|
|
||||||
static Pci::Device_pd_component pci_device_component;
|
static Platform::Device_pd_component pd_component;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Attach input root interface to the entry point
|
* Attach input root interface to the entry point
|
||||||
*/
|
*/
|
||||||
static Static_root<Pci::Device_pd> root(ep.manage(&pci_device_component));
|
static Static_root<Platform::Device_pd> root(ep.manage(&pd_component));
|
||||||
|
|
||||||
env()->parent()->announce(ep.manage(&root));
|
env()->parent()->announce(ep.manage(&root));
|
||||||
|
|
||||||
printf("PCI device pd started\n");
|
printf("Device protection domain started\n");
|
||||||
|
|
||||||
Genode::sleep_forever();
|
Genode::sleep_forever();
|
||||||
return 0;
|
return 0;
|
@ -1,4 +1,4 @@
|
|||||||
TARGET = pci_device_pd
|
TARGET = device_pd
|
||||||
SRC_CC = main.cc
|
SRC_CC = main.cc
|
||||||
LIBS = base
|
LIBS = base
|
||||||
|
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* \brief Implementation of shared IRQs in PCI driver
|
* \brief Implementation of shared IRQs in platform driver
|
||||||
* \author Alexander Boettcher
|
* \author Alexander Boettcher
|
||||||
* \date 2015-03-27
|
* \date 2015-03-27
|
||||||
*/
|
*/
|
||||||
@ -18,12 +18,12 @@
|
|||||||
/* Genode OS includes */
|
/* Genode OS includes */
|
||||||
#include <platform/irq_proxy.h>
|
#include <platform/irq_proxy.h>
|
||||||
|
|
||||||
/* PCI driver include */
|
/* Platform driver include */
|
||||||
#include "irq.h"
|
#include "irq.h"
|
||||||
#include "pci_session_component.h"
|
#include "pci_session_component.h"
|
||||||
|
|
||||||
|
|
||||||
namespace Pci {
|
namespace Platform {
|
||||||
class Irq_component;
|
class Irq_component;
|
||||||
class Irq_allocator;
|
class Irq_allocator;
|
||||||
class Irq_thread;
|
class Irq_thread;
|
||||||
@ -36,7 +36,7 @@ using Genode::addr_t;
|
|||||||
/**
|
/**
|
||||||
* A simple range allocator implementation used by the Irq_proxy
|
* A simple range allocator implementation used by the Irq_proxy
|
||||||
*/
|
*/
|
||||||
class Pci::Irq_allocator : public Genode::Range_allocator
|
class Platform::Irq_allocator : public Genode::Range_allocator
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
|
||||||
@ -94,7 +94,7 @@ class Pci::Irq_allocator : public Genode::Range_allocator
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Required by Irq_proxy if we would like to have a thread per IRQ,
|
* Required by Irq_proxy if we would like to have a thread per IRQ,
|
||||||
* which we don't want to in the PCI driver - one thread is sufficient.
|
* which we don't want to in the platform driver - one thread is sufficient.
|
||||||
*/
|
*/
|
||||||
class NoThread
|
class NoThread
|
||||||
{
|
{
|
||||||
@ -109,7 +109,7 @@ class NoThread
|
|||||||
/**
|
/**
|
||||||
* Thread waiting for signals caused by IRQs
|
* Thread waiting for signals caused by IRQs
|
||||||
*/
|
*/
|
||||||
class Pci::Irq_thread : public Genode::Thread<4096>
|
class Platform::Irq_thread : public Genode::Thread<4096>
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
|
||||||
@ -145,8 +145,8 @@ class Pci::Irq_thread : public Genode::Thread<4096>
|
|||||||
* One allocator for managing in use IRQ numbers and one IRQ thread waiting
|
* One allocator for managing in use IRQ numbers and one IRQ thread waiting
|
||||||
* for Genode signals of all hardware IRQs.
|
* for Genode signals of all hardware IRQs.
|
||||||
*/
|
*/
|
||||||
static Pci::Irq_allocator irq_alloc;
|
static Platform::Irq_allocator irq_alloc;
|
||||||
static Pci::Irq_thread irq_thread;
|
static Platform::Irq_thread irq_thread;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -154,12 +154,12 @@ static Pci::Irq_thread irq_thread;
|
|||||||
*/
|
*/
|
||||||
typedef Genode::Irq_proxy<NoThread> Proxy;
|
typedef Genode::Irq_proxy<NoThread> Proxy;
|
||||||
|
|
||||||
class Pci::Irq_component : public Proxy
|
class Platform::Irq_component : public Proxy
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
|
||||||
Genode::Irq_connection _irq;
|
Genode::Irq_connection _irq;
|
||||||
Genode::Signal_dispatcher<Pci::Irq_component> _irq_dispatcher;
|
Genode::Signal_dispatcher<Platform::Irq_component> _irq_dispatcher;
|
||||||
|
|
||||||
bool _associated;
|
bool _associated;
|
||||||
|
|
||||||
@ -212,7 +212,7 @@ class Pci::Irq_component : public Proxy
|
|||||||
** PCI IRQ session component **
|
** PCI IRQ session component **
|
||||||
*******************************/
|
*******************************/
|
||||||
|
|
||||||
void Pci::Irq_session_component::ack_irq()
|
void Platform::Irq_session_component::ack_irq()
|
||||||
{
|
{
|
||||||
if (msi()) {
|
if (msi()) {
|
||||||
Genode::Irq_session_client irq_msi(_irq_cap);
|
Genode::Irq_session_client irq_msi(_irq_cap);
|
||||||
@ -232,7 +232,7 @@ void Pci::Irq_session_component::ack_irq()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Pci::Irq_session_component::Irq_session_component(unsigned irq,
|
Platform::Irq_session_component::Irq_session_component(unsigned irq,
|
||||||
addr_t pci_config_space)
|
addr_t pci_config_space)
|
||||||
:
|
:
|
||||||
_gsi(irq)
|
_gsi(irq)
|
||||||
@ -269,7 +269,7 @@ Pci::Irq_session_component::Irq_session_component(unsigned irq,
|
|||||||
Genode::Irq_session::Trigger trigger;
|
Genode::Irq_session::Trigger trigger;
|
||||||
Genode::Irq_session::Polarity polarity;
|
Genode::Irq_session::Polarity polarity;
|
||||||
|
|
||||||
_gsi = Pci::Irq_override::irq_override(_gsi, trigger, polarity);
|
_gsi = Platform::Irq_override::irq_override(_gsi, trigger, polarity);
|
||||||
if (_gsi != irq || trigger != Genode::Irq_session::TRIGGER_UNCHANGED ||
|
if (_gsi != irq || trigger != Genode::Irq_session::TRIGGER_UNCHANGED ||
|
||||||
polarity != Genode::Irq_session::POLARITY_UNCHANGED)
|
polarity != Genode::Irq_session::POLARITY_UNCHANGED)
|
||||||
PINF("IRQ override %u->%u trigger mode=%s polarity=%s", irq, _gsi,
|
PINF("IRQ override %u->%u trigger mode=%s polarity=%s", irq, _gsi,
|
||||||
@ -287,7 +287,7 @@ Pci::Irq_session_component::Irq_session_component(unsigned irq,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Pci::Irq_session_component::~Irq_session_component()
|
Platform::Irq_session_component::~Irq_session_component()
|
||||||
{
|
{
|
||||||
if (msi()) {
|
if (msi()) {
|
||||||
Genode::Irq_session_client irq_msi(_irq_cap);
|
Genode::Irq_session_client irq_msi(_irq_cap);
|
||||||
@ -308,7 +308,7 @@ Pci::Irq_session_component::~Irq_session_component()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Pci::Irq_session_component::sigh(Genode::Signal_context_capability sigh)
|
void Platform::Irq_session_component::sigh(Genode::Signal_context_capability sigh)
|
||||||
{
|
{
|
||||||
if (msi()) {
|
if (msi()) {
|
||||||
/* register signal handler for msi directly at parent */
|
/* register signal handler for msi directly at parent */
|
||||||
@ -336,12 +336,12 @@ void Pci::Irq_session_component::sigh(Genode::Signal_context_capability sigh)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
unsigned short Pci::Irq_routing::rewrite(unsigned char bus, unsigned char dev,
|
unsigned short Platform::Irq_routing::rewrite(unsigned char bus, unsigned char dev,
|
||||||
unsigned char func, unsigned char pin)
|
unsigned char func, unsigned char pin)
|
||||||
{
|
{
|
||||||
for (Irq_routing *i = list()->first(); i; i = i->next())
|
for (Irq_routing *i = list()->first(); i; i = i->next())
|
||||||
if ((dev == i->_device) && (pin - 1 == i->_device_pin) &&
|
if ((dev == i->_device) && (pin - 1 == i->_device_pin) &&
|
||||||
(i->_bridge_bdf == Pci::bridge_bdf(bus)))
|
(i->_bridge_bdf == Platform::bridge_bdf(bus)))
|
||||||
return i->_gsi;
|
return i->_gsi;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
@ -20,18 +20,18 @@
|
|||||||
#include <irq_session/irq_session.h>
|
#include <irq_session/irq_session.h>
|
||||||
#include <irq_session/capability.h>
|
#include <irq_session/capability.h>
|
||||||
|
|
||||||
/* PCI local includes */
|
/* platform local includes */
|
||||||
#include <platform/irq_proxy.h>
|
#include <platform/irq_proxy.h>
|
||||||
|
|
||||||
|
|
||||||
namespace Pci {
|
namespace Platform {
|
||||||
class Irq_session_component;
|
class Irq_session_component;
|
||||||
class Irq_override;
|
class Irq_override;
|
||||||
class Irq_routing;
|
class Irq_routing;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class Pci::Irq_session_component : public Genode::Rpc_object<Genode::Irq_session>,
|
class Platform::Irq_session_component : public Genode::Rpc_object<Genode::Irq_session>,
|
||||||
public Genode::List<Irq_session_component>::Element
|
public Genode::List<Irq_session_component>::Element
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
@ -73,7 +73,7 @@ class Pci::Irq_session_component : public Genode::Rpc_object<Genode::Irq_session
|
|||||||
/**
|
/**
|
||||||
* List that holds interrupt override information
|
* List that holds interrupt override information
|
||||||
*/
|
*/
|
||||||
class Pci::Irq_override : public Genode::List<Pci::Irq_override>::Element
|
class Platform::Irq_override : public Genode::List<Platform::Irq_override>::Element
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
|
||||||
@ -151,7 +151,7 @@ class Pci::Irq_override : public Genode::List<Pci::Irq_override>::Element
|
|||||||
/**
|
/**
|
||||||
* List that holds interrupt rewrite information
|
* List that holds interrupt rewrite information
|
||||||
*/
|
*/
|
||||||
class Pci::Irq_routing : public Genode::List<Pci::Irq_routing>::Element
|
class Platform::Irq_routing : public Genode::List<Platform::Irq_routing>::Element
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* \brief PCI-bus driver
|
* \brief Platform driver for x86
|
||||||
* \author Norman Feske
|
* \author Norman Feske
|
||||||
* \date 2008-01-28
|
* \date 2008-01-28
|
||||||
*/
|
*/
|
||||||
@ -23,7 +23,7 @@
|
|||||||
#include "pci_device_config.h"
|
#include "pci_device_config.h"
|
||||||
|
|
||||||
using namespace Genode;
|
using namespace Genode;
|
||||||
using namespace Pci;
|
using namespace Platform;
|
||||||
|
|
||||||
class Device_pd_policy : public Genode::Slave_policy
|
class Device_pd_policy : public Genode::Slave_policy
|
||||||
{
|
{
|
||||||
@ -45,7 +45,7 @@ class Device_pd_policy : public Genode::Slave_policy
|
|||||||
|
|
||||||
Device_pd_policy(Genode::Rpc_entrypoint &slave_ep)
|
Device_pd_policy(Genode::Rpc_entrypoint &slave_ep)
|
||||||
:
|
:
|
||||||
Slave_policy("pci_device_pd", slave_ep),
|
Slave_policy("device_pd", slave_ep),
|
||||||
_lock(Genode::Lock::LOCKED)
|
_lock(Genode::Lock::LOCKED)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
@ -54,8 +54,8 @@ class Device_pd_policy : public Genode::Slave_policy
|
|||||||
Genode::Allocator *alloc,
|
Genode::Allocator *alloc,
|
||||||
Genode::Server *server)
|
Genode::Server *server)
|
||||||
{
|
{
|
||||||
/* wait for 'pci_drv' to announce the PCI service */
|
/* wait for 'platform_drv' to announce the DEVICE_PD service */
|
||||||
if (Genode::strcmp(service_name, "PCI_DEV_PD"))
|
if (Genode::strcmp(service_name, "DEVICE_PD"))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
_cap = root;
|
_cap = root;
|
||||||
@ -75,27 +75,27 @@ class Device_pd_policy : public Genode::Slave_policy
|
|||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
printf("PCI driver started\n");
|
printf("platform driver started\n");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initialize server entry point
|
* Initialize server entry point
|
||||||
*/
|
*/
|
||||||
enum {
|
enum {
|
||||||
STACK_SIZE = 2 * sizeof(addr_t)*1024,
|
STACK_SIZE = 2 * sizeof(addr_t)*1024,
|
||||||
PCI_DEVICE_PD_RAM_QUOTA = 196 * 4096,
|
DEVICE_PD_RAM_QUOTA = 196 * 4096,
|
||||||
};
|
};
|
||||||
|
|
||||||
static Cap_connection cap;
|
static Cap_connection cap;
|
||||||
static Rpc_entrypoint ep(&cap, STACK_SIZE, "pci_ep");
|
static Rpc_entrypoint ep(&cap, STACK_SIZE, "platform_ep");
|
||||||
|
|
||||||
/* use 'pci_device_pd' as slave service */
|
/* use 'device_pd' as slave service */
|
||||||
Session_capability session_dev_pd;
|
Session_capability session_dev_pd;
|
||||||
Genode::Root_capability device_pd_root;
|
Genode::Root_capability device_pd_root;
|
||||||
try {
|
try {
|
||||||
static Rpc_entrypoint device_pd_ep(&cap, STACK_SIZE, "device_pd_slave");
|
static Rpc_entrypoint device_pd_ep(&cap, STACK_SIZE, "device_pd_slave");
|
||||||
static Device_pd_policy device_pd_policy(device_pd_ep);
|
static Device_pd_policy device_pd_policy(device_pd_ep);
|
||||||
static Genode::Slave device_pd_slave(device_pd_ep, device_pd_policy,
|
static Genode::Slave device_pd_slave(device_pd_ep, device_pd_policy,
|
||||||
PCI_DEVICE_PD_RAM_QUOTA);
|
DEVICE_PD_RAM_QUOTA);
|
||||||
device_pd_root = device_pd_policy.root();
|
device_pd_root = device_pd_policy.root();
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
PWRN("PCI device protection domain for IOMMU support is not available");
|
PWRN("PCI device protection domain for IOMMU support is not available");
|
||||||
@ -140,7 +140,7 @@ int main(int argc, char **argv)
|
|||||||
/*
|
/*
|
||||||
* Let the entry point serve the PCI root interface
|
* Let the entry point serve the PCI root interface
|
||||||
*/
|
*/
|
||||||
static Pci::Root root(&ep, &sliced_heap, PCI_DEVICE_PD_RAM_QUOTA,
|
static Platform::Root root(&ep, &sliced_heap, DEVICE_PD_RAM_QUOTA,
|
||||||
device_pd_root, report_addr);
|
device_pd_root, report_addr);
|
||||||
|
|
||||||
env()->parent()->announce(ep.manage(&root));
|
env()->parent()->announce(ep.manage(&root));
|
@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
namespace Nonpci { class Ps2; }
|
namespace Nonpci { class Ps2; }
|
||||||
|
|
||||||
class Nonpci::Ps2 : public Pci::Device_component
|
class Nonpci::Ps2 : public Platform::Device_component
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
|
||||||
@ -35,9 +35,9 @@ class Nonpci::Ps2 : public Pci::Device_component
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
Ps2(Genode::Rpc_entrypoint * ep, Pci::Session_component * session)
|
Ps2(Genode::Rpc_entrypoint * ep, Platform::Session_component * session)
|
||||||
:
|
:
|
||||||
Pci::Device_component(ep, session, IRQ_KEYBOARD),
|
Platform::Device_component(ep, session, IRQ_KEYBOARD),
|
||||||
_irq_mouse(IRQ_MOUSE),
|
_irq_mouse(IRQ_MOUSE),
|
||||||
_data(REG_DATA, ACCESS_WIDTH), _status(REG_STATUS, ACCESS_WIDTH)
|
_data(REG_DATA, ACCESS_WIDTH), _status(REG_STATUS, ACCESS_WIDTH)
|
||||||
{ }
|
{ }
|
||||||
@ -74,9 +74,9 @@ class Nonpci::Ps2 : public Pci::Device_component
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PCI session component devices which are non PCI devices, e.g. PS2
|
* Platform session component devices which are non PCI devices, e.g. PS2
|
||||||
*/
|
*/
|
||||||
Pci::Device_capability Pci::Session_component::device(String const &name) {
|
Platform::Device_capability Platform::Session_component::device(String const &name) {
|
||||||
|
|
||||||
if (!name.is_valid_string())
|
if (!name.is_valid_string())
|
||||||
return Device_capability();
|
return Device_capability();
|
||||||
@ -116,7 +116,7 @@ Pci::Device_capability Pci::Session_component::device(String const &name) {
|
|||||||
_device_list.insert(dev);
|
_device_list.insert(dev);
|
||||||
return _ep->manage(dev);
|
return _ep->manage(dev);
|
||||||
} catch (Genode::Allocator::Out_of_memory) {
|
} catch (Genode::Allocator::Out_of_memory) {
|
||||||
throw Pci::Device::Quota_exceeded();
|
throw Platform::Device::Quota_exceeded();
|
||||||
} catch (Genode::Parent::Service_denied) {
|
} catch (Genode::Parent::Service_denied) {
|
||||||
return Device_capability();
|
return Device_capability();
|
||||||
}
|
}
|
@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
namespace Pci { class Bridge; }
|
namespace Platform { class Bridge; }
|
||||||
|
|
||||||
#include <util/list.h>
|
#include <util/list.h>
|
||||||
|
|
||||||
@ -21,7 +21,7 @@ namespace Pci { class Bridge; }
|
|||||||
/**
|
/**
|
||||||
* List of PCI-bridge devices
|
* List of PCI-bridge devices
|
||||||
*/
|
*/
|
||||||
class Pci::Bridge : public Genode::List<Bridge>::Element
|
class Platform::Bridge : public Genode::List<Bridge>::Element
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
|
@ -5,19 +5,18 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 2008-2013 Genode Labs GmbH
|
* Copyright (C) 2008-2015 Genode Labs GmbH
|
||||||
*
|
*
|
||||||
* This file is part of the Genode OS framework, which is distributed
|
* This file is part of the Genode OS framework, which is distributed
|
||||||
* under the terms of the GNU General Public License version 2.
|
* under the terms of the GNU General Public License version 2.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _CONFIG_ACCESS_H_
|
#pragma once
|
||||||
#define _CONFIG_ACCESS_H_
|
|
||||||
|
|
||||||
#include <io_port_session/connection.h>
|
#include <io_port_session/connection.h>
|
||||||
#include <pci_device/pci_device.h>
|
#include <platform_device/platform_device.h>
|
||||||
|
|
||||||
namespace Pci {
|
namespace Platform {
|
||||||
|
|
||||||
class Config_access
|
class Config_access
|
||||||
{
|
{
|
||||||
@ -178,5 +177,3 @@ namespace Pci {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* _CONFIG_ACCESS_H_ */
|
|
@ -13,7 +13,7 @@
|
|||||||
#include "pci_session_component.h"
|
#include "pci_session_component.h"
|
||||||
#include "pci_device_component.h"
|
#include "pci_device_component.h"
|
||||||
|
|
||||||
Genode::Io_port_session_capability Pci::Device_component::io_port(Genode::uint8_t v_id)
|
Genode::Io_port_session_capability Platform::Device_component::io_port(Genode::uint8_t v_id)
|
||||||
{
|
{
|
||||||
Genode::uint8_t max = sizeof(_io_port_conn) / sizeof(_io_port_conn[0]);
|
Genode::uint8_t max = sizeof(_io_port_conn) / sizeof(_io_port_conn[0]);
|
||||||
Genode::uint8_t i = 0, r_id = 0;
|
Genode::uint8_t i = 0, r_id = 0;
|
||||||
@ -37,7 +37,7 @@ Genode::Io_port_session_capability Pci::Device_component::io_port(Genode::uint8_
|
|||||||
return Genode::Io_port_session_capability();
|
return Genode::Io_port_session_capability();
|
||||||
}
|
}
|
||||||
|
|
||||||
Genode::Io_mem_session_capability Pci::Device_component::io_mem(Genode::uint8_t v_id)
|
Genode::Io_mem_session_capability Platform::Device_component::io_mem(Genode::uint8_t v_id)
|
||||||
{
|
{
|
||||||
Genode::uint8_t max = sizeof(_io_mem_conn) / sizeof(_io_mem_conn[0]);
|
Genode::uint8_t max = sizeof(_io_mem_conn) / sizeof(_io_mem_conn[0]);
|
||||||
Genode::uint8_t i = 0, r_id = 0;
|
Genode::uint8_t i = 0, r_id = 0;
|
||||||
@ -61,7 +61,7 @@ Genode::Io_mem_session_capability Pci::Device_component::io_mem(Genode::uint8_t
|
|||||||
return Genode::Io_mem_session_capability();
|
return Genode::Io_mem_session_capability();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Pci::Device_component::config_write(unsigned char address, unsigned value,
|
void Platform::Device_component::config_write(unsigned char address, unsigned value,
|
||||||
Access_size size)
|
Access_size size)
|
||||||
{
|
{
|
||||||
/* white list of ports which we permit to write */
|
/* white list of ports which we permit to write */
|
@ -1,18 +1,17 @@
|
|||||||
/*
|
/*
|
||||||
* \brief PCI-device component
|
* \brief platform device component
|
||||||
* \author Norman Feske
|
* \author Norman Feske
|
||||||
* \date 2008-01-28
|
* \date 2008-01-28
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 2008-2013 Genode Labs GmbH
|
* Copyright (C) 2008-2015 Genode Labs GmbH
|
||||||
*
|
*
|
||||||
* This file is part of the Genode OS framework, which is distributed
|
* This file is part of the Genode OS framework, which is distributed
|
||||||
* under the terms of the GNU General Public License version 2.
|
* under the terms of the GNU General Public License version 2.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _PCI_DEVICE_COMPONENT_H_
|
#pragma once
|
||||||
#define _PCI_DEVICE_COMPONENT_H_
|
|
||||||
|
|
||||||
/* base */
|
/* base */
|
||||||
#include <base/rpc_server.h>
|
#include <base/rpc_server.h>
|
||||||
@ -21,15 +20,15 @@
|
|||||||
#include <util/mmio.h>
|
#include <util/mmio.h>
|
||||||
|
|
||||||
/* os */
|
/* os */
|
||||||
#include <pci_device/pci_device.h>
|
#include <platform_device/platform_device.h>
|
||||||
|
|
||||||
/* local */
|
/* local */
|
||||||
#include "pci_device_config.h"
|
#include "pci_device_config.h"
|
||||||
#include "irq.h"
|
#include "irq.h"
|
||||||
|
|
||||||
namespace Pci { class Device_component; class Session_component; }
|
namespace Platform { class Device_component; class Session_component; }
|
||||||
|
|
||||||
class Pci::Device_component : public Genode::Rpc_object<Pci::Device>,
|
class Platform::Device_component : public Genode::Rpc_object<Platform::Device>,
|
||||||
public Genode::List<Device_component>::Element
|
public Genode::List<Device_component>::Element
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
@ -39,7 +38,7 @@ class Pci::Device_component : public Genode::Rpc_object<Pci::Device>,
|
|||||||
Genode::Io_mem_session_capability _io_mem_config_extended;
|
Genode::Io_mem_session_capability _io_mem_config_extended;
|
||||||
Config_access _config_access;
|
Config_access _config_access;
|
||||||
Genode::Rpc_entrypoint *_ep;
|
Genode::Rpc_entrypoint *_ep;
|
||||||
Pci::Session_component *_session;
|
Platform::Session_component *_session;
|
||||||
unsigned short _irq_line;
|
unsigned short _irq_line;
|
||||||
Irq_session_component _irq_session;
|
Irq_session_component _irq_session;
|
||||||
|
|
||||||
@ -82,17 +81,17 @@ class Pci::Device_component : public Genode::Rpc_object<Pci::Device>,
|
|||||||
|
|
||||||
Status::access_t status = Status::read(_device_config.read(&_config_access,
|
Status::access_t status = Status::read(_device_config.read(&_config_access,
|
||||||
PCI_STATUS,
|
PCI_STATUS,
|
||||||
Pci::Device::ACCESS_16BIT));
|
Platform::Device::ACCESS_16BIT));
|
||||||
if (!Status::Capabilities::get(status))
|
if (!Status::Capabilities::get(status))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
Genode::uint8_t cap = _device_config.read(&_config_access,
|
Genode::uint8_t cap = _device_config.read(&_config_access,
|
||||||
PCI_CAP_OFFSET,
|
PCI_CAP_OFFSET,
|
||||||
Pci::Device::ACCESS_8BIT);
|
Platform::Device::ACCESS_8BIT);
|
||||||
|
|
||||||
for (Genode::uint16_t val = 0; cap; cap = val >> 8) {
|
for (Genode::uint16_t val = 0; cap; cap = val >> 8) {
|
||||||
val = _device_config.read(&_config_access, cap,
|
val = _device_config.read(&_config_access, cap,
|
||||||
Pci::Device::ACCESS_16BIT);
|
Platform::Device::ACCESS_16BIT);
|
||||||
if ((val & 0xff) != CAP_MSI)
|
if ((val & 0xff) != CAP_MSI)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@ -112,7 +111,7 @@ class Pci::Device_component : public Genode::Rpc_object<Pci::Device>,
|
|||||||
using Genode::uint8_t;
|
using Genode::uint8_t;
|
||||||
|
|
||||||
uint8_t pin = _device_config.read(&_config_access, PCI_IRQ_PIN,
|
uint8_t pin = _device_config.read(&_config_access, PCI_IRQ_PIN,
|
||||||
Pci::Device::ACCESS_8BIT);
|
Platform::Device::ACCESS_8BIT);
|
||||||
if (!pin)
|
if (!pin)
|
||||||
return Irq_session_component::INVALID_IRQ;
|
return Irq_session_component::INVALID_IRQ;
|
||||||
|
|
||||||
@ -129,7 +128,7 @@ class Pci::Device_component : public Genode::Rpc_object<Pci::Device>,
|
|||||||
|
|
||||||
if (_irq_line != irq_r)
|
if (_irq_line != irq_r)
|
||||||
_device_config.write(&_config_access, PCI_IRQ_LINE, irq_r,
|
_device_config.write(&_config_access, PCI_IRQ_LINE, irq_r,
|
||||||
Pci::Device::ACCESS_8BIT);
|
Platform::Device::ACCESS_8BIT);
|
||||||
|
|
||||||
_irq_line = irq = irq_r;
|
_irq_line = irq = irq_r;
|
||||||
}
|
}
|
||||||
@ -139,13 +138,13 @@ class Pci::Device_component : public Genode::Rpc_object<Pci::Device>,
|
|||||||
return irq;
|
return irq;
|
||||||
|
|
||||||
uint16_t msi = _device_config.read(&_config_access, cap + 2,
|
uint16_t msi = _device_config.read(&_config_access, cap + 2,
|
||||||
Pci::Device::ACCESS_16BIT);
|
Platform::Device::ACCESS_16BIT);
|
||||||
|
|
||||||
if (msi & MSI_ENABLED)
|
if (msi & MSI_ENABLED)
|
||||||
/* disable MSI */
|
/* disable MSI */
|
||||||
_device_config.write(&_config_access, cap + 2,
|
_device_config.write(&_config_access, cap + 2,
|
||||||
msi ^ MSI_ENABLED,
|
msi ^ MSI_ENABLED,
|
||||||
Pci::Device::ACCESS_8BIT);
|
Platform::Device::ACCESS_8BIT);
|
||||||
|
|
||||||
return irq;
|
return irq;
|
||||||
}
|
}
|
||||||
@ -164,11 +163,11 @@ class Pci::Device_component : public Genode::Rpc_object<Pci::Device>,
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
unsigned cmd = _device_config.read(&_config_access, PCI_CMD_REG,
|
unsigned cmd = _device_config.read(&_config_access, PCI_CMD_REG,
|
||||||
Pci::Device::ACCESS_16BIT);
|
Platform::Device::ACCESS_16BIT);
|
||||||
if (cmd & PCI_CMD_DMA)
|
if (cmd & PCI_CMD_DMA)
|
||||||
_device_config.write(&_config_access, PCI_CMD_REG,
|
_device_config.write(&_config_access, PCI_CMD_REG,
|
||||||
cmd ^ PCI_CMD_DMA,
|
cmd ^ PCI_CMD_DMA,
|
||||||
Pci::Device::ACCESS_16BIT);
|
Platform::Device::ACCESS_16BIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -179,13 +178,13 @@ class Pci::Device_component : public Genode::Rpc_object<Pci::Device>,
|
|||||||
*/
|
*/
|
||||||
Device_component(Device_config device_config, Genode::addr_t addr,
|
Device_component(Device_config device_config, Genode::addr_t addr,
|
||||||
Genode::Rpc_entrypoint *ep,
|
Genode::Rpc_entrypoint *ep,
|
||||||
Pci::Session_component * session,
|
Platform::Session_component * session,
|
||||||
bool use_msi)
|
bool use_msi)
|
||||||
:
|
:
|
||||||
_device_config(device_config), _config_space(addr),
|
_device_config(device_config), _config_space(addr),
|
||||||
_ep(ep), _session(session),
|
_ep(ep), _session(session),
|
||||||
_irq_line(_device_config.read(&_config_access, PCI_IRQ_LINE,
|
_irq_line(_device_config.read(&_config_access, PCI_IRQ_LINE,
|
||||||
Pci::Device::ACCESS_8BIT)),
|
Platform::Device::ACCESS_8BIT)),
|
||||||
_irq_session(_configure_irq(_irq_line), (!use_msi || !_msi_cap()) ? ~0UL : _config_space),
|
_irq_session(_configure_irq(_irq_line), (!use_msi || !_msi_cap()) ? ~0UL : _config_space),
|
||||||
_slab_ioport(0, &_slab_ioport_block),
|
_slab_ioport(0, &_slab_ioport_block),
|
||||||
_slab_iomem(0, &_slab_iomem_block)
|
_slab_iomem(0, &_slab_iomem_block)
|
||||||
@ -221,10 +220,10 @@ class Pci::Device_component : public Genode::Rpc_object<Pci::Device>,
|
|||||||
|
|
||||||
Genode::uint16_t msi = _device_config.read(&_config_access,
|
Genode::uint16_t msi = _device_config.read(&_config_access,
|
||||||
msi_cap + 2,
|
msi_cap + 2,
|
||||||
Pci::Device::ACCESS_16BIT);
|
Platform::Device::ACCESS_16BIT);
|
||||||
|
|
||||||
_device_config.write(&_config_access, msi_cap + 0x4, msi_address,
|
_device_config.write(&_config_access, msi_cap + 0x4, msi_address,
|
||||||
Pci::Device::ACCESS_32BIT);
|
Platform::Device::ACCESS_32BIT);
|
||||||
|
|
||||||
if (msi & CAP_MSI_64) {
|
if (msi & CAP_MSI_64) {
|
||||||
Genode::uint32_t upper_address = sizeof(msi_address) > 4
|
Genode::uint32_t upper_address = sizeof(msi_address) > 4
|
||||||
@ -233,26 +232,26 @@ class Pci::Device_component : public Genode::Rpc_object<Pci::Device>,
|
|||||||
|
|
||||||
_device_config.write(&_config_access, msi_cap + 0x8,
|
_device_config.write(&_config_access, msi_cap + 0x8,
|
||||||
upper_address,
|
upper_address,
|
||||||
Pci::Device::ACCESS_32BIT);
|
Platform::Device::ACCESS_32BIT);
|
||||||
_device_config.write(&_config_access, msi_cap + 0xc,
|
_device_config.write(&_config_access, msi_cap + 0xc,
|
||||||
msi_value,
|
msi_value,
|
||||||
Pci::Device::ACCESS_16BIT);
|
Platform::Device::ACCESS_16BIT);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
_device_config.write(&_config_access, msi_cap + 0x8, msi_value,
|
_device_config.write(&_config_access, msi_cap + 0x8, msi_value,
|
||||||
Pci::Device::ACCESS_16BIT);
|
Platform::Device::ACCESS_16BIT);
|
||||||
|
|
||||||
/* enable MSI */
|
/* enable MSI */
|
||||||
_device_config.write(&_config_access, msi_cap + 2,
|
_device_config.write(&_config_access, msi_cap + 2,
|
||||||
msi ^ MSI_ENABLED,
|
msi ^ MSI_ENABLED,
|
||||||
Pci::Device::ACCESS_8BIT);
|
Platform::Device::ACCESS_8BIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor for non PCI devices
|
* Constructor for non PCI devices
|
||||||
*/
|
*/
|
||||||
Device_component(Genode::Rpc_entrypoint * ep,
|
Device_component(Genode::Rpc_entrypoint * ep,
|
||||||
Pci::Session_component * session, unsigned irq)
|
Platform::Session_component * session, unsigned irq)
|
||||||
:
|
:
|
||||||
_config_space(~0UL),
|
_config_space(~0UL),
|
||||||
_ep(ep), _session(session),
|
_ep(ep), _session(session),
|
||||||
@ -354,7 +353,7 @@ class Pci::Device_component : public Genode::Rpc_object<Pci::Device>,
|
|||||||
if (msi_cap) {
|
if (msi_cap) {
|
||||||
Genode::uint16_t msi = _device_config.read(&_config_access,
|
Genode::uint16_t msi = _device_config.read(&_config_access,
|
||||||
msi_cap + 2,
|
msi_cap + 2,
|
||||||
Pci::Device::ACCESS_16BIT);
|
Platform::Device::ACCESS_16BIT);
|
||||||
msi_64 = msi & CAP_MSI_64;
|
msi_64 = msi & CAP_MSI_64;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -380,5 +379,3 @@ class Pci::Device_component : public Genode::Rpc_object<Pci::Device>,
|
|||||||
|
|
||||||
Genode::Io_mem_session_capability io_mem(Genode::uint8_t) override;
|
Genode::Io_mem_session_capability io_mem(Genode::uint8_t) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* _PCI_DEVICE_COMPONENT_H_ */
|
|
@ -5,19 +5,18 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 2008-2013 Genode Labs GmbH
|
* Copyright (C) 2008-2015 Genode Labs GmbH
|
||||||
*
|
*
|
||||||
* This file is part of the Genode OS framework, which is distributed
|
* This file is part of the Genode OS framework, which is distributed
|
||||||
* under the terms of the GNU General Public License version 2.
|
* under the terms of the GNU General Public License version 2.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _DEVICE_CONFIG_H_
|
#pragma once
|
||||||
#define _DEVICE_CONFIG_H_
|
|
||||||
|
|
||||||
#include <pci_device/pci_device.h>
|
#include <platform_device/platform_device.h>
|
||||||
#include "pci_config_access.h"
|
#include "pci_config_access.h"
|
||||||
|
|
||||||
namespace Pci {
|
namespace Platform {
|
||||||
|
|
||||||
class Device_config
|
class Device_config
|
||||||
{
|
{
|
||||||
@ -219,5 +218,3 @@ namespace Pci {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* _DEVICE_CONFIG_H_ */
|
|
@ -11,19 +11,18 @@
|
|||||||
* under the terms of the GNU General Public License version 2.
|
* under the terms of the GNU General Public License version 2.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _PCI_DEVICE_PD_IPC_H_
|
#pragma once
|
||||||
#define _PCI_DEVICE_PD_IPC_H_
|
|
||||||
|
|
||||||
#include <base/rpc_server.h>
|
#include <base/rpc_server.h>
|
||||||
|
|
||||||
#include <io_mem_session/capability.h>
|
#include <io_mem_session/capability.h>
|
||||||
#include <ram_session/ram_session.h>
|
#include <ram_session/ram_session.h>
|
||||||
|
|
||||||
namespace Pci {
|
namespace Platform {
|
||||||
|
|
||||||
struct Device_pd : Genode::Session
|
struct Device_pd : Genode::Session
|
||||||
{
|
{
|
||||||
static const char *service_name() { return "PCI_DEV_PD"; }
|
static const char *service_name() { return "DEVICE_PD"; }
|
||||||
|
|
||||||
GENODE_RPC(Rpc_attach_dma_mem, void, attach_dma_mem,
|
GENODE_RPC(Rpc_attach_dma_mem, void, attach_dma_mem,
|
||||||
Genode::Ram_dataspace_capability);
|
Genode::Ram_dataspace_capability);
|
||||||
@ -54,4 +53,3 @@ namespace Pci {
|
|||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
#endif /* _PCI_DEVICE_PD_IPC_H_ */
|
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* \brief PCI-session component
|
* \brief platform session component
|
||||||
* \author Norman Feske
|
* \author Norman Feske
|
||||||
* \date 2008-01-28
|
* \date 2008-01-28
|
||||||
*/
|
*/
|
||||||
@ -11,8 +11,7 @@
|
|||||||
* under the terms of the GNU General Public License version 2.
|
* under the terms of the GNU General Public License version 2.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _PCI_SESSION_COMPONENT_H_
|
#pragma once
|
||||||
#define _PCI_SESSION_COMPONENT_H_
|
|
||||||
|
|
||||||
/* base */
|
/* base */
|
||||||
#include <base/allocator_guard.h>
|
#include <base/allocator_guard.h>
|
||||||
@ -26,19 +25,19 @@
|
|||||||
/* os */
|
/* os */
|
||||||
#include <io_mem_session/connection.h>
|
#include <io_mem_session/connection.h>
|
||||||
#include <os/session_policy.h>
|
#include <os/session_policy.h>
|
||||||
#include <pci_session/pci_session.h>
|
#include <platform_session/platform_session.h>
|
||||||
|
|
||||||
/* local */
|
/* local */
|
||||||
#include "pci_device_component.h"
|
#include "pci_device_component.h"
|
||||||
#include "pci_config_access.h"
|
#include "pci_config_access.h"
|
||||||
#include "pci_device_pd_ipc.h"
|
#include "pci_device_pd_ipc.h"
|
||||||
|
|
||||||
namespace Pci {
|
namespace Platform {
|
||||||
bool bus_valid(int bus = 0);
|
bool bus_valid(int bus = 0);
|
||||||
unsigned short bridge_bdf(unsigned char bus);
|
unsigned short bridge_bdf(unsigned char bus);
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace Pci {
|
namespace Platform {
|
||||||
|
|
||||||
class Session_component : public Genode::Rpc_object<Session>
|
class Session_component : public Genode::Rpc_object<Session>
|
||||||
{
|
{
|
||||||
@ -697,7 +696,7 @@ namespace Pci {
|
|||||||
node.attribute("gsi").value(&gsi);
|
node.attribute("gsi").value(&gsi);
|
||||||
node.attribute("flags").value(&flags);
|
node.attribute("flags").value(&flags);
|
||||||
|
|
||||||
using Pci::Irq_override;
|
using Platform::Irq_override;
|
||||||
Irq_override::list()->insert(new (env()->heap()) Irq_override(irq, gsi, flags));
|
Irq_override::list()->insert(new (env()->heap()) Irq_override(irq, gsi, flags));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -777,5 +776,3 @@ namespace Pci {
|
|||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* _PCI_SESSION_COMPONENT_H_ */
|
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* \brief PCI-session component
|
* \brief platform session component
|
||||||
* \author Norman Feske
|
* \author Norman Feske
|
||||||
* \date 2008-01-28
|
* \date 2008-01-28
|
||||||
*/
|
*/
|
||||||
@ -15,16 +15,16 @@
|
|||||||
#include "pci_bridge.h"
|
#include "pci_bridge.h"
|
||||||
|
|
||||||
|
|
||||||
static Genode::List<Pci::Bridge> *bridges()
|
static Genode::List<Platform::Bridge> *bridges()
|
||||||
{
|
{
|
||||||
static Genode::List<Pci::Bridge> list;
|
static Genode::List<Platform::Bridge> list;
|
||||||
return &list;
|
return &list;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
unsigned short Pci::bridge_bdf(unsigned char bus)
|
unsigned short Platform::bridge_bdf(unsigned char bus)
|
||||||
{
|
{
|
||||||
for (Pci::Bridge *bridge = bridges()->first(); bridge;
|
for (Platform::Bridge *bridge = bridges()->first(); bridge;
|
||||||
bridge = bridge->next())
|
bridge = bridge->next())
|
||||||
{
|
{
|
||||||
if (bridge->part_of(bus))
|
if (bridge->part_of(bus))
|
||||||
@ -39,7 +39,7 @@ unsigned short Pci::bridge_bdf(unsigned char bus)
|
|||||||
*
|
*
|
||||||
* This tremendously speeds up further scans by other drivers.
|
* This tremendously speeds up further scans by other drivers.
|
||||||
*/
|
*/
|
||||||
bool Pci::bus_valid(int bus)
|
bool Platform::bus_valid(int bus)
|
||||||
{
|
{
|
||||||
struct Valid_buses
|
struct Valid_buses
|
||||||
{
|
{
|
||||||
@ -87,7 +87,7 @@ bool Pci::bus_valid(int bus)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
using Pci::Session_component;
|
using Platform::Session_component;
|
||||||
using Genode::Bit_array;
|
using Genode::Bit_array;
|
||||||
|
|
||||||
Bit_array<Session_component::MAX_PCI_DEVICES> Session_component::bdf_in_use;
|
Bit_array<Session_component::MAX_PCI_DEVICES> Session_component::bdf_in_use;
|
@ -1,8 +1,6 @@
|
|||||||
TARGET = pci_drv
|
TARGET = platform_drv
|
||||||
REQUIRES = x86
|
REQUIRES = x86
|
||||||
SRC_CC = main.cc irq.cc pci_device.cc nonpci_devices.cc session.cc
|
SRC_CC = main.cc irq.cc pci_device.cc nonpci_devices.cc session.cc
|
||||||
LIBS = base config
|
LIBS = base config
|
||||||
|
|
||||||
INC_DIR = $(PRG_DIR)/..
|
INC_DIR = $(PRG_DIR)
|
||||||
|
|
||||||
vpath %.cc $(PRG_DIR)/..
|
|
@ -1,3 +1,4 @@
|
|||||||
TARGET = test-pci
|
TARGET = test-pci
|
||||||
SRC_CC = test.cc
|
SRC_CC = test.cc
|
||||||
LIBS = base
|
LIBS = base
|
||||||
|
REQUIRES = pci
|
||||||
|
@ -13,8 +13,8 @@
|
|||||||
|
|
||||||
#include <base/env.h>
|
#include <base/env.h>
|
||||||
#include <base/printf.h>
|
#include <base/printf.h>
|
||||||
#include <pci_session/connection.h>
|
#include <platform_session/connection.h>
|
||||||
#include <pci_device/client.h>
|
#include <platform_device/client.h>
|
||||||
|
|
||||||
using namespace Genode;
|
using namespace Genode;
|
||||||
|
|
||||||
@ -24,14 +24,14 @@ enum { INTEL_VENDOR_ID = 0x8086 };
|
|||||||
/**
|
/**
|
||||||
* Print device information
|
* Print device information
|
||||||
*/
|
*/
|
||||||
static void print_device_info(Pci::Device_capability device_cap)
|
static void print_device_info(Platform::Device_capability device_cap)
|
||||||
{
|
{
|
||||||
if (!device_cap.valid()) {
|
if (!device_cap.valid()) {
|
||||||
PERR("Invalid device capability");
|
PERR("Invalid device capability");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Pci::Device_client device(device_cap);
|
Platform::Device_client device(device_cap);
|
||||||
|
|
||||||
unsigned char bus = 0, dev = 0, fun = 0;
|
unsigned char bus = 0, dev = 0, fun = 0;
|
||||||
device.bus_address(&bus, &dev, &fun);
|
device.bus_address(&bus, &dev, &fun);
|
||||||
@ -45,11 +45,11 @@ static void print_device_info(Pci::Device_capability device_cap)
|
|||||||
|
|
||||||
for (int resource_id = 0; resource_id < 6; resource_id++) {
|
for (int resource_id = 0; resource_id < 6; resource_id++) {
|
||||||
|
|
||||||
Pci::Device::Resource resource = device.resource(resource_id);
|
Platform::Device::Resource resource = device.resource(resource_id);
|
||||||
|
|
||||||
if (resource.type() != Pci::Device::Resource::INVALID)
|
if (resource.type() != Platform::Device::Resource::INVALID)
|
||||||
printf(" Resource %d (%s): base=0x%08x size=0x%08x %s\n", resource_id,
|
printf(" Resource %d (%s): base=0x%08x size=0x%08x %s\n", resource_id,
|
||||||
resource.type() == Pci::Device::Resource::IO ? "I/O" : "MEM",
|
resource.type() == Platform::Device::Resource::IO ? "I/O" : "MEM",
|
||||||
resource.base(), resource.size(),
|
resource.base(), resource.size(),
|
||||||
resource.prefetchable() ? "prefetchable" : "");
|
resource.prefetchable() ? "prefetchable" : "");
|
||||||
}
|
}
|
||||||
@ -58,16 +58,16 @@ static void print_device_info(Pci::Device_capability device_cap)
|
|||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
printf("--- PCI test started ---\n");
|
printf("--- Platform test started ---\n");
|
||||||
|
|
||||||
/* open session to pci service */
|
/* open session to pci service */
|
||||||
static Pci::Connection pci;
|
static Platform::Connection pci;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Iterate through all installed devices
|
* Iterate through all installed devices
|
||||||
* and print the available device information.
|
* and print the available device information.
|
||||||
*/
|
*/
|
||||||
Pci::Device_capability prev_device_cap,
|
Platform::Device_capability prev_device_cap,
|
||||||
device_cap = pci.first_device();
|
device_cap = pci.first_device();
|
||||||
while (device_cap.valid()) {
|
while (device_cap.valid()) {
|
||||||
print_device_info(device_cap);
|
print_device_info(device_cap);
|
||||||
@ -80,7 +80,7 @@ int main(int argc, char **argv)
|
|||||||
/* release last device */
|
/* release last device */
|
||||||
pci.release_device(prev_device_cap);
|
pci.release_device(prev_device_cap);
|
||||||
|
|
||||||
printf("--- PCI test finished ---\n");
|
printf("--- Platform test finished ---\n");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -16,15 +16,20 @@
|
|||||||
# Build
|
# Build
|
||||||
#
|
#
|
||||||
|
|
||||||
build {
|
set build_components {
|
||||||
core init
|
core init
|
||||||
drivers/timer drivers/uart
|
drivers/timer drivers/uart
|
||||||
app/gdb_monitor
|
app/gdb_monitor
|
||||||
test/gdb_monitor
|
test/gdb_monitor
|
||||||
server/nitpicker app/pointer app/scout
|
server/nitpicker app/pointer app/scout
|
||||||
drivers/framebuffer drivers/pci drivers/input
|
drivers/framebuffer drivers/input
|
||||||
}
|
}
|
||||||
|
|
||||||
|
source ${genode_dir}/repos/base/run/platform_drv.inc
|
||||||
|
append_platform_drv_build_components
|
||||||
|
|
||||||
|
build $build_components
|
||||||
|
|
||||||
create_boot_directory
|
create_boot_directory
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -85,11 +90,7 @@ set config {
|
|||||||
<resource name="RAM" quantum="32M"/>
|
<resource name="RAM" quantum="32M"/>
|
||||||
</start>}
|
</start>}
|
||||||
|
|
||||||
append_if [have_spec pci] config {
|
append_platform_drv_config
|
||||||
<start name="pci_drv">
|
|
||||||
<resource name="RAM" quantum="1M"/>
|
|
||||||
<provides><service name="PCI"/></provides>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if [have_spec framebuffer] config {
|
append_if [have_spec framebuffer] config {
|
||||||
<start name="fb_drv">
|
<start name="fb_drv">
|
||||||
@ -123,10 +124,11 @@ set boot_modules {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# platform-specific modules
|
# platform-specific modules
|
||||||
lappend_if [have_spec pci] boot_modules pci_drv
|
|
||||||
lappend_if [have_spec framebuffer] boot_modules fb_drv
|
lappend_if [have_spec framebuffer] boot_modules fb_drv
|
||||||
lappend_if [have_spec ps2] boot_modules ps2_drv
|
lappend_if [have_spec ps2] boot_modules ps2_drv
|
||||||
|
|
||||||
|
append_platform_drv_boot_modules
|
||||||
|
|
||||||
build_boot_image $boot_modules
|
build_boot_image $boot_modules
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -2,17 +2,25 @@
|
|||||||
# Build
|
# Build
|
||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
set build_components {
|
set build_components {
|
||||||
core init
|
core init
|
||||||
drivers/timer
|
drivers/timer
|
||||||
drivers/audio_out
|
drivers/audio_out
|
||||||
drivers/framebuffer drivers/pci drivers/input
|
drivers/framebuffer drivers/input
|
||||||
app/dosbox
|
app/dosbox
|
||||||
}
|
}
|
||||||
|
|
||||||
lappend_if [have_spec acpi] build_components drivers/acpi
|
source ${genode_dir}/repos/base/run/platform_drv.inc
|
||||||
lappend_if [have_spec pci] build_components drivers/pci/device_pd
|
# override default platform driver policy
|
||||||
|
proc platform_drv_policy {} {
|
||||||
|
return {
|
||||||
|
<policy label="ps2_drv"> <device name="PS2"/> </policy>
|
||||||
|
<policy label="usb_drv"> <pci class="USB"/> </policy>
|
||||||
|
<policy label="fb_drv"> <pci class="VGA"/> </policy>
|
||||||
|
<policy label="audio_out_drv"> <pci class="AUDIO"/> </policy>}
|
||||||
|
}
|
||||||
|
|
||||||
|
append_platform_drv_build_components
|
||||||
|
|
||||||
build $build_components
|
build $build_components
|
||||||
|
|
||||||
@ -51,51 +59,13 @@ append_if [have_spec sdl] config {
|
|||||||
<config width="640" height="480"/>
|
<config width="640" height="480"/>
|
||||||
</start>}
|
</start>}
|
||||||
|
|
||||||
append_if [have_spec acpi] config {
|
append_platform_drv_config
|
||||||
<start name="acpi">
|
|
||||||
<resource name="RAM" quantum="8M" constrain_phys="yes"/>
|
|
||||||
<binary name="acpi_drv"/>
|
|
||||||
<provides>
|
|
||||||
<service name="PCI"/>
|
|
||||||
<service name="IRQ" />
|
|
||||||
</provides>
|
|
||||||
<route>
|
|
||||||
<any-service> <parent/> <any-child /> </any-service>
|
|
||||||
</route>
|
|
||||||
<config>
|
|
||||||
<policy label="acpi_drv"> <pci class="ALL"/> </policy>
|
|
||||||
<policy label="ps2_drv"> <device name="PS2"/> </policy>
|
|
||||||
<policy label="usb_drv"> <pci class="USB"/> </policy>
|
|
||||||
<policy label="fb_drv"> <pci class="VGA"/> </policy>
|
|
||||||
<policy label="audio_out_drv"> <pci class="AUDIO"/> </policy>
|
|
||||||
</config>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if [expr ![have_spec acpi] && [have_spec pci]] config {
|
|
||||||
<start name="pci_drv">
|
|
||||||
<resource name="RAM" quantum="4M" constrain_phys="yes"/>
|
|
||||||
<provides> <service name="PCI"/> </provides>
|
|
||||||
<config>
|
|
||||||
<policy label="audio_out_drv"> <pci class="AUDIO"/> </policy>
|
|
||||||
<policy label="ps2_drv"> <device name="PS2"/> </policy>
|
|
||||||
<policy label="usb_drv"> <pci class="USB"/> </policy>
|
|
||||||
<policy label="fb_drv"> <pci class="VGA"/> </policy>
|
|
||||||
</config>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if [have_spec vesa] config {
|
append_if [have_spec vesa] config {
|
||||||
<start name="fb_drv">
|
<start name="fb_drv">
|
||||||
<resource name="RAM" quantum="4M"/>
|
<resource name="RAM" quantum="4M"/>
|
||||||
<provides><service name="Framebuffer"/></provides>
|
<provides><service name="Framebuffer"/></provides>
|
||||||
<config buffered="yes"> </config>
|
<config buffered="yes"> </config>
|
||||||
<route>}
|
|
||||||
|
|
||||||
append_if [have_spec acpi] config {
|
|
||||||
<service name="PCI"><child name="acpi" /></service>}
|
|
||||||
|
|
||||||
append_if [have_spec vesa] config {
|
|
||||||
<any-service> <parent /> <any-child /></any-service>
|
|
||||||
</route>
|
|
||||||
</start>}
|
</start>}
|
||||||
|
|
||||||
append_if [have_spec pl11x] config {
|
append_if [have_spec pl11x] config {
|
||||||
@ -112,14 +82,7 @@ append_if [have_spec ps2] config {
|
|||||||
|
|
||||||
append config {
|
append config {
|
||||||
<start name="audio_out_drv">
|
<start name="audio_out_drv">
|
||||||
<resource name="RAM" quantum="6M"/>}
|
<resource name="RAM" quantum="6M"/>
|
||||||
append_if [have_spec acpi] config {
|
|
||||||
<route>
|
|
||||||
<service name="IRQ"><child name="acpi" /></service>
|
|
||||||
<service name="PCI"><child name="acpi" /></service>
|
|
||||||
<any-service> <parent /> <any-child /></any-service>
|
|
||||||
</route>}
|
|
||||||
append config {
|
|
||||||
<provides><service name="Audio_out"/></provides>
|
<provides><service name="Audio_out"/></provides>
|
||||||
</start>
|
</start>
|
||||||
<start name="timer">
|
<start name="timer">
|
||||||
@ -166,14 +129,13 @@ set boot_modules {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# platform-specific modules
|
# platform-specific modules
|
||||||
lappend_if [have_spec nova] boot_modules pci_device_pd
|
|
||||||
lappend_if [have_spec acpi] boot_modules acpi_drv
|
|
||||||
lappend_if [have_spec linux] boot_modules fb_sdl
|
lappend_if [have_spec linux] boot_modules fb_sdl
|
||||||
lappend_if [have_spec pci] boot_modules pci_drv
|
|
||||||
lappend_if [have_spec vesa] boot_modules fb_drv
|
lappend_if [have_spec vesa] boot_modules fb_drv
|
||||||
lappend_if [have_spec ps2] boot_modules ps2_drv
|
lappend_if [have_spec ps2] boot_modules ps2_drv
|
||||||
lappend_if [have_spec pl11x] boot_modules fb_drv
|
lappend_if [have_spec pl11x] boot_modules fb_drv
|
||||||
|
|
||||||
|
append_platform_drv_boot_modules
|
||||||
|
|
||||||
build_boot_image $boot_modules
|
build_boot_image $boot_modules
|
||||||
|
|
||||||
append qemu_args " -m 256 -soundhw es1370 "
|
append qemu_args " -m 256 -soundhw es1370 "
|
||||||
|
@ -22,18 +22,17 @@ set build_components {
|
|||||||
|
|
||||||
set use_usb_driver [expr [have_spec omap4] || [have_spec platform_arndale] || [have_spec platform_rpi]]
|
set use_usb_driver [expr [have_spec omap4] || [have_spec platform_arndale] || [have_spec platform_rpi]]
|
||||||
set use_nic_driver [expr !$use_usb_driver]
|
set use_nic_driver [expr !$use_usb_driver]
|
||||||
set use_platform_driver [expr [have_spec platform_arndale] || [have_spec platform_imx53] || [have_spec platform_rpi]]
|
|
||||||
|
|
||||||
if {$use_usb_driver} { set network_driver "usb_drv" }
|
if {$use_usb_driver} { set network_driver "usb_drv" }
|
||||||
if {$use_nic_driver} { set network_driver "nic_drv" }
|
if {$use_nic_driver} { set network_driver "nic_drv" }
|
||||||
|
|
||||||
lappend_if $use_platform_driver build_components drivers/platform
|
|
||||||
lappend_if $use_usb_driver build_components drivers/usb
|
lappend_if $use_usb_driver build_components drivers/usb
|
||||||
lappend_if $use_nic_driver build_components drivers/nic
|
lappend_if $use_nic_driver build_components drivers/nic
|
||||||
lappend_if [have_spec acpi] build_components drivers/acpi
|
|
||||||
lappend_if [have_spec pci] build_components drivers/pci/device_pd
|
|
||||||
lappend_if [have_spec gpio] build_components drivers/gpio
|
lappend_if [have_spec gpio] build_components drivers/gpio
|
||||||
|
|
||||||
|
source ${genode_dir}/repos/base/run/platform_drv.inc
|
||||||
|
append_platform_drv_build_components
|
||||||
|
|
||||||
build $build_components
|
build $build_components
|
||||||
|
|
||||||
create_boot_directory
|
create_boot_directory
|
||||||
@ -61,13 +60,6 @@ append config {
|
|||||||
<provides><service name="Timer"/></provides>
|
<provides><service name="Timer"/></provides>
|
||||||
</start>}
|
</start>}
|
||||||
|
|
||||||
append_if $use_platform_driver config {
|
|
||||||
<start name="platform_drv">
|
|
||||||
<resource name="RAM" quantum="1M" />
|
|
||||||
<provides><service name="Regulator"/></provides>
|
|
||||||
<provides><service name="Platform"/></provides>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if [have_spec gpio] config {
|
append_if [have_spec gpio] config {
|
||||||
<start name="gpio_drv">
|
<start name="gpio_drv">
|
||||||
<resource name="RAM" quantum="4M"/>
|
<resource name="RAM" quantum="4M"/>
|
||||||
@ -92,25 +84,7 @@ append_if $use_nic_driver config {
|
|||||||
<provides><service name="Nic"/></provides>
|
<provides><service name="Nic"/></provides>
|
||||||
</start>}
|
</start>}
|
||||||
|
|
||||||
append_if [have_spec acpi] config {
|
append_platform_drv_config
|
||||||
<start name="acpi">
|
|
||||||
<resource name="RAM" quantum="6M" constrain_phys="yes"/>
|
|
||||||
<binary name="acpi_drv"/>
|
|
||||||
<provides>
|
|
||||||
<service name="PCI"/>
|
|
||||||
<service name="IRQ" />
|
|
||||||
</provides>
|
|
||||||
<route>
|
|
||||||
<service name="PCI"> <any-child /> </service>
|
|
||||||
<any-service> <parent/> <any-child /> </any-service>
|
|
||||||
</route>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if [expr ![have_spec acpi] && [have_spec pci]] config {
|
|
||||||
<start name="pci_drv">
|
|
||||||
<resource name="RAM" quantum="3M" constrain_phys="yes"/>
|
|
||||||
<provides> <service name="PCI"/> </provides>
|
|
||||||
</start> }
|
|
||||||
|
|
||||||
append config {
|
append config {
|
||||||
<start name="lighttpd">
|
<start name="lighttpd">
|
||||||
@ -190,14 +164,12 @@ set boot_modules {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# platform-specific modules
|
# platform-specific modules
|
||||||
lappend_if $use_platform_driver boot_modules platform_drv
|
|
||||||
lappend_if [have_spec acpi] boot_modules acpi_drv
|
|
||||||
lappend_if [have_spec pci] boot_modules pci_drv
|
|
||||||
lappend_if $use_usb_driver boot_modules usb_drv
|
lappend_if $use_usb_driver boot_modules usb_drv
|
||||||
lappend_if $use_nic_driver boot_modules nic_drv
|
lappend_if $use_nic_driver boot_modules nic_drv
|
||||||
lappend_if [have_spec nova] boot_modules pci_device_pd
|
|
||||||
lappend_if [have_spec gpio] boot_modules gpio_drv
|
lappend_if [have_spec gpio] boot_modules gpio_drv
|
||||||
|
|
||||||
|
append_platform_drv_boot_modules
|
||||||
|
|
||||||
build_boot_image $boot_modules
|
build_boot_image $boot_modules
|
||||||
|
|
||||||
append_if [have_spec x86] qemu_args " -net nic,model=e1000 "
|
append_if [have_spec x86] qemu_args " -net nic,model=e1000 "
|
||||||
|
@ -6,12 +6,14 @@
|
|||||||
|
|
||||||
set build_components {
|
set build_components {
|
||||||
core init
|
core init
|
||||||
drivers/pci
|
|
||||||
drivers/nic
|
drivers/nic
|
||||||
drivers/timer
|
drivers/timer
|
||||||
app/lighttpd
|
app/lighttpd
|
||||||
}
|
}
|
||||||
|
|
||||||
|
source ${genode_dir}/repos/base/run/platform_drv.inc
|
||||||
|
append_platform_drv_build_components
|
||||||
|
|
||||||
build $build_components
|
build $build_components
|
||||||
|
|
||||||
create_boot_directory
|
create_boot_directory
|
||||||
@ -39,11 +41,7 @@ append config {
|
|||||||
<provides><service name="Timer"/></provides>
|
<provides><service name="Timer"/></provides>
|
||||||
</start>}
|
</start>}
|
||||||
|
|
||||||
append_if [have_spec pci] config {
|
append_platform_drv_config
|
||||||
<start name="pci_drv">
|
|
||||||
<resource name="RAM" quantum="4M"/>
|
|
||||||
<provides><service name="PCI"/></provides>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append config {
|
append config {
|
||||||
<start name="nic_drv">
|
<start name="nic_drv">
|
||||||
@ -118,7 +116,7 @@ set boot_modules {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# platform-specific modules
|
# platform-specific modules
|
||||||
lappend_if [have_spec pci] boot_modules pci_drv
|
append_platform_drv_boot_modules
|
||||||
|
|
||||||
build_boot_image $boot_modules
|
build_boot_image $boot_modules
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ proc use_usb_input { } { return [expr ![have_spec ps2] && [have_spec usb]] }
|
|||||||
|
|
||||||
set build_components {
|
set build_components {
|
||||||
core init drivers/timer noux/minimal lib/libc_noux
|
core init drivers/timer noux/minimal lib/libc_noux
|
||||||
drivers/framebuffer drivers/pci drivers/input
|
drivers/framebuffer drivers/input
|
||||||
server/terminal server/ram_fs
|
server/terminal server/ram_fs
|
||||||
test/libports/ncurses
|
test/libports/ncurses
|
||||||
|
|
||||||
@ -27,6 +27,9 @@ lappend_if [have_spec gpio] build_components drivers/gpio
|
|||||||
foreach pkg {bash coreutils vim} {
|
foreach pkg {bash coreutils vim} {
|
||||||
lappend_if [expr ![file exists bin/$pkg]] build_components noux-pkg/$pkg }
|
lappend_if [expr ![file exists bin/$pkg]] build_components noux-pkg/$pkg }
|
||||||
|
|
||||||
|
source ${genode_dir}/repos/base/run/platform_drv.inc
|
||||||
|
append_platform_drv_build_components
|
||||||
|
|
||||||
build $build_components
|
build $build_components
|
||||||
|
|
||||||
# write default vimrc file
|
# write default vimrc file
|
||||||
@ -85,11 +88,7 @@ append_if [have_spec sdl] config {
|
|||||||
</provides>
|
</provides>
|
||||||
</start>}
|
</start>}
|
||||||
|
|
||||||
append_if [have_spec pci] config {
|
append_platform_drv_config
|
||||||
<start name="pci_drv">
|
|
||||||
<resource name="RAM" quantum="1M"/>
|
|
||||||
<provides><service name="PCI"/></provides>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if [have_spec framebuffer] config {
|
append_if [have_spec framebuffer] config {
|
||||||
<start name="fb_drv">
|
<start name="fb_drv">
|
||||||
@ -196,12 +195,13 @@ set boot_modules {
|
|||||||
|
|
||||||
# platform-specific modules
|
# platform-specific modules
|
||||||
lappend_if [have_spec linux] boot_modules fb_sdl
|
lappend_if [have_spec linux] boot_modules fb_sdl
|
||||||
lappend_if [have_spec pci] boot_modules pci_drv
|
|
||||||
lappend_if [have_spec ps2] boot_modules ps2_drv
|
lappend_if [have_spec ps2] boot_modules ps2_drv
|
||||||
lappend_if [have_spec framebuffer] boot_modules fb_drv
|
lappend_if [have_spec framebuffer] boot_modules fb_drv
|
||||||
lappend_if [use_usb_input] boot_modules usb_drv
|
lappend_if [use_usb_input] boot_modules usb_drv
|
||||||
lappend_if [have_spec gpio] boot_modules gpio_drv
|
lappend_if [have_spec gpio] boot_modules gpio_drv
|
||||||
|
|
||||||
|
append_platform_drv_boot_modules
|
||||||
|
|
||||||
build_boot_image $boot_modules
|
build_boot_image $boot_modules
|
||||||
|
|
||||||
if {[have_spec x86_64]} {
|
if {[have_spec x86_64]} {
|
||||||
|
@ -21,7 +21,7 @@ if {[have_spec x86]} {
|
|||||||
|
|
||||||
set build_components {
|
set build_components {
|
||||||
core init drivers/timer noux lib/libc_noux
|
core init drivers/timer noux lib/libc_noux
|
||||||
drivers/framebuffer drivers/pci drivers/input drivers/usb
|
drivers/framebuffer drivers/input drivers/usb
|
||||||
server/terminal server/terminal_crosslink
|
server/terminal server/terminal_crosslink
|
||||||
app/gdb_monitor
|
app/gdb_monitor
|
||||||
}
|
}
|
||||||
@ -34,6 +34,9 @@ lappend build_components noux-pkg/[noux_gdb_pkg_name]
|
|||||||
lappend build_components test/gdb_monitor
|
lappend build_components test/gdb_monitor
|
||||||
set gdb_target_binary_name test-gdb_monitor
|
set gdb_target_binary_name test-gdb_monitor
|
||||||
|
|
||||||
|
source ${genode_dir}/repos/base/run/platform_drv.inc
|
||||||
|
append_platform_drv_build_components
|
||||||
|
|
||||||
build $build_components
|
build $build_components
|
||||||
|
|
||||||
# names of the binaries needed for the GDB monitor test
|
# names of the binaries needed for the GDB monitor test
|
||||||
@ -81,11 +84,7 @@ append_if [have_spec sdl] config {
|
|||||||
</provides>
|
</provides>
|
||||||
</start>}
|
</start>}
|
||||||
|
|
||||||
append_if [have_spec pci] config {
|
append_platform_drv_config
|
||||||
<start name="pci_drv">
|
|
||||||
<resource name="RAM" quantum="1M"/>
|
|
||||||
<provides><service name="PCI"/></provides>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if [have_spec framebuffer] config {
|
append_if [have_spec framebuffer] config {
|
||||||
<start name="fb_drv">
|
<start name="fb_drv">
|
||||||
@ -216,12 +215,13 @@ set boot_modules {
|
|||||||
|
|
||||||
# platform-specific modules
|
# platform-specific modules
|
||||||
lappend_if [have_spec linux] boot_modules fb_sdl
|
lappend_if [have_spec linux] boot_modules fb_sdl
|
||||||
lappend_if [have_spec pci] boot_modules pci_drv
|
|
||||||
lappend_if [have_spec framebuffer] boot_modules fb_drv
|
lappend_if [have_spec framebuffer] boot_modules fb_drv
|
||||||
lappend_if [have_spec ps2] boot_modules ps2_drv
|
lappend_if [have_spec ps2] boot_modules ps2_drv
|
||||||
lappend_if [have_spec usb] boot_modules usb_drv
|
lappend_if [have_spec usb] boot_modules usb_drv
|
||||||
lappend_if [have_spec gpio] boot_modules gpio_drv
|
lappend_if [have_spec gpio] boot_modules gpio_drv
|
||||||
|
|
||||||
|
append_platform_drv_boot_modules
|
||||||
|
|
||||||
build_boot_image $boot_modules
|
build_boot_image $boot_modules
|
||||||
|
|
||||||
run_genode_until forever
|
run_genode_until forever
|
||||||
|
@ -6,7 +6,7 @@ if {![have_spec x86]} {
|
|||||||
set build_components {
|
set build_components {
|
||||||
core init drivers/timer
|
core init drivers/timer
|
||||||
noux/net lib/libc_noux
|
noux/net lib/libc_noux
|
||||||
drivers/framebuffer drivers/pci drivers/input
|
drivers/framebuffer drivers/input
|
||||||
drivers/nic
|
drivers/nic
|
||||||
drivers/timer
|
drivers/timer
|
||||||
server/terminal server/ram_fs
|
server/terminal server/ram_fs
|
||||||
@ -24,6 +24,9 @@ set noux_pkgs "bash coreutils vim"
|
|||||||
foreach pkg $noux_pkgs {
|
foreach pkg $noux_pkgs {
|
||||||
lappend_if [expr ![file exists bin/$pkg]] build_components noux-pkg/$pkg }
|
lappend_if [expr ![file exists bin/$pkg]] build_components noux-pkg/$pkg }
|
||||||
|
|
||||||
|
source ${genode_dir}/repos/base/run/platform_drv.inc
|
||||||
|
append_platform_drv_build_components
|
||||||
|
|
||||||
build $build_components
|
build $build_components
|
||||||
|
|
||||||
set vimrc_fd [open "bin/vim/share/vim/vimrc" w]
|
set vimrc_fd [open "bin/vim/share/vim/vimrc" w]
|
||||||
@ -94,11 +97,7 @@ append_if [have_spec sdl] config {
|
|||||||
</provides>
|
</provides>
|
||||||
</start>}
|
</start>}
|
||||||
|
|
||||||
append_if [have_spec pci] config {
|
append_platform_drv_config
|
||||||
<start name="pci_drv">
|
|
||||||
<resource name="RAM" quantum="1M"/>
|
|
||||||
<provides><service name="PCI"/></provides>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if [have_spec framebuffer] config {
|
append_if [have_spec framebuffer] config {
|
||||||
<start name="fb_drv">
|
<start name="fb_drv">
|
||||||
@ -218,10 +217,11 @@ foreach pkg $noux_pkgs {
|
|||||||
|
|
||||||
# platform-specific modules
|
# platform-specific modules
|
||||||
lappend_if [have_spec linux] boot_modules fb_sdl
|
lappend_if [have_spec linux] boot_modules fb_sdl
|
||||||
lappend_if [have_spec pci] boot_modules pci_drv
|
|
||||||
lappend_if [have_spec framebuffer] boot_modules fb_drv
|
lappend_if [have_spec framebuffer] boot_modules fb_drv
|
||||||
lappend_if [have_spec ps2] boot_modules ps2_drv
|
lappend_if [have_spec ps2] boot_modules ps2_drv
|
||||||
|
|
||||||
|
append_platform_drv_boot_modules
|
||||||
|
|
||||||
build_boot_image $boot_modules
|
build_boot_image $boot_modules
|
||||||
|
|
||||||
if {[have_spec x86_64]} {
|
if {[have_spec x86_64]} {
|
||||||
|
@ -12,7 +12,7 @@ if {![have_spec x86]} {
|
|||||||
set build_components {
|
set build_components {
|
||||||
core init drivers/timer
|
core init drivers/timer
|
||||||
noux/net lib/libc_noux
|
noux/net lib/libc_noux
|
||||||
drivers/framebuffer drivers/pci drivers/input
|
drivers/framebuffer drivers/input
|
||||||
drivers/nic
|
drivers/nic
|
||||||
drivers/timer
|
drivers/timer
|
||||||
server/terminal server/ram_fs
|
server/terminal server/ram_fs
|
||||||
@ -29,6 +29,9 @@ set noux_pkgs "bash coreutils lynx noux-etc"
|
|||||||
foreach pkg $noux_pkgs {
|
foreach pkg $noux_pkgs {
|
||||||
lappend_if [expr ![file exists bin/$pkg]] build_components noux-pkg/$pkg }
|
lappend_if [expr ![file exists bin/$pkg]] build_components noux-pkg/$pkg }
|
||||||
|
|
||||||
|
source ${genode_dir}/repos/base/run/platform_drv.inc
|
||||||
|
append_platform_drv_build_components
|
||||||
|
|
||||||
build $build_components
|
build $build_components
|
||||||
|
|
||||||
# strip all binaries prior archiving
|
# strip all binaries prior archiving
|
||||||
@ -76,11 +79,7 @@ append_if [have_spec sdl] config {
|
|||||||
</provides>
|
</provides>
|
||||||
</start>}
|
</start>}
|
||||||
|
|
||||||
append_if [have_spec pci] config {
|
append_platform_drv_config
|
||||||
<start name="pci_drv">
|
|
||||||
<resource name="RAM" quantum="1M"/>
|
|
||||||
<provides><service name="PCI"/></provides>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if [have_spec framebuffer] config {
|
append_if [have_spec framebuffer] config {
|
||||||
<start name="fb_drv">
|
<start name="fb_drv">
|
||||||
@ -176,10 +175,11 @@ foreach pkg $noux_pkgs {
|
|||||||
|
|
||||||
# platform-specific modules
|
# platform-specific modules
|
||||||
lappend_if [have_spec linux] boot_modules fb_sdl
|
lappend_if [have_spec linux] boot_modules fb_sdl
|
||||||
lappend_if [have_spec pci] boot_modules pci_drv
|
|
||||||
lappend_if [have_spec framebuffer] boot_modules fb_drv
|
lappend_if [have_spec framebuffer] boot_modules fb_drv
|
||||||
lappend_if [have_spec ps2] boot_modules ps2_drv
|
lappend_if [have_spec ps2] boot_modules ps2_drv
|
||||||
|
|
||||||
|
append_platform_drv_boot_modules
|
||||||
|
|
||||||
build_boot_image $boot_modules
|
build_boot_image $boot_modules
|
||||||
|
|
||||||
if {[have_spec x86_64]} {
|
if {[have_spec x86_64]} {
|
||||||
|
@ -12,7 +12,7 @@ if {![have_spec x86]} {
|
|||||||
set build_components {
|
set build_components {
|
||||||
core init drivers/timer
|
core init drivers/timer
|
||||||
noux/net lib/libc_noux
|
noux/net lib/libc_noux
|
||||||
drivers/framebuffer drivers/pci drivers/input
|
drivers/framebuffer drivers/input
|
||||||
drivers/nic
|
drivers/nic
|
||||||
server/terminal server/ram_fs
|
server/terminal server/ram_fs
|
||||||
test/libc_resolv
|
test/libc_resolv
|
||||||
@ -31,6 +31,9 @@ set noux_pkgs "bash coreutils openssh noux-etc"
|
|||||||
foreach pkg $noux_pkgs {
|
foreach pkg $noux_pkgs {
|
||||||
lappend_if [expr ![file exists bin/$pkg]] build_components noux-pkg/$pkg }
|
lappend_if [expr ![file exists bin/$pkg]] build_components noux-pkg/$pkg }
|
||||||
|
|
||||||
|
source ${genode_dir}/repos/base/run/platform_drv.inc
|
||||||
|
append_platform_drv_build_components
|
||||||
|
|
||||||
build $build_components
|
build $build_components
|
||||||
|
|
||||||
# strip all binaries prior archiving
|
# strip all binaries prior archiving
|
||||||
@ -78,11 +81,7 @@ append_if [have_spec sdl] config {
|
|||||||
</provides>
|
</provides>
|
||||||
</start>}
|
</start>}
|
||||||
|
|
||||||
append_if [have_spec pci] config {
|
append_platform_drv_config
|
||||||
<start name="pci_drv">
|
|
||||||
<resource name="RAM" quantum="1M"/>
|
|
||||||
<provides><service name="PCI"/></provides>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if [have_spec framebuffer] config {
|
append_if [have_spec framebuffer] config {
|
||||||
<start name="fb_drv">
|
<start name="fb_drv">
|
||||||
@ -180,10 +179,11 @@ foreach pkg $noux_pkgs {
|
|||||||
|
|
||||||
# platform-specific modules
|
# platform-specific modules
|
||||||
lappend_if [have_spec linux] boot_modules fb_sdl
|
lappend_if [have_spec linux] boot_modules fb_sdl
|
||||||
lappend_if [have_spec pci] boot_modules pci_drv
|
|
||||||
lappend_if [have_spec framebuffer] boot_modules fb_drv
|
lappend_if [have_spec framebuffer] boot_modules fb_drv
|
||||||
lappend_if [have_spec ps2] boot_modules ps2_drv
|
lappend_if [have_spec ps2] boot_modules ps2_drv
|
||||||
|
|
||||||
|
append_platform_drv_boot_modules
|
||||||
|
|
||||||
build_boot_image $boot_modules
|
build_boot_image $boot_modules
|
||||||
|
|
||||||
if {[have_spec x86_64]} {
|
if {[have_spec x86_64]} {
|
||||||
|
@ -1,14 +1,12 @@
|
|||||||
set build_components {
|
set build_components {
|
||||||
core init drivers/timer noux/minimal lib/libc_noux
|
core init drivers/timer noux/minimal lib/libc_noux
|
||||||
drivers/framebuffer drivers/pci drivers/input
|
drivers/framebuffer drivers/input
|
||||||
server/terminal server/ram_fs
|
server/terminal server/ram_fs
|
||||||
test/libports/ncurses
|
test/libports/ncurses
|
||||||
}
|
}
|
||||||
set use_usb_input [expr ![have_spec ps2] && ![have_spec sdl] && [have_spec usb]]
|
set use_usb_input [expr ![have_spec ps2] && ![have_spec sdl] && [have_spec usb]]
|
||||||
set use_platform_driver [expr [have_spec platform_arndale] || [have_spec platform_imx53] || [have_spec platform_rpi]]
|
|
||||||
|
|
||||||
lappend_if $use_usb_input build_components drivers/usb
|
lappend_if $use_usb_input build_components drivers/usb
|
||||||
lappend_if $use_platform_driver build_components drivers/platform
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Build Noux packages only once
|
# Build Noux packages only once
|
||||||
@ -18,6 +16,9 @@ set noux_pkgs {bash coreutils make}
|
|||||||
foreach pkg $noux_pkgs {
|
foreach pkg $noux_pkgs {
|
||||||
lappend_if [expr ![file exists bin/$pkg]] build_components noux-pkg/$pkg }
|
lappend_if [expr ![file exists bin/$pkg]] build_components noux-pkg/$pkg }
|
||||||
|
|
||||||
|
source ${genode_dir}/repos/base/run/platform_drv.inc
|
||||||
|
append_platform_drv_build_components
|
||||||
|
|
||||||
build $build_components
|
build $build_components
|
||||||
|
|
||||||
# strip all binaries prior archiving
|
# strip all binaries prior archiving
|
||||||
@ -72,11 +73,7 @@ append_if $use_usb_input config {
|
|||||||
<config uhci="yes" ehci="no" xhci="no"> <hid/> </config>
|
<config uhci="yes" ehci="no" xhci="no"> <hid/> </config>
|
||||||
</start> }
|
</start> }
|
||||||
|
|
||||||
append_if [have_spec pci] config {
|
append_platform_drv_config
|
||||||
<start name="pci_drv">
|
|
||||||
<resource name="RAM" quantum="1M"/>
|
|
||||||
<provides><service name="PCI"/></provides>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if [have_spec framebuffer] config {
|
append_if [have_spec framebuffer] config {
|
||||||
<start name="fb_drv">
|
<start name="fb_drv">
|
||||||
@ -90,13 +87,6 @@ append_if [have_spec ps2] config {
|
|||||||
<provides><service name="Input"/></provides>
|
<provides><service name="Input"/></provides>
|
||||||
</start> }
|
</start> }
|
||||||
|
|
||||||
append_if $use_platform_driver config {
|
|
||||||
<start name="platform_drv">
|
|
||||||
<resource name="RAM" quantum="1M"/>
|
|
||||||
<provides><service name="Regulator"/></provides>
|
|
||||||
<provides><service name="Platform"/></provides>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append config {
|
append config {
|
||||||
<start name="terminal">
|
<start name="terminal">
|
||||||
<resource name="RAM" quantum="2M"/>
|
<resource name="RAM" quantum="2M"/>
|
||||||
@ -176,12 +166,12 @@ foreach pkg $noux_pkgs {
|
|||||||
|
|
||||||
# platform-specific modules
|
# platform-specific modules
|
||||||
lappend_if [have_spec linux] boot_modules fb_sdl
|
lappend_if [have_spec linux] boot_modules fb_sdl
|
||||||
lappend_if [have_spec pci] boot_modules pci_drv
|
|
||||||
lappend_if [have_spec framebuffer] boot_modules fb_drv
|
lappend_if [have_spec framebuffer] boot_modules fb_drv
|
||||||
lappend_if [have_spec ps2] boot_modules ps2_drv
|
lappend_if [have_spec ps2] boot_modules ps2_drv
|
||||||
lappend_if $use_platform_driver boot_modules platform_drv
|
|
||||||
lappend_if $use_usb_input boot_modules usb_drv
|
lappend_if $use_usb_input boot_modules usb_drv
|
||||||
|
|
||||||
|
append_platform_drv_boot_modules
|
||||||
|
|
||||||
build_boot_image $boot_modules
|
build_boot_image $boot_modules
|
||||||
|
|
||||||
append qemu_args " -m 300 "
|
append qemu_args " -m 300 "
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
set build_components {
|
set build_components {
|
||||||
core init drivers/timer noux lib/libc_noux
|
core init drivers/timer noux lib/libc_noux
|
||||||
drivers/framebuffer drivers/pci drivers/input
|
drivers/framebuffer drivers/input
|
||||||
server/terminal server/ram_fs server/nitpicker app/pointer
|
server/terminal server/ram_fs server/nitpicker app/pointer
|
||||||
server/nit_fb
|
server/nit_fb
|
||||||
}
|
}
|
||||||
@ -26,6 +26,9 @@ set build_components {
|
|||||||
foreach pkg {bash coreutils} {
|
foreach pkg {bash coreutils} {
|
||||||
lappend_if [expr ![file exists bin/$pkg]] build_components noux-pkg/$pkg }
|
lappend_if [expr ![file exists bin/$pkg]] build_components noux-pkg/$pkg }
|
||||||
|
|
||||||
|
source ${genode_dir}/repos/base/run/platform_drv.inc
|
||||||
|
append_platform_drv_build_components
|
||||||
|
|
||||||
build $build_components
|
build $build_components
|
||||||
|
|
||||||
# strip all binaries prior archiving
|
# strip all binaries prior archiving
|
||||||
@ -68,11 +71,7 @@ append_if [have_spec sdl] config {
|
|||||||
</provides>
|
</provides>
|
||||||
</start> }
|
</start> }
|
||||||
|
|
||||||
append_if [have_spec pci] config {
|
append_platform_drv_config
|
||||||
<start name="pci_drv">
|
|
||||||
<resource name="RAM" quantum="1M"/>
|
|
||||||
<provides><service name="PCI"/></provides>
|
|
||||||
</start> }
|
|
||||||
|
|
||||||
append_if [have_spec framebuffer] config {
|
append_if [have_spec framebuffer] config {
|
||||||
<start name="fb_drv">
|
<start name="fb_drv">
|
||||||
@ -202,10 +201,11 @@ set boot_modules {
|
|||||||
|
|
||||||
# platform-specific modules
|
# platform-specific modules
|
||||||
lappend_if [have_spec linux] boot_modules fb_sdl
|
lappend_if [have_spec linux] boot_modules fb_sdl
|
||||||
lappend_if [have_spec pci] boot_modules pci_drv
|
|
||||||
lappend_if [have_spec framebuffer] boot_modules fb_drv
|
lappend_if [have_spec framebuffer] boot_modules fb_drv
|
||||||
lappend_if [have_spec ps2] boot_modules ps2_drv
|
lappend_if [have_spec ps2] boot_modules ps2_drv
|
||||||
|
|
||||||
|
append_platform_drv_boot_modules
|
||||||
|
|
||||||
build_boot_image $boot_modules
|
build_boot_image $boot_modules
|
||||||
|
|
||||||
if {[have_spec x86_64]} {
|
if {[have_spec x86_64]} {
|
||||||
|
@ -20,7 +20,7 @@ proc use_usb_input { } { return [expr ![have_spec ps2] && [have_spec usb]] }
|
|||||||
|
|
||||||
set build_components {
|
set build_components {
|
||||||
core init drivers/timer noux/minimal lib/libc_noux
|
core init drivers/timer noux/minimal lib/libc_noux
|
||||||
drivers/framebuffer drivers/pci drivers/input
|
drivers/framebuffer drivers/input
|
||||||
server/terminal server/ram_fs server/trace_fs
|
server/terminal server/ram_fs server/trace_fs
|
||||||
test/libports/ncurses
|
test/libports/ncurses
|
||||||
|
|
||||||
@ -29,8 +29,6 @@ set build_components {
|
|||||||
|
|
||||||
lappend_if [use_usb_input] build_components drivers/usb
|
lappend_if [use_usb_input] build_components drivers/usb
|
||||||
lappend_if [have_spec gpio] build_components drivers/gpio
|
lappend_if [have_spec gpio] build_components drivers/gpio
|
||||||
lappend_if [have_spec acpi] build_components drivers/acpi
|
|
||||||
lappend_if [have_spec pci] build_components drivers/pci
|
|
||||||
|
|
||||||
set noux_pkgs "bash coreutils grep vim"
|
set noux_pkgs "bash coreutils grep vim"
|
||||||
#
|
#
|
||||||
@ -39,6 +37,9 @@ set noux_pkgs "bash coreutils grep vim"
|
|||||||
foreach pkg $noux_pkgs {
|
foreach pkg $noux_pkgs {
|
||||||
lappend_if [expr ![file exists bin/$pkg]] build_components noux-pkg/$pkg }
|
lappend_if [expr ![file exists bin/$pkg]] build_components noux-pkg/$pkg }
|
||||||
|
|
||||||
|
source ${genode_dir}/repos/base/run/platform_drv.inc
|
||||||
|
append_platform_drv_build_components
|
||||||
|
|
||||||
build $build_components
|
build $build_components
|
||||||
|
|
||||||
# write default vimrc file
|
# write default vimrc file
|
||||||
@ -92,25 +93,7 @@ append_if [have_spec sdl] config {
|
|||||||
</provides>
|
</provides>
|
||||||
</start>}
|
</start>}
|
||||||
|
|
||||||
append_if [have_spec acpi] config {
|
append_platform_drv_config
|
||||||
<start name="acpi">
|
|
||||||
<resource name="RAM" quantum="8M" constrain_phys="yes"/>
|
|
||||||
<binary name="acpi_drv"/>
|
|
||||||
<provides>
|
|
||||||
<service name="PCI"/>
|
|
||||||
<service name="IRQ" />
|
|
||||||
</provides>
|
|
||||||
<route>
|
|
||||||
<service name="PCI"> <any-child /> </service>
|
|
||||||
<any-service> <parent/> <any-child /> </any-service>
|
|
||||||
</route>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if [expr ![have_spec acpi] && [have_spec pci]] config {
|
|
||||||
<start name="pci_drv">
|
|
||||||
<resource name="RAM" quantum="5M" constrain_phys="yes"/>
|
|
||||||
<provides><service name="PCI"/></provides>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if [have_spec framebuffer] config {
|
append_if [have_spec framebuffer] config {
|
||||||
<start name="fb_drv">
|
<start name="fb_drv">
|
||||||
@ -237,12 +220,12 @@ foreach pkg $noux_pkgs {
|
|||||||
|
|
||||||
# platform-specific modules
|
# platform-specific modules
|
||||||
lappend_if [have_spec linux] boot_modules fb_sdl
|
lappend_if [have_spec linux] boot_modules fb_sdl
|
||||||
lappend_if [have_spec pci] boot_modules pci_drv
|
|
||||||
lappend_if [have_spec ps2] boot_modules ps2_drv
|
lappend_if [have_spec ps2] boot_modules ps2_drv
|
||||||
lappend_if [have_spec framebuffer] boot_modules fb_drv
|
lappend_if [have_spec framebuffer] boot_modules fb_drv
|
||||||
lappend_if [use_usb_input ] boot_modules usb_drv
|
lappend_if [use_usb_input ] boot_modules usb_drv
|
||||||
lappend_if [have_spec gpio] boot_modules gpio_drv
|
lappend_if [have_spec gpio] boot_modules gpio_drv
|
||||||
lappend_if [have_spec acpi] boot_modules acpi_drv
|
|
||||||
|
append_platform_drv_boot_modules
|
||||||
|
|
||||||
build_boot_image $boot_modules
|
build_boot_image $boot_modules
|
||||||
|
|
||||||
|
@ -6,12 +6,15 @@
|
|||||||
|
|
||||||
set build_components {
|
set build_components {
|
||||||
core init drivers/timer noux/minimal lib/libc_noux
|
core init drivers/timer noux/minimal lib/libc_noux
|
||||||
drivers/framebuffer drivers/pci drivers/input
|
drivers/framebuffer drivers/input
|
||||||
server/terminal
|
server/terminal
|
||||||
}
|
}
|
||||||
lappend build_components noux-pkg/vim
|
lappend build_components noux-pkg/vim
|
||||||
lappend build_components test/libports/ncurses
|
lappend build_components test/libports/ncurses
|
||||||
|
|
||||||
|
source ${genode_dir}/repos/base/run/platform_drv.inc
|
||||||
|
append_platform_drv_build_components
|
||||||
|
|
||||||
build $build_components
|
build $build_components
|
||||||
|
|
||||||
exec tar cfv bin/vim.tar -h -C bin/vim .
|
exec tar cfv bin/vim.tar -h -C bin/vim .
|
||||||
@ -50,11 +53,7 @@ append_if [have_spec sdl] config {
|
|||||||
</provides>
|
</provides>
|
||||||
</start>}
|
</start>}
|
||||||
|
|
||||||
append_if [have_spec pci] config {
|
append_platform_drv_config
|
||||||
<start name="pci_drv">
|
|
||||||
<resource name="RAM" quantum="1M"/>
|
|
||||||
<provides><service name="PCI"/></provides>
|
|
||||||
</start>}
|
|
||||||
|
|
||||||
append_if [have_spec framebuffer] config {
|
append_if [have_spec framebuffer] config {
|
||||||
<start name="fb_drv">
|
<start name="fb_drv">
|
||||||
@ -125,10 +124,11 @@ set boot_modules {
|
|||||||
|
|
||||||
# platform-specific modules
|
# platform-specific modules
|
||||||
lappend_if [have_spec linux] boot_modules fb_sdl
|
lappend_if [have_spec linux] boot_modules fb_sdl
|
||||||
lappend_if [have_spec pci] boot_modules pci_drv
|
|
||||||
lappend_if [have_spec framebuffer] boot_modules fb_drv
|
lappend_if [have_spec framebuffer] boot_modules fb_drv
|
||||||
lappend_if [have_spec ps2] boot_modules ps2_drv
|
lappend_if [have_spec ps2] boot_modules ps2_drv
|
||||||
|
|
||||||
|
append_platform_drv_boot_modules
|
||||||
|
|
||||||
build_boot_image $boot_modules
|
build_boot_image $boot_modules
|
||||||
|
|
||||||
run_genode_until forever
|
run_genode_until forever
|
||||||
|
@ -222,7 +222,7 @@ append_if $use_framebuffer config {
|
|||||||
<provides><service name="Framebuffer"/></provides>
|
<provides><service name="Framebuffer"/></provides>
|
||||||
<route>
|
<route>
|
||||||
<service name="Timer"><child name="timer"/></service>
|
<service name="Timer"><child name="timer"/></service>
|
||||||
<service name="PCI"><any-child/></service>
|
<service name="Platform"><any-child/></service>
|
||||||
<any-service><parent/></any-service>
|
<any-service><parent/></any-service>
|
||||||
</route>
|
</route>
|
||||||
<config width="1024" height="768" depth="16" buffered="yes"/>
|
<config width="1024" height="768" depth="16" buffered="yes"/>
|
||||||
|
Loading…
Reference in New Issue
Block a user