Compare commits

..

2 Commits

Author SHA1 Message Date
Shaun Ruffell
0a58eef031 Importing files for 2.6.0 release.
git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/tags/2.6.0@10400 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2012-01-03 23:17:39 +00:00
Shaun Ruffell
07a8698f77 Creating tag for the release of dahdi-linux-2.6.0
git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/tags/2.6.0@10399 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2012-01-03 23:16:50 +00:00
30 changed files with 8560 additions and 24526 deletions

View File

@@ -1 +1 @@
2.6.1-rc2
2.6.0

6345
ChangeLog

File diff suppressed because it is too large Load Diff

11
README
View File

@@ -212,10 +212,13 @@ under driver/staging/echo . In fact, dahdi_echocan_oslec assumes that
this is where the oslec code lies. If it is elsewhere you'll need to fix
the #include line.
Thus for the moment, the simplest way to build OSLEC with dahdi is to
copy the directory `drivers/staging/echo` from a recent kernel tree (at
least 2.6.28-rc1) to the a subdirectory with the same name in the
dahdi-linux tree.
Thus for the moment, the simplest way to build OSLEC with dahdi is:
1. Copy the directory `drivers/staging/echo` from a recent kernel tree
(at least 2.6.28-rc1) to the a subdirectory with the same name in the
dahdi-linux tree.
2. Edit drivers/dahdi/Kbuild and uncomment the two lines related to OSLEC.
After doing that, you'll see the following when building (running
'make')

View File

@@ -33,13 +33,14 @@ obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_ECHOCAN_MG2) += dahdi_echocan_mg2.o
obj-m += $(DAHDI_MODULES_EXTRA)
# If you want to build OSLEC, include the code in the standard location:
# drivers/staging/echo . The DAHDI OSLEC echo canceller will be built as
# well:
ifneq (,$(wildcard $(src)/../staging/echo/echo.c))
obj-m += dahdi_echocan_oslec.o
obj-m += ../staging/echo/
endif
# Only enable this if you think you know what you're doing. This is not
# supported yet:
#obj-m += dahdi_echocan_oslec.o
#
# A quick and dirty way to build OSLEC, if you happened to place it
# yourself in the dahdi source tree. This is experimental. See README
# regarding OSLEC.
#obj-m += ../staging/echo/
CFLAGS_MODULE += -I$(DAHDI_INCLUDE) -I$(src)

View File

