added GPIO Check for the NT/TE Jumper settings for the 4S based cards. If the protocol Configuration does not match the Jumper Settings we print out a warning now. Thanks to Martin Bachen who submitted this patch.
This commit is contained in:
parent
534a86348f
commit
c684d5e96d
|
@ -3269,6 +3269,7 @@ static int __devinit hfcpci_probe(struct pci_dev *pdev, const struct pci_device_
|
||||||
mISDNstack_t *dst = NULL; /* make gcc happy */
|
mISDNstack_t *dst = NULL; /* make gcc happy */
|
||||||
channel_t *chan;
|
channel_t *chan;
|
||||||
u_long flags;
|
u_long flags;
|
||||||
|
u_char dips=0, pmj=0; // dip settings, port mode Jumpers
|
||||||
|
|
||||||
id_idx = find_idlist_entry(ent->vendor,ent->subvendor,ent->device,ent->subdevice);
|
id_idx = find_idlist_entry(ent->vendor,ent->subvendor,ent->device,ent->subdevice);
|
||||||
if (id_idx == -1) {
|
if (id_idx == -1) {
|
||||||
|
@ -3614,6 +3615,47 @@ static int __devinit hfcpci_probe(struct pci_dev *pdev, const struct pci_device_
|
||||||
if (debug & DEBUG_HFCMULTI_INIT)
|
if (debug & DEBUG_HFCMULTI_INIT)
|
||||||
printk(KERN_DEBUG "%s: Init modes card(%d)\n", __FUNCTION__, HFC_idx+1);
|
printk(KERN_DEBUG "%s: Init modes card(%d)\n", __FUNCTION__, HFC_idx+1);
|
||||||
hfcmulti_initmode(hc);
|
hfcmulti_initmode(hc);
|
||||||
|
|
||||||
|
/* check if Port Jumper config matches module param 'protocol' */
|
||||||
|
switch(hc->type) {
|
||||||
|
// E1
|
||||||
|
case 1:
|
||||||
|
break;
|
||||||
|
|
||||||
|
// HFC 4S
|
||||||
|
case 2:
|
||||||
|
case 4:
|
||||||
|
// Dip Setting: (collect GPIO 13/14/15 (R_GPIO_IN1) + GPI 19/20/23 (R_GPI_IN2))
|
||||||
|
dips = ((HFC_inb(hc, R_GPIO_IN1) >> 5) & 0x7) | (HFC_inb(hc, R_GPI_IN2) & 0x98);
|
||||||
|
|
||||||
|
// Port mode (TE/NT) jumpers
|
||||||
|
pmj = ((HFC_inb(hc, R_GPI_IN3) >> 4) & 0xf);
|
||||||
|
|
||||||
|
printk(KERN_INFO "%s: DIPs(0x%x) jumpers(0x%x)\n", __FUNCTION__, dips, pmj);
|
||||||
|
|
||||||
|
pt = 0;
|
||||||
|
while(pt < hc->type) {
|
||||||
|
chan = hc->chan[(pt<<2)+2].ch;
|
||||||
|
// check for protocol param mismatch
|
||||||
|
if (((pmj & (1 << pt)) && (chan->inst.pid.protocol[0] == ISDN_PID_L0_TE_S0)) ||
|
||||||
|
((!(pmj & (1 << pt))) && (chan->inst.pid.protocol[0] == ISDN_PID_L0_NT_S0))) {
|
||||||
|
printk ("%s: protocol WARNING: port %i is jumpered for %s mode!\n",
|
||||||
|
__FUNCTION__,
|
||||||
|
pt,
|
||||||
|
(pmj & (1 << pt)?"NT":"TE")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
pt++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
// HFC 8S
|
||||||
|
case 8:
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
/* add stacks */
|
/* add stacks */
|
||||||
pt = 0;
|
pt = 0;
|
||||||
|
|
Loading…
Reference in New Issue