aboutsummaryrefslogtreecommitdiff
path: root/drivers/isdn/hardware/mISDN/speedfax.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/isdn/hardware/mISDN/speedfax.c')
-rw-r--r--drivers/isdn/hardware/mISDN/speedfax.c41
1 files changed, 22 insertions, 19 deletions
diff --git a/drivers/isdn/hardware/mISDN/speedfax.c b/drivers/isdn/hardware/mISDN/speedfax.c
index 4d0d41ea122..9815bb4eec9 100644
--- a/drivers/isdn/hardware/mISDN/speedfax.c
+++ b/drivers/isdn/hardware/mISDN/speedfax.c
@@ -147,10 +147,10 @@ Start_ISAR:
goto Start_ISAR;
if (cnt < irqloops)
pr_debug("%s: %d irqloops cpu%d\n", sf->name,
- irqloops - cnt, smp_processor_id());
+ irqloops - cnt, smp_processor_id());
if (irqloops && !cnt)
pr_notice("%s: %d IRQ LOOP cpu%d\n", sf->name,
- irqloops, smp_processor_id());
+ irqloops, smp_processor_id());
spin_unlock(&sf->lock);
return IRQ_HANDLED;
}
@@ -224,7 +224,7 @@ channel_ctrl(struct sfax_hw *sf, struct mISDN_ctrl_req *cq)
switch (cq->op) {
case MISDN_CTRL_GETOP:
- cq->op = MISDN_CTRL_LOOP;
+ cq->op = MISDN_CTRL_LOOP | MISDN_CTRL_L1_TIMER3;
break;
case MISDN_CTRL_LOOP:
/* cq->channel: 0 disable, 1 B1 loop 2 B2 loop, 3 both */
@@ -234,6 +234,9 @@ channel_ctrl(struct sfax_hw *sf, struct mISDN_ctrl_req *cq)
}
ret = sf->isac.ctrl(&sf->isac, HW_TESTLOOP, cq->channel);
break;
+ case MISDN_CTRL_L1_TIMER3:
+ ret = sf->isac.ctrl(&sf->isac, HW_TIMER3_VALUE, cq->p1);
+ break;
default:
pr_info("%s: unknown Op %x\n", sf->name, cq->op);
ret = -EINVAL;
@@ -266,7 +269,7 @@ sfax_dctrl(struct mISDNchannel *ch, u32 cmd, void *arg)
break;
case CLOSE_CHANNEL:
pr_debug("%s: dev(%d) close from %p\n", sf->name,
- dch->dev.id, __builtin_return_address(0));
+ dch->dev.id, __builtin_return_address(0));
module_put(THIS_MODULE);
break;
case CONTROL_CHANNEL:
@@ -279,7 +282,7 @@ sfax_dctrl(struct mISDNchannel *ch, u32 cmd, void *arg)
return err;
}
-static int __devinit
+static int
init_card(struct sfax_hw *sf)
{
int ret, cnt = 3;
@@ -306,10 +309,10 @@ init_card(struct sfax_hw *sf)
msleep_interruptible(10);
if (debug & DEBUG_HW)
pr_notice("%s: IRQ %d count %d\n", sf->name,
- sf->irq, sf->irqcnt);
+ sf->irq, sf->irqcnt);
if (!sf->irqcnt) {
pr_info("%s: IRQ(%d) got no requests during init %d\n",
- sf->name, sf->irq, 3 - cnt);
+ sf->name, sf->irq, 3 - cnt);
} else
return 0;
}
@@ -318,14 +321,14 @@ init_card(struct sfax_hw *sf)
}
-static int __devinit
+static int
setup_speedfax(struct sfax_hw *sf)
{
u_long flags;
if (!request_region(sf->cfg, 256, sf->name)) {
pr_info("mISDN: %s config port %x-%x already in use\n",
- sf->name, sf->cfg, sf->cfg + 255);
+ sf->name, sf->cfg, sf->cfg + 255);
return -EIO;
}
outb(0xff, sf->cfg);
@@ -368,7 +371,7 @@ release_card(struct sfax_hw *card) {
sfax_cnt--;
}
-static int __devinit
+static int
setup_instance(struct sfax_hw *card)
{
const struct firmware *firmware;
@@ -396,7 +399,7 @@ setup_instance(struct sfax_hw *card)
}
if (debug & DEBUG_HW)
pr_notice("%s: got firmware %zu bytes\n",
- card->name, firmware->size);
+ card->name, firmware->size);
mISDNisac_init(&card->isac, card);
@@ -406,7 +409,7 @@ setup_instance(struct sfax_hw *card)
for (i = 0; i < 2; i++) {
set_channelmap(i + 1, card->isac.dch.dev.channelmap);
list_add(&card->isar.ch[i].bch.ch.list,
- &card->isac.dch.dev.bchannels);
+ &card->isac.dch.dev.bchannels);
}
err = setup_speedfax(card);
@@ -416,7 +419,7 @@ setup_instance(struct sfax_hw *card)
if (err)
goto error;
err = mISDN_register_device(&card->isac.dch.dev,
- &card->pdev->dev, card->name);
+ &card->pdev->dev, card->name);
if (err)
goto error;
err = init_card(card);
@@ -448,7 +451,7 @@ error_fw:
return err;
}
-static int __devinit
+static int
sfaxpci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
{
int err = -ENOMEM;
@@ -466,7 +469,7 @@ sfaxpci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
}
pr_notice("mISDN: Speedfax found adapter %s at %s\n",
- (char *)ent->driver_data, pci_name(pdev));
+ (char *)ent->driver_data, pci_name(pdev));
card->cfg = pci_resource_start(pdev, 0);
card->irq = pdev->irq;
@@ -477,7 +480,7 @@ sfaxpci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
return err;
}
-static void __devexit
+static void
sfax_remove_pci(struct pci_dev *pdev)
{
struct sfax_hw *card = pci_get_drvdata(pdev);
@@ -488,7 +491,7 @@ sfax_remove_pci(struct pci_dev *pdev)
pr_debug("%s: drvdata already removed\n", __func__);
}
-static struct pci_device_id sfaxpci_ids[] __devinitdata = {
+static struct pci_device_id sfaxpci_ids[] = {
{ PCI_VENDOR_ID_TIGERJET, PCI_DEVICE_ID_TIGERJET_100,
PCI_SUBVENDOR_SPEEDFAX_PYRAMID, PCI_SUB_ID_SEDLBAUER,
0, 0, (unsigned long) "Pyramid Speedfax + PCI"
@@ -504,7 +507,7 @@ MODULE_DEVICE_TABLE(pci, sfaxpci_ids);
static struct pci_driver sfaxpci_driver = {
.name = "speedfax+ pci",
.probe = sfaxpci_probe,
- .remove = __devexit_p(sfax_remove_pci),
+ .remove = sfax_remove_pci,
.id_table = sfaxpci_ids,
};
@@ -514,7 +517,7 @@ Speedfax_init(void)
int err;
pr_notice("Sedlbauer Speedfax+ Driver Rev. %s\n",
- SPEEDFAX_REV);
+ SPEEDFAX_REV);
err = pci_register_driver(&sfaxpci_driver);
return err;
}