1/* 2 * (C) Copyright 2009 Faraday Technology 3 * Po-Yu Chuang <ratbert@faraday-tech.com> 4 * 5 * SPDX-License-Identifier: GPL-2.0+ 6 */ 7 8#include <config.h> 9#include <common.h> 10#include <asm/io.h> 11#include <faraday/ftsmc020.h> 12 13struct ftsmc020_config { 14 unsigned int config; 15 unsigned int timing; 16}; 17 18static void ftsmc020_setup_bank(unsigned int bank, struct ftsmc020_config *cfg) 19{ 20 struct ftsmc020 *smc = (struct ftsmc020 *)CONFIG_FTSMC020_BASE; 21 22 if (bank > 3) { 23 printf("bank # %u invalid\n", bank); 24 return; 25 } 26 27 writel(cfg->config, &smc->bank[bank].cr); 28 writel(cfg->timing, &smc->bank[bank].tpr); 29} 30 31void ftsmc020_init(void) 32{ 33 struct ftsmc020_config config[] = CONFIG_SYS_FTSMC020_CONFIGS; 34 int i; 35 36 for (i = 0; i < ARRAY_SIZE(config); i++) 37 ftsmc020_setup_bank(i, &config[i]); 38} 39