From 036f3b570282989bed3ac5861d256e120ecbf072 Mon Sep 17 00:00:00 2001 From: Timo Wischer Date: Thu, 24 Mar 2016 18:05:22 +0100 Subject: [PATCH] sd_card: add card version information to interface Issue #1925 --- repos/os/src/drivers/sd_card/sd_card.h | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/repos/os/src/drivers/sd_card/sd_card.h b/repos/os/src/drivers/sd_card/sd_card.h index 5215f981cb..d0ddac4975 100644 --- a/repos/os/src/drivers/sd_card/sd_card.h +++ b/repos/os/src/drivers/sd_card/sd_card.h @@ -95,7 +95,7 @@ namespace Sd_card { struct Version : Bitfield<126 - BIT_BASE, 2> { - enum { STANDARD_CAPACITY = 0, HIGH_CAPACITY = 1, EXT_CSD = 3 }; + enum Type { STANDARD_CAPACITY = 0, HIGH_CAPACITY = 1, EXT_CSD = 3 }; }; struct Mmc_spec_vers : Bitfield<122 - BIT_BASE, 4> { }; @@ -361,11 +361,12 @@ namespace Sd_card { unsigned _rca; size_t _capacity_mb; + const Csd3::Version::Type _version; public: - Card_info(unsigned rca, size_t capacity_mb) - : _rca(rca), _capacity_mb(capacity_mb) + Card_info(unsigned rca, size_t capacity_mb, const Csd3::Version::Type version) + : _rca(rca), _capacity_mb(capacity_mb), _version(version) { } /** @@ -377,6 +378,12 @@ namespace Sd_card { * Return relative card address */ unsigned rca() const { return _rca; } + + /** + * Returns the version of the card + */ + Csd3::Version::Type version() const { return _version; } + }; @@ -517,7 +524,8 @@ namespace Sd_card { throw Detection_failed(); } - return Card_info(rca, _sd_card_device_size(csd) / 2); + return Card_info(rca, _sd_card_device_size(csd) / 2, + static_cast(Csd3::Version::get(csd.csd3))); } Card_info _detect_mmc() @@ -562,7 +570,8 @@ namespace Sd_card { throw Detection_failed(); } - return Card_info(rca, device_size); + return Card_info(rca, device_size, + static_cast(Csd3::Version::get(csd.csd3))); } }; }