Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 82248a5e authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* git://git.kernel.org/pub/scm/linux/kernel/git/kkeil/ISDN-2.6:
  Add DIP switch readout for HFC-4S IOB4ST
  Fix remaining big endian issue of hfcmulti
  mISDN cleanup user interface
  mISDN fix main ISDN Makefile
parents c2d5ceda 31981db0
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -5,7 +5,7 @@
obj-$(CONFIG_ISDN_I4L)			+= i4l/
obj-$(CONFIG_ISDN_I4L)			+= i4l/
obj-$(CONFIG_ISDN_CAPI)			+= capi/
obj-$(CONFIG_ISDN_CAPI)			+= capi/
obj-$(CONFIG_MISDN)			+= mISDN/
obj-$(CONFIG_MISDN)			+= mISDN/
obj-$(CONFIG_ISDN_CAPI)			+= hardware/
obj-$(CONFIG_ISDN)			+= hardware/
obj-$(CONFIG_ISDN_DIVERSION)		+= divert/
obj-$(CONFIG_ISDN_DIVERSION)		+= divert/
obj-$(CONFIG_ISDN_DRV_HISAX)		+= hisax/
obj-$(CONFIG_ISDN_DRV_HISAX)		+= hisax/
obj-$(CONFIG_ISDN_DRV_ICN)		+= icn/
obj-$(CONFIG_ISDN_DRV_ICN)		+= icn/
+18 −19
Original line number Original line Diff line number Diff line
@@ -140,7 +140,7 @@
 * #define HFC_REGISTER_DEBUG
 * #define HFC_REGISTER_DEBUG
 */
 */


static const char *hfcmulti_revision = "2.00";
static const char *hfcmulti_revision = "2.02";


