From c90702eaa7e7c4e7dd6d1efea61387a62748cfad Mon Sep 17 00:00:00 2001 From: Zachary T Welch Date: Fri, 4 Dec 2009 04:10:42 -0800 Subject: [PATCH] add flash/nor/drivers.c Encapsulates access to the flash_drivers array, providing a base of operations for future dynamic driver module loading features. --- src/flash/flash.c | 43 ---------------------- src/flash/nor/Makefile.am | 3 +- src/flash/nor/core.c | 11 ------ src/flash/nor/drivers.c | 77 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 79 insertions(+), 55 deletions(-) create mode 100644 src/flash/nor/drivers.c 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 #include -/* 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 // 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 * + * * + * 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 + +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; +} -- 2.39.5