diff --git a/repos/os/lib/mk/spec/nit6_solox/sd_card_drv.mk b/repos/os/lib/mk/spec/nit6_solox/sd_card_drv.mk new file mode 100644 index 000000000..79851b369 --- /dev/null +++ b/repos/os/lib/mk/spec/nit6_solox/sd_card_drv.mk @@ -0,0 +1,6 @@ +SRC_CC += adma2.cc spec/imx/driver.cc spec/imx6/driver.cc spec/nit6_solox/driver.cc +LIBS += base + +vpath %.cc $(REP_DIR)/src/drivers/sd_card + +include $(REP_DIR)/lib/import/import-sd_card_drv.mk diff --git a/repos/os/run/sd_card.run b/repos/os/run/sd_card.run index ce8b3ed76..c1ade23d2 100644 --- a/repos/os/run/sd_card.run +++ b/repos/os/run/sd_card.run @@ -33,7 +33,8 @@ set config { - } + + } append_if [expr [have_spec arndale] || [have_spec rpi]] config { 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 5a976e002..c75b078c6 100644 --- a/repos/os/src/drivers/sd_card/spec/imx6/driver.cc +++ b/repos/os/src/drivers/sd_card/spec/imx6/driver.cc @@ -64,10 +64,13 @@ bool Driver::_issue_cmd_finish_xfertyp(Xfertyp::access_t &, } -bool Driver::_supported_host_version(Hostver::access_t hostver) +bool Driver::_supported_host_version(Hostver::access_t) { - return Hostver::Vvn::get(hostver) == 0 && - Hostver::Svn::get(hostver) == 3; + /* + * on i.MX6 there exist board-specific (tested) drivers only, + * therefore we do not need to differentiate in between controller versions + */ + return true; } diff --git a/repos/os/src/drivers/sd_card/spec/nit6_solox/driver.cc b/repos/os/src/drivers/sd_card/spec/nit6_solox/driver.cc new file mode 100644 index 000000000..222d6a262 --- /dev/null +++ b/repos/os/src/drivers/sd_card/spec/nit6_solox/driver.cc @@ -0,0 +1,29 @@ +/* + * \brief Secured Digital Host Controller + * \author Stefan Kalkowski + * \date 2019-02-19 + */ + +/* + * Copyright (C) 2019 Genode Labs GmbH + * + * This file is part of the Genode OS framework, which is distributed + * under the terms of the GNU Affero General Public License version 3. + */ + +/* local includes */ +#include +#include + +using namespace Sd_card; +using namespace Genode; + +Driver::Driver(Env &env) +: + Driver_base(env.ram()), + Attached_mmio(env, Imx6::SDHC_2_MMIO_BASE, Imx6::SDHC_2_MMIO_SIZE), + _env(env), _irq(env, Imx6::SDHC_2_IRQ) +{ + log("SD card detected"); + log("capacity: ", card_info().capacity_mb(), " MiB"); +}