#include <linux/module.h>
#include <linux/module.h>
#include <linux/pci.h>
#include <linux/pci.h>
@@ -427,12 +427,12 @@ write_fifo_regio(struct hfc_multi *hc, u_char *data, int len)
{
{
	outb(A_FIFO_DATA0, (hc->pci_iobase)+4);
	outb(A_FIFO_DATA0, (hc->pci_iobase)+4);
	while (len>>2) {
	while (len>>2) {
		outl(*(u32 *)data, hc->pci_iobase);
		outl(cpu_to_le32(*(u32 *)data), hc->pci_iobase);
		data += 4;
		data += 4;
		len -= 4;
		len -= 4;
	}
	}
	while (len>>1) {
	while (len>>1) {
		outw(*(u16 *)data, hc->pci_iobase);
		outw(cpu_to_le16(*(u16 *)data), hc->pci_iobase);
		data += 2;
		data += 2;
		len -= 2;
		len -= 2;
	}
	}
@@ -447,17 +447,19 @@ void
write_fifo_pcimem(struct hfc_multi *hc, u_char *data, int len)
write_fifo_pcimem(struct hfc_multi *hc, u_char *data, int len)
{
{
	while (len>>2) {
	while (len>>2) {
		writel(*(u32 *)data, (hc->pci_membase)+A_FIFO_DATA0);
		writel(cpu_to_le32(*(u32 *)data),
			hc->pci_membase + A_FIFO_DATA0);
		data += 4;
		data += 4;
		len -= 4;
		len -= 4;
	}
	}
	while (len>>1) {
	while (len>>1) {
		writew(*(u16 *)data, (hc->pci_membase)+A_FIFO_DATA0);
		writew(cpu_to_le16(*(u16 *)data),
			hc->pci_membase + A_FIFO_DATA0);
		data += 2;
		data += 2;
		len -= 2;
		len -= 2;
	}
	}
	while (len) {
	while (len) {
		writeb(*data, (hc->pci_membase)+A_FIFO_DATA0);
		writeb(*data, hc->pci_membase + A_FIFO_DATA0);
		data++;
		data++;
		len--;
		len--;
	}
	}
@@ -468,12 +470,12 @@ read_fifo_regio(struct hfc_multi *hc, u_char *data, int len)
{
{
	outb(A_FIFO_DATA0, (hc->pci_iobase)+4);
	outb(A_FIFO_DATA0, (hc->pci_iobase)+4);
	while (len>>2) {
	while (len>>2) {
		*(u32 *)data = inl(hc->pci_iobase);
		*(u32 *)data = le32_to_cpu(inl(hc->pci_iobase));
		data += 4;
		data += 4;
		len -= 4;
		len -= 4;
	}
	}
	while (len>>1) {
	while (len>>1) {
		*(u16 *)data = inw(hc->pci_iobase);
		*(u16 *)data = le16_to_cpu(inw(hc->pci_iobase));
		data += 2;
		data += 2;
		len -= 2;
		len -= 2;
	}
	}
@@ -490,18 +492,18 @@ read_fifo_pcimem(struct hfc_multi *hc, u_char *data, int len)
{
{
	while (len>>2) {
	while (len>>2) {
		*(u32 *)data =
		*(u32 *)data =
			readl((hc->pci_membase)+A_FIFO_DATA0);
			le32_to_cpu(readl(hc->pci_membase + A_FIFO_DATA0));
		data += 4;
		data += 4;
		len -= 4;
		len -= 4;
	}
	}
	while (len>>1) {
	while (len>>1) {
		*(u16 *)data =
		*(u16 *)data =
			readw((hc->pci_membase)+A_FIFO_DATA0);
			le16_to_cpu(readw(hc->pci_membase + A_FIFO_DATA0));
		data += 2;
		data += 2;
		len -= 2;
		len -= 2;
	}
	}
	while (len) {
	while (len) {
		*data = readb((hc->pci_membase)+A_FIFO_DATA0);
		*data = readb(hc->pci_membase + A_FIFO_DATA0);
		data++;
		data++;
		len--;
		len--;
	}
	}
@@ -3971,7 +3973,7 @@ open_bchannel(struct hfc_multi *hc, struct dchannel *dch,
	struct bchannel	*bch;
	struct bchannel	*bch;
	int		ch;
	int		ch;


	if (!test_bit(rq->adr.channel, &dch->dev.channelmap[0]))
	if (!test_channelmap(rq->adr.channel, dch->dev.channelmap))
		return -EINVAL;
		return -EINVAL;
	if (rq->protocol == ISDN_P_NONE)
	if (rq->protocol == ISDN_P_NONE)
		return -EINVAL;
		return -EINVAL;
@@ -4587,7 +4589,7 @@ init_e1_port(struct hfc_multi *hc, struct hm_map *m)
		list_add(&bch->ch.list, &dch->dev.bchannels);
		list_add(&bch->ch.list, &dch->dev.bchannels);
		hc->chan[ch].bch = bch;
		hc->chan[ch].bch = bch;
		hc->chan[ch].port = 0;
		hc->chan[ch].port = 0;
		test_and_set_bit(bch->nr, &dch->dev.channelmap[0]);
		set_channelmap(bch->nr, dch->dev.channelmap);
	}
	}
	/* set optical line type */
	/* set optical line type */
	if (port[Port_cnt] & 0x001) {
	if (port[Port_cnt] & 0x001) {
@@ -4755,7 +4757,7 @@ init_multi_port(struct hfc_multi *hc, int pt)
		list_add(&bch->ch.list, &dch->dev.bchannels);
		list_add(&bch->ch.list, &dch->dev.bchannels);
		hc->chan[i + ch].bch = bch;
		hc->chan[i + ch].bch = bch;
		hc->chan[i + ch].port = pt;
		hc->chan[i + ch].port = pt;
		test_and_set_bit(bch->nr, &dch->dev.channelmap[0]);
		set_channelmap(bch->nr, dch->dev.channelmap);
	}
	}
	/* set master clock */
	/* set master clock */
	if (port[Port_cnt] & 0x001) {
	if (port[Port_cnt] & 0x001) {
@@ -5050,12 +5052,12 @@ static void __devexit hfc_remove_pci(struct pci_dev *pdev)


static const struct hm_map hfcm_map[] = {
static const struct hm_map hfcm_map[] = {
/*0*/	{VENDOR_BN, "HFC-1S Card (mini PCI)", 4, 1, 1, 3, 0, DIP_4S, 0},
/*0*/	{VENDOR_BN, "HFC-1S Card (mini PCI)", 4, 1, 1, 3, 0, DIP_4S, 0},
/*1*/	{VENDOR_BN, "HFC-2S Card", 4, 2, 1, 3, 0, DIP_4S},
/*1*/	{VENDOR_BN, "HFC-2S Card", 4, 2, 1, 3, 0, DIP_4S, 0},
/*2*/	{VENDOR_BN, "HFC-2S Card (mini PCI)", 4, 2, 1, 3, 0, DIP_4S, 0},
/*2*/	{VENDOR_BN, "HFC-2S Card (mini PCI)", 4, 2, 1, 3, 0, DIP_4S, 0},
/*3*/	{VENDOR_BN, "HFC-4S Card", 4, 4, 1, 2, 0, DIP_4S, 0},
/*3*/	{VENDOR_BN, "HFC-4S Card", 4, 4, 1, 2, 0, DIP_4S, 0},
/*4*/	{VENDOR_BN, "HFC-4S Card (mini PCI)", 4, 4, 1, 2, 0, 0, 0},
/*4*/	{VENDOR_BN, "HFC-4S Card (mini PCI)", 4, 4, 1, 2, 0, 0, 0},
/*5*/	{VENDOR_CCD, "HFC-4S Eval (old)", 4, 4, 0, 0, 0, 0, 0},
/*5*/	{VENDOR_CCD, "HFC-4S Eval (old)", 4, 4, 0, 0, 0, 0, 0},
/*6*/	{VENDOR_CCD, "HFC-4S IOB4ST", 4, 4, 1, 2, 0, 0, 0},
/*6*/	{VENDOR_CCD, "HFC-4S IOB4ST", 4, 4, 1, 2, 0, DIP_4S, 0},
/*7*/	{VENDOR_CCD, "HFC-4S", 4, 4, 1, 2, 0, 0, 0},
/*7*/	{VENDOR_CCD, "HFC-4S", 4, 4, 1, 2, 0, 0, 0},
/*8*/	{VENDOR_DIG, "HFC-4S Card", 4, 4, 0, 2, 0, 0, HFC_IO_MODE_REGIO},
/*8*/	{VENDOR_DIG, "HFC-4S Card", 4, 4, 0, 2, 0, 0, HFC_IO_MODE_REGIO},
/*9*/	{VENDOR_CCD, "HFC-4S Swyx 4xS0 SX2 QuadBri", 4, 4, 1, 2, 0, 0, 0},
/*9*/	{VENDOR_CCD, "HFC-4S Swyx 4xS0 SX2 QuadBri", 4, 4, 1, 2, 0, 0, 0},
@@ -5251,9 +5253,6 @@ HFCmulti_init(void)
	if (debug & DEBUG_HFCMULTI_INIT)
	if (debug & DEBUG_HFCMULTI_INIT)
		printk(KERN_DEBUG "%s: init entered\n", __func__);
		printk(KERN_DEBUG "%s: init entered\n", __func__);


#ifdef __BIG_ENDIAN
#error "not running on big endian machines now"
#endif
	hfc_interrupt = symbol_get(ztdummy_extern_interrupt);
	hfc_interrupt = symbol_get(ztdummy_extern_interrupt);
	register_interrupt = symbol_get(ztdummy_register_interrupt);
	register_interrupt = symbol_get(ztdummy_register_interrupt);
	unregister_interrupt = symbol_get(ztdummy_unregister_interrupt);
	unregister_interrupt = symbol_get(ztdummy_unregister_interrupt);
+1 −1
Original line number Original line Diff line number Diff line
@@ -2056,7 +2056,7 @@ setup_card(struct hfc_pci *card)
	card->dch.dev.nrbchan = 2;
	card->dch.dev.nrbchan = 2;
	for (i = 0; i < 2; i++) {
	for (i = 0; i < 2; i++) {
		card->bch[i].nr = i + 1;
		card->bch[i].nr = i + 1;
		test_and_set_bit(i + 1, &card->dch.dev.channelmap[0]);
		set_channelmap(i + 1, card->dch.dev.channelmap);
		card->bch[i].debug = debug;
		card->bch[i].debug = debug;
		mISDN_initbchannel(&card->bch[i], MAX_DATA_MEM);
		mISDN_initbchannel(&card->bch[i], MAX_DATA_MEM);
		card->bch[i].hw = card;
		card->bch[i].hw = card;
+2 −4
Original line number Original line Diff line number Diff line
@@ -1006,8 +1006,7 @@ open_bchannel(struct l1oip *hc, struct dchannel *dch, struct channel_req *rq)
	struct bchannel	*bch;
	struct bchannel	*bch;
	int		ch;
	int		ch;


	if (!test_bit(rq->adr.channel & 0x1f,
	if (!test_channelmap(rq->adr.channel, dch->dev.channelmap))
		&dch->dev.channelmap[rq->adr.channel >> 5]))
		return -EINVAL;
		return -EINVAL;
	if (rq->protocol == ISDN_P_NONE)
	if (rq->protocol == ISDN_P_NONE)
		return -EINVAL;
		return -EINVAL;
@@ -1412,8 +1411,7 @@ init_card(struct l1oip *hc, int pri, int bundle)
		bch->ch.nr = i + ch;
		bch->ch.nr = i + ch;
		list_add(&bch->ch.list, &dch->dev.bchannels);
		list_add(&bch->ch.list, &dch->dev.bchannels);
		hc->chan[i + ch].bch = bch;
		hc->chan[i + ch].bch = bch;
		test_and_set_bit(bch->nr & 0x1f,
		set_channelmap(bch->nr, dch->dev.channelmap);
			&dch->dev.channelmap[bch->nr >> 5]);
	}
	}
	ret = mISDN_register_device(&dch->dev, hc->name);
	ret = mISDN_register_device(&dch->dev, hc->name);
	if (ret)
	if (ret)
+2 −2
Original line number Original line Diff line number Diff line
@@ -379,7 +379,7 @@ data_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
			di.Bprotocols = dev->Bprotocols | get_all_Bprotocols();
			di.Bprotocols = dev->Bprotocols | get_all_Bprotocols();
			di.protocol = dev->D.protocol;
			di.protocol = dev->D.protocol;
			memcpy(di.channelmap, dev->channelmap,
			memcpy(di.channelmap, dev->channelmap,
				MISDN_CHMAP_SIZE * 4);
				sizeof(di.channelmap));
			di.nrbchan = dev->nrbchan;
			di.nrbchan = dev->nrbchan;
			strcpy(di.name, dev->name);
			strcpy(di.name, dev->name);
			if (copy_to_user((void __user *)arg, &di, sizeof(di)))
			if (copy_to_user((void __user *)arg, &di, sizeof(di)))
@@ -637,7 +637,7 @@ base_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
			di.Bprotocols = dev->Bprotocols | get_all_Bprotocols();
			di.Bprotocols = dev->Bprotocols | get_all_Bprotocols();
			di.protocol = dev->D.protocol;
			di.protocol = dev->D.protocol;
			memcpy(di.channelmap, dev->channelmap,
			memcpy(di.channelmap, dev->channelmap,
				MISDN_CHMAP_SIZE * 4);
				sizeof(di.channelmap));
			di.nrbchan = dev->nrbchan;
			di.nrbchan = dev->nrbchan;
			strcpy(di.name, dev->name);
			strcpy(di.name, dev->name);
			if (copy_to_user((void __user *)arg, &di, sizeof(di)))
			if (copy_to_user((void __user *)arg, &di, sizeof(di)))
Loading