dect
/
linux-2.6
Archived
13
0
Fork 0

whiteheat: use request_firmware()

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
This commit is contained in:
David Woodhouse 2008-05-31 01:35:29 +03:00 committed by David Woodhouse
parent 5f24e2d6b4
commit ec6752f5af
7 changed files with 1887 additions and 1696 deletions

View File

@ -81,7 +81,8 @@
#include <linux/serial_reg.h>
#include <linux/serial.h>
#include <linux/usb/serial.h>
#include "whiteheat_fw.h" /* firmware for the ConnectTech WhiteHEAT device */
#include <linux/firmware.h>
#include <linux/ihex.h>
#include "whiteheat.h" /* WhiteHEAT specific commands */
static int debug;
@ -279,37 +280,52 @@ static int firm_report_tx_done(struct usb_serial_port *port);
*/
static int whiteheat_firmware_download (struct usb_serial *serial, const struct usb_device_id *id)
{
int response;
const struct whiteheat_hex_record *record;
int response, ret = -ENOENT;
const struct firmware *loader_fw = NULL, *firmware_fw = NULL;
const struct ihex_binrec *record;
dbg("%s", __func__);
if (request_ihex_firmware(&firmware_fw, "whiteheat.fw",
&serial->dev->dev)) {
err("%s - request \"whiteheat.fw\" failed", __func__);
goto out;
}
if (request_ihex_firmware(&loader_fw, "whiteheat_loader.fw",
&serial->dev->dev)) {
err("%s - request \"whiteheat_loader.fw\" failed", __func__);
goto out;
}
ret = 0;
response = ezusb_set_reset (serial, 1);
record = &whiteheat_loader[0];
while (record->address != 0xffff) {
response = ezusb_writememory (serial, record->address,
(unsigned char *)record->data, record->data_size, 0xa0);
record = (const struct ihex_binrec *)loader_fw->data;
while (record) {
response = ezusb_writememory (serial, be32_to_cpu(record->addr),
(unsigned char *)record->data,
be16_to_cpu(record->len), 0xa0);
if (response < 0) {
err("%s - ezusb_writememory failed for loader (%d %04X %p %d)",
__func__, response, record->address, record->data, record->data_size);
__func__, response, be32_to_cpu(record->addr),
record->data, be16_to_cpu(record->len));
break;
}
++record;
record = ihex_next_binrec(record);
}
response = ezusb_set_reset (serial, 0);
record = &whiteheat_firmware[0];
while (record->address < 0x1b40) {
++record;
}
while (record->address != 0xffff) {
response = ezusb_writememory (serial, record->address,
(unsigned char *)record->data, record->data_size, 0xa3);
record = (const struct ihex_binrec *)firmware_fw->data;
while (record && be32_to_cpu(record->addr) < 0x1b40)
record = ihex_next_binrec(record);
while (record) {
response = ezusb_writememory (serial, be32_to_cpu(record->addr),
(unsigned char *)record->data,
be16_to_cpu(record->len), 0xa3);
if (response < 0) {
err("%s - ezusb_writememory failed for first firmware step (%d %04X %p %d)",
__func__, response, record->address, record->data, record->data_size);
__func__, response, be32_to_cpu(record->addr),
record->data, be16_to_cpu(record->len));
break;
}
++record;
@ -317,21 +333,25 @@ static int whiteheat_firmware_download (struct usb_serial *serial, const struct
response = ezusb_set_reset (serial, 1);
record = &whiteheat_firmware[0];
while (record->address < 0x1b40) {
response = ezusb_writememory (serial, record->address,
(unsigned char *)record->data, record->data_size, 0xa0);
record = (const struct ihex_binrec *)firmware_fw->data;
while (record && be32_to_cpu(record->addr) < 0x1b40) {
response = ezusb_writememory (serial, be32_to_cpu(record->addr),
(unsigned char *)record->data,
be16_to_cpu(record->len), 0xa0);
if (response < 0) {
err("%s - ezusb_writememory failed for second firmware step (%d %04X %p %d)",
__func__, response, record->address, record->data, record->data_size);
__func__, response, be32_to_cpu(record->addr),
record->data, be16_to_cpu(record->len));
break;
}
++record;
}
ret = 0;
response = ezusb_set_reset (serial, 0);
return 0;
out:
release_firmware(loader_fw);
release_firmware(firmware_fw);
return ret;
}
@ -1503,6 +1523,9 @@ MODULE_AUTHOR( DRIVER_AUTHOR );
MODULE_DESCRIPTION( DRIVER_DESC );
MODULE_LICENSE("GPL");
MODULE_FIRMWARE("whiteheat.fw");
MODULE_FIRMWARE("whiteheat_loader.fw");
module_param(urb_pool_size, int, 0);
MODULE_PARM_DESC(urb_pool_size, "Number of urbs to use for buffering");

File diff suppressed because it is too large Load Diff

View File

@ -54,6 +54,8 @@ fw-shipped- := keyspan/mpr.fw keyspan/usa18x.fw keyspan/usa19.fw \
keyspan/usa28x.fw keyspan/usa49w.fw keyspan/usa49wlc.fw
endif
fw-shipped-$(CONFIG_USB_SERIAL_TI) += ti_3410.fw ti_5052.fw
fw-shipped-$(CONFIG_USB_SERIAL_WHITEHEAT) += whiteheat_loader.fw whiteheat.fw \
# whiteheat_loader_debug.fw
fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_PDA) += keyspan_pda/keyspan_pda.fw
fw-shipped-$(CONFIG_USB_SERIAL_XIRCOM) += keyspan_pda/xircom_pgs.fw

View File

@ -205,3 +205,24 @@ Licence: Allegedly GPLv2+, but no source visible. Marked:
Found in hex form in kernel source.
--------------------------------------------------------------------------
Driver: whiteheat -- USB ConnectTech WhiteHEAT serial device
File: whiteheat.fw
Version: 4.06
File: whiteheat_loader.fw
File: whiteheat_loader_debug.fw
Licence: Allegedly GPLv2, but no source visible. Marked:
Copyright (C) 2000-2002 ConnectTech Inc
Debug loader claims the following behaviour:
Port 1 LED flashes when the vend_ax program is running
Port 2 LED flashes when any SETUP command arrives
Port 3 LED flashes when any valid VENDOR request occurs
Port 4 LED flashes when the EXTERNAL RAM DOWNLOAD request occurs
Converted from Intel HEX files, used in our binary representation of ihex.
--------------------------------------------------------------------------

1097
firmware/whiteheat.HEX Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,314 @@
:0300000002098D65
:030033000208FBC5
:03004300020B00AD
:03004B000205AA01
:10010000907FA5E05410FFC4540F4450F50F13E442
:1001100033F511907FE9E0245EB407004003020349
:1001200078900128F82828730201BC0201BC020162
:100130009102013D02015302016F02019A907F007A
:10014000E511F0907FB57401F0907FB4E04402F0C7
:10015000020378907F92E0FFC4540F907F00F090EC
:100160007FB57401F0907FB4E04402F0020378128E
:100170000A895007E4907F00F08006907F00740F9A
:10018000F0907FB57401F0907FB4E04402F0020378
:1001900078907FEAE0F50F020378907F007407F013
:1001A000907FB57401F0907FB4E04402F07FE87E68
:1001B00003120D94D206120CCC020378907FEAE071
:1001C000752800F529A3E0FEE4EE4228907FEEE0DA
:1001D000752A00F52BA3E0FEE4EE422A907FE8E0CA
:1001E00064C060030202C9E52B452A70030203784C
:1001F000C3E52B9440E52A94005008852A2C852BD2
:100200002D8006752C00752D40907FE9E064A37069
:1002100034F530F531C3E531952DE530952C505C42
:10022000E5292531F582E5303528F583E0FF7400B6
:100230002531F582E4347FF583EFF00531E5317047
:1002400002053080D0E4F530F531C3E531952DE578
:1002500030952C501874002531F582E4347FF583F5
:1002600074CDF00531E5317002053080DDAF29AE87
:1002700028AD2D7A7F79007B00120BF4907FB5E5D5
:100280002DF0E52D2529F529E52C3528F528C3E5A0
:100290002B952DF52BE52A952CF52A907F92E0FFE2
:1002A000C4540F752E00F52FD39400E52E94005002
:1002B0000C907FB4E020E1030201E780F4907FB46A
:1002C000E020E2030201E780F4907FE8E064406010
:1002D00003020378E52B452A7003020378E4907F3C
:1002E000C5F0907F92E0FFC4540F752E00F52FD318
:1002F0009400E52E94005009907FC4E030E109801D
:10030000F7907FB4E020E3F9907FC5E0752C00F50D
:100310002D907FE9E064A37034F530F531C3E53109
:10032000952DE530952C503474C02531F582E43498
:010330007E4E
:10033100F583E0FFE5292531F582E5303528F583A0
:10034100EFF00531E5317002053080D0AF29AE28DC
:10035100AD2D7A7E79C07BC0120C3FE52D2529F5A4
:1003610029E52C3528F528C3E52B952DF52BE52A14
:09037100952CF52A0202D4C322E6
:10037A00907FE9E070030204521470030204CE2451
:10038A00FE700302054224FB700302044C1470033E
:10039A0002044614700302043A147003020440244F
:1003AA00056003020596120E4440030205A2907FDF
:1003BA00EBE024FE60161460402402706974119008
:1003CA007FD4F07400907FD5F00205A2907FEAE016
:1003DA00FF120B588B258A268927EA496011AE023B
:1003EA00EE907FD4F0AF01EF907FD5F00205A29096
:1003FA007FB4E04401F00205A2907FEAE0FF120810
:10040A00BA8B258A268927EA496011AE02EE907FC7
:10041A00D4F0AF01EF907FD5F00205A2907FB4E04F
:10042A004401F00205A2907FB4E04401F00205A263
:10043A00120E1F0205A2120E2D0205A2120AF702BF
:10044A0005A2120E110205A2120E4640030205A2CF
:10045A00907FE8E0247F60241460312402705BA25C
:10046A0000E433FF25E0FFA202E4334F907F00F05F
:10047A00E4A3F0907FB57402F00205A2E4907F0035
:10048A00F0A3F0907FB57402F00205A2907FECE031
:10049A00F45480FFC4540FFFE054072F25E024B41E
:1004AA00F582E4347FF583E054FD907F00F0E4A305
:1004BA00F0907FB57402F00205A2907FB4E0440187
:1004CA00F00205A2120E4840030205A2907FE8E05E
:1004DA0024FE601D240260030205A2907FEAE0B4B4
:1004EA000105C2000205A2907FB4E04401F00205B2
:1004FA00A2907FEAE07038907FECE0F45480FFC469
:10050A00540FFFE054072F25E024B4F582E4347F2A
:10051A00F583E4F0907FECE05480FF131313541F2B
:10052A00FFE054072F907FD7F0E04420F0806990D5
:10053A007FB4E04401F08060120E4A505B907FE87D
:10054A00E024FE60182402704F907FEAE0B40104B0
:10055A00D2008044907FB4E04401F0803B907FEA6F
:10056A00E07020907FECE0F45480FFC4540FFFE069
:10057A0054072F25E024B4F582E4347FF58374010F
:10058A00F08015907FB4E04401F0800C1201005015
:10059A0007907FB4E04401F0907FB4E04402F02277
:1005AA00C0E0C083C082C085C084C086758600C092
:1005BA00D0C000C001C002C003C006C007907FA51A
:1005CA00E030E206750D06020676907FA5E020E18E
:1005DA000CE50D64026006750D07020676AF0DEF95
:1005EA0024FE604814602C24FE6077240460030211
:1005FA000676AB09AA0AA90BAF0C050C8F82758384
:10060A0000120822907FA6F0E50C6508705E750D51
:10061A00058059907FA6E0AB09AA0AA90BAE0C8EF9
:10062A008275830012084F750D028040E50824FE8A
:10063A00B50C07907FA5E04420F0E50814B50C0A34
:10064A00907FA5E04440F0E4F50D907FA6E0AB0969
:10065A00AA0AA90BAE0C8E8275830012084F050CEC
:10066A00800A907FA5E04440F0E4F50D5391DFD075
:10067A0007D006D003D002D001D000D0D0D086D087
:0A068A0084D085D082D083D0E03206
:100694008C338D34907F95E044C0F0E4F535F53625
:1006A400C3E5369534E53595335069EF2536F58243
:1006B400E5353EF58374FFF0F46002C322EF25367E
:1006C400F582E5353EF583E4F06002C322EF25367A
:1006D400F582E5353EF58374AAF064AA6002C3226C
:1006E400EF2536F582E5353EF5837455F0645560A3
:1006F40002C322AD36E5362FF582E5353EF583EDAE
:10070400F0FCAC05ED6C6002C3220536E5367002E0
:100714000535808CE4F535F536C3E5369534E53595
:1007240095335027EF2536F582E5353EF583E065B0
:10073400366002C322EF2536F582E5353EF583E4C3
:0D074400F00536E5367002053580CED32273
:10075100C204D205C203C200C202C201120E3DD2BE
:10076100E843D820907FAB74FFF0907FA9F0907F91
:10077100AAF05391EF907F95E044C0F0907F93747D
:1007810030F0120A19907FAFE04401F0907FAEE0A3
:10079100440DF0D2AF120E352001427524007523AD
:1007A100007522007521007F487E927D007C00ABA0
:1007B10024AA23A922A821C31208A950DB2001D809
:1007C1007A0079007800E5242401F524EA3523F53F
:1007D10023E93522F522E83521F52180CA300105CA
:1007E10012037AC20130041A120E4050131209008A
:1007F100300007907FD6E030E7F3120D4A120E4227
:08080100C2031208FF80D62299
:10080900BB010689828A83E0225002E722BBFE02ED
:09081900E32289828A83E4932220
:10082200BB010CE58229F582E5833AF583E022508B
:1008320006E92582F8E622BBFE06E92582F8E222D5
:0D084200E58229F582E5833AF583E49322EF
:10084F00F8BB010DE58229F582E5833AF583E8F0DF
:10085F00225006E92582C8F622BBFE05E92582C88B
:02086F00F22273
:10087100BB0110E58229F582E5833AF583E0F5F0C5
:10088100A3E0225009E92582F886F008E622BBFEA2
:100891000AE92582F8E2F5F008E222E5832AF583E8
:0808A100E993F5F0A3E99322AD
:1008A900EB9FF5F0EA9E42F0E99D42F0E89C45F0A5
:0108B900221C
:0208BA008F2885
:1008BC00E4F529752AFF752B11752C32AB2AAA2B5E
:1008CC00A92C900001120822B4031DAF290529EFB1
:1008DC00B52801221208097E0029FFEE3AA90775F6
:0E08EC002AFFF52B892C80D47B007A0079003E
:0108FA0022DB
:0408FB0053D8EF32AD
:0108FF0022D6
:09090000907FD6E04480F0807481
:10097D00438701000000000000000000000000227D
:0C098D00787FE4F6D8FD7581390209D4AA
:10099900020751E493A3F8E493A34003F68001F21C
:1009A90008DFF48029E493A3F85407240CC8C3335F
:1009B900C4540F4420C8834004F456800146F6DF2E
:1009C900E4800B0102040810204080900DECE47EC5
:1009D900019360BCA3FF543F30E509541FFEE49323
:1009E900A360010ECF54C025E060A840B8E493A3EA
:1009F900FAE493A3F8E493A3C8C582C8CAC583CA15
:100A0900F0A3C8C582C8CAC583CADFE9DEE780BECC
:100A1900E4907F9CF07F0AFE120D94907F96748972
:100A2900F0907F9C74CFF07FF47E01120D94907F3B
:100A390096E054FEF07F0A7E00120D947F057E0039
:100A4900120D94907F96E04402F0E0547FF07F0508
:100A59007E00120D94907F96E04440F07F057E0061
:100A6900120D94907F96E054BFF07F327E00120DF4
:100A790094907F96E04440F07F327E00120D9422DC
:100A8900753201E532601B7F01120DD77F007E0EA2
:100A99007D007C01120694E433F53270057F0F1254
:100AA9000DD7E532601B7F02120DD77F007E807D56
:100AB900007C80120694E433F53270057F0F120D25
:100AC900D7E532601B7F03120DD77F007E207D4062
:100AD9007C5B120694E433F53270057F0F120DD753
:0E0AE900E5326005E4FF120DD7E53224FF224E
:080AF700907FEAE0F510D32224
:010AFF0032C4
:100B0000020D6400020DAB00020D2F00020D7C00EF
:100B1000020DC100020AFF00020E4C00020E4D0041
:100B2000020E4E00020E4F00020E5000020E510047
:100B3000020E5200020E5300020E5400020E550027
:100B4000020E5600020E5700020E5800020E590007
:080B5000020E5A00020E5B00C8
:100B5800E4FE752AFF752B11752C12AB2AAA2BA956
:100B68002C9000011208226402702DAD060EEDB51E
:100B780007012290000212087185F028F5296228E1
:100B8800E5286229E529622829FDE5283AA905759D
:0E0B98002AFFF52B892C80C37B007A007900A0
:010BA600222C
:100BA700AB07AA06AC05E4FDE5116011EAFFAE0547
:100BB7000DEE2410F582E4340FF583EFF0EBAE056C
:100BC7000D74102EF582E4340FF583EBF0AF050DAD
:100BD70074102FF582E4340FF583ECF0AF0F7A0F22
:0D0BE7007B10120D107F0A7E00120D94226B
:100BF4008E328F338D348A358B36E4FDF537E5112B
:100C04006012E532FFAE050DEE2413F582E4340FD5
:100C1400F583EFF0E533AE050D74132EF582E4345D
:100C24000FF583E533F0AF0F7A0F7B13120D10AF7E
:0B0C34000FAD34AB36AA35120CF122D4
:100C3F008E328F338D348A358B36E4F537E537C3F3
:100C4F00953450200533E533AE327002053214FF70
:100C5F00E5362537F582E43535F583E0FD120BA730
:050C6F00053780D922C9
:100C7400A907E50D7025907FA5E04480F0E925E003
:100C84004401907FA6F08D08AF03A9077509018A76
:0D0C94000A890BE4F50C750D03D322C32271
:100CA100A907E50D7023907FA5E04480F0E925E0D8
:100CB100907FA6F08D08AF03A9077509018A0A89FB
:0B0CC1000BE4F50C750D01D322C322DB
:100CCC00907FD6E054FBF0E04408F0300604E0449A
:100CDC0002F07FD07E07120D94907FD6E054F7F08F
:050CEC00E04404F022C9
:100CF100120C74E50D24FA6010146007240770F3D8
:0F0D01007F0822E4F50D7F0722E4F50D7F06221F
:100D1000120CA1E50D24FA6010146007240770F38B
:0F0D20007F0822E4F50D7F0722E4F50D7F062200
:100D2F00C0E0C083C082907FC4E4F05391EF907F06
:0B0D3F00AB7404F0D082D083D0E0320F
:100D4A00907FD6E030E712E04401F07F147E001273
:0A0D5A000D94907FD6E054FEF022C5
:100D6400C0E0C083C082D2015391EF907FAB740185
:080D7400F0D082D083D0E03200
:100D7C00C0E0C083C082D2035391EF907FAB740864
:080D8C00F0D082D083D0E032E8
:100D94008E388F39E5391539AE38700215384E6002
:070DA40005120E0080EE2293
:100DAB00C0E0C083C0825391EF907FAB7402F0D050
:060DBB0082D083D0E0327B
:100DC100C0E0C083C0825391EF907FAB7410F0D02C
:060DD10082D083D0E03265
:100DD700AE077F217D0174002EF582E4340FAB82CC
:050DE700FA120D1022BC
:100DEC00500F00C0F9A4B0999282F880988883C6FD
:030DFC00A1868E3F
:010DFF0000F3
:100E00007400F58690FDA57C05A3E582458370F905
:010E100022BF
:0E0E1100907F00E510F0907FB57401F0D322C1
:0E0E1F00907F00E50EF0907FB57401F0D322B5
:080E2D00907FEAE0F50ED322EC
:080E3500E4F50DD2E9D2AF2271
:030E3D00D20022BE
:020E4000D322BB
:020E4200D322B9
:020E4400D322B7
:020E4600D322B5
:020E4800D322B3
:020E4A00D322B1
:010E4C003273
:010E4D003272
:010E4E003271
:010E4F003270
:010E5000326F
:010E5100326E
:010E5200326D
:010E5300326C
:010E5400326B
:010E5500326A
:010E56003269
:010E57003268
:010E58003267
:010E59003266
:010E5A003265
:010E5B003264
:101100001201000100000040470510270100010204
:10111000000109022000010103A0000904000002EF
:10112000FF0000040705820240000007050202409C
:10113000000004030904260341006E0063006800F8
:101140006F007200200043006800690070007300A7
:101150002C00200049006E0063002E00280346008A
:10116000690072006D007700610072006500200068
:101170004600720061006D00650057006F0072004C
:101180006B0073002A0343006F006E006600690065
:101190006700750072006100740069006F006E00E6
:1011A000200053007400720069006E006700220383
:1011B00049006E0074006500720066006100630003
:1011C0006500200053007400720069006E00670023
:0211D00000001D
:00000001FF
/*****************************************************************************
*
* whiteheat.h -- ConnectTech WhiteHEAT Firmware.
*
* Copyright (C) 2000-2002 ConnectTech Inc (http://www.connecttech.com/)
*
* 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., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* (10/09/2002) Stuart MacDonald
* Firmware 4.06
*
* (04/09/2000) gkh
* Updated the firmware with the latest provided by ConnectTech.
*
* (01/16/2000) gkh
* Fixed my intel hex processing tool, so now the firmware actually
* matches the original file (this was causing a few problems...)
*
* (01/15/2000) gkh
* Added debug loader firmware if DEBUG is #defined:
* Port 1 LED flashes when the vend_ax program is running
* Port 2 LED flashes when any SETUP command arrives
* Port 3 LED flashes when any valid VENDOR request occurs
* Port 4 LED flashes when the EXTERNAL RAM DOWNLOAD request occurs
*
* version 1.0 (01/09/2000) gkh
* Original firmware from ConnectTech massaged a little to be program
* readable.
*
*****************************************************************************/
#define whiteheat_DATE "20000106"

View File

@ -0,0 +1,403 @@
:10000000000000000302098D0000003303020E709F
:100010000000004303020B000000004B030205B385
:100020000000010010907FA5E05410FFC4540F445D
:1000300050F50F13E4000110000001101033F5110A
:10004000907FE9E0245EB407004003020300012032
:1000500000000120107C900128F82828730201BCC0
:100060000201BC02010001300000013010910201C8
:100070003D02015302016F02019A907F000001408E
:100080000000014010E511F0907FB57401F0907F01
:10009000B4E04402F0000150000001501002037C63
:1000A000907F92E0FFC4540F907F00F090000160B9
:1000B00000000160107FB57401F0907FB4E044024D
:1000C000F002037C1200017000000170100A8950D8
:1000D00007E4907F00F08006907F00740F0001809D
:1000E0000000018010F0907FB57401F0907FB4E0C3
:1000F0004402F0020300019000000190107C907F08
:10010000EAE0F50F02037C907F007407F00001A085
:10011000000001A010907FB57401F0907FB4E0441E
:1001200002F07FE87E0001B0000001B01003120D64
:10013000D5D206120D0D02037C907FEAE00001C0CB
:10014000000001C010752900F52AA3E0FEE4EE428C
:1001500029907FEEE00001D0000001D010752B0047
:10016000F52CA3E0FEE4EE422B907FE8E00001E0F6
:10017000000001E01064C060030202C9E52C452BB9
:10018000700302037C0001F0000001F010C3E52CB5
:100190009440E52B94005008852B2D852C000200FF
:1001A00000000200102E8006752D00752E40907FF5
:1001B000E9E064A370000210000002101034F53171
:1001C000F532C3E532952EE531952D505C000220C5
:1001D0000000022010E52A2532F582E5313529F5A7
:1001E00083E0FF740000023000000230102532F579
:1001F00082E4347FF583EFF00532E532700002408F
:10020000000002401002053180D0E4F531F532C320
:10021000E532952EE5000250000002501031952D78
:10022000501874002532F582E4347FF583000260B3
:10023000000002601074CDF00532E5327002053125
:1002400080DDAF2AAE000270000002701029AD2ED2
:100250007A7F79007B00120BF4907FB5E500028075
:1002600000000280102EF0E52E252AF52AE52D3516
:1002700029F529C3E500029000000290102C952E6C
:10028000F52CE52B952DF52B907F92E0FF0002A039
:10029000000002A010C4540F752F00F530D3940055
:1002A000E52F9400500002B0000002B0100C907FC7
:1002B000B4E020E1030201E780F4907FB40002C0C3
:1002C000000002C010E020E2030201E780F4907F0A
:1002D000E8E06440600002D0000002D01003020396
:1002E0007CE52C452B700302037CE4907F0002E048
:1002F000000002E010C5F0907F92E0FFC4540F753B
:100300002F00F530D30002F0000002F0109400E559
:100310002F94005009907FC4E030E1098000030071
:100320000000030010F7907FB4E020E3F9907FC550
:10033000E0752D00F500031000000310102E907FD3
:10034000E9E064A3703890206BF0F531F5000320EC
:10035000000003201032C3E532952EE531952D5073
:100360003474C025320003300000033010F582E4FD
:10037000347EF583E0FFE52A2532F582E50003406F
:100380000000034010313529F583EFF00532E532E6
:1003900070020531800003500000035010D0AF2AD6
:1003A000AE29AD2E7A7E79C07BC0120C800003602E
:1003B0000000036010E52E252AF52AE52D3529F5E4
:1003C00029C3E52C95000370000003700D2EF52C59
:1003D000E52B952DF52B0202D4C300000000037D10
:1003E000012200000000037E10907FE9E07003020C
:1003F00004561470030204D22400038E0000038EFE
:1004000010FE700302054624FB70030204501470B2
:100410000300039E0000039E1002044A14700302AE
:10042000043E147003020444240003AE000003AE33
:100430001005600302059A120E7B40030205AB9083
:100440007F0003BE000003BE10EBE024FE60161424
:100450006040240270697411900003CE000003CE46
:10046000107FD4F07400907FD5F00205AB907FEA46
:10047000E00003DE000003DE10FF120B588B268A1B
:10048000278928EA496011AE020003EE000003EE5E
:1004900010EE907FD4F0AF01EF907FD5F00205AB66
:1004A000900003FE000003FE107FB4E04401F00260
:1004B00005AB907FEAE0FF120C00040E0000040E72
:1004C000103F8B268A278928EA496011AE02EE90F8
:1004D0007F00041E0000041E10D4F0AF01EF907FD7
:1004E000D5F00205AB907FB4E000042E0000042E8E
:1004F000104401F00205AB907FB4E04401F0020526
:10050000AB00043E0000043E10120E520205AB1276
:100510000E600205AB120AF70200044E0000044E02
:100520001005AB1208F10205AB120E7D4003020567
:10053000AB00045E0000045E10907FE8E0247F6062
:10054000241460312402705BA200046E0000046E6B
:100550001000E433FF25E0FFA202E4334F907F0058
:10056000F000047E0000047E10E4A3F0907FB574D8
:1005700002F00205ABE4907F0000048E0000048EC0
:1005800010F0A3F0907FB57402F00205AB907FEC01
:10059000E000049E0000049E10F45480FFC4540F39
:1005A000FFE054072F25E024B40004AE000004AEA1
:1005B00010F582E4347FF583E054FD907F00F0E491
:1005C000A30004BE000004BE10F0907FB57402F0DA
:1005D0000205AB907FB4E044010004CE000004CEDD
:1005E00010F00205AB120E7F40030205AB907FE8CE
:1005F000E00004DE000004DE1024FE601D24026022
:10060000030205AB907FEAE0B40004EE000004EEC4
:10061000100105C2000205AB907FB4E04401F00276
:10062000050004FE000004FE10AB907FEAE0703885
:10063000907FECE0F45480FFC400050E0000050E2E
:1006400010540FFFE054072F25E024B4F582E43462
:100650007F00051E0000051E10F583E4F0907FEC7E
:10066000E05480FF131313541F00052E0000052EC5
:1006700010FFE054072F907FD7F0E04420F0806E09
:100680009000053E0000053E107FB4E04401F0807C
:1006900065120E815060907FE800054E0000054E07
:1006A00010E024FE601824027054907FEAE0B40148
:1006B0000400055E0000055E10D2008049907FB402
:1006C000E04401F08040907FEA00056E0000056E76
:1006D00010E07020907FECE0F45480FFC4540FFFD2
:1006E000E000057E0000057E1054072F25E024B4AD
:1006F000F582E4347FF583740100058E0000058ED9
:1007000010F0801A907FB4E04401F08011E4902052
:100710006A00059E0000059E10F01201005007902F
:100720007FB4E04401F0907FB40005AE000005AE58
:1007300004E04402F0000000000005B201220000C5
:10074000000005B310C0E0C083C082C085C084C073
:1007500086758600C00005C3000005C310D0C00028
:10076000C001C002C003C006C007907FA50005D32A
:10077000000005D310E030E206750D0602067F90FA
:100780007FA5E020E10005E3000005E3100CE50D86
:1007900064026006750D0702067FAF0DEF0005F3DA
:1007A000000005F31024FE604814602C24FE6077DE
:1007B00024046003020006030000060310067FAB5A
:1007C00009AA0AA90BAF0C050C8F827583000613CA
:1007D000000006131000120785907FA6F0E50C6557
:1007E00008705E750D000623000006231005805971
:1007F000907FA6E0AB09AA0AA90BAE0C8E000633C7
:100800000000063310827583001207B2750D028056
:1008100040E50824FE0006430000064310B50C071F
:10082000907FA5E04420F0E50814B50C0A000653BB
:100830000000065310907FA5E04440F0E4F50D90D1
:100840007FA6E0AB090006630000066310AA0AA9B0
:100850000BAE0C8E827583001207B2050C00067376
:100860000000067310800A907FA5E04440F0E4F594
:100870000D5391DFD0000683000006831007D006D9
:10088000D003D002D001D000D0D0D086D0000693C3
:10089000000006930A84D085D082D083D0E0320055
:1008A0000000069D10C204D205E4F525C203C20073
:1008B000C202C201120006AD000006AD100E74D2D5
:1008C000E843D820907FAB74FFF0907FA90006BD6D
:1008D000000006BD10F0907FAAF05391EF907F9535
:1008E000E044C0F0900006CD000006CD107F937468
:1008F00030F0120A1975244875239275220006DD1E
:10090000000006DD1000752100E4FFFE7E0590204A
:10091000687401F0A30006ED000006ED10DEFC7E19
:10092000007F05907FAFE04401F0907FAE0006FDB0
:10093000000006FD10E0440DF0D2AF120E68300149
:100940000AE490206900070D0000070D10F0120363
:100950007EC20130041A120E775013120900071DCF
:100960000000071D1000300007907FD6E030E7F34D
:10097000120D8B120E00072D0000072D1079C203F7
:100980007FFF7EFF7DFF7CFF782112081D00073D61
:100990000000073D107B007A0079007800C3120840
:1009A0000C701B752400074D0000074D104875237F
:1009B00092F522F5216325FF902068E52500075D6B
:1009C0000000075D0EF0A37401F0A3F0A3F012087D
:1009D000FF809B000000076B012200000000076CF5
:1009E00010BB010689828A83E0225002E722BBFE07
:1009F0000200077C0000077C09E32289828A83E4E5
:100A0000932200000000078510BB010CE58229F548
:100A100082E5833AF583E0225000079500000795B0
:100A20001006E92582F8E622BBFE06E92582F8E2F7
:100A3000220007A5000007A50DE58229F582E583C0
:100A40003AF583E493220000000007B210F8BB01DE
:100A50000DE58229F582E5833AF583E8F00007C2C7
:100A6000000007C210225006E92582C8F622BBFE0C
:100A700005E92582C80007D2000007D202F2220051
:100A8000000007D410BB0110E58229F582E5833A06
:100A9000F583E0F5F00007E4000007E410A3E0228E
:100AA0005009E92582F886F008E622BBFE0007F42B
:100AB000000007F4100AE92582F8E2F5F008E222C6
:100AC000E5832AF5830008040000080408E993F58B
:100AD000F0A3E993220000000000080C10EB9FF542
:100AE000F0EA9E42F0E99D42F0E89C45F000081CC7
:100AF0000000081C012200000000081D1008080862
:100B0000E62FFFF618E63EFEF618E63DFD00082D3E
:100B10000000082D07F618E63CFCF6220000083419
:100B2000048C348D350000000000083810907F954B
:100B3000E044C0F0E4F536F537C3E53795000848E2
:100B4000000008481035E53695345069EF2537F533
:100B500082E5363EF500085800000858108374FFFF
:100B6000F0F46002C322EF2537F582E5360008680D
:100B700000000868103EF583E4F06002C322EF2510
:100B800037F582E53600087800000878103EF583D6
:100B900074AAF064AA6002C322EF2537F500088822
:100BA000000008881082E5363EF5837455F06455E0
:100BB0006002C322AD000898000008981037E5379E
:100BC0002FF582E5363EF583EDF0FCAC050008A874
:100BD000000008A810ED6C6002C3220537E53770ED
:100BE000020536808C0008B8000008B810E4F5361D
:100BF000F537C3E5379535E536953450270008C8F5
:100C0000000008C810EF2537F582E5363EF583E091
:100C100065376002C30008D8000008D81022EF250D
:100C200037F582E5363EF583E4F00537E50008E860
:100C3000000008E808377002053680CED3000000B7
:100C4000000008F001220000000008F10E907F0073
:100C5000E510F0907FB57401F0D32200000008FF8A
:100C6000012200000000090009907FD6E04480F0D6
:100C7000807400000000097D10438701000000001F
:100C800000000000000000002200098D0000098D16
:100C90000C787FE4F6D8FD75813A0209D400000093
:100CA000000009991002069DE493A3F8E493A34081
:100CB00003F68001F20009A9000009A91008DFF479
:100CC0008029E493A3F85407240CC8C3330009B95E
:100CD000000009B910C4540F4420C8834004F456DE
:100CE000800146F6DF0009C9000009C910E4800B45
:100CF0000102040810204080900E2DE47E0009D9E6
:100D0000000009D910019360BCA3FF543F30E509EE
:100D1000541FFEE4930009E9000009E910A36001F3
:100D20000ECF54C025E060A840B8E493A30009F9B1
:100D3000000009F910FAE493A3F8E493A3C8C5826C
:100D4000C8CAC583CA000A0900000A0910F0A3C86E
:100D5000C582C8CAC583CADFE9DEE780BE000A19BA
:100D600000000A1910E4907F9CF07F0AFE120DD556
:100D7000907F967489000A2900000A2910F0907F5C
:100D80009C74CFF07FF47E01120DD5907F000A395C
:100D900000000A391096E054FEF07F0A7E00120D22
:100DA000D57F057E00000A4900000A4910120DD5C2
:100DB000907F96E04402F0E0547FF07F05000A59EE
:100DC00000000A59107E00120DD5907F96E0444035
:100DD000F07F057E00000A6900000A6910120DD537
:100DE000907F96E054BFF07F327E00120D000A79AA
:100DF00000000A7910D5907F96E04440F07F327E63
:100E000000120DD522000A8900000A8910753301ED
:100E1000E533601B7F01120E187F007E0E000A99D9
:100E200000000A99107D007C01120834E433F53388
:100E300070057F0F12000AA900000AA9100E18E51C
:100E400033601B7F02120E187F007E807D000AB97E
:100E500000000AB910007C80120834E433F53370C6
:100E6000057F0F120E000AC900000AC91018E533E9
:100E7000601B7F03120E187F007E207D40000AD980
:100E800000000AD9107C5B120834E433F533700596
:100E90007F0F120E18000AE900000AE90DE5336021
:100EA00005E4FF120E18E53324FF000000000AF6E7
:100EB0000122000000000AF708907FEAE0F510D355
:100EC0002200000000000AFF0132000000000B00B9
:100ED00010020DA500020DEC00020D7000020DBD08
:100EE00000000B1000000B1010020E0200020AFF9F
:100EF00000020E8300020E8400000B2000000B2075
:100F000010020E8500020E8600020E8700020E8877
:100F100000000B3000000B3010020E8900020E8A18
:100F200000020E8B00020E8C00000B4000000B40F4
:100F300010020E8D00020E8E00020E8F00020E9027
:100F400000000B5000000B5008020E9100020E92A0
:100F50000000000000000B5810E4FE752BFF752CFC
:100F600011752D12AB2BAA2CA9000B6800000B6881
:100F7000102D9000011207856402702DAD060EED54
:100F8000B5000B7800000B781007012290000212C8
:100F900007D485F029F52A6229000B8800000B8808
:100FA00010E529622AE52A622929FDE5293AA905E1
:100FB00075000B9800000B980E2BFFF52C892D80E7
:100FC000C37B007A0079000000000BA6012200001C
:100FD00000000BA706AB07AA06AC050000000BAD8E
:100FE00010E4FDE5116011EAFFAE050DEE2410F5E9
:100FF00082000BBD00000BBD10E4340FF583EFF051
:10100000EBAE050D74102EF582000BCD00000BCD5C
:1010100010E4340FF583EBF0AF050D74102FF5825B
:10102000E4000BDD00000BDD10340FF583ECF0AFB6
:101030000F7A0F7B10120D517F000BED00000BEDAE
:10104000060A7E00120DD50000000BF301220000FD
:1010500000000BF40A8E338F348D358A368B3700BF
:1010600000000BFE10E4FDF538E5116012E533FFDA
:10107000AE050DEE24000C0E00000C0E1013F582D0
:10108000E4340FF583EFF0E534AE050D74000C1E6B
:1010900000000C1E10132EF582E4340FF583E534A6
:1010A000F0AF0F7A0F000C2E00000C2E107B1312E5
:1010B0000D51AF0FAD35AB37AA36120D32000C3ED5
:1010C00000000C3E0122000000000C3F028F2900AE
:1010D00000000C4110E4F52A752BFF752C11752DBD
:1010E00032AB2BAA2C000C5100000C5110A92D90F2
:1010F0000001120785B4031DAF2A052AEF000C6119
:1011000000000C6110B529012212076C7E0029FF36
:10111000EE3AA90775000C7100000C710E2BFFF55B
:101120002C892D80D47B007A0079000000000C7F90
:101130000122000000000C800A8E338F348D358A26
:10114000368B370000000C8A10E4F538E538C3957B
:101150003550200534E534AE33000C9A00000C9A6B
:10116000107002053314FFE5372538F582E4353673
:10117000F5000CAA00000CAA0A83E0FD120BA705DB
:101180003880D90000000CB40122000000000CB52A
:1011900010A907E50D7025907FA5E04480F0E925B2
:1011A000E0000CC500000CC5104401907FA6F08D36
:1011B00008AF03A9077509018A000CD500000CD5FA
:1011C0000D0A890BE4F50C750D03D322C322000030
:1011D00000000CE210A907E50D7023907FA5E04404
:1011E00080F0E925E0000CF200000CF210907FA6E0
:1011F000F08D08AF03A9077509018A0A89000D025D
:1012000000000D020B0BE4F50C750D01D322C32277
:1012100000000D0D10907FD6E054FBF0E04408F084
:10122000300604E044000D1D00000D1D1002F07F8B
:10123000D07E07120DD5907FD6E054F7F0000D2D2B
:1012400000000D2D05E04404F022000000000D32E6
:1012500010120CB5E50D24FA601014600724077015
:10126000F3000D4200000D420F7F0822E4F50D7FD0
:101270000722E4F50D7F062200000D5110120CE24A
:10128000E50D24FA6010146007240770F3000D6167
:1012900000000D610F7F0822E4F50D7F0722E4F5C1
:1012A0000D7F062200000D7010C0E0C083C0829048
:1012B0007FC4E4F05391EF907F000D8000000D801B
:1012C0000BAB7404F0D082D083D0E03200000D8BE1
:1012D00010907FD6E030E712E04401F07F147E00EA
:1012E00012000D9B00000D9B0A0DD5907FD6E05497
:1012F000FEF0220000000DA510C0E0C083C082D225
:10130000015391EF907FAB7401000DB500000DB556
:1013100008F0D082D083D0E03200000000000DBD84
:1013200010C0E0C083C082D2035391EF907FAB74B2
:1013300008000DCD00000DCD08F0D082D083D0E0A4
:101340003200000000000DD5108E398F3AE53A15B5
:101350003AAE39700215394E60000DE500000DE51A
:101360000705120E4180EE2200000DEC10C0E0C017
:1013700083C0825391EF907FAB7402F0D0000DFCDC
:1013800000000DFC0682D083D0E0320000000E0287
:1013900010C0E0C083C0825391EF907FAB7410F017
:1013A000D0000E1200000E120682D083D0E0320070
:1013B00000000E1810AE077F217D0174002EF5820B
:1013C000E4340FAB82000E2800000E2805FA120D3F
:1013D0005122000000000E2D10500F00C0F9A4B0E3
:1013E000999282F880988883C6000E3D00000E3DD9
:1013F00003A1868E00000E400100000000000E4197
:10140000107400F58690FDA57C05A3E582458370E8
:10141000F9000E5100000E510122000000000E5292
:101420000E907F00E50EF0907FB57401F0D322009E
:1014300000000E6008907FEAE0F50ED32200000065
:1014400000000E6808E4F50DD2E9D2AF22000000DA
:1014500000000E700453D8EF3200000000000E743C
:1014600003D2002200000E7702D3220000000E7982
:1014700002D3220000000E7B02D3220000000E7D6A
:1014800002D3220000000E7F02D3220000000E8152
:1014900002D3220000000E830132000000000E84FF
:1014A0000132000000000E850132000000000E86AF
:1014B0000132000000000E870132000000000E889B
:1014C0000132000000000E890132000000000E8A87
:1014D0000132000000000E8B0132000000000E8C73
:1014E0000132000000000E8D0132000000000E8E5F
:1014F0000132000000000E8F0132000000000E904B
:101500000132000000000E910132000000000E9236
:101510000132000000001100101201000100000063
:1015200040470510270100010200111000001110B2
:1015300010000109022000010103A00009040000BD
:10154000020011200000112010FF00000407058296
:101550000240000007050202400011300000113077
:1015600010000004030904260341006E00630068B4
:101570000000114000001140106F00720020004375
:1015800000680069007000730000115000001150E5
:10159000102C00200049006E0063002E0028034636
:1015A000000011600000116010690072006D00778A
:1015B00000610072006500200000117000001170D1
:1015C000104600720061006D00650057006F0072E8
:1015D0000000118000001180106B0073002A03438B
:1015E000006F006E0066006900001190000011900D
:1015F000106700750072006100740069006F006E72
:10160000000011A0000011A010200053007400720F
:101610000069006E00670022030011B0000011B0E5
:101620001049006E0074006500720066006100637E
:10163000000011C0000011C01065002000530074AC
:1016400000720069006E0067000011D0000011D028
:091650000200000000000000008F
:00000001FF
/*****************************************************************************
*
* whiteheat.h -- ConnectTech WhiteHEAT Firmware.
*
* Copyright (C) 2000-2002 ConnectTech Inc (http://www.connecttech.com/)
*
* 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., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* (10/09/2002) Stuart MacDonald
* Firmware 4.06
*
* (04/09/2000) gkh
* Updated the firmware with the latest provided by ConnectTech.
*
* (01/16/2000) gkh
* Fixed my intel hex processing tool, so now the firmware actually
* matches the original file (this was causing a few problems...)
*
* (01/15/2000) gkh
* Added debug loader firmware if DEBUG is #defined:
* Port 1 LED flashes when the vend_ax program is running
* Port 2 LED flashes when any SETUP command arrives
* Port 3 LED flashes when any valid VENDOR request occurs
* Port 4 LED flashes when the EXTERNAL RAM DOWNLOAD request occurs
*
* version 1.0 (01/09/2000) gkh
* Original firmware from ConnectTech massaged a little to be program
* readable.
*
*****************************************************************************/
#define whiteheat_DATE "20000106"