diff options
Diffstat (limited to 'qemu/roms/u-boot/drivers/mtd/ftsmc020.c')
-rw-r--r-- | qemu/roms/u-boot/drivers/mtd/ftsmc020.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/qemu/roms/u-boot/drivers/mtd/ftsmc020.c b/qemu/roms/u-boot/drivers/mtd/ftsmc020.c new file mode 100644 index 000000000..e2e808227 --- /dev/null +++ b/qemu/roms/u-boot/drivers/mtd/ftsmc020.c @@ -0,0 +1,38 @@ +/* + * (C) Copyright 2009 Faraday Technology + * Po-Yu Chuang <ratbert@faraday-tech.com> + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include <config.h> +#include <common.h> +#include <asm/io.h> +#include <faraday/ftsmc020.h> + +struct ftsmc020_config { + unsigned int config; + unsigned int timing; +}; + +static void ftsmc020_setup_bank(unsigned int bank, struct ftsmc020_config *cfg) +{ + struct ftsmc020 *smc = (struct ftsmc020 *)CONFIG_FTSMC020_BASE; + + if (bank > 3) { + printf("bank # %u invalid\n", bank); + return; + } + + writel(cfg->config, &smc->bank[bank].cr); + writel(cfg->timing, &smc->bank[bank].tpr); +} + +void ftsmc020_init(void) +{ + struct ftsmc020_config config[] = CONFIG_SYS_FTSMC020_CONFIGS; + int i; + + for (i = 0; i < ARRAY_SIZE(config); i++) + ftsmc020_setup_bank(i, &config[i]); +} |