Compare commits

...

176 Commits

Author SHA1 Message Date
Matthias Reichl
2d400f1239 Merge pull request #3591 from MilhouseVH/le92_buildsystem_cleanup_scripts
buildsystem: cleanup scripts, consistent brace usage [backport]
2019-06-23 01:53:07 +02:00
MilhouseVH
8a7f1edad0 buildsystem: die if a kernel config is not available 2019-06-22 21:09:13 +01:00
MilhouseVH
b6027210f5 buildsystem: clean/install - dquote both sides 2019-06-22 21:03:54 +01:00
MilhouseVH
113b2829ab buildsystem: build/unpack - simplify some logic 2019-06-22 21:03:48 +01:00
MilhouseVH
0e2b1c616b buildsystem: image - use HERE docs 2019-06-22 21:03:38 +01:00
MilhouseVH
0ef9bd02e5 buildsystem: consistently use braces 2019-06-22 21:01:46 +01:00
MilhouseVH
b63c7cfe41 buildsystem: cleanup - PACKAGE_NAME is redundant 2019-06-22 20:54:06 +01:00
Christian Hewitt
b4a9b00c60 Merge pull request #3588 from Kwiboo/le92-kodi-18.3-rk-v2
kodi (Rockchip): update to kodi-rockchip_18.3-Leia-v2
2019-06-22 22:41:31 +04:00
Christian Hewitt
5225394e95 Merge pull request #3590 from Kwiboo/le92-rkmpp-bump
[le92] rkmpp: update to 66b140e
2019-06-22 22:34:10 +04:00
Jonas Karlman
8daa6cd4a2 rkmpp: update to 66b140e 2019-06-22 17:40:32 +00:00
Jonas Karlman
bd66701ec9 kodi (Rockchip): update to kodi-rockchip_18.3-Leia-v2 2019-06-22 17:26:10 +00:00
Christian Hewitt
1279115624 Merge pull request #3579 from HiassofT/le92-kodi-18.3
Update Kodi to 18.3-Leia
2019-06-22 07:54:27 +04:00
Matthias Reichl
2d418f67cc Merge pull request #3581 from CvH/9.2/addon_ver_up
distro: bump ADDON_VERSION to 9.1.900
2019-06-21 21:15:04 +02:00
CvH
934cb939f3 distro: bump ADDON_VERSION to 9.1.900 2019-06-21 21:00:21 +02:00
Matthias Reichl
a032fbd82e Allwinner: drop kodi sw format check patch
Signed-off-by: Matthias Reichl <hias@horus.com>
2019-06-20 10:54:19 +02:00
MilhouseVH
2f3ef07ca5 binary-addons: bump to latest Leia 2019-06-20 00:23:16 +02:00
Matthias Reichl
dc44c45496 kodi: update to 18.3-Leia
Signed-off-by: Matthias Reichl <hias@horus.com>
2019-06-19 23:54:17 +02:00
Christian Hewitt
97c44d6185 Merge pull request #3578 from MilhouseVH/le9.2-drop_aml_3.14
Goodbye Amlogic 3.14 [backport]
2019-06-19 22:50:02 +04:00
Carlos Garces
8cb1faf75a RTL8192EU: Remove patches for old GCC versions. 2019-06-19 19:10:47 +01:00
Carlos Garces
1d18803bd6 RTL8192CU: Remove patches for old kernels and GCC versions 2019-06-19 19:10:47 +01:00
kszaq
0f9583da99 wetekdvb: drop package 2019-06-19 19:09:56 +01:00
MilhouseVH
e748d109b4 libcec: force disable amlogic options while not required 2019-06-19 19:06:58 +01:00
MilhouseVH
95422fadf0 linux: should have been kept 2019-06-19 19:06:58 +01:00
kszaq
d7e956544a busybox/init: amend comment on block devices 2019-06-19 19:06:43 +01:00
kszaq
267a536c16 libretro-ppsspp: use target_has_feature neon to enable neon+GLES2 2019-06-19 19:06:43 +01:00
kszaq
987f53ca59 touchscreen: remove Amlogic from PKG_ADDON_PROJECTS 2019-06-19 19:06:43 +01:00
kszaq
a3f6e5a14a tools: drop mkpkg_linux-amlogic 2019-06-19 19:06:43 +01:00
kszaq
91594773df fd628: remove addon 2019-06-19 19:06:43 +01:00
kszaq
0019bbb7db kodi: drop libamcodec support 2019-06-19 19:06:43 +01:00
kszaq
1f360da59f hyperion: drop amlogic-specific patch 2019-06-19 19:06:43 +01:00
kszaq
42d2f83366 boblightd: drop amlogic-specific path and binary 2019-06-19 19:06:43 +01:00
kszaq
3c36022773 linux: drop amlogic-3.14 kernel, drop building Android kernel image 2019-06-19 19:06:40 +01:00
kszaq
7bd39a17c5 packages: drop amlogic-specific packages 2019-06-19 18:54:42 +01:00
kszaq
f0b6c134bc scripts, tools: drop amlpkg building 2019-06-19 18:52:37 +01:00
kszaq
68a053bf5d projects: remove Amlogic_legacy project 2019-06-19 18:31:17 +01:00
MilhouseVH
61e8300e84 Merge pull request #3576 from HiassofT/le92-edid-decode
[le92] edid-decode: switch to current URL and update to latest version
2019-06-19 16:44:37 +01:00
Matthias Reichl
a01d717b01 edid-decode: switch to current URL and update to latest version
The project moved from freedesktop.org to linuxtv.org in 2018.

See https://cgit.freedesktop.org/xorg/app/edid-decode/tree/README

