* fixed support of new BN8S0 leds work now correct again

* fixed support of the B410P, which wasn't recognized correctly
* added an "opticalsupport" field to the PCI_ENTRY struct. Most e1 boards
  have no optical interface, so they should never be initialized with one
This commit is contained in:
Chrisian Richter 2007-03-02 14:00:38 +00:00
parent b87a76c616
commit 1fa5c5942f
2 changed files with 48 additions and 32 deletions

View File

@ -153,6 +153,7 @@ typedef struct {
int ports;
int clock2;
int leds;
int opticalsupport;
} PCI_ENTRY;
static int poll_timer = 6; /* default = 128 samples = 16ms */
@ -182,58 +183,58 @@ static const PCI_ENTRY id_list[] =
"HFC-E1 CCAG Eval", 1, 0, 1}, /* E1 only supports single clock */
#endif
{CCAG_VID, CCAG_VID, HFC4S_ID, 0x08B4, VENDOR_CCD,
"HFC-4S CCAG Eval (old)", 0, 4, 0, 0},
"HFC-4S CCAG Eval (old)", 0, 4, 0, 0, 0},
{CCAG_VID, CCAG_VID, HFC8S_ID, 0x16B8, VENDOR_CCD,
"HFC-8S CCAG Eval (old)", 0, 8, 0, 0},
"HFC-8S CCAG Eval (old)", 0, 8, 0, 0, 0},
{CCAG_VID, CCAG_VID, HFCE1_ID, 0x30B1, VENDOR_CCD,
"HFC-E1 CCAG Eval (old)", 1, 1, 0, 0},
"HFC-E1 CCAG Eval (old)", 1, 1, 0, 0, 0},
{CCAG_VID, CCAG_VID, HFC4S_ID, 0xB520, VENDOR_CCD,
"HFC-4S IOB4ST", 0, 4, 1, 2},
"HFC-4S IOB4ST", 0, 4, 1, 2, 0},
{CCAG_VID, CCAG_VID, HFC4S_ID, 0xB620, VENDOR_CCD,
"HFC-4S", 0, 4, 1, 2},
"HFC-4S", 0, 4, 1, 2, 0},
{CCAG_VID, CCAG_VID, HFC4S_ID, 0xB550, VENDOR_CCD,
"HFC-4S (junghanns 2.0)", 0, 4, 1, 2},
"HFC-4S (junghanns 2.0)", 0, 4, 1, 2, 0},
{CCAG_VID, CCAG_VID, HFC4S_ID, 0xB560, VENDOR_CCD,
"HFC-4S Beronet Card", 0, 4, 1, 2},
"HFC-4S Beronet Card", 0, 4, 1, 2, 0},
{CCAG_VID, CCAG_VID, HFC4S_ID, 0xB568, VENDOR_CCD,
"HFC-4S Beronet Card (mini PCI)", 0, 4, 1, 2},
"HFC-4S Beronet Card (mini PCI)", 0, 4, 1, 2, 0},
{0xD161, 0xD161, 0xB410, 0xB410, VENDOR_CCD,
"HFC-4S Digium Card", 0, 4, 0, 2},
"HFC-4S Digium Card", 0, 4, 0, 2, 0},
{CCAG_VID, CCAG_VID, HFC4S_ID, 0xB540, VENDOR_CCD,
"HFC-4S Swyx 4xS0 SX2 QuadBri", 0, 4, 1, 2},
"HFC-4S Swyx 4xS0 SX2 QuadBri", 0, 4, 1, 2, 0},
{CCAG_VID, CCAG_VID, HFC8S_ID, 0xB521, VENDOR_CCD,
"HFC-8S IOB4ST Recording", 0, 8, 1, 0},
"HFC-8S IOB4ST Recording", 0, 8, 1, 0, 0},
{CCAG_VID, CCAG_VID, HFC8S_ID, 0xB522, VENDOR_CCD,
"HFC-8S IOB8ST", 0, 8, 1, 0},
"HFC-8S IOB8ST", 0, 8, 1, 0, 0},
{CCAG_VID, CCAG_VID, HFC8S_ID, 0xB552, VENDOR_CCD,
"HFC-8S", 0, 8, 1, 0},
"HFC-8S", 0, 8, 1, 0, 0},
{CCAG_VID, CCAG_VID, HFC8S_ID, 0xB622, VENDOR_CCD,
"HFC-8S", 0, 8, 1, 0},
"HFC-8S", 0, 8, 1, 0, 0},
{CCAG_VID, CCAG_VID, HFC8S_ID, 0xB562, VENDOR_CCD,
"HFC-8S Beronet Card", 0, 8, 1, 0},
"HFC-8S Beronet Card", 0, 8, 1, 0, 0},
{CCAG_VID, CCAG_VID, HFC8S_ID, 0xB56B, VENDOR_CCD,
"HFC-8S Beronet Card (+)", 0, 8, 1, 8},
"HFC-8S Beronet Card (+)", 0, 8, 1, 8, 0},
{CCAG_VID, CCAG_VID, HFCE1_ID, 0xB523, VENDOR_CCD,
"HFC-E1 IOB1E1", 1, 1, 0, 1}, /* E1 only supports single clock */
"HFC-E1 IOB1E1", 1, 1, 0, 1, 0}, /* E1 only supports single clock */
{CCAG_VID, CCAG_VID, HFCE1_ID, 0xC523, VENDOR_CCD,
"HFC-E1", 1, 1, 0, 1}, /* E1 only supports single clock */
"HFC-E1", 1, 1, 0, 1, 0}, /* E1 only supports single clock */
{CCAG_VID, CCAG_VID, HFCE1_ID, 0xB56A, VENDOR_CCD,
"HFC-E1 Beronet Card (mini PCI)", 1, 1, 0, 1}, /* E1 only supports single clock */
"HFC-E1 Beronet Card (mini PCI)", 1, 1, 0, 1, 0}, /* E1 only supports single clock */
{CCAG_VID, CCAG_VID, HFCE1_ID, 0xB563, VENDOR_CCD,
"HFC-E1 Beronet Card", 1, 1, 0, 1}, /* E1 only supports single clock */
"HFC-E1 Beronet Card", 1, 1, 0, 1, 0}, /* E1 only supports single clock */
{CCAG_VID, CCAG_VID, HFCE1_ID, 0xB565, VENDOR_CCD,
"HFC-E1+ Beronet Card (Dual)", 1, 1, 0, 1}, /* E1 only supports single clock */
"HFC-E1+ Beronet Card (Dual)", 1, 1, 0, 1, 0}, /* E1 only supports single clock */
{CCAG_VID, CCAG_VID, HFCE1_ID, 0xB564, VENDOR_CCD,
"HFC-E1 Beronet Card (Dual)", 1, 1, 0, 1}, /* E1 only supports single clock */
"HFC-E1 Beronet Card (Dual)", 1, 1, 0, 1, 0}, /* E1 only supports single clock */
{0x10B5, CCAG_VID, 0x9030, 0x3136, VENDOR_CCD,
"HFC-4S PCIBridgeEval", 0, 4, 0, 0}, // PLX PCI-Bridge
"HFC-4S PCIBridgeEval", 0, 4, 0, 0, 0}, // PLX PCI-Bridge
{CCAG_VID, CCAG_VID, HFC4S_ID, 0xB566, VENDOR_CCD,
"HFC-2S Beronet Card", 0, 2, 1, 3},
"HFC-2S Beronet Card", 0, 2, 1, 3, 0},
{CCAG_VID, CCAG_VID, HFC4S_ID, 0xB569, VENDOR_CCD,
"HFC-2S Beronet Card (mini PCI)", 0, 2, 1, 3},
"HFC-2S Beronet Card (mini PCI)", 0, 2, 1, 3, 0},
{CCAG_VID, CCAG_VID, HFC4S_ID, 0xB567, VENDOR_CCD,
"HFC-1S Beronet Card (mini PCI)", 0, 1, 1, 3},
{0, 0, 0, 0, NULL, NULL, 0, 0, 0},
"HFC-1S Beronet Card (mini PCI)", 0, 1, 1, 3, 0},
{0, 0, 0, 0, NULL, NULL, 0, 0, 0, 0},
};
@ -1160,10 +1161,12 @@ hfcmulti_leds(hfc_multi_t *hc)
led |= 1<<i;
}
unsigned long leddw=led << 24 | led << 16 | led << 8 | led;
HFC_outb(hc, R_BRG_PCM_CFG, 1);
//HFC_outb(hc, R_BRG_PCM_CFG, 1);
//HFC_outb(c, R_BRG_PCM_CFG, (0x0 << 6) | 0x3); /*was _io before*/
HFC_outb(hc, R_BRG_PCM_CFG, 1 | V_PCM_CLK);
outw(0x4000, hc->pci_iobase + 4);
outl(leddw, hc->pci_iobase);
HFC_outb(hc, R_BRG_PCM_CFG, 0);
HFC_outb(hc, R_BRG_PCM_CFG, V_PCM_CLK);
}
break;
@ -3420,6 +3423,7 @@ setup_pci(hfc_multi_t *hc, struct pci_dev *pdev, int id_idx)
return (-EIO);
}
hc->leds = id_list[id_idx].leds;
hc->opticalsupport = id_list[id_idx].opticalsupport;
#ifdef CONFIG_HFCMULTI_PCIMEM
hc->pci_membase = NULL;
@ -3859,6 +3863,12 @@ static int __devinit hfcpci_probe(struct pci_dev *pdev, const struct pci_device_
hfc_type=0x4;
break;
case 0xB410:
bchperport = 2;
card_type=0;
hfc_type=0x4;
break;
case HFC8S_ID:
bchperport = 2;
card_type=0;
@ -4115,9 +4125,14 @@ static int __devinit hfcpci_probe(struct pci_dev *pdev, const struct pci_device_
/* E1 */
/* set optical line type */
if (protocol[port_idx] & 0x10000) {
if (debug & DEBUG_HFCMULTI_INIT)
printk(KERN_DEBUG "%s: PROTOCOL set optical interfacs: card(%d) port(%d)\n", __FUNCTION__, HFC_idx+1, pt);
test_and_set_bit(HFC_CFG_OPTICAL, &hc->chan[ch].cfg);
if (!id_list[id_idx].opticalsupport) {
print(KERN_INFO "This board has no optical support\n");
} else {
if (debug & DEBUG_HFCMULTI_INIT)
printk(KERN_DEBUG "%s: PROTOCOL set optical interfacs: card(%d) port(%d)\n", __FUNCTION__, HFC_idx+1, pt);
test_and_set_bit(HFC_CFG_OPTICAL, &hc->chan[ch].cfg);
}
}
/* set LOS report */

View File

@ -136,6 +136,7 @@ struct hfc_multi {
u_int slots; /* number of PCM slots */
u_int leds; /* type of leds */
u_int ledcount; /* used to animate leds */
int opticalsupport; /* has the e1 board an optical Interface*/
u_long wdcount; /* every 500 ms we need to send the watchdog a signal */
u_char wdbyte; /* watchdog toggle byte*/