summaryrefslogtreecommitdiff
path: root/board/freescale/common/epdc_setup.c
diff options
context:
space:
mode:
authorPeng Fan <Peng.Fan@freescale.com>2015-07-31 10:44:11 +0800
committerPeng Fan <Peng.Fan@freescale.com>2015-08-03 18:29:02 +0800
commitf1be3cae0320a472db7944c43485eed378b74f58 (patch)
treec07474869d9e2e984d2c41d6fee6145f18de587a /board/freescale/common/epdc_setup.c
parent738ace15de626866604ee927dc378c602de01fc8 (diff)
downloadu-boot-imx-f1be3cae0320a472db7944c43485eed378b74f58.zip
u-boot-imx-f1be3cae0320a472db7944c43485eed378b74f58.tar.gz
u-boot-imx-f1be3cae0320a472db7944c43485eed378b74f58.tar.bz2
MLK-11263-2 video: epdc: move setup_waveform_file to board common
Since setup_waveform_file in different boards code have same implementation, move setup_waveform_file to board common code. Also rename it to board_setup_waveform_file This patch also fix a bug when using flush_cache. We should pass 'waveform_buf' to flush_cache, but not a string named 'addr'. Signed-off-by: Peng Fan <Peng.Fan@freescale.com>
Diffstat (limited to 'board/freescale/common/epdc_setup.c')
-rw-r--r--board/freescale/common/epdc_setup.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/board/freescale/common/epdc_setup.c b/board/freescale/common/epdc_setup.c
index 30622b8..8ca3595 100644
--- a/board/freescale/common/epdc_setup.c
+++ b/board/freescale/common/epdc_setup.c
@@ -22,6 +22,42 @@ __weak int check_mmc_autodetect(void)
return 0;
}
+int board_setup_waveform_file(ulong waveform_buf)
+{
+ char *fs_argv[5];
+ char addr[17];
+ ulong file_len, mmc_dev;
+
+ if (!check_mmc_autodetect())
+ mmc_dev = getenv_ulong("mmcdev", 10, 0);
+ else
+ mmc_dev = mmc_get_env_devno();
+
+ sprintf(addr, "%lx", waveform_buf);
+
+ fs_argv[0] = "fatload";
+ fs_argv[1] = "mmc";
+ fs_argv[2] = simple_itoa(mmc_dev);
+ fs_argv[3] = addr;
+ fs_argv[4] = getenv("epdc_waveform");
+
+ if (!fs_argv[4])
+ fs_argv[4] = "epdc_splash.bin";
+
+ if (do_fat_fsload(NULL, 0, 5, fs_argv)) {
+ printf("File %s not found on MMC Device %lu!\n", fs_argv[4], mmc_dev);
+ return -1;
+ }
+
+ file_len = getenv_hex("filesize", 0);
+ if (!file_len)
+ return -1;
+
+ flush_cache(waveform_buf, file_len);
+
+ return 0;
+}
+
int board_setup_logo_file(void *display_buf)
{
int logo_width, logo_height;