mirror of
https://github.com/genodelabs/genode.git
synced 2025-02-20 17:52:52 +00:00
parent
703d68c7c1
commit
6b2dcffdac
@ -25,6 +25,7 @@ class Ec : Acpica::Callback<Ec> {
|
||||
|
||||
ACPI_HANDLE gpe_block;
|
||||
|
||||
Genode::Env &_env;
|
||||
Genode::Allocator &_heap;
|
||||
Acpica::Reportstate * _report;
|
||||
|
||||
@ -50,8 +51,10 @@ class Ec : Acpica::Callback<Ec> {
|
||||
|
||||
public:
|
||||
|
||||
Ec(Genode::Allocator &heap, Acpica::Reportstate *report)
|
||||
Ec(Genode::Env &env, Genode::Allocator &heap,
|
||||
Acpica::Reportstate *report)
|
||||
:
|
||||
_env(env),
|
||||
_heap(heap),
|
||||
_report(report)
|
||||
{ }
|
||||
@ -138,11 +141,11 @@ class Ec : Acpica::Callback<Ec> {
|
||||
|
||||
if (!ec->ec_data) {
|
||||
ec->ec_port_data = resource->Data.Io.Minimum;
|
||||
ec->ec_data = new (ec->_heap) Genode::Io_port_connection(ec->ec_port_data, 1);
|
||||
ec->ec_data = new (ec->_heap) Genode::Io_port_connection(ec->_env, ec->ec_port_data, 1);
|
||||
} else
|
||||
if (!ec->ec_cmdsta) {
|
||||
ec->ec_port_cmdsta = resource->Data.Io.Minimum;
|
||||
ec->ec_cmdsta = new (ec->_heap) Genode::Io_port_connection(ec->ec_port_cmdsta, 1);
|
||||
ec->ec_cmdsta = new (ec->_heap) Genode::Io_port_connection(ec->_env, ec->ec_port_cmdsta, 1);
|
||||
} else
|
||||
Genode::error("unknown io_port");
|
||||
|
||||
@ -217,7 +220,8 @@ class Ec : Acpica::Callback<Ec> {
|
||||
static ACPI_STATUS detect(ACPI_HANDLE ec, UINT32, void *m, void **)
|
||||
{
|
||||
Acpica::Main * main = reinterpret_cast<Acpica::Main *>(m);
|
||||
Ec *ec_obj = new (main->heap) Ec(main->heap, main->report);
|
||||
Ec *ec_obj = new (main->heap) Ec(main->env, main->heap,
|
||||
main->report);
|
||||
|
||||
ACPI_STATUS res = AcpiWalkResources(ec, ACPI_STRING("_CRS"),
|
||||
Ec::detect_io_ports, ec_obj);
|
||||
|
@ -53,10 +53,10 @@ struct Acpica::Statechange
|
||||
bool _enable_reset;
|
||||
bool _enable_poweroff;
|
||||
|
||||
Statechange(Genode::Entrypoint &ep, bool reset, bool poweroff)
|
||||
Statechange(Genode::Env &env, bool reset, bool poweroff)
|
||||
:
|
||||
_dispatcher(ep, *this, &Statechange::state_changed),
|
||||
_system_state("system"),
|
||||
_dispatcher(env.ep(), *this, &Statechange::state_changed),
|
||||
_system_state(env, "system"),
|
||||
_enable_reset(reset), _enable_poweroff(poweroff)
|
||||
{
|
||||
_system_state.sigh(_dispatcher);
|
||||
@ -131,7 +131,7 @@ struct Acpica::Main
|
||||
bool const enable_ready = config.xml().attribute_value("acpi_ready", false);
|
||||
|
||||
if (enable_report)
|
||||
report = new (heap) Acpica::Reportstate();
|
||||
report = new (heap) Acpica::Reportstate(env);
|
||||
|
||||
init_acpica();
|
||||
|
||||
@ -139,8 +139,7 @@ struct Acpica::Main
|
||||
report->enable();
|
||||
|
||||
if (enable_reset || enable_poweroff)
|
||||
new (heap) Acpica::Statechange(env.ep(), enable_reset,
|
||||
enable_poweroff);
|
||||
new (heap) Acpica::Statechange(env, enable_reset, enable_poweroff);
|
||||
|
||||
/* setup IRQ */
|
||||
if (!irq_handler.handler) {
|
||||
@ -148,7 +147,7 @@ struct Acpica::Main
|
||||
return;
|
||||
}
|
||||
|
||||
sci_conn.construct(irq_handler.irq);
|
||||
sci_conn.construct(env, irq_handler.irq);
|
||||
|
||||
Genode::log("SCI IRQ: ", irq_handler.irq);
|
||||
|
||||
@ -159,7 +158,7 @@ struct Acpica::Main
|
||||
return;
|
||||
|
||||
/* we are ready - signal it via changing system state */
|
||||
static Genode::Reporter _system_rom { "system", "acpi_ready" };
|
||||
static Genode::Reporter _system_rom(env, "system", "acpi_ready");
|
||||
_system_rom.enabled(true);
|
||||
Genode::Reporter::Xml_generator xml(_system_rom, [&] () {
|
||||
xml.attribute("state", "acpi_ready");
|
||||
|
@ -22,11 +22,11 @@ class Acpica::Reportstate {
|
||||
|
||||
private:
|
||||
|
||||
Genode::Reporter _reporter_lid { "acpi_lid" };
|
||||
Genode::Reporter _reporter_ac { "acpi_ac" };
|
||||
Genode::Reporter _reporter_sb { "acpi_battery" };
|
||||
Genode::Reporter _reporter_ec { "acpi_ec" };
|
||||
Genode::Reporter _reporter_fix { "acpi_fixed" };
|
||||
Genode::Reporter _reporter_lid;
|
||||
Genode::Reporter _reporter_ac;
|
||||
Genode::Reporter _reporter_sb;
|
||||
Genode::Reporter _reporter_ec;
|
||||
Genode::Reporter _reporter_fix;
|
||||
|
||||
bool _changed_lid = false;
|
||||
bool _changed_ac = false;
|
||||
@ -42,7 +42,14 @@ class Acpica::Reportstate {
|
||||
|
||||
public:
|
||||
|
||||
Reportstate() { }
|
||||
Reportstate(Genode::Env &env)
|
||||
:
|
||||
_reporter_lid(env, "acpi_lid"),
|
||||
_reporter_ac (env, "acpi_ac"),
|
||||
_reporter_sb (env, "acpi_battery"),
|
||||
_reporter_ec (env, "acpi_ec"),
|
||||
_reporter_fix(env, "acpi_fixed")
|
||||
{ }
|
||||
|
||||
void add_notify(Acpica::Callback<Battery> * s) { _list_sb.insert(s); }
|
||||
void add_notify(Acpica::Callback<Fixed> * f) { _fixed = f; }
|
||||
|
@ -139,7 +139,8 @@ class Acpica::Io_mem
|
||||
io_mem._virt = 0;
|
||||
|
||||
io_mem._io_mem = new (Acpica::heap())
|
||||
Genode::Io_mem_connection(io_mem._phys, io_mem._size);
|
||||
Genode::Io_mem_connection(Acpica::env(), io_mem._phys,
|
||||
io_mem._size);
|
||||
|
||||
return &io_mem;
|
||||
});
|
||||
|
@ -151,7 +151,7 @@ ACPI_STATUS AcpiOsReadPort (ACPI_IO_ADDRESS port, UINT32 *value, UINT32 width)
|
||||
/* the I/O port may be owned by drivers, which will cause exceptions */
|
||||
try {
|
||||
unsigned const bytes = width / 8;
|
||||
Genode::Io_port_connection io_port(port, bytes);
|
||||
Genode::Io_port_connection io_port(Acpica::env(), port, bytes);
|
||||
|
||||
switch (bytes) {
|
||||
case 1 :
|
||||
@ -181,7 +181,7 @@ ACPI_STATUS AcpiOsWritePort (ACPI_IO_ADDRESS port, UINT32 value, UINT32 width)
|
||||
/* the I/O port may be owned by drivers, which will cause exceptions */
|
||||
try {
|
||||
unsigned const bytes = width / 8;
|
||||
Genode::Io_port_connection io_port(port, bytes);
|
||||
Genode::Io_port_connection io_port(Acpica::env(), port, bytes);
|
||||
|
||||
switch (bytes) {
|
||||
case 1 :
|
||||
@ -251,7 +251,7 @@ void AcpiOsSleep (UINT64 sleep_ms)
|
||||
{
|
||||
Genode::log(__func__, " ", sleep_ms, " ms");
|
||||
|
||||
static Timer::Connection conn;
|
||||
static Timer::Connection conn(Acpica::env());
|
||||
conn.msleep(sleep_ms);
|
||||
return;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user