Signed-off-by: Matthias Reichl <hias@horus.com>
2019-06-19 11:42:31 +02:00
Christian Hewitt
ef00cbec7a Merge pull request #3559 from MilhouseVH/le92_linux_5.1
Backports: kernel 5.1, Allwinner, u-boot, mali, dvb-latest
2019-06-17 05:52:44 +04:00
Jernej Skrabec
ba4d163046 Allwinner: Extract USB3 patch and move it to common patch folder 2019-06-15 07:31:59 +01:00
Jernej Skrabec
d44512f065 Allwinner: Move OrangePi One Plus patches to H6 specific folder 2019-06-15 07:31:30 +01:00
MilhouseVH
644437a35c buildsystem: remove legacy sequential code 2019-06-15 06:26:49 +01:00
MilhouseVH
86a09910c8 busybox: fix XBMC reference 2019-06-15 06:26:29 +01:00
viulian
324c9b9e91 tinkerboard: disable 5s polling for CEC adapters (solve kwiboo's reviews) 2019-06-15 06:26:29 +01:00
viulian
18835008d7 tinkerboard: disable 5s polling for CEC adapters 2019-06-15 06:26:29 +01:00
MilhouseVH
424156e8c2 procps-ng: use gitlab.com for download url 2019-06-15 06:26:29 +01:00
MilhouseVH
58652ed54f nss: update to nss-3.44 2019-06-15 06:26:29 +01:00
MilhouseVH
7fe797c21d nss-mdns: update to nss-mdns-0.14.1 2019-06-15 06:26:29 +01:00
MilhouseVH
8a44aff0ae xkeyboard-config: update to xkeyboard-config-2.27 2019-06-15 06:26:29 +01:00
MilhouseVH
b350409a87 pycryptodome: update to pycryptodome-3.8.2 2019-06-15 06:26:29 +01:00
MilhouseVH
02c26cf74c nghttp2: update to nghttp2-1.39.1 2019-06-15 06:26:29 +01:00
MilhouseVH
10ceab95eb mariadb-connector-c: update to mariadb-connector-c-3.1.1 2019-06-15 06:26:29 +01:00
MilhouseVH
19eab3c0b4 libmicrohttpd: update to libmicrohttpd-0.9.64 2019-06-15 06:26:29 +01:00
MilhouseVH
1de4183ac9 libevdev: update to libevdev-1.7.0 2019-06-15 06:26:29 +01:00
MilhouseVH
8468cb546d e2fsprogs: update to e2fsprogs-1.45.2 2019-06-15 06:26:29 +01:00
MilhouseVH
1ef9d61701 Mako: update to Mako-1.0.12 2019-06-15 06:26:29 +01:00
Marcus Cooper
8b74db943e Allwinner: Update uboot changes for Orange Pi 1+ 2019-06-15 06:26:29 +01:00
Marcus Cooper
a25d0284bb Allwinner: linux: Add Orange Pi One Plus updates 2019-06-15 06:26:29 +01:00
Marcus Cooper
6c35c7744d uboot_helper: Add Orange Pi One Plus board 2019-06-15 06:26:29 +01:00
Matthias Reichl
d015207763 systemd: add version-tag build option
Without this option systemd 241 and newer builds will run git describe
and report the LibreELEC git tree info as version, eg in journal

systemd 8.95.002-927-gb1cdc76 running in system mode.

With version-tag set the version is reported like before

systemd 242 running in system mode.

Signed-off-by: Matthias Reichl <hias@horus.com>
2019-06-15 06:26:29 +01:00
MilhouseVH
309c06aa95 systemd: add new options 2019-06-15 06:26:29 +01:00
MilhouseVH
48454e8f09 systemd: disable options being detected automagically 2019-06-15 06:26:29 +01:00
MilhouseVH
dce3e3d9b2 systemd: drop unknown options 2019-06-15 06:26:29 +01:00
MilhouseVH
bf92570214 systemd: update hwdb.bin patch 2019-06-15 06:26:29 +01:00
MilhouseVH
f308199746 systemd: drop patches 2019-06-15 06:26:29 +01:00
MilhouseVH
33a9e93a8b systemd: update to systemd-242 2019-06-15 06:26:29 +01:00
MilhouseVH
7e8d54b030 Rockchip: disable crazycat 2019-06-15 06:26:29 +01:00
CvH
44e5a963ec crazycat: update to 2019-05-12 2019-06-15 06:26:29 +01:00
CvH
84b141fb03 media_tree_cc: update to 2019-05-12 2019-06-15 06:26:29 +01:00
CvH
549631cc92 digital_devices: update to 040a1c5 2019-06-15 06:26:29 +01:00
CvH
79faa669af dvb-latest: update to 2019-05-30 2019-06-15 06:26:29 +01:00
CvH
ef314ac176 media_tree: update to 2019-05-30 2019-06-15 06:26:29 +01:00
Jonas Karlman
1994796f5f libmali: add depends on kernel driver 2019-06-15 06:26:29 +01:00
kszaq
c5c03e9217 Allwinner/H6: match upstream DT bingings in add-mali-node patch 2019-06-15 06:26:29 +01:00
kszaq
ae802aa241 mali-midgard: update to r28p0 with all patches integrated 2019-06-15 06:26:29 +01:00
kszaq
45b4a7eaf9 gpu-sunxi-midgard: rename to mali-midgard 2019-06-15 06:26:29 +01:00
kszaq
2e82cb8bfe mali-utgard: use LibreELEC repo with support for all platforms, remove patches 2019-06-15 06:26:29 +01:00
kszaq
a8f0af8f9f gpu-sunxi: rename to mali-utgard, prepare for adding platforms 2019-06-15 06:26:29 +01:00
Jonas Karlman
b01294dfbd libmali: update to 4cbf211
Adds support for multiple so-files
2019-06-15 06:26:29 +01:00
Félix Arreola Rodríguez
075cd80895 Alliwinner: Add eMMC definition to device tree of Orange PI 3 2019-06-15 06:26:29 +01:00
Jernej Skrabec
17402b185f u-boot: Update to 2019.04 and drop merged Allwinner patch 2019-06-15 06:26:29 +01:00
Jernej Skrabec
ecfc4182fb Drop KERNEL_UBOOT_EXTRA_TARGET, it's never used 2019-06-15 06:26:29 +01:00
Jernej Skrabec
997b403b4c Drop UBOOT_CONFIGFILE, it's never used 2019-06-15 06:26:29 +01:00
Jernej Skrabec
b66f07ff23 Drop UBOOT_CONFIG, it's never used 2019-06-15 06:26:29 +01:00
Jernej Skrabec
3c407df2fc Allwinner: Update Beelink X2 U-Boot patch 2019-06-15 06:26:29 +01:00
MilhouseVH
65b88d4550 linux (Allwinner): fix H6 BT patch 2019-06-15 06:26:29 +01:00
Jernej Skrabec
5224281992 uboot_helper: Add OrangePi 3 2019-06-15 06:26:29 +01:00
Jernej Skrabec
ed3f230d16 Allwinner: Add support for OrangePi 3 (H6) 2019-06-15 06:26:29 +01:00
Jernej Skrabec
37fb055954 brcmfmac_sdio-firmware: Update package 2019-06-15 06:26:29 +01:00
Jernej Skrabec
531c4785ec atf: Add fix for Allwinner H6 reboot issue 2019-06-15 06:26:29 +01:00
Jernej Skrabec
5897e8155e ffmpeg: update request api patches 2019-06-15 06:26:29 +01:00
Jernej Skrabec
61ad04c423 brcmfmac_sdio-firmware: Update to 3d887490ab93 2019-06-15 06:26:29 +01:00
Jernej Skrabec
10e8774143 gpu-sunxi: Fix building with Linux 5.1 2019-06-15 06:26:29 +01:00
Jernej Skrabec
0423b4c8b6 gpu-sunxi-midgard: Fix building with 5.1 2019-06-15 06:26:29 +01:00
MilhouseVH
c01f524e80 linux (Allwinner): update to 5.1.9 2019-06-15 06:26:29 +01:00
MilhouseVH
89c4916d11 linux (RPi/Generic/Allwinner): revert faulty Bluetooth commit
https://forum.kodi.tv/showthread.php?tid=343069&pid=2858940#pid2858940
https://forum.kodi.tv/showthread.php?tid=343068&pid=2859150#pid2859150
2019-06-15 06:26:29 +01:00
MilhouseVH
f25a4c7159 wireless-regdb: update to wireless-regdb-2019.06.03 2019-06-15 06:26:29 +01:00
MilhouseVH
48bda22cbc xf86-video-nvidia-legacy: fix panic with 5.1 2019-06-15 06:26:29 +01:00
MilhouseVH
43df7485f8 iwlwifi-firmware: update to iwlwifi-firmware-caaa6cc 2019-06-15 06:26:29 +01:00
Matthias Reichl
2c5d302d8e binutils: build libopcodes for target
Signed-off-by: Matthias Reichl <hias@horus.com>
2019-06-15 06:26:29 +01:00
MilhouseVH
02cca7dc25 bcm_sta: fix kernel 5.1-rc1 2019-06-15 06:26:29 +01:00
MilhouseVH
0127603ce4 RTL8192EU: update to RTL8192EU-0a7199b 2019-06-15 06:26:29 +01:00
MilhouseVH
78cb67eebf RTL8192DU: update to RTL8192DU-72b53f8 2019-06-15 06:26:29 +01:00
MilhouseVH
d7d0f551e2 RTL8192CU: update to RTL8192CU-f32ef39 2019-06-15 06:26:29 +01:00
MilhouseVH
6027f4759b RTL8812AU: update to RTL8812AU-bdfef37 2019-06-15 06:26:29 +01:00
MilhouseVH
076d6c901a linux (Generic): update to 5.1.9 2019-06-15 06:26:29 +01:00
CvH
a48dc02c2e Merge pull request #3488 from MilhouseVH/le92_backports1
backports: group PR for libreelec-9.2 updates
2019-06-14 00:13:47 +02:00
MilhouseVH
2ab4c72852 atvclient: used by macmini hw, should be other support in kernel now 2019-06-13 22:12:21 +01:00
MilhouseVH
b1ace294eb amremote: drop reference to non-existent package 2019-06-13 22:12:21 +01:00
MilhouseVH
1e505759d7 busybox: update to busybox-1.31.0 2019-06-13 22:12:21 +01:00
MilhouseVH
2082afff78 mesa: update to mesa-19.1.0 2019-06-13 22:12:21 +01:00
MilhouseVH
fb0007845a packages: mega bump 2019-06-13 22:12:21 +01:00
MilhouseVH
d7fc0eb6f0 procps-ng: free from busybox doesn't match top 2019-06-13 22:12:21 +01:00
Lukas Rusak
8bfb08e555 procps-ng: build and install libprocps.a 2019-06-13 22:12:21 +01:00
MilhouseVH
abc9d658a2 xf86-video-nvidia: update to xf86-video-nvidia-430.26 2019-06-13 22:12:21 +01:00
MilhouseVH
0e5401939e config/functions: ln -sf is not always thread safe 2019-06-13 22:12:21 +01:00
MilhouseVH
6e69cd582f heimdal: update to heimdal-7.7.0 2019-06-13 22:12:21 +01:00
MilhouseVH
54072e33c8 openssl: update to openssl-1.1.1c 2019-06-13 22:12:21 +01:00
MilhouseVH
08c38cb59a LibreELEC-settings: update to LibreELEC-settings-f59dcc8 2019-06-13 22:12:21 +01:00
Ian Leonard
235fb0c12b rpi: update.sh: drop code commented 5+ years
Signed-off-by: Ian Leonard <antonlacon@gmail.com>
2019-06-13 22:12:21 +01:00
Ian Leonard
8ac3106fb6 rpi: update.sh: drop leading spaces and misplaced comment
Signed-off-by: Ian Leonard <antonlacon@gmail.com>
2019-06-13 22:12:21 +01:00
Ian Leonard
5b5284cd6a rpi: make update.sh and canupdate.sh part of project or device files
Signed-off-by: Ian Leonard <antonlacon@gmail.com>
2019-06-13 22:12:21 +01:00
MilhouseVH
08565fa0e3 xf86-video-nvidia: update to xf86-video-nvidia-430.14 2019-06-13 22:12:21 +01:00
MilhouseVH
0bd4793492 buildsystem: avoid process forks to init dashboard status file
A typical image build will update the dashboard 3500-4500 times. This change
avoids two process forks (cat, wc) per update, and the remaining $(< file) is
faster than $(cat file).
2019-06-13 22:12:21 +01:00
MilhouseVH
04b8036e32 buildsystem: replace $(cat file) with faster alternative
See: https://www.gnu.org/software/bash/manual/html_node/Command-Substitution.html

"
...
Bash performs the expansion by executing command in a subshell environment and replacing
the command substitution with the standard output of the command, with any trailing newlines
deleted. Embedded newlines are not deleted, but they may be removed during word splitting. The
command substitution $(cat file) can be replaced by the equivalent but faster $(< file).
"

Testing indicates var=$(< file) is twice as fast as var=$(cat file).
2019-06-13 22:12:21 +01:00
MilhouseVH
0eb36d786b buildsystem: add pre_configure() function that is not target specific 2019-06-13 22:12:21 +01:00
MilhouseVH
195c206669 distro-tool: handle garbage in error response 2019-06-13 22:12:21 +01:00
MilhouseVH
fbf0c54b71 screensaver.greynetic: needs glm 2019-06-13 22:12:21 +01:00
MilhouseVH
9a24528e3f udpxy: broken since gcc-8.0 2019-06-13 22:12:21 +01:00
MilhouseVH
775df5da16 audiodecoder.usf: don't build for RPi1, broken in #3503 2019-06-13 22:12:21 +01:00
MilhouseVH
7604df2686 fontconfig: needs util-linux for uuid support 2019-06-13 22:12:21 +01:00
MilhouseVH
17ab4518fd firmware-imx: unpack into unique unpack folder not $BUILD 2019-06-13 22:12:21 +01:00
MilhouseVH
bb9f7fa623 media_tree/media_tree_cc: use post_unpack() 2019-06-13 22:12:21 +01:00
MilhouseVH
c3e674ed7d dotnet-runtime: redundant custom unpack() 2019-06-13 22:12:21 +01:00
MilhouseVH
5f777dcbe8 buildsystem: don't allow unpack folder to become visible until tagged 2019-06-13 22:12:21 +01:00
MilhouseVH
6400a8cb7e linux: avoid building host and target concurrently 2019-06-13 22:12:21 +01:00
MilhouseVH
7aabe781cb buildsystem: addons install minor cleanup 2019-06-13 22:12:21 +01:00
Matthias Reichl
5cdbdf0303 linux: drop ati_remote.conf modprobe file
Disabling mouse support in the driver not only makes the mouse
feature of the remote non-functional but also results in a kernel
crash when a pressing a mouse button on the remote.

See https://forum.libreelec.tv/thread/17562-le-9-0-2-freeze-when-ati-remote-is-used/

Signed-off-by: Matthias Reichl <hias@horus.com>
2019-06-13 22:12:21 +01:00
Jernej Skrabec
9d6a971612 uboot_helper: Fix Allwinner boards and add NanoPi M1 2019-06-13 22:12:21 +01:00
Jernej Skrabec
dc1d83925e u-boot: Fail if config is wrongly configured 2019-06-13 22:12:21 +01:00
MilhouseVH
f8ec58745e kernel-firmware: add mediatek mt7662 firmwares 2019-06-13 22:12:21 +01:00
MilhouseVH
85cb44de99 kernel-firmware: add project & device support; use config dir 2019-06-13 22:12:21 +01:00
MilhouseVH
c10e761b0d kernel-firmware: update to kernel-firmware-20190514 2019-06-13 22:12:21 +01:00
MilhouseVH
6c8ab49eec intel-ucode: update to intel-ucode-20190514, switch url, drop unnecessary depends 2019-06-13 22:12:21 +01:00
MilhouseVH
9e9e6befb3 kernel-firmware: update to kernel-firmware-92e17d0 2019-06-13 22:12:21 +01:00
MilhouseVH
f470d833b7 curl: update to curl-7.65.0 2019-06-13 22:12:21 +01:00
MilhouseVH
06f48133bb mesa: update to mesa-19.0.5 2019-06-13 22:12:21 +01:00
kszaq
8ebda35e84 addons: drop references to legacy projects 2019-06-13 22:12:21 +01:00
kszaq
4fb34fc66a u-boot-script: add package to compile env scripts for u-boot
Some targets require to have scripts for u-boot included in system image.
Provide a package to compile them.
2019-06-13 22:12:21 +01:00
Jernej Skrabec
26e3588d79 libdrm: Update package to 2.4.98 2019-06-13 22:12:21 +01:00
kszaq
e50834fd82 scripts/build: strip all executables in /usr
Some packages install outside /usr/*bin, e.g. /usr/lib/bluetooth
and executables remain unstripped. Try to strip everything
executable except .ko and .so which are handled in separate cases.
2019-06-13 22:12:20 +01:00
Jernej Skrabec
0b13c7b6fe Allwinner: Fix HDMI monitor/TV detection and speed up boot 2019-06-13 22:12:20 +01:00
Jernej Skrabec
b96e205f14 u-boot: Allow to add project/device specific configuration 2019-06-13 22:12:20 +01:00
Jernej Skrabec
7ae3eb5b10 Allwinner: linux: Add HDMI 4K init fix 2019-06-13 22:12:20 +01:00
kszaq
9e39ce6f1c u-boot: explicitly enable decompression
u-boot defconfigs don't enable decompression routines
required if we want to use compressed kernel image.
Enable them to be able to compress kernel and run it.
2019-06-13 22:12:20 +01:00
kszaq
1122893a50 linux: restore original KERNEL_TARGET after creating uImage 2019-06-13 22:12:20 +01:00
kszaq
ffdd6878a3 linux: use PKG_UIMAGE_*ADDR for the used address
If a package is sources multiple times, the destination address
may be recalculated and overwritten a few times. Prevent this by
using PKG-prefixed variables for results.

Thanks to MilhouseVH for suggesting this.
2019-06-13 22:12:20 +01:00
kszaq
4ef5e73ae6 linux: abort building arm64 uImage if KERNEL_UIMAGE_LOADADDR or KERNEL_UIMAGE_ENTRYADDR is not set
If either of these values is not set, resulting uImage
will not load properly. Abort if these are not set.
2019-06-13 22:12:20 +01:00
kszaq
69f3db483e linux: amend uimage load address for proper decompression
When kernel image is compressed, it is first loaded
to RAM at load address specified in command line,
then unpacks to loadaddr provided by uImage.

For decompressed image not to overwrite compressed
data, uncompressed image load address needs to be
shifted by compressed image size + 1 MiB alignment.
2019-06-13 22:12:20 +01:00
kszaq
2fb1df6623 ethmactool: new package for getting HW MAC address or generating from CPU SN
Ethernet MAC address should be passed by u-boot in device tree. In
many cases this address is not correct: ethmactool package allows
userspace to take care of it.

Currently these are possible sources of "real" MAC:
 - Amlogic: cmdline, eFuse, CPU SN
 - Rockchip: CPU SN
2019-06-13 22:12:20 +01:00
CvH
6202251a6c oscam: update to 11518 2019-06-13 22:12:20 +01:00
CvH
caaf067615 tvmosaic: fix PKG_ARCH 2019-06-13 22:12:20 +01:00
MilhouseVH
18d9847829 config/functions: endianness in meson cross is always little 2019-06-13 22:12:20 +01:00
MilhouseVH
505ccecbc8 mesa: update to mesa-19.0.4 2019-06-13 22:12:20 +01:00
MilhouseVH
50fc3b5569 heimdal: update to heimdal-7.6.0 2019-06-13 22:12:20 +01:00
MilhouseVH
8f4bdc77cc samba: update to samba-4.9.8 2019-06-13 22:12:20 +01:00
Ian Leonard
902f198d46 systemd: add depend on libidn2
Signed-off-by: Ian Leonard <antonlacon@gmail.com>
2019-06-13 22:12:20 +01:00
Ian Leonard
3d10ea2d16 tvheadend42: use system libidn2
Signed-off-by: Ian Leonard <antonlacon@gmail.com>
2019-06-13 22:12:20 +01:00
Ian Leonard
0f73329ce0 ffmpeg-tools: use system libidn2
Signed-off-by: Ian Leonard <antonlacon@gmail.com>
2019-06-13 22:12:20 +01:00
Ian Leonard
1fd115b699 lftp: add libidn2 as depend
Signed-off-by: Ian Leonard <antonlacon@gmail.com>
2019-06-13 22:12:20 +01:00
Ian Leonard
58fc3e7ea9 libidn2: update to 2.1.1a, disable doc, static libs and idn2 binary
Signed-off-by: Ian Leonard <antonlacon@gmail.com>
2019-06-13 22:12:20 +01:00
Ian Leonard
c0ed05c6f6 libc: add libidn2 as target depend
Signed-off-by: Ian Leonard <antonlacon@gmail.com>
2019-06-13 22:12:20 +01:00
Matthias Reichl
ca952e8937 config/functions: add C++ compiler and linker flags to meson.conf
Due to missing cpp_args and cpp_link_args in meson.conf ninja builds
of projects with C++ code were performed without CPU optimization
flags (-march, -mcpu, -mtune etc). Add these args so C++ code is
built with proper flags.

Signed-off-by: Matthias Reichl <hias@horus.com>
2019-06-13 22:12:20 +01:00
MilhouseVH
08c06b05cf tools/pkginfo: simple tool to dump a package.mk 2019-06-13 22:12:20 +01:00
MilhouseVH
284432cf4f samba: update to samba-4.9.7 2019-06-13 22:12:20 +01:00
MilhouseVH
c502b14ce6 Merge pull request #3556 from HiassofT/le92-kernel-4.19
linux (RPi): switch to 4.19.50
2019-06-13 12:37:05 +01:00
Matthias Reichl
707655ced2 linux (RPi): switch to 4.19.50
Signed-off-by: Matthias Reichl <hias@horus.com>
2019-06-12 23:07:58 +02:00
461 changed files with 10245 additions and 23825 deletions

View File

@@ -14,25 +14,6 @@ image:
noobs:
./scripts/image noobs
amlpkg:
./scripts/image amlpkg
# legacy sequential build targets
system-st:
./scripts/image_st
release-st:
./scripts/image_st release
image-st:
./scripts/image_st mkimage
noobs-st:
./scripts/image_st noobs
amlpkg-st:
./scripts/image_st amlpkg
clean:
rm -rf $(BUILD_DIRS)/* $(BUILD_DIRS)/.stamps

View File

@@ -357,11 +357,9 @@ setup_toolchain() {
create_meson_conf() {
local endian root properties
case "$1" in
target|init) endian="little"
root="$SYSROOT_PREFIX/usr"
target|init) root="$SYSROOT_PREFIX/usr"
;;
host|bootstrap) endian="big"
root="$TOOLCHAIN"
host|bootstrap) root="$TOOLCHAIN"
;;
esac
@@ -380,12 +378,14 @@ llvm-config = '$SYSROOT_PREFIX/usr/bin/llvm-config-host'
system = 'linux'
cpu_family = '$TARGET_ARCH'
cpu = '$TARGET_SUBARCH'
endian = '$endian'
endian = 'little'
[properties]
root = '$root'
$(python -c "import os; print('c_args = {}'.format([x for x in os.getenv('CFLAGS').split()]))")
$(python -c "import os; print('c_link_args = {}'.format([x for x in os.getenv('LDFLAGS').split()]))")
$(python -c "import os; print('cpp_args = {}'.format([x for x in os.getenv('CXXFLAGS').split()]))")
$(python -c "import os; print('cpp_link_args = {}'.format([x for x in os.getenv('LDFLAGS').split()]))")
${!properties}
EOF
}
@@ -989,8 +989,10 @@ kernel_config_path() {
$pkg_linux_dir/config/$config_name \
; do
[[ $cfg =~ /devices//linux/ ]] && continue
[ -f "$cfg" ] && echo "$cfg" && break
[ -f "$cfg" ] && echo "$cfg" && return
done
die "ERROR: Unable to locate kernel config for ${LINUX} - looking for ${config_name}"
}
kernel_make() {
@@ -1155,6 +1157,8 @@ done
}
install_addon_files() {
mkdir -p "$1"
install_addon_source "$1"
install_addon_images "$1"
create_addon_xml "$1"
@@ -1190,7 +1194,7 @@ add_user() {
mkdir -p ${INSTALL}/usr/cache
touch ${INSTALL}/usr/cache/shadow
ln -sf /storage/.cache/shadow ${INSTALL}/etc/shadow
ln -sf /storage/.cache/shadow ${INSTALL}/etc/shadow 2>/dev/null || true
PASSWORD="$2"
if [ "$PASSWORD" = "x" ]; then
@@ -1262,7 +1266,7 @@ pkg_lock() {
# As we now have the lock, if .failed still exists then a previous process must have failed
if [ -f "${THREAD_CONTROL}/locks/${pkg}.${task}.failed" ]; then
fail_seq="$(cat "${THREAD_CONTROL}/locks/${pkg}.${task}.failed")"
fail_seq="$(< "${THREAD_CONTROL}/locks/${pkg}.${task}.failed")"
print_color CLR_ERROR "FAILURE: ${pkg}.${task}.failed exists, a previous dependency process has failed (seq: ${fail_seq})\n"
if [ -d "${THREAD_CONTROL}/logs" ]; then
cat <<EOF
@@ -1320,15 +1324,18 @@ update_dashboard() {
sedline=$((MTJOBID + 2))
num=$(cat "${THREAD_CONTROL}/status" | wc -l)
while [ ${num} -lt ${sedline} ]; do echo "" >>"${THREAD_CONTROL}/status"; num=$((num + 1)); done
num=$(< "${THREAD_CONTROL}/status.max")
if [ ${num} -lt ${sedline} ]; then
echo ${sedline} >"${THREAD_CONTROL}/status.max"
for i in $(seq $((num + 1)) ${sedline}); do echo "" >>"${THREAD_CONTROL}/status"; done
fi
num=$(($(cat "${THREAD_CONTROL}/progress.prev") + 1))
num=$(< "${THREAD_CONTROL}/progress.prev")
projdevarch="${PROJECT}/"
[ -n "${DEVICE}" ] && projdevarch+="${DEVICE}/"
projdevarch+="${TARGET_ARCH}"
TZ=UTC0 printf -v elapsed "%(%H:%M:%S)T" $(($(date +%s) - MTBUILDSTART))
printf -v preamble "%s Dashboard (%s) - %d of %d jobs completed, %s elapsed" "${DISTRONAME}" "${projdevarch}" ${num} ${MTMAXJOBS} "${elapsed}"
printf -v preamble "%s Dashboard (%s) - %d of %d jobs completed, %s elapsed" "${DISTRONAME}" "${projdevarch}" $((num + 1)) ${MTMAXJOBS} "${elapsed}"
printf -v preamble "%b%-105s %s" "\e[2J\e[0;0H" "${preamble//\//\\/}" "$(date "+%Y-%m-%d %H:%M:%S")"
if [ "${DISABLE_COLORS}" != "yes" ]; then

View File

@@ -107,8 +107,9 @@ package_worker() {
(
flock --exclusive 95
[ ${result} -eq 0 ] && status="DONE" || status="FAIL"
num=$(($(cat "${THREAD_CONTROL}/progress") + 1))
num=$(< "${THREAD_CONTROL}/progress")
mv "${THREAD_CONTROL}/progress" "${THREAD_CONTROL}/progress.prev"
num=$((num + 1))
echo ${num} >"${THREAD_CONTROL}/progress"
printf "[%0*d/%0*d] [%-4s] %-7s %s\n" ${#jobs} ${num} ${#jobs} ${jobs} "${status}" "${task}" "${pkgname}" >&2
) 95>"${THREAD_CONTROL}/locks/.progress"
@@ -143,6 +144,7 @@ start_multithread_build() {
mkdir -p "${THREAD_CONTROL}/locks"
echo -1 >"${THREAD_CONTROL}/progress.prev"
echo 0 >"${THREAD_CONTROL}/progress"
echo 0 >"${THREAD_CONTROL}/status.max"
touch "${THREAD_CONTROL}/status"
[ "${THREADCOUNT}" = "0" ] && THREADCOUNT=1

View File

@@ -53,7 +53,6 @@ show_config() {
config_message="$config_message\n $dashes$dashes"
config_message="$config_message\n - Remote support:\t\t\t $REMOTE_SUPPORT"
config_message="$config_message\n - ATV Remote support:\t\t\t $ATVCLIENT_SUPPORT"
config_message="$config_message\n - CEC Adapter support:\t\t\t $CEC_SUPPORT"
config_message="$config_message\n - CEC Framework support:\t\t $CEC_FRAMEWORK_SUPPORT"
config_message="$config_message\n - Kodi Joystick support:\t\t $JOYSTICK_SUPPORT"
@@ -105,10 +104,6 @@ show_config() {
config_message="$config_message\n - OEM Support:\t\t\t\t $OEM_SUPPORT"
config_message="$config_message\n - Default ROOT Password:\t\t $ROOT_PASSWORD"
config_message="$config_message\n - Bootloader:\t\t\t\t $BOOTLOADER"
if [ "$BOOTLOADER" = "u-boot" ]; then
config_message="$config_message\n - U-Boot configuration:\t\t $UBOOT_CONFIG"
config_message="$config_message\n - U-Boot config file:\t\t $UBOOT_CONFIGFILE"
fi
config_message="$config_message\n - UDevil support:\t\t\t $UDEVIL"
config_message="$config_message\n - Installer support:\t\t\t $INSTALLER_SUPPORT"
for config_package in $ADDITIONAL_PACKAGES; do

View File

@@ -140,9 +140,6 @@
# build and install remote support (yes / no)
REMOTE_SUPPORT="yes"
# build and install ATV IR remote support (yes / no)
ATVCLIENT_SUPPORT="yes"
# build and install Joystick support (yes / no)
JOYSTICK_SUPPORT="yes"

View File

@@ -5,4 +5,4 @@
OS_VERSION="9.1"
# ADDON_VERSION: Addon version
ADDON_VERSION="9.1"
ADDON_VERSION="9.1.900"

View File

@@ -10,14 +10,6 @@ PKG_URL="https://github.com/mighty-p/t2scan/archive/$PKG_VERSION.tar.gz"
PKG_DEPENDS_TARGET="toolchain"
PKG_LONGDESC="A small channel scan tool which generates DVB-T/T2 channels.conf files."
# aml 3.14 hack
pre_configure_target() {
if [ "$LINUX" = "amlogic-3.14" -o "$LINUX" = "amlogic-3.10" ]; then
sed -i 's/DVB_HEADER=0/DVB_HEADER=1/g' $PKG_BUILD/configure*
sed -i 's/HAS_DVB_API5=0/HAS_DVB_API5=1/g' $PKG_BUILD/configure*
fi
}
makeinstall_target() {
:
}

View File

@@ -11,14 +11,6 @@ PKG_DEPENDS_TARGET="toolchain"
PKG_LONGDESC="A channel scan tool which generates ATSC, DVB-C, DVB-S/S2 and DVB-T channels.conf files."
PKG_TOOLCHAIN="autotools"
# aml 3.14 hack
pre_configure_target() {
if [ "$LINUX" = "amlogic-3.14" -o "$LINUX" = "amlogic-3.10" ]; then
sed -i 's/DVB_HEADER=0/DVB_HEADER=1/g' $PKG_BUILD/configure*
sed -i 's/HAS_DVB_API5=0/HAS_DVB_API5=1/g' $PKG_BUILD/configure*
fi
}
makeinstall_target() {
:
}

View File

@@ -7,7 +7,7 @@ PKG_SHA256="4ebc271e9e5cea84a683375a0f7e91086e5dac90c5d51bb3f169f75386107a62"
PKG_LICENSE="GPLv3"
PKG_SITE="http://lftp.yar.ru/"
PKG_URL="http://lftp.yar.ru/ftp/${PKG_NAME}-${PKG_VERSION}.tar.xz"
PKG_DEPENDS_TARGET="toolchain readline openssl zlib"
PKG_DEPENDS_TARGET="toolchain readline openssl zlib libidn2"
PKG_LONGDESC="A sophisticated ftp/http client, and a file transfer program supporting a number of network protocols."
PKG_CONFIGURE_OPTS_TARGET="--disable-nls \

View File

@@ -10,6 +10,10 @@ PKG_URL="http://www.udpxy.com/download/1_23/${PKG_NAME}.${PKG_VERSION}-prod.tar.
PKG_DEPENDS_TARGET="toolchain"
PKG_LONGDESC="A UDP-to-HTTP multicast traffic relay daemon."
configure_target() {
export CFLAGS+=" -Wno-stringop-truncation"
}
makeinstall_target() {
:
}

View File

@@ -5,7 +5,6 @@ PKG_NAME="repository.linuxserver.docker"
PKG_VERSION="9.0"
PKG_REV="102"
PKG_ARCH="any"
PKG_ADDON_PROJECTS="any !WeTek_Core !WeTek_Play"
PKG_LICENSE="GPL"
PKG_SITE="https://linuxserver.io"
PKG_URL=""

View File

@@ -48,7 +48,6 @@ addon() {
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/bin
cp -P $PKG_BUILD/.$TARGET_NAME/src/boblightd $ADDON_BUILD/$PKG_ADDON_ID/bin
cp -P $PKG_BUILD/.$TARGET_NAME/src/boblight-constant $ADDON_BUILD/$PKG_ADDON_ID/bin
cp -P $PKG_BUILD/.$TARGET_NAME/src/boblight-aml $ADDON_BUILD/$PKG_ADDON_ID/bin
if [ "$DISPLAYSERVER" = "x11" ] ; then
cp -P $PKG_BUILD/.$TARGET_NAME/src/boblight-X11 $ADDON_BUILD/$PKG_ADDON_ID/bin
fi

View File

@@ -1,632 +0,0 @@
diff --git a/src/Makefile.am b/src/Makefile.am
index 9ba5381..c5a4dc6 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -7,6 +7,7 @@ AM_CFLAGS =\
-g
bin_PROGRAMS = boblightd \
+ boblight-aml \
boblight-constant
@@ -19,6 +20,11 @@ endif
endif
+boblight_aml_SOURCES = clients/boblight-aml/boblight-aml.cpp
+boblight_aml_SOURCES += clients/boblight-aml/flagmanager-aml.cpp
+boblight_aml_SOURCES += clients/flagmanager.cpp
+boblight_aml_SOURCES += util/misc.cpp
+
boblight_v4l_SOURCES = \
clients/boblight-v4l/boblight-v4l.cpp \
clients/boblight-v4l/flagmanager-v4l.cpp \
diff -urPp src/clients/boblight-aml.cpp src/clients/boblight-aml/boblight-aml.cpp
--- /dev/null Thu Jan 1 00:00:00 1970
+++ b/src/clients/boblight-aml/boblight-aml.cpp Thu Jan 15 10:24:16 2015
@@ -0,0 +1,491 @@
+/*
+ * boblight
+ * Copyright (C) Bob 2009
+ *
+ * boblight 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 3 of the License, or
+ * (at your option) any later version.
+ *
+ * boblight 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 this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#define BOBLIGHT_DLOPEN
+#include "lib/boblight.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <signal.h>
+#include <algorithm>
+
+#include <fcntl.h>
+#include <errno.h>
+#include <sys/stat.h>
+#include <sys/poll.h>
+#include <sys/types.h>
+#include <sys/time.h>
+#include <sys/ioctl.h>
+
+#include "config.h"
+#include "util/misc.h"
+#include "util/timeutils.h"
+#include "flagmanager-aml.h"
+
+using namespace std;
+
+//from linux/amlogic/amports/amvideocap.h
+#define AMVIDEOCAP_IOC_MAGIC 'V'
+#define AMVIDEOCAP_IOW_SET_WANTFRAME_WIDTH _IOW(AMVIDEOCAP_IOC_MAGIC, 0x02, int)
+#define AMVIDEOCAP_IOW_SET_WANTFRAME_HEIGHT _IOW(AMVIDEOCAP_IOC_MAGIC, 0x03, int)
+
+
+// helper class - tries to load the "movie" settings from the script.xbmc.boblight addon
+// and pass them to the boblight-aml client
+class CBoblightAddonSettings
+{
+ public:
+ CBoblightAddonSettings() : m_bobdisable(false), m_settingsLoaded(false)
+ {
+ m_settingsLoaded = loadBoblightAddonSettings();
+ }
+
+ std::string getBoblightClientCmdLine()
+ {
+ std::string cmdLine = "";
+ //convert bool string to lowercase
+ transform(m_interpolation.begin(), m_interpolation.end(), m_interpolation.begin(), ::tolower);
+
+ cmdLine += "-s " + m_ip + ":" + m_port;
+ cmdLine += " -o autospeed=" + m_autospeed;
+ cmdLine += " -o interpolation=" + m_interpolation;
+ cmdLine += " -o saturation=" + m_saturation;
+ cmdLine += " -o speed=" + m_speed;
+ cmdLine += " -o threshold=" + m_threshold;
+ cmdLine += " -o value=" + m_value;
+ return cmdLine;
+ }
+
+ bool m_bobdisable;
+ bool m_settingsLoaded;
+ std::string m_ip;
+ std::string m_port;
+ std::string m_autospeed;
+ std::string m_interpolation;
+ std::string m_saturation;
+ std::string m_speed;
+ std::string m_threshold;
+ std::string m_value;
+
+ private:
+ #define SETTINGS_ATTR_BOBDISABLE "bobdisable"
+ #define SETTINGS_ATTR_IP "hostip"
+ #define SETTINGS_ATTR_PORT "hostport"
+ #define SETTINGS_ATTR_AUTOSPEED "movie_autospeed"
+ #define SETTINGS_ATTR_INTERPOLATION "movie_interpolation"
+ #define SETTINGS_ATTR_SATURATION "movie_saturation"
+ #define SETTINGS_ATTR_SPEED "movie_speed"
+ #define SETTINGS_ATTR_THRESHOLD "movie_threshold"
+ #define SETTINGS_ATTR_VALUE "movie_value"
+ #define KODI_HOME_ENV_VAR "HOME"
+
+ bool loadBoblightAddonSettings()
+ {
+ bool ret = false;
+ char *kodiHome = getenv(KODI_HOME_ENV_VAR);
+ //fallback to custom settings file in case boblight addon is not installed
+ std::string settingsFile = "/storage/boblight-aml.xml";
+
+ if (kodiHome != NULL)
+ {
+ settingsFile = std::string(kodiHome) + "/.kodi/userdata/addon_data/script.xbmc.boblight/settings.xml";
+ }
+
+ FILE *fd = fopen(settingsFile.c_str(), "r");
+
+ if (fd != NULL)
+ {
+ fseek(fd, 0, SEEK_END);
+ size_t fileSize = ftell(fd);
+ fseek(fd, 0, SEEK_SET);
+ if (fileSize > 0)
+ {
+ if (fileSize > 32000)//read 16k max - there shouldn't be a bigger settings.xml from boblight [tm]
+ fileSize = 32000;
+ char *xmlBuffer = new char[fileSize];
+ size_t readCount = fread(xmlBuffer, fileSize, 1, fd);
+ fclose(fd);
+
+ if (readCount == 1)
+ {
+ parseBoblightSettings(std::string(xmlBuffer));
+ ret = true;
+ }
+ else
+ {
+ fprintf(stderr, "Failed reading boblight addon settings.xml");
+ }
+ delete[] xmlBuffer;
+ }
+ }
+ return ret;
+ }
+
+ void parseBoblightSettings(std::string xmlBuffer)
+ {
+ std::string settings_bobdisable_str;
+ settings_bobdisable_str = getValueFromXmlBuffer(xmlBuffer, SETTINGS_ATTR_BOBDISABLE);
+ if (settings_bobdisable_str == "true" || settings_bobdisable_str == "True")
+ m_bobdisable = true;
+
+ m_ip = getValueFromXmlBuffer(xmlBuffer, SETTINGS_ATTR_IP);
+ m_port = getValueFromXmlBuffer(xmlBuffer, SETTINGS_ATTR_PORT);
+ m_autospeed = getValueFromXmlBuffer(xmlBuffer, SETTINGS_ATTR_AUTOSPEED);
+ m_interpolation = getValueFromXmlBuffer(xmlBuffer, SETTINGS_ATTR_INTERPOLATION);
+ m_saturation = getValueFromXmlBuffer(xmlBuffer, SETTINGS_ATTR_SATURATION);
+ m_speed = getValueFromXmlBuffer(xmlBuffer, SETTINGS_ATTR_SPEED);
+ m_threshold = getValueFromXmlBuffer(xmlBuffer, SETTINGS_ATTR_THRESHOLD);
+ m_value = getValueFromXmlBuffer(xmlBuffer, SETTINGS_ATTR_VALUE);
+ }
+
+ std::string getValueFromXmlBuffer(const std::string &xmlBuffer, const char* xmlAttribute)
+ {
+ size_t strPos = 0;
+ std::string valueStr;
+
+ // each line in the xml looks like this:
+ // <setting id="movie_value" value="1.000006" />
+ // find the attribute
+ if ((strPos = xmlBuffer.find(xmlAttribute)) != std::string::npos)
+ {
+ size_t strPos2 = 0;
+ // from movie_value" value="1.000006" /> look for "value"
+ if ((strPos2 = xmlBuffer.find("value", strPos)) != std::string::npos)
+ {
+ size_t strPos3 = 0;
+ // from value="1.000006" /> look for "="
+ if ((strPos3 = xmlBuffer.find("=", strPos2)) != std::string::npos)
+ {
+ //extract the value - strPos3 points to ="1.000006"
+ int valueOffset = 1; //skip the "="
+ if (xmlBuffer[strPos3 + valueOffset] == '"')
+ valueOffset++;//skip " if needed
+ int strLen = 0;
+ do
+ {
+ // value stops with " or space
+ if (xmlBuffer[strPos3 + valueOffset + strLen] == '"' ||
+ xmlBuffer[strPos3 + valueOffset + strLen] == ' ')
+ break;
+ strLen++;
+ } while (strLen < 20);// no insane xml garbage ...
+
+ valueStr = xmlBuffer.substr(strPos3 + valueOffset, strLen);
+ }
+ }
+ }
+ return valueStr;
+ }
+};
+
+struct aml_snapshot_t {
+ unsigned int dst_width;
+ unsigned int dst_height;
+ unsigned int dst_stride;
+ unsigned int dst_size;
+ void *dst_vaddr;
+};
+
+volatile bool g_stop = false;
+CFlagManagerAML g_flagmanager;
+/*********************************************************
+ *********************************************************/
+static void SignalHandler(int signum)
+{
+ if (signum == SIGTERM)
+ {
+ fprintf(stderr, "caught SIGTERM\n");
+ g_stop = true;
+ }
+ else if (signum == SIGINT)
+ {
+ fprintf(stderr, "caught SIGTERM\n");
+ g_stop = true;
+ }
+}
+
+#define VIDEO_PATH "/dev/amvideo"
+#define AMSTREAM_IOC_MAGIC 'S'
+#define AMSTREAM_IOC_GET_VIDEO_DISABLE _IOR(AMSTREAM_IOC_MAGIC, 0x48, unsigned long)
+static int amvideo_utils_video_playing()
+{
+ int video_fd;
+ int video_disable;
+
+ video_fd = open(VIDEO_PATH, O_RDWR);
+ if (video_fd < 0) {
+ return -1;
+ }
+
+ ioctl(video_fd, AMSTREAM_IOC_GET_VIDEO_DISABLE, &video_disable);
+ if (video_disable)
+ {
+ close(video_fd);
+ return 1;
+ }
+
+ close(video_fd);
+
+// fprintf(stderr, "pos x %d y %d w %d h %d\n",snapshot.src_x, snapshot.src_y,snapshot.src_width,snapshot.src_height);
+ return 0;
+}
+
+static int capture_frame(int fd, aml_snapshot_t &snapshot)
+{
+ int ret = 0;
+
+ ssize_t readResult = pread(fd, snapshot.dst_vaddr, snapshot.dst_size, 0);
+
+ if (readResult < snapshot.dst_size)
+ {
+ fprintf(stderr, "frame read returned %d\n", readResult);
+ }
+ //fprintf(stderr, "requ: %d read %d \n", snapshot.dst_size, readResult);
+ fprintf(stderr, ".");
+ return ret;
+}
+
+static int configure_capture(int fd, aml_snapshot_t &snapshot)
+{
+ int ret = 0;
+ int ioctlret = 0;
+
+ if ((ioctlret = ioctl(fd, AMVIDEOCAP_IOW_SET_WANTFRAME_WIDTH, snapshot.dst_width)) != 0)
+ {
+ ret = 2;
+ fprintf(stderr, "Error setting frame width (ret: %d errno: %d)\n", ioctlret, errno);
+ }
+
+
+ if ((ioctlret = ioctl(fd, AMVIDEOCAP_IOW_SET_WANTFRAME_HEIGHT, snapshot.dst_height)) != 0)
+ {
+ ret = 3;
+ fprintf(stderr, "Error setting frame height (ret: %d errno: %d)\n", ioctlret, errno);
+ }
+
+ return ret;
+}
+
+static void frameToboblight(void *boblight, uint8_t* outputptr, int w, int h, int stride)
+{
+ if (!boblight)
+ {
+ fprintf(stderr, "no boblight\n");
+ return;
+ }
+ if (!outputptr)
+ {
+ fprintf(stderr, "no outputptr\n");
+ return;
+ }
+ //read out pixels and hand them to libboblight
+ uint8_t* buffptr;
+ for (int y = h; y > 0; y--) {
+ buffptr = outputptr + stride * y;
+ for (int x = 0; x < w; x++) {
+ int rgb[3];
+ rgb[2] = *(buffptr++);
+ rgb[1] = *(buffptr++);
+ rgb[0] = *(buffptr++);
+
+ //fprintf(stdout, "frameToboblight: x(%d), y(%d)\n", x, y);
+
+ boblight_addpixelxy(boblight, x, y, rgb);
+ }
+ }
+}
+
+static int Run(void* boblight)
+{
+ int snapshot_fd = -1;
+ aml_snapshot_t aml_snapshot = {0};
+ int lastPriority = 255;
+
+ aml_snapshot.dst_width = 160;
+ aml_snapshot.dst_height = 160;
+
+ // calc stride, size and alloc mem
+ aml_snapshot.dst_stride = aml_snapshot.dst_width * 3;
+ aml_snapshot.dst_size = aml_snapshot.dst_stride * aml_snapshot.dst_height;
+ aml_snapshot.dst_vaddr = calloc(aml_snapshot.dst_size, 1);
+
+ fprintf(stdout, "Connection to boblightd config: width(%d), height(%d)\n",
+ aml_snapshot.dst_width, aml_snapshot.dst_height);
+ //tell libboblight how big our image is
+ boblight_setscanrange(boblight, (int)aml_snapshot.dst_width, (int)aml_snapshot.dst_height);
+
+ while(!g_stop)
+ {
+ int64_t bgn = GetTimeUs();
+
+ if (snapshot_fd == -1) {
+ snapshot_fd = open(g_flagmanager.m_device.c_str(), O_RDWR, 0);
+
+ if (snapshot_fd == -1) {
+ sleep(1);
+ continue;
+ } else {
+ fprintf(stdout, "snapshot_fd(%d) \n", snapshot_fd);
+ }
+ }
+
+ // match source ratio if possible
+ if (amvideo_utils_video_playing() != 0) {
+ if ( lastPriority != 255)
+ {
+ boblight_setpriority(boblight, 255);
+ lastPriority = 255;
+ }
+ sleep(1);
+ continue;
+ }
+
+ if (configure_capture(snapshot_fd, aml_snapshot) == 0)
+ {
+ if (capture_frame(snapshot_fd, aml_snapshot) == 0)
+ {
+ // image to boblight convert.
+ frameToboblight(boblight, (uint8_t*)aml_snapshot.dst_vaddr,
+ aml_snapshot.dst_width, aml_snapshot.dst_height, aml_snapshot.dst_stride);
+
+ if (lastPriority != g_flagmanager.m_priority)
+ {
+ boblight_setpriority(boblight, g_flagmanager.m_priority);
+ lastPriority = g_flagmanager.m_priority;
+ }
+ if (!boblight_sendrgb(boblight, 1, NULL))
+ {
+ // some error happened, probably connection broken, so bitch and try again
+ PrintError(boblight_geterror(boblight));
+ boblight_destroy(boblight);
+ continue;
+ }
+ }
+ else
+ {
+ fprintf(stdout, "nap time\n");
+ sleep(1);
+ }
+ }
+ int64_t end = GetTimeUs();
+ float calc_time_ms = (float)(end - bgn) / 1000.0;
+ // throttle to 100ms max cycle rate
+ calc_time_ms -= 100.0;
+ if ((int)calc_time_ms < 0)
+ usleep((int)(-calc_time_ms * 1000));
+ }
+
+ // last image is black
+ boblight_setpriority(boblight, 255);
+ boblight_destroy(boblight);
+ close(snapshot_fd);
+ return 0;
+}
+
+/*********************************************************
+ *********************************************************/
+int main(int argc, char *argv[])
+{
+ //load the boblight lib, if it fails we get a char* from dlerror()
+ const char* boblight_error = boblight_loadlibrary(NULL);
+ if (boblight_error)
+ {
+ PrintError(boblight_error);
+ return 1;
+ }
+
+ //try to parse the flags and bitch to stderr if there's an error
+ try {
+ g_flagmanager.ParseFlags(argc, argv);
+ }
+ catch (string error) {
+ PrintError(error);
+ g_flagmanager.PrintHelpMessage();
+ return 1;
+ }
+
+ if (g_flagmanager.m_printhelp) {
+ g_flagmanager.PrintHelpMessage();
+ return 1;
+ }
+
+ if (g_flagmanager.m_printboblightoptions) {
+ g_flagmanager.PrintBoblightOptions();
+ return 1;
+ }
+
+ // check if we only should generate a cmdline based
+ // on settings from possible found boblight addon
+ if (g_flagmanager.generateCmdLine)
+ {
+ CBoblightAddonSettings settings;
+ string cmdLine = "-p 100"; //default cmdline just contains priority 100
+
+ if (settings.m_settingsLoaded)
+ cmdLine += " " + settings.getBoblightClientCmdLine();
+ fprintf(stdout, "%s", cmdLine.c_str());
+ return 0;//exit
+ }
+
+ fprintf(stderr, "Using device: %s \n", g_flagmanager.m_device.c_str());
+
+ //set up signal handlers
+ signal(SIGINT, SignalHandler);
+ signal(SIGTERM, SignalHandler);
+
+ //keep running until we want to quit
+ while(!g_stop) {
+ //init boblight
+ void* boblight = boblight_init();
+
+ fprintf(stdout, "Connecting to boblightd(%p)\n", boblight);
+
+ //try to connect, if we can't then bitch to stderr and destroy boblight
+ if (!boblight_connect(boblight, g_flagmanager.m_address, g_flagmanager.m_port, 5000000) ||
+ !boblight_setpriority(boblight, 255)) {
+ PrintError(boblight_geterror(boblight));
+ fprintf(stdout, "Waiting 10 seconds before trying again\n");
+ boblight_destroy(boblight);
+ sleep(2);
+ continue;
+ }
+
+ fprintf(stdout, "Connection to boblightd opened\n");
+
+ //try to parse the boblight flags and bitch to stderr if we can't
+ try {
+ g_flagmanager.ParseBoblightOptions(boblight);
+ }
+ catch (string error) {
+ PrintError(error);
+ return 1;
+ }
+
+ try {
+ Run(boblight);
+ }
+ catch (string error) {
+ PrintError(error);
+ boblight_destroy(boblight);
+ return 1;
+ }
+ }
+ fprintf(stdout, "Exiting\n");
+}
diff -urPp src/clients/flagmanager-aml.cpp src/clients/boblight-aml/flagmanager-aml.cpp
--- /dev/null Thu Jan 1 00:00:00 1970
+++ b/src/clients/boblight-aml/flagmanager-aml.cpp Thu Jan 15 10:21:40 2015
@@ -0,0 +1,68 @@
+/*
+ * boblight
+ * Copyright (C) Bob 2009
+ *
+ * boblight 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 3 of the License, or
+ * (at your option) any later version.
+ *
+ * boblight 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 this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <iostream>
+
+#include "flagmanager-aml.h"
+#include "util/misc.h"
+#include "config.h"
+
+#define DEFAULT_CAPTURE_DEVICE "/dev/amvideocap0"
+
+using namespace std;
+
+CFlagManagerAML::CFlagManagerAML()
+{
+ // extend the flags -d -> device
+ // -g -> only generate cmdline from possible found boblight addon settings.xml
+ m_flags += "d:g";
+ m_device = DEFAULT_CAPTURE_DEVICE;
+ generateCmdLine = false;
+}
+
+void CFlagManagerAML::ParseFlagsExtended(int& argc, char**& argv, int& c, char*& optarg)
+{
+ if (c == 'd') //devicename
+ {
+ if (optarg) //optional device
+ {
+ m_device = optarg;
+ }
+ }
+
+ if (c == 'g') //generate cmdline
+ {
+ generateCmdLine = true;
+ }
+}
+
+void CFlagManagerAML::PrintHelpMessage()
+{
+ cout << "Usage: boblight-aml\n";
+ cout << "\n";
+ cout << " options:\n";
+ cout << "\n";
+ cout << " -p priority, from 0 to 255, default is 128\n";
+ cout << " -s address[:port], set the address and optional port to connect to\n";
+ cout << " -o add libboblight option, syntax: [light:]option=value\n";
+ cout << " -l list libboblight options\n";
+ cout << " -f fork\n";
+ cout << " -d <device> (defaults to " << m_device << ")\n";
+ cout << " -g try to find the settings.xml file from boblight addon and return the cmdline to use its options\n";
+ cout << "\n";
+}
diff -urPp src/clients/flagmanager-aml.h src/clients/boblight-aml/flagmanager-aml.h
--- /dev/null Thu Jan 1 00:00:00 1970
+++ b/src/clients/boblight-aml/flagmanager-aml.h Thu Jan 15 10:20:15 2015
@@ -0,0 +1,36 @@
+/*
+ * boblight
+ * Copyright (C) Bob 2009
+ *
+ * boblight 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 3 of the License, or
+ * (at your option) any later version.
+ *
+ * boblight 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 this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef FLAGMANAGERAML
+#define FLAGMANAGERAML
+
+#include "clients/flagmanager.h"
+
+class CFlagManagerAML : public CFlagManager
+{
+ public:
+ CFlagManagerAML();
+ void ParseFlagsExtended(int& argc, char**& argv, int& c, char*& optarg);
+
+ void PrintHelpMessage();
+ std::string m_device; //device to open for amvideocap
+ bool generateCmdLine;
+
+};
+
+#endif //FLAGMANAGERAML
\ No newline at end of file

View File

@@ -18,10 +18,4 @@ if [ -x $ADDON_DIR/bin/boblight-X11 -a -e $ADDON_HOME/boblight.X11 ] ; then
boblight-X11 -f >/dev/null 2>&1
fi
if [ -x $ADDON_DIR/bin/boblight-aml -a -e /dev/amvideocap0 ] ; then
#generates cmdline from boblight addon settings
CMDLINE=`boblight-aml -g`
boblight-aml $CMDLINE >/dev/null 2>&1 &
fi
exec boblightd -c $ADDON_HOME/boblight.conf > $ADDON_LOG_FILE 2>&1

View File

@@ -7,7 +7,6 @@ PKG_VERSION="18.09.5"
PKG_SHA256="57f2a5d3374d86a8eb680c91df4351f5cb648351b9b32520c6fd2d66e7e97fd5"
PKG_REV="125"
PKG_ARCH="any"
PKG_ADDON_PROJECTS="any !WeTek_Core !WeTek_Play"
PKG_LICENSE="ASL"
PKG_SITE="http://www.docker.com/"
PKG_URL="https://github.com/docker/docker-ce/archive/v${PKG_VERSION}.tar.gz"

View File

@@ -1,13 +0,0 @@
110
- Rewrite add-on from scratch
- Add support for APPS, SETUP, CVBS (X92) and POWER (A1 Max) indicators.
- Add a configuration dialog:
* Adjust display brightness.
* Storage access indication.
* Advanced hardware configuration of the display.
- Fix crash if aml_fd628 module is not loaded (led_on, led_off files don't exist)
- Fix disable add-on from Kodi UI.
- Turn off indicators when add-on is disabled.
100
- Initial add-on

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

View File

@@ -1,30 +0,0 @@
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="fd628"
PKG_VERSION="1.1"
PKG_REV="100"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="https://libreelec.tv"
PKG_URL=""
PKG_DEPENDS_TARGET="toolchain"
PKG_SECTION="service"
PKG_SHORTDESC="fd628: Kodi service to light up additional icons on devices with FD628 display"
PKG_LONGDESC="fd628: Kodi service to light up additional icons on devices with FD628 display"
PKG_TOOLCHAIN="manual"
PKG_IS_ADDON="yes"
PKG_ADDON_NAME="service.fd628"
PKG_ADDON_PROJECTS="S905 S912"
PKG_ADDON_TYPE="xbmc.service"
make_target() {
sed -e "s|@PKG_VERSION@|$PKG_VERSION|g" \
-i addon.xml
}
addon() {
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID
cp -R $PKG_BUILD/* $ADDON_BUILD/$PKG_ADDON_ID
}

View File

@@ -1,22 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="service.fd628"
name="FD628 Display"
version="@PKG_VERSION@"
provider-name="Team LibreELEC">
<requires>
<import addon="xbmc.python" version="2.1.0"/>
</requires>
<extension point="xbmc.service"
library="resources/lib/service.py"
start="startup">
</extension>
<extension point="xbmc.addon.metadata">
<summary>Service for controlling FD628 VFD display icons</summary>
<description>Service for controlling FD628 VFD display icons, e.g. Ethernet/WiFi connection status and Time</description>
<platform>all</platform>
<assets>
<icon>resources/icon.png</icon>
</assets>
</extension>
</addon>

View File

@@ -1,136 +0,0 @@
# Kodi Media Center language file
# Addon Name: FD628 Display
# Addon id: service.fd628
# Addon Provider: Team LibreELEC
msgid ""
msgstr ""
"Project-Id-Version: XBMC-Addons\n"
"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
"POT-Creation-Date: 2018-02-12 17:48+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: en_GB\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
# Kodi Settings
msgctxt "#30000"
msgid "General"
msgstr ""
msgctxt "#30001"
msgid "Turn on display"
msgstr ""
msgctxt "#30002"
msgid "Display brightness"
msgstr ""
msgctxt "#30003"
msgid "Advanced settings"
msgstr ""
msgctxt "#30004"
msgid "Display type"
msgstr ""
msgctxt "#30026"
msgid "Common anode display (transposed ram)"
msgstr ""
msgctxt "#30013"
msgid "Enable storage access (RW) indicator"
msgstr ""
msgctxt "#30014"
msgid "Select which icon is to be used as the access indicator"
msgstr ""
msgctxt "#30028"
msgid "Clock colon (:) always on"
msgstr ""
msgctxt "#30015"
msgid "play"
msgstr ""
msgctxt "#30016"
msgid "pause"
msgstr ""
msgctxt "#30017"
msgid "hdmi"
msgstr ""
msgctxt "#30018"
msgid "cvbs"
msgstr ""
msgctxt "#30019"
msgid "eth"
msgstr ""
msgctxt "#30020"
msgid "wifi"
msgstr ""
msgctxt "#30021"
msgid "setup"
msgstr ""
msgctxt "#30022"
msgid "apps"
msgstr ""
msgctxt "#30023"
msgid "usb"
msgstr ""
msgctxt "#30024"
msgid "sd"
msgstr ""
msgctxt "#30025"
msgid "alarm"
msgstr ""
msgctxt "#30027"
msgid "power"
msgstr ""
msgctxt "#30012"
msgid "Reorder character indexes"
msgstr ""
msgctxt "#30005"
msgid "Index 0"
msgstr ""
msgctxt "#30006"
msgid "Index 1"
msgstr ""
msgctxt "#30007"
msgid "Index 2"
msgstr ""
msgctxt "#30008"
msgid "Index 3"
msgstr ""
msgctxt "#30009"
msgid "Index 4"
msgstr ""
msgctxt "#30010"
msgid "Index 5"
msgstr ""
msgctxt "#30011"
msgid "Index 6"
msgstr ""
# Max index 30028

View File

@@ -1,78 +0,0 @@
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
import os
import struct
from fd628utils import *
_led_cmd = '/sys/class/leds/le-vfd/led_cmd'
class fd628Dev:
def __init__(self):
import ioctl
import ctypes
size = ctypes.sizeof(ctypes.c_int(0))
self._FD628_IOC_MAGIC = ord('M')
self._FD628_IOC_SMODE = ioctl.IOW(self._FD628_IOC_MAGIC, 1, size)
self._FD628_IOC_GMODE = ioctl.IOR(self._FD628_IOC_MAGIC, 2, size)
self._FD628_IOC_SBRIGHT = ioctl.IOW(self._FD628_IOC_MAGIC, 3, size)
self._FD628_IOC_GBRIGHT = ioctl.IOR(self._FD628_IOC_MAGIC, 4, size)
self._FD628_IOC_POWER = ioctl.IOW(self._FD628_IOC_MAGIC, 5, size)
self._FD628_IOC_GVER = ioctl.IOR(self._FD628_IOC_MAGIC, 6, size)
self._FD628_IOC_STATUS_LED = ioctl.IOW(self._FD628_IOC_MAGIC, 7, size)
self._FD628_IOC_GDISPLAY_TYPE = ioctl.IOR(self._FD628_IOC_MAGIC, 8, size)
self._FD628_IOC_SDISPLAY_TYPE = ioctl.IOW(self._FD628_IOC_MAGIC, 9, size)
self._FD628_IOC_SCHARS_ORDER = ioctl.IOW(self._FD628_IOC_MAGIC, 10, 7)
self._FD628_IOC_USE_DTB_CONFIG = ioctl.IOW(self._FD628_IOC_MAGIC, 11, size)
self._FD628_IOC_MAXNR = 12
def enableDisplay(self, value):
self.__writeFD628(self._FD628_IOC_POWER, int(value))
def getBrightness(self):
return self.__readFD628(self._FD628_IOC_GBRIGHT)
def setBrightness(self, value):
self.__writeFD628(self._FD628_IOC_SBRIGHT, value)
def getDisplayType(self):
return self.__readFD628(self._FD628_IOC_GDISPLAY_TYPE)
def setDisplayType(self, value):
self.__writeFD628(self._FD628_IOC_SDISPLAY_TYPE, value)
def setCharacterOrder(self, value):
pack = struct.pack('BBBBBBB', value[0], value[1], value[2], value[3], value[4], value[5], value[6])
self.__writeFD628(self._FD628_IOC_SCHARS_ORDER, pack, True)
def useDtbConfig(self):
self.__writeFD628(self._FD628_IOC_USE_DTB_CONFIG, 0)
def __readFD628(self, cmd, isBuf = False):
import ioctl
ret = None
if (ioctl.DIR(cmd) == ioctl.READ and self.__writeFD628(cmd, 0)):
with open(_led_cmd, "rb") as vfd:
ret = vfd.read()
if (ret == ''):
ret = None
if (not isBuf and ret != None):
ret = int(ret, 0)
kodiLog('fd628Dev.__readFD628: value = {0}'.format(str(ret)))
return ret
def __writeFD628(self, cmd, value, isBuf = False):
ret = False
if (os.path.isfile(_led_cmd)):
if isBuf:
value = ''.join([struct.pack('I', cmd), value])
else:
value = struct.pack('Ii', cmd, value)
kodiLog('fd628Dev.__writeFD628: value = {0}'.format(repr(value)))
try:
with open(_led_cmd, "wb") as vfd:
vfd.write(value)
ret = True
except Exception as inst:
kodiLogError(inst)
return ret

View File

@@ -1,95 +0,0 @@
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
import xbmcaddon
addon = xbmcaddon.Addon(id='service.fd628')
def getSetting(id):
return addon.getSetting(id)
def getSettingBool(id):
value = getSetting(id).lower()
if (value == 'true'):
value = True
else:
value = False
return value
def getSettingInt(id):
return int(getSetting(id))
def getSettingNumber(id):
return float(getSetting(id))
class fd628Settings:
def __init__(self):
self.readValues()
def isDisplayOn(self):
return self._displayOn
def isAdvancedSettings(self):
return self._displayAdvanced
def getBrightness(self):
return self._displayBrightness
def getDisplayType(self):
return self._displayType
def isCommonAnode(self):
return self._commonAnode
def getDisplay(self):
value = self.getDisplayType()
if (self.isCommonAnode()):
value = value + (1 << 16)
return value
def getCharacterIndex(self, i):
return self._characterIndexes[i]
def getCharacterIndexes(self):
return self._characterIndexes
def isStorageIndicator(self):
return self._storageIndicator
def getStorageIndicatorIcon(self):
return self._storageIndicatorIcon
def isColonOn(self):
return self._colonOn
def readValues(self):
self._displayAdvanced = False
self._displayOn = getSettingBool('display.on')
if (self._displayOn):
self._displayBrightness = getSettingInt('display.brightness')
self._storageIndicator = getSettingBool('display.storage.indicator')
self._storageIndicatorIcon = getSetting('display.storage.indicator.icon')
self._colonOn = getSettingBool('display.colon.on')
self._displayAdvanced = getSettingBool('display.advanced')
if (self._displayAdvanced):
self._displayType = getSettingInt('display.type')
self._commonAnode = getSettingBool('display.common.anode')
self._characterIndexes = []
for i in range(7):
self._characterIndexes.append(getSettingInt('display.char.index{0}'.format(i)))
else:
self.__initDefaultValues()
else:
self.__initDefaultValues()
def __initDefaultValues(self):
if not (self._displayOn):
self._displayBrightness = 7
self._storageIndicator = False
self._storageIndicatorIcon = ''
self._colonOn = False
self._displayAdvanced = False
if not (self._displayAdvanced):
self._displayType = 0
self._commonAnode = False
self._characterIndexes = range(0, 7)

View File

@@ -1,187 +0,0 @@
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
import xbmc
import os
from fd628utils import *
class fd628State(object):
def __init__(self, ledName):
self._value = False
self._hasChanged = False
self._ledName = ledName
def _getStr(self, className):
return '{0} ({1})'.format(className, self._ledName)
def update(self):
raise NotImplementedError
def getValue(self):
return self._value
def hasChanged(self):
return self._hasChanged
def getLedName(self):
return self._ledName
def _update(self, value):
if (value != self._value):
self._hasChanged = True
self._value = value
else:
self._hasChanged = False
class fd628IconIndicator(fd628State):
def __init__(self, on, ledName):
super(fd628IconIndicator, self).__init__(ledName)
self._on = on
def __str__(self):
return self._getStr('fd628IconIndicator')
def turnOn(self):
self._on = True
def turnOff(self):
self._on = False
def toggle(self):
self._on = not self._on
def update(self):
self._update(self._on)
class fd628CondVisibility(fd628State):
def __init__(self, ledName, cmd):
super(fd628CondVisibility, self).__init__(ledName)
self._cmd = cmd
def __str__(self):
return self._getStr('fd628CondVisibility')
def update(self):
value = xbmc.getCondVisibility(self._cmd)
self._update(value)
class fd628FileContains(fd628State):
def __init__(self, ledName, path, strings):
super(fd628FileContains, self).__init__(ledName)
self._path = path
self._strings = strings
def __str__(self):
return self._getStr('fd628FileContains')
def update(self):
if (os.path.isfile(self._path)):
with open(self._path, 'rb') as state:
content = state.read()
value = self.__checkContent(content)
self._update(value)
else:
self._update(False)
def __checkContent(self, content):
ret = False
for s in self._strings:
if (s in content):
ret = True
break
return ret
class fd628WindowChecker(fd628State):
def __init__(self, ledName, windows):
super(fd628WindowChecker, self).__init__(ledName)
self._windows = windows
def __str__(self):
return self._getStr('fd628WindowChecker')
def update(self):
value = False
for id in self._windows:
if (xbmc.getCondVisibility('Window.IsVisible({0})'.format(id))):
value = True
break
self._update(value)
class fd628ExtStorageChecker(fd628State):
def __init__(self, ledName, path):
super(fd628ExtStorageChecker, self).__init__(ledName)
self._path = path
def __str__(self):
return self._getStr('fd628ExtStorageChecker')
def update(self):
value = False
for folder, subs, files in os.walk('/dev/disk/by-uuid'):
for filename in files:
path = os.path.realpath(os.path.join(folder, filename))
if (path.startswith(self._path)):
value = True
break
self._update(value)
class fd628ExtStorageCount(fd628State):
def __init__(self, ledName, drives, type):
super(fd628ExtStorageCount, self).__init__(ledName)
if (drives == None): # Monitor all drives
self._drives = None
drives = self.__getAllDrives()
else: # Monitor listed drives
self._drives = drives
drives = self.__getSelectedDrives()
self._driveStats = {key: self.__readStatus(key) for key in drives}
kodiLogNotice('fd628ExtStorageCount.__init__: Drive stats ' + str(self._driveStats))
self._read = False
self._write = False
if (type == 'r'):
self._read = True
elif (type == 'w'):
self._write = True
elif (type == 'rw'):
self._read = True
self._write = True
else:
raise Exception('\'type\' must be \'r\', \'w\' or \'rw\'.')
def update(self):
value = False
if (self._drives == None):
drives = self.__getAllDrives()
else:
drives = self.__getSelectedDrives()
for drive in drives:
if (not drive in self._driveStats):
self._driveStats[drive] = None
kodiLogNotice('fd628ExtStorageCount.update: New drive found \'{0}\''.format(drive))
for path, stats in self._driveStats.iteritems():
newStats = self.__readStatus(path)
if (stats != None and newStats != None):
if (self._read):
value = value or stats[0] != newStats[0]
if (self._write):
value = value or stats[1] != newStats[1]
self._driveStats[path] = newStats
self._update(value)
def __readStatus(self, path):
path = os.path.join('/sys/block', path, 'stat')
if (os.path.isfile(path)):
with open(path, 'rb') as status:
values = status.read().split()
return (values[2], values[6])
else:
return None
def __getAllDrives(self):
drives = []
for folder, subs, files in os.walk('/sys/block'):
drives = [sub for sub in subs if (not sub.startswith('loop'))]
return drives
def __getSelectedDrives(self):
return [drive for drive in self.__getAllDrives() if ([d for d in self._drives if drive.startswith(d)])]

View File

@@ -1,19 +0,0 @@
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
import xbmc
import xbmcaddon
addonName = xbmcaddon.Addon(id='service.fd628').getAddonInfo('name')
def kodiLog(message, level = xbmc.LOGDEBUG):
xbmc.log('{0} -> {1}'.format(addonName, str(message)), level)
def kodiLogError(message):
kodiLog(message, xbmc.LOGERROR)
def kodiLogWarning(message):
kodiLog(message, xbmc.LOGWARNING)
def kodiLogNotice(message):
kodiLog(message, xbmc.LOGNOTICE)

View File

@@ -1,89 +0,0 @@
#!/usr/bin/python
"""
Author: SpliFF
License: Public Domain
Python ioctl constants and functions module
Mostly follows specifications in asm-generic/ioctl.h from linux 2.5.36
Notable differences:
* no architecture dependant stuff
* size parameters are all passed as bytes, not types (ie pass 4, not int)
!! WARNING EXPERIMENTAL SOFTWARE !!
Make sure the values returned by these functions are properly tested before using fcntl on anything remotely valuable!
"""
NRBITS = 8
TYPEBITS = 8
# may be arch dependent
SIZEBITS = 14
DIRBITS = 2
NRMASK = (1 << NRBITS) - 1
TYPEMASK = (1 << TYPEBITS) - 1
SIZEMASK = (1 << SIZEBITS) - 1
DIRMASK = (1 << DIRBITS) - 1
NRSHIFT = 0
TYPESHIFT = NRSHIFT + NRBITS
SIZESHIFT = TYPESHIFT + TYPEBITS
DIRSHIFT = SIZESHIFT + SIZEBITS
# may be arch dependent
NONE = 0x0
WRITE = 0x1
READ = 0x2
# for the drivers/sound files...
IN = WRITE << DIRSHIFT
OUT = READ << DIRSHIFT
INOUT = (WRITE | READ) << DIRSHIFT
IOCSIZE_MASK = SIZEMASK << SIZESHIFT
IOCSIZE_SHIFT = SIZESHIFT
# used to create numbers ...
def IO( _type, nr):
return IOC(NONE, _type, nr, 0)
def IOC(direction, _type, nr, size):
return (direction << DIRSHIFT) | (_type << TYPESHIFT) | (nr << NRSHIFT) | (size << SIZESHIFT)
def IOR( _type, nr, size):
return IOC(READ, _type, nr, size)
def IOW(_type, nr, size):
return IOC(WRITE, _type, nr, size)
def IOWR(_type, nr, size):
return IOC(READ|WRITE, _type, nr, size)
def IOR_BAD(_type, nr, size):
return IOC(READ, _type, nr, size)
def IOW_BAD(_type, nr, size):
return IOC(WRITE, _type, nr, size)
def IOWR_BAD(_type, nr, size):
return IOC(READ|WRITE, _type, nr, size)
# used to decode ioctl numbers..
def DIR(nr):
return (nr >> DIRSHIFT) & DIRMASK
def TYPE(nr):
return (nr >> TYPESHIFT) & TYPEMASK
def NR(nr):
return (nr >> NRSHIFT) & NRMASK
def SIZE(nr):
return (nr >> SIZESHIFT) & SIZEMASK

View File

@@ -1,143 +0,0 @@
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
import xbmcaddon
import threading
import os
import fd628states
import fd628dev
import fd628settings
from fd628utils import *
addon = xbmcaddon.Addon(id='service.fd628')
class fd628Monitor(xbmc.Monitor):
def __init__(self):
super(fd628Monitor, self).__init__()
self._settingsChangedCallback = None
def setSettingsChangedCallback(self, callbackObject):
self._settingsChangedCallback = callbackObject
def onSettingsChanged(self):
kodiLog('Enter fd628Monitor.onSettingsChanged')
if (self._settingsChangedCallback != None):
self._settingsChangedCallback.onSettingsChanged()
class fd628Addon():
def __init__(self, monitor):
self._fd628 = fd628dev.fd628Dev()
self._states = []
self._monitor = monitor
self._monitor.setSettingsChangedCallback(self)
self._settings = fd628settings.fd628Settings()
self._vfdon = '/sys/class/leds/le-vfd/led_on'
self._vfdoff = '/sys/class/leds/le-vfd/led_off'
self._rlock = threading.RLock()
def run(self):
firstLoop = True
while not self._monitor.abortRequested():
if self._monitor.waitForAbort(0.5):
break
if (not os.path.isfile(self._vfdon) or not os.path.isfile(self._vfdoff)):
firstLoop = True
continue
if (firstLoop):
self.onSettingsChanged()
firstLoop = False
self.__updateIndicators()
self.__cleanUp()
def __updateIndicators(self):
ledon = []
ledoff = []
if (self._rlock.acquire()):
for state in self._states:
state.update()
if (state.hasChanged()):
if (state.getValue()):
ledon.append(state.getLedName())
else:
ledoff.append(state.getLedName())
self.__writeFile(self._vfdon, ledon)
self.__writeFile(self._vfdoff, ledoff)
self._rlock.release()
def __cleanUp(self):
self.__turnOffIndicators()
self._monitor = None
def __turnOffIndicators(self):
if (self._rlock.acquire()):
ledoff = [state.getLedName() for state in self._states]
self.__writeFile(self._vfdoff, ledoff)
self._rlock.release()
def __writeFile(self, path, values):
if (os.path.isfile(path)):
with open(path, "wb") as vfd:
for j in values:
vfd.write(j)
vfd.flush()
def onSettingsChanged(self):
kodiLog('Enter fd628Addon.onSettingsChanged')
self._settings.readValues()
if (self._rlock.acquire()):
self.__createStates()
self._fd628.enableDisplay(self._settings.isDisplayOn())
if (self._settings.isDisplayOn()):
self._fd628.setBrightness(self._settings.getBrightness())
if (self._settings.isAdvancedSettings()):
self._fd628.setDisplayType(self._settings.getDisplay())
self._fd628.setCharacterOrder(self._settings.getCharacterIndexes())
else:
self._fd628.useDtbConfig()
if (self._colonIcon != None and self._settings.isColonOn()):
self._colonIcon.turnOn()
self.__updateIndicators()
self._rlock.release()
kodiLog('isDisplayOn = {0}'.format(self._settings.isDisplayOn()))
kodiLog('getBrightness = {0}'.format(self._settings.getBrightness()))
kodiLog('isAdvancedSettings = {0}'.format(self._settings.isAdvancedSettings()))
kodiLog('getDisplayType = {0}'.format(self._settings.getDisplayType()))
kodiLog('isCommonAnode = {0}'.format(self._settings.isCommonAnode()))
kodiLog('getCharacterIndexex = {0}'.format(self._settings.getCharacterIndexes()))
def __createStates(self):
settingsWindows = ['settings', 'systeminfo', 'systemsettings', 'servicesettings', 'pvrsettings', \
'playersettings', 'mediasettings', 'interfacesettings', 'profiles', 'skinsettings', 'videossettings', \
'musicsettings', 'appearancesettings', 'picturessettings', 'weathersettings', 'gamesettings', \
'service-LibreELEC-Settings-mainWindow.xml', 'service-LibreELEC-Settings-wizard.xml', \
'service-LibreELEC-Settings-getPasskey.xml']
appsWindows = ['addonbrowser', 'addonsettings', 'addoninformation', 'addon', 'programs']
states = []
states.append(fd628states.fd628IconIndicator(True, 'power'))
states.append(fd628states.fd628CondVisibility('play', 'Player.Playing'))
states.append(fd628states.fd628CondVisibility('pause', 'Player.Paused'))
states.append(fd628states.fd628FileContains('hdmi', '/sys/class/amhdmitx/amhdmitx0/hpd_state', ['1']))
states.append(fd628states.fd628FileContains('cvbs', '/sys/class/display/mode', ['cvbs']))
states.append(fd628states.fd628FileContains('eth', '/sys/class/net/eth0/operstate', ['up', 'unknown']))
states.append(fd628states.fd628FileContains('wifi', '/sys/class/net/wlan0/operstate', ['up']))
states.append(fd628states.fd628WindowChecker('setup', settingsWindows))
states.append(fd628states.fd628WindowChecker('apps', appsWindows))
states.append(fd628states.fd628ExtStorageChecker('usb', '/dev/sd'))
states.append(fd628states.fd628ExtStorageChecker('sd', '/dev/mmcblk'))
self._colonIcon = fd628states.fd628IconIndicator(False, 'colon')
states.append(self._colonIcon)
if (self._settings.isStorageIndicator()):
for state in states:
if (state.getLedName() == self._settings.getStorageIndicatorIcon()):
states.remove(state)
break
states.append(fd628states.fd628ExtStorageCount(self._settings.getStorageIndicatorIcon(), None, 'rw'))
kodiLog('Active states: ' + str([str(state) for state in states]))
self.__turnOffIndicators()
self._states = states
monitor = fd628Monitor()
fd628 = fd628Addon(monitor)
kodiLog('Service start.')
fd628.run()
kodiLog('Service stop.')

View File

@@ -1,21 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<settings>
<category label="30000">
<setting label="30001" type="bool" id="display.on" default="true" />
<setting label="30002" type="slider" id="display.brightness" default="7" range="0,7" option="int" visible="eq(-1,true)" />
<setting label="30013" type="bool" id="display.storage.indicator" default="false" visible="eq(-2,true)" />
<setting label="30014" type="labelenum" id="display.storage.indicator.icon" lvalues="30025|30015|30016|30017|30018|30019|30020|30021|30022|30023|30024|30027" default="30025" visible="eq(-3,true) + eq(-1,true)" subsetting="true" />
<setting label="30028" type="bool" id="display.colon.on" default="false" visible="eq(-4,true)" />
<setting label="30003" type="bool" id="display.advanced" default="false" visible="eq(-5,true)" />
<setting label="30004" type="enum" id="display.type" values="0|1|2|3|4|5|6" default="1" visible="eq(-6,true) + eq(-1,true)" subsetting="true" />
<setting label="30026" type="bool" id="display.common.anode" default="false" visible="eq(-7,true) + eq(-2,true)" subsetting="true" />
<setting type="lsep" label="30012" visible="eq(-8,true) + eq(-3,true)" />
<setting label="30005" type="enum" id="display.char.index0" values="0|1|2|3|4|5|6" default="0" visible="eq(-9 ,true) + eq(-4,true)" subsetting="true" />
<setting label="30006" type="enum" id="display.char.index1" values="0|1|2|3|4|5|6" default="1" visible="eq(-10,true) + eq(-5,true)" subsetting="true" />
<setting label="30007" type="enum" id="display.char.index2" values="0|1|2|3|4|5|6" default="2" visible="eq(-11,true) + eq(-6,true)" subsetting="true" />
<setting label="30008" type="enum" id="display.char.index3" values="0|1|2|3|4|5|6" default="3" visible="eq(-12,true) + eq(-7,true)" subsetting="true" />
<setting label="30009" type="enum" id="display.char.index4" values="0|1|2|3|4|5|6" default="4" visible="eq(-13,true) + eq(-8,true)" subsetting="true" />
<setting label="30010" type="enum" id="display.char.index5" values="0|1|2|3|4|5|6" default="5" visible="false" subsetting="true" />
<setting label="30011" type="enum" id="display.char.index6" values="0|1|2|3|4|5|6" default="6" visible="false" subsetting="true" />
</category>
</settings>

View File

@@ -25,10 +25,7 @@ PKG_DISPMANX_SUPPORT="-DENABLE_DISPMANX=0"
PKG_FB_SUPPORT="-DENABLE_FB=1"
PKG_X11_SUPPORT="-DENABLE_X11=0"
if [ "$KODIPLAYER_DRIVER" = "libamcodec" ]; then
PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET libamcodec"
PKG_AMLOGIC_SUPPORT="-DENABLE_AMLOGIC=1"
elif [ "$KODIPLAYER_DRIVER" = "bcm2835-driver" ]; then
if [ "$KODIPLAYER_DRIVER" = "bcm2835-driver" ]; then
PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET bcm2835-driver"
PKG_DISPMANX_SUPPORT="-DENABLE_DISPMANX=1"
PKG_FB_SUPPORT="-DENABLE_FB=0"

View File

@@ -1,59 +0,0 @@
From 49f9c51f5519d48bae601c174914f82e8e71e093 Mon Sep 17 00:00:00 2001
From: redpanther <redpanther@spooky-online.de>
Date: Wed, 31 Aug 2016 14:39:14 +0200
Subject: [PATCH] fix amlogic for newer kernels crosscompile stay on 32bit aml
with kernel 3.10
backport 58a8e22 from hyperion.ng
---
libsrc/grabber/amlogic/AmlogicGrabber.cpp | 10 +++++++---
libsrc/grabber/amlogic/CMakeLists.txt | 7 +++++++
2 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/libsrc/grabber/amlogic/AmlogicGrabber.cpp b/libsrc/grabber/amlogic/AmlogicGrabber.cpp
index 11cd280..5f39883 100644
--- a/libsrc/grabber/amlogic/AmlogicGrabber.cpp
+++ b/libsrc/grabber/amlogic/AmlogicGrabber.cpp
@@ -20,9 +20,13 @@
#define AMVIDEOCAP_IOW_SET_WANTFRAME_WIDTH _IOW(AMVIDEOCAP_IOC_MAGIC, 0x02, int)
#define AMVIDEOCAP_IOW_SET_WANTFRAME_HEIGHT _IOW(AMVIDEOCAP_IOC_MAGIC, 0x03, int)
-// Flags copied from 'include/linux/amlogic/amports/amvstream.h' at https://github.com/codesnake/linux-amlogic
-#define AMSTREAM_IOC_MAGIC 'S'
-#define AMSTREAM_IOC_GET_VIDEO_DISABLE _IOR(AMSTREAM_IOC_MAGIC, 0x48, unsigned long)
+#if HAVE_AML_HEADER
+ #include <amcodec/amports/amstream.h>
+#else
+ // Flags copied from 'include/linux/amlogic/amports/amvstream.h' at https://github.com/codesnake/linux-amlogic
+ #define AMSTREAM_IOC_MAGIC 'S'
+ #define AMSTREAM_IOC_GET_VIDEO_DISABLE _IOR(AMSTREAM_IOC_MAGIC, 0x48, unsigned long)
+#endif
AmlogicGrabber::AmlogicGrabber(const unsigned width, const unsigned height) :
// Minimum required width or height is 160
diff --git a/libsrc/grabber/amlogic/CMakeLists.txt b/libsrc/grabber/amlogic/CMakeLists.txt
index cf8844b..326f7c7 100644
--- a/libsrc/grabber/amlogic/CMakeLists.txt
+++ b/libsrc/grabber/amlogic/CMakeLists.txt
@@ -1,3 +1,4 @@
+INCLUDE (CheckIncludeFiles)
# Define the current source locations
SET(CURRENT_HEADER_DIR ${CMAKE_SOURCE_DIR}/include/grabber)
@@ -21,6 +22,12 @@ else(ENABLE_QT5)
QT4_WRAP_CPP(AmlogicHEADERS_MOC ${AmlogicQT_HEADERS})
endif(ENABLE_QT5)
+CHECK_INCLUDE_FILES ("amcodec/amports/amstream.h" HAVE_AML_HEADER)
+IF (${HAVE_AML_HEADER})
+ ADD_DEFINITIONS( -DHAVE_AML_HEADER )
+ENDIF()
+
+
add_library(amlogic-grabber
${AmlogicHEADERS}
${AmlogicQT_HEADERS}
--
2.9.3

View File

@@ -1,3 +1,7 @@
109
- Update to version 11518
- fixed missing Modules
108
- Update to version 11517

View File

@@ -2,10 +2,10 @@
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="oscam"
PKG_VERSION="a2ee0528f1de527748aaf7a79982ed112ffa3183"
PKG_SHA256="24315471faea612a25b39fc14050f4fad4365715fde48dcb0032ebdce770282d"
PKG_VERSION_NUMBER="11517"
PKG_REV="108"
PKG_VERSION="e8ce7359fa920ca8d63aca9dde4f0eeb1f1f72f1"
PKG_SHA256="93610d3d61479cae87340a0a3d7dc8c04b326b662f58f4181ac08c87897bd80b"
PKG_VERSION_NUMBER="11518"
PKG_REV="109"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="http://www.streamboard.tv/oscam/wiki"
@@ -19,17 +19,53 @@ PKG_IS_ADDON="yes"
PKG_ADDON_NAME="OSCam"
PKG_ADDON_TYPE="xbmc.service"
PKG_CMAKE_OPTS_TARGET="-DLIBUSBDIR=$SYSROOT_PREFIX/usr \
-DWITH_SSL=1 \
-DHAVE_LIBCRYPTO=1 \
-DHAVE_DVBAPI=1 \
-DWITH_STAPI=0 \
-DWEBIF=1 \
-DWITH_DEBUG=0 \
-DOPTIONAL_INCLUDE_DIR=$SYSROOT_PREFIX/usr/include \
-DSTATIC_LIBUSB=1 \
-DCLOCKFIX=0 \
-DCARDREADER_DB2COM=OFF"
PKG_CMAKE_OPTS_TARGET="\
`#Building` \
-DLIBUSBDIR=$SYSROOT_PREFIX/usr \
-DOPTIONAL_INCLUDE_DIR=$SYSROOT_PREFIX/usr/include \
\
`#Readers` \
-DCARDREADER_DB2COM=OFF \
-DCARDREADER_DRECAS=ON \
-DCARDREADER_INTERNAL=OFF \
-DCARDREADER_MP35=ON \
-DCARDREADER_PHOENIX=ON \
-DCARDREADER_SC8IN1=ON \
-DCARDREADER_SMARGO=ON \
-DCARDREADER_STAPI5=OFF \
-DCARDREADER_STAPI=OFF \
-DCARDREADER_STINGER=ON \
\
`#Protocol` \
-DMODULE_CAMD33=OFF \
-DMODULE_CAMD35=ON \
-DMODULE_CAMD35_TCP=ON \
-DMODULE_CCCAM=ON \
-DMODULE_CCCSHARE=ON \
-DMODULE_CONSTCW=ON \
-DMODULE_GBOX=ON \
-DMODULE_GHTTP=ON \
-DMODULE_NEWCAMD=ON \
-DMODULE_PANDORA=ON \
-DMODULE_RADEGAST=ON \
-DMODULE_SCAM=ON \
-DMODULE_SERIAL=ON \
\
`#Features` \
-DCLOCKFIX=0 \
-DCS_ANTICASC=ON \
-DCS_CACHEEX=ON \
-DCW_CYCLE_CHECK=ON \
-DHAVE_DVBAPI=1 \
-DHAVE_LIBCRYPTO=1 \
-DSTATIC_LIBUSB=1 \
-DTOUCH=ON \
-DWEBIF=1 \
-DWEBIF_LIVELOG=1 \
-DWEBIF_JQUERY=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=1 \
-DWITH_STAPI=0"
pre_configure_target() {
export OSCAM_ADDON_VERSION="$PKG_VERSION_NUMBER"

View File

@@ -20,9 +20,7 @@ PKG_ADDON_PROJECTS="Slice Slice3"
PKG_ADDON_TYPE="xbmc.service"
makeinstall_target() {
PKG_ADDON_INSTALL_DIR="${INSTALL}/usr/share/kodi/addons/${PKG_SECTION}.${PKG_NAME}"
mkdir -p "${PKG_ADDON_INSTALL_DIR}"
install_addon_files "${PKG_ADDON_INSTALL_DIR}"
install_addon_files "${INSTALL}/usr/share/kodi/addons/${PKG_SECTION}.${PKG_NAME}"
}
addon() {

View File

@@ -5,7 +5,7 @@ PKG_NAME="touchscreen"
PKG_VERSION="1.0"
PKG_REV="101"
PKG_ARCH="any"
PKG_ADDON_PROJECTS="Generic RPi Amlogic"
PKG_ADDON_PROJECTS="Generic RPi"
PKG_LICENSE="GPL"
PKG_SITE=""
PKG_URL=""

View File

@@ -1,3 +1,6 @@
119
- Use system libidn2
118
- update to 4.2.7-44
- fix tv_grab_file usage of & in urls

View File

@@ -5,7 +5,7 @@ PKG_NAME="tvheadend42"
PKG_VERSION="5c218500579d5bd1c1f7e7a4b5f7f0fb35baa626"
PKG_SHA256="a9fe5a4c36aa185e3f0a73a709f0dc05794ae9c12f5d888985b559ff68a2508d"
PKG_VERSION_NUMBER="4.2.7-44"
PKG_REV="118"
PKG_REV="119"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="http://www.tvheadend.org"
@@ -114,7 +114,6 @@ addon() {
cp -PL $(get_build_dir gnutls)/.INSTALL_PKG/usr/lib/libgnutls.so.30 $ADDON_BUILD/$PKG_ADDON_ID/lib
cp -PL $(get_build_dir nettle)/.install_pkg/usr/lib/libnettle.so.6 $ADDON_BUILD/$PKG_ADDON_ID/lib
cp -PL $(get_build_dir nettle)/.install_pkg/usr/lib/libhogweed.so.4 $ADDON_BUILD/$PKG_ADDON_ID/lib
cp -PL $(get_build_dir libidn2)/.install_pkg/usr/lib/libidn2.so.4 $ADDON_BUILD/$PKG_ADDON_ID/lib
cp -PL $(get_build_dir gmp)/.install_pkg/usr/lib/libgmp.so.10 $ADDON_BUILD/$PKG_ADDON_ID/lib
# set only version (revision will be added by buildsystem)

View File

@@ -5,7 +5,6 @@ PKG_NAME="tvmosaic"
PKG_VERSION="1.0.0-16296"
PKG_SHA256="63d48e7b0912f2efb6e894252a13d8312679cdcb155ebe3fa758dc88b4f91816"
PKG_REV="100"
PKG_ARCH="any"
PKG_ARCH="arm"
PKG_LICENSE="Prop."
PKG_SITE="https://tv-mosaic.com"

View File

@@ -36,11 +36,6 @@ PKG_ADDON_NAME=".Net Core Runtime"
PKG_ADDON_TYPE="xbmc.python.script"
PKG_MAINTAINER="Anton Voyl (awiouy)"
unpack() {
mkdir -p $PKG_BUILD
$SCRIPTS/extract $PKG_NAME $PKG_BUILD
}
addon() {
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/bin
cp -r $PKG_BUILD/$PKG_NAME-$PKG_VERSION/* \

View File

@@ -1,3 +1,6 @@
106
- Use system libidn2
105
- Removed FDK-AAC
- Build with GNUTLS

View File

@@ -3,7 +3,7 @@
PKG_NAME="ffmpeg-tools"
PKG_VERSION="1.0"
PKG_REV="105"
PKG_REV="106"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="https://libreelec.tv"
@@ -25,7 +25,6 @@ addon() {
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/lib
cp -PL $(get_build_dir gmp)/.install_pkg/usr/lib/libgmp.so.10 $ADDON_BUILD/$PKG_ADDON_ID/lib
cp -PL $(get_build_dir gnutls)/.INSTALL_PKG/usr/lib/libgnutls.so.30 $ADDON_BUILD/$PKG_ADDON_ID/lib
cp -PL $(get_build_dir libidn2)/.install_pkg/usr/lib/libidn2.so.4 $ADDON_BUILD/$PKG_ADDON_ID/lib
cp -PL $(get_build_dir nettle)/.install_pkg/usr/lib/libhogweed.so.4 $ADDON_BUILD/$PKG_ADDON_ID/lib
cp -PL $(get_build_dir nettle)/.install_pkg/usr/lib/libnettle.so.6 $ADDON_BUILD/$PKG_ADDON_ID/lib
}

View File

@@ -3,8 +3,8 @@
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="alsa-lib"
PKG_VERSION="1.1.8"
PKG_SHA256="3cdc3a93a6427a26d8efab4ada2152e64dd89140d981f6ffa003e85be707aedf"
PKG_VERSION="1.1.9"
PKG_SHA256="488373aef5396682f3a411a6d064ae0ad196b9c96269d0bb912fbdeec94b994b"
PKG_LICENSE="GPL"
PKG_SITE="http://www.alsa-project.org/"
PKG_URL="ftp://ftp.alsa-project.org/pub/lib/alsa-lib-$PKG_VERSION.tar.bz2"

View File

@@ -3,8 +3,8 @@
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="alsa-utils"
PKG_VERSION="1.1.8"
PKG_SHA256="fd9bf528922b3829a91913b89a1858c58a0b24271a7b5f529923aa9ea12fa4cf"
PKG_VERSION="1.1.9"
PKG_SHA256="5ddf2cbddb4bd1a4a2a6492a09c25898b08c3ad64893c3655be14194cf0a213a"
PKG_LICENSE="GPL"
PKG_SITE="http://www.alsa-project.org/"
PKG_URL="ftp://ftp.alsa-project.org/pub/utils/alsa-utils-$PKG_VERSION.tar.bz2"

View File

@@ -1,9 +1,10 @@
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="libmodplug"
PKG_VERSION="0.8.8.5"
PKG_SHA256="77462d12ee99476c8645cb5511363e3906b88b33a6b54362b4dbc0f39aa2daad"
PKG_VERSION="0.8.9.0"
PKG_SHA256="457ca5a6c179656d66c01505c0d95fafaead4329b9dbaa0f997d00a3508ad9de"
PKG_LICENSE="GPL"
PKG_SITE="http://modplug-xmms.sourceforge.net/"
PKG_URL="$SOURCEFORGE_SRC/modplug-xmms/libmodplug/$PKG_VERSION/$PKG_NAME-$PKG_VERSION.tar.gz"

View File

@@ -3,8 +3,8 @@
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="libopenmpt"
PKG_VERSION="0.3.1"
PKG_SHA256="6fc5614926edd523d5585e40fdaf0b2ea08689d4dc91de49511d02503744cbb5"
PKG_VERSION="0.4.5"
PKG_SHA256="0b4cc0cc8fbbdabc6263a900ff3560dae7be43be011b6f2bc9913f7a0ed3a521"
PKG_LICENSE="BSD"
PKG_SITE="http://lib.openmpt.org/libopenmpt/"
PKG_URL="http://lib.openmpt.org/files/libopenmpt/src/${PKG_NAME}-${PKG_VERSION}+release.autotools.tar.gz"

View File

@@ -1,9 +1,10 @@
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="libsamplerate"
PKG_VERSION="0.1.8"
PKG_SHA256="93b54bdf46d5e6d2354b7034395fe329c222a966790de34520702bb9642f1c06"
PKG_VERSION="0.1.9"
PKG_SHA256="0a7eb168e2f21353fb6d84da152e4512126f7dc48ccb0be80578c565413444c1"
PKG_LICENSE="GPL"
PKG_SITE="http://www.mega-nerd.com/SRC/"
PKG_URL="http://www.mega-nerd.com/SRC/$PKG_NAME-$PKG_VERSION.tar.gz"

View File

@@ -2,8 +2,8 @@
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="rpi-cirrus-config"
PKG_VERSION="0.0.1"
PKG_SHA256="a2a580d9738aaf4e901d8215cedd1df5d95b1e057165cfd9b72335e0dc6c40e4"
PKG_VERSION="0.0.2"
PKG_SHA256="cc11c47f1f2b6d5e72dcdea828ba57e0dcaf74161f675a4a9f395054f5d82d31"
PKG_LICENSE="GPL"
PKG_SITE="https://github.com/HiassofT/rpi-cirrus-config"
PKG_URL="https://github.com/HiassofT/rpi-cirrus-config/archive/$PKG_VERSION.tar.gz"

View File

@@ -1,9 +1,10 @@
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="sbc"
PKG_VERSION="1.3"
PKG_SHA256="4a358581fb57b98e0c1c34606a35343f31f908f57c26659e51495f75e283785d"
PKG_VERSION="1.4"
PKG_SHA256="050058cfc5a2709d324868ddbb82f9b796ba6c4f5e00cb6a715b3841ee13dfe9"
PKG_LICENSE="GPL"
PKG_SITE="http://www.bluez.org/"
PKG_URL="http://www.kernel.org/pub/linux/bluetooth/sbc-$PKG_VERSION.tar.gz"

View File

@@ -2,8 +2,8 @@
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="lz4"
PKG_VERSION="1.8.2"
PKG_SHA256="0963fbe9ee90acd1d15e9f09e826eaaf8ea0312e854803caf2db0a6dd40f4464"
PKG_VERSION="1.9.1"
PKG_SHA256="f8377c89dad5c9f266edc0be9b73595296ecafd5bfa1000de148096c50052dc4"
PKG_LICENSE="GPL"
PKG_SITE="https://github.com/lz4/lz4"
PKG_URL="https://github.com/lz4/lz4/archive/v$PKG_VERSION.tar.gz"

View File

@@ -2,8 +2,8 @@
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="minizip"
PKG_VERSION="1.1"
PKG_SHA256="5666b5ee3e85dfd2dd119970613c12e6267d31813f07d3ffa5d359fe272cb6d1"
PKG_VERSION="2.8.8"
PKG_SHA256="a551063636ae4f989baefc6a20870f5b28246052a372a2ce124ebf3f66018db0"
PKG_LICENSE="zlib"
PKG_SITE="https://github.com/nmoinvaz/minizip"
PKG_URL="https://github.com/nmoinvaz/minizip/archive/$PKG_VERSION.tar.gz"

View File

@@ -2,8 +2,8 @@
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="mariadb-connector-c"
PKG_VERSION="3.0.6"
PKG_SHA256="46181f8c95c096ac1aa6cb0ca80f4ed0e746873cfd6af84f3bac925d7e2cd091"
PKG_VERSION="3.1.1"
PKG_SHA256="63a0ecfa3c87ba0361aef3b2c849abe280f7371030e84f41ce0dc4466db85637"
PKG_LICENSE="LGPL"
PKG_SITE="https://mariadb.org/"
PKG_URL="https://github.com/MariaDB/mariadb-connector-c/archive/v$PKG_VERSION.tar.gz"

View File

@@ -2,11 +2,11 @@
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="edid-decode"
PKG_VERSION="f56f329"
PKG_SHA256="d9347ddf6933c6f90c79230b1898da5686083f0e5ebb7ef67acb011108cfaeae"
PKG_VERSION="15df4aebf06da579241c58949493b866139d0e2b"
PKG_SHA256="58743c8ba768134ef1421e1ce9f4edf0eafdae29377fe5b8f4cb285f16dc142e"
PKG_LICENSE="None"
PKG_SITE="https://cgit.freedesktop.org/xorg/app/edid-decode/"
PKG_URL="https://cgit.freedesktop.org/xorg/app/edid-decode/snapshot/$PKG_VERSION.tar.xz"
PKG_SITE="https://git.linuxtv.org/edid-decode.git/"
PKG_URL="https://git.linuxtv.org/edid-decode.git/snapshot/$PKG_VERSION.tar.xz"
PKG_DEPENDS_TARGET="toolchain"
PKG_LONGDESC="Decode EDID data in human-readable format"

View File

@@ -66,10 +66,12 @@ make_target() {
make configure-host
make -C libiberty
make -C bfd
make -C opcodes
}
makeinstall_target() {
mkdir -p $SYSROOT_PREFIX/usr/lib
cp libiberty/libiberty.a $SYSROOT_PREFIX/usr/lib
make DESTDIR="$SYSROOT_PREFIX" -C bfd install
make DESTDIR="$SYSROOT_PREFIX" -C opcodes install
}

View File

@@ -3,8 +3,8 @@
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="cmake"
PKG_VERSION="3.14.3"
PKG_SHA256="215d0b64e81307182b29b63e562edf30b3875b834efdad09b3fcb5a7d2f4b632"
PKG_VERSION="3.14.5"
PKG_SHA256="505ae49ebe3c63c595fa5f814975d8b72848447ee13b6613b0f8b96ebda18c06"
PKG_LICENSE="BSD"
PKG_SITE="http://www.cmake.org/"
PKG_URL="http://www.cmake.org/files/v${PKG_VERSION%.*}/$PKG_NAME-$PKG_VERSION.tar.gz"

View File

@@ -2,8 +2,8 @@
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="flatbuffers"
PKG_VERSION="1.10.0"
PKG_SHA256="3714e3db8c51e43028e10ad7adffb9a36fc4aa5b1a363c2d0c4303dd1be59a7c"
PKG_VERSION="1.11.0"
PKG_SHA256="3f4a286642094f45b1b77228656fbd7ea123964f19502f9ecfd29933fd23a50b"
PKG_LICENSE="Apache-2.0"
PKG_SITE="https://github.com/google/flatbuffers"
PKG_URL="https://github.com/google/flatbuffers/archive/v$PKG_VERSION.tar.gz"

View File

@@ -18,9 +18,7 @@ PKG_CONFIGURE_OPTS_TARGET="--disable-shared \
--disable-debug \
--disable-deprecated \
--disable-silent-rules \
--enable-charsets \
--with-gnu-ld \
--without-glib"
--with-gnu-ld"
pre_configure_target() {
export CFLAGS="$CFLAGS -DFRIBIDI_CHUNK_SIZE=4080"

View File

@@ -3,8 +3,8 @@
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="glib"
PKG_VERSION="2.59.3"
PKG_SHA256="dfefafbc37bbcfb8101f3f181f880e8b7a8bee48620c92869ec4ef1d3d648e5e"
PKG_VERSION="2.61.1"
PKG_SHA256="f8d827955f0d8e197ff5c2105dd6ac4f6b63d15cd021eb1de66534c92a762161"
PKG_LICENSE="LGPL"
PKG_SITE="http://www.gtk.org/"
PKG_URL="http://ftp.gnome.org/pub/gnome/sources/glib/${PKG_VERSION%.*}/$PKG_NAME-$PKG_VERSION.tar.xz"

View File

@@ -3,8 +3,8 @@
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="heimdal"
PKG_VERSION="7.5.0"
PKG_SHA256="ad67fef994dc2268fb0b1a8164b39330d184f425057867485a178e9785a7f35a"
PKG_VERSION="7.7.0"
PKG_SHA256="f7d414d0914abb0e151a276b4de22cf4977fd6c28bd9ecdd990407b1138a945c"
PKG_LICENSE="BSD-3c"
PKG_SITE="http://www.h5l.org/"
PKG_URL="https://github.com/heimdal/heimdal/archive/$PKG_NAME-$PKG_VERSION.tar.gz"

View File

@@ -4,8 +4,8 @@
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="libcap"
PKG_VERSION="2.26"
PKG_SHA256="b630b7c484271b3ba867680d6a14b10a86cfa67247a14631b14c06731d5a458b"
PKG_VERSION="2.27"
PKG_SHA256="dac1792d0118bee6aae6ba7fb93ff1602c6a9bda812fd63916eee1435b9c486a"
PKG_LICENSE="GPL"
PKG_SITE=""
PKG_URL="http://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2/$PKG_NAME-$PKG_VERSION.tar.xz"

View File

@@ -16,22 +16,13 @@ PKG_CMAKE_OPTS_TARGET="-DBUILD_SHARED_LIBS=1 \
-DCMAKE_INSTALL_LIBDIR_NOARCH:STRING=lib \
-DSKIP_PYTHON_WRAPPER=1 \
-DHAVE_IMX_API=0 \
-DHAVE_AOCEC_API=0 -DHAVE_AMLOGIC_API=0 \
-DHAVE_GIT_BIN=0"
if [ "$KODIPLAYER_DRIVER" = "bcm2835-driver" ]; then
PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET bcm2835-driver"
fi
if [ "$KODIPLAYER_DRIVER" = "libamcodec" ]; then
if [ "$TARGET_KERNEL_ARCH" = "arm64" ]; then
PKG_CMAKE_OPTS_TARGET="$PKG_CMAKE_OPTS_TARGET -DHAVE_AOCEC_API=1"
else
PKG_CMAKE_OPTS_TARGET="$PKG_CMAKE_OPTS_TARGET -DHAVE_AMLOGIC_API=1"
fi
else
PKG_CMAKE_OPTS_TARGET="$PKG_CMAKE_OPTS_TARGET -DHAVE_AOCEC_API=0 -DHAVE_AMLOGIC_API=0"
fi
# libX11 and xrandr to read the sink's EDID, used to determine the PC's HDMI physical address
if [ "$DISPLAYSERVER" = "x11" ]; then
PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET libX11 libXrandr"

View File

@@ -1,16 +1,17 @@
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="swig"
PKG_VERSION="3.0.12"
PKG_SHA256="7cf9f447ae7ed1c51722efc45e7f14418d15d7a1e143ac9f09a668999f4fc94d"
PKG_VERSION="4.0.0"
PKG_SHA256="e8a39cd6437e342cdcbd5af27a9bf11b62dc9efec9248065debcb8276fcbb925"
PKG_LICENSE="GPL"
PKG_SITE="http://www.swig.org"
PKG_URL="$SOURCEFORGE_SRC/swig/$PKG_NAME-$PKG_VERSION.tar.gz"
PKG_DEPENDS_HOST="ccache:host"
PKG_LONGDESC="SWIG is a software development tool that connects programs written in C and C++ with a variety of high-level programming languages."
PKG_CONFIGURE_OPTS_HOST="--program-suffix=3.0 \
PKG_CONFIGURE_OPTS_HOST="--program-suffix=4.0 \
--with-pcre-prefix=$TOOLCHAIN \
--with-boost=no \
--without-pcre \
@@ -39,5 +40,5 @@ PKG_CONFIGURE_OPTS_HOST="--program-suffix=3.0 \
--without-d"
post_makeinstall_host() {
ln -sf swig3.0 $TOOLCHAIN/bin/swig
ln -sf swig4.0 $TOOLCHAIN/bin/swig
}

View File

@@ -15,16 +15,12 @@ PKG_LIBNAME="ppsspp_libretro.so"
PKG_LIBPATH="lib/$PKG_LIBNAME"
PKG_LIBVAR="PPSSPP_LIB"
if [ "$PROJECT" = "Amlogic" ] || [ "$PROJECT" = "RPi" ]; then
case $DEVICE in
KVIM|RPi2|S905|Odroid_C2)
PKG_ARCH_ARM="-DARMV7=ON \
if target_has_feature neon; then
PKG_ARCH_ARM="-DARMV7=ON \
-DUSING_FBDEV=ON \
-DUSING_EGL=ON \
-DUSING_GLES2=ON \
-DUSING_X11_VULKAN=OFF"
;;
esac
fi
PKG_CMAKE_OPTS_TARGET="-DLIBRETRO=ON \

View File

@@ -1,9 +1,10 @@
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="glew"
PKG_VERSION="1.13.0"
PKG_SHA256="aa25dc48ed84b0b64b8d41cdd42c8f40f149c37fa2ffa39cd97f42c78d128bc7"
PKG_VERSION="2.1.0"
PKG_SHA256="04de91e7e6763039bc11940095cd9c7f880baba82196a7765f727ac05a993c95"
PKG_LICENSE="BSD"
PKG_SITE="http://glew.sourceforge.net/"
PKG_URL="$SOURCEFORGE_SRC/glew/glew/$PKG_VERSION/$PKG_NAME-$PKG_VERSION.tgz"

View File

@@ -2,8 +2,8 @@
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="glm"
PKG_VERSION="0.9.9.2"
PKG_SHA256="209b5943d393925e1a6ecb6734e7507b8f6add25e72a605b25d0d0d382e64fd4"
PKG_VERSION="0.9.9.5"
PKG_SHA256="4fe34860ce69156f63eea6c3d84c91cadfc330353cf275ff394aef4e163cafee"
PKG_LICENSE="MIT"
PKG_SITE="https://glm.g-truc.net/"
PKG_URL="https://github.com/g-truc/glm/releases/download/$PKG_VERSION/glm-$PKG_VERSION.zip"

View File

@@ -4,8 +4,8 @@
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="libdrm"
PKG_VERSION="2.4.97"
PKG_SHA256="77d0ccda3e10d6593398edb70b1566bfe1a23a39bd3da98ace2147692eadd123"
PKG_VERSION="2.4.98"
PKG_SHA256="8be0edccaca3abde8b6bb1431b46354c7fab46e9b91cc6946ba65b51f56f1894"
PKG_LICENSE="GPL"
PKG_SITE="http://dri.freedesktop.org"
PKG_URL="http://dri.freedesktop.org/libdrm/$PKG_NAME-$PKG_VERSION.tar.bz2"

View File

@@ -8,8 +8,8 @@
# in Xorg.log
PKG_NAME="libepoxy"
PKG_VERSION="1.5.2"
PKG_SHA256="a9562386519eb3fd7f03209f279f697a8cba520d3c155d6e253c3e138beca7d8"
PKG_VERSION="1.5.3"
PKG_SHA256="002958c5528321edd53440235d3c44e71b5b1e09b9177e8daf677450b6c4433d"
PKG_LICENSE="GPL"
PKG_SITE="https://github.com/anholt/libepoxy"
PKG_URL="https://github.com/anholt/libepoxy/releases/download/$PKG_VERSION/$PKG_NAME-$PKG_VERSION.tar.xz"

View File

@@ -2,26 +2,42 @@
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="libmali"
PKG_VERSION="ad56ed30985471c0950a654cc9db1e86310650d5"
PKG_SHA256="72438ea73cf6c2e8e770545872386b66ccad200c568261e5304845547099c9ed"
PKG_VERSION="4cbf211cfd9b07854aab4978e50b1151052c6d4c"
PKG_SHA256="d3c5dd43ee0830feada4a86d32b9c794cddab29a863dfd1dddb3954f380086c5"
PKG_ARCH="arm aarch64"
PKG_LICENSE="nonfree"
PKG_SITE="https://github.com/LibreELEC/libmali"
PKG_URL="https://github.com/LibreELEC/libmali/archive/$PKG_VERSION.tar.gz"
PKG_LONGDESC="OpenGL ES user-space binary for the ARM Mali GPU family"
PKG_STAMP="$MALI_FAMILY"
PKG_DEPENDS_TARGET="libdrm"
if [ "$MALI_FAMILY" = "t620" -o "$MALI_FAMILY" = "t720" -o "$MALI_FAMILY" = "g52" ]; then
if listcontains "$MALI_FAMILY" "(t620|t720)"; then
PKG_DEPENDS_TARGET+=" wayland"
fi
PKG_CMAKE_OPTS_TARGET="-DMALI_VARIANT=$MALI_FAMILY"
if [ -n "$MALI_REVISION" ]; then
PKG_CMAKE_OPTS_TARGET+=" -DMALI_REVISION=$MALI_REVISION"
if [ "$LINUX" != "rockchip-4.4" ]; then
listcontains "$MALI_FAMILY" "4[0-9]+" && PKG_DEPENDS_TARGET+=" mali-utgard"
listcontains "$MALI_FAMILY" "t[0-9]+" && PKG_DEPENDS_TARGET+=" mali-midgard"
listcontains "$MALI_FAMILY" "g[0-9]+" && PKG_DEPENDS_TARGET+=" mali-bifrost"
fi
PKG_CMAKE_OPTS_TARGET="-DMALI_VARIANT=${MALI_FAMILY// /;}"
if [ "$TARGET_ARCH" = "aarch64" ]; then
PKG_CMAKE_OPTS_TARGET+=" -DMALI_ARCH=aarch64-linux-gnu"
fi
post_makeinstall_target() {
mkdir -p $INSTALL/usr/bin
cp -v $PKG_DIR/scripts/libmali-setup $INSTALL/usr/bin
if [ $(ls -1q $INSTALL/usr/lib/libmali-*.so | wc -l) -gt 1 ]; then
ln -sfv /var/lib/libmali/libmali.so $INSTALL/usr/lib/libmali.so
fi
}
post_install() {
enable_service libmali-setup.service
}

View File

@@ -0,0 +1,44 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)
GPUINFO=/sys/kernel/debug/mali/version
[ ! -f "$GPUINFO" ] && GPUINFO=$(find /sys/devices/platform -name gpuinfo)
echo "GPUINFO: $GPUINFO"
[ ! -f "$GPUINFO" ] && exit
GPU=$(cat $GPUINFO)
echo "GPU: $GPU"
case $GPU in
Mali-400*) LIB="libmali-utgard-400-*.so" ;;
Mali-450*) LIB="libmali-utgard-450-*.so" ;;
Mali-T60x*) LIB="libmali-midgard-t60x-*.so" ;;
Mali-T62x*) LIB="libmali-midgard-t620-*.so" ;;
Mali-T72x*) LIB="libmali-midgard-t720-*.so" ;;
Mali-T76x*r0p0*) LIB="libmali-midgard-t76x-*-r0p0-*.so" ;;
Mali-T76x*r1p0*) LIB="libmali-midgard-t76x-*-r1p0-*.so" ;;
Mali-T82x*) LIB="libmali-midgard-t82x-*.so" ;;
Mali-T83x*) LIB="libmali-midgard-t83x-*.so" ;;
Mali-T86x*) LIB="libmali-midgard-t86x-*.so" ;;
Mali-T88x*) LIB="libmali-midgard-t88x-*.so" ;;
Mali-G31*) LIB="libmali-bifrost-g31-*.so" ;;
Mali-G51*) LIB="libmali-bifrost-g51-*.so" ;;
Mali-G52*) LIB="libmali-bifrost-g52-*.so" ;;
Mali-G71*) LIB="libmali-bifrost-g71-*.so" ;;
Mali-G72*) LIB="libmali-bifrost-g72-*.so" ;;
Mali-G76*) LIB="libmali-bifrost-g76-*.so" ;;
esac
echo "LIB: $LIB"
[ -z "$LIB" ] && exit
LIBMALI=$(find /usr/lib -name $LIB)
echo "LIBMALI: $LIBMALI"
[ ! -f "$LIBMALI" ] && exit
mkdir -p /var/lib/libmali
ln -sf $LIBMALI /var/lib/libmali/libmali.so

View File

@@ -0,0 +1,12 @@
[Unit]
Description=Setup symlink for ARM Mali library
Before=graphical.target
After=multi-user.target
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/libmali-setup
[Install]
WantedBy=multi-user.target

View File

@@ -2,8 +2,8 @@
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="libraw"
PKG_VERSION="0.18.7"
PKG_SHA256="87e347c261a8e87935d9a23afd750d27676b99f540e8552314d40db0ea315771"
PKG_VERSION="0.19.2"
PKG_SHA256="400d47969292291d297873a06fb0535ccce70728117463927ddd9452aa849644"
PKG_LICENSE="LGPL"
PKG_SITE="http://www.libraw.org/"
PKG_URL="http://www.libraw.org/data/LibRaw-$PKG_VERSION.tar.gz"
@@ -17,6 +17,4 @@ PKG_CONFIGURE_OPTS_TARGET="--enable-static \
--enable-jpeg \
--disable-jasper \
--disable-lcms \
--disable-examples \
--disable-demosaic-pack-gpl2 \
--disable-demosaic-pack-gpl3"
--disable-examples"

View File

@@ -1,340 +0,0 @@
From 158398653a14e8b5884d744ec711ba31a8ceafdc Mon Sep 17 00:00:00 2001
From: Alex Tutubalin <lexa@lexa.ru>
Date: Fri, 2 Feb 2018 08:31:47 +0300
Subject: [PATCH] powf64=>libraw_powf64
---
internal/dcraw_common.cpp | 98 +++++++++++++++++++++++------------------------
2 files changed, 98 insertions(+), 98 deletions(-)
diff --git a/internal/dcraw_common.cpp b/internal/dcraw_common.cpp
index a9b45db0..66eb08e4 100644
--- a/internal/dcraw_common.cpp
+++ b/internal/dcraw_common.cpp
@@ -5849,7 +5849,7 @@ static float powf_lim(float a, float b, float limup)
{
return (b>limup || b < -limup)?0.f:powf(a,b);
}
-static float powf64(float a, float b)
+static float libraw_powf64(float a, float b)
{
return powf_lim(a,b,64.f);
}
@@ -5873,7 +5873,7 @@ static float my_roundf(float x) {
static float _CanonConvertAperture(ushort in)
{
if ((in == (ushort)0xffe0) || (in == (ushort)0x7fff)) return 0.0f;
- return powf64(2.0, in/64.0);
+ return libraw_powf64(2.0, in/64.0);
}
static float _CanonConvertEV (short in)
@@ -6336,21 +6336,21 @@ void CLASS processNikonLensData (uchar *LensData, unsigned len)
if (fabsf(imgdata.lens.makernotes.MinFocal) < 1.1f)
{
if ((imgdata.lens.nikon.NikonLensType ^ (uchar)0x01) || LensData[i + 2])
- imgdata.lens.makernotes.MinFocal = 5.0f * powf64(2.0f, (float)LensData[i + 2] / 24.0f);
+ imgdata.lens.makernotes.MinFocal = 5.0f * libraw_powf64(2.0f, (float)LensData[i + 2] / 24.0f);
if ((imgdata.lens.nikon.NikonLensType ^ (uchar)0x01) || LensData[i + 3])
- imgdata.lens.makernotes.MaxFocal = 5.0f * powf64(2.0f, (float)LensData[i + 3] / 24.0f);
+ imgdata.lens.makernotes.MaxFocal = 5.0f * libraw_powf64(2.0f, (float)LensData[i + 3] / 24.0f);
if ((imgdata.lens.nikon.NikonLensType ^ (uchar)0x01) || LensData[i + 4])
- imgdata.lens.makernotes.MaxAp4MinFocal = powf64(2.0f, (float)LensData[i + 4] / 24.0f);
+ imgdata.lens.makernotes.MaxAp4MinFocal = libraw_powf64(2.0f, (float)LensData[i + 4] / 24.0f);
if ((imgdata.lens.nikon.NikonLensType ^ (uchar)0x01) || LensData[i + 5])
- imgdata.lens.makernotes.MaxAp4MaxFocal = powf64(2.0f, (float)LensData[i + 5] / 24.0f);
+ imgdata.lens.makernotes.MaxAp4MaxFocal = libraw_powf64(2.0f, (float)LensData[i + 5] / 24.0f);
}
imgdata.lens.nikon.NikonMCUVersion = LensData[i + 6];
if (i != 2)
{
if ((LensData[i - 1]) &&
(fabsf(imgdata.lens.makernotes.CurFocal) < 1.1f))
- imgdata.lens.makernotes.CurFocal = 5.0f * powf64(2.0f, (float)LensData[i - 1] / 24.0f);
- if (LensData[i + 7]) imgdata.lens.nikon.NikonEffectiveMaxAp = powf64(2.0f, (float)LensData[i + 7] / 24.0f);
+ imgdata.lens.makernotes.CurFocal = 5.0f * libraw_powf64(2.0f, (float)LensData[i - 1] / 24.0f);
+ if (LensData[i + 7]) imgdata.lens.nikon.NikonEffectiveMaxAp = libraw_powf64(2.0f, (float)LensData[i + 7] / 24.0f);
}
imgdata.lens.makernotes.LensID =
(unsigned long long) LensData[i] << 56 |
@@ -6827,13 +6827,13 @@ void CLASS PentaxLensInfo (unsigned id, unsigned len) // tag 0x0207
if (table_buf[iLensData+9] &&
(fabs(imgdata.lens.makernotes.CurFocal) < 0.1f))
imgdata.lens.makernotes.CurFocal =
- 10*(table_buf[iLensData+9]>>2) * powf64(4, (table_buf[iLensData+9] & 0x03)-2);
+ 10*(table_buf[iLensData+9]>>2) * libraw_powf64(4, (table_buf[iLensData+9] & 0x03)-2);
if (table_buf[iLensData+10] & 0xf0)
imgdata.lens.makernotes.MaxAp4CurFocal =
- powf64(2.0f, (float)((table_buf[iLensData+10] & 0xf0) >>4)/4.0f);
+ libraw_powf64(2.0f, (float)((table_buf[iLensData+10] & 0xf0) >>4)/4.0f);
if (table_buf[iLensData+10] & 0x0f)
imgdata.lens.makernotes.MinAp4CurFocal =
- powf64(2.0f, (float)((table_buf[iLensData+10] & 0x0f) + 10)/4.0f);
+ libraw_powf64(2.0f, (float)((table_buf[iLensData+10] & 0x0f) + 10)/4.0f);
if (iLensData != 12)
{
@@ -6854,14 +6854,14 @@ void CLASS PentaxLensInfo (unsigned id, unsigned len) // tag 0x0207
if ((table_buf[iLensData+14] > 1) &&
(fabs(imgdata.lens.makernotes.MaxAp4CurFocal) < 0.7f))
imgdata.lens.makernotes.MaxAp4CurFocal =
- powf64(2.0f, (float)((table_buf[iLensData+14] & 0x7f) -1)/32.0f);
+ libraw_powf64(2.0f, (float)((table_buf[iLensData+14] & 0x7f) -1)/32.0f);
}
else if ((id != 0x12e76) && // K-5
(table_buf[iLensData+15] > 1) &&
(fabs(imgdata.lens.makernotes.MaxAp4CurFocal) < 0.7f))
{
imgdata.lens.makernotes.MaxAp4CurFocal =
- powf64(2.0f, (float)((table_buf[iLensData+15] & 0x7f) -1)/32.0f);
+ libraw_powf64(2.0f, (float)((table_buf[iLensData+15] & 0x7f) -1)/32.0f);
}
}
free(table_buf);
@@ -7349,11 +7349,11 @@ void CLASS process_Sony_0x9050 (uchar * buf, unsigned id)
{
if (buf[0])
imgdata.lens.makernotes.MaxAp4CurFocal =
- my_roundf(powf64(2.0f, ((float)SonySubstitution[buf[0]] / 8.0 - 1.06f) / 2.0f)*10.0f) / 10.0f;
+ my_roundf(libraw_powf64(2.0f, ((float)SonySubstitution[buf[0]] / 8.0 - 1.06f) / 2.0f)*10.0f) / 10.0f;
if (buf[1])
imgdata.lens.makernotes.MinAp4CurFocal =
- my_roundf(powf64(2.0f, ((float)SonySubstitution[buf[1]] / 8.0 - 1.06f) / 2.0f)*10.0f) / 10.0f;
+ my_roundf(libraw_powf64(2.0f, ((float)SonySubstitution[buf[1]] / 8.0 - 1.06f) / 2.0f)*10.0f) / 10.0f;
}
if (imgdata.lens.makernotes.CameraMount != LIBRAW_MOUNT_FixedLens)
@@ -7363,7 +7363,7 @@ void CLASS process_Sony_0x9050 (uchar * buf, unsigned id)
lid = SonySubstitution[buf[0x3d]] << 8 |
SonySubstitution[buf[0x3c]];
imgdata.lens.makernotes.CurAp =
- powf64(2.0f, ((float)lid/256.0f - 16.0f) / 2.0f);
+ libraw_powf64(2.0f, ((float)lid/256.0f - 16.0f) / 2.0f);
}
if (buf[0x105] &&
(imgdata.lens.makernotes.LensMount != LIBRAW_MOUNT_Canon_EF) &&
@@ -7749,7 +7749,7 @@ void CLASS parse_makernote_0xc634(int base, int uptag, unsigned dng_writer)
{
unsigned char cc;
fread(&cc, 1, 1, ifp);
- iso_speed = (int)(100.0 * powf64(2.0, (double)(cc) / 12.0 - 5.0));
+ iso_speed = (int)(100.0 * libraw_powf64(2.0, (double)(cc) / 12.0 - 5.0));
break;
}
}
@@ -7794,7 +7794,7 @@ void CLASS parse_makernote_0xc634(int base, int uptag, unsigned dng_writer)
}
break;
case 0x1002:
- imgdata.lens.makernotes.CurAp = powf64(2.0f, getreal(type)/2);
+ imgdata.lens.makernotes.CurAp = libraw_powf64(2.0f, getreal(type)/2);
break;
case 0x20100102:
stmread(imgdata.shootinginfo.InternalBodySerial, len, ifp);
@@ -7821,10 +7821,10 @@ void CLASS parse_makernote_0xc634(int base, int uptag, unsigned dng_writer)
stmread(imgdata.lens.makernotes.Lens,len, ifp);
break;
case 0x20100205:
- imgdata.lens.makernotes.MaxAp4MinFocal = powf64(sqrt(2.0f), get2() / 256.0f);
+ imgdata.lens.makernotes.MaxAp4MinFocal = libraw_powf64(sqrt(2.0f), get2() / 256.0f);
break;
case 0x20100206:
- imgdata.lens.makernotes.MaxAp4MaxFocal = powf64(sqrt(2.0f), get2() / 256.0f);
+ imgdata.lens.makernotes.MaxAp4MaxFocal = libraw_powf64(sqrt(2.0f), get2() / 256.0f);
break;
case 0x20100207:
imgdata.lens.makernotes.MinFocal = (float)get2();
@@ -7835,7 +7835,7 @@ void CLASS parse_makernote_0xc634(int base, int uptag, unsigned dng_writer)
imgdata.lens.makernotes.MaxFocal = imgdata.lens.makernotes.MinFocal;
break;
case 0x2010020a:
- imgdata.lens.makernotes.MaxAp4CurFocal = powf64(sqrt(2.0f), get2() / 256.0f);
+ imgdata.lens.makernotes.MaxAp4CurFocal = libraw_powf64(sqrt(2.0f), get2() / 256.0f);
break;
case 0x20100301:
imgdata.lens.makernotes.TeleconverterID = fgetc(ifp) << 8;
@@ -8144,7 +8144,7 @@ void CLASS parse_makernote_0xc634(int base, int uptag, unsigned dng_writer)
lid = (((ushort)table_buf[2])<<8) |
((ushort)table_buf[3]);
imgdata.lens.makernotes.CurAp =
- powf64(2.0f, ((float)lid/8.0f-1.0f)/2.0f);
+ libraw_powf64(2.0f, ((float)lid/8.0f-1.0f)/2.0f);
}
break;
case 1536:
@@ -8675,7 +8675,7 @@ void CLASS parse_makernote (int base, int uptag)
}
break;
case 0x1002:
- imgdata.lens.makernotes.CurAp = powf64(2.0f, getreal(type)/2);
+ imgdata.lens.makernotes.CurAp = libraw_powf64(2.0f, getreal(type)/2);
break;
case 0x20401112:
imgdata.makernotes.olympus.OlympusCropID = get2();
@@ -8709,10 +8709,10 @@ void CLASS parse_makernote (int base, int uptag)
stmread(imgdata.lens.makernotes.Lens, len, ifp);
break;
case 0x20100205:
- imgdata.lens.makernotes.MaxAp4MinFocal = powf64(sqrt(2.0f), get2() / 256.0f);
+ imgdata.lens.makernotes.MaxAp4MinFocal = libraw_powf64(sqrt(2.0f), get2() / 256.0f);
break;
case 0x20100206:
- imgdata.lens.makernotes.MaxAp4MaxFocal = powf64(sqrt(2.0f), get2() / 256.0f);
+ imgdata.lens.makernotes.MaxAp4MaxFocal = libraw_powf64(sqrt(2.0f), get2() / 256.0f);
break;
case 0x20100207:
imgdata.lens.makernotes.MinFocal = (float)get2();
@@ -8723,7 +8723,7 @@ void CLASS parse_makernote (int base, int uptag)
imgdata.lens.makernotes.MaxFocal = imgdata.lens.makernotes.MinFocal;
break;
case 0x2010020a:
- imgdata.lens.makernotes.MaxAp4CurFocal = powf64(sqrt(2.0f), get2() / 256.0f);
+ imgdata.lens.makernotes.MaxAp4CurFocal = libraw_powf64(sqrt(2.0f), get2() / 256.0f);
break;
case 0x20100301:
imgdata.lens.makernotes.TeleconverterID = fgetc(ifp) << 8;
@@ -9150,7 +9150,7 @@ void CLASS parse_makernote (int base, int uptag)
lid = (((ushort)table_buf[2])<<8) |
((ushort)table_buf[3]);
imgdata.lens.makernotes.CurAp =
- powf64(2.0f, ((float)lid/8.0f-1.0f)/2.0f);
+ libraw_powf64(2.0f, ((float)lid/8.0f-1.0f)/2.0f);
}
break;
case 1536:
@@ -9248,19 +9248,19 @@ void CLASS parse_makernote (int base, int uptag)
{
unsigned char cc;
fread(&cc,1,1,ifp);
- iso_speed = int(100.0 * powf64(2.0f,float(cc)/12.0-5.0));
+ iso_speed = int(100.0 * libraw_powf64(2.0f,float(cc)/12.0-5.0));
}
if (tag == 4 && len > 26 && len < 35) {
if ((i=(get4(),get2())) != 0x7fff && (!iso_speed || iso_speed == 65535))
- iso_speed = 50 * powf64(2.0, i/32.0 - 4);
+ iso_speed = 50 * libraw_powf64(2.0, i/32.0 - 4);
#ifdef LIBRAW_LIBRARY_BUILD
get4();
#else
if ((i=(get2(),get2())) != 0x7fff && !aperture)
- aperture = powf64(2.0, i/64.0);
+ aperture = libraw_powf64(2.0, i/64.0);
#endif
if ((i=get2()) != 0xffff && !shutter)
- shutter = powf64(2.0, (short) i/-32.0);
+ shutter = libraw_powf64(2.0, (short) i/-32.0);
wbi = (get2(),get2());
shot_order = (get2(),get2());
}
@@ -9854,7 +9854,7 @@ void CLASS parse_exif (int base)
imgdata.lens.Lens[0] = 0;
break;
case 0x9205:
- imgdata.lens.EXIF_MaxAp = powf64(2.0f, (getreal(type) / 2.0f));
+ imgdata.lens.EXIF_MaxAp = libraw_powf64(2.0f, (getreal(type) / 2.0f));
break;
#endif
case 33434: tiff_ifd[tiff_nifds-1].t_shutter =
@@ -9869,11 +9869,11 @@ void CLASS parse_exif (int base)
case 36868: get_timestamp(0); break;
case 37377: if ((expo = -getreal(type)) < 128 && shutter == 0.)
tiff_ifd[tiff_nifds-1].t_shutter =
- shutter = powf64(2.0, expo);
+ shutter = libraw_powf64(2.0, expo);
break;
case 37378: // 0x9202 ApertureValue
if ((fabs(ape = getreal(type))<256.0) && (!aperture))
- aperture = powf64(2.0, ape/2);
+ aperture = libraw_powf64(2.0, ape/2);
break;
case 37385: flash_used = getreal(type); break;
case 37386: focal_len = getreal(type); break;
@@ -10769,7 +10769,7 @@ int CLASS parse_tiff_ifd (int base)
imgdata.lens.Lens[0] = 0;
break;
case 0x9205:
- imgdata.lens.EXIF_MaxAp = powf64(2.0f, (getreal(type) / 2.0f));
+ imgdata.lens.EXIF_MaxAp = libraw_powf64(2.0f, (getreal(type) / 2.0f));
break;
// IB end
#endif
@@ -11804,22 +11804,22 @@ void CLASS parse_ciff (int offset, int length, int depth)
thumb_length = len;
}
if (type == 0x1818) {
- shutter = powf64(2.0f, -int_to_float((get4(),get4())));
- aperture = powf64(2.0f, int_to_float(get4())/2);
+ shutter = libraw_powf64(2.0f, -int_to_float((get4(),get4())));
+ aperture = libraw_powf64(2.0f, int_to_float(get4())/2);
#ifdef LIBRAW_LIBRARY_BUILD
imgdata.lens.makernotes.CurAp = aperture;
#endif
}
if (type == 0x102a) {
// iso_speed = pow (2.0, (get4(),get2())/32.0 - 4) * 50;
- iso_speed = powf64(2.0f, ((get2(),get2()) + get2())/32.0f - 5.0f) * 100.0f;
+ iso_speed = libraw_powf64(2.0f, ((get2(),get2()) + get2())/32.0f - 5.0f) * 100.0f;
#ifdef LIBRAW_LIBRARY_BUILD
aperture = _CanonConvertAperture((get2(),get2()));
imgdata.lens.makernotes.CurAp = aperture;
#else
- aperture = powf64(2.0, (get2(),(short)get2())/64.0);
+ aperture = libraw_powf64(2.0, (get2(),(short)get2())/64.0);
#endif
- shutter = powf64(2.0,-((short)get2())/32.0);
+ shutter = libraw_powf64(2.0,-((short)get2())/32.0);
wbi = (get2(),get2());
if (wbi > 17) wbi = 0;
fseek (ifp, 32, SEEK_CUR);
@@ -12024,8 +12024,8 @@ void CLASS parse_phase_one (int base)
setPhaseOneFeatures(unique_id);
break;
case 0x0401:
- if (type == 4) imgdata.lens.makernotes.CurAp = powf64(2.0f, (int_to_float(data)/2.0f));
- else imgdata.lens.makernotes.CurAp = powf64(2.0f, (getreal(type)/2.0f));
+ if (type == 4) imgdata.lens.makernotes.CurAp = libraw_powf64(2.0f, (int_to_float(data)/2.0f));
+ else imgdata.lens.makernotes.CurAp = libraw_powf64(2.0f, (getreal(type)/2.0f));
break;
case 0x0403:
if (type == 4) imgdata.lens.makernotes.CurFocal = int_to_float(data);
@@ -12039,16 +12039,16 @@ void CLASS parse_phase_one (int base)
break;
case 0x0414:
if (type == 4) {
- imgdata.lens.makernotes.MaxAp4CurFocal = powf64(2.0f, (int_to_float(data)/2.0f));
+ imgdata.lens.makernotes.MaxAp4CurFocal = libraw_powf64(2.0f, (int_to_float(data)/2.0f));
} else {
- imgdata.lens.makernotes.MaxAp4CurFocal = powf64(2.0f, (getreal(type) / 2.0f));
+ imgdata.lens.makernotes.MaxAp4CurFocal = libraw_powf64(2.0f, (getreal(type) / 2.0f));
}
break;
case 0x0415:
if (type == 4) {
- imgdata.lens.makernotes.MinAp4CurFocal = powf64(2.0f, (int_to_float(data)/2.0f));
+ imgdata.lens.makernotes.MinAp4CurFocal = libraw_powf64(2.0f, (int_to_float(data)/2.0f));
} else {
- imgdata.lens.makernotes.MinAp4CurFocal = powf64(2.0f, (getreal(type) / 2.0f));
+ imgdata.lens.makernotes.MinAp4CurFocal = libraw_powf64(2.0f, (getreal(type) / 2.0f));
}
break;
case 0x0416:
@@ -14237,15 +14237,15 @@ void CLASS identify()
case 18: iso_speed = 320; break;
case 19: iso_speed = 400; break;
}
- shutter = powf64(2.0f, (((float)get4())/8.0f)) / 16000.0f;
+ shutter = libraw_powf64(2.0f, (((float)get4())/8.0f)) / 16000.0f;
FORC4 cam_mul[c ^ (c >> 1)] = get4();
fseek (ifp, 88, SEEK_SET);
- aperture = powf64(2.0f, ((float)get4())/16.0f);
+ aperture = libraw_powf64(2.0f, ((float)get4())/16.0f);
fseek (ifp, 112, SEEK_SET);
focal_len = get4();
#ifdef LIBRAW_LIBRARY_BUILD
fseek (ifp, 104, SEEK_SET);
- imgdata.lens.makernotes.MaxAp4CurFocal = powf64(2.0f, ((float)get4())/16.0f);
+ imgdata.lens.makernotes.MaxAp4CurFocal = libraw_powf64(2.0f, ((float)get4())/16.0f);
fseek (ifp, 124, SEEK_SET);
stmread(imgdata.lens.makernotes.Lens, 32, ifp);
imgdata.lens.makernotes.CameraMount = LIBRAW_MOUNT_Contax_N;

View File

@@ -3,8 +3,8 @@
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="mesa"
PKG_VERSION="19.0.3"
PKG_SHA256="46a8b46bfbd3f8a3eccf3edcfa94e68f13bd6429b71ed8b57a24c6a0543c824e"
PKG_VERSION="19.1.0"
PKG_SHA256="0cb9a6dbc7019dd99be581488ff05ff56f49445cab82c28f0e610b2a4221620f"
PKG_LICENSE="OSS"
PKG_SITE="http://www.mesa3d.org/"
PKG_URL="https://github.com/mesa3d/mesa/archive/mesa-$PKG_VERSION.tar.gz"

View File

@@ -1,68 +0,0 @@
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
PKG_NAME="opengl-meson"
PKG_ARCH="arm aarch64"
PKG_LICENSE="nonfree"
PKG_SITE="http://openlinux.amlogic.com:8000/download/ARM/filesystem/"
case $MESON_FAMILY in
8)
PKG_VERSION="8-r5p1-02rel0-armhf"
PKG_SHA256="717739c9f65f6782e3185aad09d01f228873315f70f9a58c0526b9e63a6e386f"
;;
6)
PKG_VERSION="6-r5p1-02rel0-armhf"
PKG_SHA256="de38a1fa23191bd5de5c85c66627d4537775ee4634b71baa8d0e241b8b9d4ba2"
;;
gxbb)
if [ "$TARGET_ARCH" = "arm" ]; then
PKG_VERSION="8-r5p1-02rel0-armhf"
PKG_SHA256="717739c9f65f6782e3185aad09d01f228873315f70f9a58c0526b9e63a6e386f"
else
PKG_VERSION="gxbb-r5p1-01rel0"
fi
;;
esac
PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.xz"
PKG_DEPENDS_TARGET="toolchain"
PKG_LONGDESC="OpenGL ES pre-compiled libraries for Mali GPUs found in Amlogic Meson SoCs."
PKG_TOOLCHAIN="manual"
makeinstall_target() {
mkdir -p $SYSROOT_PREFIX/usr/include
cp -PR usr/include/* $SYSROOT_PREFIX/usr/include
mkdir -p $SYSROOT_PREFIX/usr/lib
cp -PR usr/lib/libMali.so $SYSROOT_PREFIX/usr/lib
ln -sf libMali.so $SYSROOT_PREFIX/usr/lib/libEGL.so.1.4
ln -sf libEGL.so.1.4 $SYSROOT_PREFIX/usr/lib/libEGL.so.1
ln -sf libEGL.so.1 $SYSROOT_PREFIX/usr/lib/libEGL.so
ln -sf libMali.so $SYSROOT_PREFIX/usr/lib/libGLESv1_CM.so.1.1
ln -sf libGLESv1_CM.so.1.1 $SYSROOT_PREFIX/usr/lib/libGLESv1_CM.so.1
ln -sf libGLESv1_CM.so.1 $SYSROOT_PREFIX/usr/lib/libGLESv1_CM.so
ln -sf libMali.so $SYSROOT_PREFIX/usr/lib/libGLESv2.so.2.0
ln -sf libGLESv2.so.2.0 $SYSROOT_PREFIX/usr/lib/libGLESv2.so.2
ln -sf libGLESv2.so.2 $SYSROOT_PREFIX/usr/lib/libGLESv2.so
mkdir -p $INSTALL/usr/lib
cp -PR usr/lib/libMali.so $INSTALL/usr/lib
ln -sf libMali.so $INSTALL/usr/lib/libEGL.so.1.4
ln -sf libEGL.so.1.4 $INSTALL/usr/lib/libEGL.so.1
ln -sf libEGL.so.1 $INSTALL/usr/lib/libEGL.so
ln -sf libMali.so $INSTALL/usr/lib/libGLESv1_CM.so.1.1
ln -sf libGLESv1_CM.so.1.1 $INSTALL/usr/lib/libGLESv1_CM.so.1
ln -sf libGLESv1_CM.so.1 $INSTALL/usr/lib/libGLESv1_CM.so
ln -sf libMali.so $INSTALL/usr/lib/libGLESv2.so.2.0
ln -sf libGLESv2.so.2.0 $INSTALL/usr/lib/libGLESv2.so.2
ln -sf libGLESv2.so.2 $INSTALL/usr/lib/libGLESv2.so
}
post_install() {
enable_service unbind-console.service
}

View File

@@ -1,11 +0,0 @@
[Unit]
Description=Unbind framebuffer console
ConditionPathExists=/sys/class/vtconsole/vtcon1/bind
[Service]
Type=oneshot
ExecStart=/bin/sh -c 'echo 0 > /sys/class/vtconsole/vtcon1/bind'
[Install]
WantedBy=graphical.target

View File

@@ -4,8 +4,8 @@
PKG_NAME="Python2"
# When changing PKG_VERSION remember to sync PKG_PYTHON_VERSION!
PKG_VERSION="2.7.15"
PKG_SHA256="22d9b1ac5b26135ad2b8c2901a9413537e08749a753356ee913c84dbd2df5574"
PKG_VERSION="2.7.16"
PKG_SHA256="f222ef602647eecb6853681156d32de4450a2c39f4de93bd5b20235f2e660ed7"
PKG_LICENSE="OSS"
PKG_SITE="http://www.python.org/"
PKG_URL="http://www.python.org/ftp/python/$PKG_VERSION/${PKG_NAME::-1}-$PKG_VERSION.tar.xz"

View File

@@ -3,8 +3,8 @@
PKG_NAME="Python3"
# When changing PKG_VERSION remember to sync PKG_PYTHON_VERSION!
PKG_VERSION="3.7.2"
PKG_SHA256="d83fe8ce51b1bb48bbcf0550fd265b9a75cdfdfa93f916f9e700aef8444bf1bb"
PKG_VERSION="3.7.3"
PKG_SHA256="da60b54064d4cfcd9c26576f6df2690e62085123826cff2e667e72a91952d318"
PKG_LICENSE="OSS"
PKG_SITE="http://www.python.org/"
PKG_URL="http://www.python.org/ftp/python/$PKG_VERSION/${PKG_NAME::-1}-$PKG_VERSION.tar.xz"

View File

@@ -2,8 +2,8 @@
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="crazycat"
PKG_VERSION="c59ee3624b7f6bf5bdaeec7c73c69ef4938d3952"
PKG_SHA256="00b9fade221327e1aed8f06ef0477f2761b57cc5fe6310c4536e361b17a595d1"
PKG_VERSION="532599d255411a24f93b585a92b1b0c49e2012f7"
PKG_SHA256="0e3addc3562057a77edefdde0052a78aec145c4dd5b737b53dd25ce389b95093"
PKG_LICENSE="GPL"
PKG_SITE="https://bitbucket.org/CrazyCat/media_build"
PKG_URL="https://bitbucket.org/CrazyCat/media_build/get/$PKG_VERSION.tar.gz"

View File

@@ -1,2 +0,0 @@
100
- Initial add-on

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

View File

@@ -1,51 +0,0 @@
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="crazycat_aml"
PKG_VERSION="835dc72da3ee63df7f4057bd0507887454c005d1"
PKG_SHA256="3d68d368a9eda15688c6686caa854a045a753740ec93553d80a4bcfc14c2950a"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="https://bitbucket.org/CrazyCat/media_build"
PKG_URL="https://bitbucket.org/CrazyCat/media_build/get/$PKG_VERSION.tar.gz"
PKG_DEPENDS_TARGET="toolchain linux media_tree_cc_aml"
PKG_NEED_UNPACK="$LINUX_DEPENDS media_tree_cc_aml"
PKG_SECTION="driver.dvb"
PKG_LONGDESC="DVB drivers from the latest kernel"
PKG_IS_ADDON="embedded"
PKG_IS_KERNEL_PKG="yes"
PKG_ADDON_IS_STANDALONE="yes"
PKG_ADDON_NAME="DVB drivers from the latest kernel"
PKG_ADDON_TYPE="xbmc.service"
PKG_ADDON_VERSION="${ADDON_VERSION}.${PKG_REV}"
pre_make_target() {
export KERNEL_VER=$(get_module_dir)
export LDFLAGS=""
}
make_target() {
cp -RP $(get_build_dir media_tree_cc_aml)/* $PKG_BUILD/linux
# compile modules
echo "obj-y += video_dev/" >> "$PKG_BUILD/linux/drivers/media/platform/meson/Makefile"
echo "obj-y += wetek/" >> "$PKG_BUILD/linux/drivers/media/platform/meson/Makefile"
# make config all
kernel_make VER=$KERNEL_VER SRCDIR=$(kernel_path) allyesconfig
# deactivate several build options
sed '/CONFIG_VIDEO_S5C73M3=m/d' -i $PKG_BUILD/v4l/.config
# enable AML drivers
echo "CONFIG_IR_MESON=m" >> $PKG_BUILD/v4l/.config
echo "CONFIG_V4L_AMLOGIC_VIDEO=m" >> $PKG_BUILD/v4l/.config
echo "CONFIG_VIDEOBUF_RESOURCE=m" >> $PKG_BUILD/v4l/.config
kernel_make VER=$KERNEL_VER SRCDIR=$(kernel_path)
}
makeinstall_target() {
install_driver_addon_files "$PKG_BUILD/v4l/"
}

View File

@@ -1,13 +0,0 @@
[Patch] without this patch you need to install libproc-processtable-perl at host system
--- a/v4l/Makefile
+++ b/v4l/Makefile
@@ -51,7 +51,7 @@
@echo Kernel build directory is $(OUTDIR)
$(MAKE) -C ../linux apply_patches
$(MAKE) -C $(OUTDIR) SUBDIRS=$(PWD) $(MYCFLAGS) modules
- ./scripts/rmmod.pl check
+# ./scripts/rmmod.pl check
# $(MAKE) checkpatch
mismatch:: prepare firmware

View File

@@ -1,13 +0,0 @@
--- a/v4l/scripts/make_kconfig.pl
+++ b/v4l/scripts/make_kconfig.pl
@@ -626,6 +626,10 @@ ($$)
close OUT;
# These options should default to off
+disable_config('MEDIA_ANALOG_TV_SUPPORT');
+disable_config('MEDIA_CAMERA_SUPPORT');
+disable_config('MEDIA_CEC_SUPPORT');
+disable_config('SOC_CAMERA');
disable_config('DVB_AV7110_FIRMWARE');
disable_config('DVB_CINERGYT2_TUNING');
disable_config('VIDEO_HELPER_CHIPS_AUTO');

View File

@@ -1,7 +0,0 @@
--- /dev/null
+++ b/v4l/config-mycompat.h
@@ -0,0 +1,3 @@
+#undef NEED_PFN_TO_PHYS
+#undef NEED_WRITEL_RELAXED
+#undef NEED_PM_RUNTIME_GET
--

View File

@@ -1,2 +0,0 @@
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)

View File

@@ -2,8 +2,8 @@
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="media_tree"
PKG_VERSION="2019-01-10-15d90a6ae98e"
PKG_SHA256="cf170bfc0e78959c6b289db6f4cf7ec7b400dd4704f45909e1535a935702e8bc"
PKG_VERSION="2017-08-20-3b6471c7becd"
PKG_SHA256="7fa8d0be68991d1bc6a244888cf2308d2f6152748c1d417efa0784d101ba262b"
PKG_LICENSE="GPL"
PKG_SITE="https://git.linuxtv.org/media_tree.git"
PKG_URL="http://linuxtv.org/downloads/drivers/linux-media-${PKG_VERSION}.tar.bz2"
@@ -15,7 +15,9 @@ PKG_TOOLCHAIN="manual"
unpack() {
mkdir -p $PKG_BUILD/
tar -xf $SOURCES/$PKG_NAME/$PKG_NAME-$PKG_VERSION.tar.bz2 -C $PKG_BUILD/
}
post_unpack() {
# hack/workaround for borked upstream kernel/media_build
# without removing atomisp there a lot additional includes that
# slowdown build process after modpost from 3min to 6min

View File

@@ -2,7 +2,7 @@ Combined patches from https://github.com/b-rad-NDi/Ubuntu-media-tree-kernel-buil
to support all kind of Hauppauge DVB cards.
diff --git a/drivers/media/dvb-frontends/lgdt3306a.c b/drivers/media/dvb-frontends/lgdt3306a.c
index 0e1f5da..409db8e 100644
index 99c6289..ceaf617 100644
--- a/drivers/media/dvb-frontends/lgdt3306a.c
+++ b/drivers/media/dvb-frontends/lgdt3306a.c
@@ -855,6 +855,7 @@ static int lgdt3306a_fe_sleep(struct dvb_frontend *fe)
@@ -48,7 +48,7 @@ index 0e1f5da..409db8e 100644
return ret;
}
diff --git a/drivers/media/dvb-frontends/si2168.c b/drivers/media/dvb-frontends/si2168.c
index 324493e..4d43424 100644
index 17301c6..9b021ac 100644
--- a/drivers/media/dvb-frontends/si2168.c
+++ b/drivers/media/dvb-frontends/si2168.c
@@ -18,6 +18,10 @@
@@ -420,7 +420,7 @@ index 324493e..4d43424 100644
cmd.wlen = 6;
cmd.rlen = 4;
ret = si2168_cmd_execute(client, &cmd);
@@ -714,6 +960,11 @@ static const struct dvb_frontend_ops si2168_ops = {
@@ -717,6 +963,11 @@ static const struct dvb_frontend_ops si2168_ops = {
.set_frontend = si2168_set_frontend,
.read_status = si2168_read_status,
@@ -433,40 +433,30 @@ index 324493e..4d43424 100644
static int si2168_probe(struct i2c_client *client,
diff --git a/drivers/media/i2c/cx25840/cx25840-core.c b/drivers/media/i2c/cx25840/cx25840-core.c
index b168bf3..1f06119 100644
index f071a94..14ce009 100644
--- a/drivers/media/i2c/cx25840/cx25840-core.c
+++ b/drivers/media/i2c/cx25840/cx25840-core.c
@@ -684,14 +684,14 @@ static void cx23885_initialize(struct i2c_client *client)
*/
cx25840_write4(client, 0x404, 0x0010253e);
- /* CC on - Undocumented Register */
+ /* CC on - VBI_LINE_CTRL3, FLD_VBI_MD_LINE12 */
cx25840_write(client, state->vbi_regs_offset + 0x42f, 0x66);
/* HVR-1250 / HVR1850 DIF related */
/* Power everything up */
cx25840_write4(client, 0x130, 0x0);
- /* Undocumented */
+ /* SRC_COMB_CFG */
if (is_cx23888(state))
cx25840_write4(client, 0x454, 0x6628021F);
else
@@ -1127,16 +1127,25 @@ static int set_input(struct i2c_client *client, enum cx25840_video_input vid_inp
@@ -1495,23 +1495,25 @@ static int set_input(struct i2c_client *client,
cx25840_write4(client, 0x410, 0xffff0dbf);
cx25840_write4(client, 0x414, 0x00137d03);
- cx25840_write4(client, state->vbi_regs_offset + 0x42c, 0x42600000);
- cx25840_write4(client, state->vbi_regs_offset + 0x430, 0x0000039b);
- cx25840_write4(client, state->vbi_regs_offset + 0x438, 0x00000000);
-
- cx25840_write4(client, state->vbi_regs_offset + 0x440, 0xF8E3E824);
- cx25840_write4(client, state->vbi_regs_offset + 0x444, 0x401040dc);
- cx25840_write4(client, state->vbi_regs_offset + 0x448, 0xcd3f02a0);
- cx25840_write4(client, state->vbi_regs_offset + 0x44c, 0x161f1000);
- cx25840_write4(client, state->vbi_regs_offset + 0x450, 0x00000802);
- cx25840_write4(client, state->vbi_regs_offset + 0x42c,
- 0x42600000);
- cx25840_write4(client, state->vbi_regs_offset + 0x430,
- 0x0000039b);
- cx25840_write4(client, state->vbi_regs_offset + 0x438,
- 0x00000000);
-
- cx25840_write4(client, state->vbi_regs_offset + 0x440,
- 0xF8E3E824);
- cx25840_write4(client, state->vbi_regs_offset + 0x444,
- 0x401040dc);
- cx25840_write4(client, state->vbi_regs_offset + 0x448,
- 0xcd3f02a0);
- cx25840_write4(client, state->vbi_regs_offset + 0x44c,
- 0x161f1000);
- cx25840_write4(client, state->vbi_regs_offset + 0x450,
- 0x00000802);
+ /* These are not VBI controls */
+ if (is_cx23888(state)) {
+ /* 888 MISC_TIM_CTRL */
@@ -486,17 +476,9 @@ index b168bf3..1f06119 100644
+ /* 888 HTL_CTRL */
+ cx25840_write4(client, 0x450, 0x00000802);
+ }
cx25840_write4(client, 0x91c, 0x01000000);
cx25840_write4(client, 0x8e0, 0x03063870);
cx25840_write4(client, 0x8d4, 0x7FFF0024);
@@ -1743,6 +1752,7 @@ static int cx25840_s_stream(struct v4l2_subdev *sd, int enable)
if (is_cx2388x(state) || is_cx231xx(state))
return 0;
+ /* PIN_CTRL1 */
if (enable) {
v = cx25840_read(client, 0x115) | 0x0c;
cx25840_write(client, 0x115, v);
diff --git a/drivers/media/pci/cx23885/cx23885-cards.c b/drivers/media/pci/cx23885/cx23885-cards.c
index ed3210d..9598b99 100644
--- a/drivers/media/pci/cx23885/cx23885-cards.c
@@ -589,10 +571,10 @@ index ed3210d..9598b99 100644
.vmux = CX25840_VIN7_CH3 |
CX25840_VIN4_CH2 |
diff --git a/drivers/media/pci/cx23885/cx23885-dvb.c b/drivers/media/pci/cx23885/cx23885-dvb.c
index 0d0929c..0366c4d 100644
index e2e63f0..aea7738 100644
--- a/drivers/media/pci/cx23885/cx23885-dvb.c
+++ b/drivers/media/pci/cx23885/cx23885-dvb.c
@@ -2382,6 +2382,16 @@ static int dvb_register(struct cx23885_tsport *port)
@@ -2383,6 +2383,16 @@ static int dvb_register(struct cx23885_tsport *port)
goto frontend_detach;
}
port->i2c_client_tuner = client_tuner;
@@ -609,7 +591,7 @@ index 0d0929c..0366c4d 100644
break;
/* port c - terrestrial/cable */
@@ -2471,6 +2481,16 @@ static int dvb_register(struct cx23885_tsport *port)
@@ -2472,6 +2482,16 @@ static int dvb_register(struct cx23885_tsport *port)
goto frontend_detach;
}
port->i2c_client_tuner = client_tuner;
@@ -626,7 +608,7 @@ index 0d0929c..0366c4d 100644
break;
/* port c - terrestrial/cable */
@@ -2542,6 +2562,11 @@ static int dvb_register(struct cx23885_tsport *port)
@@ -2543,6 +2563,11 @@ static int dvb_register(struct cx23885_tsport *port)
goto frontend_detach;
}
port->i2c_client_tuner = client_tuner;
@@ -768,7 +750,7 @@ index 168178c..6d6e7fb 100644
break;
default:
diff --git a/drivers/media/tuners/si2157.c b/drivers/media/tuners/si2157.c
index d389f1f..b93f333 100644
index d389f1f..2563ab4 100644
--- a/drivers/media/tuners/si2157.c
+++ b/drivers/media/tuners/si2157.c
@@ -1,5 +1,5 @@
@@ -833,7 +815,25 @@ index d389f1f..b93f333 100644
/* power up */
if (dev->chiptype == SI2157_CHIPTYPE_SI2146) {
memcpy(cmd.args, "\xc0\x05\x01\x00\x00\x0b\x00\x00\x01", 9);
@@ -230,6 +235,45 @@ skip_fw_download:
@@ -138,6 +143,7 @@ static int si2157_init(struct dvb_frontend *fe)
chip_id = cmd.args[1] << 24 | cmd.args[2] << 16 | cmd.args[3] << 8 |
cmd.args[4] << 0;
+ #define SI2177_A30 ('A' << 24 | 77 << 16 | '3' << 8 | '0' << 0)
#define SI2158_A20 ('A' << 24 | 58 << 16 | '2' << 8 | '0' << 0)
#define SI2148_A20 ('A' << 24 | 48 << 16 | '2' << 8 | '0' << 0)
#define SI2157_A30 ('A' << 24 | 57 << 16 | '3' << 8 | '0' << 0)
@@ -153,6 +159,9 @@ static int si2157_init(struct dvb_frontend *fe)
case SI2141_A10:
fw_name = SI2141_A10_FIRMWARE;
break;
+ case SI2177_A30:
+ fw_name = SI2157_A30_FIRMWARE;
+ break;
case SI2157_A30:
case SI2147_A30:
case SI2146_A10:
@@ -230,6 +239,45 @@ skip_fw_download:
dev_info(&client->dev, "firmware version: %c.%c.%d\n",
cmd.args[6], cmd.args[7], cmd.args[8]);
@@ -879,7 +879,7 @@ index d389f1f..b93f333 100644
warm:
/* init statistics in order signal app which are supported */
c->strength.len = 1;
@@ -274,6 +318,84 @@ err:
@@ -274,6 +322,84 @@ err:
return ret;
}
@@ -964,7 +964,7 @@ index d389f1f..b93f333 100644
static int si2157_set_params(struct dvb_frontend *fe)
{
struct i2c_client *client = fe->tuner_priv;
@@ -344,7 +466,7 @@ static int si2157_set_params(struct dvb_frontend *fe)
@@ -344,7 +470,7 @@ static int si2157_set_params(struct dvb_frontend *fe)
if (ret)
goto err;
@@ -973,7 +973,7 @@ index d389f1f..b93f333 100644
if (if_frequency != dev->if_frequency) {
memcpy(cmd.args, "\x14\x00\x06\x07", 4);
cmd.args[4] = (if_frequency / 1000) & 0xff;
@@ -358,7 +480,7 @@ static int si2157_set_params(struct dvb_frontend *fe)
@@ -358,7 +484,7 @@ static int si2157_set_params(struct dvb_frontend *fe)
dev->if_frequency = if_frequency;
}
@@ -982,7 +982,7 @@ index d389f1f..b93f333 100644
memcpy(cmd.args, "\x41\x00\x00\x00\x00\x00\x00\x00", 8);
cmd.args[4] = (c->frequency >> 0) & 0xff;
cmd.args[5] = (c->frequency >> 8) & 0xff;
@@ -370,24 +492,298 @@ static int si2157_set_params(struct dvb_frontend *fe)
@@ -370,24 +496,298 @@ static int si2157_set_params(struct dvb_frontend *fe)
if (ret)
goto err;
@@ -991,15 +991,15 @@ index d389f1f..b93f333 100644
+
+ si2157_tune_wait(client, 1); /* wait to complete, ignore any errors */
+
+ return 0;
+err:
return 0;
err:
+ dev->bandwidth = 0;
+ dev->frequency = 0;
+ dev->if_frequency = 0;
+ dev_dbg(&client->dev, "failed=%d\n", ret);
+ return ret;
+}
+
dev_dbg(&client->dev, "failed=%d\n", ret);
return ret;
}
+static int si2157_set_analog_params(struct dvb_frontend *fe,
+ struct analog_parameters *params)
+{
@@ -1202,15 +1202,15 @@ index d389f1f..b93f333 100644
+
+ si2157_tune_wait(client, 0); /* wait to complete, ignore any errors */
+
return 0;
err:
+ return 0;
+err:
+ dev->bandwidth = 0;
+ dev->frequency = 0;
+ dev->if_frequency = 0;
dev_dbg(&client->dev, "failed=%d\n", ret);
return ret;
}
+ dev_dbg(&client->dev, "failed=%d\n", ret);
+ return ret;
+}
+
+static int si2157_get_frequency(struct dvb_frontend *fe, u32 *frequency)
+{
+ struct i2c_client *client = fe->tuner_priv;
@@ -1283,7 +1283,7 @@ index d389f1f..b93f333 100644
.frequency_min_hz = 42 * MHz,
.frequency_max_hz = 870 * MHz,
},
@@ -395,7 +791,12 @@ static const struct dvb_tuner_ops si2157_ops = {
@@ -395,7 +795,12 @@ static const struct dvb_tuner_ops si2157_ops = {
.init = si2157_init,
.sleep = si2157_sleep,
.set_params = si2157_set_params,
@@ -1297,7 +1297,7 @@ index d389f1f..b93f333 100644
};
static void si2157_stat_work(struct work_struct *work)
@@ -455,7 +856,7 @@ static int si2157_probe(struct i2c_client *client,
@@ -455,7 +860,7 @@ static int si2157_probe(struct i2c_client *client,
cmd.wlen = 0;
cmd.rlen = 1;
ret = si2157_cmd_execute(client, &cmd);
@@ -1306,8 +1306,21 @@ index d389f1f..b93f333 100644
goto err_kfree;
memcpy(&fe->ops.tuner_ops, &si2157_ops, sizeof(struct dvb_tuner_ops));
@@ -529,6 +934,7 @@ static const struct i2c_device_id si2157_id_table[] = {
{"si2157", SI2157_CHIPTYPE_SI2157},
{"si2146", SI2157_CHIPTYPE_SI2146},
{"si2141", SI2157_CHIPTYPE_SI2141},
+ {"si2177", SI2157_CHIPTYPE_SI2177},
{}
};
MODULE_DEVICE_TABLE(i2c, si2157_id_table);
@@ -550,3 +956,4 @@ MODULE_AUTHOR("Antti Palosaari <crope@iki.fi>");
MODULE_LICENSE("GPL");
MODULE_FIRMWARE(SI2158_A20_FIRMWARE);
MODULE_FIRMWARE(SI2141_A10_FIRMWARE);
+MODULE_FIRMWARE(SI2157_A30_FIRMWARE);
diff --git a/drivers/media/tuners/si2157_priv.h b/drivers/media/tuners/si2157_priv.h
index 50f8630..1e5ce5b 100644
index 50f8630..84ed808 100644
--- a/drivers/media/tuners/si2157_priv.h
+++ b/drivers/media/tuners/si2157_priv.h
@@ -37,6 +37,8 @@ struct si2157_dev {
@@ -1319,11 +1332,26 @@ index 50f8630..1e5ce5b 100644
struct delayed_work stat_work;
#if defined(CONFIG_MEDIA_CONTROLLER)
@@ -50,6 +52,7 @@ struct si2157_dev {
#define SI2157_CHIPTYPE_SI2157 0
#define SI2157_CHIPTYPE_SI2146 1
#define SI2157_CHIPTYPE_SI2141 2
+#define SI2157_CHIPTYPE_SI2177 3
/* firmware command struct */
#define SI2157_ARGLEN 30
@@ -61,5 +64,5 @@ struct si2157_cmd {
#define SI2158_A20_FIRMWARE "dvb-tuner-si2158-a20-01.fw"
#define SI2141_A10_FIRMWARE "dvb-tuner-si2141-a10-01.fw"
-
+#define SI2157_A30_FIRMWARE "dvb-tuner-si2157-a30-05.fw"
#endif
diff --git a/drivers/media/usb/cx231xx/cx231xx-avcore.c b/drivers/media/usb/cx231xx/cx231xx-avcore.c
index fdd3c22..25aa7bb 100644
index d417b5f..f575ae0 100644
--- a/drivers/media/usb/cx231xx/cx231xx-avcore.c
+++ b/drivers/media/usb/cx231xx/cx231xx-avcore.c
@@ -599,14 +599,27 @@ int cx231xx_set_video_input_mux(struct cx231xx *dev, u8 input)
@@ -587,14 +587,27 @@ int cx231xx_set_video_input_mux(struct cx231xx *dev, u8 input)
return status;
}
}
@@ -1354,7 +1382,7 @@ index fdd3c22..25aa7bb 100644
break;
default:
@@ -1205,12 +1218,22 @@ int cx231xx_set_audio_decoder_input(struct cx231xx *dev,
@@ -1193,12 +1206,22 @@ int cx231xx_set_audio_decoder_input(struct cx231xx *dev,
cx231xx_set_field(FLD_SIF_EN, 0));
break;
default:
@@ -1381,10 +1409,10 @@ index fdd3c22..25aa7bb 100644
break;
diff --git a/drivers/media/usb/cx231xx/cx231xx-video.c b/drivers/media/usb/cx231xx/cx231xx-video.c
index 0d451c4..d5e51a5 100644
index f882047..77c118b 100644
--- a/drivers/media/usb/cx231xx/cx231xx-video.c
+++ b/drivers/media/usb/cx231xx/cx231xx-video.c
@@ -1293,7 +1293,7 @@ int cx231xx_s_frequency(struct file *file, void *priv,
@@ -1281,7 +1281,7 @@ int cx231xx_s_frequency(struct file *file, void *priv,
struct cx231xx_fh *fh = priv;
struct cx231xx *dev = fh->dev;
struct v4l2_frequency new_freq = *f;
@@ -1393,7 +1421,7 @@ index 0d451c4..d5e51a5 100644
u32 if_frequency = 5400000;
dev_dbg(dev->dev,
@@ -1310,14 +1310,30 @@ int cx231xx_s_frequency(struct file *file, void *priv,
@@ -1298,14 +1298,30 @@ int cx231xx_s_frequency(struct file *file, void *priv,
/* set pre channel change settings in DIF first */
rc = cx231xx_tuner_pre_channel_change(dev);
@@ -1428,7 +1456,7 @@ index 0d451c4..d5e51a5 100644
if (dev->norm & (V4L2_STD_MN | V4L2_STD_NTSC_443))
if_frequency = 5400000; /*5.4MHz */
else if (dev->norm & V4L2_STD_B)
@@ -1584,8 +1600,19 @@ int cx231xx_querycap(struct file *file, void *priv,
@@ -1572,8 +1588,19 @@ int cx231xx_querycap(struct file *file, void *priv,
else
cap->device_caps |= V4L2_CAP_VIDEO_CAPTURE;
}
@@ -1449,7 +1477,7 @@ index 0d451c4..d5e51a5 100644
cap->capabilities = cap->device_caps | V4L2_CAP_READWRITE |
V4L2_CAP_VBI_CAPTURE | V4L2_CAP_VIDEO_CAPTURE |
V4L2_CAP_STREAMING | V4L2_CAP_DEVICE_CAPS;
@@ -2191,10 +2218,20 @@ static void cx231xx_vdev_init(struct cx231xx *dev,
@@ -2179,10 +2206,20 @@ static void cx231xx_vdev_init(struct cx231xx *dev,
video_set_drvdata(vfd, dev);
if (dev->tuner_type == TUNER_ABSENT) {
@@ -1474,6 +1502,582 @@ index 0d451c4..d5e51a5 100644
}
}
diff --git a/drivers/media/usb/pvrusb2/Kconfig b/drivers/media/usb/pvrusb2/Kconfig
index 64f9df0..e6a4f73 100644
--- a/drivers/media/usb/pvrusb2/Kconfig
+++ b/drivers/media/usb/pvrusb2/Kconfig
@@ -41,6 +41,8 @@ config VIDEO_PVRUSB2_DVB
select DVB_S5H1409 if MEDIA_SUBDRV_AUTOSELECT
select DVB_S5H1411 if MEDIA_SUBDRV_AUTOSELECT
select DVB_TDA10048 if MEDIA_SUBDRV_AUTOSELECT
+ select DVB_LGDT3306A if MEDIA_SUBDRV_AUTOSELECT
+ select DVB_SI2168 if MEDIA_SUBDRV_AUTOSELECT
select MEDIA_TUNER_TDA18271 if MEDIA_SUBDRV_AUTOSELECT
select MEDIA_TUNER_SIMPLE if MEDIA_SUBDRV_AUTOSELECT
select MEDIA_TUNER_TDA8290 if MEDIA_SUBDRV_AUTOSELECT
diff --git a/drivers/media/usb/pvrusb2/pvrusb2-cx2584x-v4l.c b/drivers/media/usb/pvrusb2/pvrusb2-cx2584x-v4l.c
index d5bec0f..36016ab 100644
--- a/drivers/media/usb/pvrusb2/pvrusb2-cx2584x-v4l.c
+++ b/drivers/media/usb/pvrusb2/pvrusb2-cx2584x-v4l.c
@@ -111,10 +111,35 @@ static const struct routing_scheme routing_defav400 = {
.cnt = ARRAY_SIZE(routing_schemeav400),
};
+static const struct routing_scheme_item routing_scheme160xxx[] = {
+ [PVR2_CVAL_INPUT_TV] = {
+ .vid = CX25840_COMPOSITE7,
+ .aud = CX25840_AUDIO8,
+ },
+ [PVR2_CVAL_INPUT_RADIO] = {
+ .vid = CX25840_COMPOSITE4,
+ .aud = CX25840_AUDIO6,
+ },
+ [PVR2_CVAL_INPUT_COMPOSITE] = {
+ .vid = CX25840_COMPOSITE3,
+ .aud = CX25840_AUDIO_SERIAL,
+ },
+ [PVR2_CVAL_INPUT_SVIDEO] = {
+ .vid = CX25840_SVIDEO1,
+ .aud = CX25840_AUDIO_SERIAL,
+ },
+};
+
+static const struct routing_scheme routing_def160xxx = {
+ .def = routing_scheme160xxx,
+ .cnt = ARRAY_SIZE(routing_scheme160xxx),
+};
+
static const struct routing_scheme *routing_schemes[] = {
[PVR2_ROUTING_SCHEME_HAUPPAUGE] = &routing_def0,
[PVR2_ROUTING_SCHEME_GOTVIEW] = &routing_defgv,
[PVR2_ROUTING_SCHEME_AV400] = &routing_defav400,
+ [PVR2_ROUTING_SCHEME_HAUP160XXX] = &routing_def160xxx,
};
void pvr2_cx25840_subdev_update(struct pvr2_hdw *hdw, struct v4l2_subdev *sd)
diff --git a/drivers/media/usb/pvrusb2/pvrusb2-devattr.c b/drivers/media/usb/pvrusb2/pvrusb2-devattr.c
index 06de1c8..97b4fc8 100644
--- a/drivers/media/usb/pvrusb2/pvrusb2-devattr.c
+++ b/drivers/media/usb/pvrusb2/pvrusb2-devattr.c
@@ -37,6 +37,9 @@ pvr2_device_desc structures.
#include "tda18271.h"
#include "tda8290.h"
#include "tuner-simple.h"
+#include "si2157.h"
+#include "lgdt3306a.h"
+#include "si2168.h"
#endif
@@ -188,10 +191,10 @@ static struct lgdt330x_config pvr2_lgdt3303_config = {
static int pvr2_lgdt3303_attach(struct pvr2_dvb_adapter *adap)
{
- adap->fe = dvb_attach(lgdt330x_attach, &pvr2_lgdt3303_config,
- 0x0e,
- &adap->channel.hdw->i2c_adap);
- if (adap->fe)
+ adap->fe[0] = dvb_attach(lgdt330x_attach, &pvr2_lgdt3303_config,
+ 0x0e,
+ &adap->channel.hdw->i2c_adap);
+ if (adap->fe[0])
return 0;
return -EIO;
@@ -199,7 +202,7 @@ static int pvr2_lgdt3303_attach(struct pvr2_dvb_adapter *adap)
static int pvr2_lgh06xf_attach(struct pvr2_dvb_adapter *adap)
{
- dvb_attach(simple_tuner_attach, adap->fe,
+ dvb_attach(simple_tuner_attach, adap->fe[0],
&adap->channel.hdw->i2c_adap, 0x61,
TUNER_LG_TDVS_H06XF);
@@ -248,10 +251,10 @@ static struct lgdt330x_config pvr2_lgdt3302_config = {
static int pvr2_lgdt3302_attach(struct pvr2_dvb_adapter *adap)
{
- adap->fe = dvb_attach(lgdt330x_attach, &pvr2_lgdt3302_config,
+ adap->fe[0] = dvb_attach(lgdt330x_attach, &pvr2_lgdt3302_config,
0x0e,
&adap->channel.hdw->i2c_adap);
- if (adap->fe)
+ if (adap->fe[0])
return 0;
return -EIO;
@@ -259,7 +262,7 @@ static int pvr2_lgdt3302_attach(struct pvr2_dvb_adapter *adap)
static int pvr2_fcv1236d_attach(struct pvr2_dvb_adapter *adap)
{
- dvb_attach(simple_tuner_attach, adap->fe,
+ dvb_attach(simple_tuner_attach, adap->fe[0],
&adap->channel.hdw->i2c_adap, 0x61,
TUNER_PHILIPS_FCV1236D);
@@ -335,9 +338,9 @@ static struct tda18271_config hauppauge_tda18271_dvb_config = {
static int pvr2_tda10048_attach(struct pvr2_dvb_adapter *adap)
{
- adap->fe = dvb_attach(tda10048_attach, &hauppauge_tda10048_config,
+ adap->fe[0] = dvb_attach(tda10048_attach, &hauppauge_tda10048_config,
&adap->channel.hdw->i2c_adap);
- if (adap->fe)
+ if (adap->fe[0])
return 0;
return -EIO;
@@ -345,10 +348,10 @@ static int pvr2_tda10048_attach(struct pvr2_dvb_adapter *adap)
static int pvr2_73xxx_tda18271_8295_attach(struct pvr2_dvb_adapter *adap)
{
- dvb_attach(tda829x_attach, adap->fe,
+ dvb_attach(tda829x_attach, adap->fe[0],
&adap->channel.hdw->i2c_adap, 0x42,
&tda829x_no_probe);
- dvb_attach(tda18271_attach, adap->fe, 0x60,
+ dvb_attach(tda18271_attach, adap->fe[0], 0x60,
&adap->channel.hdw->i2c_adap,
&hauppauge_tda18271_dvb_config);
@@ -433,9 +436,9 @@ static struct tda18271_config hauppauge_tda18271_config = {
static int pvr2_s5h1409_attach(struct pvr2_dvb_adapter *adap)
{
- adap->fe = dvb_attach(s5h1409_attach, &pvr2_s5h1409_config,
+ adap->fe[0] = dvb_attach(s5h1409_attach, &pvr2_s5h1409_config,
&adap->channel.hdw->i2c_adap);
- if (adap->fe)
+ if (adap->fe[0])
return 0;
return -EIO;
@@ -443,9 +446,9 @@ static int pvr2_s5h1409_attach(struct pvr2_dvb_adapter *adap)
static int pvr2_s5h1411_attach(struct pvr2_dvb_adapter *adap)
{
- adap->fe = dvb_attach(s5h1411_attach, &pvr2_s5h1411_config,
+ adap->fe[0] = dvb_attach(s5h1411_attach, &pvr2_s5h1411_config,
&adap->channel.hdw->i2c_adap);
- if (adap->fe)
+ if (adap->fe[0])
return 0;
return -EIO;
@@ -453,10 +456,10 @@ static int pvr2_s5h1411_attach(struct pvr2_dvb_adapter *adap)
static int pvr2_tda18271_8295_attach(struct pvr2_dvb_adapter *adap)
{
- dvb_attach(tda829x_attach, adap->fe,
+ dvb_attach(tda829x_attach, adap->fe[0],
&adap->channel.hdw->i2c_adap, 0x42,
&tda829x_no_probe);
- dvb_attach(tda18271_attach, adap->fe, 0x60,
+ dvb_attach(tda18271_attach, adap->fe[0], 0x60,
&adap->channel.hdw->i2c_adap,
&hauppauge_tda18271_config);
@@ -525,7 +528,164 @@ static const struct pvr2_device_desc pvr2_device_751xx = {
#endif
};
+/*------------------------------------------------------------------------*/
+/* Hauppauge PVR-USB2 Model 160000 / 160111 -- HVR-1955 / HVR-1975 */
+
+#ifdef CONFIG_VIDEO_PVRUSB2_DVB
+static int pvr2_si2157_attach(struct pvr2_dvb_adapter *adap);
+static int pvr2_si2168_attach(struct pvr2_dvb_adapter *adap);
+static int pvr2_dual_fe_attach(struct pvr2_dvb_adapter *adap);
+static int pvr2_lgdt3306a_attach(struct pvr2_dvb_adapter *adap);
+
+static const struct pvr2_dvb_props pvr2_160000_dvb_props = {
+ .frontend_attach = pvr2_dual_fe_attach,
+ .tuner_attach = pvr2_si2157_attach,
+};
+static const struct pvr2_dvb_props pvr2_160111_dvb_props = {
+ .frontend_attach = pvr2_lgdt3306a_attach,
+ .tuner_attach = pvr2_si2157_attach,
+};
+
+static int pvr2_si2157_attach(struct pvr2_dvb_adapter *adap)
+{
+ struct si2157_config si2157_config = {};
+
+ si2157_config.inversion = 1;
+ si2157_config.fe = adap->fe[0];
+
+ adap->i2c_client_tuner = dvb_module_probe("si2157", "si2177",
+ &adap->channel.hdw->i2c_adap,
+ 0x60, &si2157_config);
+
+ if (!adap->i2c_client_tuner)
+ return -ENODEV;
+
+ return 0;
+}
+
+static int pvr2_si2168_attach(struct pvr2_dvb_adapter *adap)
+{
+ struct si2168_config si2168_config = {};
+ struct i2c_adapter *adapter;
+
+ pr_debug("%s()\n", __func__);
+
+ si2168_config.fe = &adap->fe[1];
+ si2168_config.i2c_adapter = &adapter;
+ si2168_config.ts_mode = SI2168_TS_PARALLEL; /*2, 1-serial, 2-parallel.*/
+ si2168_config.ts_clock_gapped = 1; /*0-disabled, 1-enabled.*/
+ si2168_config.ts_clock_inv = 0; /*0-not-invert, 1-invert*/
+ si2168_config.spectral_inversion = 1; /*0-not-invert, 1-invert*/
+
+ adap->i2c_client_demod[1] = dvb_module_probe("si2168", NULL,
+ &adap->channel.hdw->i2c_adap,
+ 0x64, &si2168_config);
+
+ if (!adap->i2c_client_demod[1])
+ return -ENODEV;
+
+ return 0;
+}
+
+static int pvr2_lgdt3306a_attach(struct pvr2_dvb_adapter *adap)
+{
+ struct lgdt3306a_config lgdt3306a_config;
+ struct i2c_adapter *adapter;
+
+ pr_debug("%s()\n", __func__);
+
+ lgdt3306a_config.fe = &adap->fe[0];
+ lgdt3306a_config.i2c_adapter = &adapter;
+ lgdt3306a_config.deny_i2c_rptr = 1;
+ lgdt3306a_config.spectral_inversion = 1;
+ lgdt3306a_config.qam_if_khz = 4000;
+ lgdt3306a_config.vsb_if_khz = 3250;
+ lgdt3306a_config.mpeg_mode = LGDT3306A_MPEG_PARALLEL;
+ lgdt3306a_config.tpclk_edge = LGDT3306A_TPCLK_FALLING_EDGE;
+ lgdt3306a_config.tpvalid_polarity = LGDT3306A_TP_VALID_LOW;
+ lgdt3306a_config.xtalMHz = 25, /* demod clock MHz; 24/25 supported */
+
+ adap->i2c_client_demod[0] = dvb_module_probe("lgdt3306a", NULL,
+ &adap->channel.hdw->i2c_adap,
+ 0x59, &lgdt3306a_config);
+
+ if (!adap->i2c_client_demod[0])
+ return -ENODEV;
+
+ return 0;
+}
+
+static int pvr2_dual_fe_attach(struct pvr2_dvb_adapter *adap)
+{
+ pr_debug("%s()\n", __func__);
+
+ if (pvr2_lgdt3306a_attach(adap) != 0)
+ return -ENODEV;
+
+ if (pvr2_si2168_attach(adap) != 0) {
+ dvb_module_release(adap->i2c_client_demod[0]);
+ return -ENODEV;
+ }
+ return 0;
+}
+#endif
+
+#define PVR2_FIRMWARE_160xxx "v4l-pvrusb2-160xxx-01.fw"
+static const char *pvr2_fw1_names_160xxx[] = {
+ PVR2_FIRMWARE_160xxx,
+};
+
+static const struct pvr2_device_client_desc pvr2_cli_160xxx[] = {
+ { .module_id = PVR2_CLIENT_ID_CX25840 },
+};
+
+static const struct pvr2_device_desc pvr2_device_160000 = {
+ .description = "WinTV HVR-1975 Model 160000",
+ .shortname = "160000",
+ .client_table.lst = pvr2_cli_160xxx,
+ .client_table.cnt = ARRAY_SIZE(pvr2_cli_160xxx),
+ .fx2_firmware.lst = pvr2_fw1_names_160xxx,
+ .fx2_firmware.cnt = ARRAY_SIZE(pvr2_fw1_names_160xxx),
+ .default_tuner_type = TUNER_ABSENT,
+ .flag_has_cx25840 = !0,
+ .flag_has_hauppauge_rom = !0,
+ .flag_has_analogtuner = !0,
+ .flag_has_composite = !0,
+ .flag_has_svideo = !0,
+ .flag_fx2_16kb = !0,
+ .signal_routing_scheme = PVR2_ROUTING_SCHEME_HAUPPAUGE,
+ .digital_control_scheme = PVR2_DIGITAL_SCHEME_HAUPPAUGE,
+ .default_std_mask = V4L2_STD_NTSC_M,
+ .led_scheme = PVR2_LED_SCHEME_HAUPPAUGE,
+ .ir_scheme = PVR2_IR_SCHEME_ZILOG,
+#ifdef CONFIG_VIDEO_PVRUSB2_DVB
+ .dvb_props = &pvr2_160000_dvb_props,
+#endif
+};
+static const struct pvr2_device_desc pvr2_device_160111 = {
+ .description = "WinTV HVR-1955 Model 160111",
+ .shortname = "160111",
+ .client_table.lst = pvr2_cli_160xxx,
+ .client_table.cnt = ARRAY_SIZE(pvr2_cli_160xxx),
+ .fx2_firmware.lst = pvr2_fw1_names_160xxx,
+ .fx2_firmware.cnt = ARRAY_SIZE(pvr2_fw1_names_160xxx),
+ .default_tuner_type = TUNER_ABSENT,
+ .flag_has_cx25840 = !0,
+ .flag_has_hauppauge_rom = !0,
+ .flag_has_analogtuner = !0,
+ .flag_has_composite = !0,
+ .flag_has_svideo = !0,
+ .flag_fx2_16kb = !0,
+ .signal_routing_scheme = PVR2_ROUTING_SCHEME_HAUPPAUGE,
+ .digital_control_scheme = PVR2_DIGITAL_SCHEME_HAUPPAUGE,
+ .default_std_mask = V4L2_STD_NTSC_M,
+ .led_scheme = PVR2_LED_SCHEME_HAUPPAUGE,
+ .ir_scheme = PVR2_IR_SCHEME_ZILOG,
+#ifdef CONFIG_VIDEO_PVRUSB2_DVB
+ .dvb_props = &pvr2_160111_dvb_props,
+#endif
+};
/*------------------------------------------------------------------------*/
@@ -552,6 +712,10 @@ struct usb_device_id pvr2_device_table[] = {
.driver_info = (kernel_ulong_t)&pvr2_device_751xx},
{ USB_DEVICE(0x0ccd, 0x0039),
.driver_info = (kernel_ulong_t)&pvr2_device_av400},
+ { USB_DEVICE(0x2040, 0x7502),
+ .driver_info = (kernel_ulong_t)&pvr2_device_160111},
+ { USB_DEVICE(0x2040, 0x7510),
+ .driver_info = (kernel_ulong_t)&pvr2_device_160000},
{ }
};
diff --git a/drivers/media/usb/pvrusb2/pvrusb2-devattr.h b/drivers/media/usb/pvrusb2/pvrusb2-devattr.h
index c1e7d48..ea0b2bf 100644
--- a/drivers/media/usb/pvrusb2/pvrusb2-devattr.h
+++ b/drivers/media/usb/pvrusb2/pvrusb2-devattr.h
@@ -66,6 +66,7 @@ struct pvr2_string_table {
#define PVR2_ROUTING_SCHEME_GOTVIEW 1
#define PVR2_ROUTING_SCHEME_ONAIR 2
#define PVR2_ROUTING_SCHEME_AV400 3
+#define PVR2_ROUTING_SCHEME_HAUP160XXX 4
#define PVR2_DIGITAL_SCHEME_NONE 0
#define PVR2_DIGITAL_SCHEME_HAUPPAUGE 1
diff --git a/drivers/media/usb/pvrusb2/pvrusb2-dvb.c b/drivers/media/usb/pvrusb2/pvrusb2-dvb.c
index 4b32b21..8f492ec 100644
--- a/drivers/media/usb/pvrusb2/pvrusb2-dvb.c
+++ b/drivers/media/usb/pvrusb2/pvrusb2-dvb.c
@@ -343,26 +343,19 @@ static int pvr2_dvb_frontend_init(struct pvr2_dvb_adapter *adap)
goto done;
}
- if ((dvb_props->frontend_attach(adap) == 0) && (adap->fe)) {
-
- if (dvb_register_frontend(&adap->dvb_adap, adap->fe)) {
+ if (dvb_props->frontend_attach(adap) == 0 && adap->fe[0]) {
+ if (dvb_register_frontend(&adap->dvb_adap, adap->fe[0])) {
pvr2_trace(PVR2_TRACE_ERROR_LEGS,
"frontend registration failed!");
- dvb_frontend_detach(adap->fe);
- adap->fe = NULL;
ret = -ENODEV;
- goto done;
+ goto fail_frontend0;
}
+ if (adap->fe[0]->ops.analog_ops.standby)
+ adap->fe[0]->ops.analog_ops.standby(adap->fe[0]);
- if (dvb_props->tuner_attach)
- dvb_props->tuner_attach(adap);
-
- if (adap->fe->ops.analog_ops.standby)
- adap->fe->ops.analog_ops.standby(adap->fe);
-
- /* Ensure all frontends negotiate bus access */
- adap->fe->ops.ts_bus_ctrl = pvr2_dvb_bus_ctrl;
-
+ pvr2_trace(PVR2_TRACE_INFO, "transferring fe[%d] ts_bus_ctrl() to pvr2_dvb_bus_ctrl()",
+ adap->fe[0]->id);
+ adap->fe[0]->ops.ts_bus_ctrl = pvr2_dvb_bus_ctrl;
} else {
pvr2_trace(PVR2_TRACE_ERROR_LEGS,
"no frontend was attached!");
@@ -370,17 +363,74 @@ static int pvr2_dvb_frontend_init(struct pvr2_dvb_adapter *adap)
return ret;
}
- done:
+ if (dvb_props->tuner_attach && dvb_props->tuner_attach(adap)) {
+ pvr2_trace(PVR2_TRACE_ERROR_LEGS, "tuner attach failed");
+ ret = -ENODEV;
+ goto fail_tuner;
+ }
+
+ if (adap->fe[1]) {
+ adap->fe[1]->id = 1;
+ adap->fe[1]->tuner_priv = adap->fe[0]->tuner_priv;
+ memcpy(&adap->fe[1]->ops.tuner_ops,
+ &adap->fe[0]->ops.tuner_ops,
+ sizeof(struct dvb_tuner_ops));
+
+ if (dvb_register_frontend(&adap->dvb_adap, adap->fe[1])) {
+ pvr2_trace(PVR2_TRACE_ERROR_LEGS,
+ "frontend registration failed!");
+ ret = -ENODEV;
+ goto fail_frontend1;
+ }
+ /* MFE lock */
+ adap->dvb_adap.mfe_shared = 1;
+
+ if (adap->fe[1]->ops.analog_ops.standby)
+ adap->fe[1]->ops.analog_ops.standby(adap->fe[1]);
+
+ pvr2_trace(PVR2_TRACE_INFO, "transferring fe[%d] ts_bus_ctrl() to pvr2_dvb_bus_ctrl()",
+ adap->fe[1]->id);
+ adap->fe[1]->ops.ts_bus_ctrl = pvr2_dvb_bus_ctrl;
+ }
+done:
pvr2_channel_limit_inputs(&adap->channel, 0);
return ret;
+
+fail_frontend1:
+ dvb_frontend_detach(adap->fe[1]);
+ adap->fe[1] = NULL;
+fail_tuner:
+ dvb_unregister_frontend(adap->fe[0]);
+fail_frontend0:
+ dvb_frontend_detach(adap->fe[0]);
+ adap->fe[0] = NULL;
+ dvb_module_release(adap->i2c_client_tuner);
+ dvb_module_release(adap->i2c_client_demod[1]);
+ dvb_module_release(adap->i2c_client_demod[0]);
+
+ return ret;
}
static int pvr2_dvb_frontend_exit(struct pvr2_dvb_adapter *adap)
{
- if (adap->fe != NULL) {
- dvb_unregister_frontend(adap->fe);
- dvb_frontend_detach(adap->fe);
+ if (adap->fe[1]) {
+ dvb_unregister_frontend(adap->fe[1]);
+ dvb_frontend_detach(adap->fe[1]);
+ adap->fe[1] = NULL;
+ }
+ if (adap->fe[0]) {
+ dvb_unregister_frontend(adap->fe[0]);
+ dvb_frontend_detach(adap->fe[0]);
+ adap->fe[0] = NULL;
}
+
+ dvb_module_release(adap->i2c_client_tuner);
+ adap->i2c_client_tuner = NULL;
+ dvb_module_release(adap->i2c_client_demod[1]);
+ adap->i2c_client_demod[1] = NULL;
+ dvb_module_release(adap->i2c_client_demod[0]);
+ adap->i2c_client_demod[0] = NULL;
+
return 0;
}
diff --git a/drivers/media/usb/pvrusb2/pvrusb2-dvb.h b/drivers/media/usb/pvrusb2/pvrusb2-dvb.h
index e7f71fb..c0b27f5 100644
--- a/drivers/media/usb/pvrusb2/pvrusb2-dvb.h
+++ b/drivers/media/usb/pvrusb2/pvrusb2-dvb.h
@@ -18,7 +18,10 @@ struct pvr2_dvb_adapter {
struct dmxdev dmxdev;
struct dvb_demux demux;
struct dvb_net dvb_net;
- struct dvb_frontend *fe;
+ struct dvb_frontend *fe[2];
+
+ struct i2c_client *i2c_client_demod[2];
+ struct i2c_client *i2c_client_tuner;
int feedcount;
int max_feed_count;
diff --git a/drivers/media/usb/pvrusb2/pvrusb2-fx2-cmd.h b/drivers/media/usb/pvrusb2/pvrusb2-fx2-cmd.h
index 0a01de4..640b033 100644
--- a/drivers/media/usb/pvrusb2/pvrusb2-fx2-cmd.h
+++ b/drivers/media/usb/pvrusb2/pvrusb2-fx2-cmd.h
@@ -38,6 +38,10 @@
#define FX2CMD_FWPOST1 0x52u
+/* These 2 only exist on Model 160xxx */
+#define FX2CMD_HCW_DEMOD_RESET_PIN 0xd4u
+#define FX2CMD_HCW_MAKO_SLEEP_PIN 0xd5u
+
#define FX2CMD_POWER_OFF 0xdcu
#define FX2CMD_POWER_ON 0xdeu
diff --git a/drivers/media/usb/pvrusb2/pvrusb2-hdw.c b/drivers/media/usb/pvrusb2/pvrusb2-hdw.c
index 1914391..63916ca 100644
--- a/drivers/media/usb/pvrusb2/pvrusb2-hdw.c
+++ b/drivers/media/usb/pvrusb2/pvrusb2-hdw.c
@@ -316,6 +316,8 @@ static const struct pvr2_fx2cmd_descdef pvr2_fx2cmd_desc[] = {
{FX2CMD_ONAIR_DTV_STREAMING_OFF, "onair dtv stream off"},
{FX2CMD_ONAIR_DTV_POWER_ON, "onair dtv power on"},
{FX2CMD_ONAIR_DTV_POWER_OFF, "onair dtv power off"},
+ {FX2CMD_HCW_DEMOD_RESET_PIN, "hcw demod reset pin"},
+ {FX2CMD_HCW_MAKO_SLEEP_PIN, "hcw mako sleep pin"},
};
@@ -2139,10 +2141,28 @@ static void pvr2_hdw_setup_low(struct pvr2_hdw *hdw)
((0) << 16));
}
- // This step MUST happen after the earlier powerup step.
+ /* This step MUST happen after the earlier powerup step */
pvr2_i2c_core_init(hdw);
if (!pvr2_hdw_dev_ok(hdw)) return;
+ /* Reset demod only on Hauppauge 160xxx platform */
+ if (hdw->usb_dev->descriptor.idVendor == 0x2040 &&
+ (hdw->usb_dev->descriptor.idProduct == 0x7502 ||
+ hdw->usb_dev->descriptor.idProduct == 0x7510)) {
+ pr_info("%s(): resetting 160xxx demod\n", __func__);
+ /* TODO: not sure this is proper place to reset once only */
+ pvr2_issue_simple_cmd(hdw,
+ FX2CMD_HCW_DEMOD_RESET_PIN |
+ (1 << 8) |
+ ((0) << 16));
+ msleep(10);
+ pvr2_issue_simple_cmd(hdw,
+ FX2CMD_HCW_DEMOD_RESET_PIN |
+ (1 << 8) |
+ ((1) << 16));
+ msleep(10);
+ }
+
pvr2_hdw_load_modules(hdw);
if (!pvr2_hdw_dev_ok(hdw)) return;
@@ -4012,6 +4032,20 @@ int pvr2_hdw_cmd_decoder_reset(struct pvr2_hdw *hdw)
static int pvr2_hdw_cmd_hcw_demod_reset(struct pvr2_hdw *hdw, int onoff)
{
hdw->flag_ok = !0;
+
+ /* Use this for Hauppauge 160xxx only */
+ if (hdw->usb_dev->descriptor.idVendor == 0x2040 &&
+ (hdw->usb_dev->descriptor.idProduct == 0x7502 ||
+ hdw->usb_dev->descriptor.idProduct == 0x7510)) {
+ pr_debug("%s(): resetting demod on Hauppauge 160xxx platform skipped\n",
+ __func__);
+ /* Can't reset 160xxx or it will trash Demod tristate */
+ return pvr2_issue_simple_cmd(hdw,
+ FX2CMD_HCW_MAKO_SLEEP_PIN |
+ (1 << 8) |
+ ((onoff ? 1 : 0) << 16));
+ }
+
return pvr2_issue_simple_cmd(hdw,
FX2CMD_HCW_DEMOD_RESETIN |
(1 << 8) |
--
2.17.1

View File

@@ -1,217 +0,0 @@
From: Thomas Hollstegge <thomas.hollstegge@gmail.com>
[v3] media: dvbsky: Add support for MyGica T230C v2
https://lore.kernel.org/patchwork/cover/904817/
diff --git a/drivers/media/dvb-frontends/si2168.c b/drivers/media/dvb-frontends/si2168.c
index 4d43424..3402b96 100644
--- a/drivers/media/dvb-frontends/si2168.c
+++ b/drivers/media/dvb-frontends/si2168.c
@@ -96,13 +96,15 @@ static int si2168_ts_bus_ctrl(struct dvb_frontend *fe, int acquire)
dev_dbg(&client->dev, "%s acquire: %d\n", __func__, acquire);
/* set TS_MODE property */
- memcpy(cmd.args, "\x14\x00\x01\x10\x10\x00", 6);
+ memcpy(cmd.args, "\x14\x00\x01\x10\x00\x00", 6);
if (acquire)
cmd.args[4] |= dev->ts_mode;
else
cmd.args[4] |= SI2168_TS_TRISTATE;
if (dev->ts_clock_gapped)
cmd.args[4] |= 0x40;
+ cmd.args[4] |= (dev->ts_clock_mode & 0x03) << 4;
+
cmd.wlen = 6;
cmd.rlen = 4;
ret = si2168_cmd_execute(client, &cmd);
@@ -644,6 +646,18 @@ static int si2168_set_frontend(struct dvb_frontend *fe)
if (ret)
goto err;
+ /* set TS frequency */
+ if (dev->ts_clock_freq) {
+ memcpy(cmd.args, "\x14\x00\x0d\x10", 4);
+ cmd.args[4] = ((dev->ts_clock_freq / 10000) >> 0) & 0xff;
+ cmd.args[5] = ((dev->ts_clock_freq / 10000) >> 8) & 0xff;
+ cmd.wlen = 6;
+ cmd.rlen = 4;
+ ret = si2168_cmd_execute(client, &cmd);
+ if (ret)
+ goto err;
+ }
+
memcpy(cmd.args, "\x14\x00\x08\x10\xd7\x05", 6);
cmd.args[5] |= dev->ts_clock_inv ? 0x00 : 0x10;
cmd.wlen = 6;
@@ -1057,6 +1071,10 @@ static int si2168_probe(struct i2c_client *client,
dev->ts_mode = config->ts_mode;
dev->ts_clock_inv = config->ts_clock_inv;
dev->ts_clock_gapped = config->ts_clock_gapped;
+ dev->ts_clock_mode = config->ts_clock_mode;
+ if (dev->ts_clock_mode == 0)
+ dev->ts_clock_mode = SI2168_TS_CLOCK_MODE_AUTO_ADAPT;
+ dev->ts_clock_freq = config->ts_clock_freq;
dev->spectral_inversion = config->spectral_inversion;
dev_info(&client->dev, "Silicon Labs Si2168-%c%d%d successfully identified\n",
diff --git a/drivers/media/dvb-frontends/si2168.h b/drivers/media/dvb-frontends/si2168.h
index d519edd..3f52ee8 100644
--- a/drivers/media/dvb-frontends/si2168.h
+++ b/drivers/media/dvb-frontends/si2168.h
@@ -47,6 +47,14 @@ struct si2168_config {
/* TS clock gapped */
bool ts_clock_gapped;
+ /* TS clock mode */
+#define SI2168_TS_CLOCK_MODE_AUTO_ADAPT 0x01
+#define SI2168_TS_CLOCK_MODE_MANUAL 0x02
+ u8 ts_clock_mode;
+
+ /* TS clock frequency (for manual mode) */
+ u32 ts_clock_freq;
+
/* Inverted spectrum */
bool spectral_inversion;
};
diff --git a/drivers/media/dvb-frontends/si2168_priv.h b/drivers/media/dvb-frontends/si2168_priv.h
index 2d362e1..8173d6c 100644
--- a/drivers/media/dvb-frontends/si2168_priv.h
+++ b/drivers/media/dvb-frontends/si2168_priv.h
@@ -48,6 +48,8 @@ struct si2168_dev {
u8 ts_mode;
bool ts_clock_inv;
bool ts_clock_gapped;
+ u8 ts_clock_mode;
+ u32 ts_clock_freq;
bool spectral_inversion;
};
diff --git a/drivers/media/usb/dvb-usb-v2/dvbsky.c b/drivers/media/usb/dvb-usb-v2/dvbsky.c
index e28bd88..4a4c6ae 100644
--- a/drivers/media/usb/dvb-usb-v2/dvbsky.c
+++ b/drivers/media/usb/dvb-usb-v2/dvbsky.c
@@ -583,6 +583,66 @@ static int dvbsky_mygica_t230c_attach(struct dvb_usb_adapter *adap)
return 0;
}
+static int dvbsky_mygica_t230c_v2_attach(struct dvb_usb_adapter *adap)
+{
+ struct dvbsky_state *state = adap_to_priv(adap);
+ struct dvb_usb_device *d = adap_to_d(adap);
+ struct i2c_adapter *i2c_adapter;
+ struct i2c_client *client_demod, *client_tuner;
+ struct i2c_board_info info;
+ struct si2168_config si2168_config;
+ struct si2157_config si2157_config;
+
+ /* attach demod */
+ memset(&si2168_config, 0, sizeof(si2168_config));
+ si2168_config.i2c_adapter = &i2c_adapter;
+ si2168_config.fe = &adap->fe[0];
+ si2168_config.ts_mode = SI2168_TS_PARALLEL;
+ si2168_config.ts_clock_inv = 1;
+ si2168_config.ts_clock_mode = SI2168_TS_CLOCK_MODE_MANUAL;
+ si2168_config.ts_clock_freq = 10000000;
+ memset(&info, 0, sizeof(struct i2c_board_info));
+ strlcpy(info.type, "si2168", sizeof(info.type));
+ info.addr = 0x64;
+ info.platform_data = &si2168_config;
+
+ request_module("si2168");
+ client_demod = i2c_new_device(&d->i2c_adap, &info);
+ if (!client_demod || !client_demod->dev.driver)
+ goto fail_demod_device;
+ if (!try_module_get(client_demod->dev.driver->owner))
+ goto fail_demod_module;
+
+ /* attach tuner */
+ memset(&si2157_config, 0, sizeof(si2157_config));
+ si2157_config.fe = adap->fe[0];
+ si2157_config.if_port = 0;
+ memset(&info, 0, sizeof(struct i2c_board_info));
+ strlcpy(info.type, "si2141", sizeof(info.type));
+ info.addr = 0x60;
+ info.platform_data = &si2157_config;
+
+ request_module("si2157");
+ client_tuner = i2c_new_device(i2c_adapter, &info);
+ if (!client_tuner || !client_tuner->dev.driver)
+ goto fail_tuner_device;
+ if (!try_module_get(client_tuner->dev.driver->owner))
+ goto fail_tuner_module;
+
+ state->i2c_client_demod = client_demod;
+ state->i2c_client_tuner = client_tuner;
+ return 0;
+
+fail_tuner_module:
+ i2c_unregister_device(client_tuner);
+fail_tuner_device:
+ module_put(client_demod->dev.driver->owner);
+fail_demod_module:
+ i2c_unregister_device(client_demod);
+fail_demod_device:
+ return -ENODEV;
+}
+
static int dvbsky_identify_state(struct dvb_usb_device *d, const char **name)
{
@@ -762,6 +822,33 @@ static struct dvb_usb_device_properties mygica_t230c_props = {
}
};
+static struct dvb_usb_device_properties mygica_t230c_v2_props = {
+ .driver_name = KBUILD_MODNAME,
+ .owner = THIS_MODULE,
+ .adapter_nr = adapter_nr,
+ .size_of_priv = sizeof(struct dvbsky_state),
+
+ .generic_bulk_ctrl_endpoint = 0x01,
+ .generic_bulk_ctrl_endpoint_response = 0x81,
+ .generic_bulk_ctrl_delay = DVBSKY_MSG_DELAY,
+
+ .i2c_algo = &dvbsky_i2c_algo,
+ .frontend_attach = dvbsky_mygica_t230c_v2_attach,
+ .init = dvbsky_init,
+ .get_rc_config = dvbsky_get_rc_config,
+ .streaming_ctrl = dvbsky_streaming_ctrl,
+ .identify_state = dvbsky_identify_state,
+ .exit = dvbsky_exit,
+
+ .num_adapters = 1,
+ .adapter = {
+ {
+ .stream = DVB_USB_STREAM_BULK(0x82, 8, 4096),
+ }
+ }
+};
+
+
static const struct usb_device_id dvbsky_id_table[] = {
{ DVB_USB_DEVICE(0x0572, 0x6831,
&dvbsky_s960_props, "DVBSky S960/S860", RC_MAP_DVBSKY) },
@@ -797,6 +884,9 @@ static const struct usb_device_id dvbsky_id_table[] = {
{ DVB_USB_DEVICE(USB_VID_CONEXANT, USB_PID_MYGICA_T230C,
&mygica_t230c_props, "MyGica Mini DVB-T2 USB Stick T230C",
RC_MAP_TOTAL_MEDIA_IN_HAND_02) },
+ { DVB_USB_DEVICE(USB_VID_CONEXANT, USB_PID_MYGICA_T230C_V2,
+ &mygica_t230c_v2_props, "MyGica Mini DVB-T2 USB Stick T230C v2",
+ RC_MAP_TOTAL_MEDIA_IN_HAND_02) },
{ }
};
MODULE_DEVICE_TABLE(usb, dvbsky_id_table);
diff --git a/include/media/dvb-usb-ids.h b/include/media/dvb-usb-ids.h
index f9e73b4..d606248 100644
--- a/include/media/dvb-usb-ids.h
+++ b/include/media/dvb-usb-ids.h
@@ -387,6 +387,7 @@
#define USB_PID_MYGICA_D689 0xd811
#define USB_PID_MYGICA_T230 0xc688
#define USB_PID_MYGICA_T230C 0xc689
+#define USB_PID_MYGICA_T230C_V2 0xc68a
#define USB_PID_ELGATO_EYETV_DIVERSITY 0x0011
#define USB_PID_ELGATO_EYETV_DTT 0x0021
#define USB_PID_ELGATO_EYETV_DTT_2 0x003f
--
2.17.1

View File

@@ -2,8 +2,8 @@
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="media_tree_cc"
PKG_VERSION="2019-03-08"
PKG_SHA256="e3394cb051c9bd450e84f6597072fe65ab7d1a45113cfbe5027dd9137129834f"
PKG_VERSION="2019-05-12"
PKG_SHA256="55bd8b54c83110a30d8ad44761e888a4bad4745f1ae4765dcf44f2752fc96419"
PKG_LICENSE="GPL"
PKG_SITE="https://bitbucket.org/CrazyCat/media_build/downloads/"
PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.bz2"
@@ -15,7 +15,9 @@ PKG_TOOLCHAIN="manual"
unpack() {
mkdir -p $PKG_BUILD/
tar -xf $SOURCES/$PKG_NAME/$PKG_NAME-$PKG_VERSION.tar.bz2 -C $PKG_BUILD/
}
post_unpack() {
# hack/workaround for borked upstream kernel/media_build
# without removing atomisp there a lot additional includes that
# slowdown build process after modpost from 3min to 6min

View File

@@ -1,26 +0,0 @@
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="media_tree_cc_aml"
PKG_VERSION="2018-09-23"
PKG_SHA256="3b0cf3699317c04d9184b7e25056065fd374b20b851ee86a63ea2c70e219ee9e"
PKG_LICENSE="GPL"
PKG_SITE="https://bitbucket.org/CrazyCat/media_build/downloads/"
PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.xz"
PKG_DEPENDS_TARGET="toolchain"
PKG_NEED_UNPACK="$LINUX_DEPENDS"
PKG_LONGDESC="Source of Linux Kernel media_tree subsystem to build with media_build."
PKG_TOOLCHAIN="manual"
unpack() {
mkdir -p $PKG_BUILD/
tar -xf $SOURCES/$PKG_NAME/$PKG_NAME-$PKG_VERSION.tar.xz -C $PKG_BUILD/
# hack/workaround for borked upstream kernel/media_build
# without removing atomisp there a lot additional includes that
# slowdown build process after modpost from 3min to 6min
# even if atomisp is disabled via kernel.conf
rm -rf $PKG_BUILD/drivers/staging/media/atomisp
sed -i 's|^.*drivers/staging/media/atomisp.*$||' \
$PKG_BUILD/drivers/staging/media/Kconfig
}

View File

@@ -1,41 +0,0 @@
From ae1ccaa3587c0bd3d6d01841fa2e668cdf738f1e Mon Sep 17 00:00:00 2001
From: Matthias Reichl <hias@horus.com>
Date: Sun, 3 Feb 2019 14:24:00 +0100
Subject: [PATCH] media: rc: ir-rc6-decoder: enable toggle bit for Zotac
remotes
The Zotac RC2604323/01G and RC2604329/02BG remotes use the 32-bit
rc6 protocol and toggle bit 15 (0x8000) on repeated button presses,
like MCE remotes.
Add the customer code 0x80340000 to the 32-bit rc6 toggle
handling code to get proper scancodes and toggle reports.
Signed-off-by: Matthias Reichl <hias@horus.com>
---
drivers/media/rc/ir-rc6-decoder.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/media/rc/ir-rc6-decoder.c b/drivers/media/rc/ir-rc6-decoder.c
index d96aed1343e4..5cc302fa4daa 100644
--- a/drivers/media/rc/ir-rc6-decoder.c
+++ b/drivers/media/rc/ir-rc6-decoder.c
@@ -40,6 +40,7 @@
#define RC6_6A_MCE_TOGGLE_MASK 0x8000 /* for the body bits */
#define RC6_6A_LCC_MASK 0xffff0000 /* RC6-6A-32 long customer code mask */
#define RC6_6A_MCE_CC 0x800f0000 /* MCE customer code */
+#define RC6_6A_ZOTAC_CC 0x80340000 /* Zotac customer code */
#define RC6_6A_KATHREIN_CC 0x80460000 /* Kathrein RCU-676 customer code */
#ifndef CHAR_BIT
#define CHAR_BIT 8 /* Normally in <limits.h> */
@@ -246,6 +247,7 @@ static int ir_rc6_decode(struct rc_dev *dev, struct ir_raw_event ev)
switch (scancode & RC6_6A_LCC_MASK) {
case RC6_6A_MCE_CC:
case RC6_6A_KATHREIN_CC:
+ case RC6_6A_ZOTAC_CC:
protocol = RC_PROTO_RC6_MCE;
toggle = !!(scancode & RC6_6A_MCE_TOGGLE_MASK);
scancode &= ~RC6_6A_MCE_TOGGLE_MASK;
--
2.20.1

View File

@@ -1,22 +0,0 @@
https://bitbucket.org/CrazyCat/linux_media/commits/ebd9c45524383e09d993563f4bd3cc765796b38a/raw
https://forum.libreelec.tv/thread/14405-dual-tbs-5520se-libreelec-9-0-0-intel-generic/?postID=110926#post110926
fixes TBS5520se scanning of frequencies
From: CrazyCat
Date: Mon, 12 Nov 2018 19:49:55 +0200
Subject: [PATCH] si2183: Fixed minimal frequency for DVB-C.
diff --git a/drivers/media/dvb-frontends/si2183.c b/drivers/media/dvb-frontends/si2183.c
index f1cc0da..333abd0 100644
--- a/drivers/media/dvb-frontends/si2183.c
+++ b/drivers/media/dvb-frontends/si2183.c
@@ -1335,7 +1335,7 @@ static int si2183_set_property(struct dvb_frontend *fe,
break;
case SYS_DVBC_ANNEX_A:
case SYS_DVBC_ANNEX_B:
- fe->ops.info.frequency_min_hz = 470 * MHz;
+ fe->ops.info.frequency_min_hz = 47 * MHz;
fe->ops.info.frequency_max_hz = 862 * MHz;
fe->ops.info.frequency_stepsize_hz = 62500;
break;

View File

@@ -2,8 +2,8 @@
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="digital_devices"
PKG_VERSION="e3601828472485b299495ec15dcd7e4cc4c770a3"
PKG_SHA256="2e75a97602cd7512655020d7147a18eee76a9b7befa2aaca82d1548a0995c313"
PKG_VERSION="040a1c58b660781297acc5eda09d934ced245c5e"
PKG_SHA256="a0d7e8e78bc9e56b014d61585506dcb5fef4fa8b31d5f5e5aeaabb98343a3611"
PKG_ARCH="x86_64"
PKG_LICENSE="GPL"
PKG_SITE="https://github.com/DigitalDevices/dddvb/"

View File

@@ -2,8 +2,8 @@
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="dvb-latest"
PKG_VERSION="c23276037794bae357fa8d23e3a4f11af9ad46e9"
PKG_SHA256="c69d5c6af435887bd46d8da4816f724905e36fd7d080c8e1c437fbe4848ea813"
PKG_VERSION="d121a2bedf6dd541c6182041142ec54fd94760ab"
PKG_SHA256="45dcd91f283ee9cfd7a75b291ab40c6b25d054362960c63d5a806db9b9489f70"
PKG_LICENSE="GPL"
PKG_SITE="http://git.linuxtv.org/media_build.git"
PKG_URL="https://git.linuxtv.org/media_build.git/snapshot/${PKG_VERSION}.tar.gz"

View File

@@ -3,8 +3,8 @@
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="RTL8192CU"
PKG_VERSION="d7c7e6aa73fc457cfc5e5272878d111c657ce6dc"
PKG_SHA256="3b7a4b198913fa45958c7309e0358c34628d791038a473f6d4e95bcf70b7d56f"
PKG_VERSION="f32ef3984db7c7f7644edec0fa28a63a47b1a7d6"
PKG_SHA256="7e8df7cce0918630121c7493a6333d392b3099b1126e8c355aa221cee032c80b"
PKG_LICENSE="GPL"
PKG_SITE="https://github.com/pvaret/rtl8192cu-fixes"
PKG_URL="$PKG_SITE/archive/$PKG_VERSION.tar.gz"

View File

@@ -1,29 +0,0 @@
--- a/os_dep/linux/os_intfs.c 2013-09-11 05:56:55.000000000 +0200
+++ b/os_dep/linux/os_intfs.c 2013-11-12 00:30:41.158248277 +0100
@@ -277,6 +277,18 @@
#define RTW_PROC_NAME DRV_NAME
+#ifndef create_proc_entry
+/* dummy routines */
+void rtw_proc_remove_one(struct net_device *dev)
+{
+}
+
+void rtw_proc_init_one(struct net_device *dev)
+{
+}
+
+#else /* create_proc_entry not defined */
+
void rtw_proc_init_one(struct net_device *dev)
{
struct proc_dir_entry *dir_dev = NULL;
@@ -751,6 +763,7 @@
}
}
}
+#endif /* create_proc_entry not defined */
#endif
uint loadparam( _adapter *padapter, _nic_hdl pnetdev);

View File

@@ -1,22 +0,0 @@
diff -Naur RTL8192CU-v4.0.2_9000.20130911/os_dep/linux/pci_intf.c RTL8192CU-v4.0.2_9000.20130911.patch/os_dep/linux/pci_intf.c
--- RTL8192CU-v4.0.2_9000.20130911/os_dep/linux/pci_intf.c 2013-09-11 05:56:55.000000000 +0200
+++ RTL8192CU-v4.0.2_9000.20130911.patch/os_dep/linux/pci_intf.c 2014-04-22 23:25:02.082908033 +0200
@@ -1963,7 +1963,6 @@
RT_TRACE(_module_hci_intfs_c_,_drv_err_,("+rtw_drv_entry\n"));
DBG_871X("rtw driver version=%s\n", DRIVERVERSION);
- DBG_871X("Build at: %s %s\n", __DATE__, __TIME__);
pci_drvpriv.drv_registered = _TRUE;
rtw_suspend_lock_init();
diff -Naur RTL8192CU-v4.0.2_9000.20130911/os_dep/linux/usb_intf.c RTL8192CU-v4.0.2_9000.20130911.patch/os_dep/linux/usb_intf.c
--- RTL8192CU-v4.0.2_9000.20130911/os_dep/linux/usb_intf.c 2013-09-11 05:56:55.000000000 +0200
+++ RTL8192CU-v4.0.2_9000.20130911.patch/os_dep/linux/usb_intf.c 2014-04-22 23:25:21.337862827 +0200
@@ -1577,7 +1577,6 @@
RT_TRACE(_module_hci_intfs_c_,_drv_err_,("+rtw_drv_entry\n"));
DBG_871X(DRV_NAME " driver version=%s\n", DRIVERVERSION);
- DBG_871X("build time: %s %s\n", __DATE__, __TIME__);
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24))
//console_suspend_enabled=0;

View File

@@ -1,25 +0,0 @@
diff -Naur RTL8192CU-v4.0.2_9000.20130911/include/ieee80211.h RTL8192CU-v4.0.2_9000.20130911.patch/include/ieee80211.h
--- RTL8192CU-v4.0.2_9000.20130911/include/ieee80211.h 2013-09-11 05:56:55.000000000 +0200
+++ RTL8192CU-v4.0.2_9000.20130911.patch/include/ieee80211.h 2015-11-03 14:05:03.789280151 +0100
@@ -1194,18 +1194,18 @@
(((Addr[2]) & 0xff) == 0xff) && (((Addr[3]) & 0xff) == 0xff) && (((Addr[4]) & 0xff) == 0xff) && \
(((Addr[5]) & 0xff) == 0xff))
#else
-extern __inline int is_multicast_mac_addr(const u8 *addr)
+static __inline int is_multicast_mac_addr(const u8 *addr)
{
return ((addr[0] != 0xff) && (0x01 & addr[0]));
}
-extern __inline int is_broadcast_mac_addr(const u8 *addr)
+static __inline int is_broadcast_mac_addr(const u8 *addr)
{
return ((addr[0] == 0xff) && (addr[1] == 0xff) && (addr[2] == 0xff) && \
(addr[3] == 0xff) && (addr[4] == 0xff) && (addr[5] == 0xff));
}
-extern __inline int is_zero_mac_addr(const u8 *addr)
+static __inline int is_zero_mac_addr(const u8 *addr)
{
return ((addr[0] == 0x00) && (addr[1] == 0x00) && (addr[2] == 0x00) && \
(addr[3] == 0x00) && (addr[4] == 0x00) && (addr[5] == 0x00));

View File

@@ -3,8 +3,8 @@
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="RTL8192DU"
PKG_VERSION="3105cd3179d5e60a7aa675611a3592a45b29bfcb"
PKG_SHA256="0a19e86192418d4179def917a9cea3aa0f2f2da7c44a520c085b9d78d9d2c09e"
PKG_VERSION="72b53f8a6c2a6696d60791df4455c3073fffc4e4"
PKG_SHA256="dec3cc45601c2c6dab47816523cb5a5731393d34cc75ec0f96a91191d3563fdd"
PKG_LICENSE="GPL"
PKG_SITE="https://github.com/lwfinger/rtl8192du"
PKG_URL="https://github.com/lwfinger/rtl8192du/archive/$PKG_VERSION.tar.gz"

View File

@@ -3,8 +3,8 @@
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="RTL8192EU"
PKG_VERSION="b63646fb61fec4895f0fd4aec1a0cb0e8873eaeb"
PKG_SHA256="7e24457f371121e1f587ec759b3338bc9b63bd03632840a11076791155c0c93f"
PKG_VERSION="0a7199b457b25edc4d9534158a068e486b1c8bb0"
PKG_SHA256="defee6fda236bc9d77cd5cf0ceca8e86f820a1f9fa5d63c5ca7c369be1a3513e"
PKG_LICENSE="GPL"
PKG_SITE="https://github.com/Mange/rtl8192eu-linux-driver"
PKG_URL="https://github.com/Mange/rtl8192eu-linux-driver/archive/$PKG_VERSION.tar.gz"

View File

@@ -1,25 +0,0 @@
diff -Naur a/include/ieee80211.h b/include/ieee80211.h
--- a/include/ieee80211.h
+++ b/include/ieee80211.h
@@ -1314,18 +1314,18 @@
(((Addr[2]) & 0xff) == 0xff) && (((Addr[3]) & 0xff) == 0xff) && (((Addr[4]) & 0xff) == 0xff) && \
(((Addr[5]) & 0xff) == 0xff))
#else
-extern __inline int is_multicast_mac_addr(const u8 *addr)
+static __inline int is_multicast_mac_addr(const u8 *addr)
{
return ((addr[0] != 0xff) && (0x01 & addr[0]));
}
-extern __inline int is_broadcast_mac_addr(const u8 *addr)
+static __inline int is_broadcast_mac_addr(const u8 *addr)
{
return ((addr[0] == 0xff) && (addr[1] == 0xff) && (addr[2] == 0xff) && \
(addr[3] == 0xff) && (addr[4] == 0xff) && (addr[5] == 0xff));
}
-extern __inline int is_zero_mac_addr(const u8 *addr)
+static __inline int is_zero_mac_addr(const u8 *addr)
{
return ((addr[0] == 0x00) && (addr[1] == 0x00) && (addr[2] == 0x00) && \
(addr[3] == 0x00) && (addr[4] == 0x00) && (addr[5] == 0x00));

View File

@@ -3,8 +3,8 @@
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="RTL8812AU"
PKG_VERSION="7c257daf52d0aac298c13135bd3ff5f388edc72b"
PKG_SHA256="88eaed2f0b394a36f806f02bd245e7bd181e2aaafc2b7ff4521f4adb2fa6dc29"
PKG_VERSION="bdfef37665b34be7a84835fba97e44447b30f98c"
PKG_SHA256="44ccdeb90da2e750330108e71e6986e1a9000ba2e6b5709460a271d570a75769"
PKG_LICENSE="GPL"
PKG_SITE="https://github.com/MilhouseVH/RTL8812AU"
PKG_URL="https://github.com/MilhouseVH/RTL8812AU/archive/$PKG_VERSION.tar.gz"

View File

@@ -1,34 +0,0 @@
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="RTL8188EU-aml"
PKG_VERSION="2d358c5"
PKG_SHA256="adf31d56d3a94bca814f1bd0de24af61fae85d25a259124b5d16c1d23cc72c91"
PKG_ARCH="arm aarch64"
PKG_LICENSE="GPL"
PKG_SITE="https://github.com/khadas/android_hardware_wifi_realtek_drivers_8188eu"
PKG_URL="https://github.com/khadas/android_hardware_wifi_realtek_drivers_8188eu/archive/$PKG_VERSION.tar.gz"
PKG_DEPENDS_TARGET="toolchain linux"
PKG_NEED_UNPACK="$LINUX_DEPENDS"
PKG_LONGDESC="Realtek RTL8188EU Linux driver"
PKG_IS_KERNEL_PKG="yes"
PKG_TOOLCHAIN="manual"
post_unpack() {
sed -i 's/-DCONFIG_CONCURRENT_MODE//g; s/^CONFIG_POWER_SAVING.*$/CONFIG_POWER_SAVING = n/g; s/^CONFIG_RTW_DEBUG.*/CONFIG_RTW_DEBUG = n/g' $PKG_BUILD/*/Makefile
sed -i 's/^#define CONFIG_DEBUG.*//g' $PKG_BUILD/*/include/autoconf.h
sed -i 's/#define DEFAULT_RANDOM_MACADDR.*1/#define DEFAULT_RANDOM_MACADDR 0/g' $PKG_BUILD/*/core/rtw_ieee80211.c
}
make_target() {
LDFLAGS="" make -C $(kernel_path) M=$PKG_BUILD/rtl8xxx_EU \
ARCH=$TARGET_KERNEL_ARCH \
KSRC=$(kernel_path) \
CROSS_COMPILE=$TARGET_KERNEL_PREFIX \
USER_EXTRA_CFLAGS="-fgnu89-inline"
}
makeinstall_target() {
mkdir -p $INSTALL/$(get_full_module_dir)/$PKG_NAME
find $PKG_BUILD/ -name \*.ko -not -path '*/\.*' -exec cp {} $INSTALL/$(get_full_module_dir)/$PKG_NAME \;
}

Some files were not shown because too many files have changed in this diff Show More