compile mISDN for 3.13 / 3.14 kernels

Martin Bachem <[email protected]> Fri, 15 Aug 2014 09:51:38 +0200
Newsgroups gmane.linux.isdn.i4l.user
Message-ID <[email protected]>
Hi List, Hi Karsten,

don't know if this does any good, this patch makes compile mISDN on 3.13
and 3.14 kernels anyway.
I did not do any ISDN testing, just satisfied the compiler atm.

basically it just adds three files to the current mISDN source tree:

	patches/convert_class_code_to_use_dev_group.patch
	patches/convert_create_proc_entry.patch
	series/series_3.13
	series/series_3.14


cheers, Martin

_______________________________________________
isdn4linux mailing list
[email protected]
https://www.isdn4linux.de/mailman/listinfo/isdn4linux
0001-compiles-for-kernel-3.13-and-3.14.patch (text/x-patch, 8 KB)
From 14f44f2cfd1608453ae10dc46cb312a843d3b73a Mon Sep 17 00:00:00 2001
From: Martin Bachem <[email protected]>
Date: Fri, 15 Aug 2014 09:28:13 +0200
Subject: [PATCH] compiles for kernel 3.13 and 3.14

compiles on ubuntu 14.04 amd64 using 3.13
compiles on debian testing (jessie)using 3.14 (atm)
---
 patches/convert_class_code_to_use_dev_group.patch | 160 ++++++++++++++++++++++
 patches/convert_create_proc_entry.patch           |  18 +++
 series/series_3.13                                |   2 +
 series/series_3.14                                |   2 +
 4 files changed, 182 insertions(+)
 create mode 100644 patches/convert_class_code_to_use_dev_group.patch
 create mode 100644 patches/convert_create_proc_entry.patch
 create mode 100644 series/series_3.13
 create mode 100644 series/series_3.14

