diff options
author | Scott Murray <scott.murray@konsulko.com> | 2022-05-30 18:51:36 -0400 |
---|---|---|
committer | Scott Murray <scott.murray@konsulko.com> | 2022-07-06 14:00:05 -0400 |
commit | e5349e7b7beeed120e6cbfb1175bf823dd30b032 (patch) | |
tree | ffb09ac8f386d7727ddd03f118176dfaf7a7aecc /recipes-kernel | |
parent | ca7d98904253c7404c3e6384ebb53d922a3c538a (diff) |
sllin: switch to updated upstream
Changes:
- Switch the SRC_URI of the sllin driver recipe to point at the new
revived upstream location, update to their latest commit to get
newer kernel support, and drop all the now unnecessary local
patches.
- Added a patch to fix compilation against 5.4 kernels before
5.4.110. This will be worked with upstream as time permits.
- Rename the sllin driver recipe with a _git suffix to match OE
style expectations.
- Added the sllin driver to packagegroup-agl-demo as was being done
in previous releases.
- Split the demo script + service unit and lin_config configuration
out of the sllin driver recipe into a new sllin-demo recipe so
that they're no longer conflated. This should make it easier for
others to reuse the sllin driver recipe.
- Update the SRC_URI and SRCREV of the lin_config recipe to also
point at the new upstream location/version since it comes out of
the same repository.
- Add the new master mode "-m" flag to the lin_config command line
in the start_lin_demo.sh script (now in sllin-demo). This turns
out to be required for our demo usecase as upstream seem to have
inadvertently changed the default behavior.
Bug-AGL: SPEC-4404
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
Change-Id: If42a825e65d93b3fa11cfddd5d6b33ec410f7cc4
Diffstat (limited to 'recipes-kernel')
-rw-r--r-- | recipes-kernel/sllin/files/0001-Disable-sllin-driver-debug-log.patch | 27 | ||||
-rw-r--r-- | recipes-kernel/sllin/files/0002_fix_null_operation_check.patch | 176 | ||||
-rw-r--r-- | recipes-kernel/sllin/files/0003-Allow-recent-kernels-newer-4.11.x-to-build.patch | 69 | ||||
-rw-r--r-- | recipes-kernel/sllin/files/0004-Fix-build-with-5.9-kernel.patch | 48 | ||||
-rw-r--r-- | recipes-kernel/sllin/files/sllin-demo.service | 2 | ||||
-rwxr-xr-x | recipes-kernel/sllin/files/start_lin_demo.sh | 2 | ||||
-rw-r--r-- | recipes-kernel/sllin/sllin-demo.bb | 29 | ||||
-rw-r--r-- | recipes-kernel/sllin/sllin.bb | 47 | ||||
-rw-r--r-- | recipes-kernel/sllin/sllin/0001-update-makefile.patch (renamed from recipes-kernel/sllin/files/0001_update_makefile.patch) | 0 | ||||
-rw-r--r-- | recipes-kernel/sllin/sllin/0002-5.4-less-than-110-fix.patch | 25 | ||||
-rw-r--r-- | recipes-kernel/sllin/sllin_git.bb | 22 |
11 files changed, 77 insertions, 370 deletions
diff --git a/recipes-kernel/sllin/files/0001-Disable-sllin-driver-debug-log.patch b/recipes-kernel/sllin/files/0001-Disable-sllin-driver-debug-log.patch deleted file mode 100644 index 99d6183ab..000000000 --- a/recipes-kernel/sllin/files/0001-Disable-sllin-driver-debug-log.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 04ffb4b8f828c19e914987e271aaf3aa7eab28bf Mon Sep 17 00:00:00 2001 -From: Yuichi Kusakabe <yuichi.kusakabe@denso-ten.com> -Date: Thu, 29 Nov 2018 22:12:00 +0900 -Subject: [PATCH] Disable sllin driver debug log - -Signed-off-by: Yuichi Kusakabe <yuichi.kusakabe@denso-ten.com> ---- - sllin/sllin.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/sllin/sllin.c b/sllin/sllin.c -index 77b2cb8..133d6e9 100644 ---- a/sllin/sllin.c -+++ b/sllin/sllin.c -@@ -41,7 +41,9 @@ - * Funded by: Volkswagen Group Research - */ - -+#if 0 - #define DEBUG 1 /* Enables pr_debug() printouts */ -+#endif - - #include <linux/module.h> - #include <linux/moduleparam.h> --- -2.7.4 - diff --git a/recipes-kernel/sllin/files/0002_fix_null_operation_check.patch b/recipes-kernel/sllin/files/0002_fix_null_operation_check.patch deleted file mode 100644 index 896e2680d..000000000 --- a/recipes-kernel/sllin/files/0002_fix_null_operation_check.patch +++ /dev/null @@ -1,176 +0,0 @@ -diff --git a/sllin/sllin.c b/sllin/sllin.c -index 2db896f..2969448 100644 ---- a/sllin/sllin.c -+++ b/sllin/sllin.c -@@ -869,7 +869,6 @@ static int sllin_send_tx_buff(struct sllin *sl) - #else - remains = sl->tx_lim - sl->tx_cnt; - #endif -- - res = tty->ops->write(tty, sl->tx_buff + sl->tx_cnt, remains); - if (res < 0) - goto error_in_write; -@@ -916,10 +915,25 @@ static int sllin_send_break(struct sllin *sl) - unsigned long break_baud; - int res; - -+ netdev_dbg(sl->dev, "%s()#<BREAK_BY_BAUD> invoke.\n", __func__); -+ if (tty == NULL) { -+ netdev_dbg(sl->dev, "%s() tty == NULL.\n", __func__); -+ sl->lin_state = SLSTATE_IDLE; -+ return -1; -+ } -+ if (tty->ops == NULL) { -+ netdev_dbg(sl->dev, "%s() tty->ops == NULL.\n", __func__); -+ sl->lin_state = SLSTATE_IDLE; -+ return -1; -+ } - break_baud = ((sl->lin_baud * 2) / 3); - sltty_change_speed(tty, break_baud); - -- tty->ops->flush_buffer(tty); -+ if (tty->ops->flush_buffer) { -+ tty->ops->flush_buffer(tty); -+ } else { -+ netdev_dbg(sl->dev, "%s() tty->ops->flush_buffer is NULL.\n", __func__); -+ } - sl->rx_cnt = SLLIN_BUFF_BREAK; - - sl->rx_expect = SLLIN_BUFF_BREAK + 1; -@@ -943,6 +957,17 @@ static int sllin_send_break(struct sllin *sl) - unsigned long usleep_range_min; - unsigned long usleep_range_max; - -+ netdev_dbg(sl->dev, "%s() invoke.\n", __func__); -+ if (tty == NULL) { -+ netdev_dbg(sl->dev, "%s() tty == NULL.\n", __func__); -+ sl->lin_state = SLSTATE_IDLE; -+ return -1; -+ } -+ if (tty->ops == NULL) { -+ netdev_dbg(sl->dev, "%s() tty->ops == NULL.\n", __func__); -+ sl->lin_state = SLSTATE_IDLE; -+ return -1; -+ } - break_baud = ((sl->lin_baud * 2) / 3); - sl->rx_cnt = SLLIN_BUFF_BREAK; - sl->rx_expect = SLLIN_BUFF_BREAK + 1; -@@ -950,21 +975,31 @@ static int sllin_send_break(struct sllin *sl) - - /* Do the break ourselves; Inspired by - http://lxr.linux.no/#linux+v3.1.2/drivers/tty/tty_io.c#L2452 */ -- retval = tty->ops->break_ctl(tty, -1); -- if (retval) -- return retval; -+ if (tty->ops->break_ctl) { -+ retval = tty->ops->break_ctl(tty, -1); -+ if (retval) -+ return retval; -+ } else { -+ netdev_dbg(sl->dev, "%s() tty->ops->break_ctl is NULL.\n", __func__); -+ } - - /* udelay(712); */ - usleep_range_min = (1000000l * SLLIN_SAMPLES_PER_CHAR) / break_baud; - usleep_range_max = usleep_range_min + 50; - usleep_range(usleep_range_min, usleep_range_max); - -- retval = tty->ops->break_ctl(tty, 0); -+ if(tty->ops->break_ctl) { -+ retval = tty->ops->break_ctl(tty, 0); -+ } - usleep_range_min = (1000000l * 1 /* 1 bit */) / break_baud; - usleep_range_max = usleep_range_min + 30; - usleep_range(usleep_range_min, usleep_range_max); - -- tty->ops->flush_buffer(tty); -+ if ( tty->ops->flush_buffer) { -+ tty->ops->flush_buffer(tty); -+ } else { -+ netdev_dbg(sl->dev, "%s() tty->ops->flush_buffer is NULL.\n", __func__); -+ } - - sl->tx_cnt = SLLIN_BUFF_SYNC; - -@@ -1028,6 +1063,12 @@ static int sllin_kwthread(void *ptr) - int lin_dlc; - u8 lin_data_buff[SLLIN_DATA_MAX]; - -+ if (sl == NULL) { -+ pr_err("sllin: sl is NULL\n"); -+ } -+ if (sl->dev == NULL) { -+ pr_err("sllin: sl->dev is NULL\n"); -+ } - - if ((sl->lin_state == SLSTATE_IDLE) && sl->lin_master && - sl->id_to_send) { -@@ -1036,6 +1077,7 @@ static int sllin_kwthread(void *ptr) - } - } - -+ netdev_dbg(sl->dev, "sllin_kthread <WAIT_EVENT>\n"); - wait_event_killable(sl->kwt_wq, kthread_should_stop() || - test_bit(SLF_RXEVENT, &sl->flags) || - test_bit(SLF_TXEVENT, &sl->flags) || -@@ -1046,6 +1088,7 @@ static int sllin_kwthread(void *ptr) - (sl->lin_state == SLSTATE_RESPONSE_WAIT)) - && test_bit(SLF_MSGEVENT, &sl->flags))); - -+ netdev_dbg(sl->dev, "sllin_kthread <WAKEUPED>\n"); - if (test_and_clear_bit(SLF_RXEVENT, &sl->flags)) { - netdev_dbg(sl->dev, "sllin_kthread RXEVENT\n"); - } -@@ -1078,21 +1121,25 @@ static int sllin_kwthread(void *ptr) - sl->lin_state = SLSTATE_IDLE; - } - -+ netdev_dbg(sl->dev, "sllin_kthread: lin_state <%08x>\n",sl->lin_state); - switch (sl->lin_state) { - case SLSTATE_IDLE: - if (!test_bit(SLF_MSGEVENT, &sl->flags)) - break; -- -+ if (sl->tx_req_skb == NULL) -+ netdev_dbg(sl->dev, "sl->tx_req_skb == NULL\n"); -+ if (sl->tx_req_skb->data == NULL) -+ netdev_dbg(sl->dev, "sl->tx_req_skb->data == NULL\n"); - cf = (struct can_frame *)sl->tx_req_skb->data; - - /* SFF RTR CAN frame -> LIN header */ - if (cf->can_id & CAN_RTR_FLAG) { - struct sllin_conf_entry *sce; - -- netdev_dbg(sl->dev, "%s: RTR SFF CAN frame, ID = %x\n", -- __func__, cf->can_id & LIN_ID_MASK); - - sce = &sl->linfr_cache[cf->can_id & LIN_ID_MASK]; -+ netdev_dbg(sl->dev, "%s: RTR SFF CAN frame, ID = %x dlc=%d\n", -+ __func__, cf->can_id & LIN_ID_MASK, sce->dlc); - spin_lock_irqsave(&sl->linfr_lock, flags); - - /* Is there Slave response in linfr_cache to be sent? */ -@@ -1114,8 +1161,8 @@ static int sllin_kwthread(void *ptr) - spin_unlock_irqrestore(&sl->linfr_lock, flags); - - } else { /* SFF NON-RTR CAN frame -> LIN header + LIN response */ -- netdev_dbg(sl->dev, "%s: NON-RTR SFF CAN frame, ID = %x\n", -- __func__, (int)cf->can_id & LIN_ID_MASK); -+ netdev_dbg(sl->dev, "%s: NON-RTR SFF CAN frame, ID = %x\n dlc=%d", -+ __func__, (int)cf->can_id & LIN_ID_MASK, cf->can_dlc); - - lin_data = cf->data; - lin_dlc = cf->can_dlc; -@@ -1140,6 +1187,7 @@ static int sllin_kwthread(void *ptr) - hrtimer_start(&sl->rx_timer, - ktime_add(ktime_get(), sl->rx_timer_timeout), - HRTIMER_MODE_ABS); -+ netdev_dbg(sl->dev, "sllin_kthread: SLSTATE finish\n"); - break; - - case SLSTATE_BREAK_SENT: -@@ -1654,3 +1702,4 @@ static void __exit sllin_exit(void) - - module_init(sllin_init); - module_exit(sllin_exit); -+ diff --git a/recipes-kernel/sllin/files/0003-Allow-recent-kernels-newer-4.11.x-to-build.patch b/recipes-kernel/sllin/files/0003-Allow-recent-kernels-newer-4.11.x-to-build.patch deleted file mode 100644 index c8f2f9268..000000000 --- a/recipes-kernel/sllin/files/0003-Allow-recent-kernels-newer-4.11.x-to-build.patch +++ /dev/null @@ -1,69 +0,0 @@ -From fcebb8f510bbb5c681f1f9af4506b4de241837dd Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Jan-Simon=20M=C3=B6ller?= <jsmoeller@linuxfoundation.org> -Date: Wed, 31 Oct 2018 20:48:20 +0000 -Subject: [PATCH] Allow recent kernels newer 4.11.x to build -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -API changes enforce porting. - -Signed-off-by: Jan-Simon Möller <jsmoeller@linuxfoundation.org> ---- - sllin/sllin.c | 13 +++++++++++++ - 1 file changed, 13 insertions(+) - -diff --git a/sllin/sllin.c b/sllin/sllin.c -index 2969448..7e17127 100644 ---- a/sllin/sllin.c -+++ b/sllin/sllin.c -@@ -56,7 +56,12 @@ - #include <linux/rtnetlink.h> - #include <linux/if_arp.h> - #include <linux/if_ether.h> -+#include <linux/version.h> -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,11,0) - #include <linux/sched.h> -+#else -+#include <uapi/linux/sched/types.h> -+#endif - #include <linux/delay.h> - #include <linux/init.h> - #include <linux/can.h> -@@ -447,7 +451,9 @@ static int sll_open(struct net_device *dev) - static void sll_free_netdev(struct net_device *dev) - { - int i = dev->base_addr; -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,11,9) - free_netdev(dev); -+#endif - sllin_devs[i] = NULL; - } - -@@ -460,7 +466,12 @@ static const struct net_device_ops sll_netdev_ops = { - static void sll_setup(struct net_device *dev) - { - dev->netdev_ops = &sll_netdev_ops; -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,11,9) - dev->destructor = sll_free_netdev; -+#else -+ dev->needs_free_netdev = true; -+ dev->priv_destructor = sll_free_netdev; -+#endif - - dev->hard_header_len = 0; - dev->addr_len = 0; -@@ -1685,8 +1696,10 @@ static void __exit sllin_exit(void) - sl = netdev_priv(dev); - if (sl->tty) { - netdev_dbg(sl->dev, "tty discipline still running\n"); -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,11,9) - /* Intentionally leak the control block. */ - dev->destructor = NULL; -+#endif - } - - unregister_netdev(dev); --- -2.13.7 - diff --git a/recipes-kernel/sllin/files/0004-Fix-build-with-5.9-kernel.patch b/recipes-kernel/sllin/files/0004-Fix-build-with-5.9-kernel.patch deleted file mode 100644 index f3bcda9fe..000000000 --- a/recipes-kernel/sllin/files/0004-Fix-build-with-5.9-kernel.patch +++ /dev/null @@ -1,48 +0,0 @@ -Use sched_set_fifo on newer kernels - -The 5.9 kernel removed the export of sched_setscheduler, use -the new sched_set_fifo API if building on 5.9 or newer. There -is a slight difference in resulting priority level, the new -API will yield a priority of 50 instead of the explicit value -of 40 being used with sched_setscheduler, but this should not -be an issue. - -Upstream-Status: Inappropriate [no upstream] -Signed-off-by: Scott Murray <scott.murray@konsulko.com> - ---- -diff --git a/sllin/sllin.c b/sllin/sllin.c -index 133d6e9..92c52ad 100644 ---- a/sllin/sllin.c -+++ b/sllin/sllin.c -@@ -1059,14 +1059,20 @@ static int sllin_kwthread(void *ptr) - { - struct sllin *sl = (struct sllin *)ptr; - struct tty_struct *tty = sl->tty; -+#if LINUX_VERSION_CODE < KERNEL_VERSION(5,9,0) - struct sched_param schparam = { .sched_priority = 40 }; -+#endif - int tx_bytes = 0; /* Used for Network statistics */ - unsigned long flags; - int lin_id; - struct sllin_conf_entry *sce; - - netdev_dbg(sl->dev, "sllin_kwthread started.\n"); -+#if LINUX_VERSION_CODE < KERNEL_VERSION(5,9,0) - sched_setscheduler(current, SCHED_FIFO, &schparam); -+#else -+ sched_set_fifo(current); -+#endif - - clear_bit(SLF_ERROR, &sl->flags); - sltty_change_speed(tty, sl->lin_baud); -@@ -1274,8 +1280,8 @@ slstate_response_wait: - sl->lin_state = SLSTATE_RESPONSE_WAIT_BUS; - } - } -+ fallthrough; - -- /* Be aware, no BREAK here */ - case SLSTATE_RESPONSE_WAIT_BUS: - if (sl->rx_cnt < sl->rx_expect) - continue; diff --git a/recipes-kernel/sllin/files/sllin-demo.service b/recipes-kernel/sllin/files/sllin-demo.service index e3e7432f3..e6af0be59 100644 --- a/recipes-kernel/sllin/files/sllin-demo.service +++ b/recipes-kernel/sllin/files/sllin-demo.service @@ -1,8 +1,6 @@ [Unit] Description=LIN demo configuration ConditionPathExists=/dev/ttyUSB0 -After=afm-system-daemon.service -Before=can-dev-mapping-helper.service [Service] Type=forking diff --git a/recipes-kernel/sllin/files/start_lin_demo.sh b/recipes-kernel/sllin/files/start_lin_demo.sh index c7627ca74..c97f0a2c5 100755 --- a/recipes-kernel/sllin/files/start_lin_demo.sh +++ b/recipes-kernel/sllin/files/start_lin_demo.sh @@ -3,7 +3,7 @@ # Attach serial LIN->CAN bridge and set up LIN polling if [ -c /dev/ttyUSB0 ]; then sleep 1 - /usr/bin/lin_config -c /etc/lin_config.conf -a sllin:/dev/ttyUSB0 + /usr/bin/lin_config -m -c /etc/lin_config.conf -a sllin:/dev/ttyUSB0 mkdir -p /run/lin_config/ pidof lin_config > /run/lin_config/lin_config.pid sleep 1 diff --git a/recipes-kernel/sllin/sllin-demo.bb b/recipes-kernel/sllin/sllin-demo.bb new file mode 100644 index 000000000..bd764bea6 --- /dev/null +++ b/recipes-kernel/sllin/sllin-demo.bb @@ -0,0 +1,29 @@ +DESCRIPTION = "AGL IVI demo slLIN driver configuration" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" + +inherit allarch systemd + +SRC_URI = " \ + file://sllin-demo.service \ + file://start_lin_demo.sh \ + file://lin_config.conf \ +" + +SYSTEMD_SERVICE:${PN} = "sllin-demo.service" + +do_install:append () { + install -d 644 ${D}/${bindir} + install -m 0755 ${WORKDIR}/start_lin_demo.sh ${D}/${bindir}/start_lin_demo.sh + install -d ${D}${systemd_system_unitdir} + install -m 0644 ${WORKDIR}/sllin-demo.service ${D}${systemd_system_unitdir}/ + install -d ${D}${sysconfdir} + install -m 0644 ${WORKDIR}/lin_config.conf ${D}${sysconfdir}/ +} + +FILES:${PN} += " \ + ${bindir}/start_lin_demo.sh \ + ${sysconfdir}/lin_config.conf \ +" + +RDEPENDS:${PN} += "lin-config" diff --git a/recipes-kernel/sllin/sllin.bb b/recipes-kernel/sllin/sllin.bb deleted file mode 100644 index 2accf40f9..000000000 --- a/recipes-kernel/sllin/sllin.bb +++ /dev/null @@ -1,47 +0,0 @@ -DESCRIPTION = "slLIN driver module" -LICENSE = "GPL-2.0-only" -LIC_FILES_CHKSUM = "file://sllin.c;beginline=7;endline=37;md5=6408e14dba951f8cbe3c2a003a0d89d2" - -inherit module systemd - -DEPENDS = "virtual/kernel" - -SRC_URI = "git://github.com/trainman419/linux-lin.git;protocol=https;branch=master" -SRCREV = "155d885e8ccc907a56f6c86c4b159fac27ef6fec" -S = "${WORKDIR}/git/sllin" - -PV = "0.1+git${SRCPV}" - -SRC_URI:append = " \ - file://0001_update_makefile.patch;pnum=2 \ - file://0002_fix_null_operation_check.patch;pnum=2 \ - file://0003-Allow-recent-kernels-newer-4.11.x-to-build.patch;pnum=2 \ - file://0001-Disable-sllin-driver-debug-log.patch;pnum=2 \ - file://0004-Fix-build-with-5.9-kernel.patch;pnum=2 \ - file://0005-Fix-build-with-5.13-kernel.patch;pnum=2 \ - file://0006-Fix-build-with-5.14-kernel.patch;pnum=2 \ - file://sllin-demo.service \ - file://start_lin_demo.sh \ - file://lin_config.conf \ -" - -KERNEL_MODULE_AUTOLOAD:append = " sllin" -KERNEL_MODULE_PROBECONF:append = " sllin" - -SLLINBAUDRATE ??= "9600" -module_conf_sllin = "options sllin baudrate=${SLLINBAUDRATE}" - -SYSTEMD_SERVICE:${PN} = "sllin-demo.service" - -do_install:append () { - install -d 644 ${D}/${bindir} - install -m 755 ${WORKDIR}/start_lin_demo.sh ${D}/${bindir}/start_lin_demo.sh - install -d ${D}${systemd_system_unitdir} - install -m 0644 ${WORKDIR}/sllin-demo.service ${D}${systemd_system_unitdir}/ - install -d ${D}${sysconfdir} - install -m 0644 ${WORKDIR}/lin_config.conf ${D}${sysconfdir}/ -} - -FILES:${PN} += "${bindir}/start_lin_demo.sh ${sysconfdir}/lin_config.conf" - -RDEPENDS:${PN} += "lin-config" diff --git a/recipes-kernel/sllin/files/0001_update_makefile.patch b/recipes-kernel/sllin/sllin/0001-update-makefile.patch index 7db57802b..7db57802b 100644 --- a/recipes-kernel/sllin/files/0001_update_makefile.patch +++ b/recipes-kernel/sllin/sllin/0001-update-makefile.patch diff --git a/recipes-kernel/sllin/sllin/0002-5.4-less-than-110-fix.patch b/recipes-kernel/sllin/sllin/0002-5.4-less-than-110-fix.patch new file mode 100644 index 000000000..8c13bfb53 --- /dev/null +++ b/recipes-kernel/sllin/sllin/0002-5.4-less-than-110-fix.patch @@ -0,0 +1,25 @@ +Fix compilation against kernels < 5.4.110 + +The fix to handle the backport of 4e096a18 to linux-5.4.y is a bit +too broad, as it breaks building against kernels older than 5.4.110, +add a version check to fix. + +Upstream-Status: pending +Signed-off-by: Scott Murray <scott.murray@konsulko.com> + +diff --git a/sllin/sllin.c b/sllin/sllin.c +index b3f2636..a6fb120 100644 +--- a/sllin/sllin.c ++++ b/sllin/sllin.c +@@ -1604,7 +1604,11 @@ static struct sllin *sll_alloc(dev_t line) + sl = netdev_priv(dev); + #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 0) + can_ml = (void *)sl + ALIGN(sizeof(*sl), NETDEV_ALIGN); ++ #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 110) + can_set_ml_priv(dev, can_ml); ++ #else ++ dev->ml_priv = can_ml; ++ #endif + #endif + /* Initialize channel control data */ + sl->magic = SLLIN_MAGIC; diff --git a/recipes-kernel/sllin/sllin_git.bb b/recipes-kernel/sllin/sllin_git.bb new file mode 100644 index 000000000..f13bcd55b --- /dev/null +++ b/recipes-kernel/sllin/sllin_git.bb @@ -0,0 +1,22 @@ +DESCRIPTION = "slLIN driver module" +LICENSE = "GPL-2.0-only" +LIC_FILES_CHKSUM = "file://sllin.c;beginline=7;endline=37;md5=6408e14dba951f8cbe3c2a003a0d89d2" + +inherit module + +DEPENDS = "virtual/kernel" + +SRC_URI = "git://github.com/lin-bus/linux-lin.git;protocol=https;branch=master \ + file://0001-update-makefile.patch;pnum=2 \ + file://0002-5.4-less-than-110-fix.patch;pnum=2 \ +" +SRCREV = "beb057d7505e0c4d7c61f3f4927b76916ec00e88" +S = "${WORKDIR}/git/sllin" + +PV = "0.1+git${SRCPV}" + +KERNEL_MODULE_AUTOLOAD:append = " sllin" +KERNEL_MODULE_PROBECONF:append = " sllin" + +SLLINBAUDRATE ??= "9600" +module_conf_sllin = "options sllin baudrate=${SLLINBAUDRATE}" |