From 145011b420bbd93a5a22005fa4a4de38942ff9a1 Mon Sep 17 00:00:00 2001 From: Christian Helmuth Date: Mon, 26 Jun 2017 15:17:45 +0200 Subject: [PATCH] sd_card_drv: prevent deprecated warnings --- repos/os/src/drivers/sd_card/adma2.cc | 4 ++-- repos/os/src/drivers/sd_card/adma2.h | 2 +- repos/os/src/drivers/sd_card/spec/exynos5/driver.cc | 2 +- repos/os/src/drivers/sd_card/spec/exynos5/driver.h | 11 ++++++----- repos/os/src/drivers/sd_card/spec/imx/driver.h | 6 ++++-- repos/os/src/drivers/sd_card/spec/imx53/driver.cc | 2 +- repos/os/src/drivers/sd_card/spec/imx6/driver.cc | 2 +- repos/os/src/drivers/sd_card/spec/omap4/driver.cc | 2 +- repos/os/src/drivers/sd_card/spec/omap4/driver.h | 10 ++++++---- repos/os/src/drivers/sd_card/spec/pbxa9/driver.cc | 2 +- repos/os/src/drivers/sd_card/spec/rpi/driver.cc | 10 +++++++--- repos/os/src/drivers/sd_card/spec/rpi/driver.h | 10 ++++++---- repos/os/src/test/sd_card_bench/main.cc | 2 +- 13 files changed, 38 insertions(+), 27 deletions(-) diff --git a/repos/os/src/drivers/sd_card/adma2.cc b/repos/os/src/drivers/sd_card/adma2.cc index 8a76f931e..ceda88aa6 100644 --- a/repos/os/src/drivers/sd_card/adma2.cc +++ b/repos/os/src/drivers/sd_card/adma2.cc @@ -20,9 +20,9 @@ using namespace Adma2; -Table::Table(Ram_session &ram) +Table::Table(Ram_session &ram, Region_map &rm) : - _ds(&ram, _ds_size, UNCACHED), + _ds(ram, rm, _ds_size, UNCACHED), _base_virt(_ds.local_addr()), _base_phys(Dataspace_client(_ds.cap()).phys_addr()) { } diff --git a/repos/os/src/drivers/sd_card/adma2.h b/repos/os/src/drivers/sd_card/adma2.h index 262fec156..4a4d541b9 100644 --- a/repos/os/src/drivers/sd_card/adma2.h +++ b/repos/os/src/drivers/sd_card/adma2.h @@ -66,7 +66,7 @@ class Adma2::Table public: - Table(Ram_session &ram); + Table(Ram_session &ram, Region_map &rm); /** * Marshal descriptors according to block request diff --git a/repos/os/src/drivers/sd_card/spec/exynos5/driver.cc b/repos/os/src/drivers/sd_card/spec/exynos5/driver.cc index bfb51d301..acee07e0a 100644 --- a/repos/os/src/drivers/sd_card/spec/exynos5/driver.cc +++ b/repos/os/src/drivers/sd_card/spec/exynos5/driver.cc @@ -393,7 +393,7 @@ Csd Driver::_read_csd() size_t Driver::_read_ext_csd() { - Attached_ram_dataspace ds(&_env.ram(), 0x1000, UNCACHED); + Attached_ram_dataspace ds(_env.ram(), _env.rm(), 0x1000, UNCACHED); addr_t phys = Dataspace_client(ds.cap()).phys_addr(); _setup_idmac_descriptor_table(1, phys); diff --git a/repos/os/src/drivers/sd_card/spec/exynos5/driver.h b/repos/os/src/drivers/sd_card/spec/exynos5/driver.h index 2129c5e06..c273f0e1b 100644 --- a/repos/os/src/drivers/sd_card/spec/exynos5/driver.h +++ b/repos/os/src/drivers/sd_card/spec/exynos5/driver.h @@ -160,8 +160,9 @@ class Sd_card::Driver : public Driver_base, struct Timer_delayer : Timer::Connection, Mmio::Delayer { - void usleep(unsigned us) { - Timer::Connection::usleep(us); } + Timer_delayer(Genode::Env &env) : Timer::Connection(env) { } + + void usleep(unsigned us) { Timer::Connection::usleep(us); } }; struct Block_transfer @@ -171,12 +172,12 @@ class Sd_card::Driver : public Driver_base, }; Env &_env; - Timer_delayer _delayer; + Timer_delayer _delayer { _env }; Block_transfer _block_transfer; Clock_regulator _clock_regulator { _env }; Signal_handler _irq_handler { _env.ep(), *this, &Driver::_handle_irq }; - Irq_connection _irq { Exynos5::SDMMC0_IRQ }; - Attached_ram_dataspace _idmac_desc_ds { &_env.ram(), + Irq_connection _irq { _env, Exynos5::SDMMC0_IRQ }; + Attached_ram_dataspace _idmac_desc_ds { _env.ram(), _env.rm(), IDMAC_DESC_MAX_ENTRIES * sizeof(Idmac_desc), UNCACHED }; Idmac_desc *const _idmac_desc { _idmac_desc_ds.local_addr() }; diff --git a/repos/os/src/drivers/sd_card/spec/imx/driver.h b/repos/os/src/drivers/sd_card/spec/imx/driver.h index 81dc3296a..fa48ffd88 100644 --- a/repos/os/src/drivers/sd_card/spec/imx/driver.h +++ b/repos/os/src/drivers/sd_card/spec/imx/driver.h @@ -200,6 +200,8 @@ class Sd_card::Driver : public Driver_base, struct Timer_delayer : Timer::Connection, Mmio::Delayer { + Timer_delayer(Genode::Env &env) : Timer::Connection(env) { } + void usleep(unsigned us) { Timer::Connection::usleep(us); } }; @@ -212,12 +214,12 @@ class Sd_card::Driver : public Driver_base, Env &_env; Block_transfer _block_transfer; - Timer_delayer _delayer; + Timer_delayer _delayer { _env }; Signal_handler _irq_handler { _env.ep(), *this, &Driver::_handle_irq }; Irq_connection _irq; Card_info _card_info { _init() }; - Adma2::Table _adma2_table { _env.ram() }; + Adma2::Table _adma2_table { _env.ram(), _env.rm() }; static bool _supported_host_version(Hostver::access_t hostver); static void _watermark_level(Wml::access_t &wml); diff --git a/repos/os/src/drivers/sd_card/spec/imx53/driver.cc b/repos/os/src/drivers/sd_card/spec/imx53/driver.cc index 4e7dd70a1..7b5beba31 100644 --- a/repos/os/src/drivers/sd_card/spec/imx53/driver.cc +++ b/repos/os/src/drivers/sd_card/spec/imx53/driver.cc @@ -124,7 +124,7 @@ Driver::Driver(Env &env) : Driver_base(env.ram()), Attached_mmio(env, Imx53::SDHC_MMIO_BASE, Imx53::SDHC_MMIO_SIZE), - _env(env), _irq(Imx53::SDHC_IRQ) + _env(env), _irq(env, Imx53::SDHC_IRQ) { log("SD card detected"); log("capacity: ", card_info().capacity_mb(), " MiB"); diff --git a/repos/os/src/drivers/sd_card/spec/imx6/driver.cc b/repos/os/src/drivers/sd_card/spec/imx6/driver.cc index ee7930113..39a50466a 100644 --- a/repos/os/src/drivers/sd_card/spec/imx6/driver.cc +++ b/repos/os/src/drivers/sd_card/spec/imx6/driver.cc @@ -122,7 +122,7 @@ Driver::Driver(Env &env) : Driver_base(env.ram()), Attached_mmio(env, Imx6::SDHC_MMIO_BASE, Imx6::SDHC_MMIO_SIZE), - _env(env), _irq(Imx6::SDHC_IRQ) + _env(env), _irq(env, Imx6::SDHC_IRQ) { log("SD card detected"); log("capacity: ", card_info().capacity_mb(), " MiB"); diff --git a/repos/os/src/drivers/sd_card/spec/omap4/driver.cc b/repos/os/src/drivers/sd_card/spec/omap4/driver.cc index d3b77516f..2ea27fff4 100644 --- a/repos/os/src/drivers/sd_card/spec/omap4/driver.cc +++ b/repos/os/src/drivers/sd_card/spec/omap4/driver.cc @@ -387,7 +387,7 @@ Csd Driver::_read_csd() Driver::Driver(Env &env) : Driver_base(env.ram()), - Attached_mmio(env, MMCHS1_MMIO_BASE, MMCHS1_MMIO_SIZE), _ep(env.ep()) + Attached_mmio(env, MMCHS1_MMIO_BASE, MMCHS1_MMIO_SIZE), _env(env) { _irq.sigh(_irq_handler); _irq.ack_irq(); diff --git a/repos/os/src/drivers/sd_card/spec/omap4/driver.h b/repos/os/src/drivers/sd_card/spec/omap4/driver.h index 84d5c1c6a..e73f196f6 100644 --- a/repos/os/src/drivers/sd_card/spec/omap4/driver.h +++ b/repos/os/src/drivers/sd_card/spec/omap4/driver.h @@ -160,14 +160,16 @@ class Sd_card::Driver : public Driver_base, struct Timer_delayer : Timer::Connection, Mmio::Delayer { + Timer_delayer(Genode::Env &env) : Timer::Connection(env) { } + void usleep(unsigned us) { Timer::Connection::usleep(us); } }; - Entrypoint &_ep; + Env &_env; Block_transfer _block_transfer; - Timer_delayer _delayer; - Signal_handler _irq_handler { _ep, *this, &Driver::_handle_irq }; - Irq_connection _irq { Panda::HSMMC_IRQ }; + Timer_delayer _delayer { _env }; + Signal_handler _irq_handler { _env.ep(), *this, &Driver::_handle_irq }; + Irq_connection _irq { _env, Panda::HSMMC_IRQ }; Card_info _card_info { _init() }; Card_info _init(); diff --git a/repos/os/src/drivers/sd_card/spec/pbxa9/driver.cc b/repos/os/src/drivers/sd_card/spec/pbxa9/driver.cc index b14bd9a6f..7c0082100 100644 --- a/repos/os/src/drivers/sd_card/spec/pbxa9/driver.cc +++ b/repos/os/src/drivers/sd_card/spec/pbxa9/driver.cc @@ -31,7 +31,7 @@ void Driver::_write_command(unsigned cmd_index, bool resp) _write_reg(Command, cmd_index); - while (!_read_reg(Status) & (CmdRespEnd | CmdSent)) ; + while (!(_read_reg(Status) & (CmdRespEnd | CmdSent))) ; } diff --git a/repos/os/src/drivers/sd_card/spec/rpi/driver.cc b/repos/os/src/drivers/sd_card/spec/rpi/driver.cc index d04772635..a5661e6da 100644 --- a/repos/os/src/drivers/sd_card/spec/rpi/driver.cc +++ b/repos/os/src/drivers/sd_card/spec/rpi/driver.cc @@ -25,7 +25,7 @@ Driver::Driver(Env &env) : Driver_base(env.ram()), Attached_mmio(env, Rpi::SDHCI_BASE, Rpi::SDHCI_SIZE), - _ram(env.ram()) + _env(env) { log("SD card detected"); log("capacity: ", _card_info.capacity_mb(), " MiB"); @@ -40,7 +40,9 @@ void Driver::_set_and_enable_clock(unsigned divider) Control1::Clk_internal_en::set(ctl1, 1); Mmio::write(ctl1); - if (!wait_for(1, _delayer)) { + try { + wait_for(_delayer, Control1::Clk_internal_stable::Equal(1)); + } catch (Polling_timeout) { error("could not set internal clock"); throw Detection_failed(); } @@ -60,7 +62,9 @@ Card_info Driver::_init() Control1::Srst_data::set(v); Mmio::write(v); - if (!wait_for(0, _delayer)) { + try { + wait_for(_delayer, Control1::Srst_hc::Equal(0)); + } catch (Polling_timeout) { error("host-controller soft reset timed out"); throw Detection_failed(); } diff --git a/repos/os/src/drivers/sd_card/spec/rpi/driver.h b/repos/os/src/drivers/sd_card/spec/rpi/driver.h index dfe59a7d5..83ad2fab1 100644 --- a/repos/os/src/drivers/sd_card/spec/rpi/driver.h +++ b/repos/os/src/drivers/sd_card/spec/rpi/driver.h @@ -150,12 +150,14 @@ class Sd_card::Driver : public Driver_base, struct Timer_delayer : Timer::Connection, Mmio::Delayer { + Timer_delayer(Genode::Env &env) : Timer::Connection(env) { } + void usleep(unsigned us) { Timer::Connection::usleep(us); } }; - Ram_session &_ram; - Timer_delayer _delayer; - Irq_connection _irq { Rpi::SDHCI_IRQ }; + Env &_env; + Timer_delayer _delayer { _env }; + Irq_connection _irq { _env, Rpi::SDHCI_IRQ }; Card_info _card_info { _init() }; template @@ -212,7 +214,7 @@ class Sd_card::Driver : public Driver_base, Block::Packet_descriptor &packet) override; Ram_dataspace_capability alloc_dma_buffer(size_t size) override { - return _ram.alloc(size, UNCACHED); } + return _env.ram().alloc(size, UNCACHED); } }; #endif /* _DRIVER_H_ */ diff --git a/repos/os/src/test/sd_card_bench/main.cc b/repos/os/src/test/sd_card_bench/main.cc index a7059a2c2..dd916ed9f 100644 --- a/repos/os/src/test/sd_card_bench/main.cc +++ b/repos/os/src/test/sd_card_bench/main.cc @@ -60,7 +60,7 @@ struct Main .xml().attribute_value("buffer_size_kib", (size_t)0) }; size_t const buf_size { buf_size_kib * 1024 }; - Attached_ram_dataspace buf { &env.ram(), buf_size, UNCACHED }; + Attached_ram_dataspace buf { env.ram(), env.rm(), buf_size, UNCACHED }; char *buf_virt { buf.local_addr() }; addr_t buf_phys { Dataspace_client(buf.cap()) .phys_addr() };