summaryrefslogtreecommitdiff
path: root/board/st/u8500/mmc_host.c
diff options
context:
space:
mode:
authorMikael Larsson <mikael.xt.larsson@stericsson.com>2010-09-16 13:31:13 +0200
committerMichael BRANDT <michael.brandt@stericsson.com>2010-09-28 18:20:52 +0200
commita528a25f4c1956b67d121c99ab3aadbfa0cdf93b (patch)
treeeb6d40bf54c49d3b4e6dd3068e72a61c0e5dcb46 /board/st/u8500/mmc_host.c
parent76f64ab36b85b33abfc9a53eff21e87fc63c8794 (diff)
ITP loading
This adds functionality to load and execute ITP in an early stage just after eMMC init. eMMC init was moved to mmc_host.c since it fits better there and is needed in order to access ITP before loading env. Flag for functionality is CONFIG_ITP_LOAD. This functionailty depends on CONFIG_TOC_PARTITION ST-Ericsson ID: ER273744 Change-Id: Ia80f0bf2d67055045c95e47473b9ba2275bbdb83 Signed-off-by: Mikael LARSSON <mikael.xt.larsson@stericsson.com> Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/5130 Reviewed-by: Michael BRANDT <michael.brandt@stericsson.com> Reviewed-by: Ulf HANSSON <ulf.hansson@stericsson.com>
Diffstat (limited to 'board/st/u8500/mmc_host.c')
-rw-r--r--board/st/u8500/mmc_host.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/board/st/u8500/mmc_host.c b/board/st/u8500/mmc_host.c
index df46eb02c..92ff6510e 100644
--- a/board/st/u8500/mmc_host.c
+++ b/board/st/u8500/mmc_host.c
@@ -21,6 +21,8 @@
#include <malloc.h>
#include <div64.h>
#include "mmc_fifo.h"
+#include "itp.h"
+
struct mmc_host {
struct sdi_registers *base;
@@ -608,6 +610,21 @@ int board_mmc_init(bd_t *bis)
debugX(DBG_LVL_VERBOSE, "registered emmc interface number is:%d\n",
dev->block_dev.dev);
+
+ mmc_init(dev);
+
+ /*
+ * In a perfect world itp_load_itp shouldn't be here but we want ITP
+ * to be loaded as quickly as possible and putting it here will get the
+ * shortest time to start loading ITP. Time saved by putting it here
+ * compared to later is somewhere between 0.3-0.7s. That is enough to be
+ * able to justify putting it here.
+ */
+
+#ifdef CONFIG_ITP_LOAD
+ itp_load_itp(&dev->block_dev);
+#endif
+
dev = alloc_mmc_struct();
if (!dev)
return -1;