diff --git a/patches/convert_class_code_to_use_dev_group.patch b/patches/convert_class_code_to_use_dev_group.patch
new file mode 100644
index 0000000..9700d2a
--- /dev/null
+++ b/patches/convert_class_code_to_use_dev_group.patch
@@ -0,0 +1,160 @@
+From d98259cbf9f1c86e921caa1241aa8d229249e0b8 Mon Sep 17 00:00:00 2001
+From: Greg Kroah-Hartman <[email protected]>
+Date: Wed, 24 Jul 2013 15:05:12 -0700
+Subject: ISDN: convert class code to use dev_groups
+
+The dev_attrs field of struct class is going away soon, dev_groups
+should be used instead.  This converts the mISDN class code to use the
+correct field.
+
+Acked-by: Karsten Keil <[email protected]>
+Signed-off-by: Greg Kroah-Hartman <[email protected]>
+
+diff --git a/drivers/isdn/mISDN/core.c b/drivers/isdn/mISDN/core.c
+index da30c5c..faf5054 100644
+--- standalone.orig/drivers/isdn/mISDN/core.c
++++ standalone/drivers/isdn/mISDN/core.c
+@@ -37,8 +37,8 @@ static void mISDN_dev_release(struct device *dev)
+ 	/* nothing to do: the device is part of its parent's data structure */
+ }
+ 
+-static ssize_t _show_id(struct device *dev,
+-			struct device_attribute *attr, char *buf)
++static ssize_t id_show(struct device *dev,
++		       struct device_attribute *attr, char *buf)
+ {
+ 	struct mISDNdevice *mdev = dev_to_mISDN(dev);
+ 
+@@ -46,9 +46,10 @@ static ssize_t _show_id(struct device *dev,
+ 		return -ENODEV;
+ 	return sprintf(buf, "%d\n", mdev->id);
+ }
++static DEVICE_ATTR_RO(id);
+ 
+-static ssize_t _show_nrbchan(struct device *dev,
+-			     struct device_attribute *attr, char *buf)
++static ssize_t nrbchan_show(struct device *dev,
++			    struct device_attribute *attr, char *buf)
+ {
+ 	struct mISDNdevice *mdev = dev_to_mISDN(dev);
+ 
+@@ -56,9 +57,10 @@ static ssize_t _show_nrbchan(struct device *dev,
+ 		return -ENODEV;
+ 	return sprintf(buf, "%d\n", mdev->nrbchan);
+ }
++static DEVICE_ATTR_RO(nrbchan);
+ 
+-static ssize_t _show_d_protocols(struct device *dev,
+-				 struct device_attribute *attr, char *buf)
++static ssize_t d_protocols_show(struct device *dev,
++				struct device_attribute *attr, char *buf)
+ {
+ 	struct mISDNdevice *mdev = dev_to_mISDN(dev);
+ 
+@@ -66,9 +68,10 @@ static ssize_t _show_d_protocols(struct device *dev,
+ 		return -ENODEV;
+ 	return sprintf(buf, "%d\n", mdev->Dprotocols);
+ }
++static DEVICE_ATTR_RO(d_protocols);
+ 
+-static ssize_t _show_b_protocols(struct device *dev,
+-				 struct device_attribute *attr, char *buf)
++static ssize_t b_protocols_show(struct device *dev,
++				struct device_attribute *attr, char *buf)
+ {
+ 	struct mISDNdevice *mdev = dev_to_mISDN(dev);
+ 
+@@ -76,9 +79,10 @@ static ssize_t _show_b_protocols(struct device *dev,
+ 		return -ENODEV;
+ 	return sprintf(buf, "%d\n", mdev->Bprotocols | get_all_Bprotocols());
+ }
++static DEVICE_ATTR_RO(b_protocols);
+ 
+-static ssize_t _show_protocol(struct device *dev,
+-			      struct device_attribute *attr, char *buf)
++static ssize_t protocol_show(struct device *dev,
++			     struct device_attribute *attr, char *buf)
+ {
+ 	struct mISDNdevice *mdev = dev_to_mISDN(dev);
+ 
+@@ -86,17 +90,19 @@ static ssize_t _show_protocol(struct device *dev,
+ 		return -ENODEV;
+ 	return sprintf(buf, "%d\n", mdev->D.protocol);
+ }
++static DEVICE_ATTR_RO(protocol);
+ 
+-static ssize_t _show_name(struct device *dev,
+-			  struct device_attribute *attr, char *buf)
++static ssize_t name_show(struct device *dev,
++			 struct device_attribute *attr, char *buf)
+ {
+ 	strcpy(buf, dev_name(dev));
+ 	return strlen(buf);
+ }
++static DEVICE_ATTR_RO(name);
+ 
+ #if 0 /* hangs */
+-static ssize_t _set_name(struct device *dev, struct device_attribute *attr,
+-			 const char *buf, size_t count)
++static ssize_t name_set(struct device *dev, struct device_attribute *attr,
++			const char *buf, size_t count)
+ {
+ 	int err = 0;
+ 	char *out = kmalloc(count + 1, GFP_KERNEL);
+@@ -113,10 +119,11 @@ static ssize_t _set_name(struct device *dev, struct device_attribute *attr,
+ 
+ 	return (err < 0) ? err : count;
+ }
++static DEVICE_ATTR_RW(name);
+ #endif
+ 
+-static ssize_t _show_channelmap(struct device *dev,
+-				struct device_attribute *attr, char *buf)
++static ssize_t channelmap_show(struct device *dev,
++			       struct device_attribute *attr, char *buf)
+ {
+ 	struct mISDNdevice *mdev = dev_to_mISDN(dev);
+ 	char *bp = buf;
+@@ -127,18 +134,19 @@ static ssize_t _show_channelmap(struct device *dev,
+ 
+ 	return bp - buf;
+ }
+-
+-static struct device_attribute mISDN_dev_attrs[] = {
+-	__ATTR(id,          S_IRUGO,         _show_id,          NULL),
+-	__ATTR(d_protocols, S_IRUGO,         _show_d_protocols, NULL),
+-	__ATTR(b_protocols, S_IRUGO,         _show_b_protocols, NULL),
+-	__ATTR(protocol,    S_IRUGO,         _show_protocol,    NULL),
+-	__ATTR(channelmap,  S_IRUGO,         _show_channelmap,  NULL),
+-	__ATTR(nrbchan,     S_IRUGO,         _show_nrbchan,     NULL),
+-	__ATTR(name,        S_IRUGO,         _show_name,        NULL),
+-/*	__ATTR(name,        S_IRUGO | S_IWUSR, _show_name,      _set_name), */
+-	{}
++static DEVICE_ATTR_RO(channelmap);
++
++static struct attribute *mISDN_attrs[] = {
++	&dev_attr_id.attr,
++	&dev_attr_d_protocols.attr,
++	&dev_attr_b_protocols.attr,
++	&dev_attr_protocol.attr,
++	&dev_attr_channelmap.attr,
++	&dev_attr_nrbchan.attr,
++	&dev_attr_name.attr,
++	NULL,
+ };
++ATTRIBUTE_GROUPS(mISDN);
+ 
+ static int mISDN_uevent(struct device *dev, struct kobj_uevent_env *env)
+ {
+@@ -162,7 +170,7 @@ static struct class mISDN_class = {
+ 	.name = "mISDN",
+ 	.owner = THIS_MODULE,
+ 	.dev_uevent = mISDN_uevent,
+-	.dev_attrs = mISDN_dev_attrs,
++	.dev_groups = mISDN_groups,
+ 	.dev_release = mISDN_dev_release,
+ 	.class_release = mISDN_class_release,
+ };
+-- 
+cgit v0.10.1
+
diff --git a/patches/convert_create_proc_entry.patch b/patches/convert_create_proc_entry.patch
new file mode 100644
index 0000000..4936bb8
--- /dev/null
+++ b/patches/convert_create_proc_entry.patch
@@ -0,0 +1,18 @@
+diff --git a/drivers/isdn/mISDN/octvqe/octvqe_linux.c b/drivers/isdn/mISDN/octvqe/octvqe_linux.c
+index fcf6c28..8d97229 100644
+--- standalone.orig/drivers/isdn/mISDN/octvqe/octvqe_linux.c
++++ standalone/drivers/isdn/mISDN/octvqe/octvqe_linux.c
+@@ -1171,9 +1173,10 @@ static int octvqe_init(void)
+ 	}
+ 
+     /* Try to create a proc entry under the /proc directory. */
+-    proc_entry = create_proc_entry(DEV_NAME, 0, NULL);
+-    if (proc_entry)
+-	proc_entry->proc_fops = &octdev_proc_ops;
++    proc_entry = proc_create(DEV_NAME, 0, NULL, &octdev_proc_ops);
++    if (proc_entry == NULL) {
++        return -ENOMEM;
++    }
+ 
+     printk(KERN_INFO "%s: %s. Using major %d, Default EC \"%s%s\" (Built on %s %s).\n",
+ 	DEV_NAME, OCTVQE_MODULE_VERSION, iMajor, ZAPTEL_ECHO_NAME,
diff --git a/series/series_3.13 b/series/series_3.13
new file mode 100644
index 0000000..56c038c
--- /dev/null
+++ b/series/series_3.13
@@ -0,0 +1,2 @@
+convert_class_code_to_use_dev_group.patch
+convert_create_proc_entry.patch
diff --git a/series/series_3.14 b/series/series_3.14
new file mode 100644
index 0000000..56c038c
--- /dev/null
+++ b/series/series_3.14
@@ -0,0 +1,2 @@
+convert_class_code_to_use_dev_group.patch
+convert_create_proc_entry.patch
-- 
2.0.1