diff options
author | Chas Williams <chas@cmf.nrl.navy.mil> | 2008-06-17 16:23:11 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-06-17 16:23:11 -0700 |
commit | e92481f95375aa2702ea5018b0295792ae0fa9c1 (patch) | |
tree | 9e3415425daa7a39935c012d1decb8f257ee708d /drivers/atm | |
parent | 7255ca3f3c928fec6d9ce607fed7d0a4f4fca6f7 (diff) |
atm: [fore200e] convert to use request_firmware()
Signed-off-by: Chas Williams <chas@cmf.nrl.navy.mil>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/atm')
-rw-r--r-- | drivers/atm/Kconfig | 77 | ||||
-rw-r--r-- | drivers/atm/Makefile | 39 | ||||
-rw-r--r-- | drivers/atm/fore200e.c | 130 | ||||
-rw-r--r-- | drivers/atm/fore200e.h | 3 | ||||
-rw-r--r-- | drivers/atm/fore200e_firmware_copyright | 31 | ||||
-rw-r--r-- | drivers/atm/fore200e_mkfirm.c | 154 | ||||
-rw-r--r-- | drivers/atm/pca200e.data | 850 | ||||
-rw-r--r-- | drivers/atm/pca200e_ecd.data | 906 | ||||
-rw-r--r-- | drivers/atm/sba200e_ecd.data | 928 |
9 files changed, 71 insertions, 3047 deletions
diff --git a/drivers/atm/Kconfig b/drivers/atm/Kconfig index 1c7ae30af15..f197a193633 100644 --- a/drivers/atm/Kconfig +++ b/drivers/atm/Kconfig @@ -325,81 +325,22 @@ config ATM_IA_DEBUG speed of the driver, and the size of your syslog files! When inactive, they will have only a modest impact on performance. -config ATM_FORE200E_MAYBE +config ATM_FORE200E tristate "FORE Systems 200E-series" - depends on PCI || SBUS + depends on (PCI || SBUS) + select FW_LOADER ---help--- This is a driver for the FORE Systems 200E-series ATM adapter cards. It simultaneously supports PCA-200E and SBA-200E models on PCI and SBUS hosts. Say Y (or M to compile as a module named fore_200e) here if you have one of these ATM adapters. - Note that the driver will actually be compiled only if you - additionally enable the support for PCA-200E and/or SBA-200E - cards. - See the file <file:Documentation/networking/fore200e.txt> for further details. -config ATM_FORE200E_PCA - bool "PCA-200E support" - depends on ATM_FORE200E_MAYBE && PCI - help - Say Y here if you want your PCA-200E cards to be probed. - -config ATM_FORE200E_PCA_DEFAULT_FW - bool "Use default PCA-200E firmware (normally enabled)" - depends on ATM_FORE200E_PCA - help - Use the default PCA-200E firmware data shipped with the driver. - - Normal users do not have to deal with the firmware stuff, so - they should say Y here. - -config ATM_FORE200E_PCA_FW - string "Pathname of user-supplied binary firmware" - depends on ATM_FORE200E_PCA && !ATM_FORE200E_PCA_DEFAULT_FW - default "" - help - This defines the pathname of an alternative PCA-200E binary - firmware image supplied by the user. This pathname may be - absolute or relative to the drivers/atm directory. - - The driver comes with an adequate firmware image, so normal users do - not have to supply an alternative one. They just say Y to "Use - default PCA-200E firmware" instead. - -config ATM_FORE200E_SBA - bool "SBA-200E support" - depends on ATM_FORE200E_MAYBE && SBUS - help - Say Y here if you want your SBA-200E cards to be probed. - -config ATM_FORE200E_SBA_DEFAULT_FW - bool "Use default SBA-200E firmware (normally enabled)" - depends on ATM_FORE200E_SBA - help - Use the default SBA-200E firmware data shipped with the driver. - - Normal users do not have to deal with the firmware stuff, so - they should say Y here. - -config ATM_FORE200E_SBA_FW - string "Pathname of user-supplied binary firmware" - depends on ATM_FORE200E_SBA && !ATM_FORE200E_SBA_DEFAULT_FW - default "" - help - This defines the pathname of an alternative SBA-200E binary - firmware image supplied by the user. This pathname may be - absolute or relative to the drivers/atm directory. - - The driver comes with an adequate firmware image, so normal users do - not have to supply an alternative one. They just say Y to "Use - default SBA-200E firmware", above. - config ATM_FORE200E_USE_TASKLET bool "Defer interrupt work to a tasklet" - depends on (PCI || SBUS) && (ATM_FORE200E_PCA || ATM_FORE200E_SBA) + depends on ATM_FORE200E default n help This defers work to be done by the interrupt handler to a @@ -408,7 +349,7 @@ config ATM_FORE200E_USE_TASKLET config ATM_FORE200E_TX_RETRY int "Maximum number of tx retries" - depends on (PCI || SBUS) && (ATM_FORE200E_PCA || ATM_FORE200E_SBA) + depends on ATM_FORE200E default "16" ---help--- Specifies the number of times the driver attempts to transmit @@ -425,7 +366,7 @@ config ATM_FORE200E_TX_RETRY config ATM_FORE200E_DEBUG int "Debugging level (0-3)" - depends on (PCI || SBUS) && (ATM_FORE200E_PCA || ATM_FORE200E_SBA) + depends on ATM_FORE200E default "0" help Specifies the level of debugging messages issued by the driver. @@ -436,12 +377,6 @@ config ATM_FORE200E_DEBUG the performances of the driver, and the size of your syslog files! Keep the debugging level to 0 during normal operations. -config ATM_FORE200E - tristate - depends on (PCI || SBUS) && (ATM_FORE200E_PCA || ATM_FORE200E_SBA) - default m if ATM_FORE200E_MAYBE!=y - default y if ATM_FORE200E_MAYBE=y - config ATM_HE tristate "ForeRunner HE Series" depends on PCI diff --git a/drivers/atm/Makefile b/drivers/atm/Makefile index e4fa9965869..0bfb31748ec 100644 --- a/drivers/atm/Makefile +++ b/drivers/atm/Makefile @@ -3,14 +3,6 @@ # fore_200e-objs := fore200e.o -hostprogs-y := fore200e_mkfirm - -# Files generated that shall be removed upon make clean -clean-files := atmsar11.bin atmsar11.bin1 atmsar11.bin2 pca200e.bin \ - pca200e.bin1 pca200e.bin2 pca200e_ecd.bin pca200e_ecd.bin1 \ - pca200e_ecd.bin2 sba200e_ecd.bin sba200e_ecd.bin1 sba200e_ecd.bin2 -# Firmware generated that shall be removed upon make clean -clean-files += fore200e_pca_fw.c fore200e_sba_fw.c obj-$(CONFIG_ATM_ZATM) += zatm.o uPD98402.o obj-$(CONFIG_ATM_NICSTAR) += nicstar.o @@ -36,38 +28,7 @@ obj-$(CONFIG_ATM_TCP) += atmtcp.o obj-$(CONFIG_ATM_FIRESTREAM) += firestream.o obj-$(CONFIG_ATM_LANAI) += lanai.o -ifeq ($(CONFIG_ATM_FORE200E_PCA),y) - fore_200e-objs += fore200e_pca_fw.o - # guess the target endianess to choose the right PCA-200E firmware image - ifeq ($(CONFIG_ATM_FORE200E_PCA_DEFAULT_FW),y) - byteorder.h := include$(if $(patsubst $(srctree),,$(objtree)),2)/asm/byteorder.h - CONFIG_ATM_FORE200E_PCA_FW := $(obj)/pca200e$(if $(shell $(CC) $(KBUILD_CPPFLAGS) -E -dM $(byteorder.h) | grep ' __LITTLE_ENDIAN '),.bin,_ecd.bin2) - endif -endif - -ifeq ($(CONFIG_ATM_FORE200E_SBA),y) - fore_200e-objs += fore200e_sba_fw.o - ifeq ($(CONFIG_ATM_FORE200E_SBA_DEFAULT_FW),y) - CONFIG_ATM_FORE200E_SBA_FW := $(obj)/sba200e_ecd.bin2 - endif -endif obj-$(CONFIG_ATM_HE) += he.o ifeq ($(CONFIG_ATM_HE_USE_SUNI),y) obj-$(CONFIG_ATM_HE) += suni.o endif - -# FORE Systems 200E-series firmware magic -$(obj)/fore200e_pca_fw.c: $(patsubst "%", %, $(CONFIG_ATM_FORE200E_PCA_FW)) \ - $(obj)/fore200e_mkfirm - $(obj)/fore200e_mkfirm -k -b _fore200e_pca_fw \ - -i $(CONFIG_ATM_FORE200E_PCA_FW) -o $@ - -$(obj)/fore200e_sba_fw.c: $(patsubst "%", %, $(CONFIG_ATM_FORE200E_SBA_FW)) \ - $(obj)/fore200e_mkfirm - $(obj)/fore200e_mkfirm -k -b _fore200e_sba_fw \ - -i $(CONFIG_ATM_FORE200E_SBA_FW) -o $@ - -# deal with the various suffixes of the binary firmware images -$(obj)/%.bin $(obj)/%.bin1 $(obj)/%.bin2: $(src)/%.data - objcopy -Iihex $< -Obinary $@.gz - gzip -n -df $@.gz diff --git a/drivers/atm/fore200e.c b/drivers/atm/fore200e.c index 432181ed7bb..d5c1bbfbe79 100644 --- a/drivers/atm/fore200e.c +++ b/drivers/atm/fore200e.c @@ -36,6 +36,7 @@ #include <linux/atm_suni.h> #include <linux/dma-mapping.h> #include <linux/delay.h> +#include <linux/firmware.h> #include <asm/io.h> #include <asm/string.h> #include <asm/page.h> @@ -45,7 +46,7 @@ #include <asm/uaccess.h> #include <asm/atomic.h> -#ifdef CONFIG_ATM_FORE200E_SBA +#ifdef CONFIG_SBUS #include <asm/idprom.h> #include <asm/sbus.h> #include <asm/openprom.h> @@ -382,9 +383,6 @@ fore200e_shutdown(struct fore200e* fore200e) case FORE200E_STATE_START_FW: /* nothing to do for that state */ - case FORE200E_STATE_LOAD_FW: - /* nothing to do for that state */ - case FORE200E_STATE_RESET: /* nothing to do for that state */ @@ -405,7 +403,7 @@ fore200e_shutdown(struct fore200e* fore200e) } -#ifdef CONFIG_ATM_FORE200E_PCA +#ifdef CONFIG_PCI static u32 fore200e_pca_read(volatile u32 __iomem *addr) { @@ -658,10 +656,10 @@ fore200e_pca_proc_read(struct fore200e* fore200e, char *page) pci_dev->bus->number, PCI_SLOT(pci_dev->devfn), PCI_FUNC(pci_dev->devfn)); } -#endif /* CONFIG_ATM_FORE200E_PCA */ +#endif /* CONFIG_PCI */ -#ifdef CONFIG_ATM_FORE200E_SBA +#ifdef CONFIG_SBUS static u32 fore200e_sba_read(volatile u32 __iomem *addr) @@ -907,7 +905,7 @@ fore200e_sba_proc_read(struct fore200e* fore200e, char *page) return sprintf(page, " SBUS slot/device:\t\t%d/'%s'\n", sbus_dev->slot, sbus_dev->prom_name); } -#endif /* CONFIG_ATM_FORE200E_SBA */ +#endif /* CONFIG_SBUS */ static void @@ -2552,13 +2550,53 @@ fore200e_monitor_puts(struct fore200e* fore200e, char* str) while (fore200e_monitor_getc(fore200e) >= 0); } +#ifdef __LITTLE_ENDIAN +#define FW_EXT ".bin" +#else +#define FW_EXT "_ecd.bin2" +#endif static int __devinit -fore200e_start_fw(struct fore200e* fore200e) -{ - int ok; - char cmd[ 48 ]; - struct fw_header* fw_header = (struct fw_header*) fore200e->bus->fw_data; +fore200e_load_and_start_fw(struct fore200e* fore200e) +{ + const struct firmware *firmware; + struct device *device; + struct fw_header *fw_header; + u32 *fw_data, fw_size; + u32 __iomem *load_addr; + char buf[48]; + int err = -ENODEV; + + if (strcmp(fore200e->bus->model_name, "PCA-200E") == 0) + device = &((struct pci_dev *) fore200e->bus_dev)->dev; +#ifdef CONFIG_SBUS + else if (strcmp(fore200e->bus->model_name, "SBA-200E") == 0) + device = &((struct sbus_dev *) fore200e->bus_dev)->ofdev.dev; +#endif + else + return err; + + sprintf(buf, "%s%s", fore200e->bus->proc_name, FW_EXT); + if (request_firmware(&firmware, buf, device) == 1) { + printk(FORE200E "missing %s firmware image\n", fore200e->bus->model_name); + return err; + } + + fw_data = (u32 *) firmware->data; + fw_size = firmware->size / sizeof(u32); + fw_header = (struct fw_header *) firmware->data; + load_addr = fore200e->virt_base + le32_to_cpu(fw_header->load_offset); + + DPRINTK(2, "device %s firmware being loaded at 0x%p (%d words)\n", + fore200e->name, load_addr, fw_size); + + if (le32_to_cpu(fw_header->magic) != FW_HEADER_MAGIC) { + printk(FORE200E "corrupted %s firmware image\n", fore200e->bus->model_name); + goto release; + } + + for (; fw_size--; fw_data++, load_addr++) + fore200e->bus->write(le32_to_cpu(*fw_data), load_addr); DPRINTK(2, "device %s firmware being started\n", fore200e->name); @@ -2567,46 +2605,22 @@ fore200e_start_fw(struct fore200e* fore200e) fore200e_spin(100); #endif - sprintf(cmd, "\rgo %x\r", le32_to_cpu(fw_header->start_offset)); + sprintf(buf, "\rgo %x\r", le32_to_cpu(fw_header->start_offset)); + fore200e_monitor_puts(fore200e, buf); - fore200e_monitor_puts(fore200e, cmd); - - ok = fore200e_io_poll(fore200e, &fore200e->cp_monitor->bstat, BSTAT_CP_RUNNING, 1000); - if (ok == 0) { + if (fore200e_io_poll(fore200e, &fore200e->cp_monitor->bstat, BSTAT_CP_RUNNING, 1000) == 0) { printk(FORE200E "device %s firmware didn't start\n", fore200e->name); - return -ENODEV; + goto release; } printk(FORE200E "device %s firmware started\n", fore200e->name); fore200e->state = FORE200E_STATE_START_FW; - return 0; -} + err = 0; - -static int __devinit -fore200e_load_fw(struct fore200e* fore200e) -{ - __le32* fw_data = (__le32*) fore200e->bus->fw_data; - u32 fw_size = (u32) *fore200e->bus->fw_size / sizeof(u32); - - struct fw_header* fw_header = (struct fw_header*) fw_data; - - u32 __iomem *load_addr = fore200e->virt_base + le32_to_cpu(fw_header->load_offset); - - DPRINTK(2, "device %s firmware being loaded at 0x%p (%d words)\n", - fore200e->name, load_addr, fw_size); - - if (le32_to_cpu(fw_header->magic) != FW_HEADER_MAGIC) { - printk(FORE200E "corrupted %s firmware image\n", fore200e->bus->model_name); - return -ENODEV; - } - - for (; fw_size--; fw_data++, load_addr++) - fore200e->bus->write(le32_to_cpu(*fw_data), load_addr); - - fore200e->state = FORE200E_STATE_LOAD_FW; - return 0; +release: + release_firmware(firmware); + return err; } @@ -2652,10 +2666,7 @@ fore200e_init(struct fore200e* fore200e) if (fore200e_reset(fore200e, 1) < 0) return -ENODEV; - if (fore200e_load_fw(fore200e) < 0) - return -ENODEV; - - if (fore200e_start_fw(fore200e) < 0) + if (fore200e_load_and_start_fw(fore200e) < 0) return -ENODEV; if (fore200e_initialize(fore200e) < 0) @@ -2689,7 +2700,7 @@ fore200e_init(struct fore200e* fore200e) return 0; } -#ifdef CONFIG_ATM_FORE200E_PCA +#ifdef CONFIG_PCI static int __devinit fore200e_pca_detect(struct pci_dev *pci_dev, const struct pci_device_id *pci_ent) { @@ -2804,7 +2815,7 @@ fore200e_module_init(void) } } -#ifdef CONFIG_ATM_FORE200E_PCA +#ifdef CONFIG_PCI if (!pci_register_driver(&fore200e_pca_driver)) return 0; #endif @@ -2821,7 +2832,7 @@ fore200e_module_cleanup(void) { struct fore200e *fore200e, *next; -#ifdef CONFIG_ATM_FORE200E_PCA +#ifdef CONFIG_PCI pci_unregister_driver(&fore200e_pca_driver); #endif @@ -3140,19 +3151,9 @@ static const struct atmdev_ops fore200e_ops = }; -#ifdef CONFIG_ATM_FORE200E_PCA -extern const unsigned char _fore200e_pca_fw_data[]; -extern const unsigned int _fore200e_pca_fw_size; -#endif -#ifdef CONFIG_ATM_FORE200E_SBA -extern const unsigned char _fore200e_sba_fw_data[]; -extern const unsigned int _fore200e_sba_fw_size; -#endif - static const struct fore200e_bus fore200e_bus[] = { -#ifdef CONFIG_ATM_FORE200E_PCA +#ifdef CONFIG_PCI { "PCA-200E", "pca200e", 32, 4, 32, - _fore200e_pca_fw_data, &_fore200e_pca_fw_size, fore200e_pca_read, fore200e_pca_write, fore200e_pca_dma_map, @@ -3173,9 +3174,8 @@ static const struct fore200e_bus fore200e_bus[] = { fore200e_pca_proc_read, }, #endif -#ifdef CONFIG_ATM_FORE200E_SBA +#ifdef CONFIG_SBUS { "SBA-200E", "sba200e", 32, 64, 32, - _fore200e_sba_fw_data, &_fore200e_sba_fw_size, fore200e_sba_read, fore200e_sba_write, fore200e_sba_dma_map, diff --git a/drivers/atm/fore200e.h b/drivers/atm/fore200e.h index 8dd4aa76c3b..5c6e7adcb19 100644 --- a/drivers/atm/fore200e.h +++ b/drivers/atm/fore200e.h @@ -754,7 +754,6 @@ typedef enum fore200e_state { FORE200E_STATE_CONFIGURE, /* bus interface configured */ FORE200E_STATE_MAP, /* board space mapped in host memory */ FORE200E_STATE_RESET, /* board resetted */ - FORE200E_STATE_LOAD_FW, /* firmware loaded */ FORE200E_STATE_START_FW, /* firmware started */ FORE200E_STATE_INITIALIZE, /* initialize command successful */ FORE200E_STATE_INIT_CMDQ, /* command queue initialized */ @@ -803,8 +802,6 @@ typedef struct fore200e_bus { int descr_alignment; /* tpd/rpd/rbd DMA alignment requirement */ int buffer_alignment; /* rx buffers DMA alignment requirement */ int status_alignment; /* status words DMA alignment requirement */ - const unsigned char* fw_data; /* address of firmware data start */ - const unsigned int* fw_size; /* address of firmware data size */ u32 (*read)(volatile u32 __iomem *); void (*write)(u32, volatile u32 __iomem *); u32 (*dma_map)(struct fore200e*, void*, int, int); diff --git a/drivers/atm/fore200e_firmware_copyright b/drivers/atm/fore200e_firmware_copyright deleted file mode 100644 index d58e6490836..00000000000 --- a/drivers/atm/fore200e_firmware_copyright +++ /dev/null @@ -1,31 +0,0 @@ - -These microcode data are placed under the terms of the GNU General Public License. - -We would prefer you not to distribute modified versions of it and not to ask -for assembly or other microcode source. - -Copyright (c) 1995-2000 FORE Systems, Inc., as an unpublished work. This -notice does not imply unrestricted or public access to these materials which -are a trade secret of FORE Systems, Inc. or its subsidiaries or affiliates -(together referred to as "FORE"), and which may not be reproduced, used, sold -or transferred to any third party without FORE's prior written consent. All -rights reserved. - -U.S. Government Restricted Rights. If you are licensing the Software on -behalf of the U.S. Government ("Government"), the following provisions apply -to you. If the software is supplied to the Department of Defense ("DoD"), it -is classified as "Commercial Computer Software" under paragraph 252.227-7014 -of the DoD Supplement to the Federal Acquisition Regulations ("DFARS") (or any -successor regulations) and the Government is acquiring only the license -rights granted herein (the license rights customarily provided to non-Government -users). If the Software is supplied to any unit or agency of the Government -other than the DoD, it is classified as "Restricted Computer Software" and -the Government's rights in the Software are defined in paragraph 52.227-19 of -the Federal Acquisition Regulations ("FAR") (or any successor regulations) or, -in the cases of NASA, in paragraph 18.52.227-86 of the NASA Supplement to the FAR -(or any successor regulations). - -FORE Systems is a registered trademark, and ForeRunner, ForeRunnerLE, and -ForeThought are trademarks of FORE Systems, Inc. All other brands or product -names are trademarks or registered trademarks of their respective holders. - diff --git a/drivers/atm/fore200e_mkfirm.c b/drivers/atm/fore200e_mkfirm.c deleted file mode 100644 index 520e14b488f..00000000000 --- a/drivers/atm/fore200e_mkfirm.c +++ /dev/null @@ -1,154 +0,0 @@ -/* - mkfirm.c: generates a C readable file from a binary firmware image - - Christophe Lizzi (lizzi@{csti.fr, cnam.fr}), June 1999. - - This software may be used and distributed according to the terms - of the GNU General Public License, incorporated herein by reference. -*/ - -#include <stdio.h> -#include <stdlib.h> -#include <sys/types.h> -#include <time.h> - -char* default_basename = "pca200e"; /* was initially written for the PCA-200E firmware */ -char* default_infname = "<stdin>"; -char* default_outfname = "<stdout>"; - -char* progname; -int verbose = 0; -int inkernel = 0; - - -void usage(void) -{ - fprintf(stderr, - "%s: [-v] [-k] [-b basename ] [-i firmware.bin] [-o firmware.c]\n", - progname); - exit(-1); -} - - -int main(int argc, char** argv) -{ - time_t now; - char* infname = NULL; - char* outfname = NULL; - char* basename = NULL; - FILE* infile; - FILE* outfile; - unsigned firmsize; - int c; - - progname = *(argv++); - - while (argc > 1) { - if ((*argv)[0] == '-') { - switch ((*argv)[1]) { - case 'i': - if (argc-- < 3) - usage(); - infname = *(++argv); - break; - case 'o': - if (argc-- < 3) - usage(); - outfname = *(++argv); - break; - case 'b': - if (argc-- < 3) - usage(); - basename = *(++argv); - break; - case 'v': - verbose = 1; - break; - case 'k': - inkernel = 1; - break; - default: - usage(); - } - } - else { - usage(); - } - argc--; - argv++; - } - - if (infname != NULL) { - infile = fopen(infname, "r"); - if (infile == NULL) { - fprintf(stderr, "%s: can't open %s for reading\n", - progname, infname); - exit(-2); - } - } - else { - infile = stdin; - infname = default_infname; - } - - if (outfname) { - outfile = fopen(outfname, "w"); - if (outfile == NULL) { - fprintf(stderr, "%s: can't open %s for writing\n", - progname, outfname); - exit(-3); - } - } - else { - outfile = stdout; - outfname = default_outfname; - } - - if (basename == NULL) - basename = default_basename; - - if (verbose) { - fprintf(stderr, "%s: input file = %s\n", progname, infname ); - fprintf(stderr, "%s: output file = %s\n", progname, outfname ); - fprintf(stderr, "%s: firmware basename = %s\n", progname, basename ); - } - - time(&now); - fprintf(outfile, "/*\n generated by %s from %s on %s" - " DO NOT EDIT!\n*/\n\n", - progname, infname, ctime(&now)); - - if (inkernel) - fprintf(outfile, "#include <linux/init.h>\n\n" ); - - /* XXX force 32 bit alignment? */ - fprintf(outfile, "const unsigned char%s %s_data[] = {\n", - inkernel ? " __initdata" : "", basename ); - - c = getc(infile); - fprintf(outfile,"\t0x%02x", c); - firmsize = 1; - - while ((c = getc(infile)) >= 0) { - - if (firmsize++ % 8) - fprintf(outfile,", 0x%02x", c); - else - fprintf(outfile,",\n\t0x%02x", c); - } - - fprintf(outfile, "\n};\n\n"); - - fprintf(outfile, "const unsigned int%s %s_size = %u;\n", - inkernel ? " __initdata" : "", basename, firmsize ); - - if (infile != stdin) - fclose(infile); - if (outfile != stdout) - fclose(outfile); - - if(verbose) - fprintf(stderr, "%s: firmware size = %u\n", progname, firmsize); - - exit(0); -} diff --git a/drivers/atm/pca200e.data b/drivers/atm/pca200e.data deleted file mode 100644 index e78e83becd9..00000000000 --- a/drivers/atm/pca200e.data +++ /dev/null @@ -1,850 +0,0 @@ -:150000001F8B0808AB5A10380203706361323030652E62696E4D -:150015007D00E43A0D7014D7796FA5BDE84EC86211A7333020EE -:15002A00AD89C00A23EA83AA589C7E7C38D8152EB887477677D3 -:15003F0095C39C3DB2AB388CA324C4A509352BFBB085BBD0C73F -:150054007210B903C92991CCD1B1C242255BCCD81EA5C34C6826 -:1500690006271AC6D36A3A31B976D4A9A683DB4B07BB38265C56 -:15007E00BFEFBDB7777BA7030B2733994C35737AFBBEF7BDEFE7 -:15009300EF7DDFF7BEF7769FFEEAD79F221221E1ED844C3E4677 -:1500A8007EA3BFF036F827CF8597C3AF0C7E920B16595BCE5AA8 -:1500BD00296B6483D83E9F7DBE8FF50BE74A0B45FB1F274FAA79 -:1500D200D82E2867139DF637FD937EF1D55FB0769FE8678BDAFB -:1500E7007D9BD8885451515172FE27E4138E9FC9949CBFF026BC -:1500FC00741DF83ECE59823FF23BF89346493F6B4F17C1B3A7CE -:15011100B3B79C97D3275B5ABFEC3CF9579457703B3CBFEFD600 -:15012600FC38236CA91B5E347EDBFA67F7ED4397956EA4D3C5F4 -:15013B007CE6A567799EFFF5CFC4FF7BDF938BF83E83EDE59F02 -:15015000FEAC24BF8A3C3F2FF9FDFF933CF51EF2FFEC2FEBFA11 -:150165002341C38CBC5F4EAA265F5EAF04BC51F0059FD1419ED8 -:15017A00063493D465A2384E66A0171C30231F40AB5CB5646FC8 -:15018F005CBFB633DECCC614D2DAF622F15D3189EFEA3EE28B83 -:1501A4007D99F8DABE4D7C2418A438AF3129015D7507F1032EBA -:1501B900E174827F46C82229AE2BC63A9D50E9253960EC005FCA -:1501CE00F2EDFE0AF12A9D5EBD6A35F1B5AC441A49BAD94F22C6 -:1501E300DECB544F180D1A51FACD8C4A7C034B93DAFD6455A8F9 -:1501F8009AAC5AB74C9542EF11E23DB0946A0F1B0DA10BF0CC0C -:15020D00F9A4A8097BCA1D751474A02FEC02593C75C9E870D176 -:15022200B8CF352EC3783C379E1C2893C98017C6A57B3CDD0E4D -:15023700CE32426A9CB99F03FC2E81BF46AD0D06544FD0190B08 -:15024C00C0580B8E897EFDF490DE08FD652E9CFAE911DD5F24FE -:15026100CF832469DAB1116BE0F3C437B686F8D275C437AC9220 -:150276000542BFF6CC0320B22AB7237E1F5B97A4E927A397490C -:15028B0064C43AFF0CD8ACCE8886D37F632A7F4C16005E289CAF -:1502A0003E491DDAFB083513C6B0A6B8E4929626F531E0877479 -:1502B50082E58C9E2503DDD45DC4777E3BF1051F253E09684E42 -:1502CA00C3BAC26825AC39F5225F6598EE23B366227C52ABFC3A -:1502DF00BC2754E61BD1FFEBAE6DCDFE8D49AAEA38EE89A35A1B -:1502F4009DF0DCF4254234681BBB09E98536033F2F3C5F835F24 -:15030900107E147E1AE8AA0406A36989DB63C95ADE9F9272EBA7 -:15031E00C17C6131AC4519193457028723BE118D0433D6F063E5 -:150333005C6E1C77EC2981FD118663B2FA3A455F8D11A2D66BC0 -:15034800AFE9B096E6D4A38454D70D004ECA8235541117C7A5F2 -:15035D002D26F8E4B07D3848BA956402FC7BF8EC956CB6B6D35F -:1503720091EB21B280C218CAB04122B5957583D126189B7D88FF -:15038700FB2BDA46560F52056C867C6CE85FF1135F19E0C948D1 -:15039C0023873342916798F3A6E45FA58C9021887DB9A8DF9307 -:1503B1002EECF7421F693AB054DE6F73F4FDF414E83A6B66B2C0 -:1503C6000B11C3BA0E45D0D1074E3318C92C24FE074FF267E847 -:1503DB00E03AE67193D635C40D9FD66A65B471CABA5AC66D9C17 -:1503F00081B68DE4F5200AEA316B3E3EF5F8D4CAF0C902BFBC6E -:1504050003FD12ED00BE39F8E7C4E765F2A6F8BCC8083DA6B648 -:15041A00335DAAA0AFC4DEA66A6CDC8418EA26910FAD6A0821BE -:15042F0012B4A9C269D1DDAC9DB05A98BD06B91D807702D6021B -:15044400F02CA479BF88CD3D82BE3F92D49137C262E0EB5969BB -:15045900D6AC8DA4F4A3A0EB808FEB8570E6F34897F9F77CE4C2 -:15046E0071E4E07C73F2C0FC256AC3208B2D5C834D43BA3F060F -:15048300F39566B386103FC611E321E23D02F1168A79426C3DFD -:15049800E159DA32AAA34C083FBA62DC2474847A94BF031D86A2 -:1504AD00ACE5EAEB969CDC4FF3F3216F03DE5414FD8ED3DA3050 -:1504C2005F5AC953795A804F2146D05612811C0DB6A0BC0E67DE -:1504D7007C6E471FC3A5CFA04B06639EFA201E11FA182E7D3E53 -:1504EC009556913E89227D129F511FDBA5CF05970CF63CF54199 -:15050100BCE097B83EB64B9F4FA555A4CF60913E839F511F752A -:1505160026AF4FCB4C5E0684CF471FC48B75737DF079C37C69B3 -:15052B0015E973BC489FE32E7DC231AFD997FEF15925301975DC -:150540007CBC5E33F5D918F2E53E82FD69D1B745FF82E8237F22 -:15055500EC4FB07ED2A4626FD8C3F7363321FA29D11F14FD6938 -:15056A00D13F2EFA9D40678FFA1ACBD131181B507F88FBA8451E -:15057F00E179507D8362EC4FC2734A7D8786D5D526CF431356CC -:1505940010E6D51152BB2CE6690F243DED35694FBB17D6017487 -:1505A900B251C766F514A3D3037337AB67189D043C77A9E728AB -:1505BE00CE3FCFE5A0C8B347ED17F9CDB09A812EE4A09AFBC861 -:1505D30005F3ECCE1F76B0B8059C6AD51342D87777BEC16093F7 -:1505E8002ED82B3BDF613094C9813DB7F3A50E87FE6A95AF1F58 -:1505FD00D259C69E53B447F047991EAA1FDDE8D0747091968332 -:15061200EBC88AB2D5095CA4FB07AA87ED030961D37494DB348F -:15062700C27225D77D497EBF32958271CE6F8DA0D12CF612E37F -:15063C00718ED32568206F3FDF874C7B477EAC4DD8310AE35B40 -:15065100C17E683B139EA3EA6178A6D65B4CA65926E72EF555F4 -:150666007A82D977D06A9A610E58F3D80D4F6BFDF4DDFAC37506 -:15067B00E7D67D672AA93DD881720C301B55C6E4D0860EB97506 -:150690007D5DFF3A0A636BD898CDE4AD4C7A42CBDE915B037587 -:1506A50087D7593056DDC1E5477B55429CDCF8B5DCFAAB15AFBD -:1506BA00AE3B0263FFD3EE69AF8C5584FEF3FD0FDA90E6BFADE7 -:1506CF0030DB70FEBF9C186B43DC4BEFBFDE4682BD8C27C86F5A -:1506E400B3BC185CC264063DED086BF730DA2418B655D6F63110 -:1506F900394850B53126EEFCD1AC2EBD1B83F83B6D56056C5662 -:15070E0027F079B3565739DFC3A2AC8D591AB48B37FD4097B6BD -:150723007D4527CA41F38E00D6C48665887A30CEDA5E6BA09CE8 -:15073800EF7568CF8A7EC03FF80DC05F6B56078280AFB25C86D9 -:15074D00F863ACEDB32658DBC26CBEE04780FFEEB7017F9BB98C -:15076200301001FCB0C5E54E5A0DD0BEC8D6618FD53893DFDBC0 -:15077700489D0A781A5B9B27616DFAD4435409C08E179C365B01 -:15078C00B86D2C5EB34E5BCDD0CEC0B98106CBBA25A29A87AEC7 -:1507A100676BD0977601BC4A7DCDC2BA15ED575E1DD7B78610CF -:1507B6008FC715EE954F0A5CB4B78837139F9F079E8AEFA21E32 -:1507CB00DF9814679714AB9163E99F59FEBDE3263A704FFA4DF8 -:1507E0000BFAD400D9FCE1115DF1C541C7772D591DB7BA1C7929 -:1507F500D4BBCC1B9F701EC761BE22E4A1429EB736E6E5C1BDA9 -:15080A00EE92C09D74C933790B79222E79BA401EE8535A429E39 -:15081F00F3ABF2F23C2B785CC43812F24C0A799A5CF2E05E759D -:15083400BFC0457F73E4C1E79BC91376C9B319E4813E4D9690D5 -:15084900A7D925CFE55F711E6D33B8A771799007CA73BC252F86 -:15085E000FEE3567392EE35506B935DE3E625D87B3AC9363DDC5 -:15087300675D387B325FEEC53DCA370CF1D064D2707F1F9E1BAD -:15088800BCCC7732962CFCB60AF76B17AFD80C1694A4D6EBDAB7 -:15089D0047E58DFC1CEB75E1E10563311E21B6794C95704FA00C -:1508B20031EEBF8BC93DD0270326EC0F8A54674771FCCEF0B040 -:1508C7007E67F81CD864D8EA401CC819480FE1811DBC76E5FDFE -:1508DC00733A83FDD508D6AA24406D9DCF3FA75FCC66FD65D592 -:1508F100FDFAEE7BF332F5F0FDC225936D769033AD01550A3A24 -:15090600BCF12CBF86F184F305E007567C68E59EDB3FCCF1498D -:15091B00D79F692B73E8803CC25E4CAEDA152370463A4A2DE42F -:15093000AB34998BC0DE1BD01C0AA7C5715314ED0FC74F4B510E -:150945005ED2BDC9319893001F18B3A2AE734B17D4E2CFA89EB1 -:15095A00D6B7245E6394E2F350520E95A6DD6079943780F65B70 -:15096F00507B1C857AE36D0B6B12491D8133EA88E6D41A72B92A -:15098400A835607E52D421448C255D7548EE0F723FD656E84744 -:15099900CA3D28974DE33C4751AF90CFEB9603D61BE545BA8197 -:1509AE00906D2A44D446CA190BE550DE5F85B273DF637264CCC1 -:1509C300C15E487501388B928C8974B4ED9C4E8FD80F395D9B32 -:1509D800D9A7F6FDFD5482B3B6141B358F92514D3A30CEEA2EE8 -:1509ED003EC7B6108744E478BE6ECB98555F46FA54D0E77A23D8 -:150A0200FDE876AE1FE7932AE0C3EC226CC2EC98E676BC7347DE -:150A1700DC0A446C361675F3A48267306C72595A4C85D9A5D310 -:150A2C006467AB60D0E4761AA00C1E19A6CFDE057584F27DAC4C -:150A4100810A64F09F5845DD6B073896ACC05936324E1D3FC1D0 -:150A56001C843796C7485C2391FD168998CC2EAC0E807119F419 -:150A6B00A52D86899716E555719D1E5CABF77860FDA686D87D2E -:150A8000881FD74839ABCBEADB34C06AE6FC196F49F9DC3367A7 -:150A9500FF9653FCBCE83E774E9DC198FD9433E7203F734E0EF2 -:150AAA00E7CE9BECEC19F9BEE5F8961C30A2634DFCFEA0D0B70D -:150ABF00B82FA14CBDC23E6C6D4249E6574419B2081DA247F1E2 -:150AD400AE02FC0A7D81D9CC00FA74C84ADCC82E72F9336B3524 -:150AE90075186487D8A757CCC5B06FE37D56B5BAAAF912D674D6 -:150AFE0012F13EA3AE0D5D83985C9FF6B7B3DAEE31CEB713DA06 -:150B130045E420F33B90DB12700BE117C47D4058E0468A700568 -:150B2800DC42F87111EF0EFD1E316777D11C01B710DE2BE8F75C -:150B3D000A5CA30857C02D84B709FA2B05FD06818B78F8BCDCC9 -:150B5200956F1A5D63F88C67293C4379C18FCAAB46C037862CF0 -:150B6700B497ACBCA2E37A07D5613B00F6AA091FED901553AFF3 -:150B7C00EDBFA257A9A7AC65C6076D814DFFADCBB131EB44D2FC -:150B9100D3ED8D9966269B5D0C355EAB1CBB62393E5B09B92DA1 -:150BA6007D3DEB73C7C0B7A0CE95599D4AE7C4A388AF5C5E4121 -:150BBB001ACAA1213D513EACA16C353B1A2C279ED9DA634E30EB -:150BD0002027A4DFC63C22E273C22A8E67F405C61362C61D27AE -:150BE5002FDE11D7C365DC0F1591D33E2D4E5E82FD3B17230768 -:150BFA008634CC078AD84F31565642CAC2B3E0D3AC9E17310500 -:150C0F00F1F318F89BA8DF73B0FBC5B9E2E6B1D4226269A8F448 -:150C2400FD8D2B9E7ABEF0DBCFD57473E2296C3D2DEC7EBCF2E1 -:150C3900AE00DF13950DDEA802CFB7FA713CC25A35E0ECA52AC3 -:150C4E00D412F544A96ED2E3655F78CA23E0B4C678CA19C73BC6 -:150C63007A25DCF084ECD008279EA8719E37E5E1B9FD8ADDB182 -:150C78000DC0764CD423AADC4D73B519BFDF7C84EDF7B3589BA5 -:150C8D002978178F2324729206D4F666ACDF181C6C7FFDBEF62F -:150CA2003F04FFB4091D3E8BEDE2C8A08EF7A1481361354A427E -:150CB700BF0075C79CFD52F0EFBA09FFF58CFF80C9F2281DB6EB -:150CCC00918E943ECEE946809780E173BA047D6A637DC3E9E326 -:150CE100FD30D41426ABD5A0BF066353F5B7AD57AB426111E732 -:150CF6002175793BD0A435CA01DD9101E36E51513FF72CF85916 -:150D0B00533FD0D6AB0F846AD4079A03EAAAD056276FA94F71C2 -:150D2000DA82A6E43B3E87AEF48FB786AD4E2F6F75EEA36584E2 -:150D3500837D8F64208743DE10F7CD8B56A7E5565C0F7627CD82 -:150D4A0071E811C84132E2404C200ECA9A85BA8E1AFB35425244 -:150D5F00980BCDECDF9F97C1AF71CF55D02E2C2EA660BF823D2D -:150D74006135190E61FC6476BEDEE1BEA7FD9C787F107F84E908 -:150D89005860EF2C9930495D2A9AA76D08DAB6C1624F81FD644F -:150D9E0072445B638C94A45D2168373E42BCEE7D285F5F65CC2D -:150DB300E4D7B03E3172F5C9FCF381CDF301E856321F28AE3A51 -:150DC80028771E688C4A5BD641CD07B107B58A72379C210E6DFD -:150DDD00D477415EF648712D0AAD1C4846132A3F977C1772DDE5 -:150DF200B1E4C7CDE4EA10BDF6B5FC7B8D3D5FFFDDFEA623C476 -:150E070037F149D60767196DF37D72BB73D787F76764B77176CD -:150E1C0012DFEDED4E9E9D62ED24C612B4E9B319F6CE0FCEC553 -:150E310060A795E28EC5592B49ACD55EA03DFBA77C1F408D2F19 -:150E4600C19925111ED61AB1FD22D431CC768DCC76686BC46913 -:150E5B00025948755C5BFE89B05F4C62F603E3079A805E15C03F -:150E70007F7E9F7C2F5BCFEDA2BE82166B17AC59900EF6BB59E8 -:150E85003D95F781473ED50706C49DFE70491F5072FB7DC6422E -:150E9A009DC136B6B08D2D6C630BDBD8689B72C8E56E9F99AF8B -:150EAF003DF1DD13D451C14A757F10CEF8BE3C6C2DC00E06535C -:150EC40005B03F02D8D1E09803AB42582DC056042711C6EE3D4A -:150ED900B87DDFFB18EC09763DFFF15CBBBEF730F18D7D8C764C -:150EEE006DB877BE7ACD579F7809FF2813FE1105BE17B615CA1F -:150F0300D922135F23C8E20159979490B511E67899AC4DF7DEFF -:150F1800CE1ACC57DEDE12F2960B795F0759976C9BEBCF06FAC8 -:150F2D004B095F8E5DCBFACA408FC8B5B97AC4804EF81AEAE194 -:150F4200BFF7767DE976F4E929A18F2CF4F9F956E2EB84DF675D -:150F5700E1BFF97F4127B5812A6A1365EFE620074AB029B701EC -:150F6C001CFB32E934357C0E6AA60AD659AEEA96A26EFA5B76F9 -:150F8100970E79676B6C88BD2B8E7D53DCF73CC76A5433FD0D60 -:150F9600A89D643847E33B55DC9401EF62EC9455F5C419EBC295 -:150FAB00479C3601BAD9858639057D89F7BD631F15CA33267057 -:150FC000DF83B68B244DBFCAF9118DF3433EC8CFDE5DC86F3932 -:150FD500E0553D71CADA0AFC3441837EC4F9C5043FE87BDDF609 -:150FEA0054843DCD3FE1EFB8AF3E440AC61789F15D62FCBDA29D -:150FFF00F11A31BE558C8F158D2F16E34D623CC1C63366D79E29 -:15101400FC793F0B3A5202FB37ECD5DEE52452707687BF81A5FC -:15102900B646E14C41EA923BF0AC5963EC5F87EFF53591D70ED8 -:15103E002C9DD53AC22F873A5DF7E92F4C3CF113B4D573BB2F35 -:1510530075045DF0CBAFFEF57584B7EEF84987FBFE7DFA8D6F83 -:151068009D40F893FFF0E30EC2BE871834E3FFFC179BFC0163E8 -:15107D0047B297F8269F24BE3972BAEE17827F59B87FCB380E23 -:15109200F9167388548D39197231C24AECC74EAE81B351FBEE40 -:1510A7002DE2DE07700F6C19D52A638F065F811671F66EE7672C -:1510BC003C1C73CE320C5644AF8EDFF7F1EF332E0FE8F683F8F2 -:1510D1001D01FB1640C47E8ADD2918BE51B6571056CB2419BE69 -:1510E6005F39CDEE52768B7B1784A9EA283B4BED71C18202D67F -:1510FB00E7823509D8DE99FCB707866B1CED4B26086954472D8C -:15111000370CBF436C2882554932692E84518A67BFD838550E10 -:151125008DEA2D3826F4C6EF6508BD9BD99D8AF91FDC58F453B2 -:15113A002F9B9FF345D18A7E649C4A07F09C0338ECFD3DE713EE -:15114F005647E93EA827B19EC2F3EE65F0B7441FE9C6F74ED3D0 -:15116400397FE1B66DACE2760DA74FE6E40CA74FD3FE2DE3DA2C -:151179006675DC72D37C79E98086FB33D28C15ECEFA3ECEE6226 -:15118E00AB80ED1132EE113206605F6732E27B2576864DE1DED8 -:1511A300CF6A05B6F78BB51C106B298B6F2998CDA06605DE16C5 -:1511B8007EFF9280338317CFA17866127A7845AB14B5176F64D1 -:1511CD000BEA546EDF93EC5E0EF76903F4C3332E3E3B30F2F086 -:1511E2005C58991BC6EAE794D509272B493C6F56381C6C66A124 -:1511F700DD6A33CCCE0143C8C160013B1AD89812E727389FC223 -:15120C009C5A03D60DD688B591717321D2A3A356297C52029F42 -:15122100E4F0DFE4F605183C5B7B9DCFF944FCBD20F4E4B19C55 -:1512360062758BE4E804CF57A514F3F7A03F3FFEF296FCB8034D -:15124B007BA9044C7E782ECCE386B9623AE7DF22A69C7875C78E -:15126000727F512C633B25C66E36C72831C7196BC4F68BF9B97C -:151275009590BB8DBBC902278FA04D5E747C0E9EEBA7E37AAC39 -:15128A00687CC1E594CE69A4CC1648B68998A71B7CAC06F7016D -:15129F0073733E27A17F605C38637DEE31F6ED1BA7C35A178D76 -:1512B400CE221A8E0DB80F7298510C037A2F38307F1E66948027 -:1512C900555617C250A7FD2E9D1D58BC04ACBCDA0D334CBB4EC1 -:1512DE0026E1D5C23EB08F60CEC0B8F483CF634D85DFE4B17ECD -:1512F3002015AD75BD4B225584BD3342FFF533FF1D311D3FAFDB -:151308003C84DF1BD87400BFB50BF35C568A8672DB34600CF7B2 -:15131D00176514F12C2D1717498AF91CF3E12ECC25D0C77907C1 -:1513320097A634461F7DC54F6829B8E2829B6EFC25A5E10AC018 -:151347007B9DEFDEEA788E75DB6BAB74137BF94BEBBAE0B20DCC -:15135C0067E4D1BE83504BB03C301FBBFD1669A19EB75A03F3CC -:1513710076E4FACCB40AD7D51679DED9AB793E2EB475613E2E11 -:15138600210BCCE1B2A44CD602ED85480F6ABE927628814F729C -:15139B00F885F2ED75F91DC6AF543D37BE49F5DCF82EAB9E1BB7 -:1513B000CBA404EC15DFDCF8F654CF8D65B90886F847DC73F32E -:1513C500EF3C2B79FD8531CEF706B469BD6BEF83D6D825BEDF9F -:1513DA0020AEBD50291A935D63FEA231AF6B6C49D158956B6C58 -:1513EF00B922F611E52D4A1493CAEA307BCFC4BF63A4F41A6BD3 -:1514040007E9F532BEE765581B34A1A82072F5889E30C635FCEE -:151419005676B13CA21F2B1FD78E854735AC55BE639CD3BC1730 -:15142E003FD0192E201F360E68CA5653AF81BC5CE97AFF8BDFE1 -:151443008FCAE638833F17AB0ACDB8D613DFFBFFD37DFC7B9AE7 -:1514580058EEDB1B80CFF0335F65F2D7CDCB92DFC4EF4EC4B7BF -:15146D003313ECBB277E5F3EC1BF8D080E50FEBD0C1538830C25 -:15148200A7D7F57E03DF9F3F2BF84CCEE17347011FFE7DCD |