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