[thirdparty-commits] rmudgett: mISDN/trunk r86 - in /mISDN/trunk: ./ config/ drivers/isdn/hardware...
SVN commits to the Digium third-party software repository
thirdparty-commits at lists.digium.com
Thu Mar 12 18:12:35 CDT 2009
Author: rmudgett
Date: Thu Mar 12 18:12:32 2009
New Revision: 86
URL: http://svn.digium.com/svn-view/thirdparty?view=rev&rev=86
Log:
Upgraded to mISDN 1.1.9.1
Added:
mISDN/trunk/mktarball.sh
- copied unchanged from r84, mISDN/upstream/latest/mktarball.sh
Removed:
mISDN/trunk/drivers/isdn/hardware/mISDN/dsp_cmx.c.orig
mISDN/trunk/drivers/isdn/hardware/mISDN/modules.order
mISDN/trunk/drivers/isdn/hardware/mISDN/octvqe/modules.order
Modified:
mISDN/trunk/Makefile
mISDN/trunk/config/mISDN
mISDN/trunk/drivers/isdn/hardware/mISDN/app_plci.c
mISDN/trunk/drivers/isdn/hardware/mISDN/avm_fritz.c
mISDN/trunk/drivers/isdn/hardware/mISDN/core.c
mISDN/trunk/drivers/isdn/hardware/mISDN/debugtool.c
mISDN/trunk/drivers/isdn/hardware/mISDN/hfc_multi.c
mISDN/trunk/drivers/isdn/hardware/mISDN/hfc_pci.c
mISDN/trunk/drivers/isdn/hardware/mISDN/hfcs_mini.c
mISDN/trunk/drivers/isdn/hardware/mISDN/hfcs_usb.c
mISDN/trunk/drivers/isdn/hardware/mISDN/netjet.c
mISDN/trunk/drivers/isdn/hardware/mISDN/octvqe/octvqe.ko
mISDN/trunk/drivers/isdn/hardware/mISDN/sedl_fax.c
mISDN/trunk/drivers/isdn/hardware/mISDN/stack.c
mISDN/trunk/drivers/isdn/hardware/mISDN/sysfs.h
mISDN/trunk/drivers/isdn/hardware/mISDN/sysfs_inst.c
mISDN/trunk/drivers/isdn/hardware/mISDN/sysfs_obj.c
mISDN/trunk/drivers/isdn/hardware/mISDN/sysfs_st.c
mISDN/trunk/drivers/isdn/hardware/mISDN/w6692.c
mISDN/trunk/drivers/isdn/hardware/mISDN/xhfc_su.c
mISDN/trunk/include/linux/mISDNif.h
Modified: mISDN/trunk/Makefile
URL: http://svn.digium.com/svn-view/thirdparty/mISDN/trunk/Makefile?view=diff&rev=86&r1=85&r2=86
==============================================================================
--- mISDN/trunk/Makefile (original)
+++ mISDN/trunk/Makefile Thu Mar 12 18:12:32 2009
@@ -2,7 +2,7 @@
MAJOR=1
MINOR=1
-SUBMINOR=8
+SUBMINOR=9.1
MODIFIER_VERSION:=-Digium-$(shell build_tools/make_version . | sed -e "s/\//_/g")
@@ -22,7 +22,6 @@
UPDATE_MODULES=$(shell which update-modules)
MODULES_UPDATE=$(shell which modules-update)
DEPMOD=$(shell which depmod)
-
MISDNDIR=$(BASEDIR)
MISDN_SRC=$(MISDNDIR)/drivers/isdn/hardware/mISDN
@@ -79,10 +78,10 @@
cp mISDN.modprobe.d $(INSTALL_PREFIX)/etc/modules.d/mISDN
test_old_misdn:
- @if echo "#include <linux/mISDNif.h>" | gcc -C -E - 2>/dev/null 1>/dev/null ; then \
- if ! echo "#include <linux/mISDNif.h>\n#if MISDN_MAJOR_VERSION < 4\n#error old mISDNif.h\n#endif\n" | gcc -C -E - 2>/dev/null 1>/dev/null ; then \
- echo "\n!!You should remove the following files:\n\n$(LINUX)/include/linux/mISDNif.h\n$(LINUX)/include/linux/isdn_compat.h\n/usr/include/linux/mISDNif.h\n/usr/include/linux/isdn_compat.h\n\nIn order to upgrade to the mqueue branch\n\n"; \
- echo "I can do that for you, just type: make force\n\n" ; \
+ @if echo -n "#include <linux/mISDNif.h>" | gcc -C -E - 2>/dev/null 1>/dev/null ; then \
+ if ! echo -n "#include <linux/mISDNif.h>\n#if MISDN_MAJOR_VERSION < 4\n#error old mISDNif.h\n#endif\n" | gcc -C -E - 2>/dev/null 1>/dev/null ; then \
+ echo -n "\n!!You should remove the following files:\n\n$(LINUX)/include/linux/mISDNif.h\n$(LINUX)/include/linux/isdn_compat.h\n/usr/include/linux/mISDNif.h\n/usr/include/linux/isdn_compat.h\n\nIn order to upgrade to the mqueue branch\n\n"; \
+ echo -n "I can do that for you, just type: make force\n\n" ; \
exit 1; \
fi ;\
fi
Modified: mISDN/trunk/config/mISDN
URL: http://svn.digium.com/svn-view/thirdparty/mISDN/trunk/config/mISDN?view=diff&rev=86&r1=85&r2=86
==============================================================================
--- mISDN/trunk/config/mISDN (original)
+++ mISDN/trunk/config/mISDN Thu Mar 12 18:12:32 2009
@@ -389,7 +389,7 @@
addcard "w6692pci" "" 1 'mode="te" link="ptmp"'
done
if [ -e ${LSUSB} ]; then
- for line in $(${LSUSB} | ${GREP} "0959:2bd0\|0675:1688\|07b0:0007\|0742:200\(7\|8\|9\|A\)\|08e3:0301\|07fa:084\(7\|8\)\|07ba:0006"); do
+ for line in $(${LSUSB} | ${GREP} "0959:2bd0\|0675:1688\|07b0:0007\|0742:200\(7\|8\|9\|A\)\|08e3:0301\|07fa:084\(7\|8\)\|07ba:0006\|0586:0102"); do
addcard "hfcsusb" "" 1 'mode="te" link="ptmp"'
done
fi
Modified: mISDN/trunk/drivers/isdn/hardware/mISDN/app_plci.c
URL: http://svn.digium.com/svn-view/thirdparty/mISDN/trunk/drivers/isdn/hardware/mISDN/app_plci.c?view=diff&rev=86&r1=85&r2=86
==============================================================================
--- mISDN/trunk/drivers/isdn/hardware/mISDN/app_plci.c (original)
+++ mISDN/trunk/drivers/isdn/hardware/mISDN/app_plci.c Thu Mar 12 18:12:32 2009
@@ -9,6 +9,10 @@
#define AppPlciDebug(aplci, lev, fmt, args...) \
capidebug(lev, fmt, ## args)
+
+#ifndef CAPIUTIL_VERSION
+#define CAPIUTIL_VERSION 1
+#endif
static void AppPlciClearOtherApps(AppPlci_t *);
static void AppPlciInfoIndMsg(AppPlci_t *, __u32, unsigned char);
Modified: mISDN/trunk/drivers/isdn/hardware/mISDN/avm_fritz.c
URL: http://svn.digium.com/svn-view/thirdparty/mISDN/trunk/drivers/isdn/hardware/mISDN/avm_fritz.c?view=diff&rev=86&r1=85&r2=86
==============================================================================
--- mISDN/trunk/drivers/isdn/hardware/mISDN/avm_fritz.c (original)
+++ mISDN/trunk/drivers/isdn/hardware/mISDN/avm_fritz.c Thu Mar 12 18:12:32 2009
@@ -886,13 +886,13 @@
}
reset_avmpcipnp(fc); /* disable IRQ */
if (fc->type == AVM_FRITZ_PCIV2) {
- if (request_irq(fc->irq, avm_fritzv2_interrupt, shared, id, fc)) {
+ if (request_irq(fc->irq, (void *)avm_fritzv2_interrupt, shared, id, fc)) {
printk(KERN_WARNING "mISDN: couldn't get interrupt %d\n",
fc->irq);
return(-EIO);
}
} else {
- if (request_irq(fc->irq, avm_fritz_interrupt, shared, id, fc)) {
+ if (request_irq(fc->irq, (void *)avm_fritz_interrupt, shared, id, fc)) {
printk(KERN_WARNING "mISDN: couldn't get interrupt %d\n",
fc->irq);
return(-EIO);
@@ -1195,7 +1195,11 @@
card->dch.debug = debug;
spin_lock_init(&card->lock);
card->dch.inst.hwlock = &card->lock;
- card->dch.inst.class_dev.dev = dev;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
+ card->dch.inst.class_dev.parent = dev;
+#else
+ card->dch.inst.class_dev.dev = dev;
+#endif
card->dch.inst.pid.layermask = ISDN_LAYER(0);
card->dch.inst.pid.protocol[0] = ISDN_PID_L0_TE_S0;
mISDN_init_instance(&card->dch.inst, &fritz, card, mISDN_ISAC_l1hw);
@@ -1207,7 +1211,11 @@
mISDN_init_instance(&card->bch[i].inst, &fritz, card, hdlc_down);
card->bch[i].inst.pid.layermask = ISDN_LAYER(0);
card->bch[i].inst.hwlock = &card->lock;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
+ card->bch[i].inst.class_dev.parent = dev;
+#else
card->bch[i].inst.class_dev.dev = dev;
+#endif
card->bch[i].debug = debug;
sprintf(card->bch[i].inst.name, "%s B%d", card->dch.inst.name, i+1);
mISDN_initchannel(&card->bch[i], MSK_INIT_BCHANNEL, MAX_DATA_MEM);
Modified: mISDN/trunk/drivers/isdn/hardware/mISDN/core.c
URL: http://svn.digium.com/svn-view/thirdparty/mISDN/trunk/drivers/isdn/hardware/mISDN/core.c?view=diff&rev=86&r1=85&r2=86
==============================================================================
--- mISDN/trunk/drivers/isdn/hardware/mISDN/core.c (original)
+++ mISDN/trunk/drivers/isdn/hardware/mISDN/core.c Thu Mar 12 18:12:32 2009
@@ -701,8 +701,10 @@
struct modulelist *ml;
read_lock(&mISDN_modules_lock);
- list_for_each_entry(ml, &mISDN_modulelist, list)
- module_put(ml->module);
+ list_for_each_entry(ml, &mISDN_modulelist, list) {
+ if (module_refcount(ml->module) > 0)
+ module_put(ml->module);
+ }
read_unlock(&mISDN_modules_lock);
}
@@ -756,7 +758,11 @@
if (core_debug & DEBUG_CORE_FUNC)
printk(KERN_DEBUG "mISDN_unregister: mISDN_objectlist(%p<-%p->%p)\n",
mISDN_objectlist.prev, &mISDN_objectlist, mISDN_objectlist.next);
- class_device_unregister(&obj->class_dev);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
+ device_unregister(&obj->class_dev);
+#else
+ class_device_unregister(&obj->class_dev);
+#endif
return(0);
}
Modified: mISDN/trunk/drivers/isdn/hardware/mISDN/debugtool.c
URL: http://svn.digium.com/svn-view/thirdparty/mISDN/trunk/drivers/isdn/hardware/mISDN/debugtool.c?view=diff&rev=86&r1=85&r2=86
==============================================================================
--- mISDN/trunk/drivers/isdn/hardware/mISDN/debugtool.c (original)
+++ mISDN/trunk/drivers/isdn/hardware/mISDN/debugtool.c Thu Mar 12 18:12:32 2009
@@ -163,15 +163,22 @@
}
/* sysfs */
-static void dt_class_release (struct class_device *dev)
-{}
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
+static void dt_class_release (struct device *dev) {}
+#else
+static void dt_class_release (struct class_device *dev) {}
+#endif
static struct class dt_class = {
.name = "mISDN-debugtool",
#ifndef CLASS_WITHOUT_OWNER
.owner = THIS_MODULE,
#endif
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
+ .dev_release = &dt_class_release,
+#else
.release = &dt_class_release,
+#endif
};
static ssize_t attr_show_enabled (struct class *class, char *buf)
@@ -235,7 +242,11 @@
if (thread) {
lock_kernel();
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
+ ret = kill_pid(find_pid_ns(thread->pid, &init_pid_ns), SIGKILL, 1);
+#else
ret = kill_proc(thread->pid, SIGKILL, 1);
+#endif
unlock_kernel();
if (ret < 0)
printk(KERN_INFO MODULE_NAME ": Unknown error (%d) while trying to terminate kernel thread!\n", -ret);
Modified: mISDN/trunk/drivers/isdn/hardware/mISDN/hfc_multi.c
URL: http://svn.digium.com/svn-view/thirdparty/mISDN/trunk/drivers/isdn/hardware/mISDN/hfc_multi.c?view=diff&rev=86&r1=85&r2=86
==============================================================================
--- mISDN/trunk/drivers/isdn/hardware/mISDN/hfc_multi.c (original)
+++ mISDN/trunk/drivers/isdn/hardware/mISDN/hfc_multi.c Thu Mar 12 18:12:32 2009
@@ -1198,7 +1198,7 @@
} else
led |= 1<<i;
}
- unsigned long leddw=led << 24 | led << 16 | led << 8 | led;
+ unsigned long leddw = led << 24 | led << 16 | led << 8 | led;
//HFC_outb(hc, R_BRG_PCM_CFG, 1);
//HFC_outb(c, R_BRG_PCM_CFG, (0x0 << 6) | 0x3); /*was _io before*/
#ifndef CONFIG_HFCMULTI_PCIMEM
@@ -3299,7 +3299,7 @@
disable_hwirq(hc);
spin_unlock_irqrestore(&hc->lock, flags);
- if (request_irq(hc->pci_dev->irq, hfcmulti_interrupt, SA_SHIRQ, "HFC-multi", hc)) {
+ if (request_irq(hc->pci_dev->irq, (void *)hfcmulti_interrupt, SA_SHIRQ, "HFC-multi", hc)) {
printk(KERN_WARNING "mISDN: Could not get interrupt %d.\n", hc->pci_dev->irq);
return(-EIO);
}
@@ -4048,7 +4048,11 @@
//chan->debug = debug;
chan->inst.obj = &HFCM_obj;
chan->inst.hwlock = &hc->lock;
- chan->inst.class_dev.dev = &pdev->dev;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
+ chan->inst.class_dev.parent = &pdev->dev;
+#else
+ chan->inst.class_dev.dev = &pdev->dev;
+#endif
mISDN_init_instance(&chan->inst, &HFCM_obj, hc, hfcmulti_l2l1);
chan->inst.pid.layermask = ISDN_LAYER(0);
sprintf(chan->inst.name, "HFCm%d/%d", HFC_idx+1, pt+1);
@@ -4076,7 +4080,12 @@
mISDN_init_instance(&chan->inst, &HFCM_obj, hc, hfcmulti_l2l1);
chan->inst.pid.layermask = ISDN_LAYER(0);
chan->inst.hwlock = &hc->lock;
- chan->inst.class_dev.dev = &pdev->dev;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
+ chan->inst.class_dev.parent = &pdev->dev;
+#else
+ chan->inst.class_dev.dev = &pdev->dev;
+#endif
+
//bch->debug = debug;
sprintf(chan->inst.name, "%s B%d",
hc->chan[ch].ch->inst.name, i+1);
@@ -4479,9 +4488,11 @@
id_table: hfmultipci_ids,
};
-static void __exit
-HFCmulti_cleanup(void)
-{
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27)
+static void HFCmulti_cleanup(void) {
+#else
+static void __exit HFCmulti_cleanup(void) {
+#endif
hfc_multi_t *hc,*next;
int err;
Modified: mISDN/trunk/drivers/isdn/hardware/mISDN/hfc_pci.c
URL: http://svn.digium.com/svn-view/thirdparty/mISDN/trunk/drivers/isdn/hardware/mISDN/hfc_pci.c?view=diff&rev=86&r1=85&r2=86
==============================================================================
--- mISDN/trunk/drivers/isdn/hardware/mISDN/hfc_pci.c (original)
+++ mISDN/trunk/drivers/isdn/hardware/mISDN/hfc_pci.c Thu Mar 12 18:12:32 2009
@@ -1693,7 +1693,7 @@
spin_lock_irqsave(&hc->lock, flags);
disable_hwirq(hc);
spin_unlock_irqrestore(&hc->lock, flags);
- if (request_irq(hc->irq, hfcpci_interrupt, SA_SHIRQ, "HFC PCI", hc)) {
+ if (request_irq(hc->irq, (void *)hfcpci_interrupt, SA_SHIRQ, "HFC PCI", hc)) {
printk(KERN_WARNING "mISDN: couldn't get interrupt %d\n", hc->irq);
return(-EIO);
}
@@ -2215,7 +2215,12 @@
HFC_cnt);
return(err);
}
- card->dch.inst.class_dev.dev = &card->hw.dev->dev;
+// card->dch.inst.class_dev.dev = &card->hw.dev->dev;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
+ card->dch.inst.class_dev.parent = &card->hw.dev->dev;
+#else
+ card->dch.inst.class_dev.dev = &card->hw.dev->dev;
+#endif
HFC_cnt++;
if (prev) {
dst = prev->dch.inst.st;
@@ -2234,7 +2239,12 @@
}
mISDN_ctrl(dst, MGR_STOPSTACK | REQUEST, NULL);
for (i = 0; i < 2; i++) {
- card->bch[i].inst.class_dev.dev = &card->hw.dev->dev;
+ //card->bch[i].inst.class_dev.dev = &card->hw.dev->dev;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
+ card->bch[i].inst.class_dev.parent = &card->hw.dev->dev;
+#else
+ card->bch[i].inst.class_dev.dev = &card->hw.dev->dev;
+#endif
if ((err = mISDN_ctrl(dst, MGR_NEWSTACK | REQUEST, &card->bch[i].inst))) {
printk(KERN_ERR "MGR_ADDSTACK bchan error %d\n", err);
mISDN_ctrl(card->dch.inst.st, MGR_DELSTACK | REQUEST, NULL);
Modified: mISDN/trunk/drivers/isdn/hardware/mISDN/hfcs_mini.c
URL: http://svn.digium.com/svn-view/thirdparty/mISDN/trunk/drivers/isdn/hardware/mISDN/hfcs_mini.c?view=diff&rev=86&r1=85&r2=86
==============================================================================
Binary files - no diff available.
Modified: mISDN/trunk/drivers/isdn/hardware/mISDN/hfcs_usb.c
URL: http://svn.digium.com/svn-view/thirdparty/mISDN/trunk/drivers/isdn/hardware/mISDN/hfcs_usb.c?view=diff&rev=86&r1=85&r2=86
==============================================================================
--- mISDN/trunk/drivers/isdn/hardware/mISDN/hfcs_usb.c (original)
+++ mISDN/trunk/drivers/isdn/hardware/mISDN/hfcs_usb.c Thu Mar 12 18:12:32 2009
@@ -202,6 +202,12 @@
{LED_SCHEME1, {0x80, -64, -32, -16},
"Twister ISDN TA"}),
},
+ {
+ USB_DEVICE(0x0586, 0x0102),
+ .driver_info = (unsigned long) &((hfcsusb_vdata)
+ {LED_SCHEME1, {0x88, -64, -32, -16},
+ "ZyXEL OMNI.NET USB II"}),
+ },
{ }
};
@@ -1785,6 +1791,31 @@
start_isoc_chain(card->fifos + HFCUSB_B2_TX, ISOC_PACKETS_B,
(usb_complete_t)tx_iso_complete, 1);
+#ifdef TEST_LEDS
+ __u8 t;
+ t = 0;
+ /*
+ __u8 s;
+ for (s=0; s<10; s++) {
+ for (t=0; t<8; t++) {
+ queued_Write_hfc(card, HFCUSB_P_DATA, 1 << t);
+ printk ("TEST LED: P_DATA: 0x%x\n", 1<<t);
+ set_current_state(TASK_UNINTERRUPTIBLE);
+ schedule_timeout(2 * HZ);
+ }
+ }
+ */
+
+ // LED test toggle sequence: USB, S0, B1, B2
+ for (t=LED_POWER_ON; t<=LED_B2_OFF; t++) {
+ handle_led(card, t);
+ set_current_state(TASK_UNINTERRUPTIBLE);
+ printk ("TEST_LED (%d) P_DATA: 0x%02x\n",
+ t, card->led_state);
+ schedule_timeout(2 * HZ);
+ }
+#endif
+
handle_led(card, LED_POWER_ON);
return (0);
@@ -1873,7 +1904,11 @@
card->chan[D].inst.hwlock = &card->lock;
card->chan[D].inst.pid.layermask = ISDN_LAYER(0);
card->chan[D].inst.pid.protocol[0] = ISDN_PID_L0_TE_S0;
- card->chan[D].inst.class_dev.dev = &card->dev->dev;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
+ card->chan[D].inst.class_dev.parent = &card->dev->dev;
+#else
+ card->chan[D].inst.class_dev.dev = &card->dev->dev;
+#endif
mISDN_init_instance(&card->chan[D].inst, &hw_mISDNObj, card, hfcsusb_l2l1);
sprintf(card->chan[D].inst.name, "hfcsusb_%d", hfcsusb_cnt + 1);
mISDN_set_dchannel_pid(&pid, protocol[hfcsusb_cnt], layermask[hfcsusb_cnt]);
@@ -1886,7 +1921,11 @@
mISDN_init_instance(&card->chan[i].inst, &hw_mISDNObj, card, hfcsusb_l2l1);
card->chan[i].inst.pid.layermask = ISDN_LAYER(0);
card->chan[i].inst.hwlock = &card->lock;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
+ card->chan[i].inst.class_dev.parent = &card->dev->dev;
+#else
card->chan[i].inst.class_dev.dev = &card->dev->dev;
+#endif
card->chan[i].debug = debug;
sprintf(card->chan[i].inst.name, "%s B%d",
card->chan[D].inst.name, i + 1);
Modified: mISDN/trunk/drivers/isdn/hardware/mISDN/netjet.c
URL: http://svn.digium.com/svn-view/thirdparty/mISDN/trunk/drivers/isdn/hardware/mISDN/netjet.c?view=diff&rev=86&r1=85&r2=86
==============================================================================
--- mISDN/trunk/drivers/isdn/hardware/mISDN/netjet.c (original)
+++ mISDN/trunk/drivers/isdn/hardware/mISDN/netjet.c Thu Mar 12 18:12:32 2009
@@ -556,10 +556,11 @@
return(ret);
}
-
-void __init
-inittiger(netjet_t *card)
-{
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27)
+void inittiger(netjet_t *card) {
+#else
+void __init inittiger(netjet_t *card) {
+#endif
struct tiger_hw *tiger0, *tiger1;
/* NOTE: I believe hisax tiger driver is wrong.
@@ -1544,7 +1545,7 @@
nj_disable_hwirq(card);
spin_unlock_irqrestore(&card->lock, flags);
- if (request_irq(card->irq, nj_interrupt, SA_SHIRQ, "NETjet", card)) {
+ if (request_irq(card->irq, (void*)nj_interrupt, SA_SHIRQ, "NETjet", card)) {
printk(KERN_WARNING "mISDN: couldn't get interrupt %d\n",
card->irq);
return (-EIO);
@@ -1647,7 +1648,11 @@
card->dch.debug = debug;
spin_lock_init(&card->lock);
card->dch.inst.hwlock = &card->lock;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
+ card->dch.inst.class_dev.parent = &card->pdev->dev;
+#else
card->dch.inst.class_dev.dev = &card->pdev->dev;
+#endif
card->dch.inst.pid.layermask = ISDN_LAYER(0);
card->dch.inst.pid.protocol[0] = ISDN_PID_L0_TE_S0;
mISDN_init_instance(&card->dch.inst, &netjet_mISDN, card, mISDN_ISAC_l1hw);
@@ -1659,7 +1664,11 @@
mISDN_init_instance(&card->bch[i].inst, &netjet_mISDN, card, tiger_l2l1B);
card->bch[i].inst.pid.layermask = ISDN_LAYER(0);
card->bch[i].inst.hwlock = &card->lock;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
+ card->bch[i].inst.class_dev.parent = &card->pdev->dev;
+#else
card->bch[i].inst.class_dev.dev = &card->pdev->dev;
+#endif
card->bch[i].debug = debug;
sprintf(card->bch[i].inst.name, "%s B%d", card->dch.inst.name, i+1);
mISDN_initchannel(&card->bch[i], MSK_INIT_BCHANNEL, MAX_DATA_MEM);
Modified: mISDN/trunk/drivers/isdn/hardware/mISDN/octvqe/octvqe.ko
URL: http://svn.digium.com/svn-view/thirdparty/mISDN/trunk/drivers/isdn/hardware/mISDN/octvqe/octvqe.ko?view=diff&rev=86&r1=85&r2=86
==============================================================================
Binary files - no diff available.
Modified: mISDN/trunk/drivers/isdn/hardware/mISDN/sedl_fax.c
URL: http://svn.digium.com/svn-view/thirdparty/mISDN/trunk/drivers/isdn/hardware/mISDN/sedl_fax.c?view=diff&rev=86&r1=85&r2=86
==============================================================================
--- mISDN/trunk/drivers/isdn/hardware/mISDN/sedl_fax.c (original)
+++ mISDN/trunk/drivers/isdn/hardware/mISDN/sedl_fax.c Thu Mar 12 18:12:32 2009
@@ -26,10 +26,15 @@
* the firmware onto the card.
*/
+#include <linux/version.h>
#include <linux/module.h>
#include <linux/pci.h>
#include <linux/delay.h>
-#include <asm/semaphore.h>
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27)
+# include <linux/semaphore.h>
+#else
+# include <asm/semaphore.h>
+#endif
#ifdef NEW_ISAPNP
#include <linux/pnp.h>
#else
@@ -680,18 +685,26 @@
card->dch.inst.hwlock = &card->lock;
card->dch.inst.pid.layermask = ISDN_LAYER(0);
card->dch.inst.pid.protocol[0] = ISDN_PID_L0_TE_S0;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
+ card->dch.inst.class_dev.parent = dev;
+#else
card->dch.inst.class_dev.dev = dev;
+#endif
mISDN_init_instance(&card->dch.inst, &speedfax, card, mISDN_ISAC_l1hw);
sprintf(card->dch.inst.name, "SpeedFax%d", sedl_cnt+1);
mISDN_set_dchannel_pid(&pid, protocol[sedl_cnt], layermask[sedl_cnt]);
mISDN_initchannel(&card->dch, MSK_INIT_DCHANNEL, MAX_DFRAME_LEN_L1);
for (i=0; i<2; i++) {
card->bch[i].channel = i;
- mISDN_init_instance(&card->bch[i].inst, &speedfax, card, isar_down);
- card->bch[i].inst.pid.layermask = ISDN_LAYER(0);
- card->bch[i].inst.hwlock = &card->lock;
- card->bch[i].debug = debug;
+ mISDN_init_instance(&card->bch[i].inst, &speedfax, card, isar_down);
+ card->bch[i].inst.pid.layermask = ISDN_LAYER(0);
+ card->bch[i].inst.hwlock = &card->lock;
+ card->bch[i].debug = debug;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
+ card->bch[i].inst.class_dev.parent = dev;
+#else
card->bch[i].inst.class_dev.dev = dev;
+#endif
sprintf(card->bch[i].inst.name, "%s B%d", card->dch.inst.name, i+1);
mISDN_initchannel(&card->bch[i], MSK_INIT_BCHANNEL, MAX_DATA_MEM);
}
Modified: mISDN/trunk/drivers/isdn/hardware/mISDN/stack.c
URL: http://svn.digium.com/svn-view/thirdparty/mISDN/trunk/drivers/isdn/hardware/mISDN/stack.c?view=diff&rev=86&r1=85&r2=86
==============================================================================
--- mISDN/trunk/drivers/isdn/hardware/mISDN/stack.c (original)
+++ mISDN/trunk/drivers/isdn/hardware/mISDN/stack.c Thu Mar 12 18:12:32 2009
@@ -654,7 +654,9 @@
new_stack(mISDNstack_t *master, mISDNinstance_t *inst)
{
mISDNstack_t *newst;
+#ifndef SYSFS_SUPPORT_2_6_24
int err;
+#endif
u_long flags;
if (core_debug & DEBUG_CORE_FUNC)
@@ -969,7 +971,10 @@
int
register_layer(mISDNstack_t *st, mISDNinstance_t *inst)
{
- int idx, err;
+ int idx;
+#ifndef SYSFS_SUPPORT_2_6_24
+ int err;
+#endif
mISDNinstance_t *dup;
u_long flags;
Modified: mISDN/trunk/drivers/isdn/hardware/mISDN/sysfs.h
URL: http://svn.digium.com/svn-view/thirdparty/mISDN/trunk/drivers/isdn/hardware/mISDN/sysfs.h?view=diff&rev=86&r1=85&r2=86
==============================================================================
--- mISDN/trunk/drivers/isdn/hardware/mISDN/sysfs.h (original)
+++ mISDN/trunk/drivers/isdn/hardware/mISDN/sysfs.h Thu Mar 12 18:12:32 2009
@@ -27,6 +27,57 @@
return sprintf(buf, "%d\n", pid->maxplen);
}
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
+#define MISDN_PROTO(_type, _name, _mode) \
+static ssize_t show_protocol_##_name(struct device *class_dev, struct device_attribute *attr, char *buf) \
+{ \
+ _type##_t *p = to_##_type(class_dev); \
+ return(mISDN_show_pid_protocol(&p->_name, buf)); \
+} \
+struct device_attribute _type##_attr_protocol_##_name = \
+ __ATTR(protocol,_mode,show_protocol_##_name, NULL); \
+static ssize_t show_parameter_##_name(struct device *class_dev, struct device_attribute *attr, char *buf) \
+{ \
+ _type##_t *p = to_##_type(class_dev); \
+ return(mISDN_show_pid_parameter(&p->_name, buf)); \
+} \
+struct device_attribute _type##_attr_parameter_##_name = \
+ __ATTR(parameter,_mode,show_parameter_##_name, NULL); \
+static ssize_t show_layermask_##_name(struct device *class_dev, struct device_attribute *attr, char *buf) \
+{ \
+ _type##_t *p = to_##_type(class_dev); \
+ return(show_pid_layermask(&p->_name, buf)); \
+} \
+struct device_attribute _type##_attr_layermask_##_name = \
+ __ATTR(layermask,_mode,show_layermask_##_name, NULL); \
+static ssize_t show_global_##_name(struct device *class_dev, struct device_attribute *attr, char *buf) \
+{ \
+ _type##_t *p = to_##_type(class_dev); \
+ return(show_pid_global(&p->_name, buf)); \
+} \
+struct device_attribute _type##_attr_global_##_name = \
+ __ATTR(global,_mode,show_global_##_name, NULL); \
+static ssize_t show_maxplen_##_name(struct device *class_dev, struct device_attribute *attr, char *buf) \
+{ \
+ _type##_t *p = to_##_type(class_dev); \
+ return(show_pid_maxplen(&p->_name, buf)); \
+} \
+struct device_attribute _type##_attr_maxplen_##_name = \
+ __ATTR(maxplen,_mode,show_maxplen_##_name, NULL); \
+static struct attribute *attr_##_name[] = { \
+ &_type##_attr_global_##_name.attr, \
+ &_type##_attr_layermask_##_name.attr, \
+ &_type##_attr_maxplen_##_name.attr, \
+ &_type##_attr_parameter_##_name.attr, \
+ &_type##_attr_protocol_##_name.attr, \
+ NULL \
+}; \
+static struct attribute_group _name##_group = { \
+ .name = __stringify(_name), \
+ .attrs = attr_##_name, \
+}
+
+#else
#define MISDN_PROTO(_type, _name, _mode) \
static ssize_t show_protocol_##_name(struct class_device *class_dev, char *buf) \
{ \
@@ -75,3 +126,4 @@
.name = __stringify(_name), \
.attrs = attr_##_name, \
}
+#endif
Modified: mISDN/trunk/drivers/isdn/hardware/mISDN/sysfs_inst.c
URL: http://svn.digium.com/svn-view/thirdparty/mISDN/trunk/drivers/isdn/hardware/mISDN/sysfs_inst.c?view=diff&rev=86&r1=85&r2=86
==============================================================================
--- mISDN/trunk/drivers/isdn/hardware/mISDN/sysfs_inst.c (original)
+++ mISDN/trunk/drivers/isdn/hardware/mISDN/sysfs_inst.c Thu Mar 12 18:12:32 2009
@@ -12,15 +12,41 @@
#define to_mISDNinstance(d) container_of(d, mISDNinstance_t, class_dev)
-static ssize_t show_inst_id(struct class_device *class_dev, char *buf)
-{
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
+static ssize_t show_inst_id(struct device *class_dev, struct device_attribute *attr, char *buf) {
+ mISDNinstance_t *inst = to_mISDNinstance(class_dev);
+ return sprintf(buf, "%08x\n", inst->id);
+}
+static DEVICE_ATTR(id, S_IRUGO, show_inst_id, NULL);
+
+static ssize_t show_inst_name(struct device *class_dev, struct device_attribute *attr, char *buf) {
+ mISDNinstance_t *inst = to_mISDNinstance(class_dev);
+ return sprintf(buf, "%s\n", inst->name);
+}
+static DEVICE_ATTR(name, S_IRUGO, show_inst_name, NULL);
+
+static ssize_t show_inst_extentions(struct device *class_dev, struct device_attribute *attr, char *buf)
+{
+ mISDNinstance_t *inst = to_mISDNinstance(class_dev);
+ return sprintf(buf, "%08x\n", inst->extentions);
+}
+static DEVICE_ATTR(extentions, S_IRUGO, show_inst_extentions, NULL);
+
+static ssize_t show_inst_regcnt(struct device *class_dev, struct device_attribute *attr, char *buf)
+{
+ mISDNinstance_t *inst = to_mISDNinstance(class_dev);
+ return sprintf(buf, "%d\n", inst->regcnt);
+}
+static DEVICE_ATTR(regcnt, S_IRUGO, show_inst_regcnt, NULL);
+
+#else
+static ssize_t show_inst_id(struct class_device *class_dev, char *buf) {
mISDNinstance_t *inst = to_mISDNinstance(class_dev);
return sprintf(buf, "%08x\n", inst->id);
}
static CLASS_DEVICE_ATTR(id, S_IRUGO, show_inst_id, NULL);
-static ssize_t show_inst_name(struct class_device *class_dev, char *buf)
-{
+static ssize_t show_inst_name(struct class_device *class_dev, char *buf) {
mISDNinstance_t *inst = to_mISDNinstance(class_dev);
return sprintf(buf, "%s\n", inst->name);
}
@@ -39,13 +65,31 @@
return sprintf(buf, "%d\n", inst->regcnt);
}
static CLASS_DEVICE_ATTR(regcnt, S_IRUGO, show_inst_regcnt, NULL);
+#endif
#ifdef SYSFS_SUPPORT
MISDN_PROTO(mISDNinstance, pid, S_IRUGO);
#endif
-static void release_mISDN_inst(struct class_device *dev)
-{
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
+static void release_mISDN_inst(struct device *dev) {
+#ifdef SYSFS_SUPPORT
+ mISDNinstance_t *inst = to_mISDNinstance(dev);
+
+ if (inst->obj)
+ sysfs_remove_link(&dev->kobj, "obj");
+ sysfs_remove_group(&inst->class_dev.kobj, &pid_group);
+#endif
+ if (core_debug & DEBUG_SYSFS)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
+ printk(KERN_INFO "release instance class dev %s\n", dev->bus_id);
+#else
+ printk(KERN_INFO "release instance class dev %s\n", dev->class_id);
+#endif
+}
+
+#else
+static void release_mISDN_inst(struct class_device *dev) {
#ifdef SYSFS_SUPPORT
mISDNinstance_t *inst = to_mISDNinstance(dev);
@@ -54,15 +98,24 @@
sysfs_remove_group(&inst->class_dev.kobj, &pid_group);
#endif
if (core_debug & DEBUG_SYSFS)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
+ printk(KERN_INFO "release instance class dev %s\n", dev->bus_id);
+#else
printk(KERN_INFO "release instance class dev %s\n", dev->class_id);
-}
+#endif
+}
+#endif
static struct class inst_dev_class = {
.name = "mISDN-instances",
#ifndef CLASS_WITHOUT_OWNER
.owner = THIS_MODULE,
#endif
- .release = &release_mISDN_inst,
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
+ .dev_release = &release_mISDN_inst,
+#else
+ .release = &release_mISDN_inst
+#endif
};
int
@@ -73,15 +126,27 @@
#endif
inst->class_dev.class = &inst_dev_class;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
+ snprintf(inst->class_dev.bus_id, BUS_ID_SIZE, "inst-%08x", inst->id);
+ err = device_register(&inst->class_dev);
+#else
snprintf(inst->class_dev.class_id, BUS_ID_SIZE, "inst-%08x", inst->id);
err = class_device_register(&inst->class_dev);
+#endif
if (err)
return(err);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
+ device_create_file(&inst->class_dev, &dev_attr_id);
+ device_create_file(&inst->class_dev, &dev_attr_name);
+ device_create_file(&inst->class_dev, &dev_attr_extentions);
+ device_create_file(&inst->class_dev, &dev_attr_regcnt);
+#else
class_device_create_file(&inst->class_dev, &class_device_attr_id);
class_device_create_file(&inst->class_dev, &class_device_attr_name);
class_device_create_file(&inst->class_dev, &class_device_attr_extentions);
class_device_create_file(&inst->class_dev, &class_device_attr_regcnt);
+#endif
#ifdef SYSFS_SUPPORT
err = sysfs_create_group(&inst->class_dev.kobj, &pid_group);
@@ -123,7 +188,11 @@
sysfs_remove_link(&inst->st->class_dev.kobj, "mgr");
#endif
}
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
+ device_unregister(&inst->class_dev);
+#else
class_device_unregister(&inst->class_dev);
+#endif
}
}
Modified: mISDN/trunk/drivers/isdn/hardware/mISDN/sysfs_obj.c
URL: http://svn.digium.com/svn-view/thirdparty/mISDN/trunk/drivers/isdn/hardware/mISDN/sysfs_obj.c?view=diff&rev=86&r1=85&r2=86
==============================================================================
--- mISDN/trunk/drivers/isdn/hardware/mISDN/sysfs_obj.c (original)
+++ mISDN/trunk/drivers/isdn/hardware/mISDN/sysfs_obj.c Thu Mar 12 18:12:32 2009
@@ -12,27 +12,45 @@
#define to_mISDNobject(d) container_of(d, mISDNobject_t, class_dev)
-static ssize_t show_obj_name(struct class_device *class_dev, char *buf)
-{
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
+static ssize_t show_obj_name(struct device *class_dev, struct device_attribute *attr, char *buf) {
+ mISDNobject_t *obj = to_mISDNobject(class_dev);
+ return sprintf(buf, "%s\n", obj->name);
+}
+
+static DEVICE_ATTR(name, S_IRUGO, show_obj_name, NULL);
+
+static ssize_t show_obj_id(struct device *class_dev, struct device_attribute *attr, char *buf) {
+ mISDNobject_t *obj = to_mISDNobject(class_dev);
+ return sprintf(buf, "%d\n", obj->id);
+}
+static DEVICE_ATTR(id, S_IRUGO, show_obj_id, NULL);
+
+static ssize_t show_obj_refcnt(struct device *class_dev, struct device_attribute *attr, char *buf) {
+ mISDNobject_t *obj = to_mISDNobject(class_dev);
+ return sprintf(buf, "%d\n", obj->id);
+}
+static DEVICE_ATTR(refcnt, S_IRUGO, show_obj_refcnt, NULL);
+
+#else
+static ssize_t show_obj_name(struct class_device *class_dev, char *buf) {
mISDNobject_t *obj = to_mISDNobject(class_dev);
return sprintf(buf, "%s\n", obj->name);
}
-
static CLASS_DEVICE_ATTR(name, S_IRUGO, show_obj_name, NULL);
-static ssize_t show_obj_id(struct class_device *class_dev, char *buf)
-{
- mISDNobject_t *obj = to_mISDNobject(class_dev);
- return sprintf(buf, "%d\n", obj->id);
+static ssize_t show_obj_id(struct class_device *class_dev, char *buf) {
+ mISDNobject_t *obj = to_mISDNobject(class_dev);
+ return sprintf(buf, "%d\n", obj->id);
}
static CLASS_DEVICE_ATTR(id, S_IRUGO, show_obj_id, NULL);
-static ssize_t show_obj_refcnt(struct class_device *class_dev, char *buf)
-{
- mISDNobject_t *obj = to_mISDNobject(class_dev);
- return sprintf(buf, "%d\n", obj->refcnt);
+static ssize_t show_obj_refcnt(struct class_device *class_dev, char *buf) {
+ mISDNobject_t *obj = to_mISDNobject(class_dev);
+ return sprintf(buf, "%d\n", obj->id);
}
static CLASS_DEVICE_ATTR(refcnt, S_IRUGO, show_obj_refcnt, NULL);
+#endif
ssize_t mISDN_show_pid_protocol(mISDN_pid_t *pid, char *buf)
{
@@ -77,7 +95,7 @@
MISDN_PROTO(mISDNobject, DPROTO, S_IRUGO);
#endif
-static void release_mISDN_obj(struct class_device *dev)
+static void release_mISDN_obj(struct device *dev)
{
#ifdef SYSFS_SUPPORT
mISDNobject_t *obj = to_mISDNobject(dev);
@@ -101,7 +119,11 @@
#ifndef CLASS_WITHOUT_OWNER
.owner = THIS_MODULE,
#endif
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20)
.release = &release_mISDN_obj,
+#else
+ .dev_release = &release_mISDN_obj,
+#endif
};
int
@@ -109,14 +131,25 @@
int err;
obj->class_dev.class = &obj_dev_class;
- snprintf(obj->class_dev.class_id, BUS_ID_SIZE, "obj-%d", obj->id);
- err = class_device_register(&obj->class_dev);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
+ snprintf(obj->class_dev.bus_id, BUS_ID_SIZE, "obj-%d", obj->id);
+ err = device_register(&obj->class_dev);
+#else
+ snprintf(obj->class_dev.class_id, BUS_ID_SIZE, "obj-%d", obj->id);
+ err = class_device_register(&obj->class_dev);
+#endif
if (err)
goto out;
- class_device_create_file(&obj->class_dev, &class_device_attr_id);
- class_device_create_file(&obj->class_dev, &class_device_attr_name);
- class_device_create_file(&obj->class_dev, &class_device_attr_refcnt);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
+ device_create_file(&obj->class_dev, &dev_attr_id);
+ device_create_file(&obj->class_dev, &dev_attr_name);
+ device_create_file(&obj->class_dev, &dev_attr_refcnt);
+#else
+ class_device_create_file(&obj->class_dev, &class_device_attr_id);
+ class_device_create_file(&obj->class_dev, &class_device_attr_name);
+ class_device_create_file(&obj->class_dev, &class_device_attr_refcnt);
+#endif
#ifdef SYSFS_SUPPORT
err = sysfs_create_group(&obj->class_dev.kobj, &BPROTO_group);
if (err)
Modified: mISDN/trunk/drivers/isdn/hardware/mISDN/sysfs_st.c
URL: http://svn.digium.com/svn-view/thirdparty/mISDN/trunk/drivers/isdn/hardware/mISDN/sysfs_st.c?view=diff&rev=86&r1=85&r2=86
==============================================================================
--- mISDN/trunk/drivers/isdn/hardware/mISDN/sysfs_st.c (original)
+++ mISDN/trunk/drivers/isdn/hardware/mISDN/sysfs_st.c Thu Mar 12 18:12:32 2009
@@ -12,20 +12,34 @@
#define to_mISDNstack(d) container_of(d, mISDNstack_t, class_dev)
-static ssize_t show_st_id(struct class_device *class_dev, char *buf)
-{
- mISDNstack_t *st = to_mISDNstack(class_dev);
- return sprintf(buf, "%08x\n", st->id);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
+
+static ssize_t show_st_id(struct device *class_dev, struct device_attribute *attr, char *buf) {
+ mISDNstack_t *st = to_mISDNstack(class_dev);
+ return sprintf(buf, "%08x\n", st->id);
+}
+static DEVICE_ATTR(id, S_IRUGO, show_st_id, NULL);
+
+static ssize_t show_st_status(struct device *class_dev, struct device_attribute *attr, char *buf) {
+ mISDNstack_t *st = to_mISDNstack(class_dev);
+ return sprintf(buf, "0x%08lx\n", st->status);
+}
+
+static ssize_t store_st_status(struct device *class_dev, struct device_attribute *attr, const char *buf, size_t count)
+#else
+static ssize_t show_st_id(struct class_device *class_dev, char *buf) {
+ mISDNstack_t *st = to_mISDNstack(class_dev);
+ return sprintf(buf, "%08x\n", st->id);
}
static CLASS_DEVICE_ATTR(id, S_IRUGO, show_st_id, NULL);
-static ssize_t show_st_status(struct class_device *class_dev, char *buf)
-{
+static ssize_t show_st_status(struct class_device *class_dev, char *buf) {
mISDNstack_t *st = to_mISDNstack(class_dev);
return sprintf(buf, "0x%08lx\n", st->status);
}
static ssize_t store_st_status(struct class_device *class_dev, const char *buf, size_t count)
+#endif
{
mISDNstack_t *st = to_mISDNstack(class_dev);
ulong status;
@@ -59,9 +73,16 @@
wake_up_interruptible(&st->workq);
return(count);
}
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
+static DEVICE_ATTR(status, S_IRUGO | S_IWUSR, show_st_status, store_st_status);
+
+static ssize_t store_st_protocol(struct device *class_dev, struct device_attribute *attr, const char *buf, size_t count)
+#else
static CLASS_DEVICE_ATTR(status, S_IRUGO | S_IWUSR, show_st_status, store_st_status);
static ssize_t store_st_protocol(struct class_device *class_dev, const char *buf, size_t count)
+#endif
{
mISDNstack_t *st = to_mISDNstack(class_dev);
ulong tmp;
@@ -82,7 +103,11 @@
return(count);
}
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
+static ssize_t store_st_layermask(struct device *class_dev, struct device_attribute *attr, const char *buf, size_t count)
+#else
static ssize_t store_st_layermask(struct class_device *class_dev, const char *buf, size_t count)
+#endif
{
mISDNstack_t *st = to_mISDNstack(class_dev);
ulong mask = (1<<(MAX_LAYER_NR + 1)) -1;
@@ -95,7 +120,11 @@
return(count);
}
-static ssize_t store_st_parameter(struct class_device *class_dev, const char *buf, size_t count)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
+static ssize_t store_st_parameter(struct device *class_dev, struct device_attribute *attr, const char *buf, size_t count)
+#else
+static ssize_t store_st_parameter(struct class_device *class_dev, struct device_attribute *attr, const char *buf, size_t count)
+#endif
{
mISDNstack_t *st = to_mISDNstack(class_dev);
ulong tmp;
@@ -167,14 +196,23 @@
#endif
MISDN_PROTO(mISDNstack, new_pid, S_IRUGO);
-static ssize_t show_st_qlen(struct class_device *class_dev, char *buf)
-{
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
+static ssize_t show_st_qlen(struct device *class_dev, struct device_attribute *sttr, char *buf) {
+ mISDNstack_t *st = to_mISDNstack(class_dev);
+ return sprintf(buf, "%d\n", skb_queue_len(&st->msgq));
+}
+static DEVICE_ATTR(qlen, S_IRUGO, show_st_qlen, NULL);
+
+static void release_mISDN_stack(struct device *dev)
+#else
+static ssize_t show_st_qlen(struct class_device *class_dev, char *buf) {
mISDNstack_t *st = to_mISDNstack(class_dev);
return sprintf(buf, "%d\n", skb_queue_len(&st->msgq));
}
static CLASS_DEVICE_ATTR(qlen, S_IRUGO, show_st_qlen, NULL);
static void release_mISDN_stack(struct class_device *dev)
+#endif
{
#ifdef SYSFS_SUPPORT
mISDNstack_t *st = to_mISDNstack(dev);
@@ -204,7 +242,11 @@
#ifndef CLASS_WITHOUT_OWNER
.owner = THIS_MODULE,
#endif
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
+ .dev_release = &release_mISDN_stack,
+#else
.release = &release_mISDN_stack,
+#endif
};
int
@@ -216,6 +258,18 @@
#endif
st->class_dev.class = &stack_dev_class;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
+ if (st->id & FLG_CHILD_STACK)
+ snprintf(st->class_dev.bus_id, BUS_ID_SIZE, "chst-%08x", st->id);
+ else if (st->id & FLG_CLONE_STACK)
+ snprintf(st->class_dev.bus_id, BUS_ID_SIZE, "clst-%08x", st->id);
+ else
+ snprintf(st->class_dev.bus_id, BUS_ID_SIZE, "st-%08x", st->id);
+ if (st->mgr)
+ st->class_dev.parent = st->mgr->class_dev.parent;
+ err = device_register(&st->class_dev);
+
+#else
if (st->id & FLG_CHILD_STACK)
snprintf(st->class_dev.class_id, BUS_ID_SIZE, "chst-%08x", st->id);
else if (st->id & FLG_CLONE_STACK)
@@ -225,6 +279,7 @@
if (st->mgr)
[... 219 lines stripped ...]
More information about the thirdparty-commits
mailing list