From 2c02f11018caa3a146b93d5bf91d5ca49df752cf Mon Sep 17 00:00:00 2001 From: afl1 Date: Sat, 24 Feb 2018 17:09:33 +0100 Subject: [PATCH 1/3] linux-drivers: build internal dvb driver AVL6862 for Amlogic/S9xx devices --- .../amlogic/avl6862-aml/package.mk | 32 +++++++++++++++++++ .../avl6862-aml/system.d/amlogic-dvb.service | 11 +++++++ projects/Amlogic/devices/S905/options | 3 +- projects/Amlogic/devices/S912/options | 3 +- 4 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 packages/linux-drivers/amlogic/avl6862-aml/package.mk create mode 100644 packages/linux-drivers/amlogic/avl6862-aml/system.d/amlogic-dvb.service diff --git a/packages/linux-drivers/amlogic/avl6862-aml/package.mk b/packages/linux-drivers/amlogic/avl6862-aml/package.mk new file mode 100644 index 0000000000..5612a8a755 --- /dev/null +++ b/packages/linux-drivers/amlogic/avl6862-aml/package.mk @@ -0,0 +1,32 @@ +################################################################################ +# This file is part of LibreELEC - https://libreelec.tv +# Copyright (C) 2017-present Team LibreELEC +# +# LibreELEC is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# LibreELEC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with LibreELEC. If not, see . +################################################################################ + +PKG_NAME="avl6862-aml" +PKG_VERSION="1.0" +PKG_ARCH="arm aarch64" +PKG_LICENSE="GPL" +PKG_SITE="https://libreelec.tv" +PKG_URL="" +PKG_DEPENDS_TARGET="toolchain" +PKG_SECTION="virtual" +PKG_SHORTDESC="avl6862-aml: Internal DVB tuner driver for Amlogic devices developed by afl1" +PKG_LONGDESC="avl6862-aml: Internal DVB tuner driver for Amlogic devices developed by afl1" + +post_install() { + enable_service amlogic-dvb.service +} diff --git a/packages/linux-drivers/amlogic/avl6862-aml/system.d/amlogic-dvb.service b/packages/linux-drivers/amlogic/avl6862-aml/system.d/amlogic-dvb.service new file mode 100644 index 0000000000..3feef16975 --- /dev/null +++ b/packages/linux-drivers/amlogic/avl6862-aml/system.d/amlogic-dvb.service @@ -0,0 +1,11 @@ +[Unit] +Description=Amlogic DVB module loader +ConditionPathExists=/proc/device-tree/dvbfe/dtv_demod0 +After=kernel-overlays.service + +[Service] +Type=simple +ExecStart=/bin/sh -c '[ `cat /proc/device-tree/dvbfe/dtv_demod0` = "Avl6211" ] && /sbin/modprobe aml_fe' + +[Install] +WantedBy=basic.target diff --git a/projects/Amlogic/devices/S905/options b/projects/Amlogic/devices/S905/options index 7f7520571b..0c0c43cd0e 100644 --- a/projects/Amlogic/devices/S905/options +++ b/projects/Amlogic/devices/S905/options @@ -7,7 +7,8 @@ # e.g. ADDITIONAL_DRIVERS="DRIVER1 DRIVER2" ADDITIONAL_DRIVERS="$ADDITIONAL_DRIVERS ap6xxx-aml mt7601u-aml mt7603u-aml \ qca9377-aml RTL8189ES-aml RTL8189FS-aml RTL8723BS-aml \ - RTL8723DS-aml RTL8822BU-aml ssv6xxx-aml fd628-aml wetekdvb" + RTL8723DS-aml RTL8822BU-aml ssv6xxx-aml fd628-aml wetekdvb \ + avl6862-aml" # additional Firmware to use (dvb-firmware, misc-firmware, wlan-firmware) # Space separated list is supported, diff --git a/projects/Amlogic/devices/S912/options b/projects/Amlogic/devices/S912/options index 6af65e3030..814a0ff800 100644 --- a/projects/Amlogic/devices/S912/options +++ b/projects/Amlogic/devices/S912/options @@ -16,7 +16,8 @@ # e.g. ADDITIONAL_DRIVERS="DRIVER1 DRIVER2" ADDITIONAL_DRIVERS="$ADDITIONAL_DRIVERS ap6xxx-aml mt7601u-aml mt7603u-aml \ qca9377-aml RTL8189ES-aml RTL8189FS-aml \ - RTL8723BS-aml RTL8723DS-aml RTL8822BU-aml ssv6xxx-aml fd628-aml" + RTL8723BS-aml RTL8723DS-aml RTL8822BU-aml ssv6xxx-aml fd628-aml \ + avl6862-aml" # additional Firmware to use (dvb-firmware, misc-firmware, wlan-firmware) # Space separated list is supported, From 03a417fb85dbd27de620ea92cd5eb411b7a981c9 Mon Sep 17 00:00:00 2001 From: afl1 Date: Sat, 24 Feb 2018 17:10:43 +0100 Subject: [PATCH 2/3] crazycat: add AVL6268 DVB driver --- ...cat-01-add-AML-specific-to-backports.patch | 4 +- .../driver.dvb.crazycat-04-AML-hacks.patch | 6 ++- .../driver.dvb.crazycat-05-compat_h-fix.patch | 11 ++++++ .../backports/linux-305-AML-dmx_h.patch | 24 ++++++++++++ .../linux-306-AML-build-dvb-avl.patch | 39 +++++++++++++++++++ 5 files changed, 82 insertions(+), 2 deletions(-) create mode 100644 packages/linux-driver-addons/dvb/crazycat/patches/amlogic/driver.dvb.crazycat-05-compat_h-fix.patch create mode 100644 packages/linux-driver-addons/dvb/crazycat/sources/backports/linux-305-AML-dmx_h.patch create mode 100644 packages/linux-driver-addons/dvb/crazycat/sources/backports/linux-306-AML-build-dvb-avl.patch diff --git a/packages/linux-driver-addons/dvb/crazycat/patches/amlogic/driver.dvb.crazycat-01-add-AML-specific-to-backports.patch b/packages/linux-driver-addons/dvb/crazycat/patches/amlogic/driver.dvb.crazycat-01-add-AML-specific-to-backports.patch index 1228bbbdfc..3555acd3b5 100644 --- a/packages/linux-driver-addons/dvb/crazycat/patches/amlogic/driver.dvb.crazycat-01-add-AML-specific-to-backports.patch +++ b/packages/linux-driver-addons/dvb/crazycat/patches/amlogic/driver.dvb.crazycat-01-add-AML-specific-to-backports.patch @@ -1,7 +1,7 @@ diff -Naur a/backports/backports.txt b/backports/backports.txt --- a/backports/backports.txt 2017-12-30 22:14:58.000000000 +0200 +++ b/backports/backports.txt 2018-02-23 13:50:01.327967293 +0200 -@@ -21,6 +21,10 @@ +@@ -21,6 +21,12 @@ # All supported versions need those patches [9.255.255] @@ -9,6 +9,8 @@ diff -Naur a/backports/backports.txt b/backports/backports.txt +add linux-302-AML-amlogic-video-dev.patch +add linux-303-AML-meson-ir.patch +add linux-304-AML-wetekplay.patch ++add linux-305-AML-dmx_h.patch ++add linux-306-AML-build-dvb-avl.patch add api_version.patch add pr_fmt.patch add debug.patch diff --git a/packages/linux-driver-addons/dvb/crazycat/patches/amlogic/driver.dvb.crazycat-04-AML-hacks.patch b/packages/linux-driver-addons/dvb/crazycat/patches/amlogic/driver.dvb.crazycat-04-AML-hacks.patch index 438b26d02b..1628716dd9 100644 --- a/packages/linux-driver-addons/dvb/crazycat/patches/amlogic/driver.dvb.crazycat-04-AML-hacks.patch +++ b/packages/linux-driver-addons/dvb/crazycat/patches/amlogic/driver.dvb.crazycat-04-AML-hacks.patch @@ -1,7 +1,7 @@ diff -Naur a/linux/Makefile b/linux/Makefile --- a/linux/Makefile 2017-12-30 22:01:38.000000000 +0200 +++ b/linux/Makefile 2018-02-23 13:25:54.025763853 +0200 -@@ -112,6 +112,17 @@ +@@ -112,6 +112,21 @@ untar: linux-media.tar.bz2 tar xfj linux-media.tar.bz2 @@ -15,6 +15,10 @@ diff -Naur a/linux/Makefile b/linux/Makefile + + # Copy WeTek Play DVB driver + cp -a "$(SRCDIR)/drivers/amlogic/wetek" "drivers/media/amlogic" ++ ++ # Copy dvb-avl driver ++ cp -a $(SRCDIR)/drivers/amlogic/dvb-avl "drivers/media" ++ echo "obj-y += dvb-avl/" >> "drivers/media/Makefile" + -rm -f .patches_applied .linked_dir .git_log.md5 diff --git a/packages/linux-driver-addons/dvb/crazycat/patches/amlogic/driver.dvb.crazycat-05-compat_h-fix.patch b/packages/linux-driver-addons/dvb/crazycat/patches/amlogic/driver.dvb.crazycat-05-compat_h-fix.patch new file mode 100644 index 0000000000..d3bab57223 --- /dev/null +++ b/packages/linux-driver-addons/dvb/crazycat/patches/amlogic/driver.dvb.crazycat-05-compat_h-fix.patch @@ -0,0 +1,11 @@ +--- a/v4l/compat.h ++++ b/v4l/compat.h +@@ -1456,7 +1456,6 @@ + #endif + + #ifdef NEED_SMP_MB_AFTER_ATOMIC +-#define smp_mb__after_atomic smp_mb__after_clear_bit + #endif + + #ifdef NEED_DEVM_KMALLOC_ARRAY + diff --git a/packages/linux-driver-addons/dvb/crazycat/sources/backports/linux-305-AML-dmx_h.patch b/packages/linux-driver-addons/dvb/crazycat/sources/backports/linux-305-AML-dmx_h.patch new file mode 100644 index 0000000000..46bd6f9e75 --- /dev/null +++ b/packages/linux-driver-addons/dvb/crazycat/sources/backports/linux-305-AML-dmx_h.patch @@ -0,0 +1,24 @@ +--- a/include/uapi/linux/dvb/dmx.h 2017-01-23 18:15:29.000000000 +0100 ++++ b/include/uapi/linux/dvb/dmx.h 2017-02-08 14:12:07.802477417 +0100 +@@ -197,6 +197,20 @@ + __u32 flags; + }; + ++typedef enum dmx_source { ++ DMX_SOURCE_FRONT0 = 0, ++ DMX_SOURCE_FRONT1, ++ DMX_SOURCE_FRONT2, ++ DMX_SOURCE_FRONT3, ++ DMX_SOURCE_DVR0 = 16, ++ DMX_SOURCE_DVR1, ++ DMX_SOURCE_DVR2, ++ DMX_SOURCE_DVR3, ++ DMX_SOURCE_FRONT0_OFFSET = 100, ++ DMX_SOURCE_FRONT1_OFFSET, ++ DMX_SOURCE_FRONT2_OFFSET ++} dmx_source_t; ++ + /** + * struct dmx_stc - Stores System Time Counter (STC) information. + * +-- diff --git a/packages/linux-driver-addons/dvb/crazycat/sources/backports/linux-306-AML-build-dvb-avl.patch b/packages/linux-driver-addons/dvb/crazycat/sources/backports/linux-306-AML-build-dvb-avl.patch new file mode 100644 index 0000000000..86613f0c64 --- /dev/null +++ b/packages/linux-driver-addons/dvb/crazycat/sources/backports/linux-306-AML-build-dvb-avl.patch @@ -0,0 +1,39 @@ +--- a/drivers/media/dvb-avl/aml_dmx.c 2017-12-10 19:34:57.000000000 +0100 ++++ b/drivers/media/dvb-avl/aml_dmx.c 2017-12-12 12:55:21.255063140 +0100 +@@ -547,7 +547,7 @@ + struct dvb_demux_feed *feed = dmx->channel[f->chan_id].feed; + + if (feed && feed->cb.sec) +- feed->cb.sec(p, sec_len, NULL, 0, f->filter, DMX_OK); ++ feed->cb.sec(p, sec_len, NULL, 0, f->filter); + } + + static void hardware_match_section(struct aml_dmx *dmx, +@@ -968,7 +968,7 @@ + if (dmx->channel[2].feed && dmx->channel[2].feed->cb.ts) { + dmx->channel[2].feed->cb.ts(buffer1_virt, len1, + buffer2_virt, len2, +- &dmx->channel[2].feed->feed.ts, DMX_OK); ++ &dmx->channel[2].feed->feed.ts); + } + } + WRITE_MPEG_REG(PARSER_SUB_RP, rd_ptr); +@@ -1167,7 +1167,7 @@ + channel->dvr_feed->cb.ts( + (u8 *)afifo->pages+afifo->buf_read*size, + cnt*size, NULL, 0, +- &channel->dvr_feed->feed.ts, DMX_OK); ++ &channel->dvr_feed->feed.ts); + afifo->buf_read = 0; + } + +@@ -1186,7 +1186,7 @@ + channel->dvr_feed->cb.ts( + (u8 *)afifo->pages+afifo->buf_read*size, + cnt*size, NULL, 0, +- &channel->dvr_feed->feed.ts, DMX_OK); ++ &channel->dvr_feed->feed.ts); + afifo->buf_read = afifo->buf_toggle; + } + +-- From 37dcf46a53b538486561559def5eda342ab5ee09 Mon Sep 17 00:00:00 2001 From: afl1 Date: Sat, 24 Feb 2018 17:13:33 +0100 Subject: [PATCH 3/3] hauppauge: add AVL6268 DVB driver --- .../dvb/depends/media_tree/package.mk | 6 +++ ...uge-01-add-AML-specific-to-backports.patch | 4 +- ...driver.dvb.hauppauge-05-compat_h-fix.patch | 11 ++++++ .../backports/linux-305-AML-dmx_h.patch | 24 ++++++++++++ .../linux-306-AML-build-dvb-avl.patch | 39 +++++++++++++++++++ 5 files changed, 83 insertions(+), 1 deletion(-) create mode 100644 packages/linux-driver-addons/dvb/hauppauge/patches/amlogic/driver.dvb.hauppauge-05-compat_h-fix.patch create mode 100644 packages/linux-driver-addons/dvb/hauppauge/sources/backports/linux-305-AML-dmx_h.patch create mode 100644 packages/linux-driver-addons/dvb/hauppauge/sources/backports/linux-306-AML-build-dvb-avl.patch diff --git a/packages/linux-driver-addons/dvb/depends/media_tree/package.mk b/packages/linux-driver-addons/dvb/depends/media_tree/package.mk index ee7a444b67..a4966031e3 100644 --- a/packages/linux-driver-addons/dvb/depends/media_tree/package.mk +++ b/packages/linux-driver-addons/dvb/depends/media_tree/package.mk @@ -54,5 +54,11 @@ unpack() { if [ $LINUX = "amlogic-3.14" ]; then cp -a "$(kernel_path)/drivers/amlogic/wetek" "$PKG_BUILD/drivers/media/amlogic" fi + + # Copy avl6862 driver + cp -a $(kernel_path)/drivers/amlogic/dvb-avl "$PKG_BUILD/drivers/media" + if listcontains "$ADDITIONAL_DRIVERS" "avl6862-aml"; then + echo "obj-y += dvb-aml/" >> "$PKG_BUILD/drivers/media/Makefile" + fi fi } diff --git a/packages/linux-driver-addons/dvb/hauppauge/patches/amlogic/driver.dvb.hauppauge-01-add-AML-specific-to-backports.patch b/packages/linux-driver-addons/dvb/hauppauge/patches/amlogic/driver.dvb.hauppauge-01-add-AML-specific-to-backports.patch index 1228bbbdfc..3555acd3b5 100644 --- a/packages/linux-driver-addons/dvb/hauppauge/patches/amlogic/driver.dvb.hauppauge-01-add-AML-specific-to-backports.patch +++ b/packages/linux-driver-addons/dvb/hauppauge/patches/amlogic/driver.dvb.hauppauge-01-add-AML-specific-to-backports.patch @@ -1,7 +1,7 @@ diff -Naur a/backports/backports.txt b/backports/backports.txt --- a/backports/backports.txt 2017-12-30 22:14:58.000000000 +0200 +++ b/backports/backports.txt 2018-02-23 13:50:01.327967293 +0200 -@@ -21,6 +21,10 @@ +@@ -21,6 +21,12 @@ # All supported versions need those patches [9.255.255] @@ -9,6 +9,8 @@ diff -Naur a/backports/backports.txt b/backports/backports.txt +add linux-302-AML-amlogic-video-dev.patch +add linux-303-AML-meson-ir.patch +add linux-304-AML-wetekplay.patch ++add linux-305-AML-dmx_h.patch ++add linux-306-AML-build-dvb-avl.patch add api_version.patch add pr_fmt.patch add debug.patch diff --git a/packages/linux-driver-addons/dvb/hauppauge/patches/amlogic/driver.dvb.hauppauge-05-compat_h-fix.patch b/packages/linux-driver-addons/dvb/hauppauge/patches/amlogic/driver.dvb.hauppauge-05-compat_h-fix.patch new file mode 100644 index 0000000000..d3bab57223 --- /dev/null +++ b/packages/linux-driver-addons/dvb/hauppauge/patches/amlogic/driver.dvb.hauppauge-05-compat_h-fix.patch @@ -0,0 +1,11 @@ +--- a/v4l/compat.h ++++ b/v4l/compat.h +@@ -1456,7 +1456,6 @@ + #endif + + #ifdef NEED_SMP_MB_AFTER_ATOMIC +-#define smp_mb__after_atomic smp_mb__after_clear_bit + #endif + + #ifdef NEED_DEVM_KMALLOC_ARRAY + diff --git a/packages/linux-driver-addons/dvb/hauppauge/sources/backports/linux-305-AML-dmx_h.patch b/packages/linux-driver-addons/dvb/hauppauge/sources/backports/linux-305-AML-dmx_h.patch new file mode 100644 index 0000000000..46bd6f9e75 --- /dev/null +++ b/packages/linux-driver-addons/dvb/hauppauge/sources/backports/linux-305-AML-dmx_h.patch @@ -0,0 +1,24 @@ +--- a/include/uapi/linux/dvb/dmx.h 2017-01-23 18:15:29.000000000 +0100 ++++ b/include/uapi/linux/dvb/dmx.h 2017-02-08 14:12:07.802477417 +0100 +@@ -197,6 +197,20 @@ + __u32 flags; + }; + ++typedef enum dmx_source { ++ DMX_SOURCE_FRONT0 = 0, ++ DMX_SOURCE_FRONT1, ++ DMX_SOURCE_FRONT2, ++ DMX_SOURCE_FRONT3, ++ DMX_SOURCE_DVR0 = 16, ++ DMX_SOURCE_DVR1, ++ DMX_SOURCE_DVR2, ++ DMX_SOURCE_DVR3, ++ DMX_SOURCE_FRONT0_OFFSET = 100, ++ DMX_SOURCE_FRONT1_OFFSET, ++ DMX_SOURCE_FRONT2_OFFSET ++} dmx_source_t; ++ + /** + * struct dmx_stc - Stores System Time Counter (STC) information. + * +-- diff --git a/packages/linux-driver-addons/dvb/hauppauge/sources/backports/linux-306-AML-build-dvb-avl.patch b/packages/linux-driver-addons/dvb/hauppauge/sources/backports/linux-306-AML-build-dvb-avl.patch new file mode 100644 index 0000000000..86613f0c64 --- /dev/null +++ b/packages/linux-driver-addons/dvb/hauppauge/sources/backports/linux-306-AML-build-dvb-avl.patch @@ -0,0 +1,39 @@ +--- a/drivers/media/dvb-avl/aml_dmx.c 2017-12-10 19:34:57.000000000 +0100 ++++ b/drivers/media/dvb-avl/aml_dmx.c 2017-12-12 12:55:21.255063140 +0100 +@@ -547,7 +547,7 @@ + struct dvb_demux_feed *feed = dmx->channel[f->chan_id].feed; + + if (feed && feed->cb.sec) +- feed->cb.sec(p, sec_len, NULL, 0, f->filter, DMX_OK); ++ feed->cb.sec(p, sec_len, NULL, 0, f->filter); + } + + static void hardware_match_section(struct aml_dmx *dmx, +@@ -968,7 +968,7 @@ + if (dmx->channel[2].feed && dmx->channel[2].feed->cb.ts) { + dmx->channel[2].feed->cb.ts(buffer1_virt, len1, + buffer2_virt, len2, +- &dmx->channel[2].feed->feed.ts, DMX_OK); ++ &dmx->channel[2].feed->feed.ts); + } + } + WRITE_MPEG_REG(PARSER_SUB_RP, rd_ptr); +@@ -1167,7 +1167,7 @@ + channel->dvr_feed->cb.ts( + (u8 *)afifo->pages+afifo->buf_read*size, + cnt*size, NULL, 0, +- &channel->dvr_feed->feed.ts, DMX_OK); ++ &channel->dvr_feed->feed.ts); + afifo->buf_read = 0; + } + +@@ -1186,7 +1186,7 @@ + channel->dvr_feed->cb.ts( + (u8 *)afifo->pages+afifo->buf_read*size, + cnt*size, NULL, 0, +- &channel->dvr_feed->feed.ts, DMX_OK); ++ &channel->dvr_feed->feed.ts); + afifo->buf_read = afifo->buf_toggle; + } + +--