@@ -358,11 +358,6 @@ static DEFINE_SPINLOCK(zone_lock);
/* The first zone on the list is the default zone. */
static LIST_HEAD(tone_zones);
static inline struct device *span_device(struct dahdi_span *span)
{
return &span->parent->dev;
}
/* Protects the span_list and pseudo_chans lists from concurrent access in
* process context. The spin_lock is needed to synchronize with the interrupt
* handler. */
@@ -6654,7 +6649,7 @@ static void
set_spanno_and_basechan(struct dahdi_span *span, u32 spanno, u32 basechan)
{
int i;
dahdi_dev_dbg(ASSIGN, span_device(span),
dahdi_dev_dbg(ASSIGN, span->parent->dev.parent,
"set: spanno=%d, basechan=%d (span->channels=%d)\n",
spanno, basechan, span->channels);
span->spanno = spanno;
@@ -6678,7 +6673,7 @@ static int _assign_spanno_and_basechan(struct dahdi_span *span)
unsigned int spanno = 1;
unsigned int basechan = 1;
dahdi_dev_dbg(ASSIGN, span_device(span),
dahdi_dev_dbg(ASSIGN, span->parent->dev.parent,
"assign: channels=%d\n", span->channels);
list_for_each_entry(pos, &span_list, spans_node) {
@@ -6698,7 +6693,7 @@ static int _assign_spanno_and_basechan(struct dahdi_span *span)
basechan = pos->chans[0]->channo + pos->channels;
}
dahdi_dev_dbg(ASSIGN, span_device(span),
dahdi_dev_dbg(ASSIGN, span->parent->dev.parent,
"good: spanno=%d, basechan=%d (span->channels=%d)\n",
spanno, basechan, span->channels);
set_spanno_and_basechan(span, spanno, basechan);
@@ -6748,20 +6743,20 @@ _check_spanno_and_basechan(struct dahdi_span *span, u32 spanno, u32 basechan)
struct dahdi_span *pos;
unsigned int next_channo;
dahdi_dev_dbg(ASSIGN, span_device(span),
dahdi_dev_dbg(ASSIGN, span->parent->dev.parent,
"check: spanno=%d, basechan=%d (span->channels=%d)\n",
spanno, basechan, span->channels);
list_for_each_entry(pos, &span_list, spans_node) {
next_channo = _get_next_channo(pos);
dahdi_dev_dbg(ASSIGN, span_device(span),
dahdi_dev_dbg(ASSIGN, span->parent->dev.parent,
"pos: spanno=%d channels=%d (next_channo=%d)\n",
pos->spanno, pos->channels, next_channo);
if (pos->spanno <= spanno) {
if (basechan < next_channo + pos->channels) {
/* Requested basechan breaks channel sorting */
dev_notice(span_device(span),
dev_notice(span->parent->dev.parent,
"[%d] basechan (%d) is too low for wanted span %d\n",
local_spanno(span), basechan, spanno);
return -EINVAL;
@@ -6776,13 +6771,13 @@ _check_spanno_and_basechan(struct dahdi_span *span, u32 spanno, u32 basechan)
break;
/* Cannot fit the span into the requested location. Abort. */
dev_notice(span_device(span),
dev_notice(span->parent->dev.parent,
"cannot fit span %d (basechan=%d) into requested location\n",
spanno, basechan);
return -EINVAL;
}
dahdi_dev_dbg(ASSIGN, span_device(span),
dahdi_dev_dbg(ASSIGN, span->parent->dev.parent,
"good: spanno=%d, basechan=%d (span->channels=%d)\n",
spanno, basechan, span->channels);
set_spanno_and_basechan(span, spanno, basechan);
@@ -6881,7 +6876,7 @@ static int _dahdi_assign_span(struct dahdi_span *span, unsigned int spanno,
return -EFAULT;
if (test_bit(DAHDI_FLAGBIT_REGISTERED, &span->flags)) {
dev_notice(span_device(span),
dev_notice(span->parent->dev.parent,
"local span %d is already assigned span %d "
"with base channel %d\n", local_spanno(span), span->spanno,
span->chans[0]->channo);
@@ -6892,7 +6887,7 @@ static int _dahdi_assign_span(struct dahdi_span *span, unsigned int spanno,
span->ops->disable_hw_preechocan) {
if ((NULL == span->ops->enable_hw_preechocan) ||
(NULL == span->ops->disable_hw_preechocan)) {
dev_notice(span_device(span),
dev_notice(span->parent->dev.parent,
"span with inconsistent enable/disable hw_preechocan");
return -EFAULT;
}
@@ -7096,7 +7091,7 @@ static int _dahdi_unassign_span(struct dahdi_span *span)
unsigned long flags;
if (!test_bit(DAHDI_FLAGBIT_REGISTERED, &span->flags)) {
dev_info(span_device(span),
dev_info(span->parent->dev.parent,
"local span %d is already unassigned\n",
local_spanno(span));
return -EINVAL;
@@ -10050,24 +10045,6 @@ failed_driver_init:
return res;
}
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 25)
#ifdef CONFIG_PCI
void dahdi_pci_disable_link_state(struct pci_dev *pdev, int state)
{
u16 reg16;
int pos = pci_find_capability(pdev, PCI_CAP_ID_EXP);
state &= (PCIE_LINK_STATE_L0S | PCIE_LINK_STATE_L1 |
PCIE_LINK_STATE_CLKPM);
if (!pos)
return;
pci_read_config_word(pdev, pos + PCI_EXP_LNKCTL, &reg16);
reg16 &= ~(state);
pci_write_config_word(pdev, pos + PCI_EXP_LNKCTL, reg16);
}
EXPORT_SYMBOL(dahdi_pci_disable_link_state);
#endif /* CONFIG_PCI */
#endif /* 2.6.25 */
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 22)
static inline void flush_find_master_work(void)
{

View File

@@ -152,6 +152,12 @@ static int span_hotplug(struct device *dev, char **envp, int envnum,
return err; \
} while (0)
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 26)
#define dev_name(dev) ((dev)->bus_id)
#define dev_set_name(dev, format, ...) \
snprintf((dev)->bus_id, BUS_ID_SIZE, format, ## __VA_ARGS__);
#endif
static int span_uevent(struct device *dev, char **envp, int num_envp,
char *buffer, int buffer_size)
{
@@ -790,17 +796,10 @@ int dahdi_sysfs_add_device(struct dahdi_device *ddev, struct device *parent)
{
int ret;
struct device *const dev = &ddev->dev;
const char *dn;
dev->parent = parent;
dev->bus = &dahdi_device_bus;
dn = dev_name(dev);
if (!dn || !*dn) {
/* Invent default name based on parent */
if (!parent)
return -EINVAL;
dev_set_name(dev, "%s:%s", parent->bus->name, dev_name(parent));
}
dev_set_name(dev, "%s:%s", parent->bus->name, dev_name(parent));
ret = device_add(dev);
return ret;
}

View File

@@ -75,7 +75,6 @@ static inline void hrtimer_set_expires(struct hrtimer *timer, ktime_t time)
#endif
struct dahdi_dummy {
struct dahdi_device *ddev;
struct dahdi_span span;
struct dahdi_chan _chan;
struct dahdi_chan *chan;
@@ -206,44 +205,37 @@ static const struct dahdi_span_ops dummy_ops = {
static int dahdi_dummy_initialize(struct dahdi_dummy *ztd)
{
int res = 0;
/* DAHDI stuff */
ztd->ddev = dahdi_create_device();
if (!ztd->ddev)
return -ENOMEM;
dev_set_name(&ztd->ddev->dev, "dahdi_dummy");
ztd->chan = &ztd->_chan;
sprintf(ztd->span.name, "DAHDI_DUMMY/1");
snprintf(ztd->span.desc, sizeof(ztd->span.desc) - 1, "%s (source: " CLOCK_SRC ") %d", ztd->span.name, 1);
sprintf(ztd->chan->name, "DAHDI_DUMMY/%d/%d", 1, 0);
ztd->ddev->devicetype = "DAHDI Dummy Timing";
strlcpy(ztd->span.devicetype, "DAHDI Dummy Timing",
sizeof(ztd->span.devicetype));
ztd->chan->chanpos = 1;
ztd->span.chans = &ztd->chan;
ztd->span.channels = 0; /* no channels on our span */
ztd->span.deflaw = DAHDI_LAW_MULAW;
ztd->chan->pvt = ztd;
ztd->span.ops = &dummy_ops;
list_add_tail(&ztd->span.device_node, &ztd->ddev->spans);
res = dahdi_register_device(ztd->ddev, NULL);
return res;
if (dahdi_register(&ztd->span, 0)) {
return -1;
}
return 0;
}
int init_module(void)
{
int res;
ztd = kzalloc(sizeof(*ztd), GFP_KERNEL);
if (ztd == NULL) {
printk(KERN_ERR "dahdi_dummy: Unable to allocate memory\n");
return -ENOMEM;
}
res = dahdi_dummy_initialize(ztd);
if (res) {
printk(KERN_ERR
"dahdi_dummy: Unable to intialize DAHDI driver (%d)\n",
res);
if (dahdi_dummy_initialize(ztd)) {
printk(KERN_ERR "dahdi_dummy: Unable to intialize DAHDI driver\n");
kfree(ztd);
return res;
return -ENODEV;
}
#if defined(USE_HIGHRESTIMER)
@@ -281,8 +273,7 @@ void cleanup_module(void)
atomic_set(&shutdown, 1);
del_timer_sync(&timer);
#endif
dahdi_unregister_device(ztd->ddev);
dahdi_free_device(ztd->ddev);
dahdi_unregister(&ztd->span);
kfree(ztd);
if (debug)
printk(KERN_DEBUG "dahdi_dummy: cleanup() finished\n");

View File

@@ -605,10 +605,9 @@ static int _create_dynamic(struct dahdi_dynamic_span *dds)
strlcpy(d->dname, dds->driver, sizeof(d->dname));
strlcpy(d->addr, dds->addr, sizeof(d->addr));
d->timing = dds->timing;
snprintf(d->span.name, sizeof(d->span.name), "DYN/%s/%s",
dds->driver, dds->addr);
snprintf(d->span.desc, sizeof(d->span.desc),
"Dynamic '%s' span at '%s'", dds->driver, dds->addr);
sprintf(d->span.name, "DYN/%s/%s", dds->driver, dds->addr);
sprintf(d->span.desc, "Dynamic '%s' span at '%s'",
dds->driver, dds->addr);
d->span.deflaw = DAHDI_LAW_MULAW;
d->span.flags |= DAHDI_FLAG_RBS;
d->span.chans = d->chans;
@@ -659,9 +658,6 @@ static int _create_dynamic(struct dahdi_dynamic_span *dds)
return res;
}
d->ddev->devicetype = d->span.name;
d->ddev->hardware_id = d->span.name;
dev_set_name(&d->ddev->dev, "dynamic:%s:%d", dds->driver, dtd->id++);
list_add_tail(&d->span.device_node, &d->ddev->spans);
/* Whee! We're created. Now register the span */
if (dahdi_register_device(d->ddev, d->dev)) {

View File

@@ -71,8 +71,6 @@ static struct dahdi_span *ztdeth_getspan(unsigned char *addr, unsigned short sub
if (z)
span = z->span;
spin_unlock_irqrestore(&zlock, flags);
if (!span || !test_bit(DAHDI_FLAGBIT_REGISTERED, &span->flags))
return NULL;
return span;
}
@@ -193,44 +191,15 @@ static void ztdeth_transmit(struct dahdi_dynamic *dyn, u8 *msg, size_t msglen)
spin_unlock_irqrestore(&zlock, flags);
}
/**
* dahdi_dynamic_flush_work_fn - Flush all pending transactions.
*
* This function is run in a work queue since we can't guarantee interrupts
* will be enabled when we're called, and dev_queue_xmit() requires that
* interrupts be enabled.
*
*/
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 20)
static void dahdi_dynamic_flush_work_fn(void *data)
#else
static void dahdi_dynamic_flush_work_fn(struct work_struct *work)
#endif
static int ztdeth_flush(void)
{
struct sk_buff *skb;
/* Handle all transmissions now */
while ((skb = skb_dequeue(&skbs))) {
dev_queue_xmit(skb);
}
}
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 20)
static DECLARE_WORK(dahdi_dynamic_eth_flush_work,
dahdi_dynamic_flush_work_fn, NULL);
#else
static DECLARE_WORK(dahdi_dynamic_eth_flush_work,
dahdi_dynamic_flush_work_fn);
#endif
/**
* ztdeth_flush - Flush all pending transactions.
*
* This function is called in interrupt context while processing the master
* span.
*/
static int ztdeth_flush(void)
{
schedule_work(&dahdi_dynamic_eth_flush_work);
return 0;
}
@@ -453,11 +422,6 @@ static int __init ztdeth_init(void)
static void __exit ztdeth_exit(void)
{
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 22)
flush_scheduled_work();
#else
cancel_work_sync(&dahdi_dynamic_eth_flush_work);
#endif
dev_remove_pack(&ztdeth_ptype);
unregister_netdevice_notifier(&ztdeth_nblock);
dahdi_dynamic_unregister_driver(&ztd_eth);

View File

@@ -57,15 +57,6 @@
* (and not tasklet). */
#define CONFIG_VOICEBUS_INTERRUPT
/*
* Enable the following definition in order to disable Active-State Power
* Management on the PCIe bridge for PCIe cards. This has been known to work
* around issues where the BIOS enables it on the cards even though the
* platform does not support it.
*
*/
#undef CONFIG_VOICEBUS_DISABLE_ASPM
/* Define this to use a FIFO for the software echocan reference.
* (experimental) */
#undef CONFIG_VOICEBUS_ECREFERENCE

View File

@@ -173,15 +173,6 @@ static inline int t4_queue_work(struct workqueue_struct *wq, struct work_struct
/* #define CONFIG_FORCE_EXTENDED_RESET */
/* #define CONFIG_NOEXTENDED_RESET */
/*
* Uncomment the following definition in order to disable Active-State Power
* Management on the PCIe bridge for PCIe cards. This has been known to work
* around issues where the BIOS enables it on the cards even though the
* platform does not support it.
*
*/
/* #define CONFIG_WCT4XXP_DISABLE_ASPM */
#if defined(CONFIG_FORCE_EXTENDED_RESET) && defined(CONFIG_NOEXTENDED_RESET)
#error "You cannot define both CONFIG_FORCE_EXTENDED_RESET and " \
"CONFIG_NOEXTENDED_RESET."
@@ -387,11 +378,6 @@ struct t4 {
struct spi_state st;
};
static inline bool is_pcie(const struct t4 *wc)
{
return (wc->devtype->flags & FLAG_EXPRESS) > 0;
}
static inline bool has_e1_span(const struct t4 *wc)
{
return (wc->t1e1) != 0;
@@ -684,12 +670,11 @@ static unsigned int __t4_framer_in(const struct t4 *wc, int unit,
val = ((unit & 0x3) << 8) | (addr & 0xff) | haddr;
writel(val, wc_laddr);
readl(wc_version);
/* readl(wc_version); */
writel(val | WC_LFRMR_CS | WC_LREAD, wc_laddr);
readl(wc_version);
ret = readb(wc_ldata);
writel(val, wc_laddr);
readl(wc_version);
return ret;
}
@@ -715,13 +700,11 @@ static void __t4_framer_out(const struct t4 *wc, int unit, const u8 addr,
val = ((unit & 0x3) << 8) | (addr & 0xff) | haddr;
writel(val, wc_laddr);
readl(wc_version);
writel(value, wc_ldata);
readl(wc_version);
writel(val | WC_LFRMR_CS | WC_LWRITE, wc_laddr);
readl(wc_version);
/* readl(wc_version); */
writel(val, wc_laddr);
readl(wc_version);
}
static void t4_framer_out(struct t4 *wc, int unit,
@@ -3784,7 +3767,7 @@ static inline void t4_framer_interrupt(struct t4 *wc, int span)
}
#ifdef SUPPORT_GEN1
static irqreturn_t _t4_interrupt(int irq, void *dev_id)
DAHDI_IRQ_HANDLER(t4_interrupt)
{
struct t4 *wc = dev_id;
unsigned long flags;
@@ -3852,16 +3835,6 @@ static irqreturn_t _t4_interrupt(int irq, void *dev_id)
return IRQ_RETVAL(1);
}
DAHDI_IRQ_HANDLER(t4_interrupt)
{
irqreturn_t ret;
unsigned long flags;
local_irq_save(flags);
ret = _t4_interrupt(irq, dev_id);
local_irq_restore(flags);
return ret;
}
#endif
static int t4_allocate_buffers(struct t4 *wc, int numbufs,
@@ -3979,7 +3952,7 @@ static void t4_isr_bh(unsigned long data)
#endif
}
static irqreturn_t _t4_interrupt_gen2(int irq, void *dev_id)
DAHDI_IRQ_HANDLER(t4_interrupt_gen2)
{
struct t4 *wc = dev_id;
unsigned int status;
@@ -4175,16 +4148,6 @@ out:
return IRQ_RETVAL(1);
}
DAHDI_IRQ_HANDLER(t4_interrupt_gen2)
{
irqreturn_t ret;
unsigned long flags;
local_irq_save(flags);
ret = _t4_interrupt_gen2(irq, dev_id);
local_irq_restore(flags);
return ret;
}
#ifdef SUPPORT_GEN1
static int t4_reset_dma(struct t4 *wc)
{
@@ -5109,13 +5072,6 @@ t4_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
spin_lock_init(&wc->reglock);
wc->devtype = (const struct devtype *)(ent->driver_data);
#ifdef CONFIG_WCT4XXP_DISABLE_ASPM
if (is_pcie(wc)) {
pci_disable_link_state(pdev->bus->self, PCIE_LINK_STATE_L0S |
PCIE_LINK_STATE_L1 | PCIE_LINK_STATE_CLKPM);
};
#endif
if (is_octal(wc))
wc->numspans = 8;
else if (wc->devtype->flags & FLAG_2PORT)
@@ -5232,23 +5188,22 @@ t4_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
#ifdef SUPPORT_GEN1
if (request_irq(pdev->irq, (wc->devtype->flags & FLAG_2NDGEN) ?
t4_interrupt_gen2 : t4_interrupt,
DAHDI_IRQ_SHARED,
DAHDI_IRQ_SHARED_DISABLED,
(wc->numspans == 8) ? "wct8xxp" :
(wc->numspans == 2) ? "wct2xxp" :
"wct4xxp",
wc)) {
wc))
#else
if (!(wc->tspans[0]->spanflags & FLAG_2NDGEN)) {
dev_notice(&wc->dev->dev, "This driver does not "
"support 1st gen modules\n");
free_wc(wc);
return -ENODEV;
}
if (request_irq(pdev->irq, t4_interrupt_gen2,
DAHDI_IRQ_SHARED, "t4xxp", wc)) {
if (!(wc->tspans[0]->spanflags & FLAG_2NDGEN)) {
dev_notice(&wc->dev->dev, "This driver does not "
"support 1st gen modules\n");
free_wc(wc);
return -ENODEV;
}
if (request_irq(pdev->irq, t4_interrupt_gen2, DAHDI_IRQ_SHARED_DISABLED, "t4xxp", wc))
#endif
dev_notice(&wc->dev->dev, "Unable to request IRQ %d\n",
{
dev_notice(&wc->dev->dev, "t4xxp: Unable to request IRQ %d\n",
pdev->irq);
free_wc(wc);
return -EIO;

View File

@@ -422,7 +422,6 @@ struct vpm450m *init_vpm450m(void *wc, int *isalaw, int numspans, const struct f
tOCT6100_GET_INSTANCE_SIZE InstanceSize;
tOCT6100_CHANNEL_OPEN *ChannelOpen;
UINT32 ulResult;
const unsigned int mask = (8 == numspans) ? 0x7 : 0x3;
unsigned int sout_stream, rout_stream;
struct vpm450m *vpm450m;
int x,y,law;
@@ -528,7 +527,7 @@ struct vpm450m *init_vpm450m(void *wc, int *isalaw, int numspans, const struct f
* therefore, the lower 2 bits tell us which span this
* timeslot/channel
*/
if (isalaw[x & mask])
if (isalaw[x & 0x07])
law = cOCT6100_PCM_A_LAW;
else
law = cOCT6100_PCM_U_LAW;

View File

@@ -191,11 +191,6 @@ static const struct wctdm_desc wcaex410 = { "Wildcard AEX410", FLAG_EXPRESS, 4 }
static const struct wctdm_desc wcha80000 = { "HA8-0000", 0, 8 };
static const struct wctdm_desc wchb80000 = { "HB8-0000", FLAG_EXPRESS, 8 };
static inline bool is_pcie(const struct wctdm *wc)
{
return (wc->desc->flags & FLAG_EXPRESS) > 0;
}
/**
* Returns true if the card is one of the Hybrid Digital Analog Cards.
*/
@@ -1909,7 +1904,7 @@ static void wctdm_fxo_ring_detect(struct wctdm *wc, struct wctdm_module *mod)
if (!is_fxo_ringing(fxo)) {
set_ring(fxo, DEBOUNCING_RINGOFF);
fxo->ringdebounce_timer =
wc->framecount + ringdebounce / 8;
wc->framecount + ringdebounce / 2;
}
break;
case DEBOUNCING_RINGOFF:
@@ -3732,15 +3727,14 @@ static int wctdm_ioctl(struct dahdi_chan *chan, unsigned int cmd, unsigned long
if (((fxs->lasttxhook & SLIC_LF_SETMASK) == SLIC_LF_ACTIVE_FWD) ||
((fxs->lasttxhook & SLIC_LF_SETMASK) == SLIC_LF_ACTIVE_REV)) {
int res;
res = set_lasttxhook_interruptible(wc, fxs,
x = set_lasttxhook_interruptible(wc, fxs,
(POLARITY_XOR(fxs) ?
SLIC_LF_OHTRAN_REV : SLIC_LF_OHTRAN_FWD),
&mod->sethook);
if (debug & DEBUG_CARD) {
if (res) {
if (x) {
dev_info(&wc->vb.pdev->dev,
"Channel %d TIMEOUT: "
"OnHookTransfer start\n",
@@ -5684,13 +5678,6 @@ __wctdm_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
wc->vb.pdev = pdev;
wc->vb.debug = &debug;
#ifdef CONFIG_VOICEBUS_DISABLE_ASPM
if (is_pcie(wc)) {
pci_disable_link_state(pdev->bus->self, PCIE_LINK_STATE_L0S |
PCIE_LINK_STATE_L1 | PCIE_LINK_STATE_CLKPM);
};
#endif
if (is_hx8(wc)) {
wc->vb.ops = &hx8_voicebus_operations;
ret = voicebus_boot_init(&wc->vb, wc->board_name);

View File

@@ -99,11 +99,6 @@ static const struct t1_desc te120p = {"Wildcard TE120P"};
static const struct t1_desc te122 = {"Wildcard TE122"};
static const struct t1_desc te121 = {"Wildcard TE121"};
static inline bool is_pcie(const struct t1 *t1)
{
return (0 == strcmp(t1->variety, te121.name));
}
/* names of HWEC modules */
static const char *vpmadt032_name = "VPMADT032";
static const char *vpmoct_name = "VPMOCT032";
@@ -2754,13 +2749,6 @@ static int __devinit te12xp_init_one(struct pci_dev *pdev, const struct pci_devi
}
#endif /* CONFIG_VOICEBUS_ECREFERENCE */
#ifdef CONFIG_VOICEBUS_DISABLE_ASPM
if (is_pcie(wc)) {
pci_disable_link_state(pdev->bus->self, PCIE_LINK_STATE_L0S |
PCIE_LINK_STATE_L1 | PCIE_LINK_STATE_CLKPM);
};
#endif
snprintf(wc->name, sizeof(wc->name)-1, "wcte12xp%d", index);
pci_set_drvdata(pdev, wc);
wc->vb.ops = &voicebus_operations;

View File

@@ -42,8 +42,6 @@ static DEF_PARM(uint, poll_digital_inputs, 1000, 0644, "Poll Digital Inputs");
static DEF_PARM_BOOL(vmwi_ioctl, 1, 0644, "Asterisk support VMWI notification via ioctl");
static DEF_PARM_BOOL(ring_trapez, 0, 0664, "Use trapezoid ring type");
static DEF_PARM_BOOL(lower_ringing_noise, 0, 0664,
"Lower ringing noise (may loose CallerID)");
/* Signaling is opposite (fxo signalling for fxs card) */
#if 1
@@ -137,7 +135,6 @@ struct FXS_priv_data {
xpp_line_t want_dtmf_mute; /* what dahdi want */
xpp_line_t prev_key_down; /* DTMF down sets the bit */
xpp_line_t neon_blinking;
xpp_line_t vbat_h; /* High voltage */
struct timeval prev_key_time[CHANNELS_PERXPD];
int led_counter[NUM_LEDS][CHANNELS_PERXPD];
int ohttimer[CHANNELS_PERXPD];
@@ -160,50 +157,26 @@ struct FXS_priv_data {
#define LED_BLINK_RING (1000/8) /* in ticks */
/*---------------- FXS: Static functions ----------------------------------*/
static int do_chan_power(xbus_t *xbus, xpd_t *xpd, lineno_t chan, bool on)
{
struct FXS_priv_data *priv;
unsigned long *p;
int was;
BUG_ON(!xbus);
BUG_ON(!xpd);
priv = xpd->priv;
p = (unsigned long *)&priv->vbat_h;
if (on)
was = test_and_set_bit(chan, p) != 0;
else
was = test_and_clear_bit(chan, p) != 0;
if (was == on) {
LINE_DBG(SIGNAL, xpd, chan,
"%s (same, ignored)\n", (on) ? "up" : "down");
return 0;
}
LINE_DBG(SIGNAL, xpd, chan, "%s\n", (on) ? "up" : "down");
return SLIC_DIRECT_REQUEST(xbus, xpd, chan, SLIC_WRITE, REG_BATTERY,
(on) ? REG_BATTERY_BATSL : 0x00);
}
static int linefeed_control(xbus_t *xbus, xpd_t *xpd, lineno_t chan, enum fxs_state value)
{
struct FXS_priv_data *priv;
bool want_vbat_h;
struct FXS_priv_data *priv;
priv = xpd->priv;
/*
* Should we drop vbat_h only during actuall ring?
* - It would lower the noise caused to other channels by
* group ringing
* - But it may also stop CallerID from passing through the SLIC
*/
want_vbat_h = value == FXS_LINE_RING;
if (lower_ringing_noise || want_vbat_h)
do_chan_power(xbus, xpd, chan, want_vbat_h);
LINE_DBG(SIGNAL, xpd, chan, "value=0x%02X\n", value);
priv->lasttxhook[chan] = value;
return SLIC_DIRECT_REQUEST(xbus, xpd, chan, SLIC_WRITE, 0x40, value);
}
static int do_chan_power(xbus_t *xbus, xpd_t *xpd, lineno_t chan, bool on)
{
int value = (on) ? REG_BATTERY_BATSL : 0x00;
BUG_ON(!xbus);
BUG_ON(!xpd);
LINE_DBG(SIGNAL, xpd, chan, "%s\n", (on) ? "up" : "down");
return SLIC_DIRECT_REQUEST(xbus, xpd, chan, SLIC_WRITE, REG_BATTERY, value);
}
static void vmwi_search(xpd_t *xpd, lineno_t pos, bool on)
{
struct FXS_priv_data *priv;
@@ -718,7 +691,7 @@ static int send_ring(xpd_t *xpd, lineno_t chan, bool on)
LINE_DBG(SIGNAL, xpd, chan, "%s\n", (on)?"on":"off");
priv = xpd->priv;
set_vm_led_mode(xbus, xpd, chan, 0);
do_chan_power(xbus, xpd, chan, on); /* Power up (for ring) */
do_chan_power(xbus, xpd, chan, on); // Power up (for ring)
ret = linefeed_control(xbus, xpd, chan, value);
if(on) {
MARK_BLINK(priv, chan, LED_GREEN, LED_BLINK_RING);
@@ -1577,11 +1550,6 @@ static int proc_fxs_info_read(char *page, char **start, off_t off, int count, in
IS_SET(priv->search_fsk_pattern, i)
);
}
len += sprintf(page + len, "\n%-12s", "vbat_h:");
for_each_line(xpd, i) {
len += sprintf(page + len, "%4d",
test_bit(i, (unsigned long *)&priv->vbat_h));
}
len += sprintf(page + len, "\n");
for(led = 0; led < NUM_LEDS; led++) {
len += sprintf(page + len, "LED #%d", led);

View File

@@ -422,37 +422,19 @@ int xpp_register_request(xbus_t *xbus, xpd_t *xpd, xportno_t portno,
return 0;
}
/*
* Wrapper for different types of xbus reset
*/
static int send_xbus_reset(xbus_t *xbus, uint8_t reset_mask)
/* 0x23 */ HOSTCMD(GLOBAL, RESET_SYNC_COUNTERS)
{
xframe_t *xframe;
xpacket_t *pack;
BUG_ON(!xbus);
XFRAME_NEW_CMD(xframe, pack, xbus, GLOBAL, XBUS_RESET, 0);
RPACKET_FIELD(pack, GLOBAL, XBUS_RESET, mask) = reset_mask;
//XBUS_DBG(SYNC, xbus, "\n");
XFRAME_NEW_CMD(xframe, pack, xbus, GLOBAL, RESET_SYNC_COUNTERS, 0);
RPACKET_FIELD(pack, GLOBAL, RESET_SYNC_COUNTERS, mask) = 0x10;
send_cmd_frame(xbus, xframe);
return 0;
}
/* 0x23 */ HOSTCMD(GLOBAL, RESET_SPI)
{
XBUS_DBG(DEVICES, xbus, "Sending SPI reset\n");
/* toggle reset line */
send_xbus_reset(xbus, 0x04);
send_xbus_reset(xbus, 0x00);
return 0;
}
/* 0x23 */ HOSTCMD(GLOBAL, RESET_SYNC_COUNTERS)
{
//XBUS_DBG(SYNC, xbus, "\n");
return send_xbus_reset(xbus, 0x10);
}
/*---------------- GLOBAL: Astribank Reply Handlers -----------------------*/
HANDLER_DEF(GLOBAL, NULL_REPLY)
@@ -544,7 +526,6 @@ HANDLER_DEF(GLOBAL, AB_DESCRIPTION) /* 0x08 */
list_add_tail(&card_desc->card_list, &worker->card_list);
spin_unlock_irqrestore(&worker->worker_lock, flags);
}
CALL_PROTO(GLOBAL, RESET_SPI, xbus, NULL);
if (!xbus_process_worker(xbus)) {
ret = -ENODEV;
goto out;

View File

@@ -38,7 +38,7 @@ enum global_opcodes {
XPROTO_NAME(GLOBAL, SYNC_REPLY) = 0x1A,
/**/
XPROTO_NAME(GLOBAL, ERROR_CODE) = 0x22,
XPROTO_NAME(GLOBAL, XBUS_RESET) = 0x23,
XPROTO_NAME(GLOBAL, RESET_SYNC_COUNTERS) = 0x23,
XPROTO_NAME(GLOBAL, NULL_REPLY) = 0xFE,
};
@@ -87,7 +87,7 @@ DEF_RPACKET_DATA(GLOBAL, SYNC_REPLY,
DEF_RPACKET_DATA(GLOBAL, REGISTER_REPLY,
reg_cmd_t regcmd;
);
DEF_RPACKET_DATA(GLOBAL, XBUS_RESET,
DEF_RPACKET_DATA(GLOBAL, RESET_SYNC_COUNTERS,
byte mask;
);
DEF_RPACKET_DATA(GLOBAL, ERROR_CODE,
@@ -98,7 +98,6 @@ DEF_RPACKET_DATA(GLOBAL, ERROR_CODE,
/* 0x07 */ DECLARE_CMD(GLOBAL, AB_REQUEST);
/* 0x19 */ DECLARE_CMD(GLOBAL, SYNC_SOURCE, enum sync_mode mode, int drift);
/* 0x23 */ DECLARE_CMD(GLOBAL, RESET_SPI);
/* 0x23 */ DECLARE_CMD(GLOBAL, RESET_SYNC_COUNTERS);
int xpp_register_request(xbus_t *xbus, xpd_t *xpd, xportno_t portno,

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,12 +1,10 @@
# Install firmwares and initialization scripts for the Astribank
# drivers
USB_FW = USB_FW.hex USB_FW.201.hex USB_RECOV.hex
FPGA_FW = FPGA_FXS.hex FPGA_1141.hex FPGA_1151.hex FPGA_1161.hex \
FPGA_1161.201.hex
FPGA_FW = FPGA_FXS.hex FPGA_1141.hex FPGA_1151.hex FPGA_1161.hex
PIC_FW = PIC_TYPE_1.hex PIC_TYPE_2.hex PIC_TYPE_3.hex PIC_TYPE_4.hex
OCT_FW = $(wildcard OCT6104E-256D.ima)
FIRMWARES = $(USB_FW) $(FPGA_FW) $(PIC_FW) $(OCT_FW)
FIRMWARES = USB_FW.hex $(FPGA_FW) $(PIC_FW) $(OCT_FW)
PROTO_VER = 30
SCRIPTS_BASE = $(patsubst %,init_card_%_$(PROTO_VER),1 2 3 4 5)
SCRIPTS = $(SCRIPTS_BASE:%=../%)

View File

@@ -1,578 +0,0 @@
#
# $Id: USB_FW.201.hex 10402 2012-02-15 15:34:50Z dima $
#
:03004300021F0099
:03005300021F0089
:101F0000021E3100021E8E00021E7800021E4900D1
:081F1000021C2000021BA900C5
:101000001201000200000040AAAAAAAAAAAA01028C
:1010100003010A0600020000004001000902370037
:10102000020100C0000904000002FFFFFF040705E1
:101030000202000200070586020002000904010006
:1010400002FFFFFF050705040200020007058802F2
:10105000000200001201000200000040E4E451110F
:101060000000010203010A06000200000040010026
:1010700009023700020100C0320904000002FFFF2C
:10108000FF04070502024000000705860240000039
:101090000904010002FFFFFF0507050402400000EC
:1010A0000705880240000006040016001400120024
:1010B0000A00260004030904160358006F0072009A
:1010C00063006F006D0020004C00540044001403C6
:1010D00041007300740072006900620061006E00DC
:1010E0006B001203530065007200690061006C0020
:1010F0004E006F000A0346005000470041002603DF
:101100004D0061006E00610067006D0065006E00BB
:101110007400500072006F0063006500730073007C
:061120006F0072000000E8
:050FF6000300000000F3
:100F3C0041E0370041E0B60042E0B1000041E0384A
:100F4C0000021BE0850218E07943E0B30000004D7D
:0F0F5C00E03931303339354D202020202020005E
:101D71008B538A548955E5581558AE57700215573B
:101D81004E6014AB530555E555AA54700205541421
:081D9100F9ED12077780DF2253
:101BE6008B538A548955E55A155AAE5970021559C0
:101BF6004E6026AB560558E558AA5770020557148D
:101C0600F9120731FFAB530555E555AA5470020585
:0A1C16005414F9EF12077780CD2275
:101DC100D2B7E490E670F0F5B575B5E653B5E743E3
:101DD100B28853B2FCC2B3D2B1C2B2C2B67F32FE34
:061DE100121E07D2B6221B
:101E6100538EF75389FB5389F74389015389FDE465
:071E7100F58AF58CD2A922CD
:1018B2008C448D45AA06A9077556018A5789587521
:1018C2005900755A1C7B017AE0794C121BE690E0B4
:1018D20064E0FCA3E0FDA3E0FEA3E064D1FFEE64BC
:1018E2008DFEED644CFDEC6449FC90E064120853FB
:1018F2007EE07F4C7D1C7C001213707EE07F4C7B6F
:101902001C7A00AD45AC441214247D1C7C00AF450A
:10191200AE441211F57D1C7C00AF45AE44021C564C
:08183F008E448F458C468D4755
:10184700C20712001290E15BEFF0BF5004D207808D
:1018570057E490E15CF0A3F090E15CE0FEA3E0FFC9
:10186700C39410EE648094805030E5472FF582E5ED
:10187700463EF583E0FF90E15CE0FCA3E02545F5FB
:1018870082E5443CF583E0B5071090E15DE004F0A4
:1018970070C690E15CE004F080BE90E15CE070040B
:0A18A700A3E064107002D207A2074C
:0118B1002214
:020E12008F410E
:100E14001200128F42E4F546F547AD47AC46121472
:100E2400DA74692547F582E434E0F583E543F00597
:100E340047E54770020546C39408E54664809480FC
:100E440040D8E541600490E069F090E069E0B4C006
:100E540008754400754508800675441D754536754A
:100E64004600754708C3E5479410E54664809480BE
:100E740050231214D674692547F582E434E0F583CF
:100E8400E543F00547E547700205460545E545702D
:100E9400D4054480D07543FF75441D7545197546C6
:100EA40000754710C3E547942CE546648094805050
:100EB40033E542B4510E7B007A007943AD45AC442E
:100EC400FF1214E274692547F582E434E0F583E502
:100ED40043F00547E547700205460545E54570C4FE
:100EE400054480C075441D75453EE4F543F546F55B
:100EF40047C3E5479406E54664809480502FE54255
:100F0400B4510A90E069E0B4C2031214D6744625C1
:100F140047F582E434E0F583E543F00547E547709F
:100F24000205460545E54570C8054480C490E0695E
:070F3400E0B4C20374C0F039
:010F3B002293
:0A1988008E448F458B468A4789483C
:101992007E00E5452DF54DEE3544F54C1200128FD3
:1019A20049E5496451600BC3E5459410E544940050
:1019B200503585444A85454BC3E54B954DE54A95DF
:1019C2004C5024AB46AA47A948AD4BAC4AAF49128A
:1019D2001740054BE54B7002054A74012548F5484E
:0719E200E43547F54780D111
:0119E90022DB
:0617C7008B418A428943B8
:1017CD00D2067556017557E0755869755900755AE9
:1017DD00107B017AE07995121BE6E5432410F9E4BC
:1017ED003542854156F5578958755900755A0C7B08
:1017FD00017AE079A5121BE67EE07F957CE07D1AEB
:10180D001218B27EE07F1AE543241CF9E43542FC40
:10181D00AD0112183F5016AB41E5432410F9E435E4
:10182D0042FA7D1C7F197E1D1219888002C206A204
:01183D0006A4
:01183E002287
:101126007F03121D46EF2402FFE43EA90775410125
:10113600F542894390E06AE0FFE50C2408F582E475
:10114600350BF583EFF090E06BE0FFE50C2409F535
:1011560082E4350BF583EFF090E06CE0FFE50C24BC
:101166000AF582E4350BF583EFF090E06DE0FFE5DC
:101176000C240BF582E4350BF583EFF090E06EE07E
:10118600FFE50C240CF582E4350BF583EFF090E0D7
:101196006FE0FFE50C240DF582E4350BF583EFF0E7
:1011A6007F087E00E4FDEDC39408502874692FF58E
:1011B60082E434E0F583E0FCAB41AA42A94375F032
:1011C60002EDA4F58285F083EC1207890D0FBF00AE
:1011D600010E80D2E5192404F582E43518F583E082
:0E11E60030E0047F0180027F0090E037EFF0E0
:0111F40022D8
:101B250090E06CE02FFFE50C240AF582E4350BF517
:101B350083EFF0E50C240BF582E4350BF583E0FE2D
:101B4500E50C240AF582E4350BF583E0FDEDFF9005
:101B5500E0B1EEF0A3EFF0D206121CBD90E680E0F6
:041B650054F7F0221F
:1016200090E600E054E74410F090E60174C0F090BA
:10163000E6107420F000000090E611F00000009029
:10164000E6047480F0000000740FF0000000E4F085
:1016500000000090E6187410F0000000E490E61915
:10166000F000000090E61A7408F0000000E490E634
:101670001BF000000090E6497482F0000000F000CA
:10168000000090E6247402F0000000E490E625F0EB
:1016900000000090E6957480F0000000F00000006B
:1016A00043AF017B017AE07914755700755806E461
:0416B000FD021D71A9
:061E0100D2837F0A7E007F
:101E07007C007D181207ABEF1FAC0670011E4C70EB
:021E1700F622B1
:0A1A43008E418F428B438A4489458F
:101A4D00E4F546F547C3E5479542E54695415036E1
:101A5D00AB43AA44A94585478285468312074AFFB1
:101A6D00E4FBFAC2B2EF1392B1EFC313FFD2B20B84
:101A7D00BB00010AEB64084A70E9C2B20547E547AD
:071A8D0070C3054680BFD3C2
:011A9400222F
:101E190090E60174C0F0C2B67FC27E01121E07D2DD
:081E2900B67F327E00021E07A5
:101EA400D287121E01C287121E03C2837F0A7E00DC
:031EB400021E0704
:021B6900AB07C8
:101B6B00E4F9FAEBC413131354011392877F027E2B
:101B7B0000121E07D2837F057E00121E07E925E0A7
:101B8B00FFA2B3E4334FF97F057E00121E07EB254E
:0D1B9B00E0FBC283121E030ABA08C8AF01A6
:011BA800221A
:061A95008B558A568957AB
:101A9B00A2AFE433F55D121EA4E4F55CE55CC395DF
:101AAB005B5027AB55AA56A957855C8275830012EC
:101ABB00074AFF121B69AB58AA59A95A855C827554
:101ACB008300EF120789055C80D2120036E55D2496
:031ADB00FF92AFC8
:011ADE0022E5
:0B003600C287121E03121E01D2872297
:101DE70075418F8F42755800755900755A4B755B51
:0A1DF700027B007A007941021A9580
:101C8C0078417C007D007BFF7A0F79F67E007F0522
:101C9C0012070B30B415755800755900755A4175FB
:101CAC005B057B007A007941121A95E5435401FFDC
:011CBC002205
:100B4E007541007542007543007545017546E075A7
:100B5E0047007548017549E0754A08E4F551FFF5FF
:100B6E00527B017AE07900F557755808FD121D7118
:100B7E00AB45AA46A9477401120777E4F550E55034
:100B8E00C454F0AB45AA46A94790000112078985C7
:100B9E004858854959854A5A755B08121A95AB48CB
:100BAE00AA49A94A90000212074AFE5403FFEE54C6
:100BBE0070F55124E0602924F0604B24F0605D2430
:100BCE00F0606F24406003020C5675410185184297
:100BDE00851943EF24FE600624FE703B801C801FA7
:100BEE00E5192401FDE43518A905754101F5428981
:100BFE0043EF24FC60092402700A7552028052757C
:100C0E005206804D8011E5192402FDE43518A90520
:100C1E00754101F54289437552088035E519240363
:100C2E00FDE43518A905754101F542894375520455
:100C3E00801FE5192405FDE43518A905754101F558
:100C4E00428943755298800975410075420075437B
:100C5E0000E542454345416022AB41AA42A94312F9
:100C6E000731FED395524006AD52AE0580008E443C
:100C7E00120731C39544120777800CE55170047E3C
:100C8E000180027E008E44744B2550F8A644055018
:100C9E00E550C394055003020B8CAB45AA46A947F9
:100CAE007488120777AB45E5472401F9E43546FA17
:100CBE0075560075570075584B755900755A0512C3
:100CCE001BE6854858854959854A5A755B08AB45D8
:070CDE00AA46A947021A957E
:1019EA008F4190E0B1E0FEA3E054F064607003EE32
:1019FA00641160037F012290E037E070037F0F22B9
:101A0A00E5417003308108E541B401062080037F77
:101A1A00102290E0B6E0B541037F0122E4F511D22D
:101A2A0006121CBDAF4190E0B6EFF024FF92B590CC
:091A3A00E680E054F7F07F002281
:04000E0090FC04F06E
:1000120090E678E0541824F06008240870087F50B5
:0800220080067F518002E4FF1B
:01002A0022B3
:0C14D600AD45AC447B007A007943AF4286
:0C14E2008F488C498D4A8B4B8A4C894DF9
:1014EE00E4F54EF54F755003FDF551F552A2AF33AD
:1014FE00F553E54824AF600D047012754E00754F1C
:10150E00017D018008754E00754F02E4FDE54860CF
:10151E0051E54F454E604BE54990E0B3F0E54AA3E7
:10152E00F074B32DF582E434E0AD82FCAB4FAF48DE
:10153E001219227551008F527F0A7E00121ADFE5B2
:10154E0052455160107CE07D687B01AF4812157BDF
:10155E007551008F5290E068E0AB4BAA4CA94D122A
:0C156E000777E55324FF92AFAE51AF5257
:01157A00224E
:0C1740008F4E8C4F8D508B518A52895374
:10174C00E4F554F555755603FDF557F558A2AF332E
:10175C00F559E54E24AF600D0470127554007555A3
:10176C00027D018008755400755503E4FDE54E605B
:10177C003FE55545546039E54F90E0B3F0E550A393
:10178C00F0AB51AA52A95312073190E0B5F0C2B791
:10179C0074B32DF582E434E0AD82FCAB55AF4E1240
:1017AC0019227557008F587F0A7E00121ADFD2B7A4
:0A17BC00E55924FF92AFAE57AF5875
:0117C6002200
:10005600E4F531F532F535F53CF53DF53EF53FE590
:10006600AA5484600302063A90E694E0FE90E69570
:10007600E0FBEEF53CEBF53DC39405E53C94004012
:100086000790F404E0FD80027DFFED12085F00CECC
:100096000102C30503080703580903D80B011E0E06
:1000A60000E40F019411025E130541250401310499
:1000B6005732046A3404B23504C93604E63703E518
:1000C6004503F647000005BA75310075320790FC06
:1000D600047481F0A37414F0E4A3F00205DD7F0F2D
:1000E600121DE775310075320690FC047480F0E449
:1000F600A3F0753505F511FE74002535F9EE34F4D7
:10010600FA7B011217C7400690FC05740EF0E4FF57
:10011600120E127F8F0202BD7F0E121DE77531008F
:10012600753205748E12000E8F3F7B007A0079407F
:10013600E4FDFC1214E2E53F64516019E53F6450AA
:10014600601375310075320690FC047480F0A37458
:100156000BF00205DD90E0B7E0FF120E12740025E9
:1001660032F974FC3531FA7B01C0038B567557E0C2
:10017600755869755900755A2CD003121BE6742CF4
:100186002532F532E43531F5317F8E0202BD753107
:100196000075320790FC047491F090E678E090FCCC
:1001A60005F030B3047F0280027F0030B4047E0184
:1001B60080027E00EE4F90FC06F074002532F97442
:1001C600FC3531FA7B01755700755812E4FD121D96
:1001D6007174002532F974FC3531FA7B01C0038B4A
:1001E600567557E0755839755900755A06D0031279
:1001F6001BE674062532F532E43531F531FE74001E
:100206002532F974FC3EFA7B01C0038B567557E024
:10021600755814755900755A06D003121BE67406F4
:100226002532F532E43531F531FE74002532F974A4
:10023600FC3EFA7B01C0038B567557E07558467530
:100246005900755A06D003121BE674062532F5329C
:10025600E43531F5310205DD7F13121DE7753100F6
:1002660075321D749312000E8F3F75381D75390057
:10027600753600753705D3E5399418E538941D5061
:1002860034E53FB4510E7B007A007940AD39AC3885
:10029600FF1214E274002537F58274FC3536F583B7
:1002A600E540F00539E539700205380537E5377060
:1002B600C5053680C17F93121DE70205DD75310045
:1002C60075320690FC047480F0E4A3F090F405E027
:1002D60090E038F0E0147071121E1930B31B755699
:1002E600017557F4755806755900755A067B017ADB
:1002F600E07914121BE60205DD90FC057401F0029C
:1003060003D075310075320690FC047480F0E4A3C6
:10031600F0753507AF35FEC3E53D9FF534E53C9EE8
:10032600F53390E038E014702074002FF974F43E31
:10033600FA7B01AF34AE33121A435004E40204C20E
:1003460090FC05740CF00205DD90FC057403F002C8
:1003560005DD75310075320690FC047480F0E4A367
:10036600F090E038E014705CE4FFFE20B411C2B2F5
:10037600D2B1D2B20FBF00010EEF640A4E70EC305C
:10038600B43A90E6017403F07F647E00121E079073
:10039600E0B7E0FF120E127EE07F697CE07DB812C6
:1003A60018B27EE07FB8AD1CAC1B12183F50051288
:1003B6000B4E801690FC05740EF0800E90FC0574B2
:1003C6000DF0800690FC057403F0E490E038F0022E
:1003D60005DDE4F531F5327F02121B250205DDE469
:1003E600FF120E12121126E4FF1219EAE4FF800230
:1003F6007F01121B25121E190205DD7531007532AB
:100406000690FC047480F0E4A3F090F405E0F53E59
:10041600E4F511E53E64016004E53E703290E0B11A
:10042600E0FEA3E054F064607003EE6411600280A5
:100436007290E037E070028058E5116401600AE5C9
:1004460011700C121C8CEF6006853E110205DD80D2
:100456005275310075320690FC0474B2F0A3E511B2
:10046600F00205DD75310075320690FC047480F0EB
:10047600E4A3F090F405E0F53EFF1219EAEF24F14B
:10048600600F1460152410701AE4F531F532020578
:10049600DD90FC05740FF00205DD90FC057410F08C
:1004A6000205DD90FC057401F00205DD753100756D
:1004B600320690FC0474B5F090E0B6E090FC05F0CE
:1004C6000205DD75310075320690FC0474B6F0A2A3
:1004D60080E43325E0FFA281E4334FA3F00205DD7B
:1004E600853C31853D3290FC0474B7F0753505C303
:1004F600E53D9535F534E53C9400F5337400253536
:10050600F582E434F4F583E0648870030205DDAF18
:10051600357E0074002FF9EE34F4FA7B01C003C077
:100526000174002FF9EE34FC8B58F559895A85343D
:100536005BD001D003121A950205DD7531007532C4
:100546000590FC0474A5F01200128F3F7B007A0020
:100556007940E4FDFC1214E290E036E0FF0532E556
:1005660032AC3170020531142400F58274FC3CF57E
:1005760083EFF090E0B7E0FF0532E532AC31700270
:100586000531142400F58274FC3CF583EFF0053246
:10059600E532AE3170020531142400F58274FC3E5A
:1005A600F583E540F090E6017403F07F647E001267
:1005B6001E07802375310075320690FC047480F0A6
:1005C600C3E53D9405E53C94005006A37407F0800E
:1005D6000690FC057406F090F404E0B48004A3E0F1
:1005E600701290F404E06405600FE06407600AE0AE
:1005F60064096005E490E038F0E5324531602CE5A9
:1006060032FD90FC00F0E531FFA3F090F402E0909B
:10061600FC02F090F403E090FC03F090E69CEFF00F
:1006260000000090E69DEDF000000090E6957480D5
:04063600F0000000D0
:01063A00229D
:02004100D322C8
:0800030090E6BAE0F51DD322DE
:101ECA0090E740E51DF0E490E68AF090E68B04F096
:021EDA00D32211
:08002B0090E6BAE0F51AD322B9
:101EDC0090E740E51AF0E490E68AF090E68B04F087
:021EEC00D322FF
:101D990090E6B9E0242F600D04701990E604E0FF85
:101DA900430780800890E604E0FF53077F000000A6
:071DB900EFF08002D322C30A
:011DC0002200
:101E3100C0E0C083C082D2015391EF90E65D74018E
:081E4100F0D082D083D0E03222
:101E7800C0E0C083C0825391EF90E65D7404F0D057
:061E880082D083D0E0329D
:101E8E00C0E0C083C0825391EF90E65D7402F0D043
:061E9E0082D083D0E03287
:101C2000C0E0C083C08285120D85130E850E8285AB
:101C30000D83A37402F085090F850A108510828533
:101C40000F83A37407F05391EF90E65D7410F0D00A
:061C500082D083D0E032D7
:101E4900C0E0C083C082D2035391EF90E65D74086D
:081E5900F0D082D083D0E0320A
:101BA900C0E0C083C08290E680E030E72085090D5F
:101BB900850A0E850E82850D83A37402F085120FA6
:101BC900851310851082850F83A37407F05391EF55
:0D1BD90090E65D7420F0D082D083D0E03221
:101EB700000102020303040405050300000000C03B
:031EC700C2000056
:060F6B0001110001080065
:03000B000212BC22
:1012BC00C0E0C0F0C083C082C0D075D000C000C0F8
:0D12CC0001C002C003C004C005C006C00779
:1012D90078217C007D007BFF7A1E79C17E007F0525
:1012E90012070B90E0B6E0F526C204752700E50861
:1012F900600415088056750805E5117004C204805C
:1013090043A280308101B3500B3081047F008030CB
:101319007F01802C30B415755800755900755A2114
:10132900755B057B007A007921121A95E523540132
:10133900F527701090E0B6E060047F0080027F011D
:0C1349008F26D204300405AF261219EAEA
:10135500D007D006D005D004D003D002D001D000EC
:0B136500D0D0D082D083D0F0D0E03296
:100CE50078567CE17D017BFF7A1E79C67E007F0404
:100CF50012070BC203C200D202C201121DC1121E8D
:100D050061121620750B10750C00751410751512EF
:100D1500750910750A1C75121075137085120F85EB
:100D250013107516107517B412001290E154EFF0F8
:100D35007B017AE17955E4FDFC1214E290E155E07E
:100D4500FF90E036F0E490E0B7F0EF64C26059EF51
:100D550064C06054E490E15AF090E15AE0FFC39416
:100D650004504A74562FF582E434E1F583E0FF60C0
:100D75003C120E127EE07F697CE07DB81218B27ECF
:100D8500E07FB8AD1CAC1B12183F501490E15AE03F
:100D95002456F582E434E1F583E090E0B7F0800D68
:100DA50090E15AE004F080B1E4FF120E1212112610
:100DB500D2E843D82090E668E04409F090E65CE08C
:100DC500443DF012001290E154EFF07B017AE17995
:100DD50055E4FDFC1214E290E155E064C26007E4BD
:100DE50090E0B6F0C2B57F01121B25D2AFD28C536D
:100DF5008EF8C203C2AF120056D2AF3001051209F8
:0D0E050026C2013003EEC203121D1A80E761
:0B00460090E50DE030E402C322D3225D
:1009260090E6B9E070030209EB147003020A602432
:10093600FE7003020ADB24FB70030209E514700350
:100946000209DF1470030209D31470030209D924C3
:10095600056003020B3A1200414003020B4690E683
:10096600BBE024FE602714603E24FD60111460275E
:1009760024067056E50B90E6B3F0E50C80421200B3
:10098600465044E51490E6B3F0E5158033E50D9046
:10099600E6B3F0E50E802985120F851310E50F905A
:1009A600E6B3F0E510801990E6BAE0FF121D46AAFC
:1009B60006A9077B01EA494B600DEE90E6B3F0EF1E
:1009C60090E6B4F0020B46020B35020B35121EDC24
:1009D600020B4612002B020B46120003020B4612B4
:1009E6001ECA020B4690E6B8E0247F601514601913
:1009F60024027063A200E43325E0FFA202E4334F31
:100A06008041E490E740F0803F90E6BCE0547EFFF2
:100A16007E00E0D394807C0040047D0180027D004E
:100A2600EC4EFEED4F24B7F582741E3EF583E4933B
:100A3600FF3395E0FEEF24A1FFEE34E68F82F583C7
:100A4600E0540190E740F0E4A3F090E68AF090E6E7
:100A56008B7402F0020B46020B3590E6B8E024FEDA
:100A6600601624026003020B4690E6BAE0B4010564
:100A7600C200020B46020B3590E6BAE0705590E6CE
:100A8600BCE0547EFF7E00E0D394807C0040047D71
:100A96000180027D00EC4EFEED4F24B7F582741EF8
:100AA6003EF583E493FF3395E0FEEF24A1FFEE3499
:100AB600E68F82F583E054FEF090E6BCE0548013A6
:100AC6001313541FFFE0540F2F90E683F0E04420E9
:100AD600F0806D805A90E6B8E024FE60192402701A
:100AE6004E90E6BAE0B40104D200805490E6BAE033
:100AF6006402604C803990E6BCE0547EFF7E00E0E4
:100B0600D394807C0040047D0180027D00EC4EFE83
:100B1600ED4F24B7F582741E3EF583E493FF3395BB
:100B2600E0FEEF24A1FFEE34E68F82F583800D9080
:100B3600E6A08008121D99500790E6A0E04401F057
:070B460090E6A0E04480F0FE
:010B4D002285
:03003300020FFBBE
:040FFB0053D8EF32A6
:100F71006080E0D4292E43C9A2D87C013D3654A11A
:100F8100ECF0061362A705F3C0C7738C98932BD9B5
:100F9100BC4C82CA1E9B573CFDD4E01667426F18B9
:100FA1008A17E512BE4EC4D6DA9EDE49A0FBF58E45
:100FB100BB2FEE7AA968799115B2073F94C21089C7
:100FC1000B225F21807F5D9A5A903227353ECCE714
:100FD100BFF79703FF1930B348A5B5D1D75E922A61
:100FE100AC56AAC64FB838D296A47DB676FC6BE251
:040FF1009C7404F1F7
:081370008C468D47AB07AA066D
:10137800E4F548F549C3E5499547E5466480F8E54D
:1013880048648098400302141FE54925E0FFE548BA
:1013980033FE74D42FF58274E03EF583E0FF7E00BF
:1013A800AC46AD471207BD8C4A8D4BE54925E0FF99
:1013B800E54833FE74D52FF58274E03EF583E0FFEF
:1013C8007E00AC46AD471207BD8C4C8D4DE54B6594
:1013D8004D7004E54A654C6030EB254BF582EA35E3
:1013E8004AF583E0F9EB254DF582EA354CF583E0C3
:1013F800FFEB254BF582EA354AF583EFF0EB254DF7
:10140800F582EA354CF583E9F00549E549600302C0
:0B141800137D054802137D7E007F015C
:0114230022A6
:0C1424008E468F478C488D498A4A8B4BBE
:10143000E54745466006E54945487004E4FEFF225D
:10144000E4F54CF54DC3E54D954BE54A6480F8E570
:101450004C648098507BE4F54EF54FE549254DF5F9
:1014600082E548354CF583E4F0C3E54F954BE54AFA
:101470006480F8E54E6480985049E54F254D24D4AA
:10148000F582E434E0F583E0FFE547254FF582E59A
:1014900046354EF583E0FEEF8EF0A4FFE549254D7D
:1014A000F582E548354CF583E02FFFE549254DF5FC
:1014B00082E548354CF583EFF0054FE54F70AA05FE
:1014C0004E80A6054DE54D6003021445054C0214FF
:0514D000457E007F01D4
:0114D50022F4
:101CEC00120731FF90000312074A12077790000386
:101CFC00EF12078990000212074AFF9000011207A9
:0E1D0C004A900002120789900001EF02078939
:0811F5008E468F478C488D499E
:1011FD00E4F54AF54BE549AE487802CEA2E713CEA9
:10120D0013D8F8FFC3E54B9FEE6480F8E54A648080
:10121D009840030212B7E54BAE4A7802C333CE3382
:10122D00CED8F92547FFEE3546FAA9077B018B4C41
:10123D00F54D894E74D5254BF582E434E0F583E008
:10124D00541FFFE48F52F551F550F54F121CECABC6
:10125D004CAA4DA94E120819C374209552F9F812D3
:10126D000806C004C005C006C007A94E120819A97A
:10127D0052A8011207F3D003D002D001D000EF4BDA
:10128D00FFEE4AFEED49FDEC48FCAB4CAA4DA94ED4
:10129D00120839AB4CAA4DA94E121CEC054BE54B6F
:0E12AD006003021202054A0212027E007F0157
:0112BB002210
:101C5600D3ED9410EC64809480402AED1D70011C35
:101C6600142FF582EE3CF583E0FB547F24D4F582F5
:101C7600E434E0F583E0F9540F2FF582E43EF58372
:051C8600E06BF080CBD3
:011C8B002236
:101D1A0090E682E030E004E020E60B90E682E030D4
:101D2A00E119E030E71590E680E04401F07F147E87
:0C1D3A0000121ADF90E680E054FEF02258
:101CBD0030060990E680E0440AF0800790E680E067
:101CCD004408F07FDC7E05121ADF90E65D74FFF0AC
:0F1CDD0090E65FF05391EF90E680E054F7F0222D
:101ADF008E5A8F5B90E600E054187012E55B24017C
:101AEF00FFE4355AC313F55AEF13F55B801590E6F3
:101AFF0000E05418FFBF100BE55B25E0F55BE55ADE
:101B0F0033F55AE55B155BAE5A7002155A4E6005F8
:061B1F00121EEE80EE2212
:06157B008C548D55AE07F3
:10158100EB70037F012290E678E020E6F990E6789F
:101591007480F0EE25E0440190E679F090E678E081
:1015A10030E0F990E678E020E26BE030E167BB01E2
:1015B1000790E678E04420F090E679E0F5561BEBE1
:1015C100603090E678E030E0F990E678E020E2459E
:1015D100BB010790E678E04420F090E679E0FF0552
:1015E10055E555AC547002055414F5828C83EFF027
:1015F10080CC90E678E030E0F990E678E020E215E2
:1016010090E678E04440F090E679E0855582855493
:0E16110083F07F012290E678E04440F07F00F5
:01161F0022A8
:1019220090E678E020E6F990E6787480F0EF25E022
:1019320090E679F090E678E030E0F990E678E02001
:10194200E23AE030E136EBD3940040260DEDAE04EE
:1019520070010C14F5828E83E090E679F01B90E61C
:1019620078E030E0F990E678E020E210E020E1D67D
:10197200800A90E678E04440F07F012290E678E029
:051982004440F07F006D
:01198700223D
:021D4600A907EB
:101D4800AE16AF178F828E83A3E064037017AD01C0
:101D580019ED7001228F828E83E07C002FFDEC3E0E
:081D6800FEAF0580DFE4FEFF81
:011D70002250
:101EEE007400F58690FDA57C05A3E582458370F907
:011EFE0022C1
:030000000216B431
:0C16B400787FE4F6D8FD75815D0216FB1E
:10063B00E709F608DFFA8046E709F208DFFA803EA1
:10064B0088828C83E709F0A3DFFA8032E309F6088E
:10065B00DFFA8078E309F208DFFA807088828C83F6
:10066B00E309F0A3DFFA806489828A83E0A3F608AA
:10067B00DFFA805889828A83E0A3F208DFFA804C84
:10068B0080D280FA80C680D4806980F2803380105B
:10069B0080A680EA809A80A880DA80E280CA8033C4
:1006AB0089828A83ECFAE493A3C8C582C8CCC5833C
:1006BB00CCF0A3C8C582C8CCC583CCDFE9DEE7800C
:1006CB000D89828A83E493A3F608DFF9ECFAA9F08B
:1006DB00EDFB2289828A83ECFAE0A3C8C582C8CCE1
:1006EB00C583CCF0A3C8C582C8CCC583CCDFEADEFA
:1006FB00E880DB89828A83E493A3F208DFF980CC5C
:10070B0088F0EF60010E4E60C388F0ED2402B40454
:10071B000050B9F582EB2402B4040050AF232345FB
:06072B00822390068B738F
:10073100BB010689828A83E0225002E722BBFE02C6
:09074100E32289828A83E49322F9
:10074A00BB010CE58229F582E5833AF583E0225064
:10075A0006E92582F8E622BBFE06E92582F8E222AE
:0D076A00E58229F582E5833AF583E49322C8
:10077700BB010689828A83F0225002F722BBFE0161
:02078700F3225B
:10078900F8BB010DE58229F582E5833AF583E8F0A6
:10079900225006E92582C8F622BBFE05E92582C852
:0207A900F2223A
:1007AB00EF8DF0A4A8F0CF8CF0A428CE8DF0A42E62
:0207BB00FE221C
:1007BD00C2D5EC30E709B2D5E4C39DFDE49CFCEE57
:1007CD0030E715B2D5E4C39FFFE49EFE120885C342
:1007DD00E49DFDE49CFC800312088530D507C3E43D
:0607ED009FFFE49EFE22C6
:1007F300E8600FECC313FCED13FDEE13FEEF13FFE4
:03080300D8F12207
:10080600E8600FEFC333FFEE33FEED33FDEC33FC50
:03081600D8F122F4
:10081900BB010789828A830208E65005E9F80208C4
:10082900DABBFE05E9F80208F289828A830208FE2A
:10083900BB010789828A830208535005E9F8020936
:0A0849000EBBFE05E9F802091A22B1
:0C085300ECF0A3EDF0A3EEF0A3EFF02218
:10085F00D083D082F8E4937012740193700DA3A328
:10086F0093F8740193F5828883E47374029368603C
:06087F00EFA3A3A380DF3C
:1016C000020CE5E493A3F8E493A34003F68001F24F
:1016D00008DFF48029E493A3F85407240CC8C3332B
:1016E000C4540F4420C8834004F456800146F6DFFA
:1016F000E4800B0102040810204080900F3CE47E3F
:10170000019360BCA3FF543F30E509541FFEE493EE
:10171000A360010ECF54C025E060A840B8E493A3B5
:10172000FAE493A3F8E493A3C8C582C8CAC583CAE0
:10173000F0A3C8C582C8CAC583CADFE9DEE780BE98
:010FF50000FB
:10088500BC000BBE0029EF8DF084FFADF022E4CC57
:10089500F875F008EF2FFFEE33FEEC33FCEE9DEC20
:1008A500984005FCEE9DFE0FD5F0E9E4CEFD22ED66
:1008B500F8F5F0EE8420D21CFEADF075F008EF2FB0
:1008C500FFED33FD4007985006D5F0F222C398FDA1
:0508D5000FD5F0EA223E
:0C08DA00E6FC08E6FD08E6FE08E6FF224A
:0C08E600E0FCA3E0FDA3E0FEA3E0FF2285
:0C08F200E2FC08E2FD08E2FE08E2FF2242
:1008FE00E493FC740193FD740293FE740393FF2240
:0C090E00ECF608EDF608EEF608EFF62215
:0C091A00ECF208EDF208EEF208EFF22219
:00000001FF

View File

@@ -1,10 +1,10 @@
#
# $Id: USB_FW.hex 10401 2012-02-15 15:30:24Z dima $
# $Id: USB_FW.hex 10085 2011-11-13 14:33:46Z dima $
#
:03004300021F0099
:03005300021F0089
:101F0000021E3400021E9100021E7B00021E4C00C5
:081F1000021C1F00021BA800C7
:03004300021E009A
:03005300021E008A
:101E0000021E3000021E8D00021E7700021E4800D6
:081E1000021C1B00021BA400D0
:101000001201000200000040AAAAAAAAAAAA01028C
:1010100003010A0600020000004001000902370037
:10102000020100C0000904000002FFFFFF040705E1
@@ -24,199 +24,197 @@
:101100004D0061006E00610067006D0065006E00BB
:101110007400500072006F0063006500730073007C
:061120006F0072000000E8
:051EF1000300000000E9
:1011F50041E0370041E0B70042E0B2000041E0388D
:1012050000021BE0860218E07A43E0B40000004EBD
:10121500E03931303339354D502020202020200051
:101D9A008B518A528953E5561556AE557002155520
:101DAA004E6014AB510553E553AA52700205521402
:081DBA00F9ED12077180DF2230
:101BE5008B518A528953E5581558AE5770021557CF
:101BF5004E6026AB540556E556AA55700205551498
:101C0500F912072BFFAB510553E553AA5270020594
:0A1C15005214F9EF12077180CD227E
:101D7000C2B5C2B7E490E670F075B5E653B5EE4370
:101D8000B28053B2F4A2B53390E0B7F0C2B3C2B69A
:0A1D90007F327E00121E0AD2B62236
:101E6400538EF75389FB5389F74389015389FDE462
:071E7400F58AF58CD2A922CA
:1017B7008C428D43AA06A9077554018A5589567527
:1017C700570075581C7B017AE0794D121BE590E0B4
:1017D7004DE0B4C20374C0F090E065E0FCA3E0FD07
:1017E700A3E0FEA3E064D1FFEE648DFEED644CFD43
:1017F700EC6449FC90E06512084D7EE07F4D7D1C4E
:101807007C001213647EE07F4D7B1C7A00AD43ACF5
:10181700421214187D1C7C00AF43AE42120F367D76
:0A1827001C7C00AF43AE42021C55CA
:0818A9008E428F438C448D45F3
:1018B100C20712001290E15CEFF0BF5004D2078022
:1018C10057E490E15DF0A3F090E15DE0FEA3E0FF5D
:1018D100C39410EE648094805030E5452FF582E585
:1018E100443EF583E0FF90E15DE0FCA3E02543F594
:1018F10082E5423CF583E0B5071090E15EE004F03B
:1019010070C690E15DE004F080BE90E15DE070049E
:0A191100A3E064107002D207A207E1
:01191B0022A9
:020E0C008F3F16
:100E0E001200128F40E4F544F545AD45AC44121482
:100E1E00CE746A2545F582E434E0F583E541F005AC
:100E2E0045E54570020544C39408E544648094800A
:100E3E0040D8E53F600490E06AF090E06AE0B4C00C
:100E4E0008754200754308800675421D7543367558
:100E5E004400754508C3E5459410E54464809480CC
:100E6E0050231214CA746A2545F582E434E0F583E2
:100E7E00E541F00545E545700205440543E543703F
:100E8E00D4054280D07541FF75421D7543197544D6
:100E9E0000754510C3E545942CE54464809480505C
:100EAE0033E540B4510E7B007A007941AD43AC423C
:100EBE00FF1214D6746A2545F582E434E0F583E515
:100ECE0041F00545E545700205440543E54370C410
:100EDE00054280C075421D75433EE4F541F544F56B
:100EEE0045C3E5459406E54464809480502FE54063
:100EFE00B4510A90E06AE0B4C2031214CA744725D2
:100F0E0045F582E434E0F583E541F00545E54570AD
:100F1E000205440543E54370C8054280C490E06A6B
:070F2E00E0B4C20374C0F03F
:010F35002299
:0A1982008E428F438B448A4589464C
:10198C007E00E5432DF54BEE3542F54A1200128FE1
:10199C0047E5476451600BC3E5439410E54294005E
:1019AC005035854248854349C3E549954BE54895F3
:1019BC004A5024AB44AA45A946AD49AC48AF47129E
:1019CC0017340549E5497002054874012546F5466A
:0719DC00E43545F54580D11B
:0119E30022E1
:061831008B3F8A40894153
:10183700D2067554017555E075566A755700755887
:10184700107B017AE07996121BE5E5412410F9E453
:101857003540853F54F555895675570075580C7BAB
:10186700017AE079A6121BE57EE07F967CE07D1A7F
:101877001217B77EE07F1AE541241CF9E43540FCD6
:10188700AD011218A95016AB3FE5412410F9E43514
:1018970040FA7D1C7F197E1D1219828002C206A2A2
:0118A700063A
:0118A800221D
:101126007F03121D45EF2402FFE43EA907753F0128
:10113600F540894190E06BE0FFE50C2408F582E478
:10114600350BF583EFF090E06CE0FFE50C2409F534
:1011560082E4350BF583EFF090E06DE0FFE50C24BB
:101166000AF582E4350BF583EFF090E06EE0FFE5DB
:101176000C240BF582E4350BF583EFF090E06FE07D
:10118600FFE50C240CF582E4350BF583EFF090E0D7
:1011960070E0FFE50C240DF582E4350BF583EFF0E6
:1011A6007F087E00E4FDEDC394085028746A2FF58D
:1011B60082E434E0F583E0FCAB3FAA40A94175F038
:1011C60002EDA4F58285F083EC1207830D0FBF00B4
:1011D600010E80D2E5192404F582E43518F583E082
:0E11E60030E0047F0180027F0090E037EFF0E0
:0111F40022D8
:101B240090E06DE02FFFE50C240AF582E4350BF517
:101B340083EFF0E50C240BF582E4350BF583E0FE2E
:101B4400E50C240AF582E4350BF583E0FDEDFF9006
:101B5400E0B2EEF0A3EFF0D206121CBC90E680E0F7
:041B640054F7F02220
:1016140090E600E054E74410F090E60174C0F090C6
:10162400E6107420F000000090E611F00000009035
:10163400E6047480F0000000740FF0000000E4F091
:1016440000000090E6187410F0000000E490E61921
:10165400F000000090E61A7408F0000000E490E640
:101664001BF000000090E6497482F0000000F000D6
:10167400000090E6247402F0000000E490E625F0F7
:1016840000000090E6957480F0000000F000000077
:1016940043AF017B017AE07914755500755606E471
:0416A400FD021D9A8C
:061E0400D2877F0A7E0078
:101E0A007C007D181207A5EF1FAC0670011E4C70EE
:021E1A00F622AE
:0A1A3D008E3F8F408B418A4289439F
:101A4700E4F544F545C3E5459540E544953F503BEE
:101A5700AB41AA42A943854582854483120744FFC7
:101A6700E4FBFAC2B2EF1392B7EFC313FFD2B20B84
:101A7700BB00010AEB64084A70E9C2B220B002C396
:0C1A8700220545E54570BE054480BAD339
:011A93002230
:101E1C0090E60174C0F0C2B67F967E00121E0AD204
:081E2C00B67F327E00021E0A9F
:101EA700D2B1121E04C2B1121E06C2877F0A7E007B
:031EB700021E0AFE
:021B6800AB07C9
:101B6A00E4F9FAEBC413131354011392B17F027E02
:101B7A0000121E0AD2877F057E00121E0AE925E09E
:101B8A00FFA283E4334FF97F057E00121E0AEB257C
:0D1B9A00E0FBC287121E060ABA08C8AF01A0
:011BA700221B
:061A94008B538A548955B2
:101A9A00A2AFE433F55B121EA7E4F55AE55AC395E3
:101AAA00595027AB53AA54A955855A8275830012F7
:101ABA000744FF121B68AB56AA57A958855A827564
:101ACA008300EF120783055A80D2120036E55B24A1
:031ADA00FF92AFC9
:011ADD0022E6
:0B003600C2B1121E06121E04D2B1223D
:101DEA00753F8F8F4075560075570075584975595C
:0A1DFA00027B007A00793F021A9480
:101C8B00783F7C007D007BFF7A1E79F17E007F051B
:101C9B0012070530B41575560075570075583F750A
:101CAB0059057B007A00793F121A94E5415401FFE4
:011CBB002206
:050FF7000300000000F2
:1011ED0041E0370041E0BB0042E0B6000041E0388D
:1011FD0000021BE08A0218E07E43E0B800000052B6
:10120D00E039393733343A393936344D50202020CE
:04121D00202020006D
:101D96008B508A518952E5551555AE54700215542B
:101DA6004E6014AB500552E552AA5170020551140B
:081DB600F9ED12077180DF2234
:101BE1008B508A518952E5571557AE5670021556DA
:101BF1004E6026AB530555E555AA547002055414A1
:101C0100F912072BFFAB500552E552AA517002059C
:0A1C11005114F9EF12077180CD2283
:101D6C00C2B5C2B7E490E670F075B5E653B5EE4374
:101D7C00B28053B2F4A2B53390E0BBF0C2B3C2B69A
:0A1D8C007F327E00121DECD2B62259
:101E6000538EF75389FB5389F74389015389FDE466
:071E7000F58AF58CD2A922CE
:1017B3008C428D43AA06A9077553018A548955752E
:1017C300560075571C7B017AE07951121BE190E0BA
:1017D30051E0B4C20374C0F090E069E0FCA3E0FD03
:1017E300A3E0FEA3E064D1FFEE648DFEED644CFD47
:1017F300EC6449FC90E06912084D7EE07F517D1C4A
:101803007C001213607EE07F517B1C7A00AD43ACF9
:10181300421214147D1C7C00AF43AE421211267D8C
:0A1823001C7C00AF43AE42021C51D2
:0818A5008E428F438C448D45F7
:1018AD00C20712001290E160EFF0BF5004D2078022
:1018BD0057E490E161F0A3F090E161E0FEA3E0FF59
:1018CD00C39410EE648094805030E5452FF582E589
:1018DD00443EF583E0FF90E161E0FCA3E02543F594
:1018ED0082E5423CF583E0B5071090E162E004F03B
:1018FD0070C690E161E004F080BE90E161E070049B
:0A190D00A3E064107002D207A207E5
:0119170022AD
:020DE4008F3F3F
:100DE6001200128F40E4F544F545AD45AC441214AB
:100DF600CA746E2545F582E434E0F583E541F005D5
:100E060045E54570020544C39408E5446480948032
:100E160040D8E53F600490E06EF090E06EE0B4C02C
:100E260008754200754308800675421D7543367580
:100E36004400754508C3E5459410E54464809480F4
:100E460050231214C6746E2545F582E434E0F5830A
:100E5600E541F00545E545700205440543E5437067
:100E6600D4054280D07541FF75421D7543197544FE
:100E760000754510C3E545942CE544648094805084
:100E860033E540B4510E7B007A007941AD43AC4264
:100E9600FF1214D2746E2545F582E434E0F583E53D
:100EA60041F00545E545700205440543E54370C438
:100EB600054280C075421D75433EE4F541F544F593
:100EC60045C3E5459406E54464809480502FE5408B
:100ED600B4510A90E06EE0B4C2031214C6744B25F6
:100EE60045F582E434E0F583E541F00545E54570D6
:100EF6000205440543E54370C8054280C490E06E90
:070F0600E0B4C20374C0F067
:010F0D0022C1
:0A197E008E428F438B448A45894650
:101988007E00E5432DF54BEE3542F54A1200128FE5
:1019980047E5476451600BC3E5439410E542940062
:1019A8005035854248854349C3E549954BE54895F7
:1019B8004A5024AB44AA45A946AD49AC48AF4712A2
:1019C80017300549E5497002054874012546F54672
:0719D800E43545F54580D11F
:0119DF0022E5
:06182D008B3F8A40894157
:10183300D2067553017554E075556E75560075578C
:10184300107B017AE0799A121BE1E5412410F9E457
:101853003540853F53F554895575560075570C7BB4
:10186300017AE079AA121BE17EE07F9A7CE07D1A7F
:101873001217B37EE07F1AE541241CF9E43540FCDE
:10188300AD011218A55016AB3FE5412410F9E4351C
:1018930040FA7D1C7F197E1D12197E8002C206A2AA
:0118A300063E
:0118A4002221
:100F0E007F03121D41EF2402FFE43EA907753F0146
:100F1E00F540894190E06FE0FFE50C2408F582E48E
:100F2E00350BF583EFF090E070E0FFE50C2409F54A
:100F3E0082E4350BF583EFF090E071E0FFE50C24D1
:100F4E000AF582E4350BF583EFF090E072E0FFE5F1
:100F5E000C240BF582E4350BF583EFF090E073E093
:100F6E00FFE50C240CF582E4350BF583EFF090E0F1
:100F7E0074E0FFE50C240DF582E4350BF583EFF0FC
:100F8E007F087E00E4FDEDC394085028746E2FF5A3
:100F9E0082E434E0F583E0FCAB3FAA40A94175F052
:100FAE0002EDA4F58285F083EC1207830D0FBF00CE
:100FBE00010E80D2E5192404F582E43518F583E09C
:0E0FCE0030E0047F0180027F0090E037EFF0FA
:010FDC0022F2
:101B200090E071E02FFFE50C240AF582E4350BF517
:101B300083EFF0E50C240BF582E4350BF583E0FE32
:101B4000E50C240AF582E4350BF583E0FDEDFF900A
:101B5000E0B6EEF0A3EFF0D206121CB890E680E0FB
:041B600054F7F02224
:1016100090E600E054E74410F090E60174C0F090CA
:10162000E6107420F000000090E611F00000009039
:10163000E6047480F0000000740FF0000000E4F095
:1016400000000090E6187410F0000000E490E61925
:10165000F000000090E61A7408F0000000E490E644
:101660001BF000000090E6497482F0000000F000DA
:10167000000090E6247402F0000000E490E625F0FB
:1016800000000090E6957480F0000000F00000007B
:1016900043AF017B017AE07914755400755506E477
:0416A000FD021D9694
:061DE600D2877F0A7E0097
:101DEC007C007D181207A5EF1FAC0670011E4C700D
:021DFC00F622CD
:0A1A39008E3F8F408B418A428943A3
:101A4300E4F544F545C3E5459540E544953F503BF2
:101A5300AB41AA42A943854582854483120744FFCB
:101A6300E4FBFAC2B2EF1392B7EFC313FFD2B20B88
:101A7300BB00010AEB64084A70E9C2B220B002C39A
:0C1A8300220545E54570BE054480BAD33D
:011A8F002234
:101E180090E60174C0F0C2B67F967E00121DECD227
:081E2800B67F327E00021DECC2
:101EA300D2B1121DE6C2B1121DE8C2877F0A7E00BD
:031EB300021DEC21
:021B6400AB07CD
:101B6600E4F9FAEBC413131354011392B17F027E06
:101B760000121DECD2877F057E00121DECE925E0E0
:101B8600FFA283E4334FF97F057E00121DECEB259F
:0D1B9600E0FBC287121DE80ABA08C8AF01C3
:011BA300221F
:061A90008B538A548955B6
:101A9600A2AFE433F55B121EA3E4F55AE55AC395EB
:101AA600595027AB53AA54A955855A8275830012FB
:101AB6000744FF121B64AB56AA57A958855A82756C
:101AC6008300EF120783055A80D2120036E55B24A5
:031AD600FF92AFCD
:011AD90022EA
:0B003600C2B1121DE8121DE6D2B1227B
:100FDD00753F8F8F40755600755700755849755977
:0A0FED00027B007A00793F021A909F
:101C8700783F7C007D007BFF7A0F79F77E007F0528
:101C970012070530B41575560075570075583F750E
:101CA70059057B007A00793F121A90E5415401FFEC
:011CB700220A
:100B4800753F007540007541007543017544E075B7
:100B580045007546017547E0754808E4F54FFFF50F
:100B6800507B017AE07900F555755608FD121D9AFB
:100B7800AB43AA44A9457401120771E4F54EE54E4A
:100B8800C454F0AB43AA44A94590000112078385D9
:100B98004656854757854858755908121A94AB46E2
:100BA800AA47A948900002120744FE5403FFEE54D6
:100BB80070F54F24E0602924F0604B24F0605D2438
:100BC800F0606F24406003020C50753F01851840A7
:100BD800851941EF24FE600624FE703B801C801FAF
:100BE800E5192401FDE43518A905753F01F540898B
:100BF80041EF24FC60092402700A75500280527586
:100C08005006804D8011E5192402FDE43518A90528
:100C1800753F01F54089417550088035E519240371
:100C2800FDE43518A905753F01F540894175500463
:100C3800801FE5192405FDE43518A905753F01F560
:100C48004089417550988009753F0075400075418D
:100C580000E5404541453F6022AB3FAA40A941120B
:100C6800072BFED395504006AD50AE0580008E424E
:100C780012072BC39542120771800CE54F70047E52
:100C88000180027E008E427449254EF8A642054E28
:100C9800E54EC394055003020B86AB43AA44A9450D
:100CA8007488120771AB43E5452401F9E43544FA29
:100CB80075540075550075564975570075580512D5
:100CC8001BE5854656854757854858755908AB43EF
:070CD800AA44A945021A9489
:1019E4008F3F90E0B2E0FEA3E054F064607003EE39
:1019F400641160037F012290E037E070037F0F22BF
:101A0400E53F7003308108E53FB401062080037F81
:101A1400102290E0B7E0B53F037F0122E4F511D234
:101A240006121CBCAF3F90E0B7EFF024FF92B590D4
:091A3400E680E054F7F07F002287
:100B580045007546017547E0754808E4FFF54F7B89
:100B6800017AE07900F554755508FD121D96AB43DE
:100B7800AA44A9457401120771E4F54EE54EC45420
:100B8800F0AB43AA44A94590000112078385465655
:100B9800854757854858755908121A90AB46AA4791
:100BA800A948900002120744FF530770EF24E06041
:100BB8001B24F0602A24F0603C24F0604E2440702E
:100BC80060753F018518408519418024E519240185
:100BD800FDE43518A905753F01F54089418011E507
:100BE800192402FDE43518A905753F01F54089412E
:100BF800754F088035E5192403FDE43518A90575F6
:100C08003F01F5408941754F04801FE5192405FD12
:100C1800E43518A905753F01F5408941754F98805D
:100C280009753F00754000754100E5404541453F65
:100C38006022AB3FAA40A94112072BFED3954F4033
:100C480006AD4FAE0580008E4212072BC3954212A7
:100C58000771800BEF70047E0180027E008E427463
:100C680049254EF8A642054EE54EC39405500302A9
:100C78000B84AB43AA44A9457488120771AB43E5BA
:100C8800452401F9E43544FA755300755400755547
:100C980049755600755705121BE185465685475715
:0F0CA800854858755908AB43AA44A945021A90CC
:1019E0008F3F90E0B6E0FEA3E054F064607003EE39
:1019F000641160037F012290E037E070037F0F22C3
:101A0000E53F7003308108E53FB401062080037F85
:101A1000102290E0BBE0B53F037F0122E4F511D234
:101A200006121CB8AF3F90E0BBEFF024FF92B590D8
:091A3000E680E054F7F07F00228B
:04000E0090FC04F06E
:1000120090E678E0541824F06008240870087F50B5
:0800220080067F518002E4FF1B
:01002A0022B3
:0C14CA00AD43AC427B007A007941AF409A
:0C14D6008F468C478D488B498A4A894B11
:1014E200E4F54CF54D754E03FDF54FF550A2AF33C3
:1014F200F551E54624AF600D047012754C00754D30
:10150200017D018008754C00754D02E4FDE54660E1
:1015120051E54D454C604BE54790E0B4F0E548A3FA
:10152200F074B42DF582E434E0AD82FCAB4DAF46ED
:1015320012191C754F008F507F0A7E00121ADEE5C9
:1015420050454F60107CE07D697B01AF4612156FFC
:10155200754F008F5090E069E0AB49AA4AA94B123F
:0C1562000771E55124FF92AFAE4FAF506F
:01156E00225A
:0C1734008F4C8C4D8D4E8B4F8A5089518C
:10174000E4F552F553755403FDF555F556A2AF3344
:10175000F557E54C24AF600D0470127552007553B7
:10176000027D018008755200755303E4FDE54C606D
:101770003BE55345526035E54D90E0B4F0E54EA3AE
:10178000F0AB4FAA50A95112072B90E0B6F074B4F9
:101790002DF582E434E0AD82FCAB53AF4C12191C42
:1017A0007555008F567F0A7E00121ADEE55724FF1A
:0617B00092AFAE55AF56EA
:0117B6002210
:0C14C600AD43AC427B007A007941AF409E
:0C14D2008F468C478D488B498A4A894B15
:1014DE00E4F54CF54D754E03FDF54FF550A2AF33C7
:1014EE00F551E54624AF600D047012754C00754D34
:1014FE00017D018008754C00754D02E4FDE54660E6
:10150E0051E54D454C604BE54790E0B8F0E548A3FA
:10151E00F074B82DF582E434E0AD82FCAB4DAF46ED
:10152E00121918754F008F507F0A7E00121ADAE5D5
:10153E0050454F60107CE07D6D7B01AF4612156B00
:10154E00754F008F5090E06DE0AB49AA4AA94B123F
:0C155E000771E55124FF92AFAE4FAF5073
:01156A00225E
:0C1730008F4C8C4D8D4E8B4F8A50895190
:10173C00E4F552F553755403FDF555F556A2AF3348
:10174C00F557E54C24AF600D0470127552007553BB
:10175C00027D018008755200755303E4FDE54C6071
:10176C003BE55345526035E54D90E0B8F0E54EA3AE
:10177C00F0AB4FAA50A95112072B90E0BAF074B8F5
:10178C002DF582E434E0AD82FCAB53AF4C1219184A
:10179C007555008F567F0A7E00121ADAE55724FF22
:0617AC0092AFAE55AF56EE
:0117B2002214
:10005600E4F531F532F535F53AF53BF53CF53DE598
:10006600AA5484600302063490E694E0FE90E69576
:10007600E0FBEEF53AEBF53BC39405E53A94004018
@@ -226,67 +224,67 @@
:1000B6004732045A3404A23504B93604D63703D578
:1000C6004503E647000005B475310075320790FC1C
:1000D600047481F0A37414F0E4A3F00205D77F0F33
:1000E600121DEA75310075320690FC047480F0E446
:1000E600120FDD75310075320690FC047480F0E461
:1000F600A3F0753505F511FE74002535F9EE34F4D7
:10010600FA7B01121831400690FC05740EF0E4FFEC
:10011600120E0C7F8F0202B37F0E121DEA7531009C
:10010600FA7B0112182D400690FC05740EF0E4FFF0
:10011600120DE47F8F0202B37F0E120FDD753100E0
:10012600753205748E12000E8F3D7B007A00793E83
:10013600E4FDFC1214D6E53D64516019E53D6450BA
:10013600E4FDFC1214D2E53D64516019E53D6450BE
:10014600601375310075320690FC047480F0A37458
:100156000BF00205D790E0B8E0FF120E0C740025F4
:1001660032F974FC3531FA7B01C0038B547555E0C6
:1001760075566A75570075582CD003121BE5742CFA
:100156000BF00205D790E0BCE0FF120DE474002519
:1001660032F974FC3531FA7B01C0038B537554E0C8
:1001760075556E75560075572CD003121BE1742CFD
:100186002532F532E43531F5317F8E0202B3753111
:100196000075320790FC047491F090E678E090FCCC
:1001A60005F030B4047F0180027F0090FC06EFF07A
:1001B60074002532F974FC3531FA7B0175550075EA
:1001C6005612E4FD121D9A74002532F974FC35317D
:1001D600FA7B01C0038B547555E075563975570087
:1001E600755806D003121BE574062532F532E43540
:1001B60074002532F974FC3531FA7B0175540075EB
:1001C6005512E4FD121D9674002532F974FC353182
:1001D600FA7B01C0038B537554E07555397556008B
:1001E600755706D003121BE174062532F532E43545
:1001F60031F531FE74002532F974FC3EFA7B01C0FC
:10020600038B547555E0755614755700755806D00E
:1002160003121BE574062532F532E43531F531FE5D
:1002260074002532F974FC3EFA7B01C0038B5475C9
:1002360055E0755647755700755806D003121BE5ED
:10020600038B537554E0755514755600755706D013
:1002160003121BE174062532F532E43531F531FE61
:1002260074002532F974FC3EFA7B01C0038B5375CA
:1002360054E075554B755600755706D003121BE1F1
:1002460074062532F532E43531F5310205D77F13D0
:10025600121DEA75310075321D749312000E8F3D22
:10025600120FDD75310075321D749312000E8F3D3D
:1002660075381D753900753600753705D3E539942F
:1002760018E538941D5034E53DB4510E7B007A00E4
:10028600793EAD39AC38FF1214D674002537F582A5
:10028600793EAD39AC38FF1214D274002537F582A9
:1002960074FC3536F583E53EF00539E5397002051F
:1002A600380537E53770C5053680C17F93121DEADC
:1002A600380537E53770C5053680C17F93120FDDF7
:1002B6000205D775310075320690FC047480F0E4AF
:1002C600A3F090F405E090E038F0E014702A30B026
:1002D6001E121E1C7554017555F475560675570089
:1002E6007558067B017AE07914121BE50205D79052
:1002D6001E121E187553017554F475550675560091
:1002E6007557067B017AE07914121BE10205D79057
:1002F600FC057401F00203C08056753100753206A4
:1003060090FC047480F0E4A3F0753507AF35FEC3A6
:10031600E53B9FF534E53A9EF53390E038E01470FE
:100326002F20B00330B42074002FF974F43EFA7B0A
:1003360001AF34AE33121A3D5004E40204B290FC0D
:1003360001AF34AE33121A395004E40204B290FC11
:1003460005740CF00205D790FC057402F00205D77F
:1003560090FC057403F00205D775310075320690DE
:10036600FC047480F0E4A3F090E038E014704530AB
:10037600B43A90E6017403F07F647E00121E0A9080
:10038600E0B8E0FF120E0C7EE07F6A7CE07DB912D9
:1003960017B77EE07FB9AD1CAC1B1218A950051229
:10037600B43A90E6017403F07F647E00121DEC909F
:10038600E0BCE0FF120DE47EE07F6E7CE07DBD12F6
:1003960017B37EE07FBDAD1CAC1B1218A55005122D
:1003A6000B48801690FC05740EF0800E90FC0574C8
:1003B6000DF0800690FC057403F0E490E038F0023E
:1003C60005D7E4F531F5327F02121B240205D7E486
:1003D600FF120E0C121126E4FF1219E4E4FF80024C
:1003E6007F01121B24121E1C0205D77531007532BF
:1003C60005D7E4F531F5327F02121B200205D7E48A
:1003D600FF120DE4120F0EE4FF1219E0E4FF800293
:1003E6007F01121B20121E180205D77531007532C7
:1003F6000690FC047480F0E4A3F090F405E0F53C6C
:10040600E4F511E53C64016004E53C703290E0B22D
:10040600E4F511E53C64016004E53C703290E0B629
:10041600E0FEA3E054F064607003EE6411600280B5
:100426007290E037E070028058E5116401600AE5D9
:1004360011700C121C8BEF6006853C110205D780EB
:1004360011700C121C87EF6006853C110205D780EF
:100446005275310075320690FC0474B2F0A3E511C2
:10045600F00205D775310075320690FC047480F001
:10046600E4A3F090F405E0F53CFF1219E4EF24F163
:10046600E4A3F090F405E0F53CFF1219E0EF24F167
:10047600600F1460152410701AE4F531F532020588
:10048600D790FC05740FF00205D790FC057410F0A8
:100496000205D790FC057401F00205D77531007589
:1004A600320690FC0474B5F090E0B7E090FC05F0DD
:1004A600320690FC0474B5F090E0BBE090FC05F0D9
:1004B6000205D775310075320690FC0474B6F0A2B9
:1004C60080E43325E0FFA281E4334FA3F00205D791
:1004D600853A31853B3290FC0474B7F0753505C317
@@ -294,11 +292,11 @@
:1004F600F582E434F4F583E0648870030205D7AF2F
:10050600357E0074002FF9EE34F4FA7B01C003C087
:100516000174002FF9EE34FC8B56F5578958853453
:1005260059D001D003121A940205D77531007532DD
:1005260059D001D003121A900205D77531007532E1
:100536000590FC0474A5F01200128F3D7B007A0032
:10054600793EE4FDFC1214D690E036E0FF0532E574
:10054600793EE4FDFC1214D290E036E0FF0532E578
:1005560032AC3170020531142400F58274FC3CF58E
:1005660083EFF090E0B8E0FF0532E532AC3170027F
:1005660083EFF090E0BCE0FF0532E532AC3170027B
:100576000531142400F58274FC3CF583EFF0053256
:10058600E532AE3170020531142400F58274FC3E6A
:10059600F583E53EF00532E532AE317002053114E1
@@ -314,66 +312,66 @@
:0106340022A3
:02004100D322C8
:0800030090E6BAE0F51DD322DE
:101ECD0090E740E51DF0E490E68AF090E68B04F093
:021EDD00D3220E
:101EC90090E740E51DF0E490E68AF090E68B04F097
:021ED900D32212
:08002B0090E6BAE0F51AD322B9
:101EDF0090E740E51AF0E490E68AF090E68B04F084
:021EEF00D322FC
:101DC20090E6B9E0242F600D04701990E604E0FF5C
:101DD200430780800890E604E0FF53077F0000007D
:071DE200EFF08002D322C3E1
:011DE90022D7
:101E3400C0E0C083C082D2015391EF90E65D74018B
:081E4400F0D082D083D0E0321F
:101E7B00C0E0C083C0825391EF90E65D7404F0D054
:061E8B0082D083D0E0329A
:101E9100C0E0C083C0825391EF90E65D7402F0D040
:061EA10082D083D0E03284
:101C1F00C0E0C083C08285120D85130E850E8285AC
:101C2F000D83A37402F085090F850A108510828534
:101C3F000F83A37407F05391EF90E65D7410F0D00B
:061C4F0082D083D0E032D8
:101E4C00C0E0C083C082D2035391EF90E65D74086A
:081E5C00F0D082D083D0E03207
:101BA800C0E0C083C08290E680E030E72085090D60
:101BB800850A0E850E82850D83A37402F085120FA7
:101BC800851310851082850F83A37407F05391EF56
:0D1BD80090E65D7420F0D082D083D0E03222
:101EBA00000102020303040405050300000000C038
:031ECA00C2000053
:06122500011100010800A8
:03000B000212B02E
:1012B000C0E0C0F0C083C082C0D075D000C000C004
:0D12C00001C002C003C004C005C006C00785
:1012CD0078217C007D007BFF7A1E79C47E007F052E
:1012DD0012070590E0B7E0F526C204752700E50872
:1012ED00600415088056750805E5117004C2048068
:1012FD0043A280308101B3500B3081047F008030D8
:10130D007F01802C30B41575560075570075582126
:10131D007559057B007A007921121A94E523540141
:10132D00F527701090E0B7E060047F0080027F0128
:0C133D008F26D204300405AF261219E4FC
:10134900D007D006D005D004D003D002D001D000F8
:0B135900D0D0D082D083D0F0D0E032A2
:100CDF0078577CE17D017BFF7A1E79C97E007F0406
:100CEF00120705C203C200D202C201121D70121EEA
:100CFF0064121614750B10750C00751410751512FF
:100D0F00750910750A1C75121075137085120F85F1
:100D1F0013107516107517B412001290E155EFF0FD
:100D2F007B017AE17956E4FDFC1214D690E156E08E
:100D3F00FF90E036F0E490E0B8F0EF64C26059EF56
:100D4F0064C06054E490E15BF090E15BE0FFC3941A
:100D5F0004504A74572FF582E434E1F583E0FF60C5
:100D6F003C120E0C7EE07F6A7CE07DB91217B77ED5
:100D7F00E07FB9AD1CAC1B1218A9501490E15BE0D9
:100D8F002457F582E434E1F583E090E0B8F0800D6C
:100D9F0090E15BE004F080B1E4FF120E0C1211261B
:100DAF00D2E843D82090E668E04409F090E65CE092
:100DBF00443DF012001290E155EFF07B017AE1799A
:100DCF0056E4FDFC1214D690E156E064C26007E4CD
:100DDF0090E0B7F0C2B57F01121B24D2AFD28C5373
:100DEF008EF8C203C2AF120056D2AF3001051209FE
:0D0DFF0020C2013003EEC203121D1980E76F
:101EDB0090E740E51AF0E490E68AF090E68B04F088
:021EEB00D32200
:101DBE0090E6B9E0242F600D04701990E604E0FF60
:101DCE00430780800890E604E0FF53077F00000081
:071DDE00EFF08002D322C3E5
:011DE50022DB
:101E3000C0E0C083C082D2015391EF90E65D74018F
:081E4000F0D082D083D0E03223
:101E7700C0E0C083C0825391EF90E65D7404F0D058
:061E870082D083D0E0329E
:101E8D00C0E0C083C0825391EF90E65D7402F0D044
:061E9D0082D083D0E03288
:101C1B00C0E0C083C08285120D85130E850E8285B0
:101C2B000D83A37402F085090F850A108510828538
:101C3B000F83A37407F05391EF90E65D7410F0D00F
:061C4B0082D083D0E032DC
:101E4800C0E0C083C082D2035391EF90E65D74086E
:081E5800F0D082D083D0E0320B
:101BA400C0E0C083C08290E680E030E72085090D64
:101BB400850A0E850E82850D83A37402F085120FAB
:101BC400851310851082850F83A37407F05391EF5A
:0D1BD40090E65D7420F0D082D083D0E03226
:101EB600000102020303040405050300000000C03C
:031EC600C2000057
:06122100011100010800AC
:03000B000212AC32
:1012AC00C0E0C0F0C083C082C0D075D000C000C008
:0D12BC0001C002C003C004C005C006C00789
:1012C90078217C007D007BFF7A1E79C07E007F0536
:1012D90012070590E0BBE0F526C204752700E50872
:1012E900600415088056750805E5117004C204806C
:1012F90043A280308101B3500B3081047F008030DC
:101309007F01802C30B4157556007557007558212A
:101319007559057B007A007921121A90E523540149
:10132900F527701090E0BBE060047F0080027F0128
:0C1339008F26D204300405AF261219E004
:10134500D007D006D005D004D003D002D001D000FC
:0B135500D0D0D082D083D0F0D0E032A6
:100CB700785B7CE17D017BFF7A1E79C57E007F042E
:100CC700120705C203C200D202C201121D6C121E16
:100CD70060121610750B10750C007514107515122F
:100CE700750910750A1C75121075137085120F851A
:100CF70013107516107517B412001290E159EFF022
:100D07007B017AE1795AE4FDFC1214D290E15AE0B2
:100D1700FF90E036F0E490E0BCF0EF64C26059EF7A
:100D270064C06054E490E15FF090E15FE0FFC3943A
:100D370004504A745B2FF582E434E1F583E0FF60E9
:100D47003C120DE47EE07F6E7CE07DBD1217B37E22
:100D5700E07FBDAD1CAC1B1218A5501490E15FE0FD
:100D6700245BF582E434E1F583E090E0BCF0800D8C
:100D770090E15FE004F080B1E4FF120DE4120F0E82
:100D8700D2E843D82090E668E04409F090E65CE0BA
:100D9700443DF012001290E159EFF07B017AE179BE
:100DA7005AE4FDFC1214D290E15AE064C26007E4F1
:100DB70090E0BBF0C2B57F01121B20D2AFD28C539B
:100DC7008EF8C203C2AF120056D2AF300105120926
:0D0DD70020C2013003EEC203121D1580E79B
:0B00460090E50DE030E402C322D3225D
:1009200090E6B9E070030209E5147003020A5A2444
:10093000FE7003020AD524FB70030209DF14700362
@@ -383,22 +381,22 @@
:1009700024067056E50B90E6B3F0E50C80421200B9
:10098000465044E51490E6B3F0E5158033E50D904C
:10099000E6B3F0E50E802985120F851310E50F9060
:1009A000E6B3F0E510801990E6BAE0FF121D45AA03
:1009A000E6B3F0E510801990E6BAE0FF121D41AA07
:1009B00006A9077B01EA494B600DEE90E6B3F0EF24
:1009C00090E6B4F0020B40020B2F020B2F121EDF39
:1009C00090E6B4F0020B40020B2F020B2F121EDB3D
:1009D000020B4012002B020B40120003020B4012CC
:1009E0001ECD020B4090E6B8E0247F60151460191C
:1009E0001EC9020B4090E6B8E0247F601514601920
:1009F00024027063A200E43325E0FFA202E4334F37
:100A00008041E490E740F0803F90E6BCE0547EFFF8
:100A10007E00E0D394807C0040047D0180027D0054
:100A2000EC4EFEED4F24BAF582741E3EF583E4933E
:100A2000EC4EFEED4F24B6F582741E3EF583E49342
:100A3000FF3395E0FEEF24A1FFEE34E68F82F583CD
:100A4000E0540190E740F0E4A3F090E68AF090E6ED
:100A50008B7402F0020B40020B2F90E6B8E024FEEC
:100A6000601624026003020B4090E6BAE0B4010570
:100A7000C200020B40020B2F90E6BAE0705590E6E0
:100A8000BCE0547EFF7E00E0D394807C0040047D77
:100A90000180027D00EC4EFEED4F24BAF582741EFB
:100A90000180027D00EC4EFEED4F24B6F582741EFF
:100AA0003EF583E493FF3395E0FEEF24A1FFEE349F
:100AB000E68F82F583E054FEF090E6BCE0548013AC
:100AC0001313541FFFE0540F2F90E683F0E04420EF
@@ -406,110 +404,110 @@
:100AE0004E90E6BAE0B40104D200805490E6BAE039
:100AF0006402604C803990E6BCE0547EFF7E00E0EA
:100B0000D394807C0040047D0180027D00EC4EFE89
:100B1000ED4F24BAF582741E3EF583E493FF3395BE
:100B1000ED4F24B6F582741E3EF583E493FF3395C2
:100B2000E0FEEF24A1FFEE34E68F82F583800D9086
:100B3000E6A08008121DC2500790E6A0E04401F034
:100B3000E6A08008121DBE500790E6A0E04401F038
:070B400090E6A0E04480F004
:010B4700228B
:03003300021EF6B4
:041EF60053D8EF329C
:10122B006080E0D5292E43C9A2D87C013D3654A15C
:10123B00ECF0061362A705F3C0C7738C98932BD9F8
:10124B00BC4C82CA1E9B573CFDD4E01667426F18FC
:10125B008A17E512BE4EC4D6DA9EDE49A0FBF58E88
:10126B00BB2FEE7AA968799115B2073F94C210890A
:10127B000B225F21807F5D9A5A903227353ECCE757
:10128B00BFF79703FF1930B348A5B5D1D75E922AA4
:10129B00AC56AAC64FB838D296A47DB676FC6BE294
:0412AB009C7404F13A
:081364008C448D45AB07AA067D
:10136C00E4F546F547C3E5479545E5446480F8E563
:10137C00466480984003021413E54725E0FFE546D8
:10138C0033FE74D52FF58274E03EF583E0FF7E00CA
:10139C00AC44AD451207B78C488D49E54725E0FFB5
:1013AC00E54633FE74D62FF58274E03EF583E0FFFC
:1013BC007E00AC44AD451207B78C4A8D4BE54965B0
:1013CC004B7004E548654A6030EB2549F582EA35F7
:1013DC0048F583E0F9EB254BF582EA354AF583E0D5
:1013EC00FFEB2549F582EA3548F583EFF0EB254B09
:1013FC00F582EA354AF583E9F00547E547600302D3
:0B140C00137105460213717E007F0182
:0114170022B2
:0C1418008E448F458C468D478A488B49D6
:10142400E54545446006E54745467004E4FEFF2271
:10143400E4F54AF54BC3E54B9549E5486480F8E586
:101444004A648098507BE4F54CF54DE547254BF50F
:1014540082E546354AF583E4F0C3E54D9549E54810
:101464006480F8E54C6480985049E54D254B24D5BB
:10147400F582E434E0F583E0FFE545254DF582E5AA
:1014840044354CF583E0FEEF8EF0A4FFE547254B91
:10149400F582E546354AF583E02FFFE547254BF510
:1014A40082E546354AF583EFF0054DE54D70AA0512
:1014B4004C80A6054BE54B6003021439054A02141F
:0514C400397E007F01EC
:0114C9002200
:101CEB0012072BFF90000312074412077190000399
:101CFB00EF120783900002120744FF9000011207B6
:0E1D0B0044900002120783900001EF0207834C
:080F36008E448F458C468D4767
:100F3E00E4F548F549E547AE467802CEA2E713CE72
:100F4E0013D8F8FFC3E5499FEE6480F8E548648046
:100F5E00984003020FF8E549AE487802C333CE330A
:100F6E00CED8F92545FFEE3544FAA9077B018B4A09
:100F7E00F54B894C74D62549F582E434E0F583E0CF
:100F8E00541FFFE48F50F54FF54EF54D121CEBAB91
:100F9E004AAA4BA94C120813C374209550F9F812A3
:100FAE000800C004C005C006C007A94C120813A94A
:100FBE0050A8011207EDD003D002D001D000EF4BA4
:100FCE00FFEE4AFEED49FDEC48FCAB4AAA4BA94C9C
:100FDE00120833AB4AAA4BA94C121CEB0549E54942
:0E0FEE006003020F430548020F437E007F019F
:010FFC0022D2
:101C5500D3ED9410EC64809480402AED1D70011C36
:101C6500142FF582EE3CF583E0FB547F24D5F582F5
:101C7500E434E0F583E0F9540F2FF582E43EF58373
:051C8500E06BF080CBD4
:011C8A002237
:101D190090E682E030E004E020E60B90E682E030D5
:101D2900E119E030E71590E680E04401F07F147E88
:0C1D390000121ADE90E680E054FEF0225A
:101CBC0030060990E680E0440AF0800790E680E068
:101CCC004408F07FDC7E05121ADE90E65D74FFF0AE
:0F1CDC0090E65FF05391EF90E680E054F7F0222E
:101ADE008E588F5990E600E054187012E559240183
:101AEE00FFE43558C313F558EF13F559801590E6FA
:101AFE0000E05418FFBF100BE55925E0F559E558E5
:101B0E0033F558E5591559AE58700215584E600503
:061B1E00121F1880EE22E8
:06156F008C528D53AE0703
:10157500EB70037F012290E678E020E6F990E678AB
:101585007480F0EE25E0440190E679F090E678E08D
:1015950030E0F990E678E020E26BE030E167BB01EE
:1015A5000790E678E04420F090E679E0F5541BEBEF
:1015B500603090E678E030E0F990E678E020E245AA
:1015C500BB010790E678E04420F090E679E0FF055E
:1015D50053E553AC527002055214F5828C83EFF03B
:1015E50080CC90E678E030E0F990E678E020E215EE
:1015F50090E678E04440F090E679E08553828552A4
:0E16050083F07F012290E678E04440F07F0001
:0116130022B4
:10191C0090E678E020E6F990E6787480F0EF25E028
:10192C0090E679F090E678E030E0F990E678E02007
:10193C00E23AE030E136EBD3940040260DEDAE04F4
:10194C0070010C14F5828E83E090E679F01B90E622
:10195C0078E030E0F990E678E020E210E020E1D683
:10196C00800A90E678E04440F07F012290E678E02F
:05197C004440F07F0073
:011981002243
:021D4500A907EC
:101D4700AE16AF178F828E83A3E064037017AD01C1
:101D570019ED7001228F828E83E07C002FFDEC3E0F
:081D6700FEAF0580DFE4FEFF82
:011D6F002251
:101F18007400F58690FDA57C05A3E582458370F9DC
:011F28002296
:030000000216A83D
:0C16A800787FE4F6D8FD75815B0216EF38
:03003300020FFCBD
:040FFC0053D8EF32A5
:101227006080E0D9292E43C9A2D87C013D3654A15C
:10123700ECF0061362A705F3C0C7738C98932BD9FC
:10124700BC4C82CA1E9B573CFDD4E01667426F1800
:101257008A17E512BE4EC4D6DA9EDE49A0FBF58E8C
:10126700BB2FEE7AA968799115B2073F94C210890E
:101277000B225F21807F5D9A5A903227353ECCE75B
:10128700BFF79703FF1930B348A5B5D1D75E922AA8
:10129700AC56AAC64FB838D296A47DB676FC6BE298
:0412A7009C7404F13E
:081360008C448D45AB07AA0681
:10136800E4F546F547C3E5479545E5446480F8E567
:1013780046648098400302140FE54725E0FFE546E0
:1013880033FE74D92FF58274E03EF583E0FF7E00CA
:10139800AC44AD451207B78C488D49E54725E0FFB9
:1013A800E54633FE74DA2FF58274E03EF583E0FFFC
:1013B8007E00AC44AD451207B78C4A8D4BE54965B4
:1013C8004B7004E548654A6030EB2549F582EA35FB
:1013D80048F583E0F9EB254BF582EA354AF583E0D9
:1013E800FFEB2549F582EA3548F583EFF0EB254B0D
:1013F800F582EA354AF583E9F00547E547600302D7
:0B140800136D054602136D7E007F018E
:0114130022B6
:0C1414008E448F458C468D478A488B49DA
:10142000E54545446006E54745467004E4FEFF2275
:10143000E4F54AF54BC3E54B9549E5486480F8E58A
:101440004A648098507BE4F54CF54DE547254BF513
:1014500082E546354AF583E4F0C3E54D9549E54814
:101460006480F8E54C6480985049E54D254B24D9BB
:10147000F582E434E0F583E0FFE545254DF582E5AE
:1014800044354CF583E0FEEF8EF0A4FFE547254B95
:10149000F582E546354AF583E02FFFE547254BF514
:1014A00082E546354AF583EFF0054DE54D70AA0516
:1014B0004C80A6054BE54B6003021435054A021427
:0514C000357E007F01F4
:0114C5002204
:101CE70012072BFF9000031207441207719000039D
:101CF700EF120783900002120744FF9000011207BA
:0E1D070044900002120783900001EF02078350
:081126008E448F458C468D4775
:10112E00E4F548F549E547AE467802CEA2E713CE80
:10113E0013D8F8FFC3E5499FEE6480F8E548648054
:10114E009840030211E8E549AE487802C333CE3326
:10115E00CED8F92545FFEE3544FAA9077B018B4A17
:10116E00F54B894C74DA2549F582E434E0F583E0D9
:10117E00541FFFE48F50F54FF54EF54D121CE7ABA3
:10118E004AAA4BA94C120813C374209550F9F812B1
:10119E000800C004C005C006C007A94C120813A958
:1011AE0050A8011207EDD003D002D001D000EF4BB2
:1011BE00FFEE4AFEED49FDEC48FCAB4AAA4BA94CAA
:1011CE00120833AB4AAA4BA94C121CE70549E54954
:0E11DE00600302113305480211337E007F01C9
:0111EC0022E0
:101C5100D3ED9410EC64809480402AED1D70011C3A
:101C6100142FF582EE3CF583E0FB547F24D9F582F5
:101C7100E434E0F583E0F9540F2FF582E43EF58377
:051C8100E06BF080CBD8
:011C8600223B
:101D150090E682E030E004E020E60B90E682E030D9
:101D2500E119E030E71590E680E04401F07F147E8C
:0C1D350000121ADA90E680E054FEF02262
:101CB80030060990E680E0440AF0800790E680E06C
:101CC8004408F07FDC7E05121ADA90E65D74FFF0B6
:0F1CD80090E65FF05391EF90E680E054F7F02232
:101ADA008E588F5990E600E054187012E559240187
:101AEA00FFE43558C313F558EF13F559801590E6FE
:101AFA0000E05418FFBF100BE55925E0F559E558E9
:101B0A0033F558E5591559AE58700215584E600507
:061B1A00121EED80EE2218
:06156B008C528D53AE0707
:10157100EB70037F012290E678E020E6F990E678AF
:101581007480F0EE25E0440190E679F090E678E091
:1015910030E0F990E678E020E26BE030E167BB01F2
:1015A1000790E678E04420F090E679E0F5541BEBF3
:1015B100603090E678E030E0F990E678E020E245AE
:1015C100BB010790E678E04420F090E679E0FF0562
:1015D10053E553AC527002055214F5828C83EFF03F
:1015E10080CC90E678E030E0F990E678E020E215F2
:1015F10090E678E04440F090E679E08553828552A8
:0E16010083F07F012290E678E04440F07F0005
:01160F0022B8
:1019180090E678E020E6F990E6787480F0EF25E02C
:1019280090E679F090E678E030E0F990E678E0200B
:10193800E23AE030E136EBD3940040260DEDAE04F8
:1019480070010C14F5828E83E090E679F01B90E626
:1019580078E030E0F990E678E020E210E020E1D687
:10196800800A90E678E04440F07F012290E678E033
:051978004440F07F0077
:01197D002247
:021D4100A907F0
:101D4300AE16AF178F828E83A3E064037017AD01C5
:101D530019ED7001228F828E83E07C002FFDEC3E13
:081D6300FEAF0580DFE4FEFF86
:011D6B002255
:101EED007400F58690FDA57C05A3E582458370F908
:011EFD0022C2
:030000000216A441
:0C16A400787FE4F6D8FD75815B0216EB40
:10063500E709F608DFFA8046E709F208DFFA803EA7
:1006450088828C83E709F0A3DFFA8032E309F60894
:10065500DFFA8078E309F208DFFA807088828C83FC
@@ -554,15 +552,15 @@
:10085900D083D082F8E4937012740193700DA3A32E
:1008690093F8740193F5828883E473740293686042
:06087900EFA3A3A380DF42
:1016B400020CDFE493A3F8E493A34003F68001F261
:1016C40008DFF48029E493A3F85407240CC8C33337
:1016D400C4540F4420C8834004F456800146F6DF06
:1016E400E4800B01020408102040809011F5E47E90
:1016F400019360BCA3FF543F30E509541FFEE493FB
:10170400A360010ECF54C025E060A840B8E493A3C1
:10171400FAE493A3F8E493A3C8C582C8CAC583CAEC
:10172400F0A3C8C582C8CAC583CADFE9DEE780BEA4
:0112AF00003E
:1016B000020CB7E493A3F8E493A34003F68001F28D
:1016C00008DFF48029E493A3F85407240CC8C3333B
:1016D000C4540F4420C8834004F456800146F6DF0A
:1016E000E4800B01020408102040809011EDE47E9C
:1016F000019360BCA3FF543F30E509541FFEE493FF
:10170000A360010ECF54C025E060A840B8E493A3C5
:10171000FAE493A3F8E493A3C8C582C8CAC583CAF0
:10172000F0A3C8C582C8CAC583CADFE9DEE780BEA8
:0112AB000042
:10087F00BC000BBE0029EF8DF084FFADF022E4CC5D
:10088F00F875F008EF2FFFEE33FEEC33FCEE9DEC26
:10089F00984005FCEE9DFE0FD5F0E9E4CEFD22ED6C
@@ -576,3 +574,4 @@
:0C090800ECF608EDF608EEF608EFF6221B
:0C091400ECF208EDF208EEF208EFF2221F
:00000001FF


View File

@@ -1,421 +0,0 @@
#
# $Id: USB_RECOV.hex 9760 2011-09-05 12:33:27Z dima $
#
:03004300021600A2
:0300530002160092
:10160000021580000215C6000215B00002159800F0
:081610000213F20002137B003B
:100A00001201000200000040AAAAAAAAAAAA010292
:100A100003010A060002000000400100090237003D
:100A2000020100C0000904000002FFFFFF040705E7
:100A3000020200020007058602000200090401000C
:100A400002FFFFFF050705040200020007058802F8
:100A5000000200001201000200000040E4E4511115
:100A60000000010203010A0600020000004001002C
:100A700009023700020100C0320904000002FFFF32
:100A8000FF0407050202400000070586024000003F
:100A90000904010002FFFFFF0507050402400000F2
:100AA000070588024000000604001600140012002A
:100AB0000A00260004030904160358006F007200A0
:100AC00063006F006D0020004C00540044001403CC
:100AD00041007300740072006900620061006E00E2
:100AE0006B001203530065007200690061006C0026
:100AF0004E006F000A0346005000470041002603E5
:100B00004D0061006E00610067006D0065006E00C1
:100B10007400500072006F00630065007300730082
:060B20006F0072000000EE
:08164300584F52434F4D2000A7
:100E650041E0B20042E0AD0000021BE0810218E063
:100E75007543E0AF0000004CE036393734364D207D
:060E8500202020202000C7
:101517008B2A8A2B892CE52F152FAE2E7002152EBC
:101527004E6014AB2A052CE52CAA2B7002052B1450
:08153700F9ED12019280DF22A0
:1013B8008B328A338934E5391539AE3870021538DD
:1013C8004E6026AB350537E537AA36700205361468
:1013D800F912014CFFAB320534E534AA337002052B
:0A13E8003314F9EF12019280CD22B8
:1011FD008C2A8D2BAA06A9077535018A3689377574
:10120D00380075391C7B017AE079481213B890E0EB
:10121D0060E0FCA3E0FDA3E0FEA3E064D1FFEE647B
:10122D008DFEED644CFDEC6449FC90E06012026EA5
:10123D007EE07F487D1C7C00120CFF7EE07F487BAA
:10124D001C7A00AD2BAC2A120DB37D1C7C00AF2B8C
:10125D00AE2A120C387D1C7C00AF2BAE2A0214284E
:08099F008E2A8F2B8C2C8D2D6C
:1009A700C204121567BF5004D204803BE4F52EF54C
:1009B7002FE52D252FF582E52C352EF583E0FFE574
:1009C7002B252FF582E52A352EF583E0B5070E0591
:1009D7002FE52F7002052E6410452E70D4E52F6485
:0909E70010452E7002D204A20496
:0109F00022E4
:020875008F32C0
:100877001215678F33E4F537F538AD38AC37120FFB
:100887001474652538F582E434E0F583E534F00522
:1008970038E53870020537C39408E53764809480DB
:1008A70040D8E532600490E065F090E065E0B4C0C0
:1008B70008753500753608800675351D7536367529
:1008C7003700753808C3E5389410E537648094809D
:1008D7005023120F1074652538F582E434E0F58350
:1008E700E534F00538E538700205370536E536702A
:1008F700D4053580D07534FF75351D7536197537B4
:1009070000753810C3E538942CE53764809480501F
:1009170033E533B4510E7B007A007934AD36AC350C
:10092700FF120F1C74652538F582E434E0F583E582
:1009370034F00538E538700205370536E53670C4FA
:10094700053580C075351D75363EE4F534F537F548
:1009570038C3E5389406E53764809480502FE53333
:10096700B4510A90E065E0B4C203120F1074422537
:1009770038F582E434E0F583E534F00538E538707E
:100987000205370536E53670C8053580C490E06541
:07099700E0B4C20374C0F0DC
:01099E002236
:0A12D3008E2A8F2B8B2C8A2D892E7A
:1012DD007E00E52B2DF533EE352AF5321215678F8D
:1012ED002FE52F6451600BC3E52B9410E52A940074
:1012FD005035852A30852B31C3E5319533E5309551
:10130D00325024AB2CAA2DA92EAD31AC30AF2F12FB
:10131D00117A0531E531700205307401252EF52E57
:07132D00E4352DF52D80D100
:011334002296
:020B26008F320C
:100B28007F031214ECEF2402FFE43EA9077533019A
:100B3800F534893578367C007D007BFF7A16794359
:100B48007E007F08120126E532600464017054E5D6
:100B58000C2408F582E4350BF58374B4F0E50C2415
:100B680009F582E4350BF5837404F0E50C240AF5E5
:100B780082E4350BF5837413F0E50C240BF582E45D
:100B8800350BF5837486F0E50C240CF582E4350BFF
:100B9800F583E4F0E50C240DF582E4350BF583E4E8
:100BA800F0806C90E066E0FFE50C2408F582E435FF
:100BB8000BF583EFF090E067E0FFE50C2409F58280
:100BC800E4350BF583EFF090E068E0FFE50C240ACC
:100BD800F582E4350BF583EFF090E069E0FFE50C72
:100BE800240BF582E4350BF583EFF090E06AE0FF23
:100BF800E50C240CF582E4350BF583EFF090E06BFF
:100C0800E0FFE50C240DF582E4350BF583EFF0E405
:100C1800FF74362FF8E6FEAB33AA34A93575F00217
:0F0C2800EFA4F58285F083EE1201A40FBF08E25E
:010C3700229A
:10145E00E4F532E50C240BF582E4350BF583E0FE62
:10146E00E50C240AF582E4350BF583E0FDEDFF90E3
:10147E00E0ADEEF0A3EFF0D20412000390E680E0B0
:03148E0054F7F020
:011491002238
:10105A0090E600E054E74410F090E60174C0F09086
:10106A00E6107420F000000090E611F000000090F5
:10107A00E6047480F0000000740FF0000000E4F051
:10108A0000000090E6187410F0000000E490E619E1
:10109A00F000000090E61A7408F0000000E490E600
:1010AA001BF000000090E6497482F0000000F00096
:1010BA00000090E6247402F0000000E490E625F0B7
:1010CA0000000090E6957480F0000000F000000037
:1010DA0043AF017B017AE07914752E00752F06E47F
:0410EA00FD021517D7
:1015DC007C007D181201C6EF1FAC0670011E4C700A
:0215EC00F622E5
:1015670090E678E0541824F06008240870087F504B
:0815770080067F518002E4FFB1
:01157F002249
:0C0F1000AD36AC357B007A007934AF338D
:0C0F1C008F398C3A8D3B8B3C8A3D893E1E
:100F2800E4F53FF540754103FDF542F543A2AF33C3
:100F3800F544E53924AF600D047012753F00754023
:100F4800017D018008753F00754002E4FDE53960C8
:100F580051E540453F604BE53A90E0AFF0E53BA3F3
:100F6800F074AF2DF582E434E0AD82FCAB40AF39CC
:100F780012126D7542008F437F0A7E00121335E509
:100F880043454260107CE07D647B01AF39120FB5A8
:100F98007542008F4390E064E0AB3CAA3DA93E1245
:0C0FA8000192E54424FF92AFAE42AF433B
:010FB400221A
:0C117A008F348C358D368B378A388939DC
:10118600E4F53AF53B753C03FDF53DF53EA2AF337C
:10119600F53FE53424AF600D047012753A00753BD7
:1011A600027D018008753A00753B03E4FDE5346075
:1011B6003BE53B453A6035E53590E0AFF0E536A3D3
:1011C600F0AB37AA38A93912014C90E0B1F074AFF0
:1011D6002DF582E434E0AD82FCAB3BAF3412126DE8
:1011E600753D008F3E7F0A7E00121335E53F24FFD2
:0611F60092AFAE3DAF3EDA
:0111FC0022D0
:10054300E4F52AF52BF52CF52DF52EF52FF530E5F1
:10055300AA5484600302071190E694E0FE90E695A6
:10056300E0FBEEF52DEBF52EC39405E52D9400404D
:100573000790F404E0FD80027DFFED24F570030293
:10058300062524E6700302064F24E0700302062CBE
:1005930024FE7003020649243960030206B3752A58
:1005A30000752B0590FC04748EF01215678F30E5EF
:1005B3003064516019E53064506013752A00752B5F
:1005C3000690FC047480F0A3740BF00206D6121597
:1005D300678F307B007A007931E4FDFC120F1CAF8A
:1005E300311208757400252BF974FC352AFA7B0146
:1005F300C0038B357536E075376575380075392C52
:10060300D0031213B87400252BF58274FC352AF538
:1006130083E531F0742C252BF52BE4352AF52A02DA
:1006230006D6E4F52AF52B801D1215678F307B0063
:100633007A007931E4FDFC120F1CAF311208757F8B
:10064300C0120B26800012145E0206D6752A0075AE
:100653002B0590FC0474A5F01215678F307B007A8C
:10066300007931E4FDFC120F1C052BE52BAE2A703B
:1006730002052A142400F58274FC3EF583E508F094
:10068300052BE52BAE2A7002052A142400F582748B
:10069300FC3EF583E515F0052BE52BAE2A7002052C
:1006A3002A142400F58274FC3EF583E531F080239F
:1006B300752A00752B0690FC047480F0C3E52E9414
:1006C30005E52D94005006A37407F0800690FC0501
:1006D3007406F0E52B452A602CE52BFD90FC00F019
:1006E300E52AFFA3F090F402E090FC02F090F403FB
:1006F300E090FC03F090E69CEFF000000090E69D94
:0E070300EDF000000090E6957480F00000001C
:0107110022C5
:02004100D322C8
:0800460090E6BAE0F51DD3229B
:1015EE0090E740E51DF0E490E68AF090E68B04F07B
:0215FE00D322F6
:08163B0090E6BAE0F51AD32293
:1016180090E740E51AF0E490E68AF090E68B04F053
:02162800D322CB
:10153F0090E6B9E0242F600D04701990E604E0FFE7
:10154F00430780800890E604E0FF53077F00000008
:07155F00EFF08002D322C36C
:011566002262
:10158000C0E0C083C082D2015391EF90E65D740148
:08159000F0D082D083D0E032DC
:1015B000C0E0C083C0825391EF90E65D7404F0D028
:0615C00082D083D0E0326E
:1015C600C0E0C083C0825391EF90E65D7402F0D014
:0615D60082D083D0E03258
:1013F200C0E0C083C08285110D85120E850E8285E4
:101402000D83A37402F085090F850A108510828569
:101412000F83A37407F05391EF90E65D7410F0D040
:0614220082D083D0E0320D
:10159800C0E0C083C082D2035391EF90E65D740827
:0815A800F0D082D083D0E032C4
:10137B00C0E0C083C08290E680E030E72085090D95
:10138B00850A0E850E82850D83A37402F085110FDD
:10139B00851210851082850F83A37407F05391EF8C
:0D13AB0090E65D7420F0D082D083D0E03257
:0E09F10000010202030304040505C0C2000059
:1007120078237C007D007BFF7A0979FB7E007F04D1
:10072200120126C203C200D202C20112105A750B74
:100732000A750C0075130A75141275090A750A1CDC
:1007420075110A75127085110F85121075160A75CA
:1007520017B41215678F217B007A007922E4FDFC21
:10076200120F1C852208E4F515F52774232527F8B6
:10077200E6FF605C1208757EE07F657CE07DB31267
:1007820011FD7EE07FB3AD1CAC1B12099F50387483
:10079200232527F8E6F515652260277B007A007984
:1007A200157D01E4FFFE1212D37B007A007922E468
:1007B200FDFCAF21120F1CE52265156013751501B2
:1007C200800E7515FF80090527E527C39404409B19
:1007D200E5157059FB7A0079227D01FCAF21120FD9
:1007E2001CE522752900F5287B007A0079227D021A
:1007F2007C00AF21120F1CE5224229E52964E47036
:1008020004E52864E470267515C0FB7A0079157D2D
:1008120001FFFE1212D37B007A007922E4FDFCAFC5
:1008220021120F1CE52265156003751501AF151223
:100832000B26D2E843D82090E668E04409F090E61F
:100842005CE0443DF0E51564C06005E515B4C20303
:1008520012145ED2AF538EF8C203C2AF120543D256
:10086200AF30010512031BC2013003EEC2031214A2
:03087200C080E75C
:0B00360090E50DE030E402C322D3226D
:10031B0090E6B9E070030203E01470030204552465
:10032B00FE70030204D024FB70030203DA14700383
:10033B000203D41470030203C81470030203CE2407
:10034B0005600302052F120041400302053B90E6B6
:10035B00BBE024FE602714603E24FD60111460276F
:10036B0024067056E50B90E6B3F0E50C80421200C4
:10037B00365044E51390E6B3F0E5148033E50D9069
:10038B00E6B3F0E50E802985110F851210E50F906D
:10039B00E6B3F0E510801990E6BAE0FF1214ECAA70
:1003AB0006A9077B01EA494B600DEE90E6B3F0EF2F
:1003BB0090E6B4F002053B02052A02052A12161834
:1003CB0002053B12163B02053B12004602053B128F
:1003DB0015EE02053B90E6B8E0247F60151460191A
:1003EB0024027063A200E43325E0FFA202E4334F42
:1003FB008041E490E740F0803F90E6BCE0547EFF04
:10040B007E00E0D394807C0040047D0180027D005F
:10041B00EC4EFEED4F24F1F58274093EF583E49327
:10042B00FF3395E0FEEF24A1FFEE34E68F82F583D8
:10043B00E0540190E740F0E4A3F090E68AF090E6F8
:10044B008B7402F002053B02052A90E6B8E024FE0D
:10045B0060162402600302053B90E6BAE0B4010586
:10046B00C20002053B02052A90E6BAE0705590E601
:10047B00BCE0547EFF7E00E0D394807C0040047D82
:10048B000180027D00EC4EFEED4F24F1F5827409E4
:10049B003EF583E493FF3395E0FEEF24A1FFEE34AA
:1004AB00E68F82F583E054FEF090E6BCE0548013B7
:1004BB001313541FFFE0540F2F90E683F0E04420FA
:1004CB00F0806D805A90E6B8E024FE60192402702B
:1004DB004E90E6BAE0B40104D200805490E6BAE044
:1004EB006402604C803990E6BCE0547EFF7E00E0F5
:1004FB00D394807C0040047D0180027D00EC4EFE95
:10050B00ED4F24F1F58274093EF583E493FF3395A7
:10051B00E0FEEF24A1FFEE34E68F82F583800D9091
:10052B00E6A0800812153F500790E6A0E04401F0CA
:07053B0090E6A0E04480F00F
:010542002296
:0300330002004E7A
:04004E0053D8EF3262
:100E8B006080E0CF292E43C9A2D87C013D3654A106
:100E9B00ECF0061362A705F3C0C7738C98932BD99C
:100EAB00BC4C82CA1E9B573CFDD4E01667426F18A0
:100EBB008A17E512BE4EC4D6DA9EDE49A0FBF58E2C
:100ECB00BB2FEE7AA968799115B2073F94C21089AE
:100EDB000B225F21807F5D9A5A903227353ECCE7FB
:100EEB00BFF79703FF1930B348A5B5D1D75E922A48
:100EFB00AC56AAC64FB838D296A47DB676FC6BE238
:040F0B009C7404F1DD
:080CFF008C2C8D2DAB07AA0619
:100D0700E4F52EF52FC3E52F952DE52C6480F8E546
:100D17002E6480984003020DAEE52F25E0FFE52EF7
:100D270033FE74CF2FF58274E03EF583E0FF7E003B
:100D3700AC2CAD2D1201D88C308D31E52F25E0FF7D
:100D4700E52E33FE74D02FF58274E03EF583E0FF85
:100D57007E00AC2CAD2D1201D88C328D33E5316578
:100D6700337004E53065326030EB2531F582EA35C2
:100D770030F583E0F9EB2533F582EA3532F583E088
:100D8700FFEB2531F582EA3530F583EFF0EB2533BC
:100D9700F582EA3532F583E9F0052FE52F60030286
:0B0DA7000D0C052E020D0C7E007F01DC
:010DB200221E
:0C0DB3008E2C8F2D8C2E8D2F8A308B31D2
:100DBF00E52D452C6006E52F452E7004E4FEFF223D
:100DCF00E4F532F533C3E5339531E5306480F8E56A
:100DDF0032648098507BE4F534F535E52F2533F5F3
:100DEF0082E52E3532F583E4F0C3E5359531E530F4
:100DFF006480F8E5346480985049E535253324CF75
:100E0F00F582E434E0F583E0FFE52D2535F582E545
:100E1F002C3534F583E0FEEF8EF0A4FFE52F25335C
:100E2F00F582E52E3532F583E02FFFE52F2533F5DB
:100E3F0082E52E3532F583EFF00535E53570AA05DD
:100E4F003480A60533E5336003020DD40532020D5D
:050E5F00D47E007F01BC
:010E6400226B
:1014920012014CFF900003120165120192900003A9
:1014A200EF1201A4900002120165FF9000011201E7
:0E14B200659000021201A4900001EF0201A457
:080C38008E2C8F2D8C2E8D2FC8
:100C4000E4F530F531E52FAE2E7802CEA2E713CED3
:100C500013D8F8FFC3E5319FEE6480F8E530648077
:100C6000984003020CFAE531AE307802C333CE333C
:100C7000CED8F9252DFFEE352CFAA9077B018B3252
:100C8000F533893474D02531F582E434E0F583E01E
:100C9000541FFFE48F38F537F536F535121492AB53
:100CA00032AA33A934120234C374209538F9F812E9
:100CB0000221C004C005C006C007A934120234A92D
:100CC00038A80112020ED003D002D001D000EF4BA1
:100CD000FFEE4AFEED49FDEC48FCAB32AA33A934E5
:100CE000120254AB32AA33A9341214920531E53101
:0E0CF0006003020C450530020C457E007F01BA
:010CFE0022D3
:10142800D3ED9410EC64809480402AED1D70011C6B
:10143800142FF582EE3CF583E0FB547F24CFF58230
:10144800E434E0F583E0F9540F2FF582E43EF583A8
:05145800E06BF080CB09
:01145D00226C
:1014C00090E682E030E004E020E60B90E682E03037
:1014D000E119E030E71590E680E04401F07F147EEA
:0C14E0000012133590E680E054FEF0226C
:1000030030040990E680E0440AF0800790E680E03F
:100013004408F07FDC7E0512133590E65D74FFF033
:0F00230090E65FF05391EF90E680E054F7F02203
:101335008E458F4690E600E054187012E54624016C
:10134500FFE43545C313F545EF13F546801590E6E3
:1013550000E05418FFBF100BE54625E0F546E545CE
:1013650033F545E5461546AE45700215454E600513
:0613750012162A80EE2290
:060FB5008C458D46AE07DD
:100FBB00EB70037F012290E678E020E6F990E6786B
:100FCB007480F0EE25E0440190E679F090E678E04D
:100FDB0030E0F990E678E020E26BE030E167BB01AE
:100FEB000790E678E04420F090E679E0F5471BEBBC
:100FFB00603090E678E030E0F990E678E020E2456A
:10100B00BB010790E678E04420F090E679E0FF051D
:10101B0046E546AC457002054514F5828C83EFF02E
:10102B0080CC90E678E030E0F990E678E020E215AD
:10103B0090E678E04440F090E679E085468285457D
:0E104B0083F07F012290E678E04440F07F00C1
:011059002274
:10126D0090E678E020E6F990E6787480F0EF25E0DE
:10127D0090E679F090E678E030E0F990E678E020BD
:10128D00E23AE030E136EBD3940040260DEDAE04AA
:10129D0070010C14F5828E83E090E679F01B90E6D8
:1012AD0078E030E0F990E678E020E210E020E1D639
:1012BD00800A90E678E04440F07F012290E678E0E5
:0512CD004440F07F0029
:0112D20022F9
:0214EC00A9074E
:1014EE00AE16AF178F828E83A3E064037017AD0123
:1014FE0019ED7001228F828E83E07C002FFDEC3E71
:08150E00FEAF0580DFE4FEFFE3
:0115160022B2
:10162A007400F58690FDA57C05A3E582458370F9D3
:01163A00228D
:030000000210EEFD
:0C10EE00787FE4F6D8FD758147021135CB
:10005600E709F608DFFA8046E709F208DFFA803E8C
:1000660088828C83E709F0A3DFFA8032E309F60879
:10007600DFFA8078E309F208DFFA807088828C83E1
:10008600E309F0A3DFFA806489828A83E0A3F60895
:10009600DFFA805889828A83E0A3F208DFFA804C6F
:1000A60080D280FA80C680D4806980F28033801046
:1000B60080A680EA809A80A880DA80E280CA8033AF
:1000C60089828A83ECFAE493A3C8C582C8CCC58327
:1000D600CCF0A3C8C582C8CCC583CCDFE9DEE780F7
:1000E6000D89828A83E493A3F608DFF9ECFAA9F076
:1000F600EDFB2289828A83ECFAE0A3C8C582C8CCCC
:10010600C583CCF0A3C8C582C8CCC583CCDFEADEE4
:10011600E880DB89828A83E493A3F208DFF980CC46
:1001260088F0EF60010E4E60C388F0ED2402B4043F
:100136000050B9F582EB2402B4040050AF232345E6
:0601460082239000A67365
:10014C00BB010689828A83E0225002E722BBFE02B1
:09015C00E32289828A83E49322E4
:10016500BB010CE58229F582E5833AF583E022504F
:1001750006E92582F8E622BBFE06E92582F8E22299
:0D018500E58229F582E5833AF583E49322B3
:10019200BB010689828A83F0225002F722BBFE014C
:0201A200F32246
:1001A400F8BB010DE58229F582E5833AF583E8F091
:1001B400225006E92582C8F622BBFE05E92582C83D
:0201C400F22225
:1001C600EF8DF0A4A8F0CF8CF0A428CE8DF0A42E4D
:0201D600FE2207
:1001D800C2D5EC30E709B2D5E4C39DFDE49CFCEE42
:1001E80030E715B2D5E4C39FFFE49EFE12027AC33E
:1001F800E49DFDE49CFC800312027A30D507C3E439
:060208009FFFE49EFE22B0
:10020E00E8600FECC313FCED13FDEE13FEEF13FFCE
:03021E00D8F122F2
:10022100E8600FEFC333FFEE33FEED33FDEC33FC3B
:03023100D8F122DF
:10023400BB010789828A830202DB5005E9F80202C6
:10024400CFBBFE05E9F80202E789828A830202F342
:10025400BB010789828A8302026E5005E9F8020312
:0A02640003BBFE05E9F802030F22B8
:0C026E00ECF0A3EDF0A3EEF0A3EFF02203
:1010FA00020712E493A3F8E493A34003F68001F2F3
:10110A0008DFF48029E493A3F85407240CC8C333F6
:10111A00C4540F4420C8834004F456800146F6DFC5
:10112A00E4800B0102040810204080900E65E47EE2
:10113A00019360BCA3FF543F30E509541FFEE493BA
:10114A00A360010ECF54C025E060A840B8E493A381
:10115A00FAE493A3F8E493A3C8C582C8CAC583CAAC
:10116A00F0A3C8C582C8CAC583CADFE9DEE780BE64
:010F0F0000E1
:10027A00BC000BBE0029EF8DF084FFADF022E4CC68
:10028A00F875F008EF2FFFEE33FEEC33FCEE9DEC31
:10029A00984005FCEE9DFE0FD5F0E9E4CEFD22ED77
:1002AA00F8F5F0EE8420D21CFEADF075F008EF2FC1
:1002BA00FFED33FD4007985006D5F0F222C398FDB2
:0502CA000FD5F0EA224F
:0C02CF00E6FC08E6FD08E6FE08E6FF225B
:0C02DB00E0FCA3E0FDA3E0FEA3E0FF2296
:0C02E700E2FC08E2FD08E2FE08E2FF2253
:1002F300E493FC740193FD740293FE740393FF2251
:0C030300ECF608EDF608EEF608EFF62226
:0C030F00ECF208EDF208EEF208EFF2222A
:00000001FF

View File

@@ -811,29 +811,6 @@ static int xbus_echocancel(xbus_t *xbus, int on)
return 0;
}
static void xbus_deactivate_xpds(xbus_t *xbus)
{
unsigned long flags;
int unit;
int subunit;
xpd_t *xpd;
for (unit = 0; unit < MAX_UNIT; unit++) {
xpd = xpd_byaddr(xbus, unit, 0);
if (!xpd)
continue;
for (subunit = 0; subunit < MAX_SUBUNIT; subunit++) {
xpd = xpd_byaddr(xbus, unit, subunit);
if (!xpd)
continue;
spin_lock_irqsave(&xpd->lock, flags);
xpd->card_present = 0;
xpd_setstate(xpd, XPD_STATE_NOHW);
spin_unlock_irqrestore(&xpd->lock, flags);
}
}
}
static int xbus_initialize(xbus_t *xbus)
{
int unit;
@@ -900,37 +877,18 @@ int xbus_is_registered(xbus_t *xbus)
return xbus->ddev && xbus->ddev->dev.parent;
}
static void xbus_free_ddev(xbus_t *xbus)
{
if (!xbus->ddev)
return;
if (xbus->ddev->devicetype)
kfree(xbus->ddev->devicetype);
xbus->ddev->devicetype = NULL;
xbus->ddev->location = NULL;
xbus->ddev->hardware_id = NULL;
dahdi_free_device(xbus->ddev);
xbus->ddev = NULL;
}
int xbus_register_dahdi_device(xbus_t *xbus)
{
int i;
int offset = 0;
int ret;
int i;
int offset = 0;
XBUS_DBG(DEVICES, xbus, "Entering %s\n", __func__);
if (xbus_is_registered(xbus)) {
XBUS_ERR(xbus, "Already registered to DAHDI\n");
WARN_ON(1);
ret = -EINVAL;
goto err;
return -EINVAL;
}
xbus->ddev = dahdi_create_device();
if (!xbus->ddev) {
ret = -ENOMEM;
goto err;
}
/*
* This actually describe the dahdi_spaninfo version 3
* A bunch of unrelated data exported via a modified ioctl()
@@ -945,10 +903,8 @@ int xbus_register_dahdi_device(xbus_t *xbus)
* OK, let's add to the kernel more useless info.
*/
xbus->ddev->devicetype = kasprintf(GFP_KERNEL, "Astribank2");
if (!xbus->ddev->devicetype) {
ret = -ENOMEM;
goto err;
}
if (!xbus->ddev->devicetype)
return -ENOMEM;
/*
* location is the only usefull new data item.
@@ -973,8 +929,7 @@ int xbus_register_dahdi_device(xbus_t *xbus)
}
if (dahdi_register_device(xbus->ddev, &xbus->astribank)) {
XBUS_ERR(xbus, "Failed to dahdi_register_device()\n");
ret = -ENODEV;
goto err;
return -ENODEV;
}
for (i = 0; i < MAX_XPDS; i++) {
xpd_t *xpd = xpd_of(xbus, i);
@@ -984,9 +939,6 @@ int xbus_register_dahdi_device(xbus_t *xbus)
}
}
return 0;
err:
xbus_free_ddev(xbus);
return ret;
}
void xbus_unregister_dahdi_device(xbus_t *xbus)
@@ -1001,7 +953,12 @@ void xbus_unregister_dahdi_device(xbus_t *xbus)
if (xbus->ddev) {
dahdi_unregister_device(xbus->ddev);
XBUS_NOTICE(xbus, "%s: finished dahdi_unregister_device()\n", __func__);
xbus_free_ddev(xbus);
kfree(xbus->ddev->devicetype);
xbus->ddev->devicetype = NULL;
xbus->ddev->location = NULL;
xbus->ddev->hardware_id = NULL;
dahdi_free_device(xbus->ddev);
xbus->ddev = NULL;
}
for(i = 0; i < MAX_XPDS; i++) {
xpd_t *xpd = xpd_of(xbus, i);
@@ -1346,7 +1303,6 @@ void xbus_deactivate(xbus_t *xbus)
xbus_request_sync(xbus, SYNC_MODE_NONE); /* no more ticks */
elect_syncer("deactivate");
xbus_echocancel(xbus, 0);
xbus_deactivate_xpds(xbus);
XBUS_DBG(DEVICES, xbus, "[%s] Waiting for queues\n", xbus->label);
xbus_command_queue_clean(xbus);
xbus_command_queue_waitempty(xbus);

View File

@@ -49,7 +49,6 @@ typedef unsigned gfp_t; /* Added in 2.6.14 */
#endif
#endif
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 31)
/*
* FIXME: Kludge for 2.6.19
* bool is now defined as a proper boolean type (gcc _Bool)
@@ -59,12 +58,6 @@ typedef unsigned gfp_t; /* Added in 2.6.14 */
int name = init; \
module_param(name, bool, perm); \
MODULE_PARM_DESC(name, desc " [default " #init "]")
#else
#define DEF_PARM_BOOL(name, init, perm, desc) \
bool name = init; \
module_param(name, bool, perm); \
MODULE_PARM_DESC(name, desc " [default " #init "]")
#endif
#define DEF_PARM(type,name,init,perm,desc) \
type name = init; \

View File

@@ -697,6 +697,7 @@ int xpp_open(struct dahdi_chan *chan)
pos = chan->chanpos - 1;
if(!xpd->card_present) {
LINE_NOTICE(xpd, pos, "Cannot open -- device not ready\n");
put_xpd(__FUNCTION__, xpd);
return -ENODEV;
}
spin_lock_irqsave(&xbus->lock, flags);
@@ -1082,9 +1083,14 @@ int xpd_dahdi_postregister(xpd_t *xpd)
*/
void xpd_dahdi_preunregister(xpd_t *xpd)
{
unsigned long flags;
if (!xpd)
return;
XPD_DBG(DEVICES, xpd, "\n");
spin_lock_irqsave(&xpd->lock, flags);
xpd->card_present = 0;
xpd_setstate(xpd, XPD_STATE_NOHW);
spin_unlock_irqrestore(&xpd->lock, flags);
update_xpd_status(xpd, DAHDI_ALARM_NOTOPEN);
if(xpd->card_present)
CALL_PHONE_METHOD(card_dahdi_preregistration, xpd, 0);

View File

@@ -75,12 +75,6 @@ static const xproto_table_t *xproto_table(xpd_type_t cardtype)
return xprotocol_tables[cardtype];
}
#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 3, 0)
#define MODULE_REFCOUNT_FORMAT "%s refcount was %d\n"
#else
#define MODULE_REFCOUNT_FORMAT "%s refcount was %lu\n"
#endif
const xproto_table_t *xproto_get(xpd_type_t cardtype)
{
const xproto_table_t *xtable;
@@ -100,8 +94,7 @@ const xproto_table_t *xproto_get(xpd_type_t cardtype)
if(xtable) {
BUG_ON(!xtable->owner);
#ifdef CONFIG_MODULE_UNLOAD
DBG(GENERAL, MODULE_REFCOUNT_FORMAT, xtable->name,
module_refcount(xtable->owner));
DBG(GENERAL, "%s refcount was %d\n", xtable->name, module_refcount(xtable->owner));
#endif
if(!try_module_get(xtable->owner)) {
ERR("%s: try_module_get for %s failed.\n", __FUNCTION__, xtable->name);
@@ -115,8 +108,7 @@ void xproto_put(const xproto_table_t *xtable)
{
BUG_ON(!xtable);
#ifdef CONFIG_MODULE_UNLOAD
DBG(GENERAL, MODULE_REFCOUNT_FORMAT, xtable->name,
module_refcount(xtable->owner));
DBG(GENERAL, "%s refcount was %d\n", xtable->name, module_refcount(xtable->owner));
BUG_ON(module_refcount(xtable->owner) <= 0);
#endif
module_put(xtable->owner);

View File

@@ -72,12 +72,6 @@
#define DAHDI_IRQ_HANDLER(a) static irqreturn_t a(int irq, void *dev_id, struct pt_regs *regs)
#endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 25)
#ifdef CONFIG_PCI
#include <linux/pci-aspm.h>
#endif
#endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29)
#define HAVE_NET_DEVICE_OPS
#endif
@@ -99,25 +93,16 @@
#endif
#endif
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 26)
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,26)
# ifdef RHEL_RELEASE_VERSION
# if RHEL_RELEASE_CODE < RHEL_RELEASE_VERSION(5, 6)
#define dev_name(dev) ((dev)->bus_id)
#define dev_set_name(dev, format, ...) \
snprintf((dev)->bus_id, BUS_ID_SIZE, format, ## __VA_ARGS__)
# else
#define dev_set_name(dev, format, ...) \
do { \
kobject_set_name(&(dev)->kobj, format, ## __VA_ARGS__); \
snprintf((dev)->bus_id, BUS_ID_SIZE, \
kobject_name(&(dev)->kobj)); \
} while (0)
# endif
# else
#define dev_name(dev) ((dev)->bus_id)
#define dev_set_name(dev, format, ...) \
snprintf((dev)->bus_id, BUS_ID_SIZE, format, ## __VA_ARGS__)
# endif
#define dev_set_name(dev, format, ...) \
snprintf((dev)->bus_id, BUS_ID_SIZE, format, ## __VA_ARGS__);
#endif
/*! Default chunk size for conferences and such -- static right now, might make
@@ -1116,9 +1101,6 @@ struct dahdi_dynamic_driver {
struct list_head list;
struct module *owner;
/*! Numberic id of next device created by this driver. */
unsigned int id;
};
/*! \brief Receive a dynamic span message */
@@ -1400,16 +1382,6 @@ static inline short dahdi_txtone_nextsample(struct dahdi_chan *ss)
#define fatal_signal_pending(p) \
(signal_pending((p)) && sigismember(&(p)->pending.signal, SIGKILL))
#ifdef CONFIG_PCI
#ifndef PCIE_LINK_STATE_L0S
#define PCIE_LINK_STATE_L0S 1
#define PCIE_LINK_STATE_L1 2
#define PCIE_LINK_STATE_CLKPM 4
#endif
#define pci_disable_link_state dahdi_pci_disable_link_state
void dahdi_pci_disable_link_state(struct pci_dev *pdev, int state);
#endif /* CONFIG_PCI */
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 22)
#ifndef __packed
@@ -1437,6 +1409,60 @@ static inline int strcasecmp(const char *s1, const char *s2)
return c1 - c2;
}
#endif /* clamp_val */
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 18)
static inline void list_replace(struct list_head *old, struct list_head *new)
{
new->next = old->next;
new->next->prev = new;
new->prev = old->prev;
new->prev->next = new;
}
#ifndef WARN_ON_ONCE
#define WARN_ON_ONCE(__condition) do { \
static int __once = 1; \
if (unlikely(__condition)) { \
if (__once) { \
__once = 0; \
WARN_ON(0); \
} \
} \
} while (0)
#endif
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 17)
#ifndef POLLRDHUP
#define POLLRDHUP 0
#endif
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 14)
#define kzalloc(a, b) kcalloc(1, a, b)
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 12)
#define synchronize_rcu() synchronize_kernel()
#define kasprintf dahdi_kasprintf
char *dahdi_kasprintf(gfp_t gfp, const char *fmt, ...);
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 11)
#if !defined(HAVE_WAIT_FOR_COMPLETION_TIMEOUT)
static inline unsigned long
wait_for_completion_interruptible_timeout(struct completion *x,
unsigned long timeout)
{
/* There is a race condition here. If x->done is reset to 0
* before the call to wait_for_completion after this thread wakes.
*/
timeout = wait_event_interruptible_timeout(x->wait, x->done, timeout);
if (timeout)
wait_for_completion(x);
return timeout;
}
#endif
typedef u32 __bitwise pm_message_t;
#endif /* 2.6.11 */
#endif /* 2.6.12 */
#endif /* 2.6.14 */
#endif /* 2.6.17 */
#endif /* 2.6.18 */
#endif /* 2.6.22 */
#endif /* 2.6.25 */
#endif /* 2.6.26 */