diff options
-rw-r--r-- | .SRCINFO | 12 | ||||
-rw-r--r-- | PKGBUILD | 21 | ||||
-rw-r--r-- | kernel_do_gettimeofday_fix.patch (renamed from kernel_api_fix.patch) | 37 | ||||
-rw-r--r-- | kernel_ioremap_nocache_fix.patch | 88 |
4 files changed, 128 insertions, 30 deletions
@@ -1,7 +1,7 @@ pkgbase = ixxat-socketcan pkgdesc = SocketCAN driver for IXXAT USB-to-CAN v2 pkgver = 1.1.148.0 - pkgrel = 5 + pkgrel = 6 url = https://www.ixxat.com/products/products-industrial/pc-interfaces/pc-can-interfaces/socketcan install = ixxat-socketcan.install arch = i686 @@ -9,10 +9,12 @@ pkgbase = ixxat-socketcan license = GPL2 makedepends = linux-headers optdepends = can-utils: Linux-CAN / SocketCAN user space applications - source = https://www.ixxat.com/docs/librariesprovider8/default-document-library/downloads/other-drivers/socketcan.zip?sfvrsn=c486dcd6_22 - source = kernel_api_fix.patch - md5sums = c42d19b75802691b057a8163606903af - md5sums = 94db6b37a2b8f07ef116352e73dbd88a + source = https://cdn.hms-networks.com/docs/librariesprovider8/ixxat-english-new/pc-can-interfaces/linux-drivers/socketcan-linux.zip?sfvrsn=3eb48d7_8 + source = kernel_do_gettimeofday_fix.patch + source = kernel_ioremap_nocache_fix.patch + md5sums = 4875b7dcfddfb76279ec61477765dd04 + md5sums = 918f3a220153599c2a4c3fad7de86cc1 + md5sums = 25ef511b0f11a7d84ce9ffc6020293c3 pkgname = ixxat-socketcan @@ -2,7 +2,7 @@ pkgname=ixxat-socketcan pkgver=1.1.148.0 -pkgrel=5 +pkgrel=6 pkgdesc="SocketCAN driver for IXXAT USB-to-CAN v2" arch=('i686' 'x86_64') url="https://www.ixxat.com/products/products-industrial/pc-interfaces/pc-can-interfaces/socketcan" @@ -10,22 +10,29 @@ license=('GPL2') makedepends=(linux-headers) optdepends=('can-utils: Linux-CAN / SocketCAN user space applications') install=$pkgname.install -source=('https://www.ixxat.com/docs/librariesprovider8/default-document-library/downloads/other-drivers/socketcan.zip?sfvrsn=c486dcd6_22' - kernel_api_fix.patch) -md5sums=('c42d19b75802691b057a8163606903af' - '94db6b37a2b8f07ef116352e73dbd88a') +source=('https://cdn.hms-networks.com/docs/librariesprovider8/ixxat-english-new/pc-can-interfaces/linux-drivers/socketcan-linux.zip?sfvrsn=3eb48d7_8' + kernel_do_gettimeofday_fix.patch + kernel_ioremap_nocache_fix.patch) +md5sums=('4875b7dcfddfb76279ec61477765dd04' + '918f3a220153599c2a4c3fad7de86cc1' + '25ef511b0f11a7d84ce9ffc6020293c3') _extramodules=$(uname -r)/extramodules prepare() { - patch -p1 -i kernel_api_fix.patch + patch -p1 -i kernel_do_gettimeofday_fix.patch + patch -p1 -i kernel_ioremap_nocache_fix.patch } build() { + # Make will fail with the original folder name. + rm -rf "$srcdir/ixxat-socketcan" + mv "$srcdir/SocketCAN - Linux (V1.1.148.0)" "$srcdir/ixxat-socketcan" + cd "$srcdir/ixxat-socketcan" make } package() { mkdir -p $pkgdir/usr/lib/modules/$_extramodules - install usb-to-can_socketcan/ixx_usb.ko $pkgdir/usr/lib/modules/$_extramodules + install ixxat-socketcan/usb-to-can_socketcan/ixx_usb.ko $pkgdir/usr/lib/modules/$_extramodules } diff --git a/kernel_api_fix.patch b/kernel_do_gettimeofday_fix.patch index 3384cb0cbbfe..bbfa646bd802 100644 --- a/kernel_api_fix.patch +++ b/kernel_do_gettimeofday_fix.patch @@ -1,18 +1,19 @@ +commit 06cf40760506f7aeda1daee7fe8e5e330915daaa Author: Bruno Santos <brunomanuelsantos@tecnico.ulisboa.pt> Date: Tue Jun 18 18:37:17 2019 +0200 - Fix compilation against newer kernel driver's API - + Fix use of deprecated do_gettimeofday() + do_gettimeofday() is deprecated because of the year 2038 overflow. Since this driver uses it extensively and it's no longer available in recent kernels, we need to convert it to something else. - + The code could be improved, this is a least effort, half scripted fix. -diff --git a/can-ibxxx_socketcan/ixx_pci_core.c b/can-ibxxx_socketcan/ixx_pci_core.c +diff --git a/SocketCAN - Linux (V1.1.148.0)/can-ibxxx_socketcan/ixx_pci_core.c b/SocketCAN - Linux (V1.1.148.0)/can-ibxxx_socketcan/ixx_pci_core.c index d6d4228..7f019fb 100644 ---- a/can-ibxxx_socketcan/ixx_pci_core.c -+++ b/can-ibxxx_socketcan/ixx_pci_core.c +--- a/SocketCAN - Linux (V1.1.148.0)/can-ibxxx_socketcan/ixx_pci_core.c ++++ b/SocketCAN - Linux (V1.1.148.0)/can-ibxxx_socketcan/ixx_pci_core.c @@ -235,24 +235,14 @@ void ixxat_dump_mem(char *prompt, void *p, int l) DUMP_WIDTH, 1, p, l, false); } @@ -95,10 +96,10 @@ index d6d4228..7f019fb 100644 free_candev(netdev); } } -diff --git a/can-ibxxx_socketcan/ixx_pci_core.h b/can-ibxxx_socketcan/ixx_pci_core.h +diff --git a/SocketCAN - Linux (V1.1.148.0)/can-ibxxx_socketcan/ixx_pci_core.h b/SocketCAN - Linux (V1.1.148.0)/can-ibxxx_socketcan/ixx_pci_core.h index 8e94b34..0f0f3e2 100644 ---- a/can-ibxxx_socketcan/ixx_pci_core.h -+++ b/can-ibxxx_socketcan/ixx_pci_core.h +--- a/SocketCAN - Linux (V1.1.148.0)/can-ibxxx_socketcan/ixx_pci_core.h ++++ b/SocketCAN - Linux (V1.1.148.0)/can-ibxxx_socketcan/ixx_pci_core.h @@ -241,7 +241,7 @@ struct ixx_canfd_msg { } __packed; @@ -108,10 +109,10 @@ index 8e94b34..0f0f3e2 100644 u32 ts_dev_0; u32 ts_dev_last; }; -diff --git a/can-ibxxx_socketcan/ixx_pci_ib_active.c b/can-ibxxx_socketcan/ixx_pci_ib_active.c +diff --git a/SocketCAN - Linux (V1.1.148.0)/can-ibxxx_socketcan/ixx_pci_ib_active.c b/SocketCAN - Linux (V1.1.148.0)/can-ibxxx_socketcan/ixx_pci_ib_active.c index 6cc4985..cd0c50a 100644 ---- a/can-ibxxx_socketcan/ixx_pci_ib_active.c -+++ b/can-ibxxx_socketcan/ixx_pci_ib_active.c +--- a/SocketCAN - Linux (V1.1.148.0)/can-ibxxx_socketcan/ixx_pci_ib_active.c ++++ b/SocketCAN - Linux (V1.1.148.0)/can-ibxxx_socketcan/ixx_pci_ib_active.c @@ -369,7 +369,7 @@ static int ixx_act_ib_xxx_rcv_cmd(struct ixx_pci_interface *intf, u32 *rx_fifo, u32* res_size; struct ixx_dal_req *res_dal_req; @@ -146,10 +147,10 @@ index 6cc4985..cd0c50a 100644 return err; } -diff --git a/usb-to-can_socketcan/ixx_usb_core.c b/usb-to-can_socketcan/ixx_usb_core.c +diff --git a/SocketCAN - Linux (V1.1.148.0)/usb-to-can_socketcan/ixx_usb_core.c b/SocketCAN - Linux (V1.1.148.0)/usb-to-can_socketcan/ixx_usb_core.c index 5d542a3..696e5d4 100644 ---- a/usb-to-can_socketcan/ixx_usb_core.c -+++ b/usb-to-can_socketcan/ixx_usb_core.c +--- a/SocketCAN - Linux (V1.1.148.0)/usb-to-can_socketcan/ixx_usb_core.c ++++ b/SocketCAN - Linux (V1.1.148.0)/usb-to-can_socketcan/ixx_usb_core.c @@ -94,24 +94,14 @@ void ixxat_dump_mem(char *prompt, void *p, int l) DUMP_WIDTH, 1, p, l, false); } @@ -277,10 +278,10 @@ index 5d542a3..696e5d4 100644 *intf = (struct usb_interface*)to_usb_interface(d); struct ixx_usb_device *dev; -diff --git a/usb-to-can_socketcan/ixx_usb_core.h b/usb-to-can_socketcan/ixx_usb_core.h +diff --git a/SocketCAN - Linux (V1.1.148.0)/usb-to-can_socketcan/ixx_usb_core.h b/SocketCAN - Linux (V1.1.148.0)/usb-to-can_socketcan/ixx_usb_core.h index 60dc02d..577f276 100644 ---- a/usb-to-can_socketcan/ixx_usb_core.h -+++ b/usb-to-can_socketcan/ixx_usb_core.h +--- a/SocketCAN - Linux (V1.1.148.0)/usb-to-can_socketcan/ixx_usb_core.h ++++ b/SocketCAN - Linux (V1.1.148.0)/usb-to-can_socketcan/ixx_usb_core.h @@ -193,7 +193,7 @@ struct ixx_usb_adapter { }; diff --git a/kernel_ioremap_nocache_fix.patch b/kernel_ioremap_nocache_fix.patch new file mode 100644 index 000000000000..78e7125416dd --- /dev/null +++ b/kernel_ioremap_nocache_fix.patch @@ -0,0 +1,88 @@ +commit 581f3d57fd2debe52b7647145334bfdd79212e7c +Author: Bruno Santos <brunomanuelsantos@tecnico.ulisboa.pt> +Date: Sun Jun 21 18:36:51 2020 +0100 + + Fix use of deprecated ioremap_nocache() + + The kernel has provided non-cached semantics by default since v2.6. And + the additional interface has been removed since early 2020 from the + kernel. + +diff --git a/SocketCAN - Linux (V1.1.148.0)/can-ibxxx_socketcan/ixx_pci_ib_active.c b/SocketCAN - Linux (V1.1.148.0)/can-ibxxx_socketcan/ixx_pci_ib_active.c +index cd0c50a..1e698c8 100644 +--- a/SocketCAN - Linux (V1.1.148.0)/can-ibxxx_socketcan/ixx_pci_ib_active.c ++++ b/SocketCAN - Linux (V1.1.148.0)/can-ibxxx_socketcan/ixx_pci_ib_active.c +@@ -1854,17 +1854,17 @@ static int ixx_act_ib_xxx_probe(struct pci_dev *pdev, + intf->memlen = pci_resource_len(pdev, 2); + + request_mem_region(intf->reg1add, intf->reg1len, "IXXAT PCI Registers"); +- intf->reg1vadd = ioremap_nocache(intf->reg1add, intf->reg1len); ++ intf->reg1vadd = ioremap(intf->reg1add, intf->reg1len); + if (!intf->reg1vadd) { +- printk("reg1vadd ioremap_nocache failed\n"); ++ printk("reg1vadd ioremap failed\n"); + err = -ENOBUFS; + goto release_reg1; + } + + request_mem_region(intf->memadd, intf->memlen, "IXXAT PCI Memory"); +- intf->memvadd = ioremap_nocache(intf->memadd, intf->memlen); ++ intf->memvadd = ioremap(intf->memadd, intf->memlen); + if (!intf->memvadd) { +- printk("memvadd ioremap_nocache failed\n"); ++ printk("memvadd ioremap failed\n"); + err = -ENOBUFS; + goto release_memreg; + } +diff --git a/SocketCAN - Linux (V1.1.148.0)/can-ibxxx_socketcan/ixx_pci_ib_fd_passive.c b/SocketCAN - Linux (V1.1.148.0)/can-ibxxx_socketcan/ixx_pci_ib_fd_passive.c +index d3a4da1..7a3514f 100644 +--- a/SocketCAN - Linux (V1.1.148.0)/can-ibxxx_socketcan/ixx_pci_ib_fd_passive.c ++++ b/SocketCAN - Linux (V1.1.148.0)/can-ibxxx_socketcan/ixx_pci_ib_fd_passive.c +@@ -1193,17 +1193,17 @@ static int ixx_pas_ib_fd_xxx_probe(struct pci_dev *pdev, + intf->memlen = pci_resource_len(pdev, 2); + + request_mem_region(intf->memadd, intf->memlen, "IXXAT PCI Memory"); +- intf->memvadd = ioremap_nocache(intf->memadd, intf->memlen); ++ intf->memvadd = ioremap(intf->memadd, intf->memlen); + if (!intf->memvadd) { +- printk("memvadd ioremap_nocache failed\n"); ++ printk("memvadd ioremap failed\n"); + err = -ENOBUFS; + goto release_memreg; + } + + request_mem_region(intf->reg1add, intf->reg1len, "IXXAT PCI Registers"); +- intf->reg1vadd = ioremap_nocache(intf->reg1add, intf->reg1len); ++ intf->reg1vadd = ioremap(intf->reg1add, intf->reg1len); + if (!intf->reg1vadd) { +- printk("reg1vadd ioremap_nocache failed\n"); ++ printk("reg1vadd ioremap failed\n"); + err = -ENOBUFS; + goto release_reg1; + } +diff --git a/SocketCAN - Linux (V1.1.148.0)/can-ibxxx_socketcan/ixx_pci_ib_passive.c b/SocketCAN - Linux (V1.1.148.0)/can-ibxxx_socketcan/ixx_pci_ib_passive.c +index 27b2b7d..fb08c03 100644 +--- a/SocketCAN - Linux (V1.1.148.0)/can-ibxxx_socketcan/ixx_pci_ib_passive.c ++++ b/SocketCAN - Linux (V1.1.148.0)/can-ibxxx_socketcan/ixx_pci_ib_passive.c +@@ -1221,17 +1221,17 @@ static int ixx_pas_ib_xxx_probe(struct pci_dev *pdev, + intf->memlen = pci_resource_len(pdev, 2); + + request_mem_region(intf->memadd, intf->memlen, "IXXAT PCI Memory"); +- intf->memvadd = ioremap_nocache(intf->memadd, intf->memlen); ++ intf->memvadd = ioremap(intf->memadd, intf->memlen); + if (!intf->memvadd) { +- printk("memvadd ioremap_nocache failed\n"); ++ printk("memvadd ioremap failed\n"); + err = -ENOBUFS; + goto release_memreg; + } + + request_mem_region(intf->reg1add, intf->reg1len, "IXXAT PCI Registers"); +- intf->reg1vadd = ioremap_nocache(intf->reg1add, intf->reg1len); ++ intf->reg1vadd = ioremap(intf->reg1add, intf->reg1len); + if (!intf->reg1vadd) { +- printk("reg1vadd ioremap_nocache failed\n"); ++ printk("reg1vadd ioremap failed\n"); + err = -ENOBUFS; + goto release_reg1; + } |