diff options
author | Peng Fan <Peng.Fan@freescale.com> | 2015-07-31 10:44:11 +0800 |
---|---|---|
committer | Peng Fan <Peng.Fan@freescale.com> | 2015-08-03 18:29:02 +0800 |
commit | f1be3cae0320a472db7944c43485eed378b74f58 (patch) | |
tree | c07474869d9e2e984d2c41d6fee6145f18de587a /board/freescale/common | |
parent | 738ace15de626866604ee927dc378c602de01fc8 (diff) | |
download | u-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')
-rw-r--r-- | board/freescale/common/epdc_setup.c | 36 |
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; |