diff options
-rw-r--r-- | src/flash/flash.c | 43 | ||||
-rw-r--r-- | src/flash/nor/Makefile.am | 3 | ||||
-rw-r--r-- | src/flash/nor/core.c | 11 | ||||
-rw-r--r-- | src/flash/nor/drivers.c | 77 |
4 files changed, 79 insertions, 55 deletions
diff --git a/src/flash/flash.c b/src/flash/flash.c index 2cf56ed5..dfeea5b0 100644 --- a/src/flash/flash.c +++ b/src/flash/flash.c @@ -32,49 +32,6 @@ #include <target/image.h> #include <helper/time_support.h> -/* flash drivers - */ -extern struct flash_driver lpc2000_flash; -extern struct flash_driver lpc288x_flash; -extern struct flash_driver lpc2900_flash; -extern struct flash_driver cfi_flash; -extern struct flash_driver at91sam3_flash; -extern struct flash_driver at91sam7_flash; -extern struct flash_driver str7x_flash; -extern struct flash_driver str9x_flash; -extern struct flash_driver aduc702x_flash; -extern struct flash_driver stellaris_flash; -extern struct flash_driver str9xpec_flash; -extern struct flash_driver stm32x_flash; -extern struct flash_driver tms470_flash; -extern struct flash_driver ecosflash_flash; -extern struct flash_driver ocl_flash; -extern struct flash_driver pic32mx_flash; -extern struct flash_driver avr_flash; -extern struct flash_driver faux_flash; - -struct flash_driver *flash_drivers[] = { - &lpc2000_flash, - &lpc288x_flash, - &lpc2900_flash, - &cfi_flash, - &at91sam7_flash, - &at91sam3_flash, - &str7x_flash, - &str9x_flash, - &aduc702x_flash, - &stellaris_flash, - &str9xpec_flash, - &stm32x_flash, - &tms470_flash, - &ecosflash_flash, - &ocl_flash, - &pic32mx_flash, - &avr_flash, - &faux_flash, - NULL, -}; - struct flash_bank *flash_banks; struct flash_bank *get_flash_bank_by_num_noprobe(int num) diff --git a/src/flash/nor/Makefile.am b/src/flash/nor/Makefile.am index 67a5e558..bafe424f 100644 --- a/src/flash/nor/Makefile.am +++ b/src/flash/nor/Makefile.am @@ -4,7 +4,8 @@ noinst_LTLIBRARIES = libocdflashnor.la libocdflashnor_la_SOURCES = \ core.c \ tcl.c \ - $(NOR_DRIVERS) + $(NOR_DRIVERS) \ + drivers.c NOR_DRIVERS = \ aduc702x.c \ diff --git a/src/flash/nor/core.c b/src/flash/nor/core.c index 2dbf1142..0fff8efc 100644 --- a/src/flash/nor/core.c +++ b/src/flash/nor/core.c @@ -25,19 +25,8 @@ #include <target/image.h> // in flash.c, to be moved here -extern struct flash_driver *flash_drivers[]; extern struct flash_bank *flash_banks; -struct flash_driver *flash_driver_find_by_name(const char *name) -{ - for (unsigned i = 0; flash_drivers[i]; i++) - { - if (strcmp(name, flash_drivers[i]->name) == 0) - return flash_drivers[i]; - } - return NULL; -} - int flash_driver_erase(struct flash_bank *bank, int first, int last) { int retval; diff --git a/src/flash/nor/drivers.c b/src/flash/nor/drivers.c new file mode 100644 index 00000000..be72b5c3 --- /dev/null +++ b/src/flash/nor/drivers.c @@ -0,0 +1,77 @@ +/*************************************************************************** + * Copyright (C) 2009 Zachary T Welch <zw@superlucidity.net> * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif +#include <flash/nor/core.h> + +extern struct flash_driver lpc2000_flash; +extern struct flash_driver lpc288x_flash; +extern struct flash_driver lpc2900_flash; +extern struct flash_driver cfi_flash; +extern struct flash_driver at91sam3_flash; +extern struct flash_driver at91sam7_flash; +extern struct flash_driver str7x_flash; +extern struct flash_driver str9x_flash; +extern struct flash_driver aduc702x_flash; +extern struct flash_driver stellaris_flash; +extern struct flash_driver str9xpec_flash; +extern struct flash_driver stm32x_flash; +extern struct flash_driver tms470_flash; +extern struct flash_driver ecosflash_flash; +extern struct flash_driver ocl_flash; +extern struct flash_driver pic32mx_flash; +extern struct flash_driver avr_flash; +extern struct flash_driver faux_flash; + +/** + * The list of built-in flash drivers. + * @todo Make this dynamically extendable with loadable modules. + */ +struct flash_driver *flash_drivers[] = { + &lpc2000_flash, + &lpc288x_flash, + &lpc2900_flash, + &cfi_flash, + &at91sam7_flash, + &at91sam3_flash, + &str7x_flash, + &str9x_flash, + &aduc702x_flash, + &stellaris_flash, + &str9xpec_flash, + &stm32x_flash, + &tms470_flash, + &ecosflash_flash, + &ocl_flash, + &pic32mx_flash, + &avr_flash, + &faux_flash, + NULL, +}; + +struct flash_driver *flash_driver_find_by_name(const char *name) +{ + for (unsigned i = 0; flash_drivers[i]; i++) + { + if (strcmp(name, flash_drivers[i]->name) == 0) + return flash_drivers[i]; + } + return NULL; +} |