mirror of
https://github.com/LibreELEC/LibreELEC.tv
synced 2025-09-24 19:46:01 +07:00
Compare commits
328 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
43962c6ad8 | ||
|
|
a43572a1c8 | ||
|
|
928493f5c7 | ||
|
|
ad20131a7f | ||
|
|
4ea7a41f34 | ||
|
|
f03ad928a1 | ||
|
|
cba2a6afca | ||
|
|
33cbe49b72 | ||
|
|
8b5d773907 | ||
|
|
e20cd276a3 | ||
|
|
9f2144c0bf | ||
|
|
80a29987bb | ||
|
|
93640b7b2d | ||
|
|
3d8bd55620 | ||
|
|
b614c3c3fb | ||
|
|
eaf8130edb | ||
|
|
cf17e70fba | ||
|
|
2d5fdb1dea | ||
|
|
112ee117ec | ||
|
|
740f99ee3f | ||
|
|
160ba624a0 | ||
|
|
2996125367 | ||
|
|
4321dd3c85 | ||
|
|
547024253c | ||
|
|
5a5f5118be | ||
|
|
d2a87bf701 | ||
|
|
d2e52db7f9 | ||
|
|
15d7e8992f | ||
|
|
7dc54ed090 | ||
|
|
c67cdd49af | ||
|
|
5d00b37172 | ||
|
|
342921f171 | ||
|
|
bf3611a25d | ||
|
|
af985cdd7d | ||
|
|
a031de2ba1 | ||
|
|
13ac425381 | ||
|
|
a7094bf4ac | ||
|
|
6dee65a10a | ||
|
|
b228b28e9a | ||
|
|
6f7387a45f | ||
|
|
5dc342162a | ||
|
|
708b4f9e2f | ||
|
|
6c2e76d7c1 | ||
|
|
f769ae2642 | ||
|
|
296123b07c | ||
|
|
666f798123 | ||
|
|
2ef5492e90 | ||
|
|
4beff3ef6f | ||
|
|
3cd530914d | ||
|
|
3b493a0938 | ||
|
|
40cfd9986c | ||
|
|
61f17d8a6e | ||
|
|
4078cf05c7 | ||
|
|
c4ac5bccd3 | ||
|
|
fc71e3fef1 | ||
|
|
d9a65ad23f | ||
|
|
1853a14d93 | ||
|
|
785af56130 | ||
|
|
7f4b374d8b | ||
|
|
88fe4fb6a5 | ||
|
|
a1c59e1d9d | ||
|
|
c47a69f488 | ||
|
|
867882f5b6 | ||
|
|
664c907253 | ||
|
|
ab19e13cf6 | ||
|
|
52d1097cd0 | ||
|
|
8fd6d9f9d2 | ||
|
|
79d38dcf9f | ||
|
|
f043441788 | ||
|
|
afe74301c7 | ||
|
|
b965e71859 | ||
|
|
f58570de26 | ||
|
|
fa1adb3a60 | ||
|
|
d684c9420a | ||
|
|
7153f791b4 | ||
|
|
4dc0de73b1 | ||
|
|
9ff681c139 | ||
|
|
22a42a2927 | ||
|
|
9790e80d41 | ||
|
|
7756397876 | ||
|
|
0ef5e46416 | ||
|
|
080804cb0e | ||
|
|
29f1dc2555 | ||
|
|
a1ac9c51a5 | ||
|
|
3b3a2fcb94 | ||
|
|
4063daaef4 | ||
|
|
245b20e959 | ||
|
|
d3c504786d | ||
|
|
c4a3fb41cf | ||
|
|
8c5da501a9 | ||
|
|
1d3c298803 | ||
|
|
145937ebcc | ||
|
|
5038ab0d1f | ||
|
|
deec530914 | ||
|
|
3918637dd8 | ||
|
|
24ea5ab8a4 | ||
|
|
f71eb4e042 | ||
|
|
7975fa1d1e | ||
|
|
44f6afd2ec | ||
|
|
0b11523b09 | ||
|
|
6b4084ffa6 | ||
|
|
ec67d04f99 | ||
|
|
4bb042ee13 | ||
|
|
00c2004d1a | ||
|
|
e486a19f89 | ||
|
|
2b8b7cdee3 | ||
|
|
385b41cad1 | ||
|
|
0edc046f1b | ||
|
|
5c2342f64b | ||
|
|
77514cb8a3 | ||
|
|
549bc75e1c | ||
|
|
2d45ef07de | ||
|
|
866c635d44 | ||
|
|
671f55afef | ||
|
|
f4a58d4b14 | ||
|
|
25bf0a9381 | ||
|
|
cdb75b0e83 | ||
|
|
da58897544 | ||
|
|
b9ad07f793 | ||
|
|
45d9551fa2 | ||
|
|
41e7553762 | ||
|
|
59e057eed8 | ||
|
|
2e72cf036a | ||
|
|
c67ade7017 | ||
|
|
de7ddab5e6 | ||
|
|
6efdb1e75e | ||
|
|
91de6a70c0 | ||
|
|
265568da70 | ||
|
|
98bb6e8957 | ||
|
|
b86ee200ec | ||
|
|
bdaceee408 | ||
|
|
16573216de | ||
|
|
e83618d39c | ||
|
|
b03f058f73 | ||
|
|
e4cee7c88f | ||
|
|
4adbf4f08e | ||
|
|
ffbc33a64a | ||
|
|
62c2b52a0c | ||
|
|
3c0eaec162 | ||
|
|
022ca91a6e | ||
|
|
54c9505cb4 | ||
|
|
512c595e88 | ||
|
|
b00e8011f4 | ||
|
|
89ee8cc204 | ||
|
|
a2b61f7c1c | ||
|
|
0a80bf3131 | ||
|
|
2cddc473ee | ||
|
|
25c9b41d0b | ||
|
|
3f28eaef94 | ||
|
|
1dcb88e1c2 | ||
|
|
8b85b8345d | ||
|
|
428cddc4ea | ||
|
|
ecd049c42a | ||
|
|
0fad3c88e4 | ||
|
|
31552a2169 | ||
|
|
1b89dae25d | ||
|
|
5e57bf92bf | ||
|
|
50ecbe0b50 | ||
|
|
cd9c15bc2c | ||
|
|
2ec8b1bc94 | ||
|
|
998146fc2d | ||
|
|
9c02a8dd2b | ||
|
|
a29c5fba5e | ||
|
|
93267e3e28 | ||
|
|
cc0cae480a | ||
|
|
85721b2b0b | ||
|
|
e701d06a52 | ||
|
|
a847567948 | ||
|
|
beb7ba7faf | ||
|
|
694cb782dc | ||
|
|
e4408091ad | ||
|
|
f15e666c8b | ||
|
|
65880ff902 | ||
|
|
cb4c45ae66 | ||
|
|
5b78d785ea | ||
|
|
cda8078ad7 | ||
|
|
a2b7aefff6 | ||
|
|
4a6689da57 | ||
|
|
6c4eea25e3 | ||
|
|
29f6fbe958 | ||
|
|
e820574a12 | ||
|
|
aec1da246c | ||
|
|
56592bf95e | ||
|
|
42a5476386 | ||
|
|
043e532bb9 | ||
|
|
68d6051696 | ||
|
|
86df4d695a | ||
|
|
09b28bb171 | ||
|
|
2d6fa0cef8 | ||
|
|
9828485c47 | ||
|
|
ee81551b11 | ||
|
|
1d5b082907 | ||
|
|
fd13a921a6 | ||
|
|
c08f4a5fc6 | ||
|
|
ad5f45de0c | ||
|
|
54126994c3 | ||
|
|
a725f3e11d | ||
|
|
0a78159c94 | ||
|
|
30f1853321 | ||
|
|
0adfa62f70 | ||
|
|
fdab1262bf | ||
|
|
f9bfc5f916 | ||
|
|
2e770ba9f4 | ||
|
|
c7aa19e3ba | ||
|
|
de188e8cfd | ||
|
|
b0e1d29cac | ||
|
|
06df6fd2ac | ||
|
|
ea4e3d8240 | ||
|
|
10126efe5c | ||
|
|
f07e60233c | ||
|
|
1ff8736146 | ||
|
|
4c264fa0af | ||
|
|
c8113901e5 | ||
|
|
03e09eff66 | ||
|
|
ee7f996b38 | ||
|
|
cb33cc5e35 | ||
|
|
c5ba98fcd7 | ||
|
|
aac56ddf36 | ||
|
|
80f22e4c11 | ||
|
|
62716648d6 | ||
|
|
3920d4e15d | ||
|
|
69be6f1e71 | ||
|
|
bf6eae1e4b | ||
|
|
04a58d139b | ||
|
|
703b50e051 | ||
|
|
dad9226ad2 | ||
|
|
da3414e4dc | ||
|
|
4a7674e9a0 | ||
|
|
4c26ac03cd | ||
|
|
a4311e1310 | ||
|
|
af943fd39f | ||
|
|
f4480b7ed6 | ||
|
|
058c9ab61b | ||
|
|
9d438da095 | ||
|
|
20f47fe3ed | ||
|
|
400327862e | ||
|
|
b05b850443 | ||
|
|
822dff55c4 | ||
|
|
26ba8822bd | ||
|
|
c4eb30e2c3 | ||
|
|
8fdee1dfef | ||
|
|
261855b09e | ||
|
|
81010268c8 | ||
|
|
774f9d51f8 | ||
|
|
2980d9ad03 | ||
|
|
e87f98f1f8 | ||
|
|
c3cf0ef3b4 | ||
|
|
651372d503 | ||
|
|
afd05eed2c | ||
|
|
5b9bb12894 | ||
|
|
4f18d6c536 | ||
|
|
9b8715ec57 | ||
|
|
91785e09fb | ||
|
|
77cf33ca92 | ||
|
|
0eabe8d2ac | ||
|
|
c4d708cb69 | ||
|
|
d9b91c7a1e | ||
|
|
542ec5a67b | ||
|
|
9de0e6f614 | ||
|
|
f6ccd7a44b | ||
|
|
d2fb9ec8ea | ||
|
|
b59a02a51a | ||
|
|
839a03fdcd | ||
|
|
99380b68ae | ||
|
|
c158f374bd | ||
|
|
7b81850c50 | ||
|
|
c4309ed2c7 | ||
|
|
2b9fa76413 | ||
|
|
ce7acbd33e | ||
|
|
58f13d591c | ||
|
|
b9dc833ceb | ||
|
|
982f94d84e | ||
|
|
6727205fce | ||
|
|
ccbab20fbf | ||
|
|
959da55bdf | ||
|
|
a29909a816 | ||
|
|
4c2a944928 | ||
|
|
dee56e767f | ||
|
|
29a02d71e9 | ||
|
|
8f75ede7de | ||
|
|
b653fc80be | ||
|
|
af458da091 | ||
|
|
ff34f71f2c | ||
|
|
dfd2d26ba4 | ||
|
|
e78b94daa7 | ||
|
|
a0206ba829 | ||
|
|
e3a821a1df | ||
|
|
656142fad5 | ||
|
|
2e2705c1f9 | ||
|
|
ffb291cf48 | ||
|
|
ec2a339fce | ||
|
|
6e9e7869ff | ||
|
|
727e267a67 | ||
|
|
5a82523ae1 | ||
|
|
b62d98c82a | ||
|
|
77884ecbcb | ||
|
|
8fa76b050f | ||
|
|
f884e001af | ||
|
|
30b16a37fd | ||
|
|
2abad30bbc | ||
|
|
88e8443d9f | ||
|
|
d59526e9af | ||
|
|
345024e40a | ||
|
|
f7d216ae10 | ||
|
|
02b19de50e | ||
|
|
fa6cd55383 | ||
|
|
35c991c604 | ||
|
|
bee7e1edac | ||
|
|
e6af4972b5 | ||
|
|
87c0aee3f3 | ||
|
|
3e89fa35db | ||
|
|
550add0500 | ||
|
|
3af07bbf04 | ||
|
|
df1ee6ee19 | ||
|
|
dd56a8f658 | ||
|
|
f76cb9a6dd | ||
|
|
37dc490d20 | ||
|
|
a8e9261c81 | ||
|
|
c22581f948 | ||
|
|
01ade933db | ||
|
|
156e6d86d0 | ||
|
|
28430fe379 | ||
|
|
b58d4c2db7 | ||
|
|
7c9945c983 | ||
|
|
efbcdb6087 | ||
|
|
00ab9d1574 | ||
|
|
2ff789c071 | ||
|
|
9df93e241a |
@@ -40,14 +40,14 @@ get_graphicdrivers() {
|
||||
DRI_DRIVERS="$DRI_DRIVERS,i915"
|
||||
XORG_DRIVERS="$XORG_DRIVERS intel"
|
||||
COMPOSITE_SUPPORT="yes"
|
||||
LIBVA="$LIBVA libva-driver-intel"
|
||||
LIBVA="$LIBVA libva-intel-driver"
|
||||
fi
|
||||
|
||||
if [ "$drv" = "i965" ]; then
|
||||
DRI_DRIVERS="$DRI_DRIVERS,i965"
|
||||
XORG_DRIVERS="$XORG_DRIVERS intel"
|
||||
COMPOSITE_SUPPORT="yes"
|
||||
LIBVA="$LIBVA libva-driver-intel"
|
||||
LIBVA="$LIBVA libva-intel-driver"
|
||||
fi
|
||||
|
||||
if [ "$drv" = "nouveau" ]; then
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
{
|
||||
"label": "System",
|
||||
"filesystem_type": "FAT",
|
||||
"partition_size_nominal": 128,
|
||||
"partition_size_nominal": 160,
|
||||
"want_maximised": false,
|
||||
"uncompressed_tarball_size": 110,
|
||||
"uncompressed_tarball_size": 120,
|
||||
"mkfs_options": ""
|
||||
},
|
||||
{
|
||||
|
||||
@@ -4,17 +4,17 @@ if [ "$OPTIMIZATIONS" = normal ];then
|
||||
fi
|
||||
|
||||
if [ "$OPTIMIZATIONS" = size ];then
|
||||
GCC_OPTIM="-Os -fexcess-precision=fast -ffast-math"
|
||||
GCC_OPTIM="-Os -fexcess-precision=fast"
|
||||
LD_OPTIM="-Wl,--as-needed"
|
||||
fi
|
||||
|
||||
if [ "$LTO_SUPPORT" = yes ];then
|
||||
GCC_OPTIM="$GCC_OPTIM -flto"
|
||||
LD_OPTIM="$LD_OPTIM -fuse-linker-plugin -flto"
|
||||
GCC_OPTIM_LTO="-flto -ffat-lto-objects"
|
||||
LD_OPTIM_LTO="-fuse-linker-plugin -flto"
|
||||
fi
|
||||
|
||||
if [ "$GOLD_SUPPORT" = yes ];then
|
||||
LD_OPTIM="$LD_OPTIM -fuse-ld=gold"
|
||||
LD_OPTIM_GOLD="-fuse-ld=gold"
|
||||
fi
|
||||
|
||||
if [ "$DEBUG" = yes ]; then
|
||||
@@ -28,9 +28,9 @@ else
|
||||
fi
|
||||
|
||||
TARGET_CPPFLAGS=
|
||||
TARGET_CFLAGS="$TARGET_CFLAGS -Wall -pipe $GCC_OPTIM $PROJECT_CFLAGS"
|
||||
TARGET_CFLAGS="$TARGET_CFLAGS -Wall -pipe $GCC_OPTIM $GCC_OPTIM_LTO $PROJECT_CFLAGS"
|
||||
TARGET_CXXFLAGS="$TARGET_CFLAGS"
|
||||
TARGET_LDFLAGS="$TARGET_LDFLAGS $LD_OPTIM $GCC_OPTIM"
|
||||
TARGET_LDFLAGS="$TARGET_LDFLAGS $LD_OPTIM $LD_OPTIM_GOLD $LD_OPTIM_LTO $GCC_OPTIM"
|
||||
TARGET_LIBDIR="$SYSROOT_PREFIX/lib $SYSROOT_PREFIX/usr/lib"
|
||||
TARGET_INCDIR="$SYSROOT_PREFIX/include $SYSROOT_PREFIX/usr/include"
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# VERSION: set full version, use "devel" for development version
|
||||
OPENELEC_VERSION="3.95.5"
|
||||
OPENELEC_VERSION="4.0.5"
|
||||
|
||||
# OS_VERSION: OS Version
|
||||
OS_VERSION="4.0"
|
||||
|
||||
@@ -129,6 +129,7 @@ VDR_ARG="$VDR_ARG -P $PVR_PLUGIN"
|
||||
|
||||
cd $ADDON_DIR/config
|
||||
mkdir -p $ADDON_CONFIG_DIR
|
||||
mkdir -p "$VDR_VIDEO_DIR"
|
||||
|
||||
for dir in `find . -type d`; do
|
||||
mkdir -p $ADDON_CONFIG_DIR/$dir
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
From 180283e2307b07bbd3958d24382aab8271dd4c1d Mon Sep 17 00:00:00 2001
|
||||
From: Anssi Hannula <anssi.hannula@iki.fi>
|
||||
Date: Mon, 30 Sep 2013 23:46:50 +0300
|
||||
Subject: [PATCH 1/1] amixer: actually print all TLVs in a container TLV
|
||||
|
||||
Due to a wrong indexing of tlv[] decode_tlv() always skips to the end of
|
||||
the container TLV since the used tlv[1] contains the container TLV size
|
||||
instead of the intended element size.
|
||||
|
||||
This causes, for example, only the first HDMI channel map TLV to be
|
||||
shown.
|
||||
|
||||
Fix the indexing to actually use the element size.
|
||||
|
||||
Signed-off-by: Anssi Hannula <anssi.hannula@iki.fi>
|
||||
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
||||
---
|
||||
amixer/amixer.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/amixer/amixer.c b/amixer/amixer.c
|
||||
index 7727943..b83b0c3 100644
|
||||
--- a/amixer/amixer.c
|
||||
+++ b/amixer/amixer.c
|
||||
@@ -468,7 +468,7 @@ static void decode_tlv(unsigned int spaces, unsigned int *tlv, unsigned int tlv_
|
||||
return;
|
||||
}
|
||||
decode_tlv(spaces + 2, tlv + idx, tlv[idx+1] + 8);
|
||||
- idx += 2 + (tlv[1] + sizeof(unsigned int) - 1) / sizeof(unsigned int);
|
||||
+ idx += 2 + (tlv[idx+1] + sizeof(unsigned int) - 1) / sizeof(unsigned int);
|
||||
}
|
||||
break;
|
||||
case SND_CTL_TLVT_DB_SCALE:
|
||||
--
|
||||
1.7.11.7
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
From f1e991e81350e9388ab6cf04a64ac4b4389a588c Mon Sep 17 00:00:00 2001
|
||||
From: Anssi Hannula <anssi.hannula@iki.fi>
|
||||
Date: Tue, 1 Oct 2013 23:46:53 +0300
|
||||
Subject: [PATCH] amixer: fix indentation when printing container TLV contents
|
||||
|
||||
decode_tlv() adds indentation in the beginning, with the expectation
|
||||
that the TLV will be printed on the line afterwards in a switch-case.
|
||||
|
||||
However, in the case of a container TLV the switch-case simply adds
|
||||
another level of indentation and calls decode_tlv() for the inner TLVs.
|
||||
This causes the first inner TLV to be printed with too much indentation
|
||||
and double '|'.
|
||||
|
||||
Fix that by printing "container" and a newline for container TLVs, so
|
||||
that the result is as follows:
|
||||
: values=0,0,0,0,0,0,0,0
|
||||
| container
|
||||
| chmap-variable=FL,FR
|
||||
| chmap-variable=FL,FR,LFE
|
||||
| chmap-variable=FL,FR,FC
|
||||
|
||||
Signed-off-by: Anssi Hannula <anssi.hannula@iki.fi>
|
||||
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
||||
---
|
||||
amixer/amixer.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/amixer/amixer.c b/amixer/amixer.c
|
||||
index b83b0c3..cf82892 100644
|
||||
--- a/amixer/amixer.c
|
||||
+++ b/amixer/amixer.c
|
||||
@@ -460,6 +460,7 @@ static void decode_tlv(unsigned int spaces, unsigned int *tlv, unsigned int tlv_
|
||||
}
|
||||
switch (type) {
|
||||
case SND_CTL_TLVT_CONTAINER:
|
||||
+ printf("container\n");
|
||||
size += sizeof(unsigned int) -1;
|
||||
size /= sizeof(unsigned int);
|
||||
while (idx < size) {
|
||||
--
|
||||
1.7.11.7
|
||||
|
||||
@@ -0,0 +1,232 @@
|
||||
From a1992044d5813371ce71f5252187942f943b198d Mon Sep 17 00:00:00 2001
|
||||
From: Anssi Hannula <anssi.hannula@iki.fi>
|
||||
Date: Tue, 12 Nov 2013 00:04:02 +0200
|
||||
Subject: [PATCH] speaker-test: Fix chmapped channel selection without
|
||||
specified chmap
|
||||
|
||||
The channel selection currently does not work properly when there is a
|
||||
driver-provided non-ALSA-traditional channel map but no manual channel
|
||||
map was explicitely requested with "-m".
|
||||
|
||||
For example, the CEA/HDMI 8ch map is FL,FR,RLC,RRC,FC,LFE,RL,RR. Note
|
||||
that it is otherwise the same as the traditional ALSA channel map,
|
||||
except that the traditional rear speakers are considered
|
||||
rear-center speakers and the traditional side speakers are considered
|
||||
rear speakers.
|
||||
|
||||
Speaker-test tries to play back channels in this following order:
|
||||
0, /* Front Left */
|
||||
4, /* Center */
|
||||
1, /* Front Right */
|
||||
7, /* Side Right */
|
||||
3, /* Rear Right */
|
||||
2, /* Rear Left */
|
||||
6, /* Side Left */
|
||||
5, /* LFE */
|
||||
|
||||
When it is the time to play back Side Left/Right, speaker-test tries to
|
||||
look for SL/SR in the chmap, but doesn't find it, so it just plays back
|
||||
channels 6/7 (which indeed are the side speakers, or RL/RR in this
|
||||
channel map - so the correct channels are selected).
|
||||
|
||||
When it becomes the time to playback Rear Left/Right, speaker-test again
|
||||
tries to find RL/RR in the chmap, and this time it does find them in the
|
||||
chmap positions 6/7.
|
||||
|
||||
So the channels 6/7 are tested twice and 2/3 are never tested.
|
||||
|
||||
To fix this, define a generic playback order channel_order[] to be used
|
||||
when the channel map is present (but not user-defined) and generate a
|
||||
(speaker/playback number => channel number) mapping with the channels
|
||||
ordered in the following order:
|
||||
1. regular channels found in channel_order[] in the defined order,
|
||||
2. channels not found in channel_order[] ordered by channel number.
|
||||
3. UNKNOWN channels ordered by channel number.
|
||||
4. NA channels ordered by channel number.
|
||||
For channels outside the channel map just use their channel numbers (so
|
||||
they will be last after all of the above).
|
||||
|
||||
For example, if the playback device has a fictional default channel map
|
||||
of FR,FL,UNKNOWN1,FOO,BAR,RR,RL,UNKNOWN2, the playback order will be
|
||||
FL,FR,RR,RL,FOO,BAR,UNKNOWN1,UNKNOWN2(,any_extra_channels).
|
||||
|
||||
When the channel mapping is specified manually, the specified order is
|
||||
used for playback as before.
|
||||
|
||||
Signed-off-by: Anssi Hannula <anssi.hannula@iki.fi>
|
||||
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
||||
---
|
||||
speaker-test/speaker-test.c | 113 +++++++++++++++++++++++++++++++++++---------
|
||||
1 file changed, 91 insertions(+), 22 deletions(-)
|
||||
|
||||
diff --git a/speaker-test/speaker-test.c b/speaker-test/speaker-test.c
|
||||
index d35065f..25b08dc 100644
|
||||
--- a/speaker-test/speaker-test.c
|
||||
+++ b/speaker-test/speaker-test.c
|
||||
@@ -88,6 +88,8 @@ enum {
|
||||
#define BE_INT(v) (v)
|
||||
#endif
|
||||
|
||||
+#define ARRAY_SIZE(x) (int)(sizeof(x)/sizeof(x[0]))
|
||||
+
|
||||
static char *device = "default"; /* playback device */
|
||||
static snd_pcm_format_t format = SND_PCM_FORMAT_S16; /* sample format */
|
||||
static unsigned int rate = 48000; /* stream rate */
|
||||
@@ -110,6 +112,7 @@ static snd_pcm_t *pcm_handle = NULL;
|
||||
#ifdef CONFIG_SUPPORT_CHMAP
|
||||
static snd_pcm_chmap_t *channel_map;
|
||||
static int channel_map_set;
|
||||
+static unsigned int *ordered_channels;
|
||||
#endif
|
||||
|
||||
static const char *const channel_name[MAX_CHANNELS] = {
|
||||
@@ -156,36 +159,94 @@ static const int channels8[] = {
|
||||
5, /* LFE */
|
||||
};
|
||||
|
||||
-static int get_mapped_channel(int chn)
|
||||
-{
|
||||
#ifdef CONFIG_SUPPORT_CHMAP
|
||||
- static const int maps[MAX_CHANNELS] = {
|
||||
- SND_CHMAP_FL,
|
||||
- SND_CHMAP_FR,
|
||||
- SND_CHMAP_RL,
|
||||
- SND_CHMAP_RR,
|
||||
- SND_CHMAP_FC,
|
||||
- SND_CHMAP_LFE,
|
||||
- SND_CHMAP_SL,
|
||||
- SND_CHMAP_SR,
|
||||
- };
|
||||
+/* circular clockwise and bottom-to-top order */
|
||||
+static const int channel_order[] = {
|
||||
+ [SND_CHMAP_FLW] = 10,
|
||||
+ [SND_CHMAP_FL] = 20,
|
||||
+ [SND_CHMAP_TFL] = 30,
|
||||
+ [SND_CHMAP_FLC] = 40,
|
||||
+ [SND_CHMAP_TFLC] = 50,
|
||||
+ [SND_CHMAP_FC] = 60,
|
||||
+ [SND_CHMAP_TFC] = 70,
|
||||
+ [SND_CHMAP_FRC] = 80,
|
||||
+ [SND_CHMAP_TFRC] = 90,
|
||||
+ [SND_CHMAP_FR] = 100,
|
||||
+ [SND_CHMAP_TFR] = 110,
|
||||
+ [SND_CHMAP_FRW] = 120,
|
||||
+ [SND_CHMAP_SR] = 130,
|
||||
+ [SND_CHMAP_TSR] = 140,
|
||||
+ [SND_CHMAP_RR] = 150,
|
||||
+ [SND_CHMAP_TRR] = 160,
|
||||
+ [SND_CHMAP_RRC] = 170,
|
||||
+ [SND_CHMAP_RC] = 180,
|
||||
+ [SND_CHMAP_TRC] = 190,
|
||||
+ [SND_CHMAP_RLC] = 200,
|
||||
+ [SND_CHMAP_RL] = 210,
|
||||
+ [SND_CHMAP_TRL] = 220,
|
||||
+ [SND_CHMAP_SL] = 230,
|
||||
+ [SND_CHMAP_TSL] = 240,
|
||||
+ [SND_CHMAP_BC] = 250,
|
||||
+ [SND_CHMAP_TC] = 260,
|
||||
+ [SND_CHMAP_LLFE] = 270,
|
||||
+ [SND_CHMAP_LFE] = 280,
|
||||
+ [SND_CHMAP_RLFE] = 290,
|
||||
+ /* not in table = 10000 */
|
||||
+ [SND_CHMAP_UNKNOWN] = 20000,
|
||||
+ [SND_CHMAP_NA] = 30000,
|
||||
+};
|
||||
|
||||
- if (channel_map && maps[chn]) {
|
||||
- int i;
|
||||
- for (i = 0; i < channel_map->channels; i++) {
|
||||
- if (channel_map->pos[i] == maps[chn])
|
||||
- return i;
|
||||
- }
|
||||
+static int chpos_cmp(const void *chnum1p, const void *chnum2p)
|
||||
+{
|
||||
+ int chnum1 = *(int *)chnum1p;
|
||||
+ int chnum2 = *(int *)chnum2p;
|
||||
+ int chpos1 = channel_map->pos[chnum1];
|
||||
+ int chpos2 = channel_map->pos[chnum2];
|
||||
+ int weight1 = 10000;
|
||||
+ int weight2 = 10000;
|
||||
+
|
||||
+ if (chpos1 < ARRAY_SIZE(channel_order) && channel_order[chpos1])
|
||||
+ weight1 = channel_order[chpos1];
|
||||
+ if (chpos2 < ARRAY_SIZE(channel_order) && channel_order[chpos2])
|
||||
+ weight2 = channel_order[chpos2];
|
||||
+
|
||||
+ if (weight1 == weight2) {
|
||||
+ /* order by channel number if both have the same position (e.g. UNKNOWN)
|
||||
+ * or if neither is in channel_order[] */
|
||||
+ return chnum1 - chnum2;
|
||||
}
|
||||
-#endif
|
||||
- return chn;
|
||||
+
|
||||
+ /* order according to channel_order[] */
|
||||
+ return weight1 - weight2;
|
||||
+}
|
||||
+
|
||||
+static int *order_channels(void)
|
||||
+{
|
||||
+ /* create a (playback order => channel number) table with channels ordered
|
||||
+ * according to channel_order[] values */
|
||||
+ int i;
|
||||
+ int *ordered_chs;
|
||||
+
|
||||
+ ordered_chs = calloc(channel_map->channels, sizeof(*ordered_chs));
|
||||
+ if (!ordered_chs)
|
||||
+ return NULL;
|
||||
+
|
||||
+ for (i = 0; i < channel_map->channels; i++)
|
||||
+ ordered_chs[i] = i;
|
||||
+
|
||||
+ qsort(ordered_chs, channel_map->channels, sizeof(*ordered_chs), chpos_cmp);
|
||||
+
|
||||
+ return ordered_chs;
|
||||
}
|
||||
+#endif
|
||||
|
||||
static int get_speaker_channel(int chn)
|
||||
{
|
||||
#ifdef CONFIG_SUPPORT_CHMAP
|
||||
- if (channel_map_set)
|
||||
+ if (channel_map_set || (ordered_channels && chn >= channel_map->channels))
|
||||
return chn;
|
||||
+ if (ordered_channels)
|
||||
+ return ordered_channels[chn];
|
||||
#endif
|
||||
|
||||
switch (channels) {
|
||||
@@ -200,7 +261,7 @@ static int get_speaker_channel(int chn)
|
||||
break;
|
||||
}
|
||||
|
||||
- return get_mapped_channel(chn);
|
||||
+ return chn;
|
||||
}
|
||||
|
||||
static const char *get_channel_name(int chn)
|
||||
@@ -611,6 +672,11 @@ static int config_chmap(snd_pcm_t *handle, const char *mapstr)
|
||||
}
|
||||
|
||||
channel_map = snd_pcm_get_chmap(handle);
|
||||
+
|
||||
+ /* create a channel order table for default layouts */
|
||||
+ if (channel_map)
|
||||
+ ordered_channels = order_channels();
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
@@ -1230,6 +1296,9 @@ int main(int argc, char *argv[]) {
|
||||
|
||||
|
||||
free(frames);
|
||||
+#ifdef CONFIG_SUPPORT_CHMAP
|
||||
+ free(ordered_channels);
|
||||
+#endif
|
||||
|
||||
return prg_exit(EXIT_SUCCESS);
|
||||
}
|
||||
--
|
||||
1.7.11.7
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
From 5b0c6da0d8166cd404379740c5f75fda44ca5806 Mon Sep 17 00:00:00 2001
|
||||
From: Anssi Hannula <anssi.hannula@iki.fi>
|
||||
Date: Sun, 10 Nov 2013 20:29:18 +0200
|
||||
Subject: [PATCH] speaker-test: Always show chmap channel names if available
|
||||
|
||||
Currently speaker-test only uses channel names retrieved by
|
||||
snd_pcm_chmap_long_name() when a channel map has been manually set.
|
||||
|
||||
However, the device may provide a default (or fixed) channel map that
|
||||
differs from the traditional ALSA map, in which case wrong channel names
|
||||
are shown.
|
||||
|
||||
Fix that by always using the name from the channel map when a channel
|
||||
map is present.
|
||||
|
||||
Note that the names retrieved by snd_pcm_chmap_long_name() are not
|
||||
currently localized via gettext.
|
||||
|
||||
Also note that Linux kernel HDMI driver reported wrong default channel
|
||||
maps before 56cac413dd6d43af8355f5d1f90a199b540f73fc ("ALSA: hda - hdmi:
|
||||
Fix reported channel map on common default layouts").
|
||||
|
||||
Signed-off-by: Anssi Hannula <anssi.hannula@iki.fi>
|
||||
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
||||
---
|
||||
speaker-test/speaker-test.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/speaker-test/speaker-test.c b/speaker-test/speaker-test.c
|
||||
index 25b08dc..101bb0d 100644
|
||||
--- a/speaker-test/speaker-test.c
|
||||
+++ b/speaker-test/speaker-test.c
|
||||
@@ -267,7 +267,7 @@ static int get_speaker_channel(int chn)
|
||||
static const char *get_channel_name(int chn)
|
||||
{
|
||||
#ifdef CONFIG_SUPPORT_CHMAP
|
||||
- if (channel_map_set && chn < channel_map->channels) {
|
||||
+ if (channel_map && chn < channel_map->channels) {
|
||||
const char *name = snd_pcm_chmap_long_name(channel_map->pos[chn]);
|
||||
return name ? name : "Unknown";
|
||||
}
|
||||
--
|
||||
1.7.11.7
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
From 58752c3ae32e03d676fa225c99c9a8dde9de39ed Mon Sep 17 00:00:00 2001
|
||||
From: Anssi Hannula <anssi.hannula@iki.fi>
|
||||
Date: Sun, 10 Nov 2013 20:29:19 +0200
|
||||
Subject: [PATCH] speaker-test: Show out-of-chmap channels as Unknown
|
||||
|
||||
Currently speaker-test falls back to ALSA default channel names for
|
||||
channels out-of-chmap.
|
||||
|
||||
This causes e.g. the 4th channel of
|
||||
$ speaker-test -c4 -Dhdmi -m "FR,FL,FC"
|
||||
to be shown as "Rear Right".
|
||||
|
||||
Change the code to show such channels as Unknown instead, similar to
|
||||
when snd_pcm_chmap_long_name() does not know the name.
|
||||
|
||||
Signed-off-by: Anssi Hannula <anssi.hannula@iki.fi>
|
||||
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
||||
---
|
||||
speaker-test/speaker-test.c | 6 ++++--
|
||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/speaker-test/speaker-test.c b/speaker-test/speaker-test.c
|
||||
index 101bb0d..261f399 100644
|
||||
--- a/speaker-test/speaker-test.c
|
||||
+++ b/speaker-test/speaker-test.c
|
||||
@@ -267,8 +267,10 @@ static int get_speaker_channel(int chn)
|
||||
static const char *get_channel_name(int chn)
|
||||
{
|
||||
#ifdef CONFIG_SUPPORT_CHMAP
|
||||
- if (channel_map && chn < channel_map->channels) {
|
||||
- const char *name = snd_pcm_chmap_long_name(channel_map->pos[chn]);
|
||||
+ if (channel_map) {
|
||||
+ const char *name = NULL;
|
||||
+ if (chn < channel_map->channels)
|
||||
+ name = snd_pcm_chmap_long_name(channel_map->pos[chn]);
|
||||
return name ? name : "Unknown";
|
||||
}
|
||||
#endif
|
||||
--
|
||||
1.7.11.7
|
||||
|
||||
@@ -37,101 +37,95 @@ if [ -f $HOME/.config/sound.conf ]; then
|
||||
|
||||
else
|
||||
|
||||
# get card num
|
||||
card=`echo $1 | sed 's/[^0-9]*//g'`
|
||||
|
||||
# set common mixer params
|
||||
mixer 0 Master 100%
|
||||
mixer 0 Front 100%
|
||||
mixer 0 PCM 100%
|
||||
mixer 0 Synth 100%
|
||||
mixer $card Master 100%
|
||||
mixer $card Front 100%
|
||||
mixer $card PCM 100%
|
||||
mixer $card Synth 100%
|
||||
|
||||
# mute CD, since using digital audio instead
|
||||
mixer 0 CD 0% mute
|
||||
mixer $card CD 0% mute
|
||||
|
||||
# Only unmute Line and Aux if they are possibly used.
|
||||
# mixer 0 Line 100%
|
||||
# mixer 0 Aux 100%
|
||||
# mixer $card Line 100%
|
||||
# mixer $card Aux 100%
|
||||
|
||||
# mute mic
|
||||
mixer 0 Mic 0% mute
|
||||
mixer $card Mic 0% mute
|
||||
|
||||
# ESS 1969 chipset has 2 PCM channels
|
||||
mixer 0 PCM,1 100%
|
||||
mixer $card PCM,1 100%
|
||||
|
||||
# Trident/YMFPCI/emu10k1
|
||||
mixer 0 Wave 100%
|
||||
mixer 0 Music 100%
|
||||
mixer 0 AC97 100%
|
||||
mixer 0 Surround 90%
|
||||
mixer 0 'Surround Digital' 90%
|
||||
mixer 0 'Wave Surround' 90%
|
||||
mixer 0 'Duplicate Front' 90%
|
||||
mixer 0 'Sigmatel 4-Speaker Stereo' 90%
|
||||
mixer $card Wave 100%
|
||||
mixer $card Music 100%
|
||||
mixer $card AC97 100%
|
||||
mixer $card Surround 90%
|
||||
mixer $card 'Surround Digital' 90%
|
||||
mixer $card 'Wave Surround' 90%
|
||||
mixer $card 'Duplicate Front' 90%
|
||||
mixer $card 'Sigmatel 4-Speaker Stereo' 90%
|
||||
|
||||
# CS4237B chipset:
|
||||
mixer 0 'Master Digital' 100%
|
||||
mixer $card 'Master Digital' 100%
|
||||
|
||||
# DRC
|
||||
mixer 0 'Dynamic Range Compression' 90%
|
||||
mixer $card 'Dynamic Range Compression' 90%
|
||||
|
||||
# Envy24 chips with analog outs
|
||||
mixer 0 DAC 100%
|
||||
mixer 0 DAC,0 100%
|
||||
mixer 0 DAC,1 100%
|
||||
mixer $card DAC 100%
|
||||
mixer $card DAC,0 100%
|
||||
mixer $card DAC,1 100%
|
||||
|
||||
# some notebooks use headphone instead of master
|
||||
mixer 0 Headphone 100%
|
||||
mixer 0 Speaker 100%
|
||||
mixer 0 'Internal Speaker' 0% mute
|
||||
mixer 0 Playback 100%
|
||||
mixer 1 Headphone 100%
|
||||
mixer 1 Speaker 100%
|
||||
|
||||
mixer 0 Center 100%
|
||||
mixer 0 LFE 100%
|
||||
mixer 0 Center/LFE 100%
|
||||
mixer $card Headphone 100%
|
||||
mixer $card Speaker 100%
|
||||
mixer $card 'Internal Speaker' 0% mute
|
||||
mixer $card Playback 100%
|
||||
mixer $card Headphone 100%
|
||||
mixer $card Speaker 100%
|
||||
mixer $card Center 100%
|
||||
mixer $card LFE 100%
|
||||
mixer $card Center/LFE 100%
|
||||
|
||||
# Intel P4P800-MX (Ubuntu bug #5813)
|
||||
mixer 0 'Master Playback Switch' on
|
||||
mixer $card 'Master Playback Switch' on
|
||||
|
||||
# set digital output mixer params
|
||||
mixer 0 'IEC958' 100% on
|
||||
mixer 0 'IEC958 Output' 100%
|
||||
mixer 0 'IEC958 Coaxial' 100%
|
||||
mixer 0 'IEC958 LiveDrive' 100%
|
||||
mixer 0 'IEC958 Optical Raw' 100%
|
||||
mixer 0 'SPDIF Out' 100%
|
||||
mixer 0 'SPDIF Front' 100%
|
||||
mixer 0 'SPDIF Rear' 100%
|
||||
mixer 0 'SPDIF Center/LFE' 100%
|
||||
mixer 0 'Master Digital' 100%
|
||||
mixer $card 'IEC958' 100% on
|
||||
mixer $card 'IEC958 Output' 100%
|
||||
mixer $card 'IEC958 Coaxial' 100%
|
||||
mixer $card 'IEC958 LiveDrive' 100%
|
||||
mixer $card 'IEC958 Optical Raw' 100%
|
||||
mixer $card 'SPDIF Out' 100%
|
||||
mixer $card 'SPDIF Front' 100%
|
||||
mixer $card 'SPDIF Rear' 100%
|
||||
mixer $card 'SPDIF Center/LFE' 100%
|
||||
mixer $card 'Master Digital' 100%
|
||||
|
||||
mixer 0 'Analog Front' 100%
|
||||
mixer 0 'Analog Rear' 100%
|
||||
mixer 0 'Analog Center/LFE' 100%
|
||||
mixer $card 'Analog Front' 100%
|
||||
mixer $card 'Analog Rear' 100%
|
||||
mixer $card 'Analog Center/LFE' 100%
|
||||
|
||||
# ASRock ION 330 (and perhaps others) has 2 IEC958 channels
|
||||
mixer 0 IEC958,0 on
|
||||
mixer 0 IEC958,1 on
|
||||
mixer $card IEC958,0 on
|
||||
mixer $card IEC958,1 on
|
||||
|
||||
# some ION2 has much more IEC958 channels ...
|
||||
mixer 0 IEC958,2 on
|
||||
mixer 0 IEC958,3 on
|
||||
|
||||
# ... or "simply" more soundchips
|
||||
mixer 1 IEC958,0 on
|
||||
mixer 1 IEC958,1 on
|
||||
mixer 1 IEC958,2 on
|
||||
mixer 1 IEC958,3 on
|
||||
mixer $card IEC958,2 on
|
||||
mixer $card IEC958,3 on
|
||||
|
||||
# ASRock ION 330 has Master Front set to 0
|
||||
mixer 0 'Master Front' 100%
|
||||
mixer $card 'Master Front' 100%
|
||||
|
||||
# Shuttle XS35GT needs this too
|
||||
mixer 0 'Master',0 100% on
|
||||
mixer $card 'Master',0 100% on
|
||||
|
||||
# and this for various Fusion devices like Zotac ZBOX
|
||||
mixer 1 'Master',0 100% on
|
||||
mixer 1 'Front',0 100% on
|
||||
|
||||
mixer $card 'Front',0 100% on
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
||||
@@ -17,4 +17,4 @@
|
||||
################################################################################
|
||||
|
||||
# When a sound device is detected, restore the volume settings
|
||||
KERNEL=="controlC[0-9]*", NAME="snd/%k", ACTION=="add", RUN+="soundconfig"
|
||||
KERNEL=="controlC[0-9]*", NAME="snd/%k", ACTION=="add", RUN+="soundconfig %k"
|
||||
|
||||
@@ -49,11 +49,6 @@ else
|
||||
PKG_CONFIGURE_OPTS_TARGET="$PKG_CONFIGURE_OPTS_TARGET --disable-sse"
|
||||
fi
|
||||
|
||||
pre_configure_target() {
|
||||
# flac-1.3.0 fails to build with LTO support
|
||||
strip_lto
|
||||
}
|
||||
|
||||
post_makeinstall_target() {
|
||||
rm -rf $INSTALL/usr/bin
|
||||
}
|
||||
|
||||
@@ -25,7 +25,6 @@ PKG_SITE="http://www.zlib.net"
|
||||
PKG_URL="http://www.zlib.net/$PKG_NAME-$PKG_VERSION.tar.xz"
|
||||
PKG_DEPENDS_TARGET="toolchain"
|
||||
PKG_DEPENDS_HOST=""
|
||||
PKG_DEPENDS_INIT="toolchain"
|
||||
PKG_PRIORITY="optional"
|
||||
PKG_SECTION="compress"
|
||||
PKG_SHORTDESC="zlib: A general purpose (ZIP) data compression library"
|
||||
@@ -36,7 +35,6 @@ PKG_AUTORECONF="no"
|
||||
|
||||
TARGET_CONFIGURE_OPTS="--prefix=/usr"
|
||||
HOST_CONFIGURE_OPTS="--prefix=$ROOT/$TOOLCHAIN"
|
||||
INIT_CONFIGURE_OPTS="--prefix=/"
|
||||
|
||||
pre_build_target() {
|
||||
mkdir -p $PKG_BUILD/.$TARGET_NAME
|
||||
@@ -47,8 +45,3 @@ pre_build_host() {
|
||||
mkdir -p $PKG_BUILD/.$HOST_NAME
|
||||
cp -RP $PKG_BUILD/* $PKG_BUILD/.$HOST_NAME
|
||||
}
|
||||
|
||||
pre_build_init() {
|
||||
mkdir -p $PKG_BUILD/.$TARGET_NAME-init
|
||||
cp -RP $PKG_BUILD/* $PKG_BUILD/.$TARGET_NAME-init
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="sqlite"
|
||||
PKG_VERSION="autoconf-3080403"
|
||||
PKG_VERSION="autoconf-3080500"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="PublicDomain"
|
||||
|
||||
62
packages/devel/autoconf-2.64/package.mk
vendored
62
packages/devel/autoconf-2.64/package.mk
vendored
@@ -1,62 +0,0 @@
|
||||
################################################################################
|
||||
# This file is part of OpenELEC - http://www.openelec.tv
|
||||
# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv)
|
||||
#
|
||||
# OpenELEC is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# OpenELEC 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 OpenELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="autoconf-2.64"
|
||||
PKG_VERSION="legacy"
|
||||
PKG_SOURCE_DIR="$PKG_NAME"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://sources.redhat.com/autoconf/"
|
||||
PKG_URL="http://ftp.gnu.org/gnu/autoconf/$PKG_NAME.tar.bz2"
|
||||
PKG_SOURCE_DIR="$PKG_NAME"
|
||||
PKG_DEPENDS_HOST="ccache:host m4:host"
|
||||
PKG_PRIORITY="optional"
|
||||
PKG_SECTION="devel"
|
||||
PKG_SHORTDESC="autoconf: A GNU tool for automatically configuring source code"
|
||||
PKG_LONGDESC="Autoconf is an extensible package of m4 macros that produce shell scripts to automatically configure software source code packages. These scripts can adapt the packages to many kinds of UNIX-like systems without manual user intervention. Autoconf creates a configuration script for a package from a template file that lists the operating system features that the package can use, in the form of m4 macro calls."
|
||||
|
||||
PKG_IS_ADDON="no"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
PKG_CONFIGURE_OPTS_HOST="EMACS=no \
|
||||
ac_cv_path_M4=$ROOT/$TOOLCHAIN/bin/m4 \
|
||||
ac_cv_prog_gnu_m4_gnu=no \
|
||||
--target=$TARGET_NAME \
|
||||
--program-suffix=-2.64"
|
||||
|
||||
make_host() {
|
||||
: # nothing todo
|
||||
}
|
||||
|
||||
makeinstall_host() {
|
||||
make install \
|
||||
prefix=$ROOT/$TOOLCHAIN \
|
||||
pkgdatadir=$ROOT/$TOOLCHAIN/share/$PKG_NAME \
|
||||
pkgdatadir=$ROOT/$TOOLCHAIN/lib/$PKG_NAME \
|
||||
pkgdatadir=$ROOT/$TOOLCHAIN/include/$PKG_NAME \
|
||||
install
|
||||
|
||||
make clean
|
||||
make install \
|
||||
prefix=$SYSROOT_PREFIX/usr \
|
||||
pkgdatadir=$SYSROOT_PREFIX/usr/share/$PKG_NAME \
|
||||
pkgdatadir=$SYSROOT_PREFIX/usr/lib/$PKG_NAME \
|
||||
pkgdatadir=$SYSROOT_PREFIX/usr/include/$PKG_NAME \
|
||||
install
|
||||
}
|
||||
62
packages/devel/autoconf-2.68/package.mk
vendored
62
packages/devel/autoconf-2.68/package.mk
vendored
@@ -1,62 +0,0 @@
|
||||
################################################################################
|
||||
# This file is part of OpenELEC - http://www.openelec.tv
|
||||
# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv)
|
||||
#
|
||||
# OpenELEC is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# OpenELEC 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 OpenELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="autoconf-2.68"
|
||||
PKG_VERSION="legacy"
|
||||
PKG_SOURCE_DIR="$PKG_NAME"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://sources.redhat.com/autoconf/"
|
||||
PKG_URL="http://ftp.gnu.org/gnu/autoconf/$PKG_NAME.tar.bz2"
|
||||
PKG_SOURCE_DIR="$PKG_NAME"
|
||||
PKG_DEPENDS_HOST="ccache:host m4:host"
|
||||
PKG_PRIORITY="optional"
|
||||
PKG_SECTION="devel"
|
||||
PKG_SHORTDESC="autoconf: A GNU tool for automatically configuring source code"
|
||||
PKG_LONGDESC="Autoconf is an extensible package of m4 macros that produce shell scripts to automatically configure software source code packages. These scripts can adapt the packages to many kinds of UNIX-like systems without manual user intervention. Autoconf creates a configuration script for a package from a template file that lists the operating system features that the package can use, in the form of m4 macro calls."
|
||||
|
||||
PKG_IS_ADDON="no"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
PKG_CONFIGURE_OPTS_HOST="EMACS=no \
|
||||
ac_cv_path_M4=$ROOT/$TOOLCHAIN/bin/m4 \
|
||||
ac_cv_prog_gnu_m4_gnu=no \
|
||||
--target=$TARGET_NAME \
|
||||
--program-suffix=-2.68"
|
||||
|
||||
make_host() {
|
||||
: # nothing todo
|
||||
}
|
||||
|
||||
makeinstall_host() {
|
||||
make install \
|
||||
prefix=$ROOT/$TOOLCHAIN \
|
||||
pkgdatadir=$ROOT/$TOOLCHAIN/share/$PKG_NAME \
|
||||
pkgdatadir=$ROOT/$TOOLCHAIN/lib/$PKG_NAME \
|
||||
pkgdatadir=$ROOT/$TOOLCHAIN/include/$PKG_NAME \
|
||||
install
|
||||
|
||||
make clean
|
||||
make install \
|
||||
prefix=$SYSROOT_PREFIX/usr \
|
||||
pkgdatadir=$SYSROOT_PREFIX/usr/share/$PKG_NAME \
|
||||
pkgdatadir=$SYSROOT_PREFIX/usr/lib/$PKG_NAME \
|
||||
pkgdatadir=$SYSROOT_PREFIX/usr/include/$PKG_NAME \
|
||||
install
|
||||
}
|
||||
@@ -48,6 +48,10 @@ PKG_CONFIGURE_OPTS_HOST="--disable-tests \
|
||||
--disable-bash-completion \
|
||||
--enable-asserts=yes"
|
||||
|
||||
pre_configure_target() {
|
||||
CFLAGS="$CFLAGS -fPIC -DPIC"
|
||||
}
|
||||
|
||||
post_makeinstall_target() {
|
||||
rm -rf $INSTALL/usr/bin/dbus-binding-tool
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://www.eglibc.org/"
|
||||
PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.xz"
|
||||
PKG_DEPENDS_TARGET="ccache:host autotools:host autoconf-2.68:host linux:host gcc:bootstrap"
|
||||
PKG_DEPENDS_TARGET="ccache:host autotools:host autoconf:host linux:host gcc:bootstrap"
|
||||
PKG_DEPENDS_INIT="eglibc"
|
||||
PKG_PRIORITY="optional"
|
||||
PKG_SECTION="toolchain/devel"
|
||||
@@ -70,7 +70,7 @@ EGLIBC_EXCLUDE_BIN="$EGLIBC_EXCLUDE_BIN xtrace zdump zic"
|
||||
pre_build_target() {
|
||||
cd $PKG_BUILD
|
||||
aclocal --force --verbose
|
||||
autoconf-2.68 --force --verbose
|
||||
autoconf --force --verbose
|
||||
cd -
|
||||
}
|
||||
|
||||
@@ -200,7 +200,6 @@ makeinstall_init() {
|
||||
mkdir -p $INSTALL/lib
|
||||
cp -PR $ROOT/$PKG_BUILD/.$TARGET_NAME/elf/ld*.so* $INSTALL/lib
|
||||
cp $ROOT/$PKG_BUILD/.$TARGET_NAME/libc.so.6 $INSTALL/lib
|
||||
cp $ROOT/$PKG_BUILD/.$TARGET_NAME/math/libm.so.6 $INSTALL/lib
|
||||
cp $ROOT/$PKG_BUILD/.$TARGET_NAME/nptl/libpthread.so.0 $INSTALL/lib
|
||||
|
||||
if [ "$TARGET_ARCH" = "arm" -a "$TARGET_FLOAT" = "hard" ]; then
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
From b702bd4fdb4aaebb6aadb3ce773bcc9eea8d2dc8 Mon Sep 17 00:00:00 2001
|
||||
From: Stefan Saraev <stefan@saraev.ca>
|
||||
Date: Thu, 24 Apr 2014 22:05:37 +0300
|
||||
Subject: [PATCH] allow newer autoconf
|
||||
|
||||
---
|
||||
aclocal.m4 | 5 -----
|
||||
1 files changed, 0 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/aclocal.m4 b/aclocal.m4
|
||||
index bc48586..0e3c7f4 100644
|
||||
--- a/aclocal.m4
|
||||
+++ b/aclocal.m4
|
||||
@@ -2,11 +2,6 @@ dnl We require that everyone use exactly the same Autoconf version so that
|
||||
dnl the internal functions defined and used by the main configure script
|
||||
dnl match those expected by the fragments.
|
||||
m4_define([GLIBC_AUTOCONF_VERSION], [2.68])
|
||||
-m4_if(m4_defn([AC_AUTOCONF_VERSION]), GLIBC_AUTOCONF_VERSION, [],
|
||||
- [m4_fatal(m4_flatten(
|
||||
-Exactly version GLIBC_AUTOCONF_VERSION of Autoconf is required but you have
|
||||
-m4_defn([AC_AUTOCONF_VERSION])
|
||||
-), [63])])dnl
|
||||
dnl
|
||||
dnl We define the macro GLIBC_PROVIDES to do an AC_PROVIDE for each macro
|
||||
dnl which appears in configure.ac before the sysdep configure scripts are run.
|
||||
--
|
||||
1.7.2.5
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="elfutils"
|
||||
PKG_VERSION="0.155"
|
||||
PKG_VERSION="0.158"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
@@ -32,16 +32,14 @@ PKG_LONGDESC="Elfutils is a collection of utilities, including eu-ld (a linker),
|
||||
PKG_IS_ADDON="no"
|
||||
PKG_AUTORECONF="yes"
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="--disable-werror \
|
||||
PKG_CONFIGURE_OPTS_TARGET="utrace_cv_cc_biarch=false \
|
||||
--disable-werror \
|
||||
--disable-progs \
|
||||
--with-zlib \
|
||||
--without-bzlib \
|
||||
--without-lzma"
|
||||
|
||||
pre_configure_target() {
|
||||
# elfutils fails to build with LTO support
|
||||
strip_lto
|
||||
|
||||
export CFLAGS="$CFLAGS -fPIC -DPIC"
|
||||
}
|
||||
|
||||
|
||||
@@ -1,92 +0,0 @@
|
||||
Allow the usage of an external implementation of the argp functions
|
||||
|
||||
uClibc lack the argp family of functions that glibc has. Therefore, we
|
||||
add a check in the configure script to see if argp_parse is available
|
||||
in the C library. If not, we look if it is available in the additional
|
||||
'argp' library. If so, we link against that library. If not, we error
|
||||
out.
|
||||
|
||||
This allows to build elfutils against uClibc with an external argp
|
||||
library.
|
||||
|
||||
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||
|
||||
Index: b/configure.ac
|
||||
===================================================================
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -269,6 +269,13 @@
|
||||
enable_progs=yes)
|
||||
AM_CONDITIONAL(ENABLE_PROGS, test "$enable_progs" = yes)
|
||||
|
||||
+AC_CHECK_FUNC([argp_parse])
|
||||
+if test "$ac_cv_func_argp_parse" != yes; then
|
||||
+ AC_CHECK_LIB([argp],[argp_parse],ARGP_LIBS=-largp,
|
||||
+ AC_MSG_ERROR([No argp_parse function available.]))
|
||||
+fi
|
||||
+AC_SUBST(ARGP_LIBS)
|
||||
+
|
||||
dnl Test for zlib and bzlib, gives ZLIB/BZLIB .am
|
||||
dnl conditional and config.h USE_ZLIB/USE_BZLIB #define.
|
||||
save_LIBS="$LIBS"
|
||||
Index: b/src/Makefile.am
|
||||
===================================================================
|
||||
--- a/src/Makefile.am
|
||||
+++ b/src/Makefile.am
|
||||
@@ -98,26 +98,29 @@
|
||||
# Buggy old compilers.
|
||||
readelf_no_Werror = yes
|
||||
|
||||
-readelf_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) $(libmudflap) -ldl
|
||||
+readelf_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) $(libmudflap) -ldl \
|
||||
+ $(ARGP_LIBS)
|
||||
nm_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) $(libmudflap) -ldl \
|
||||
- $(demanglelib)
|
||||
-size_LDADD = $(libelf) $(libeu) $(libmudflap)
|
||||
-strip_LDADD = $(libebl) $(libelf) $(libeu) $(libmudflap) -ldl
|
||||
-ld_LDADD = $(libebl) $(libelf) $(libeu) $(libmudflap) -ldl
|
||||
+ $(demanglelib) $(ARGP_LIBS)
|
||||
+size_LDADD = $(libelf) $(libeu) $(libmudflap) $(ARGP_LIBS)
|
||||
+strip_LDADD = $(libebl) $(libelf) $(libeu) $(libmudflap) -ldl $(ARGP_LIBS)
|
||||
+ld_LDADD = $(libebl) $(libelf) $(libeu) $(libmudflap) -ldl $(ARGP_LIBS)
|
||||
if NATIVE_LD
|
||||
# -ldl is always needed for libebl.
|
||||
ld_LDADD += libld_elf.a
|
||||
endif
|
||||
ld_LDFLAGS = -rdynamic
|
||||
-elflint_LDADD = $(libebl) $(libelf) $(libeu) $(libmudflap) -ldl
|
||||
-findtextrel_LDADD = $(libdw) $(libelf) $(libmudflap)
|
||||
-addr2line_LDADD = $(libdw) $(libelf) $(libmudflap)
|
||||
-elfcmp_LDADD = $(libebl) $(libelf) $(libmudflap) -ldl
|
||||
-objdump_LDADD = $(libasm) $(libebl) $(libelf) $(libeu) $(libmudflap) -ldl
|
||||
-ranlib_LDADD = libar.a $(libelf) $(libeu) $(libmudflap)
|
||||
-strings_LDADD = $(libelf) $(libeu) $(libmudflap)
|
||||
-ar_LDADD = libar.a $(libelf) $(libeu) $(libmudflap)
|
||||
-unstrip_LDADD = $(libebl) $(libelf) $(libdw) $(libeu) $(libmudflap) -ldl
|
||||
+elflint_LDADD = $(libebl) $(libelf) $(libeu) $(libmudflap) -ldl $(ARGP_LIBS)
|
||||
+findtextrel_LDADD = $(libdw) $(libelf) $(libmudflap) $(ARGP_LIBS)
|
||||
+addr2line_LDADD = $(libdw) $(libelf) $(libmudflap) $(ARGP_LIBS)
|
||||
+elfcmp_LDADD = $(libebl) $(libelf) $(libmudflap) -ldl $(ARGP_LIBS)
|
||||
+objdump_LDADD = $(libasm) $(libebl) $(libelf) $(libeu) $(libmudflap) -ldl \
|
||||
+ $(ARGP_LIBS)
|
||||
+ranlib_LDADD = libar.a $(libelf) $(libeu) $(libmudflap) $(ARGP_LIBS)
|
||||
+strings_LDADD = $(libelf) $(libeu) $(libmudflap) $(ARGP_LIBS)
|
||||
+ar_LDADD = libar.a $(libelf) $(libeu) $(libmudflap) $(ARGP_LIBS)
|
||||
+unstrip_LDADD = $(libebl) $(libelf) $(libdw) $(libeu) $(libmudflap) -ldl \
|
||||
+ $(ARGP_LIBS)
|
||||
|
||||
ldlex.o: ldscript.c
|
||||
ldlex_no_Werror = yes
|
||||
Index: b/libdw/Makefile.am
|
||||
===================================================================
|
||||
--- a/libdw/Makefile.am
|
||||
+++ b/libdw/Makefile.am
|
||||
@@ -111,7 +111,7 @@
|
||||
-Wl,--enable-new-dtags,-rpath,$(pkglibdir) \
|
||||
-Wl,--version-script,$<,--no-undefined \
|
||||
-Wl,--whole-archive $(filter-out $<,$^) -Wl,--no-whole-archive\
|
||||
- -ldl $(zip_LIBS)
|
||||
+ -ldl $(zip_LIBS) $(ARGP_LIBS)
|
||||
if readelf -d $@ | fgrep -q TEXTREL; then exit 1; fi
|
||||
ln -fs $@ $@.$(VERSION)
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
Provide a compatibility alias __memcpy
|
||||
|
||||
For some reason, libelf uses the internal glibc alias __memcpy, which
|
||||
doesn't exist in uClibc. Add a manual alias so that the build can
|
||||
proceed with uClibc.
|
||||
|
||||
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||
|
||||
Index: b/libelf/libelf.h
|
||||
===================================================================
|
||||
--- a/libelf/libelf.h
|
||||
+++ b/libelf/libelf.h
|
||||
@@ -34,6 +34,11 @@
|
||||
/* Get the ELF types. */
|
||||
#include <elf.h>
|
||||
|
||||
+#ifndef _LIBC
|
||||
+#ifndef __mempcpy
|
||||
+#define __mempcpy mempcpy
|
||||
+#endif
|
||||
+#endif
|
||||
|
||||
/* Known translation types. */
|
||||
typedef enum
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,28 @@
|
||||
commit 7f1eec317db79627b473c5b149a22a1b20d1f68f
|
||||
Author: Mark Wielaard <mjw@redhat.com>
|
||||
Date: Wed Apr 9 11:33:23 2014 +0200
|
||||
|
||||
CVE-2014-0172 Check for overflow before calling malloc to uncompress data.
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1085663
|
||||
|
||||
Reported-by: Florian Weimer <fweimer@redhat.com>
|
||||
Signed-off-by: Mark Wielaard <mjw@redhat.com>
|
||||
|
||||
diff --git a/libdw/dwarf_begin_elf.c b/libdw/dwarf_begin_elf.c
|
||||
index 79daeac..34ea373 100644
|
||||
--- a/libdw/dwarf_begin_elf.c
|
||||
+++ b/libdw/dwarf_begin_elf.c
|
||||
@@ -282,6 +282,12 @@ check_section (Dwarf *result, GElf_Ehdr *ehdr, Elf_Scn *scn, bool inscngrp)
|
||||
memcpy (&size, data->d_buf + 4, sizeof size);
|
||||
size = be64toh (size);
|
||||
|
||||
+ /* Check for unsigned overflow so malloc always allocated
|
||||
+ enough memory for both the Elf_Data header and the
|
||||
+ uncompressed section data. */
|
||||
+ if (unlikely (sizeof (Elf_Data) + size < size))
|
||||
+ break;
|
||||
+
|
||||
Elf_Data *zdata = malloc (sizeof (Elf_Data) + size);
|
||||
if (unlikely (zdata == NULL))
|
||||
break;
|
||||
@@ -0,0 +1,62 @@
|
||||
commit 65cefbd0793c0f9e90a326d7bebf0a47c93294ad
|
||||
Author: Josh Stone <jistone@redhat.com>
|
||||
Date: Tue Mar 11 10:19:28 2014 -0700
|
||||
|
||||
libdwfl: dwfl_module_getdwarf.c (open_elf) only (re)set mod->e_type once.
|
||||
|
||||
As noted in https://sourceware.org/bugzilla/show_bug.cgi?id=16676#c2 for
|
||||
systemtap, the heuristic used by open_elf to set the kernel Dwfl_Module
|
||||
type to ET_DYN, even if the underlying ELF file e_type was set to
|
||||
ET_EXEC, could trigger erroneously for non-kernel/non-main (debug or
|
||||
aux) files. Make sure we only set the e_type of the module once when
|
||||
processing the main file (when the phdrs can be trusted).
|
||||
|
||||
diff --git a/libdwfl/dwfl_module_getdwarf.c b/libdwfl/dwfl_module_getdwarf.c
|
||||
index c4bd739..f8de80b 100644
|
||||
--- a/libdwfl/dwfl_module_getdwarf.c
|
||||
+++ b/libdwfl/dwfl_module_getdwarf.c
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Find debugging and symbol information for a module in libdwfl.
|
||||
- Copyright (C) 2005-2012 Red Hat, Inc.
|
||||
+ Copyright (C) 2005-2012, 2014 Red Hat, Inc.
|
||||
This file is part of elfutils.
|
||||
|
||||
This file is free software; you can redistribute it and/or modify
|
||||
@@ -77,7 +77,7 @@ open_elf (Dwfl_Module *mod, struct dwfl_file *file)
|
||||
return DWFL_E (LIBELF, elf_errno ());
|
||||
}
|
||||
|
||||
- if (mod->e_type != ET_REL)
|
||||
+ if (ehdr->e_type != ET_REL)
|
||||
{
|
||||
/* In any non-ET_REL file, we compute the "synchronization address".
|
||||
|
||||
@@ -131,11 +131,24 @@ open_elf (Dwfl_Module *mod, struct dwfl_file *file)
|
||||
}
|
||||
}
|
||||
|
||||
- mod->e_type = ehdr->e_type;
|
||||
+ /* We only want to set the module e_type explictly once, derived from
|
||||
+ the main ELF file. (It might be changed for the kernel, because
|
||||
+ that is special - see below.) open_elf is always called first for
|
||||
+ the main ELF file, because both find_dw and find_symtab call
|
||||
+ __libdwfl_getelf first to open the main file. So don't let debug
|
||||
+ or aux files override the module e_type. The kernel heuristic
|
||||
+ below could otherwise trigger for non-kernel/non-main files, since
|
||||
+ their phdrs might not match the actual load addresses. */
|
||||
+ if (file == &mod->main)
|
||||
+ {
|
||||
+ mod->e_type = ehdr->e_type;
|
||||
|
||||
- /* Relocatable Linux kernels are ET_EXEC but act like ET_DYN. */
|
||||
- if (mod->e_type == ET_EXEC && file->vaddr != mod->low_addr)
|
||||
- mod->e_type = ET_DYN;
|
||||
+ /* Relocatable Linux kernels are ET_EXEC but act like ET_DYN. */
|
||||
+ if (mod->e_type == ET_EXEC && file->vaddr != mod->low_addr)
|
||||
+ mod->e_type = ET_DYN;
|
||||
+ }
|
||||
+ else
|
||||
+ assert (mod->main.elf != NULL);
|
||||
|
||||
return DWFL_E_NOERROR;
|
||||
}
|
||||
@@ -1,77 +0,0 @@
|
||||
diff -Naur elfutils-0.155/libasm/Makefile.am elfutils-0.155.patch/libasm/Makefile.am
|
||||
--- elfutils-0.155/libasm/Makefile.am 2012-08-27 20:27:31.000000000 +0200
|
||||
+++ elfutils-0.155.patch/libasm/Makefile.am 2013-03-05 18:11:43.841545009 +0100
|
||||
@@ -69,7 +69,6 @@
|
||||
-Wl,--version-script,$(srcdir)/libasm.map,--no-undefined \
|
||||
-Wl,--soname,$@.$(VERSION) \
|
||||
../libebl/libebl.a ../libelf/libelf.so $(libasm_so_LDLIBS)
|
||||
- if readelf -d $@ | fgrep -q TEXTREL; then exit 1; fi
|
||||
ln -fs $@ $@.$(VERSION)
|
||||
|
||||
install: install-am libasm.so
|
||||
diff -Naur elfutils-0.155/libasm/Makefile.in elfutils-0.155.patch/libasm/Makefile.in
|
||||
--- elfutils-0.155/libasm/Makefile.in 2012-08-27 20:29:45.000000000 +0200
|
||||
+++ elfutils-0.155.patch/libasm/Makefile.in 2013-03-05 18:12:05.604432305 +0100
|
||||
@@ -654,7 +654,6 @@
|
||||
@MUDFLAP_FALSE@ -Wl,--version-script,$(srcdir)/libasm.map,--no-undefined \
|
||||
@MUDFLAP_FALSE@ -Wl,--soname,$@.$(VERSION) \
|
||||
@MUDFLAP_FALSE@ ../libebl/libebl.a ../libelf/libelf.so $(libasm_so_LDLIBS)
|
||||
-@MUDFLAP_FALSE@ if readelf -d $@ | fgrep -q TEXTREL; then exit 1; fi
|
||||
@MUDFLAP_FALSE@ ln -fs $@ $@.$(VERSION)
|
||||
|
||||
@MUDFLAP_FALSE@install: install-am libasm.so
|
||||
diff -Naur elfutils-0.155/libdw/Makefile.am elfutils-0.155.patch/libdw/Makefile.am
|
||||
--- elfutils-0.155/libdw/Makefile.am 2012-08-27 20:27:31.000000000 +0200
|
||||
+++ elfutils-0.155.patch/libdw/Makefile.am 2013-03-05 18:12:26.753322780 +0100
|
||||
@@ -112,7 +112,6 @@
|
||||
-Wl,--version-script,$<,--no-undefined \
|
||||
-Wl,--whole-archive $(filter-out $<,$^) -Wl,--no-whole-archive\
|
||||
-ldl $(zip_LIBS)
|
||||
- if readelf -d $@ | fgrep -q TEXTREL; then exit 1; fi
|
||||
ln -fs $@ $@.$(VERSION)
|
||||
|
||||
install: install-am libdw.so
|
||||
diff -Naur elfutils-0.155/libdw/Makefile.in elfutils-0.155.patch/libdw/Makefile.in
|
||||
--- elfutils-0.155/libdw/Makefile.in 2012-08-27 20:29:45.000000000 +0200
|
||||
+++ elfutils-0.155.patch/libdw/Makefile.in 2013-03-05 18:12:41.272246520 +0100
|
||||
@@ -844,7 +844,6 @@
|
||||
@MUDFLAP_FALSE@ -Wl,--version-script,$<,--no-undefined \
|
||||
@MUDFLAP_FALSE@ -Wl,--whole-archive $(filter-out $<,$^) -Wl,--no-whole-archive\
|
||||
@MUDFLAP_FALSE@ -ldl $(zip_LIBS)
|
||||
-@MUDFLAP_FALSE@ if readelf -d $@ | fgrep -q TEXTREL; then exit 1; fi
|
||||
@MUDFLAP_FALSE@ ln -fs $@ $@.$(VERSION)
|
||||
|
||||
@MUDFLAP_FALSE@install: install-am libdw.so
|
||||
diff -Naur elfutils-0.155/libelf/Makefile.am elfutils-0.155.patch/libelf/Makefile.am
|
||||
--- elfutils-0.155/libelf/Makefile.am 2012-08-27 20:27:31.000000000 +0200
|
||||
+++ elfutils-0.155.patch/libelf/Makefile.am 2013-03-05 18:13:23.328024851 +0100
|
||||
@@ -106,7 +106,6 @@
|
||||
$(LINK) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \
|
||||
-Wl,--version-script,$(srcdir)/libelf.map,--no-undefined \
|
||||
-Wl,--soname,$@.$(VERSION),-z,defs,-z,relro $(libelf_so_LDLIBS)
|
||||
- if readelf -d $@ | fgrep -q TEXTREL; then exit 1; fi
|
||||
ln -fs $@ $@.$(VERSION)
|
||||
|
||||
install: install-am libelf.so
|
||||
diff -Naur elfutils-0.155/libelf/Makefile.in elfutils-0.155.patch/libelf/Makefile.in
|
||||
--- elfutils-0.155/libelf/Makefile.in 2012-08-27 20:29:45.000000000 +0200
|
||||
+++ elfutils-0.155.patch/libelf/Makefile.in 2013-03-05 18:13:37.270951393 +0100
|
||||
@@ -830,7 +830,6 @@
|
||||
@MUDFLAP_FALSE@ $(LINK) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \
|
||||
@MUDFLAP_FALSE@ -Wl,--version-script,$(srcdir)/libelf.map,--no-undefined \
|
||||
@MUDFLAP_FALSE@ -Wl,--soname,$@.$(VERSION),-z,defs,-z,relro $(libelf_so_LDLIBS)
|
||||
-@MUDFLAP_FALSE@ if readelf -d $@ | fgrep -q TEXTREL; then exit 1; fi
|
||||
@MUDFLAP_FALSE@ ln -fs $@ $@.$(VERSION)
|
||||
|
||||
@MUDFLAP_FALSE@install: install-am libelf.so
|
||||
diff -Naur elfutils-0.155/src/Makefile.in elfutils-0.155.patch/src/Makefile.in
|
||||
--- elfutils-0.155/src/Makefile.in 2012-08-27 20:29:46.000000000 +0200
|
||||
+++ elfutils-0.155.patch/src/Makefile.in 2013-03-05 18:14:22.361713943 +0100
|
||||
@@ -867,7 +867,6 @@
|
||||
@NATIVE_LD_FALSE@ $(LINK) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \
|
||||
@NATIVE_LD_FALSE@ $(libelf) $(libeu) \
|
||||
@NATIVE_LD_FALSE@ -Wl,--version-script,$(srcdir)/libld_elf_i386.map
|
||||
-@NATIVE_LD_FALSE@ $(textrel_check)
|
||||
|
||||
# Special rule to make it possible to define libld_elf_a_SOURCES as we do.
|
||||
# Otherwise make would complain.
|
||||
@@ -1,26 +0,0 @@
|
||||
diff -Naur elfutils-0.155/Makefile.am elfutils-0.155.patch/Makefile.am
|
||||
--- elfutils-0.155/Makefile.am 2012-08-27 20:27:31.000000000 +0200
|
||||
+++ elfutils-0.155.patch/Makefile.am 2013-03-05 18:38:47.565095550 +0100
|
||||
@@ -23,8 +23,7 @@
|
||||
pkginclude_HEADERS = version.h
|
||||
|
||||
# Add doc back when we have some real content.
|
||||
-SUBDIRS = config m4 lib libelf libebl libdwfl libdw libcpu libasm backends \
|
||||
- src po tests
|
||||
+SUBDIRS = config m4 lib libelf libebl libdwfl libdw
|
||||
|
||||
EXTRA_DIST = elfutils.spec GPG-KEY NOTES CONTRIBUTING \
|
||||
COPYING COPYING-GPLV2 COPYING-LGPLV3
|
||||
diff -Naur elfutils-0.155/Makefile.in elfutils-0.155.patch/Makefile.in
|
||||
--- elfutils-0.155/Makefile.in 2012-08-27 20:29:45.000000000 +0200
|
||||
+++ elfutils-0.155.patch/Makefile.in 2013-03-05 18:39:11.176974119 +0100
|
||||
@@ -256,8 +256,7 @@
|
||||
pkginclude_HEADERS = version.h
|
||||
|
||||
# Add doc back when we have some real content.
|
||||
-SUBDIRS = config m4 lib libelf libebl libdwfl libdw libcpu libasm backends \
|
||||
- src po tests
|
||||
+SUBDIRS = config m4 lib libelf libebl libdwfl libdw
|
||||
|
||||
EXTRA_DIST = elfutils.spec GPG-KEY NOTES CONTRIBUTING \
|
||||
COPYING COPYING-GPLV2 COPYING-LGPLV3
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
||||
--- elfutils/libdwfl/ChangeLog
|
||||
+++ elfutils/libdwfl/ChangeLog
|
||||
@@ -52,6 +52,11 @@
|
||||
@@ -680,6 +680,11 @@
|
||||
* dwfl_module_getdwarf.c (open_elf): Clear errno before CBFAIL.
|
||||
Reported by Kurt Roeckx <kurt@roeckx.be>.
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
This file is part of elfutils.
|
||||
|
||||
This file is free software; you can redistribute it and/or modify
|
||||
@@ -457,7 +457,10 @@ relocate_section (Dwfl_Module *mod, Elf
|
||||
@@ -456,7 +456,10 @@ relocate_section (Dwfl_Module *mod, Elf
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
size_t complete = 0;
|
||||
if (shdr->sh_type == SHT_REL)
|
||||
for (size_t relidx = 0; !result && relidx < nrels; ++relidx)
|
||||
@@ -559,7 +562,7 @@ relocate_section (Dwfl_Module *mod, Elf
|
||||
@@ -558,7 +561,7 @@ relocate_section (Dwfl_Module *mod, Elf
|
||||
nrels = next;
|
||||
}
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
|
||||
--- elfutils/libelf/ChangeLog
|
||||
+++ elfutils/libelf/ChangeLog
|
||||
@@ -703,10 +703,53 @@
|
||||
@@ -754,10 +754,53 @@
|
||||
If section content hasn't been read yet, do it before looking for the
|
||||
block size. If no section data present, infer size of section header.
|
||||
|
||||
@@ -253,7 +253,7 @@
|
||||
|
||||
--- elfutils/libelf/elf_getarsym.c
|
||||
+++ elfutils/libelf/elf_getarsym.c
|
||||
@@ -181,6 +181,9 @@ elf_getarsym (elf, ptr)
|
||||
@@ -183,6 +183,9 @@ elf_getarsym (elf, ptr)
|
||||
size_t index_size = atol (tmpbuf);
|
||||
|
||||
if (SARMAG + sizeof (struct ar_hdr) + index_size > elf->maximum_size
|
||||
@@ -902,7 +902,7 @@
|
||||
#endif /* libelfP.h */
|
||||
--- elfutils/src/ChangeLog
|
||||
+++ elfutils/src/ChangeLog
|
||||
@@ -344,6 +344,12 @@
|
||||
@@ -702,6 +702,12 @@
|
||||
|
||||
* readelf.c (dwarf_attr_string): Grok DW_AT_GNU_odr_signature.
|
||||
|
||||
@@ -915,7 +915,7 @@
|
||||
2011-02-11 Roland McGrath <roland@redhat.com>
|
||||
|
||||
* elfcmp.c (verbose): New variable.
|
||||
@@ -2056,6 +2062,16 @@
|
||||
@@ -2414,6 +2420,16 @@
|
||||
object symbols or symbols with unknown type.
|
||||
(check_rel): Likewise.
|
||||
|
||||
@@ -932,7 +932,7 @@
|
||||
2005-06-08 Roland McGrath <roland@redhat.com>
|
||||
|
||||
* readelf.c (print_ops): Add consts.
|
||||
@@ -2101,6 +2117,19 @@
|
||||
@@ -2459,6 +2475,19 @@
|
||||
|
||||
* readelf.c (dwarf_tag_string): Add new tags.
|
||||
|
||||
@@ -1027,7 +1027,7 @@
|
||||
}
|
||||
|
||||
if (sym->st_shndx == SHN_XINDEX)
|
||||
@@ -1032,9 +1042,11 @@ is_rel_dyn (Ebl *ebl, const GElf_Ehdr *e
|
||||
@@ -1040,9 +1050,11 @@ is_rel_dyn (Ebl *ebl, const GElf_Ehdr *e
|
||||
{
|
||||
GElf_Shdr rcshdr_mem;
|
||||
const GElf_Shdr *rcshdr = gelf_getshdr (scn, &rcshdr_mem);
|
||||
@@ -1041,7 +1041,7 @@
|
||||
{
|
||||
/* Found the dynamic section. Look through it. */
|
||||
Elf_Data *d = elf_getdata (scn, NULL);
|
||||
@@ -1044,7 +1056,9 @@ is_rel_dyn (Ebl *ebl, const GElf_Ehdr *e
|
||||
@@ -1052,7 +1064,9 @@ is_rel_dyn (Ebl *ebl, const GElf_Ehdr *e
|
||||
{
|
||||
GElf_Dyn dyn_mem;
|
||||
GElf_Dyn *dyn = gelf_getdyn (d, cnt, &dyn_mem);
|
||||
@@ -1052,7 +1052,7 @@
|
||||
|
||||
if (dyn->d_tag == DT_RELCOUNT)
|
||||
{
|
||||
@@ -1058,7 +1072,9 @@ section [%2d] '%s': DT_RELCOUNT used for
|
||||
@@ -1066,7 +1080,9 @@ section [%2d] '%s': DT_RELCOUNT used for
|
||||
/* Does the number specified number of relative
|
||||
relocations exceed the total number of
|
||||
relocations? */
|
||||
@@ -1063,7 +1063,7 @@
|
||||
ERROR (gettext ("\
|
||||
section [%2d] '%s': DT_RELCOUNT value %d too high for this section\n"),
|
||||
idx, section_name (ebl, idx),
|
||||
@@ -1218,7 +1234,8 @@ section [%2d] '%s': no relocations for m
|
||||
@@ -1226,7 +1242,8 @@ section [%2d] '%s': no relocations for m
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1073,7 +1073,7 @@
|
||||
ERROR (gettext (reltype == ELF_T_RELA ? "\
|
||||
section [%2d] '%s': section entry size does not match ElfXX_Rela\n" : "\
|
||||
section [%2d] '%s': section entry size does not match ElfXX_Rel\n"),
|
||||
@@ -1441,7 +1458,8 @@ check_rela (Ebl *ebl, GElf_Ehdr *ehdr, G
|
||||
@@ -1449,7 +1466,8 @@ check_rela (Ebl *ebl, GElf_Ehdr *ehdr, G
|
||||
Elf_Data *symdata = elf_getdata (symscn, NULL);
|
||||
enum load_state state = state_undecided;
|
||||
|
||||
@@ -1083,7 +1083,7 @@
|
||||
{
|
||||
GElf_Rela rela_mem;
|
||||
GElf_Rela *rela = gelf_getrela (data, cnt, &rela_mem);
|
||||
@@ -1491,7 +1509,8 @@ check_rel (Ebl *ebl, GElf_Ehdr *ehdr, GE
|
||||
@@ -1499,7 +1517,8 @@ check_rel (Ebl *ebl, GElf_Ehdr *ehdr, GE
|
||||
Elf_Data *symdata = elf_getdata (symscn, NULL);
|
||||
enum load_state state = state_undecided;
|
||||
|
||||
@@ -1093,7 +1093,7 @@
|
||||
{
|
||||
GElf_Rel rel_mem;
|
||||
GElf_Rel *rel = gelf_getrel (data, cnt, &rel_mem);
|
||||
@@ -1590,7 +1609,8 @@ section [%2d] '%s': referenced as string
|
||||
@@ -1598,7 +1617,8 @@ section [%2d] '%s': referenced as string
|
||||
shdr->sh_link, section_name (ebl, shdr->sh_link),
|
||||
idx, section_name (ebl, idx));
|
||||
|
||||
@@ -1103,7 +1103,7 @@
|
||||
ERROR (gettext ("\
|
||||
section [%2d] '%s': section entry size does not match ElfXX_Dyn\n"),
|
||||
idx, section_name (ebl, idx));
|
||||
@@ -1600,7 +1620,7 @@ section [%2d] '%s': section entry size d
|
||||
@@ -1608,7 +1628,7 @@ section [%2d] '%s': section entry size d
|
||||
idx, section_name (ebl, idx));
|
||||
|
||||
bool non_null_warned = false;
|
||||
@@ -1112,7 +1112,7 @@
|
||||
{
|
||||
GElf_Dyn dyn_mem;
|
||||
GElf_Dyn *dyn = gelf_getdyn (data, cnt, &dyn_mem);
|
||||
@@ -1872,6 +1892,8 @@ section [%2d] '%s': entry size does not
|
||||
@@ -1880,6 +1900,8 @@ section [%2d] '%s': entry size does not
|
||||
idx, section_name (ebl, idx));
|
||||
|
||||
if (symshdr != NULL
|
||||
@@ -1121,7 +1121,7 @@
|
||||
&& (shdr->sh_size / shdr->sh_entsize
|
||||
< symshdr->sh_size / symshdr->sh_entsize))
|
||||
ERROR (gettext ("\
|
||||
@@ -1898,6 +1920,12 @@ section [%2d] '%s': extended section ind
|
||||
@@ -1906,6 +1928,12 @@ section [%2d] '%s': extended section ind
|
||||
}
|
||||
|
||||
Elf_Data *data = elf_getdata (elf_getscn (ebl->elf, idx), NULL);
|
||||
@@ -1134,7 +1134,7 @@
|
||||
|
||||
if (*((Elf32_Word *) data->d_buf) != 0)
|
||||
ERROR (gettext ("symbol 0 should have zero extended section index\n"));
|
||||
@@ -1940,7 +1968,7 @@ section [%2d] '%s': hash table section i
|
||||
@@ -1948,7 +1976,7 @@ section [%2d] '%s': hash table section i
|
||||
|
||||
size_t maxidx = nchain;
|
||||
|
||||
@@ -1143,7 +1143,7 @@
|
||||
{
|
||||
size_t symsize = symshdr->sh_size / symshdr->sh_entsize;
|
||||
|
||||
@@ -1951,18 +1979,28 @@ section [%2d] '%s': hash table section i
|
||||
@@ -1959,18 +1987,28 @@ section [%2d] '%s': hash table section i
|
||||
maxidx = symsize;
|
||||
}
|
||||
|
||||
@@ -1174,7 +1174,7 @@
|
||||
}
|
||||
|
||||
|
||||
@@ -1992,18 +2030,28 @@ section [%2d] '%s': hash table section i
|
||||
@@ -2000,18 +2038,28 @@ section [%2d] '%s': hash table section i
|
||||
maxidx = symsize;
|
||||
}
|
||||
|
||||
@@ -1206,7 +1206,7 @@
|
||||
}
|
||||
|
||||
|
||||
@@ -2028,7 +2076,7 @@ section [%2d] '%s': bitmask size not pow
|
||||
@@ -2036,7 +2084,7 @@ section [%2d] '%s': bitmask size not pow
|
||||
if (shdr->sh_size < (4 + bitmask_words + nbuckets) * sizeof (Elf32_Word))
|
||||
{
|
||||
ERROR (gettext ("\
|
||||
@@ -1215,7 +1215,7 @@
|
||||
idx, section_name (ebl, idx), (long int) shdr->sh_size,
|
||||
(long int) ((4 + bitmask_words + nbuckets) * sizeof (Elf32_Word)));
|
||||
return;
|
||||
@@ -2700,8 +2748,9 @@ section [%2d] '%s' refers in sh_link to
|
||||
@@ -2708,8 +2756,9 @@ section [%2d] '%s' refers in sh_link to
|
||||
|
||||
/* The number of elements in the version symbol table must be the
|
||||
same as the number of symbols. */
|
||||
@@ -1229,7 +1229,7 @@
|
||||
idx, section_name (ebl, idx),
|
||||
--- elfutils/src/readelf.c
|
||||
+++ elfutils/src/readelf.c
|
||||
@@ -1189,6 +1189,8 @@ handle_scngrp (Ebl *ebl, Elf_Scn *scn, G
|
||||
@@ -1364,6 +1364,8 @@ handle_scngrp (Ebl *ebl, Elf_Scn *scn, G
|
||||
Elf32_Word *grpref = (Elf32_Word *) data->d_buf;
|
||||
|
||||
GElf_Sym sym_mem;
|
||||
@@ -1238,7 +1238,7 @@
|
||||
printf ((grpref[0] & GRP_COMDAT)
|
||||
? ngettext ("\
|
||||
\nCOMDAT section group [%2zu] '%s' with signature '%s' contains %zu entry:\n",
|
||||
@@ -1201,8 +1203,8 @@ handle_scngrp (Ebl *ebl, Elf_Scn *scn, G
|
||||
@@ -1376,8 +1378,8 @@ handle_scngrp (Ebl *ebl, Elf_Scn *scn, G
|
||||
data->d_size / sizeof (Elf32_Word) - 1),
|
||||
elf_ndxscn (scn),
|
||||
elf_strptr (ebl->elf, shstrndx, shdr->sh_name),
|
||||
@@ -1249,7 +1249,7 @@
|
||||
?: gettext ("<INVALID SYMBOL>"),
|
||||
data->d_size / sizeof (Elf32_Word) - 1);
|
||||
|
||||
@@ -1353,10 +1355,12 @@ static void
|
||||
@@ -1528,10 +1530,12 @@ static void
|
||||
handle_dynamic (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr)
|
||||
{
|
||||
int class = gelf_getclass (ebl->elf);
|
||||
@@ -1263,7 +1263,7 @@
|
||||
|
||||
/* Get the data of the section. */
|
||||
data = elf_getdata (scn, NULL);
|
||||
@@ -1368,21 +1372,26 @@ handle_dynamic (Ebl *ebl, Elf_Scn *scn,
|
||||
@@ -1543,21 +1547,26 @@ handle_dynamic (Ebl *ebl, Elf_Scn *scn,
|
||||
error (EXIT_FAILURE, 0,
|
||||
gettext ("cannot get section header string table index"));
|
||||
|
||||
@@ -1296,7 +1296,7 @@
|
||||
{
|
||||
GElf_Dyn dynmem;
|
||||
GElf_Dyn *dyn = gelf_getdyn (data, cnt, &dynmem);
|
||||
@@ -1531,7 +1540,8 @@ static void
|
||||
@@ -1706,7 +1715,8 @@ static void
|
||||
handle_relocs_rel (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, GElf_Shdr *shdr)
|
||||
{
|
||||
int class = gelf_getclass (ebl->elf);
|
||||
@@ -1306,7 +1306,7 @@
|
||||
|
||||
/* Get the data of the section. */
|
||||
Elf_Data *data = elf_getdata (scn, NULL);
|
||||
@@ -1717,7 +1727,8 @@ static void
|
||||
@@ -1892,7 +1902,8 @@ static void
|
||||
handle_relocs_rela (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, GElf_Shdr *shdr)
|
||||
{
|
||||
int class = gelf_getclass (ebl->elf);
|
||||
@@ -1316,7 +1316,7 @@
|
||||
|
||||
/* Get the data of the section. */
|
||||
Elf_Data *data = elf_getdata (scn, NULL);
|
||||
@@ -1964,6 +1975,13 @@ handle_symtab (Ebl *ebl, Elf_Scn *scn, G
|
||||
@@ -2139,6 +2150,13 @@ handle_symtab (Ebl *ebl, Elf_Scn *scn, G
|
||||
error (EXIT_FAILURE, 0,
|
||||
gettext ("cannot get section header string table index"));
|
||||
|
||||
@@ -1330,7 +1330,7 @@
|
||||
/* Now we can compute the number of entries in the section. */
|
||||
unsigned int nsyms = data->d_size / (class == ELFCLASS32
|
||||
? sizeof (Elf32_Sym)
|
||||
@@ -1974,15 +1992,12 @@ handle_symtab (Ebl *ebl, Elf_Scn *scn, G
|
||||
@@ -2149,15 +2167,12 @@ handle_symtab (Ebl *ebl, Elf_Scn *scn, G
|
||||
nsyms),
|
||||
(unsigned int) elf_ndxscn (scn),
|
||||
elf_strptr (ebl->elf, shstrndx, shdr->sh_name), nsyms);
|
||||
@@ -1347,7 +1347,7 @@
|
||||
|
||||
fputs_unlocked (class == ELFCLASS32
|
||||
? gettext ("\
|
||||
@@ -2218,7 +2233,13 @@ handle_verneed (Ebl *ebl, Elf_Scn *scn,
|
||||
@@ -2393,7 +2408,13 @@ handle_verneed (Ebl *ebl, Elf_Scn *scn,
|
||||
error (EXIT_FAILURE, 0,
|
||||
gettext ("cannot get section header string table index"));
|
||||
|
||||
@@ -1362,7 +1362,7 @@
|
||||
printf (ngettext ("\
|
||||
\nVersion needs section [%2u] '%s' contains %d entry:\n Addr: %#0*" PRIx64 " Offset: %#08" PRIx64 " Link to section: [%2u] '%s'\n",
|
||||
"\
|
||||
@@ -2229,9 +2250,7 @@ handle_verneed (Ebl *ebl, Elf_Scn *scn,
|
||||
@@ -2404,9 +2425,7 @@ handle_verneed (Ebl *ebl, Elf_Scn *scn,
|
||||
class == ELFCLASS32 ? 10 : 18, shdr->sh_addr,
|
||||
shdr->sh_offset,
|
||||
(unsigned int) shdr->sh_link,
|
||||
@@ -1373,7 +1373,7 @@
|
||||
|
||||
unsigned int offset = 0;
|
||||
for (int cnt = shdr->sh_info; --cnt >= 0; )
|
||||
@@ -2284,8 +2303,14 @@ handle_verdef (Ebl *ebl, Elf_Scn *scn, G
|
||||
@@ -2459,8 +2478,14 @@ handle_verdef (Ebl *ebl, Elf_Scn *scn, G
|
||||
error (EXIT_FAILURE, 0,
|
||||
gettext ("cannot get section header string table index"));
|
||||
|
||||
@@ -1389,7 +1389,7 @@
|
||||
printf (ngettext ("\
|
||||
\nVersion definition section [%2u] '%s' contains %d entry:\n Addr: %#0*" PRIx64 " Offset: %#08" PRIx64 " Link to section: [%2u] '%s'\n",
|
||||
"\
|
||||
@@ -2297,9 +2322,7 @@ handle_verdef (Ebl *ebl, Elf_Scn *scn, G
|
||||
@@ -2472,9 +2497,7 @@ handle_verdef (Ebl *ebl, Elf_Scn *scn, G
|
||||
class == ELFCLASS32 ? 10 : 18, shdr->sh_addr,
|
||||
shdr->sh_offset,
|
||||
(unsigned int) shdr->sh_link,
|
||||
@@ -1400,7 +1400,7 @@
|
||||
|
||||
unsigned int offset = 0;
|
||||
for (int cnt = shdr->sh_info; --cnt >= 0; )
|
||||
@@ -2561,25 +2584,30 @@ handle_versym (Ebl *ebl, Elf_Scn *scn, G
|
||||
@@ -2736,25 +2759,30 @@ handle_versym (Ebl *ebl, Elf_Scn *scn, G
|
||||
filename = NULL;
|
||||
}
|
||||
|
||||
@@ -1438,7 +1438,7 @@
|
||||
{
|
||||
if (cnt % 2 == 0)
|
||||
printf ("\n %4d:", cnt);
|
||||
@@ -2628,7 +2656,17 @@ print_hash_info (Ebl *ebl, Elf_Scn *scn,
|
||||
@@ -2803,7 +2831,17 @@ print_hash_info (Ebl *ebl, Elf_Scn *scn,
|
||||
for (Elf32_Word cnt = 0; cnt < nbucket; ++cnt)
|
||||
++counts[lengths[cnt]];
|
||||
|
||||
@@ -1457,7 +1457,7 @@
|
||||
printf (ngettext ("\
|
||||
\nHistogram for bucket list length in section [%2u] '%s' (total of %d bucket):\n Addr: %#0*" PRIx64 " Offset: %#08" PRIx64 " Link to section: [%2u] '%s'\n",
|
||||
"\
|
||||
@@ -2641,9 +2679,7 @@ print_hash_info (Ebl *ebl, Elf_Scn *scn,
|
||||
@@ -2816,9 +2854,7 @@ print_hash_info (Ebl *ebl, Elf_Scn *scn,
|
||||
shdr->sh_addr,
|
||||
shdr->sh_offset,
|
||||
(unsigned int) shdr->sh_link,
|
||||
@@ -1468,7 +1468,7 @@
|
||||
|
||||
if (extrastr != NULL)
|
||||
fputs (extrastr, stdout);
|
||||
@@ -2903,7 +2939,8 @@ print_liblist (Ebl *ebl)
|
||||
@@ -3078,7 +3114,8 @@ print_liblist (Ebl *ebl)
|
||||
|
||||
if (shdr != NULL && shdr->sh_type == SHT_GNU_LIBLIST)
|
||||
{
|
||||
@@ -1478,7 +1478,7 @@
|
||||
printf (ngettext ("\
|
||||
\nLibrary list section [%2zu] '%s' at offset %#0" PRIx64 " contains %d entry:\n",
|
||||
"\
|
||||
@@ -4164,6 +4201,16 @@ print_debug_aranges_section (Dwfl_Module
|
||||
@@ -4398,6 +4435,16 @@ print_decoded_aranges_section (Ebl *ebl,
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1497,7 +1497,7 @@
|
||||
"\
|
||||
--- elfutils/src/strip.c
|
||||
+++ elfutils/src/strip.c
|
||||
@@ -564,6 +564,11 @@ handle_elf (int fd, Elf *elf, const char
|
||||
@@ -565,6 +565,11 @@ handle_elf (int fd, Elf *elf, const char
|
||||
goto fail_close;
|
||||
}
|
||||
|
||||
@@ -1509,7 +1509,7 @@
|
||||
/* Storage for section information. We leave room for two more
|
||||
entries since we unconditionally create a section header string
|
||||
table. Maybe some weird tool created an ELF file without one.
|
||||
@@ -585,7 +590,7 @@ handle_elf (int fd, Elf *elf, const char
|
||||
@@ -586,7 +591,7 @@ handle_elf (int fd, Elf *elf, const char
|
||||
{
|
||||
/* This should always be true (i.e., there should not be any
|
||||
holes in the numbering). */
|
||||
@@ -1518,7 +1518,7 @@
|
||||
|
||||
shdr_info[cnt].scn = scn;
|
||||
|
||||
@@ -598,6 +603,7 @@ handle_elf (int fd, Elf *elf, const char
|
||||
@@ -599,6 +604,7 @@ handle_elf (int fd, Elf *elf, const char
|
||||
shdr_info[cnt].shdr.sh_name);
|
||||
if (shdr_info[cnt].name == NULL)
|
||||
{
|
||||
@@ -1526,7 +1526,7 @@
|
||||
error (0, 0, gettext ("illformed file '%s'"), fname);
|
||||
goto fail_close;
|
||||
}
|
||||
@@ -607,6 +613,8 @@ handle_elf (int fd, Elf *elf, const char
|
||||
@@ -608,6 +614,8 @@ handle_elf (int fd, Elf *elf, const char
|
||||
|
||||
/* Remember the shdr.sh_link value. */
|
||||
shdr_info[cnt].old_sh_link = shdr_info[cnt].shdr.sh_link;
|
||||
@@ -1535,7 +1535,7 @@
|
||||
|
||||
/* Sections in files other than relocatable object files which
|
||||
are not loaded can be freely moved by us. In relocatable
|
||||
@@ -619,7 +627,7 @@ handle_elf (int fd, Elf *elf, const char
|
||||
@@ -620,7 +628,7 @@ handle_elf (int fd, Elf *elf, const char
|
||||
appropriate reference. */
|
||||
if (unlikely (shdr_info[cnt].shdr.sh_type == SHT_SYMTAB_SHNDX))
|
||||
{
|
||||
@@ -1544,7 +1544,7 @@
|
||||
shdr_info[shdr_info[cnt].shdr.sh_link].symtab_idx = cnt;
|
||||
}
|
||||
else if (unlikely (shdr_info[cnt].shdr.sh_type == SHT_GROUP))
|
||||
@@ -636,7 +644,12 @@ handle_elf (int fd, Elf *elf, const char
|
||||
@@ -637,7 +645,12 @@ handle_elf (int fd, Elf *elf, const char
|
||||
for (inner = 1;
|
||||
inner < shdr_info[cnt].data->d_size / sizeof (Elf32_Word);
|
||||
++inner)
|
||||
@@ -1557,7 +1557,7 @@
|
||||
|
||||
if (inner == 1 || (inner == 2 && (grpref[0] & GRP_COMDAT) == 0))
|
||||
/* If the section group contains only one element and this
|
||||
@@ -647,7 +660,7 @@ handle_elf (int fd, Elf *elf, const char
|
||||
@@ -648,7 +661,7 @@ handle_elf (int fd, Elf *elf, const char
|
||||
}
|
||||
else if (unlikely (shdr_info[cnt].shdr.sh_type == SHT_GNU_versym))
|
||||
{
|
||||
@@ -1566,7 +1566,7 @@
|
||||
shdr_info[shdr_info[cnt].shdr.sh_link].version_idx = cnt;
|
||||
}
|
||||
|
||||
@@ -655,7 +668,7 @@ handle_elf (int fd, Elf *elf, const char
|
||||
@@ -656,7 +669,7 @@ handle_elf (int fd, Elf *elf, const char
|
||||
discarded right away. */
|
||||
if ((shdr_info[cnt].shdr.sh_flags & SHF_GROUP) != 0)
|
||||
{
|
||||
@@ -1575,7 +1575,7 @@
|
||||
|
||||
if (shdr_info[shdr_info[cnt].group_idx].idx == 0)
|
||||
{
|
||||
@@ -731,10 +744,14 @@ handle_elf (int fd, Elf *elf, const char
|
||||
@@ -732,10 +745,14 @@ handle_elf (int fd, Elf *elf, const char
|
||||
{
|
||||
/* If a relocation section is marked as being removed make
|
||||
sure the section it is relocating is removed, too. */
|
||||
@@ -1593,7 +1593,7 @@
|
||||
|
||||
/* If a group section is marked as being removed make
|
||||
sure all the sections it contains are being removed, too. */
|
||||
@@ -778,7 +795,7 @@ handle_elf (int fd, Elf *elf, const char
|
||||
@@ -779,7 +796,7 @@ handle_elf (int fd, Elf *elf, const char
|
||||
if (shdr_info[cnt].symtab_idx != 0
|
||||
&& shdr_info[shdr_info[cnt].symtab_idx].data == NULL)
|
||||
{
|
||||
@@ -1602,7 +1602,7 @@
|
||||
|
||||
shdr_info[shdr_info[cnt].symtab_idx].data
|
||||
= elf_getdata (shdr_info[shdr_info[cnt].symtab_idx].scn,
|
||||
@@ -818,6 +835,9 @@ handle_elf (int fd, Elf *elf, const char
|
||||
@@ -819,6 +836,9 @@ handle_elf (int fd, Elf *elf, const char
|
||||
else if (scnidx == SHN_XINDEX)
|
||||
scnidx = xndx;
|
||||
|
||||
@@ -1612,7 +1612,7 @@
|
||||
if (shdr_info[scnidx].idx == 0)
|
||||
/* This symbol table has a real symbol in
|
||||
a discarded section. So preserve the
|
||||
@@ -848,12 +868,16 @@ handle_elf (int fd, Elf *elf, const char
|
||||
@@ -849,12 +869,16 @@ handle_elf (int fd, Elf *elf, const char
|
||||
}
|
||||
|
||||
/* Handle references through sh_info. */
|
||||
@@ -1631,7 +1631,7 @@
|
||||
|
||||
/* Mark the section as investigated. */
|
||||
shdr_info[cnt].idx = 2;
|
||||
@@ -994,7 +1018,7 @@ handle_elf (int fd, Elf *elf, const char
|
||||
@@ -995,7 +1019,7 @@ handle_elf (int fd, Elf *elf, const char
|
||||
error (EXIT_FAILURE, 0, gettext ("while generating output file: %s"),
|
||||
elf_errmsg (-1));
|
||||
|
||||
@@ -1640,7 +1640,7 @@
|
||||
|
||||
/* Add this name to the section header string table. */
|
||||
shdr_info[cnt].se = ebl_strtabadd (shst, shdr_info[cnt].name, 0);
|
||||
@@ -1031,7 +1055,7 @@ handle_elf (int fd, Elf *elf, const char
|
||||
@@ -1032,7 +1056,7 @@ handle_elf (int fd, Elf *elf, const char
|
||||
error (EXIT_FAILURE, 0,
|
||||
gettext ("while create section header section: %s"),
|
||||
elf_errmsg (-1));
|
||||
@@ -1649,7 +1649,7 @@
|
||||
|
||||
shdr_info[cnt].data = elf_newdata (shdr_info[cnt].newscn);
|
||||
if (shdr_info[cnt].data == NULL)
|
||||
@@ -1087,7 +1111,7 @@ handle_elf (int fd, Elf *elf, const char
|
||||
@@ -1089,7 +1113,7 @@ handle_elf (int fd, Elf *elf, const char
|
||||
error (EXIT_FAILURE, 0,
|
||||
gettext ("while create section header section: %s"),
|
||||
elf_errmsg (-1));
|
||||
@@ -1658,7 +1658,7 @@
|
||||
|
||||
/* Finalize the string table and fill in the correct indices in the
|
||||
section headers. */
|
||||
@@ -1177,20 +1201,20 @@ handle_elf (int fd, Elf *elf, const char
|
||||
@@ -1179,20 +1203,20 @@ handle_elf (int fd, Elf *elf, const char
|
||||
shndxdata = elf_getdata (shdr_info[shdr_info[cnt].symtab_idx].scn,
|
||||
NULL);
|
||||
|
||||
@@ -1682,7 +1682,7 @@
|
||||
>= shdr_info[cnt].data->d_size / elsize);
|
||||
}
|
||||
|
||||
@@ -1245,7 +1269,7 @@ handle_elf (int fd, Elf *elf, const char
|
||||
@@ -1247,7 +1271,7 @@ handle_elf (int fd, Elf *elf, const char
|
||||
sec = shdr_info[sym->st_shndx].idx;
|
||||
else
|
||||
{
|
||||
@@ -1691,7 +1691,7 @@
|
||||
|
||||
sec = shdr_info[xshndx].idx;
|
||||
}
|
||||
@@ -1266,7 +1290,7 @@ handle_elf (int fd, Elf *elf, const char
|
||||
@@ -1268,7 +1292,7 @@ handle_elf (int fd, Elf *elf, const char
|
||||
nxshndx = sec;
|
||||
}
|
||||
|
||||
@@ -1700,7 +1700,7 @@
|
||||
|
||||
if ((inner != destidx || nshndx != sym->st_shndx
|
||||
|| (shndxdata != NULL && nxshndx != xshndx))
|
||||
@@ -1293,9 +1317,11 @@ handle_elf (int fd, Elf *elf, const char
|
||||
@@ -1295,9 +1319,11 @@ handle_elf (int fd, Elf *elf, const char
|
||||
{
|
||||
size_t sidx = (sym->st_shndx != SHN_XINDEX
|
||||
? sym->st_shndx : xshndx);
|
||||
@@ -1715,7 +1715,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1483,11 +1509,11 @@ handle_elf (int fd, Elf *elf, const char
|
||||
@@ -1485,11 +1511,11 @@ handle_elf (int fd, Elf *elf, const char
|
||||
{
|
||||
GElf_Sym sym_mem;
|
||||
GElf_Sym *sym = gelf_getsym (symd, inner, &sym_mem);
|
||||
@@ -1729,7 +1729,7 @@
|
||||
size_t hidx = elf_hash (name) % nbucket;
|
||||
|
||||
if (bucket[hidx] == 0)
|
||||
@@ -1506,8 +1532,8 @@ handle_elf (int fd, Elf *elf, const char
|
||||
@@ -1508,8 +1534,8 @@ handle_elf (int fd, Elf *elf, const char
|
||||
else
|
||||
{
|
||||
/* Alpha and S390 64-bit use 64-bit SHT_HASH entries. */
|
||||
@@ -1740,7 +1740,7 @@
|
||||
|
||||
Elf64_Xword *bucket = (Elf64_Xword *) hashd->d_buf;
|
||||
|
||||
@@ -1537,11 +1563,11 @@ handle_elf (int fd, Elf *elf, const char
|
||||
@@ -1539,11 +1565,11 @@ handle_elf (int fd, Elf *elf, const char
|
||||
{
|
||||
GElf_Sym sym_mem;
|
||||
GElf_Sym *sym = gelf_getsym (symd, inner, &sym_mem);
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="gettext"
|
||||
PKG_VERSION="0.18.3.1"
|
||||
PKG_VERSION="0.18.3.2"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -78,11 +78,6 @@ pre_configure_host() {
|
||||
export LIBFFI_LIBS="-L$ROOT/$TOOLCHAIN/lib -lffi"
|
||||
}
|
||||
|
||||
pre_configure_target() {
|
||||
# glib segfaults with LTO optimization
|
||||
strip_lto
|
||||
}
|
||||
|
||||
post_makeinstall_host() {
|
||||
cp -f gobject/.libs/glib-genmarshal $ROOT/$TOOLCHAIN/bin
|
||||
cp -f gobject/glib-mkenums $ROOT/$TOOLCHAIN/bin
|
||||
|
||||
@@ -52,8 +52,6 @@ else
|
||||
fi
|
||||
|
||||
if [ "$XBMCPLAYER_DRIVER" = "libfslvpuwrap" ]; then
|
||||
PKG_DEPENDS_TARGET="$PKG_DEPENDS"
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="$PKG_CONFIGURE_OPTS_TARGET --enable-imx6"
|
||||
else
|
||||
PKG_CONFIGURE_OPTS_TARGET="$PKG_CONFIGURE_OPTS_TARGET --disable-imx6"
|
||||
|
||||
@@ -41,6 +41,10 @@ PKG_CONFIGURE_OPTS_TARGET="ac_cv_path_HAVELIBUSB=$ROOT/$TOOLCHAIN/bin/libusb-con
|
||||
--without-examples \
|
||||
--without-docs"
|
||||
|
||||
pre_configure_target() {
|
||||
CFLAGS="$CFLAGS -fPIC -DPIC"
|
||||
}
|
||||
|
||||
post_makeinstall_target() {
|
||||
rm -rf $INSTALL/usr/bin
|
||||
}
|
||||
|
||||
@@ -34,6 +34,10 @@ PKG_AUTORECONF="yes"
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="--enable-static --disable-shared"
|
||||
|
||||
pre_configure_target() {
|
||||
CFLAGS="$CFLAGS -fPIC -DPIC"
|
||||
}
|
||||
|
||||
post_makeinstall_target() {
|
||||
rm -rf $INSTALL/usr
|
||||
}
|
||||
|
||||
@@ -17,13 +17,13 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="Mesa"
|
||||
PKG_VERSION="10.1.0"
|
||||
PKG_VERSION="10.1.5"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="OSS"
|
||||
PKG_SITE="http://www.mesa3d.org/"
|
||||
PKG_URL="ftp://freedesktop.org/pub/mesa/10.1/MesaLib-$PKG_VERSION.tar.bz2"
|
||||
PKG_DEPENDS_TARGET="toolchain Python:host makedepend:host libxml2:host expat glproto dri2proto libdrm libXext libXdamage libXfixes libXxf86vm libxcb libX11 systemd dri3proto libxshmfence"
|
||||
PKG_URL="ftp://freedesktop.org/pub/mesa/$PKG_VERSION/MesaLib-$PKG_VERSION.tar.bz2"
|
||||
PKG_DEPENDS_TARGET="toolchain Python:host makedepend:host libxml2:host expat glproto dri2proto presentproto libdrm libXext libXdamage libXfixes libXxf86vm libxcb libX11 systemd dri3proto libxshmfence"
|
||||
PKG_PRIORITY="optional"
|
||||
PKG_SECTION="graphics"
|
||||
PKG_SHORTDESC="mesa: 3-D graphics library with OpenGL API"
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
From 92e543c45da4581b1940178a94e6f2d66c749367 Mon Sep 17 00:00:00 2001
|
||||
From: Christian König <christian.koenig@amd.com>
|
||||
Date: Sat, 22 Mar 2014 20:30:07 +0000
|
||||
Subject: st/mesa: recreate sampler view on context change v3
|
||||
|
||||
With shared glx contexts it is possible that a texture is create and used
|
||||
in one context and then used in another one resulting in incorrect
|
||||
sampler view usage.
|
||||
|
||||
v2: avoid template copy
|
||||
v3: add XXX comment
|
||||
|
||||
Signed-off-by: Christian König <christian.koenig@amd.com>
|
||||
Cc: "10.0 10.1" <mesa-stable@lists.freedesktop.org>
|
||||
Reviewed-by: Brian Paul <brianp@vmware.com>
|
||||
---
|
||||
diff --git a/src/mesa/state_tracker/st_atom_texture.c b/src/mesa/state_tracker/st_atom_texture.c
|
||||
index 3557a3f..75e6fac 100644
|
||||
--- a/src/mesa/state_tracker/st_atom_texture.c
|
||||
+++ b/src/mesa/state_tracker/st_atom_texture.c
|
||||
@@ -198,6 +198,16 @@ st_get_texture_sampler_view_from_stobj(struct st_texture_object *stObj,
|
||||
if (!stObj->sampler_view) {
|
||||
stObj->sampler_view =
|
||||
st_create_texture_sampler_view_from_stobj(pipe, stObj, samp, format);
|
||||
+
|
||||
+ } else if (stObj->sampler_view->context != pipe) {
|
||||
+ /* Recreate view in correct context, use existing view as template */
|
||||
+ /* XXX: This isn't optimal, we should try to use more than one view.
|
||||
+ Otherwise we create/destroy the view all the time
|
||||
+ */
|
||||
+ struct pipe_sampler_view *sv =
|
||||
+ pipe->create_sampler_view(pipe, stObj->pt, stObj->sampler_view);
|
||||
+ pipe_sampler_view_reference(&stObj->sampler_view, NULL);
|
||||
+ stObj->sampler_view = sv;
|
||||
}
|
||||
|
||||
return stObj->sampler_view;
|
||||
--
|
||||
cgit v0.9.0.2-2-gbebe
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="bcm2835-driver"
|
||||
PKG_VERSION="3ade415"
|
||||
PKG_VERSION="e45a4a2"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="nonfree"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="gpu-viv-bin-mx6q"
|
||||
PKG_VERSION="3.5.7-1.0.0"
|
||||
PKG_VERSION="3.10.17-1.0.0"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="arm"
|
||||
PKG_LICENSE="nonfree"
|
||||
@@ -53,6 +53,7 @@ makeinstall_target() {
|
||||
$FLOAT/usr/lib/libGLES_CM.so \
|
||||
$FLOAT/usr/lib/libGLESv1_CL.so* \
|
||||
$FLOAT/usr/lib/libGLESv1_CM.so* \
|
||||
$FLOAT/usr/lib/libGLESv2-fb.so \
|
||||
$FLOAT/usr/lib/libGLESv2.so* \
|
||||
$FLOAT/usr/lib/libGAL-fb.so \
|
||||
$FLOAT/usr/lib/libGAL.so* \
|
||||
@@ -68,6 +69,7 @@ makeinstall_target() {
|
||||
$FLOAT/usr/lib/libGLES_CM.so \
|
||||
$FLOAT/usr/lib/libGLESv1_CL.so* \
|
||||
$FLOAT/usr/lib/libGLESv1_CM.so* \
|
||||
$FLOAT/usr/lib/libGLESv2-fb.so \
|
||||
$FLOAT/usr/lib/libGLESv2.so* \
|
||||
$FLOAT/usr/lib/libGLSLC.so* \
|
||||
$FLOAT/usr/lib/libGAL-fb.so \
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="libdrm"
|
||||
PKG_VERSION="2.4.52"
|
||||
PKG_VERSION="2.4.54"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -17,15 +17,15 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="gcc"
|
||||
PKG_VERSION="4.8.2"
|
||||
PKG_VERSION="4.9.0"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://gcc.gnu.org/"
|
||||
PKG_URL="ftp://ftp.gnu.org/gnu/gcc/$PKG_NAME-$PKG_VERSION/$PKG_NAME-$PKG_VERSION.tar.bz2"
|
||||
PKG_DEPENDS_BOOTSTRAP="ccache:host autoconf-2.64:host binutils:host gmp:host mpfr:host mpc:host cloog:host ppl:host"
|
||||
PKG_DEPENDS_BOOTSTRAP="ccache:host autoconf:host binutils:host gmp:host mpfr:host mpc:host cloog:host ppl:host"
|
||||
PKG_DEPENDS_TARGET="gcc:host"
|
||||
PKG_DEPENDS_HOST="ccache:host autoconf-2.64:host binutils:host gmp:host mpfr:host mpc:host cloog:host ppl:host eglibc"
|
||||
PKG_DEPENDS_HOST="ccache:host autoconf:host binutils:host gmp:host mpfr:host mpc:host cloog:host ppl:host eglibc"
|
||||
PKG_PRIORITY="optional"
|
||||
PKG_SECTION="lang"
|
||||
PKG_SHORTDESC="gcc: The GNU Compiler Collection Version 4 (aka GNU C Compiler)"
|
||||
@@ -129,7 +129,7 @@ post_make_host() {
|
||||
post_makeinstall_host() {
|
||||
cp -PR $TARGET_NAME/libstdc++-v3/src/.libs/libstdc++.so* $SYSROOT_PREFIX/usr/lib
|
||||
|
||||
GCC_VERSION=`$ROOT/$TOOLCHAIN/$TARGET_NAME/bin/gcc -dumpversion`
|
||||
GCC_VERSION=`$ROOT/$TOOLCHAIN/bin/${TARGET_NAME}-gcc -dumpversion`
|
||||
DATE="0501`echo $GCC_VERSION | sed 's/\([0-9]\)/0\1/g' | sed 's/\.//g'`"
|
||||
CROSS_CC=$TARGET_CC-$GCC_VERSION
|
||||
CROSS_CXX=$TARGET_CXX-$GCC_VERSION
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
--- a/gcc/config/arm/arm.c
|
||||
+++ a/gcc/config/arm/arm.c
|
||||
@@ -26547,6 +26547,7 @@ arm_expand_epilogue_apcs_frame (bool really_return)
|
||||
num_regs = bit_count (saved_regs_mask);
|
||||
if ((offsets->outgoing_args != (1 + num_regs)) || cfun->calls_alloca)
|
||||
{
|
||||
+ emit_insn (gen_blockage ());
|
||||
/* Unwind the stack to just below the saved registers. */
|
||||
emit_insn (gen_addsi3 (stack_pointer_rtx,
|
||||
hard_frame_pointer_rtx,
|
||||
@@ -1,60 +0,0 @@
|
||||
diff -Naur gcc-4.8.2/gcc/config/i386/linux64.h gcc-4.8.2.patch/gcc/config/i386/linux64.h
|
||||
--- gcc-4.8.2/gcc/config/i386/linux64.h 2013-01-10 21:38:27.000000000 +0100
|
||||
+++ gcc-4.8.2.patch/gcc/config/i386/linux64.h 2014-01-25 00:09:27.179269461 +0100
|
||||
@@ -28,5 +28,5 @@
|
||||
#define GNU_USER_LINK_EMULATIONX32 "elf32_x86_64"
|
||||
|
||||
#define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
|
||||
-#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2"
|
||||
-#define GLIBC_DYNAMIC_LINKERX32 "/libx32/ld-linux-x32.so.2"
|
||||
+#define GLIBC_DYNAMIC_LINKER64 "/lib/ld-linux-x86-64.so.2"
|
||||
+#define GLIBC_DYNAMIC_LINKERX32 "/lib/ld-linux-x32.so.2"
|
||||
diff -Naur gcc-4.8.2/gcc/config/mips/linux64.h gcc-4.8.2.patch/gcc/config/mips/linux64.h
|
||||
--- gcc-4.8.2/gcc/config/mips/linux64.h 2013-01-10 21:38:27.000000000 +0100
|
||||
+++ gcc-4.8.2.patch/gcc/config/mips/linux64.h 2014-01-25 00:09:31.217263893 +0100
|
||||
@@ -23,9 +23,9 @@
|
||||
#define GNU_USER_LINK_EMULATIONN32 "elf32%{EB:b}%{EL:l}tsmipn32"
|
||||
|
||||
#define GLIBC_DYNAMIC_LINKER32 "/lib/ld.so.1"
|
||||
-#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld.so.1"
|
||||
-#define GLIBC_DYNAMIC_LINKERN32 "/lib32/ld.so.1"
|
||||
-#define UCLIBC_DYNAMIC_LINKERN32 "/lib32/ld-uClibc.so.0"
|
||||
+#define GLIBC_DYNAMIC_LINKER64 "/lib/ld.so.1"
|
||||
+#define GLIBC_DYNAMIC_LINKERN32 "/lib/ld.so.1"
|
||||
+#define UCLIBC_DYNAMIC_LINKERN32 "/lib/ld-uClibc.so.0"
|
||||
#define BIONIC_DYNAMIC_LINKERN32 "/system/bin/linker32"
|
||||
#define GNU_USER_DYNAMIC_LINKERN32 \
|
||||
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKERN32, UCLIBC_DYNAMIC_LINKERN32, \
|
||||
diff -Naur gcc-4.8.2/gcc/config/rs6000/linux64.h gcc-4.8.2.patch/gcc/config/rs6000/linux64.h
|
||||
--- gcc-4.8.2/gcc/config/rs6000/linux64.h 2013-06-19 03:18:38.000000000 +0200
|
||||
+++ gcc-4.8.2.patch/gcc/config/rs6000/linux64.h 2014-01-25 00:09:31.217263893 +0100
|
||||
@@ -351,7 +351,7 @@
|
||||
#define LINK_OS_DEFAULT_SPEC "%(link_os_linux)"
|
||||
|
||||
#define GLIBC_DYNAMIC_LINKER32 "/lib/ld.so.1"
|
||||
-#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld64.so.1"
|
||||
+#define GLIBC_DYNAMIC_LINKER64 "/lib/ld64.so.1"
|
||||
#define UCLIBC_DYNAMIC_LINKER32 "/lib/ld-uClibc.so.0"
|
||||
#define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0"
|
||||
#if DEFAULT_LIBC == LIBC_UCLIBC
|
||||
diff -Naur gcc-4.8.2/gcc/config/sparc/linux64.h gcc-4.8.2.patch/gcc/config/sparc/linux64.h
|
||||
--- gcc-4.8.2/gcc/config/sparc/linux64.h 2013-01-10 21:38:27.000000000 +0100
|
||||
+++ gcc-4.8.2.patch/gcc/config/sparc/linux64.h 2014-01-25 00:09:31.217263893 +0100
|
||||
@@ -93,7 +93,7 @@
|
||||
done. */
|
||||
|
||||
#define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
|
||||
-#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux.so.2"
|
||||
+#define GLIBC_DYNAMIC_LINKER64 "/lib/ld-linux.so.2"
|
||||
|
||||
#ifdef SPARC_BI_ARCH
|
||||
|
||||
@@ -201,7 +201,7 @@
|
||||
#else /* !SPARC_BI_ARCH */
|
||||
|
||||
#undef LINK_SPEC
|
||||
-#define LINK_SPEC "-m elf64_sparc -Y P,%R/usr/lib64 %{shared:-shared} \
|
||||
+#define LINK_SPEC "-m elf64_sparc -Y P,%R/usr/lib %{shared:-shared} \
|
||||
%{!shared: \
|
||||
%{!static: \
|
||||
%{rdynamic:-export-dynamic} \
|
||||
32
packages/lang/gcc/patches/gcc-allow-newer-autoconf.patch
Normal file
32
packages/lang/gcc/patches/gcc-allow-newer-autoconf.patch
Normal file
@@ -0,0 +1,32 @@
|
||||
From c611cd5416ff1042a4adec0e1b12c71e307b508d Mon Sep 17 00:00:00 2001
|
||||
From: Stefan Saraev <stefan@saraev.ca>
|
||||
Date: Thu, 24 Apr 2014 22:33:27 +0300
|
||||
Subject: [PATCH] allow newer autoconf
|
||||
|
||||
---
|
||||
config/override.m4 | 9 ---------
|
||||
1 files changed, 0 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/config/override.m4 b/config/override.m4
|
||||
index 52bd1c3..6c39656 100644
|
||||
--- a/config/override.m4
|
||||
+++ b/config/override.m4
|
||||
@@ -38,15 +38,6 @@ dnl m4_define([_GCC_AUTOCONF_VERSION], [X.Y])
|
||||
dnl in configure.ac before AC_INIT,
|
||||
dnl without rewriting this file.
|
||||
dnl Or for updating the whole tree at once with the definition above.
|
||||
-AC_DEFUN([_GCC_AUTOCONF_VERSION_CHECK],
|
||||
-[m4_if(m4_defn([_GCC_AUTOCONF_VERSION]),
|
||||
- m4_defn([m4_PACKAGE_VERSION]), [],
|
||||
- [m4_fatal([Please use exactly Autoconf ]_GCC_AUTOCONF_VERSION[ instead of ]m4_defn([m4_PACKAGE_VERSION])[.])])
|
||||
-])
|
||||
-m4_define([AC_INIT], m4_defn([AC_INIT])[
|
||||
-_GCC_AUTOCONF_VERSION_CHECK
|
||||
-])
|
||||
-
|
||||
|
||||
dnl Ensure we do not use a buggy M4.
|
||||
m4_if(m4_index([..wi.d.], [.d.]), [-1],
|
||||
--
|
||||
1.7.2.5
|
||||
|
||||
71
packages/lang/gcc/patches/gcc-dynamic_linker.patch
Normal file
71
packages/lang/gcc/patches/gcc-dynamic_linker.patch
Normal file
@@ -0,0 +1,71 @@
|
||||
diff -Naur gcc-4.9.0/gcc/config/i386/linux64.h gcc-4.9.0.patch/gcc/config/i386/linux64.h
|
||||
--- gcc-4.9.0/gcc/config/i386/linux64.h 2014-01-02 23:23:26.000000000 +0100
|
||||
+++ gcc-4.9.0.patch/gcc/config/i386/linux64.h 2014-04-22 20:27:05.853832561 +0200
|
||||
@@ -28,5 +28,5 @@
|
||||
#define GNU_USER_LINK_EMULATIONX32 "elf32_x86_64"
|
||||
|
||||
#define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
|
||||
-#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2"
|
||||
-#define GLIBC_DYNAMIC_LINKERX32 "/libx32/ld-linux-x32.so.2"
|
||||
+#define GLIBC_DYNAMIC_LINKER64 "/lib/ld-linux-x86-64.so.2"
|
||||
+#define GLIBC_DYNAMIC_LINKERX32 "/lib/ld-linux-x32.so.2"
|
||||
diff -Naur gcc-4.9.0/gcc/config/mips/linux64.h gcc-4.9.0.patch/gcc/config/mips/linux64.h
|
||||
--- gcc-4.9.0/gcc/config/mips/linux64.h 2014-01-02 23:23:26.000000000 +0100
|
||||
+++ gcc-4.9.0.patch/gcc/config/mips/linux64.h 2014-04-22 20:28:54.699515966 +0200
|
||||
@@ -25,9 +25,9 @@
|
||||
#define GLIBC_DYNAMIC_LINKER32 \
|
||||
"%{mnan=2008:/lib/ld-linux-mipsn8.so.1;:/lib/ld.so.1}"
|
||||
#define GLIBC_DYNAMIC_LINKER64 \
|
||||
- "%{mnan=2008:/lib64/ld-linux-mipsn8.so.1;:/lib64/ld.so.1}"
|
||||
+ "%{mnan=2008:/lib64/ld-linux-mipsn8.so.1;:/lib/ld.so.1}"
|
||||
#define GLIBC_DYNAMIC_LINKERN32 \
|
||||
- "%{mnan=2008:/lib32/ld-linux-mipsn8.so.1;:/lib32/ld.so.1}"
|
||||
+ "%{mnan=2008:/lib32/ld-linux-mipsn8.so.1;:/lib/ld.so.1}"
|
||||
|
||||
#undef UCLIBC_DYNAMIC_LINKER32
|
||||
#define UCLIBC_DYNAMIC_LINKER32 \
|
||||
@@ -36,7 +36,7 @@
|
||||
#define UCLIBC_DYNAMIC_LINKER64 \
|
||||
"%{mnan=2008:/lib/ld64-uClibc-mipsn8.so.0;:/lib/ld64-uClibc.so.0}"
|
||||
#define UCLIBC_DYNAMIC_LINKERN32 \
|
||||
- "%{mnan=2008:/lib32/ld-uClibc-mipsn8.so.0;:/lib32/ld-uClibc.so.0}"
|
||||
+ "%{mnan=2008:/lib32/ld-uClibc-mipsn8.so.0;:/lib/ld-uClibc.so.0}"
|
||||
|
||||
#define BIONIC_DYNAMIC_LINKERN32 "/system/bin/linker32"
|
||||
#define GNU_USER_DYNAMIC_LINKERN32 \
|
||||
diff -Naur gcc-4.9.0/gcc/config/rs6000/linux64.h gcc-4.9.0.patch/gcc/config/rs6000/linux64.h
|
||||
--- gcc-4.9.0/gcc/config/rs6000/linux64.h 2014-01-02 23:23:26.000000000 +0100
|
||||
+++ gcc-4.9.0.patch/gcc/config/rs6000/linux64.h 2014-04-22 20:30:39.567210839 +0200
|
||||
@@ -369,9 +369,9 @@
|
||||
|
||||
#define GLIBC_DYNAMIC_LINKER32 "/lib/ld.so.1"
|
||||
#ifdef LINUX64_DEFAULT_ABI_ELFv2
|
||||
-#define GLIBC_DYNAMIC_LINKER64 "%{mabi=elfv1:/lib64/ld64.so.1;:/lib64/ld64.so.2}"
|
||||
+#define GLIBC_DYNAMIC_LINKER64 "%{mabi=elfv1:/lib/ld64.so.1;:/lib/ld64.so.2}"
|
||||
#else
|
||||
-#define GLIBC_DYNAMIC_LINKER64 "%{mabi=elfv2:/lib64/ld64.so.2;:/lib64/ld64.so.1}"
|
||||
+#define GLIBC_DYNAMIC_LINKER64 "%{mabi=elfv2:/lib/ld64.so.2;:/lib/ld64.so.1}"
|
||||
#endif
|
||||
#define UCLIBC_DYNAMIC_LINKER32 "/lib/ld-uClibc.so.0"
|
||||
#define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0"
|
||||
diff -Naur gcc-4.9.0/gcc/config/sparc/linux64.h gcc-4.9.0.patch/gcc/config/sparc/linux64.h
|
||||
--- gcc-4.9.0/gcc/config/sparc/linux64.h 2014-01-02 23:23:26.000000000 +0100
|
||||
+++ gcc-4.9.0.patch/gcc/config/sparc/linux64.h 2014-04-22 20:27:05.854832558 +0200
|
||||
@@ -93,7 +93,7 @@
|
||||
done. */
|
||||
|
||||
#define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
|
||||
-#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux.so.2"
|
||||
+#define GLIBC_DYNAMIC_LINKER64 "/lib/ld-linux.so.2"
|
||||
|
||||
#ifdef SPARC_BI_ARCH
|
||||
|
||||
@@ -201,7 +201,7 @@
|
||||
#else /* !SPARC_BI_ARCH */
|
||||
|
||||
#undef LINK_SPEC
|
||||
-#define LINK_SPEC "-m elf64_sparc -Y P,%R/usr/lib64 %{shared:-shared} \
|
||||
+#define LINK_SPEC "-m elf64_sparc -Y P,%R/usr/lib %{shared:-shared} \
|
||||
%{!shared: \
|
||||
%{!static: \
|
||||
%{rdynamic:-export-dynamic} \
|
||||
@@ -1,118 +0,0 @@
|
||||
Date: Tue, 18 Jun 2013 16:42:13 +0100
|
||||
From: Julian Brown <julian at codesourcery dot com>
|
||||
To: <gcc-patches at gcc dot gnu dot org>, Richard Earnshaw <Richard dot Earnshaw at arm dot com>, Ramana Radhakrishnan <ramrad01 at arm dot com>
|
||||
Subject: [PATCH, ARM] Reintroduce minipool ranges for zero-extension insn patterns
|
||||
|
||||
Hi,
|
||||
|
||||
The following patch removed pool_range/neg_pool_range attributes from
|
||||
several instructions as a cleanup, which I believe to have been
|
||||
incorrect:
|
||||
|
||||
http://gcc.gnu.org/ml/gcc-patches/2010-07/msg01036.html
|
||||
|
||||
On a Mentor-local branch, this caused problems with instructions like:
|
||||
|
||||
(insn 77 53 87 (set (reg:SI 8 r8 [orig:197 s.4 ] [197])
|
||||
(zero_extend:SI (mem/u/c:HI (symbol_ref/u:SI ("*.LC0") [flags 0x2]) [7 S2 A16]))) [...] 161 {*arm_zero_extendhisi2_v6}
|
||||
(nil))
|
||||
|
||||
The reasoning behind the cleanup was that the instructions in question
|
||||
have no immediate constraints -- but the minipool code is used for more
|
||||
than just immediates, e.g. in the above case where a symbol reference
|
||||
("m") is loaded.
|
||||
|
||||
I don't have a test case for the problem on mainline at present, but I
|
||||
believe it is still a latent bug. Tested with the default multilibs (ARM
|
||||
& Thumb mode) on arm-none-eabi, with no regressions. (The patch has
|
||||
also been tested with more multilibs on our local branches for a while,
|
||||
and I did ensure previously that it did not adversely affect Bernd's
|
||||
patch linked above.)
|
||||
|
||||
OK to apply?
|
||||
|
||||
Thanks,
|
||||
|
||||
Julian
|
||||
|
||||
ChangeLog
|
||||
|
||||
gcc/
|
||||
* arm.md (*thumb1_zero_extendhisi2, *arm_zero_extendhisi2)
|
||||
(*arm_zero_extendhisi2_v6, *thumb1_zero_extendqisi2)
|
||||
(*thumb1_zero_extendqisi2_v6, *arm_zero_extendqisi2)
|
||||
(*arm_zero_extendqisi2_v6): Add pool_range, neg_pool_range
|
||||
attributes.
|
||||
|
||||
|
||||
Index: gcc/config/arm/arm.md
|
||||
===================================================================
|
||||
--- a/gcc/config/arm/arm.md (revision 200171)
|
||||
+++ b/gcc/config/arm/arm.md (working copy)
|
||||
@@ -5313,7 +5313,8 @@
|
||||
[(if_then_else (eq_attr "is_arch6" "yes")
|
||||
(const_int 2) (const_int 4))
|
||||
(const_int 4)])
|
||||
- (set_attr "type" "simple_alu_shift, load_byte")]
|
||||
+ (set_attr "type" "simple_alu_shift, load_byte")
|
||||
+ (set_attr "pool_range" "*,60")]
|
||||
)
|
||||
|
||||
(define_insn "*arm_zero_extendhisi2"
|
||||
@@ -5324,7 +5325,9 @@
|
||||
#
|
||||
ldr%(h%)\\t%0, %1"
|
||||
[(set_attr "type" "alu_shift,load_byte")
|
||||
- (set_attr "predicable" "yes")]
|
||||
+ (set_attr "predicable" "yes")
|
||||
+ (set_attr "pool_range" "*,256")
|
||||
+ (set_attr "neg_pool_range" "*,244")]
|
||||
)
|
||||
|
||||
(define_insn "*arm_zero_extendhisi2_v6"
|
||||
@@ -5335,7 +5338,9 @@
|
||||
uxth%?\\t%0, %1
|
||||
ldr%(h%)\\t%0, %1"
|
||||
[(set_attr "predicable" "yes")
|
||||
- (set_attr "type" "simple_alu_shift,load_byte")]
|
||||
+ (set_attr "type" "simple_alu_shift,load_byte")
|
||||
+ (set_attr "pool_range" "*,256")
|
||||
+ (set_attr "neg_pool_range" "*,244")]
|
||||
)
|
||||
|
||||
(define_insn "*arm_zero_extendhisi2addsi"
|
||||
@@ -5405,7 +5410,8 @@
|
||||
uxtb\\t%0, %1
|
||||
ldrb\\t%0, %1"
|
||||
[(set_attr "length" "2")
|
||||
- (set_attr "type" "simple_alu_shift,load_byte")]
|
||||
+ (set_attr "type" "simple_alu_shift,load_byte")
|
||||
+ (set_attr "pool_range" "*,32")]
|
||||
)
|
||||
|
||||
(define_insn "*arm_zero_extendqisi2"
|
||||
@@ -5417,7 +5423,9 @@
|
||||
ldr%(b%)\\t%0, %1\\t%@ zero_extendqisi2"
|
||||
[(set_attr "length" "8,4")
|
||||
(set_attr "type" "alu_shift,load_byte")
|
||||
- (set_attr "predicable" "yes")]
|
||||
+ (set_attr "predicable" "yes")
|
||||
+ (set_attr "pool_range" "*,4096")
|
||||
+ (set_attr "neg_pool_range" "*,4084")]
|
||||
)
|
||||
|
||||
(define_insn "*arm_zero_extendqisi2_v6"
|
||||
@@ -5428,7 +5436,9 @@
|
||||
uxtb%(%)\\t%0, %1
|
||||
ldr%(b%)\\t%0, %1\\t%@ zero_extendqisi2"
|
||||
[(set_attr "type" "simple_alu_shift,load_byte")
|
||||
- (set_attr "predicable" "yes")]
|
||||
+ (set_attr "predicable" "yes")
|
||||
+ (set_attr "pool_range" "*,4096")
|
||||
+ (set_attr "neg_pool_range" "*,4084")]
|
||||
)
|
||||
|
||||
(define_insn "*arm_zero_extendqisi2addsi"
|
||||
|
||||
--MP_/ERKB4.gCWGZVf9oWJO6IZSe--
|
||||
|
||||
@@ -17,12 +17,13 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="llvm"
|
||||
PKG_VERSION="3.4"
|
||||
PKG_VERSION="3.4.1"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://llvm.org/"
|
||||
PKG_URL="http://llvm.org/releases/3.4/${PKG_NAME}-${PKG_VERSION}.src.tar.gz"
|
||||
PKG_URL="http://llvm.org/releases/$PKG_VERSION/${PKG_NAME}-${PKG_VERSION}.src.tar.gz"
|
||||
PKG_SOURCE_DIR="${PKG_NAME}-${PKG_VERSION}.src"
|
||||
PKG_DEPENDS_HOST=""
|
||||
PKG_DEPENDS_TARGET="toolchain llvm:host"
|
||||
PKG_PRIORITY="optional"
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
diff -Naur RTL8188EU-fcc9034/os_dep/usb_intf.c RTL8188EU-fcc9034.patch/os_dep/usb_intf.c
|
||||
--- RTL8188EU-fcc9034/os_dep/usb_intf.c 2014-03-25 15:05:52.000000000 +0100
|
||||
+++ RTL8188EU-fcc9034.patch/os_dep/usb_intf.c 2014-04-28 17:42:46.059538024 +0200
|
||||
@@ -865,7 +865,6 @@
|
||||
RT_TRACE(_module_hci_intfs_c_, _drv_err_, ("+rtw_drv_entry\n"));
|
||||
|
||||
DBG_88E(DRV_NAME " driver version=%s\n", DRIVERVERSION);
|
||||
- DBG_88E("build time: %s %s\n", __DATE__, __TIME__);
|
||||
|
||||
rtw_suspend_lock_init();
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
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-01 20:21:56.601914791 +0200
|
||||
+++ RTL8192CU-v4.0.2_9000.20130911.patch/os_dep/linux/usb_intf.c 2014-06-08 15:44:13.239381855 +0200
|
||||
@@ -96,6 +96,7 @@
|
||||
{USB_DEVICE(0x2019, 0xED17)},/* PCI - Edimax */ \
|
||||
{USB_DEVICE(0x0DF6, 0x0052)},/* Sitecom - Edimax */ \
|
||||
@@ -9,3 +9,14 @@ diff -Naur RTL8192CU-v4.0.2_9000.20130911/os_dep/linux/usb_intf.c RTL8192CU-v4.0
|
||||
{USB_DEVICE(0x07B8, 0x8189)},/* Abocom - Abocom */ \
|
||||
{USB_DEVICE(0x0EB0, 0x9071)},/* NO Brand - Etop */ \
|
||||
{USB_DEVICE(0x06F8, 0xE033)},/* Hercules - Edimax */ \
|
||||
@@ -144,8 +145,10 @@
|
||||
{USB_DEVICE(0x07B8, 0x8178)},/* Abocom - Abocom */ \
|
||||
{USB_DEVICE(0x07AA, 0x0056)},/* ATKK - Gemtek */ \
|
||||
{USB_DEVICE(0x4855, 0x0091)},/* - Feixun */ \
|
||||
+ {USB_DEVICE(0x050D, 0x11F2)},/* Belkin - Edimax */ \
|
||||
{USB_DEVICE(0x050D, 0x2102)},/* Belkin - Sercomm */ \
|
||||
{USB_DEVICE(0x050D, 0x2103)},/* Belkin - Edimax */ \
|
||||
+ {USB_DEVICE(0x050D, 0x21F2)},/* Belkin - Edimax */ \
|
||||
{USB_DEVICE(0x20F4, 0x624D)},/* TRENDnet */ \
|
||||
{USB_DEVICE(0x0DF6, 0x0061)},/* Sitecom - Edimax */ \
|
||||
{USB_DEVICE(0x0B05, 0x17AB)},/* ASUS - Edimax */ \
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
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;
|
||||
@@ -0,0 +1,12 @@
|
||||
diff -Naur RTL8192DU-085e206/os_dep/usb_intf.c RTL8192DU-085e206.patch/os_dep/usb_intf.c
|
||||
--- RTL8192DU-085e206/os_dep/usb_intf.c 2014-03-25 15:48:57.000000000 +0100
|
||||
+++ RTL8192DU-085e206.patch/os_dep/usb_intf.c 2014-04-11 09:23:12.097223906 +0200
|
||||
@@ -137,7 +137,7 @@
|
||||
{USB_DEVICE(USB_VENDER_ID_REALTEK, 0x8194)},/* 8192DU-VS */ \
|
||||
{USB_DEVICE(USB_VENDER_ID_REALTEK, 0x8111)},/* Realtek 5G dongle for WiFi Display */ \
|
||||
{USB_DEVICE(USB_VENDER_ID_REALTEK, 0x0193)},/* 8192DE-VAU */ \
|
||||
- {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x8171)},/* 8192DU-VC */ \
|
||||
+/* {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x8171)}, 8192DU-VC overlaps with in-kernel rtl8192se */ \
|
||||
/*=== Customer ID ===*/ \
|
||||
/****** 8192DU-VC ********/ \
|
||||
{USB_DEVICE(0x2019, 0xAB2C)},/* PCI - Abocm */ \
|
||||
@@ -16,19 +16,19 @@
|
||||
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="RTL8723AU"
|
||||
PKG_VERSION="9af1588"
|
||||
PKG_NAME="RTL8812AU"
|
||||
PKG_VERSION="b22cbdf"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://github.com/lwfinger/rtl8723au"
|
||||
PKG_SITE="git@github.com:wuzzeb/rtl8812AU_8821AU_linux.git"
|
||||
PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.xz"
|
||||
PKG_DEPENDS_TARGET="toolchain linux"
|
||||
PKG_NEED_UNPACK="$LINUX_DEPENDS"
|
||||
PKG_PRIORITY="optional"
|
||||
PKG_SECTION="driver"
|
||||
PKG_SHORTDESC="Realtek RTL8723AU Linux 3.x driver"
|
||||
PKG_LONGDESC="Realtek RTL8723AU Linux 3.x driver"
|
||||
PKG_SHORTDESC="Realtek RTL8812AU Linux 3.x driver"
|
||||
PKG_LONGDESC="Realtek RTL8812AU Linux 3.x driver"
|
||||
|
||||
PKG_IS_ADDON="no"
|
||||
PKG_AUTORECONF="no"
|
||||
@@ -1,8 +1,7 @@
|
||||
diff --git a/x86-32/src/wl/sys/wl_linux.c b/x86-32/src/wl/sys/wl_linux.c
|
||||
index 9ee69e1..409bda7 100644
|
||||
--- a/x86-32/src/wl/sys/wl_linux.c
|
||||
+++ b/x86-32/src/wl/sys/wl_linux.c
|
||||
@@ -2693,7 +2693,7 @@ wl_tkip_keyset(wl_info_t *wl, wsec_key_t *key)
|
||||
diff -Naur bcm_sta-6.20.155.1/x86-32/src/wl/sys/wl_linux.c bcm_sta-6.20.155.1.patch/x86-32/src/wl/sys/wl_linux.c
|
||||
--- bcm_sta-6.20.155.1/x86-32/src/wl/sys/wl_linux.c 2013-04-14 23:10:38.000000000 +0200
|
||||
+++ bcm_sta-6.20.155.1.patch/x86-32/src/wl/sys/wl_linux.c 2014-05-14 21:47:59.249976234 +0200
|
||||
@@ -2681,7 +2681,7 @@
|
||||
void
|
||||
wl_tkip_printstats(wl_info_t *wl, bool group_key)
|
||||
{
|
||||
@@ -11,7 +10,7 @@ index 9ee69e1..409bda7 100644
|
||||
char debug_buf[512];
|
||||
int idx;
|
||||
if (wl->tkipmodops) {
|
||||
@@ -2855,6 +2855,7 @@ wl_linux_watchdog(void *ctx)
|
||||
@@ -2843,6 +2843,7 @@
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -19,7 +18,7 @@ index 9ee69e1..409bda7 100644
|
||||
static int
|
||||
wl_proc_read(char *buffer, char **start, off_t offset, int length, int *eof, void *data)
|
||||
{
|
||||
@@ -2909,18 +2910,89 @@ wl_proc_write(struct file *filp, const char *buff, unsigned long length, void *d
|
||||
@@ -2897,18 +2898,89 @@
|
||||
return length;
|
||||
}
|
||||
|
||||
@@ -99,7 +98,7 @@ index 9ee69e1..409bda7 100644
|
||||
+ wl->proc_entry->read_proc = wl_proc_read;
|
||||
+ wl->proc_entry->write_proc = wl_proc_write;
|
||||
+ wl->proc_entry->data = wl;
|
||||
+ }
|
||||
+ }
|
||||
+#else
|
||||
+ wl->proc_entry = proc_create_data(tmp, 0644, NULL, &wl_proc_fops, wl);
|
||||
+#endif
|
||||
@@ -113,24 +112,10 @@ index 9ee69e1..409bda7 100644
|
||||
- wl->proc_entry->data = wl;
|
||||
return 0;
|
||||
}
|
||||
diff --git a/x86-32/src/wl/sys/wl_linux.c.orig b/x86-32/src/wl/sys/wl_linux.c.orig
|
||||
index 38206ab..9ee69e1 100644
|
||||
--- a/x86-32/src/wl/sys/wl_linux.c.orig
|
||||
+++ b/x86-32/src/wl/sys/wl_linux.c.orig
|
||||
@@ -219,7 +219,7 @@ module_param(nompc, int, 0);
|
||||
#define quote_str(s) to_str(s)
|
||||
|
||||
#ifndef BRCM_WLAN_IFNAME
|
||||
-#define BRCM_WLAN_IFNAME eth%d
|
||||
+#define BRCM_WLAN_IFNAME wlan%d
|
||||
#endif
|
||||
|
||||
static char intf_name[IFNAMSIZ] = quote_str(BRCM_WLAN_IFNAME);
|
||||
diff --git a/x86-64/src/wl/sys/wl_linux.c b/x86-64/src/wl/sys/wl_linux.c
|
||||
index 9ee69e1..409bda7 100644
|
||||
--- a/x86-64/src/wl/sys/wl_linux.c
|
||||
+++ b/x86-64/src/wl/sys/wl_linux.c
|
||||
@@ -2693,7 +2693,7 @@ wl_tkip_keyset(wl_info_t *wl, wsec_key_t *key)
|
||||
diff -Naur bcm_sta-6.20.155.1/x86-64/src/wl/sys/wl_linux.c bcm_sta-6.20.155.1.patch/x86-64/src/wl/sys/wl_linux.c
|
||||
--- bcm_sta-6.20.155.1/x86-64/src/wl/sys/wl_linux.c 2013-04-14 23:10:38.000000000 +0200
|
||||
+++ bcm_sta-6.20.155.1.patch/x86-64/src/wl/sys/wl_linux.c 2014-05-14 21:48:16.002975186 +0200
|
||||
@@ -2681,7 +2681,7 @@
|
||||
void
|
||||
wl_tkip_printstats(wl_info_t *wl, bool group_key)
|
||||
{
|
||||
@@ -139,7 +124,7 @@ index 9ee69e1..409bda7 100644
|
||||
char debug_buf[512];
|
||||
int idx;
|
||||
if (wl->tkipmodops) {
|
||||
@@ -2855,6 +2855,7 @@ wl_linux_watchdog(void *ctx)
|
||||
@@ -2843,6 +2843,7 @@
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -147,7 +132,7 @@ index 9ee69e1..409bda7 100644
|
||||
static int
|
||||
wl_proc_read(char *buffer, char **start, off_t offset, int length, int *eof, void *data)
|
||||
{
|
||||
@@ -2909,18 +2910,89 @@ wl_proc_write(struct file *filp, const char *buff, unsigned long length, void *d
|
||||
@@ -2897,18 +2898,89 @@
|
||||
return length;
|
||||
}
|
||||
|
||||
@@ -227,7 +212,7 @@ index 9ee69e1..409bda7 100644
|
||||
+ wl->proc_entry->read_proc = wl_proc_read;
|
||||
+ wl->proc_entry->write_proc = wl_proc_write;
|
||||
+ wl->proc_entry->data = wl;
|
||||
+ }
|
||||
+ }
|
||||
+#else
|
||||
+ wl->proc_entry = proc_create_data(tmp, 0644, NULL, &wl_proc_fops, wl);
|
||||
+#endif
|
||||
@@ -241,16 +226,3 @@ index 9ee69e1..409bda7 100644
|
||||
- wl->proc_entry->data = wl;
|
||||
return 0;
|
||||
}
|
||||
diff --git a/x86-64/src/wl/sys/wl_linux.c.orig b/x86-64/src/wl/sys/wl_linux.c.orig
|
||||
index 38206ab..9ee69e1 100644
|
||||
--- a/x86-64/src/wl/sys/wl_linux.c.orig
|
||||
+++ b/x86-64/src/wl/sys/wl_linux.c.orig
|
||||
@@ -219,7 +219,7 @@ module_param(nompc, int, 0);
|
||||
#define quote_str(s) to_str(s)
|
||||
|
||||
#ifndef BRCM_WLAN_IFNAME
|
||||
-#define BRCM_WLAN_IFNAME eth%d
|
||||
+#define BRCM_WLAN_IFNAME wlan%d
|
||||
#endif
|
||||
|
||||
static char intf_name[IFNAMSIZ] = quote_str(BRCM_WLAN_IFNAME);
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
--- a/x86-32/src/wl/sys/wl_linux.c
|
||||
+++ b/x86-32/src/wl/sys/wl_linux.c
|
||||
@@ -1773,8 +1773,8 @@
|
||||
void
|
||||
wl_dump_ver(wl_info_t *wl, struct bcmstrbuf *b)
|
||||
{
|
||||
- bcm_bprintf(b, "wl%d: %s %s version %s\n", wl->pub->unit,
|
||||
- __DATE__, __TIME__, EPI_VERSION_STR);
|
||||
+ bcm_bprintf(b, "wl%d: version %s\n", wl->pub->unit,
|
||||
+ EPI_VERSION_STR);
|
||||
}
|
||||
|
||||
#if defined(BCMDBG)
|
||||
|
||||
--- a/x86-64/src/wl/sys/wl_linux.c
|
||||
+++b/x86-64/src/wl/sys/wl_linux.c
|
||||
@@ -1773,8 +1773,8 @@
|
||||
void
|
||||
wl_dump_ver(wl_info_t *wl, struct bcmstrbuf *b)
|
||||
{
|
||||
- bcm_bprintf(b, "wl%d: %s %s version %s\n", wl->pub->unit,
|
||||
- __DATE__, __TIME__, EPI_VERSION_STR);
|
||||
+ bcm_bprintf(b, "wl%d: version %s\n", wl->pub->unit,
|
||||
+ EPI_VERSION_STR);
|
||||
}
|
||||
|
||||
#if defined(BCMDBG)
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="dvb-firmware"
|
||||
PKG_VERSION="0.0.38"
|
||||
PKG_VERSION="0.0.41"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="Free-to-use"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="wlan-firmware"
|
||||
PKG_VERSION="0.0.18"
|
||||
PKG_VERSION="0.0.21"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="Free-to-use"
|
||||
|
||||
BIN
packages/linux/firmware/radeon/BONAIRE_vce.bin
Normal file
BIN
packages/linux/firmware/radeon/BONAIRE_vce.bin
Normal file
Binary file not shown.
@@ -19,15 +19,11 @@
|
||||
PKG_NAME="linux"
|
||||
case "$LINUX" in
|
||||
imx6)
|
||||
PKG_VERSION="imx_3.0.35_4.1.0-5c73417"
|
||||
PKG_VERSION="cuboxi-592b2d9"
|
||||
PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.xz"
|
||||
;;
|
||||
3.13)
|
||||
PKG_VERSION="3.13.7"
|
||||
PKG_URL="http://www.kernel.org/pub/linux/kernel/v3.x/$PKG_NAME-$PKG_VERSION.tar.xz"
|
||||
;;
|
||||
*)
|
||||
PKG_VERSION="3.14"
|
||||
PKG_VERSION="3.14.7"
|
||||
PKG_URL="http://www.kernel.org/pub/linux/kernel/v3.x/$PKG_NAME-$PKG_VERSION.tar.xz"
|
||||
;;
|
||||
esac
|
||||
@@ -175,9 +171,9 @@ make_target() {
|
||||
|
||||
makeinstall_target() {
|
||||
if [ "$BOOTLOADER" = "u-boot" ]; then
|
||||
mkdir -p $INSTALL/usr/share/u-boot
|
||||
mkdir -p $INSTALL/usr/share/bootloader
|
||||
for dtb in arch/arm/boot/dts/*.dtb; do
|
||||
cp $dtb $INSTALL/usr/share/u-boot
|
||||
cp $dtb $INSTALL/usr/share/bootloader
|
||||
done
|
||||
fi
|
||||
|
||||
|
||||
26369
packages/linux/patches/3.13.7/linux-221-ngene-octopus.patch
vendored
26369
packages/linux/patches/3.13.7/linux-221-ngene-octopus.patch
vendored
File diff suppressed because it is too large
Load Diff
@@ -1,115 +0,0 @@
|
||||
From e28f3bbe9ce8cb3c81f289487a8724a7b4a6ddb2 Mon Sep 17 00:00:00 2001
|
||||
From: popcornmix <popcornmix@gmail.com>
|
||||
Date: Wed, 27 Nov 2013 22:52:53 +0000
|
||||
Subject: [PATCH 061/114] dvb: Add support for CableStar Device
|
||||
|
||||
---
|
||||
drivers/media/dvb-core/dvb-usb-ids.h | 1 +
|
||||
drivers/media/usb/dvb-usb-v2/az6007.c | 59 +++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 60 insertions(+)
|
||||
|
||||
diff --git a/drivers/media/dvb-core/dvb-usb-ids.h b/drivers/media/dvb-core/dvb-usb-ids.h
|
||||
index 7e0f619..8407178 100644
|
||||
--- a/drivers/media/dvb-core/dvb-usb-ids.h
|
||||
+++ b/drivers/media/dvb-core/dvb-usb-ids.h
|
||||
@@ -366,6 +366,7 @@
|
||||
#define USB_PID_TERRATEC_DVBS2CI_V2 0x10ac
|
||||
#define USB_PID_TECHNISAT_USB2_HDCI_V1 0x0001
|
||||
#define USB_PID_TECHNISAT_USB2_HDCI_V2 0x0002
|
||||
+#define USB_PID_TECHNISAT_USB2_CABLESTAR_HDCI 0x0003
|
||||
#define USB_PID_TECHNISAT_AIRSTAR_TELESTICK_2 0x0004
|
||||
#define USB_PID_TECHNISAT_USB2_DVB_S2 0x0500
|
||||
#define USB_PID_CPYTO_REDI_PC50A 0xa803
|
||||
diff --git a/drivers/media/usb/dvb-usb-v2/az6007.c b/drivers/media/usb/dvb-usb-v2/az6007.c
|
||||
index 44c64ef3..c1051c3 100644
|
||||
--- a/drivers/media/usb/dvb-usb-v2/az6007.c
|
||||
+++ b/drivers/media/usb/dvb-usb-v2/az6007.c
|
||||
@@ -68,6 +68,19 @@ struct az6007_device_state {
|
||||
.microcode_name = "dvb-usb-terratec-h7-drxk.fw",
|
||||
};
|
||||
|
||||
+static struct drxk_config cablestar_hdci_drxk = {
|
||||
+ .adr = 0x29,
|
||||
+ .parallel_ts = true,
|
||||
+ .dynamic_clk = true,
|
||||
+ .single_master = true,
|
||||
+ .enable_merr_cfg = true,
|
||||
+ .no_i2c_bridge = false,
|
||||
+ .chunk_size = 64,
|
||||
+ .mpeg_out_clk_strength = 0x02,
|
||||
+ .qam_demod_parameter_count = 2,
|
||||
+ .microcode_name = "dvb-usb-technisat-cablestar-hdci-drxk.fw",
|
||||
+};
|
||||
+
|
||||
static int drxk_gate_ctrl(struct dvb_frontend *fe, int enable)
|
||||
{
|
||||
struct az6007_device_state *st = fe_to_priv(fe);
|
||||
@@ -630,6 +643,27 @@ static int az6007_frontend_attach(struct dvb_usb_adapter *adap)
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static int az6007_cablestar_hdci_frontend_attach(struct dvb_usb_adapter *adap)
|
||||
+{
|
||||
+ struct az6007_device_state *st = adap_to_priv(adap);
|
||||
+ struct dvb_usb_device *d = adap_to_d(adap);
|
||||
+
|
||||
+ pr_debug("attaching demod drxk\n");
|
||||
+
|
||||
+ adap->fe[0] = dvb_attach(drxk_attach, &cablestar_hdci_drxk,
|
||||
+ &d->i2c_adap);
|
||||
+ if (!adap->fe[0])
|
||||
+ return -EINVAL;
|
||||
+
|
||||
+ adap->fe[0]->sec_priv = adap;
|
||||
+ st->gate_ctrl = adap->fe[0]->ops.i2c_gate_ctrl;
|
||||
+ adap->fe[0]->ops.i2c_gate_ctrl = drxk_gate_ctrl;
|
||||
+
|
||||
+ az6007_ci_init(adap);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static int az6007_tuner_attach(struct dvb_usb_adapter *adap)
|
||||
{
|
||||
struct dvb_usb_device *d = adap_to_d(adap);
|
||||
@@ -868,6 +902,29 @@ static int az6007_download_firmware(struct dvb_usb_device *d,
|
||||
}
|
||||
};
|
||||
|
||||
+static struct dvb_usb_device_properties az6007_cablestar_hdci_props = {
|
||||
+ .driver_name = KBUILD_MODNAME,
|
||||
+ .owner = THIS_MODULE,
|
||||
+ .firmware = AZ6007_FIRMWARE,
|
||||
+
|
||||
+ .adapter_nr = adapter_nr,
|
||||
+ .size_of_priv = sizeof(struct az6007_device_state),
|
||||
+ .i2c_algo = &az6007_i2c_algo,
|
||||
+ .tuner_attach = az6007_tuner_attach,
|
||||
+ .frontend_attach = az6007_cablestar_hdci_frontend_attach,
|
||||
+ .streaming_ctrl = az6007_streaming_ctrl,
|
||||
+/* ditch get_rc_config as it can't work (TS35 remote, I believe it's rc5) */
|
||||
+ .get_rc_config = NULL,
|
||||
+ .read_mac_address = az6007_read_mac_addr,
|
||||
+ .download_firmware = az6007_download_firmware,
|
||||
+ .identify_state = az6007_identify_state,
|
||||
+ .power_ctrl = az6007_power_ctrl,
|
||||
+ .num_adapters = 1,
|
||||
+ .adapter = {
|
||||
+ { .stream = DVB_USB_STREAM_BULK(0x02, 10, 4096), }
|
||||
+ }
|
||||
+};
|
||||
+
|
||||
static struct usb_device_id az6007_usb_table[] = {
|
||||
{DVB_USB_DEVICE(USB_VID_AZUREWAVE, USB_PID_AZUREWAVE_6007,
|
||||
&az6007_props, "Azurewave 6007", RC_MAP_EMPTY)},
|
||||
@@ -875,6 +932,8 @@ static int az6007_download_firmware(struct dvb_usb_device *d,
|
||||
&az6007_props, "Terratec H7", RC_MAP_NEC_TERRATEC_CINERGY_XS)},
|
||||
{DVB_USB_DEVICE(USB_VID_TERRATEC, USB_PID_TERRATEC_H7_2,
|
||||
&az6007_props, "Terratec H7", RC_MAP_NEC_TERRATEC_CINERGY_XS)},
|
||||
+ {DVB_USB_DEVICE(USB_VID_TECHNISAT, USB_PID_TECHNISAT_USB2_CABLESTAR_HDCI,
|
||||
+ &az6007_cablestar_hdci_props, "Technisat CableStar Combo HD CI", RC_MAP_EMPTY)},
|
||||
{0},
|
||||
};
|
||||
|
||||
--
|
||||
1.8.5.5
|
||||
17
packages/linux/patches/3.14.7/linux-061-nuvoton-cir-Activate-PNP-device-when-probing.patch
vendored
Normal file
17
packages/linux/patches/3.14.7/linux-061-nuvoton-cir-Activate-PNP-device-when-probing.patch
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
diff --git a/drivers/media/rc/nuvoton-cir.c b/drivers/media/rc/nuvoton-cir.c
|
||||
index b41e52e..b81325d 100644
|
||||
--- a/drivers/media/rc/nuvoton-cir.c
|
||||
+++ b/drivers/media/rc/nuvoton-cir.c
|
||||
@@ -985,6 +985,12 @@ static int nvt_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id)
|
||||
goto exit_free_dev_rdev;
|
||||
|
||||
ret = -ENODEV;
|
||||
+ /* activate pnp device */
|
||||
+ if (pnp_activate_dev(pdev) < 0) {
|
||||
+ dev_err(&pdev->dev, "Could not activate PNP device!\n");
|
||||
+ goto exit_free_dev_rdev;
|
||||
+ }
|
||||
+
|
||||
/* validate pnp resources */
|
||||
if (!pnp_port_valid(pdev, 0) ||
|
||||
pnp_port_len(pdev, 0) < CIR_IOREG_LENGTH) {
|
||||
@@ -0,0 +1,138 @@
|
||||
From cb171f7abb9a1a250fb41d088b81799f75bd1357 Mon Sep 17 00:00:00 2001
|
||||
From: Bjorn Helgaas <bhelgaas@google.com>
|
||||
Date: Wed, 23 Apr 2014 10:21:06 -0600
|
||||
Subject: PNP: Work around BIOS defects in Intel MCH area reporting
|
||||
|
||||
Work around BIOSes that don't report the entire Intel MCH area.
|
||||
|
||||
MCHBAR is not an architected PCI BAR, so MCH space is usually reported as a
|
||||
PNP0C02 resource. The MCH space was once 16KB, but is 32KB in newer parts.
|
||||
Some BIOSes still report a PNP0C02 resource that is only 16KB, which means
|
||||
the rest of the MCH space is consumed but unreported.
|
||||
|
||||
This can cause resource map sanity check warnings or (theoretically) a
|
||||
device conflict if we assigned the unreported space to another device.
|
||||
|
||||
The Intel perf event uncore driver tripped over this when it claimed the
|
||||
MCH region:
|
||||
|
||||
resource map sanity check conflict: 0xfed10000 0xfed15fff 0xfed10000 0xfed13fff pnp 00:01
|
||||
Info: mapping multiple BARs. Your kernel is fine.
|
||||
|
||||
To prevent this, if we find a PNP0C02 resource that covers part of the MCH
|
||||
space, extend it to cover the entire space.
|
||||
|
||||
References: http://lkml.kernel.org/r/20140224162400.GE16457@pd.tnic
|
||||
Reported-and-tested-by: Borislav Petkov <bp@alien8.de>
|
||||
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
|
||||
Acked-by: Borislav Petkov <bp@suse.de>
|
||||
Acked-by: Stephane Eranian <eranian@google.com>
|
||||
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
|
||||
|
||||
diff --git a/drivers/pnp/quirks.c b/drivers/pnp/quirks.c
|
||||
index 258fef2..3736bc4 100644
|
||||
--- a/drivers/pnp/quirks.c
|
||||
+++ b/drivers/pnp/quirks.c
|
||||
@@ -15,6 +15,7 @@
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/kernel.h>
|
||||
+#include <linux/pci.h>
|
||||
#include <linux/string.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/pnp.h>
|
||||
@@ -334,6 +335,81 @@ static void quirk_amd_mmconfig_area(struct pnp_dev *dev)
|
||||
}
|
||||
#endif
|
||||
|
||||
+#ifdef CONFIG_X86
|
||||
+/* Device IDs of parts that have 32KB MCH space */
|
||||
+static const unsigned int mch_quirk_devices[] = {
|
||||
+ 0x0154, /* Ivy Bridge */
|
||||
+ 0x0c00, /* Haswell */
|
||||
+};
|
||||
+
|
||||
+static struct pci_dev *get_intel_host(void)
|
||||
+{
|
||||
+ int i;
|
||||
+ struct pci_dev *host;
|
||||
+
|
||||
+ for (i = 0; i < ARRAY_SIZE(mch_quirk_devices); i++) {
|
||||
+ host = pci_get_device(PCI_VENDOR_ID_INTEL, mch_quirk_devices[i],
|
||||
+ NULL);
|
||||
+ if (host)
|
||||
+ return host;
|
||||
+ }
|
||||
+ return NULL;
|
||||
+}
|
||||
+
|
||||
+static void quirk_intel_mch(struct pnp_dev *dev)
|
||||
+{
|
||||
+ struct pci_dev *host;
|
||||
+ u32 addr_lo, addr_hi;
|
||||
+ struct pci_bus_region region;
|
||||
+ struct resource mch;
|
||||
+ struct pnp_resource *pnp_res;
|
||||
+ struct resource *res;
|
||||
+
|
||||
+ host = get_intel_host();
|
||||
+ if (!host)
|
||||
+ return;
|
||||
+
|
||||
+ /*
|
||||
+ * MCHBAR is not an architected PCI BAR, so MCH space is usually
|
||||
+ * reported as a PNP0C02 resource. The MCH space was originally
|
||||
+ * 16KB, but is 32KB in newer parts. Some BIOSes still report a
|
||||
+ * PNP0C02 resource that is only 16KB, which means the rest of the
|
||||
+ * MCH space is consumed but unreported.
|
||||
+ */
|
||||
+
|
||||
+ /*
|
||||
+ * Read MCHBAR for Host Member Mapped Register Range Base
|
||||
+ * https://www-ssl.intel.com/content/www/us/en/processors/core/4th-gen-core-family-desktop-vol-2-datasheet
|
||||
+ * Sec 3.1.12.
|
||||
+ */
|
||||
+ pci_read_config_dword(host, 0x48, &addr_lo);
|
||||
+ region.start = addr_lo & ~0x7fff;
|
||||
+ pci_read_config_dword(host, 0x4c, &addr_hi);
|
||||
+ region.start |= (u64) addr_hi << 32;
|
||||
+ region.end = region.start + 32*1024 - 1;
|
||||
+
|
||||
+ memset(&mch, 0, sizeof(mch));
|
||||
+ mch.flags = IORESOURCE_MEM;
|
||||
+ pcibios_bus_to_resource(host->bus, &mch, ®ion);
|
||||
+
|
||||
+ list_for_each_entry(pnp_res, &dev->resources, list) {
|
||||
+ res = &pnp_res->res;
|
||||
+ if (res->end < mch.start || res->start > mch.end)
|
||||
+ continue; /* no overlap */
|
||||
+ if (res->start == mch.start && res->end == mch.end)
|
||||
+ continue; /* exact match */
|
||||
+
|
||||
+ dev_info(&dev->dev, FW_BUG "PNP resource %pR covers only part of %s Intel MCH; extending to %pR\n",
|
||||
+ res, pci_name(host), &mch);
|
||||
+ res->start = mch.start;
|
||||
+ res->end = mch.end;
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ pci_dev_put(host);
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
/*
|
||||
* PnP Quirks
|
||||
* Cards or devices that need some tweaking due to incomplete resource info
|
||||
@@ -364,6 +440,9 @@ static struct pnp_fixup pnp_fixups[] = {
|
||||
#ifdef CONFIG_AMD_NB
|
||||
{"PNP0c01", quirk_amd_mmconfig_area},
|
||||
#endif
|
||||
+#ifdef CONFIG_X86
|
||||
+ {"PNP0c02", quirk_intel_mch},
|
||||
+#endif
|
||||
{""}
|
||||
};
|
||||
|
||||
--
|
||||
cgit v0.10.1
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/drivers/media/dvb-frontends/Kconfig b/drivers/media/dvb-frontends/Kconfig
|
||||
index fb77062..f6f1afa 100644
|
||||
index 49db718..6ddcfc9 100644
|
||||
--- a/drivers/media/dvb-frontends/Kconfig
|
||||
+++ b/drivers/media/dvb-frontends/Kconfig
|
||||
@@ -214,6 +214,20 @@ config DVB_CX24117
|
||||
@@ -248,6 +248,20 @@ config DVB_CX24117
|
||||
help
|
||||
A Dual DVB-S/S2 tuner module. Say Y when you want to support this frontend.
|
||||
|
||||
@@ -24,10 +24,10 @@ index fb77062..f6f1afa 100644
|
||||
tristate "Silicon Labs SI21XX based"
|
||||
depends on DVB_CORE && I2C
|
||||
diff --git a/drivers/media/dvb-frontends/Makefile b/drivers/media/dvb-frontends/Makefile
|
||||
index c08b7f0..e8de9b6 100644
|
||||
index 9b21488..edaae0d 100644
|
||||
--- a/drivers/media/dvb-frontends/Makefile
|
||||
+++ b/drivers/media/dvb-frontends/Makefile
|
||||
@@ -108,4 +108,5 @@ obj-$(CONFIG_DVB_RTL2830) += rtl2830.o
|
||||
@@ -112,4 +112,5 @@ obj-$(CONFIG_DVB_RTL2830) += rtl2830.o
|
||||
obj-$(CONFIG_DVB_RTL2832) += rtl2832.o
|
||||
obj-$(CONFIG_DVB_M88RS2000) += m88rs2000.o
|
||||
obj-$(CONFIG_DVB_AF9033) += af9033.o
|
||||
@@ -36,7 +36,7 @@ index c08b7f0..e8de9b6 100644
|
||||
+obj-$(CONFIG_DVB_DVBSKY_M88DC2800) += dvbsky_m88dc2800.o
|
||||
diff --git a/drivers/media/dvb-frontends/dvbsky_m88dc2800.c b/drivers/media/dvb-frontends/dvbsky_m88dc2800.c
|
||||
new file mode 100644
|
||||
index 0000000..f876a11
|
||||
index 0000000..3c933b4
|
||||
--- /dev/null
|
||||
+++ b/drivers/media/dvb-frontends/dvbsky_m88dc2800.c
|
||||
@@ -0,0 +1,2124 @@
|
||||
@@ -2166,7 +2166,7 @@ index 0000000..f876a11
|
||||
+MODULE_VERSION("1.00");
|
||||
diff --git a/drivers/media/dvb-frontends/dvbsky_m88dc2800.h b/drivers/media/dvb-frontends/dvbsky_m88dc2800.h
|
||||
new file mode 100644
|
||||
index 0000000..2184322
|
||||
index 0000000..0844a66
|
||||
--- /dev/null
|
||||
+++ b/drivers/media/dvb-frontends/dvbsky_m88dc2800.h
|
||||
@@ -0,0 +1,44 @@
|
||||
@@ -2216,7 +2216,7 @@ index 0000000..2184322
|
||||
+#endif /* dvbsky_m88dc2800_H */
|
||||
diff --git a/drivers/media/dvb-frontends/dvbsky_m88ds3103.c b/drivers/media/dvb-frontends/dvbsky_m88ds3103.c
|
||||
new file mode 100644
|
||||
index 0000000..9d525da
|
||||
index 0000000..99985a7
|
||||
--- /dev/null
|
||||
+++ b/drivers/media/dvb-frontends/dvbsky_m88ds3103.c
|
||||
@@ -0,0 +1,1707 @@
|
||||
@@ -3929,7 +3929,7 @@ index 0000000..9d525da
|
||||
+MODULE_LICENSE("GPL");
|
||||
diff --git a/drivers/media/dvb-frontends/dvbsky_m88ds3103.h b/drivers/media/dvb-frontends/dvbsky_m88ds3103.h
|
||||
new file mode 100644
|
||||
index 0000000..e3b96b2
|
||||
index 0000000..df95253
|
||||
--- /dev/null
|
||||
+++ b/drivers/media/dvb-frontends/dvbsky_m88ds3103.h
|
||||
@@ -0,0 +1,53 @@
|
||||
@@ -3988,7 +3988,7 @@ index 0000000..e3b96b2
|
||||
+#endif /* dvbsky_m88ds3103_H */
|
||||
diff --git a/drivers/media/dvb-frontends/dvbsky_m88ds3103_priv.h b/drivers/media/dvb-frontends/dvbsky_m88ds3103_priv.h
|
||||
new file mode 100644
|
||||
index 0000000..2838514
|
||||
index 0000000..dfb3f8b
|
||||
--- /dev/null
|
||||
+++ b/drivers/media/dvb-frontends/dvbsky_m88ds3103_priv.h
|
||||
@@ -0,0 +1,403 @@
|
||||
@@ -4396,7 +4396,7 @@ index 0000000..2838514
|
||||
+
|
||||
+#endif /* dvbsky_m88ds3103_PRIV_H */
|
||||
diff --git a/drivers/media/pci/cx23885/Kconfig b/drivers/media/pci/cx23885/Kconfig
|
||||
index d1dcb1d..478f3dc 100644
|
||||
index d1dcb1d..a5fbc89 100644
|
||||
--- a/drivers/media/pci/cx23885/Kconfig
|
||||
+++ b/drivers/media/pci/cx23885/Kconfig
|
||||
@@ -23,6 +23,8 @@ config VIDEO_CX23885
|
||||
@@ -4745,7 +4745,7 @@ index edcd79d..4b57eef 100644
|
||||
break;
|
||||
}
|
||||
diff --git a/drivers/media/pci/cx23885/cx23885-dvb.c b/drivers/media/pci/cx23885/cx23885-dvb.c
|
||||
index 0549205..86c0cf2 100644
|
||||
index 0549205..201523a 100644
|
||||
--- a/drivers/media/pci/cx23885/cx23885-dvb.c
|
||||
+++ b/drivers/media/pci/cx23885/cx23885-dvb.c
|
||||
@@ -52,6 +52,8 @@
|
||||
@@ -5019,7 +5019,7 @@ index 8a49e7c..a5e4639 100644
|
||||
/* Integrated CX23885 IR controller */
|
||||
driver_type = RC_DRIVER_IR_RAW;
|
||||
diff --git a/drivers/media/pci/cx23885/cx23885.h b/drivers/media/pci/cx23885/cx23885.h
|
||||
index 0fa4048..bd33b00 100644
|
||||
index 0fa4048..7084a4e 100644
|
||||
--- a/drivers/media/pci/cx23885/cx23885.h
|
||||
+++ b/drivers/media/pci/cx23885/cx23885.h
|
||||
@@ -97,6 +97,14 @@
|
||||
@@ -5047,7 +5047,7 @@ index 0fa4048..bd33b00 100644
|
||||
u32 force_bff;
|
||||
};
|
||||
diff --git a/drivers/media/pci/cx88/Kconfig b/drivers/media/pci/cx88/Kconfig
|
||||
index a63a9ad..ccf0e6a 100644
|
||||
index a63a9ad..7deb300 100644
|
||||
--- a/drivers/media/pci/cx88/Kconfig
|
||||
+++ b/drivers/media/pci/cx88/Kconfig
|
||||
@@ -57,6 +57,7 @@ config VIDEO_CX88_DVB
|
||||
@@ -5106,7 +5106,7 @@ index e18a7ac..317511d 100644
|
||||
|
||||
|
||||
diff --git a/drivers/media/pci/cx88/cx88-dvb.c b/drivers/media/pci/cx88/cx88-dvb.c
|
||||
index 053ed1b..b4269a8 100644
|
||||
index 053ed1b..955b916 100644
|
||||
--- a/drivers/media/pci/cx88/cx88-dvb.c
|
||||
+++ b/drivers/media/pci/cx88/cx88-dvb.c
|
||||
@@ -54,6 +54,7 @@
|
||||
@@ -5250,7 +5250,7 @@ index 28893a6..5fa5f48 100644
|
||||
enum cx88_itype {
|
||||
CX88_VMUX_COMPOSITE1 = 1,
|
||||
diff --git a/drivers/media/rc/keymaps/Makefile b/drivers/media/rc/keymaps/Makefile
|
||||
index b1cde8c..563a109 100644
|
||||
index 0b8c549..abf6079 100644
|
||||
--- a/drivers/media/rc/keymaps/Makefile
|
||||
+++ b/drivers/media/rc/keymaps/Makefile
|
||||
@@ -28,6 +28,7 @@ obj-$(CONFIG_RC_MAP) += rc-adstech-dvb-t-pci.o \
|
||||
@@ -5346,7 +5346,7 @@ index 0000000..bfc41fb
|
||||
+MODULE_LICENSE("GPL");
|
||||
+MODULE_AUTHOR("Nibble Max <nibble.max@gmail.com>");
|
||||
diff --git a/drivers/media/usb/dvb-usb-v2/Kconfig b/drivers/media/usb/dvb-usb-v2/Kconfig
|
||||
index 2059d0c..1dc0600 100644
|
||||
index 2059d0c..24a4ec2 100644
|
||||
--- a/drivers/media/usb/dvb-usb-v2/Kconfig
|
||||
+++ b/drivers/media/usb/dvb-usb-v2/Kconfig
|
||||
@@ -147,3 +147,9 @@ config DVB_USB_RTL28XXU
|
||||
@@ -5360,7 +5360,7 @@ index 2059d0c..1dc0600 100644
|
||||
+ help
|
||||
+ Say Y here to support the USB receivers from DVBSky.
|
||||
diff --git a/drivers/media/usb/dvb-usb-v2/Makefile b/drivers/media/usb/dvb-usb-v2/Makefile
|
||||
index 2c06714..e002b57 100644
|
||||
index 2c06714..926f12d 100644
|
||||
--- a/drivers/media/usb/dvb-usb-v2/Makefile
|
||||
+++ b/drivers/media/usb/dvb-usb-v2/Makefile
|
||||
@@ -40,6 +40,9 @@ obj-$(CONFIG_DVB_USB_MXL111SF) += mxl111sf-tuner.o
|
||||
@@ -5375,10 +5375,10 @@ index 2c06714..e002b57 100644
|
||||
ccflags-y += -I$(srctree)/drivers/media/tuners
|
||||
diff --git a/drivers/media/usb/dvb-usb-v2/dvbsky.c b/drivers/media/usb/dvb-usb-v2/dvbsky.c
|
||||
new file mode 100644
|
||||
index 0000000..45bedfc
|
||||
index 0000000..9033d92
|
||||
--- /dev/null
|
||||
+++ b/drivers/media/usb/dvb-usb-v2/dvbsky.c
|
||||
@@ -0,0 +1,741 @@
|
||||
@@ -0,0 +1,739 @@
|
||||
+/*
|
||||
+ * Driver for DVBSky USB2.0 receiver
|
||||
+ *
|
||||
@@ -5984,8 +5984,6 @@ index 0000000..45bedfc
|
||||
+ struct dvb_usb_device *d = adap_to_d(adap);
|
||||
+ int ret = 0;
|
||||
+
|
||||
+ dprintk("%s, build on %s %s()\n", __func__, __DATE__,__TIME__);
|
||||
+
|
||||
+ dvbsky_gpio_ctrl(d, 0x04, 1);
|
||||
+
|
||||
+ dvbsky_gpio_ctrl(d, 0x83, 0);
|
||||
@@ -6121,7 +6119,7 @@ index 0000000..45bedfc
|
||||
+MODULE_DESCRIPTION("Driver for DVBSky USB2.0");
|
||||
+MODULE_LICENSE("GPL");
|
||||
diff --git a/include/media/rc-map.h b/include/media/rc-map.h
|
||||
index 6628f5d..64646e3 100644
|
||||
index a20ed97..73f8c92 100644
|
||||
--- a/include/media/rc-map.h
|
||||
+++ b/include/media/rc-map.h
|
||||
@@ -119,6 +119,7 @@ void rc_map_init(void);
|
||||
97
packages/linux/patches/3.14.7/linux-224-geniatech-t220-dvb-t2-fix.patch
vendored
Normal file
97
packages/linux/patches/3.14.7/linux-224-geniatech-t220-dvb-t2-fix.patch
vendored
Normal file
@@ -0,0 +1,97 @@
|
||||
diff --git a/drivers/media/dvb-frontends/cxd2820r.h b/drivers/media/dvb-frontends/cxd2820r.h
|
||||
index 82b3d93..6095dbc 100644
|
||||
--- a/drivers/media/dvb-frontends/cxd2820r.h
|
||||
+++ b/drivers/media/dvb-frontends/cxd2820r.h
|
||||
@@ -52,6 +52,12 @@ struct cxd2820r_config {
|
||||
*/
|
||||
u8 ts_mode;
|
||||
|
||||
+ /* TS clock inverted.
|
||||
+ * Default: 0
|
||||
+ * Values: 0, 1
|
||||
+ */
|
||||
+ bool ts_clock_inv;
|
||||
+
|
||||
/* IF AGC polarity.
|
||||
* Default: 0
|
||||
* Values: 0, 1
|
||||
diff --git a/drivers/media/dvb-frontends/cxd2820r_c.c b/drivers/media/dvb-frontends/cxd2820r_c.c
|
||||
index 5c6ab49..0f4657e 100644
|
||||
--- a/drivers/media/dvb-frontends/cxd2820r_c.c
|
||||
+++ b/drivers/media/dvb-frontends/cxd2820r_c.c
|
||||
@@ -45,6 +45,7 @@ int cxd2820r_set_frontend_c(struct dvb_frontend *fe)
|
||||
{ 0x1008b, 0x07, 0xff },
|
||||
{ 0x1001f, priv->cfg.if_agc_polarity << 7, 0x80 },
|
||||
{ 0x10070, priv->cfg.ts_mode, 0xff },
|
||||
+ { 0x10071, !priv->cfg.ts_clock_inv << 4, 0x10 },
|
||||
};
|
||||
|
||||
dev_dbg(&priv->i2c->dev, "%s: frequency=%d symbol_rate=%d\n", __func__,
|
||||
diff --git a/drivers/media/dvb-frontends/cxd2820r_t.c b/drivers/media/dvb-frontends/cxd2820r_t.c
|
||||
index fa184ca..9b5a45b 100644
|
||||
--- a/drivers/media/dvb-frontends/cxd2820r_t.c
|
||||
+++ b/drivers/media/dvb-frontends/cxd2820r_t.c
|
||||
@@ -46,6 +46,7 @@ int cxd2820r_set_frontend_t(struct dvb_frontend *fe)
|
||||
{ 0x00088, 0x01, 0xff },
|
||||
|
||||
{ 0x00070, priv->cfg.ts_mode, 0xff },
|
||||
+ { 0x00071, !priv->cfg.ts_clock_inv << 4, 0x10 },
|
||||
{ 0x000cb, priv->cfg.if_agc_polarity << 6, 0x40 },
|
||||
{ 0x000a5, 0x00, 0x01 },
|
||||
{ 0x00082, 0x20, 0x60 },
|
||||
diff --git a/drivers/media/dvb-frontends/cxd2820r_t2.c b/drivers/media/dvb-frontends/cxd2820r_t2.c
|
||||
index 2ba130e..9c0c4f4 100644
|
||||
--- a/drivers/media/dvb-frontends/cxd2820r_t2.c
|
||||
+++ b/drivers/media/dvb-frontends/cxd2820r_t2.c
|
||||
@@ -47,6 +47,7 @@ int cxd2820r_set_frontend_t2(struct dvb_frontend *fe)
|
||||
{ 0x02083, 0x0a, 0xff },
|
||||
{ 0x020cb, priv->cfg.if_agc_polarity << 6, 0x40 },
|
||||
{ 0x02070, priv->cfg.ts_mode, 0xff },
|
||||
+ { 0x02071, !priv->cfg.ts_clock_inv << 6, 0x40 },
|
||||
{ 0x020b5, priv->cfg.spec_inv << 4, 0x10 },
|
||||
{ 0x02567, 0x07, 0x0f },
|
||||
{ 0x02569, 0x03, 0x03 },
|
||||
diff --git a/drivers/media/usb/dvb-usb/dw2102.c b/drivers/media/usb/dvb-usb/dw2102.c
|
||||
index ae0f56a..7135a3e 100644
|
||||
--- a/drivers/media/usb/dvb-usb/dw2102.c
|
||||
+++ b/drivers/media/usb/dvb-usb/dw2102.c
|
||||
@@ -1109,6 +1109,7 @@ static struct ds3000_config su3000_ds3000_config = {
|
||||
static struct cxd2820r_config cxd2820r_config = {
|
||||
.i2c_address = 0x6c, /* (0xd8 >> 1) */
|
||||
.ts_mode = 0x38,
|
||||
+ .ts_clock_inv = 1,
|
||||
};
|
||||
|
||||
static struct tda18271_config tda18271_config = {
|
||||
@@ -1387,20 +1388,27 @@ static int su3000_frontend_attach(struct dvb_usb_adapter *d)
|
||||
|
||||
static int t220_frontend_attach(struct dvb_usb_adapter *d)
|
||||
{
|
||||
- u8 obuf[3] = { 0xe, 0x80, 0 };
|
||||
+ u8 obuf[3] = { 0xe, 0x87, 0 };
|
||||
u8 ibuf[] = { 0 };
|
||||
|
||||
if (dvb_usb_generic_rw(d->dev, obuf, 3, ibuf, 1, 0) < 0)
|
||||
err("command 0x0e transfer failed.");
|
||||
|
||||
obuf[0] = 0xe;
|
||||
- obuf[1] = 0x83;
|
||||
+ obuf[1] = 0x86;
|
||||
+ obuf[2] = 1;
|
||||
+
|
||||
+ if (dvb_usb_generic_rw(d->dev, obuf, 3, ibuf, 1, 0) < 0)
|
||||
+ err("command 0x0e transfer failed.");
|
||||
+
|
||||
+ obuf[0] = 0xe;
|
||||
+ obuf[1] = 0x80;
|
||||
obuf[2] = 0;
|
||||
|
||||
if (dvb_usb_generic_rw(d->dev, obuf, 3, ibuf, 1, 0) < 0)
|
||||
err("command 0x0e transfer failed.");
|
||||
|
||||
- msleep(100);
|
||||
+ msleep(50);
|
||||
|
||||
obuf[0] = 0xe;
|
||||
obuf[1] = 0x80;
|
||||
|
||||
0
packages/linux/patches/3.13.7/linux-995-CX24120-13Z_frontend.patch → packages/linux/patches/3.14.7/linux-995-CX24120-13Z_frontend.patch
vendored
Normal file → Executable file
0
packages/linux/patches/3.13.7/linux-995-CX24120-13Z_frontend.patch → packages/linux/patches/3.14.7/linux-995-CX24120-13Z_frontend.patch
vendored
Normal file → Executable file
92
packages/linux/patches/3.14.7/linux-999.03-0001-fix-mceusb.patch
vendored
Normal file
92
packages/linux/patches/3.14.7/linux-999.03-0001-fix-mceusb.patch
vendored
Normal file
@@ -0,0 +1,92 @@
|
||||
--- linux-3.14.1/drivers/media/rc/mceusb.c 2014-04-09 12:37:46.510492000 -0500
|
||||
+++ linux-3.14.1/drivers/media/rc/mceusb.c 2014-04-23 17:58:17.224854949 -0500
|
||||
@@ -761,11 +761,18 @@ static void mce_request_packet(struct mc
|
||||
}
|
||||
|
||||
/* outbound data */
|
||||
- pipe = usb_sndintpipe(ir->usbdev,
|
||||
- ir->usb_ep_out->bEndpointAddress);
|
||||
- usb_fill_int_urb(async_urb, ir->usbdev, pipe,
|
||||
- async_buf, size, mce_async_callback,
|
||||
- ir, ir->usb_ep_out->bInterval);
|
||||
+ if (usb_endpoint_xfer_int(ir->usb_ep_out)) {
|
||||
+ pipe = usb_sndintpipe(ir->usbdev,
|
||||
+ ir->usb_ep_out->bEndpointAddress);
|
||||
+ usb_fill_int_urb(async_urb, ir->usbdev, pipe, async_buf,
|
||||
+ size, mce_async_callback, ir,
|
||||
+ ir->usb_ep_out->bInterval);
|
||||
+ } else {
|
||||
+ pipe = usb_sndbulkpipe(ir->usbdev,
|
||||
+ ir->usb_ep_out->bEndpointAddress);
|
||||
+ usb_fill_bulk_urb(async_urb, ir->usbdev, pipe, async_buf,
|
||||
+ size, mce_async_callback, ir);
|
||||
+ }
|
||||
memcpy(async_buf, data, size);
|
||||
|
||||
} else if (urb_type == MCEUSB_RX) {
|
||||
@@ -1283,34 +1290,26 @@ static int mceusb_dev_probe(struct usb_i
|
||||
for (i = 0; i < idesc->desc.bNumEndpoints; ++i) {
|
||||
ep = &idesc->endpoint[i].desc;
|
||||
|
||||
- if ((ep_in == NULL)
|
||||
- && ((ep->bEndpointAddress & USB_ENDPOINT_DIR_MASK)
|
||||
- == USB_DIR_IN)
|
||||
- && (((ep->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK)
|
||||
- == USB_ENDPOINT_XFER_BULK)
|
||||
- || ((ep->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK)
|
||||
- == USB_ENDPOINT_XFER_INT))) {
|
||||
-
|
||||
- ep_in = ep;
|
||||
- ep_in->bmAttributes = USB_ENDPOINT_XFER_INT;
|
||||
- ep_in->bInterval = 1;
|
||||
- mce_dbg(&intf->dev, "acceptable inbound endpoint "
|
||||
- "found\n");
|
||||
+ if (ep_in == NULL) {
|
||||
+ if (usb_endpoint_is_bulk_in(ep)) {
|
||||
+ ep_in = ep;
|
||||
+ mce_dbg(&intf->dev, "acceptable bulk inbound endpoint found\n");
|
||||
+ } else if (usb_endpoint_is_int_in(ep)) {
|
||||
+ ep_in = ep;
|
||||
+ ep_in->bInterval = 1;
|
||||
+ mce_dbg(&intf->dev, "acceptable interrupt inbound endpoint found\n");
|
||||
+ }
|
||||
}
|
||||
|
||||
- if ((ep_out == NULL)
|
||||
- && ((ep->bEndpointAddress & USB_ENDPOINT_DIR_MASK)
|
||||
- == USB_DIR_OUT)
|
||||
- && (((ep->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK)
|
||||
- == USB_ENDPOINT_XFER_BULK)
|
||||
- || ((ep->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK)
|
||||
- == USB_ENDPOINT_XFER_INT))) {
|
||||
-
|
||||
- ep_out = ep;
|
||||
- ep_out->bmAttributes = USB_ENDPOINT_XFER_INT;
|
||||
- ep_out->bInterval = 1;
|
||||
- mce_dbg(&intf->dev, "acceptable outbound endpoint "
|
||||
- "found\n");
|
||||
+ if (ep_out == NULL) {
|
||||
+ if (usb_endpoint_is_bulk_out(ep)) {
|
||||
+ ep_out = ep;
|
||||
+ mce_dbg(&intf->dev, "acceptable bulk outbound endpoint found\n");
|
||||
+ } else if (usb_endpoint_is_int_out(ep)) {
|
||||
+ ep_out = ep;
|
||||
+ ep_out->bInterval = 1;
|
||||
+ mce_dbg(&intf->dev, "acceptable interrupt outbound endpoint found\n");
|
||||
+ }
|
||||
}
|
||||
}
|
||||
if (ep_in == NULL) {
|
||||
@@ -1318,7 +1317,11 @@ static int mceusb_dev_probe(struct usb_i
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
- pipe = usb_rcvintpipe(dev, ep_in->bEndpointAddress);
|
||||
+ if (usb_endpoint_xfer_int(ep_in)) {
|
||||
+ pipe = usb_rcvintpipe(dev, ep_in->bEndpointAddress);
|
||||
+ } else {
|
||||
+ pipe = usb_rcvbulkpipe(dev, ep_in->bEndpointAddress);
|
||||
+ }
|
||||
maxp = usb_maxpacket(dev, pipe, usb_pipeout(pipe));
|
||||
|
||||
ir = kzalloc(sizeof(struct mceusb_dev), GFP_KERNEL);
|
||||
599
packages/linux/patches/3.14.7/linux-999.03-drm-radeon-PLL-fixes.patch
vendored
Normal file
599
packages/linux/patches/3.14.7/linux-999.03-drm-radeon-PLL-fixes.patch
vendored
Normal file
@@ -0,0 +1,599 @@
|
||||
From 709b25580e01df28a97152a81010ce40f06ec01e Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>
|
||||
Date: Fri, 28 Mar 2014 18:55:10 +0100
|
||||
Subject: [PATCH 1/6] drm/radeon: rework finding display PLL numbers v2
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
This completely reworks how the PLL parameters are generated and
|
||||
should result in better matching dot clock frequencies.
|
||||
|
||||
Probably needs quite a bit of testing.
|
||||
|
||||
bugs: https://bugs.freedesktop.org/show_bug.cgi?id=76564
|
||||
|
||||
v2: more cleanup and comments.
|
||||
|
||||
Signed-off-by: Christian König <christian.koenig@amd.com>
|
||||
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
|
||||
---
|
||||
drivers/gpu/drm/radeon/radeon_display.c | 243 ++++++++++++++++++++------------
|
||||
1 file changed, 153 insertions(+), 90 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/radeon/radeon_display.c b/drivers/gpu/drm/radeon/radeon_display.c
|
||||
index fbd8b93..4e83ffd 100644
|
||||
--- a/drivers/gpu/drm/radeon/radeon_display.c
|
||||
+++ b/drivers/gpu/drm/radeon/radeon_display.c
|
||||
@@ -34,6 +34,8 @@
|
||||
#include <drm/drm_crtc_helper.h>
|
||||
#include <drm/drm_edid.h>
|
||||
|
||||
+#include <linux/gcd.h>
|
||||
+
|
||||
static void avivo_crtc_load_lut(struct drm_crtc *crtc)
|
||||
{
|
||||
struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc);
|
||||
@@ -799,66 +801,57 @@ int radeon_ddc_get_modes(struct radeon_connector *radeon_connector)
|
||||
}
|
||||
|
||||
/* avivo */
|
||||
-static void avivo_get_fb_div(struct radeon_pll *pll,
|
||||
- u32 target_clock,
|
||||
- u32 post_div,
|
||||
- u32 ref_div,
|
||||
- u32 *fb_div,
|
||||
- u32 *frac_fb_div)
|
||||
-{
|
||||
- u32 tmp = post_div * ref_div;
|
||||
|
||||
- tmp *= target_clock;
|
||||
- *fb_div = tmp / pll->reference_freq;
|
||||
- *frac_fb_div = tmp % pll->reference_freq;
|
||||
-
|
||||
- if (*fb_div > pll->max_feedback_div)
|
||||
- *fb_div = pll->max_feedback_div;
|
||||
- else if (*fb_div < pll->min_feedback_div)
|
||||
- *fb_div = pll->min_feedback_div;
|
||||
-}
|
||||
-
|
||||
-static u32 avivo_get_post_div(struct radeon_pll *pll,
|
||||
- u32 target_clock)
|
||||
+/**
|
||||
+ * avivo_reduce_ratio - fractional number reduction
|
||||
+ *
|
||||
+ * @nom: nominator
|
||||
+ * @den: denominator
|
||||
+ * @nom_min: minimum value for nominator
|
||||
+ * @den_min: minimum value for denominator
|
||||
+ *
|
||||
+ * Find the greatest common divisor and apply it on both nominator and
|
||||
+ * denominator, but make nominator and denominator are at least as large
|
||||
+ * as their minimum values.
|
||||
+ */
|
||||
+static void avivo_reduce_ratio(unsigned *nom, unsigned *den,
|
||||
+ unsigned nom_min, unsigned den_min)
|
||||
{
|
||||
- u32 vco, post_div, tmp;
|
||||
-
|
||||
- if (pll->flags & RADEON_PLL_USE_POST_DIV)
|
||||
- return pll->post_div;
|
||||
-
|
||||
- if (pll->flags & RADEON_PLL_PREFER_MINM_OVER_MAXP) {
|
||||
- if (pll->flags & RADEON_PLL_IS_LCD)
|
||||
- vco = pll->lcd_pll_out_min;
|
||||
- else
|
||||
- vco = pll->pll_out_min;
|
||||
- } else {
|
||||
- if (pll->flags & RADEON_PLL_IS_LCD)
|
||||
- vco = pll->lcd_pll_out_max;
|
||||
- else
|
||||
- vco = pll->pll_out_max;
|
||||
+ unsigned tmp;
|
||||
+
|
||||
+ /* reduce the numbers to a simpler ratio */
|
||||
+ tmp = gcd(*nom, *den);
|
||||
+ *nom /= tmp;
|
||||
+ *den /= tmp;
|
||||
+
|
||||
+ /* make sure nominator is large enough */
|
||||
+ if (*nom < nom_min) {
|
||||
+ tmp = (nom_min + *nom - 1) / *nom;
|
||||
+ *nom *= tmp;
|
||||
+ *den *= tmp;
|
||||
}
|
||||
|
||||
- post_div = vco / target_clock;
|
||||
- tmp = vco % target_clock;
|
||||
-
|
||||
- if (pll->flags & RADEON_PLL_PREFER_MINM_OVER_MAXP) {
|
||||
- if (tmp)
|
||||
- post_div++;
|
||||
- } else {
|
||||
- if (!tmp)
|
||||
- post_div--;
|
||||
+ /* make sure the denominator is large enough */
|
||||
+ if (*den < den_min) {
|
||||
+ tmp = (den_min + *den - 1) / *den;
|
||||
+ *nom *= tmp;
|
||||
+ *den *= tmp;
|
||||
}
|
||||
-
|
||||
- if (post_div > pll->max_post_div)
|
||||
- post_div = pll->max_post_div;
|
||||
- else if (post_div < pll->min_post_div)
|
||||
- post_div = pll->min_post_div;
|
||||
-
|
||||
- return post_div;
|
||||
}
|
||||
|
||||
-#define MAX_TOLERANCE 10
|
||||
-
|
||||
+/**
|
||||
+ * radeon_compute_pll_avivo - compute PLL paramaters
|
||||
+ *
|
||||
+ * @pll: information about the PLL
|
||||
+ * @dot_clock_p: resulting pixel clock
|
||||
+ * fb_div_p: resulting feedback divider
|
||||
+ * frac_fb_div_p: fractional part of the feedback divider
|
||||
+ * ref_div_p: resulting reference divider
|
||||
+ * post_div_p: resulting reference divider
|
||||
+ *
|
||||
+ * Try to calculate the PLL parameters to generate the given frequency:
|
||||
+ * dot_clock = (ref_freq * feedback_div) / (ref_div * post_div)
|
||||
+ */
|
||||
void radeon_compute_pll_avivo(struct radeon_pll *pll,
|
||||
u32 freq,
|
||||
u32 *dot_clock_p,
|
||||
@@ -867,53 +860,123 @@ void radeon_compute_pll_avivo(struct radeon_pll *pll,
|
||||
u32 *ref_div_p,
|
||||
u32 *post_div_p)
|
||||
{
|
||||
- u32 target_clock = freq / 10;
|
||||
- u32 post_div = avivo_get_post_div(pll, target_clock);
|
||||
- u32 ref_div = pll->min_ref_div;
|
||||
- u32 fb_div = 0, frac_fb_div = 0, tmp;
|
||||
+ unsigned fb_div_min, fb_div_max, fb_div;
|
||||
+ unsigned post_div_min, post_div_max, post_div;
|
||||
+ unsigned ref_div_min, ref_div_max, ref_div;
|
||||
+ unsigned post_div_best, diff_best;
|
||||
+ unsigned nom, den, tmp;
|
||||
|
||||
- if (pll->flags & RADEON_PLL_USE_REF_DIV)
|
||||
- ref_div = pll->reference_div;
|
||||
+ /* determine allowed feedback divider range */
|
||||
+ fb_div_min = pll->min_feedback_div;
|
||||
+ fb_div_max = pll->max_feedback_div;
|
||||
|
||||
if (pll->flags & RADEON_PLL_USE_FRAC_FB_DIV) {
|
||||
- avivo_get_fb_div(pll, target_clock, post_div, ref_div, &fb_div, &frac_fb_div);
|
||||
- frac_fb_div = (100 * frac_fb_div) / pll->reference_freq;
|
||||
- if (frac_fb_div >= 5) {
|
||||
- frac_fb_div -= 5;
|
||||
- frac_fb_div = frac_fb_div / 10;
|
||||
- frac_fb_div++;
|
||||
+ fb_div_min *= 10;
|
||||
+ fb_div_max *= 10;
|
||||
+ }
|
||||
+
|
||||
+ /* determine allowed ref divider range */
|
||||
+ if (pll->flags & RADEON_PLL_USE_REF_DIV)
|
||||
+ ref_div_min = pll->reference_div;
|
||||
+ else
|
||||
+ ref_div_min = pll->min_ref_div;
|
||||
+ ref_div_max = pll->max_ref_div;
|
||||
+
|
||||
+ /* determine allowed post divider range */
|
||||
+ if (pll->flags & RADEON_PLL_USE_POST_DIV) {
|
||||
+ post_div_min = pll->post_div;
|
||||
+ post_div_max = pll->post_div;
|
||||
+ } else {
|
||||
+ unsigned target_clock = freq / 10;
|
||||
+ unsigned vco_min, vco_max;
|
||||
+
|
||||
+ if (pll->flags & RADEON_PLL_IS_LCD) {
|
||||
+ vco_min = pll->lcd_pll_out_min;
|
||||
+ vco_max = pll->lcd_pll_out_max;
|
||||
+ } else {
|
||||
+ vco_min = pll->pll_out_min;
|
||||
+ vco_max = pll->pll_out_max;
|
||||
}
|
||||
- if (frac_fb_div >= 10) {
|
||||
- fb_div++;
|
||||
- frac_fb_div = 0;
|
||||
+
|
||||
+ post_div_min = vco_min / target_clock;
|
||||
+ if ((target_clock * post_div_min) < vco_min)
|
||||
+ ++post_div_min;
|
||||
+ if (post_div_min < pll->min_post_div)
|
||||
+ post_div_min = pll->min_post_div;
|
||||
+
|
||||
+ post_div_max = vco_max / target_clock;
|
||||
+ if ((target_clock * post_div_max) > vco_max)
|
||||
+ --post_div_max;
|
||||
+ if (post_div_max > pll->max_post_div)
|
||||
+ post_div_max = pll->max_post_div;
|
||||
+ }
|
||||
+
|
||||
+ /* represent the searched ratio as fractional number */
|
||||
+ nom = pll->flags & RADEON_PLL_USE_FRAC_FB_DIV ? freq : freq / 10;
|
||||
+ den = pll->reference_freq;
|
||||
+
|
||||
+ /* reduce the numbers to a simpler ratio */
|
||||
+ avivo_reduce_ratio(&nom, &den, fb_div_min, post_div_min);
|
||||
+
|
||||
+ /* now search for a post divider */
|
||||
+ if (pll->flags & RADEON_PLL_PREFER_MINM_OVER_MAXP)
|
||||
+ post_div_best = post_div_min;
|
||||
+ else
|
||||
+ post_div_best = post_div_max;
|
||||
+ diff_best = ~0;
|
||||
+
|
||||
+ for (post_div = post_div_min; post_div <= post_div_max; ++post_div) {
|
||||
+ unsigned diff = abs(den - den / post_div * post_div);
|
||||
+ if (diff < diff_best || (diff == diff_best &&
|
||||
+ !(pll->flags & RADEON_PLL_PREFER_MINM_OVER_MAXP))) {
|
||||
+
|
||||
+ post_div_best = post_div;
|
||||
+ diff_best = diff;
|
||||
}
|
||||
+ }
|
||||
+ post_div = post_div_best;
|
||||
+
|
||||
+ /* get matching reference and feedback divider */
|
||||
+ ref_div = max(den / post_div, 1u);
|
||||
+ fb_div = nom;
|
||||
+
|
||||
+ /* we're almost done, but reference and feedback
|
||||
+ divider might be to large now */
|
||||
+
|
||||
+ tmp = ref_div;
|
||||
+
|
||||
+ if (fb_div > fb_div_max) {
|
||||
+ ref_div = ref_div * fb_div_max / fb_div;
|
||||
+ fb_div = fb_div_max;
|
||||
+ }
|
||||
+
|
||||
+ if (ref_div > ref_div_max) {
|
||||
+ ref_div = ref_div_max;
|
||||
+ fb_div = nom * ref_div_max / tmp;
|
||||
+ }
|
||||
+
|
||||
+ /* reduce the numbers to a simpler ratio once more */
|
||||
+ /* this also makes sure that the reference divider is large enough */
|
||||
+ avivo_reduce_ratio(&fb_div, &ref_div, fb_div_min, ref_div_min);
|
||||
+
|
||||
+ /* and finally save the result */
|
||||
+ if (pll->flags & RADEON_PLL_USE_FRAC_FB_DIV) {
|
||||
+ *fb_div_p = fb_div / 10;
|
||||
+ *frac_fb_div_p = fb_div % 10;
|
||||
} else {
|
||||
- while (ref_div <= pll->max_ref_div) {
|
||||
- avivo_get_fb_div(pll, target_clock, post_div, ref_div,
|
||||
- &fb_div, &frac_fb_div);
|
||||
- if (frac_fb_div >= (pll->reference_freq / 2))
|
||||
- fb_div++;
|
||||
- frac_fb_div = 0;
|
||||
- tmp = (pll->reference_freq * fb_div) / (post_div * ref_div);
|
||||
- tmp = (tmp * 10000) / target_clock;
|
||||
-
|
||||
- if (tmp > (10000 + MAX_TOLERANCE))
|
||||
- ref_div++;
|
||||
- else if (tmp >= (10000 - MAX_TOLERANCE))
|
||||
- break;
|
||||
- else
|
||||
- ref_div++;
|
||||
- }
|
||||
+ *fb_div_p = fb_div;
|
||||
+ *frac_fb_div_p = 0;
|
||||
}
|
||||
|
||||
- *dot_clock_p = ((pll->reference_freq * fb_div * 10) + (pll->reference_freq * frac_fb_div)) /
|
||||
- (ref_div * post_div * 10);
|
||||
- *fb_div_p = fb_div;
|
||||
- *frac_fb_div_p = frac_fb_div;
|
||||
+ *dot_clock_p = ((pll->reference_freq * *fb_div_p * 10) +
|
||||
+ (pll->reference_freq * *frac_fb_div_p)) /
|
||||
+ (ref_div * post_div * 10);
|
||||
*ref_div_p = ref_div;
|
||||
*post_div_p = post_div;
|
||||
- DRM_DEBUG_KMS("%d, pll dividers - fb: %d.%d ref: %d, post %d\n",
|
||||
- *dot_clock_p, fb_div, frac_fb_div, ref_div, post_div);
|
||||
+
|
||||
+ DRM_DEBUG_KMS("%d - %d, pll dividers - fb: %d.%d ref: %d, post %d\n",
|
||||
+ freq, *dot_clock_p, *fb_div_p, *frac_fb_div_p,
|
||||
+ ref_div, post_div);
|
||||
}
|
||||
|
||||
/* pre-avivo */
|
||||
--
|
||||
1.9.1
|
||||
|
||||
From 514738e09ec3ec0d1fb15cc3eabe4698b0d51358 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>
|
||||
Date: Fri, 4 Apr 2014 13:45:42 +0200
|
||||
Subject: [PATCH 2/6] drm/radeon: apply more strict limits for PLL params v2
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Letting post and refernce divider get to big is bad for signal stability.
|
||||
|
||||
v2: increase the limit to 210
|
||||
|
||||
Signed-off-by: Christian König <christian.koenig@amd.com>
|
||||
---
|
||||
drivers/gpu/drm/radeon/radeon_display.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/drivers/gpu/drm/radeon/radeon_display.c b/drivers/gpu/drm/radeon/radeon_display.c
|
||||
index 4e83ffd..35129ad 100644
|
||||
--- a/drivers/gpu/drm/radeon/radeon_display.c
|
||||
+++ b/drivers/gpu/drm/radeon/radeon_display.c
|
||||
@@ -936,6 +936,9 @@ void radeon_compute_pll_avivo(struct radeon_pll *pll,
|
||||
}
|
||||
post_div = post_div_best;
|
||||
|
||||
+ /* limit reference * post divider to a maximum */
|
||||
+ ref_div_max = min(210 / post_div, ref_div_max);
|
||||
+
|
||||
/* get matching reference and feedback divider */
|
||||
ref_div = max(den / post_div, 1u);
|
||||
fb_div = nom;
|
||||
--
|
||||
1.9.1
|
||||
|
||||
From 97856db97ccbf06adf0cd6ede973b922e59d3eaa Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>
|
||||
Date: Wed, 16 Apr 2014 11:54:21 +0200
|
||||
Subject: [PATCH 3/6] drm/radeon: improve PLL params if we don't match exactly
|
||||
v2
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Otherwise we might be quite off on older chipsets.
|
||||
|
||||
v2: keep ref_div minimum
|
||||
|
||||
Signed-off-by: Christian König <christian.koenig@amd.com>
|
||||
---
|
||||
drivers/gpu/drm/radeon/radeon_display.c | 13 +++++++------
|
||||
1 file changed, 7 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/radeon/radeon_display.c b/drivers/gpu/drm/radeon/radeon_display.c
|
||||
index 35129ad..00f63d28 100644
|
||||
--- a/drivers/gpu/drm/radeon/radeon_display.c
|
||||
+++ b/drivers/gpu/drm/radeon/radeon_display.c
|
||||
@@ -864,7 +864,7 @@ void radeon_compute_pll_avivo(struct radeon_pll *pll,
|
||||
unsigned post_div_min, post_div_max, post_div;
|
||||
unsigned ref_div_min, ref_div_max, ref_div;
|
||||
unsigned post_div_best, diff_best;
|
||||
- unsigned nom, den, tmp;
|
||||
+ unsigned nom, den;
|
||||
|
||||
/* determine allowed feedback divider range */
|
||||
fb_div_min = pll->min_feedback_div;
|
||||
@@ -940,22 +940,23 @@ void radeon_compute_pll_avivo(struct radeon_pll *pll,
|
||||
ref_div_max = min(210 / post_div, ref_div_max);
|
||||
|
||||
/* get matching reference and feedback divider */
|
||||
- ref_div = max(den / post_div, 1u);
|
||||
- fb_div = nom;
|
||||
+ ref_div = max(DIV_ROUND_CLOSEST(den, post_div), 1u);
|
||||
+ fb_div = DIV_ROUND_CLOSEST(nom * ref_div * post_div, den);
|
||||
|
||||
/* we're almost done, but reference and feedback
|
||||
divider might be to large now */
|
||||
|
||||
- tmp = ref_div;
|
||||
+ nom = fb_div;
|
||||
+ den = ref_div;
|
||||
|
||||
if (fb_div > fb_div_max) {
|
||||
- ref_div = ref_div * fb_div_max / fb_div;
|
||||
+ ref_div = DIV_ROUND_CLOSEST(den * fb_div_max, nom);
|
||||
fb_div = fb_div_max;
|
||||
}
|
||||
|
||||
if (ref_div > ref_div_max) {
|
||||
ref_div = ref_div_max;
|
||||
- fb_div = nom * ref_div_max / tmp;
|
||||
+ fb_div = DIV_ROUND_CLOSEST(nom * ref_div_max, den);
|
||||
}
|
||||
|
||||
/* reduce the numbers to a simpler ratio once more */
|
||||
--
|
||||
1.9.1
|
||||
|
||||
From 537669e14063df59dd0b1004382842e278e19aa2 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>
|
||||
Date: Sat, 19 Apr 2014 18:57:14 +0200
|
||||
Subject: [PATCH 4/6] drm/radeon: use fixed PPL ref divider if needed
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Signed-off-by: Christian König <christian.koenig@amd.com>
|
||||
---
|
||||
drivers/gpu/drm/radeon/radeon_display.c | 7 ++++++-
|
||||
1 file changed, 6 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/radeon/radeon_display.c b/drivers/gpu/drm/radeon/radeon_display.c
|
||||
index 00f63d28..0c26b3c 100644
|
||||
--- a/drivers/gpu/drm/radeon/radeon_display.c
|
||||
+++ b/drivers/gpu/drm/radeon/radeon_display.c
|
||||
@@ -880,7 +880,12 @@ void radeon_compute_pll_avivo(struct radeon_pll *pll,
|
||||
ref_div_min = pll->reference_div;
|
||||
else
|
||||
ref_div_min = pll->min_ref_div;
|
||||
- ref_div_max = pll->max_ref_div;
|
||||
+
|
||||
+ if (pll->flags & RADEON_PLL_USE_FRAC_FB_DIV &&
|
||||
+ pll->flags & RADEON_PLL_USE_REF_DIV)
|
||||
+ ref_div_max = pll->reference_div;
|
||||
+ else
|
||||
+ ref_div_max = pll->max_ref_div;
|
||||
|
||||
/* determine allowed post divider range */
|
||||
if (pll->flags & RADEON_PLL_USE_POST_DIV) {
|
||||
--
|
||||
1.9.1
|
||||
|
||||
From 09535920958a819e90f0178e9d6831dba0577aa0 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>
|
||||
Date: Sun, 20 Apr 2014 13:24:32 +0200
|
||||
Subject: [PATCH 5/6] drm/radeon: improve PLL limit handling in post div
|
||||
calculation
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
This improves the PLL parameters when we work at
|
||||
the limits of the allowed ranges.
|
||||
|
||||
Signed-off-by: Christian König <christian.koenig@amd.com>
|
||||
---
|
||||
drivers/gpu/drm/radeon/radeon_display.c | 77 ++++++++++++++++++++++-----------
|
||||
1 file changed, 51 insertions(+), 26 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/radeon/radeon_display.c b/drivers/gpu/drm/radeon/radeon_display.c
|
||||
index 0c26b3c..12a01e9 100644
|
||||
--- a/drivers/gpu/drm/radeon/radeon_display.c
|
||||
+++ b/drivers/gpu/drm/radeon/radeon_display.c
|
||||
@@ -840,6 +840,38 @@ static void avivo_reduce_ratio(unsigned *nom, unsigned *den,
|
||||
}
|
||||
|
||||
/**
|
||||
+ * avivo_get_fb_ref_div - feedback and ref divider calculation
|
||||
+ *
|
||||
+ * @nom: nominator
|
||||
+ * @den: denominator
|
||||
+ * @post_div: post divider
|
||||
+ * @fb_div_max: feedback divider maximum
|
||||
+ * @ref_div_max: reference divider maximum
|
||||
+ * @fb_div: resulting feedback divider
|
||||
+ * @ref_div: resulting reference divider
|
||||
+ *
|
||||
+ * Calculate feedback and reference divider for a given post divider. Makes
|
||||
+ * sure we stay within the limits.
|
||||
+ */
|
||||
+static void avivo_get_fb_ref_div(unsigned nom, unsigned den, unsigned post_div,
|
||||
+ unsigned fb_div_max, unsigned ref_div_max,
|
||||
+ unsigned *fb_div, unsigned *ref_div)
|
||||
+{
|
||||
+ /* limit reference * post divider to a maximum */
|
||||
+ ref_div_max = min(210 / post_div, ref_div_max);
|
||||
+
|
||||
+ /* get matching reference and feedback divider */
|
||||
+ *ref_div = min(max(DIV_ROUND_CLOSEST(den, post_div), 1u), ref_div_max);
|
||||
+ *fb_div = DIV_ROUND_CLOSEST(nom * *ref_div * post_div, den);
|
||||
+
|
||||
+ /* limit fb divider to its maximum */
|
||||
+ if (*fb_div > fb_div_max) {
|
||||
+ *ref_div = DIV_ROUND_CLOSEST(*ref_div * fb_div_max, *fb_div);
|
||||
+ *fb_div = fb_div_max;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+/**
|
||||
* radeon_compute_pll_avivo - compute PLL paramaters
|
||||
*
|
||||
* @pll: information about the PLL
|
||||
@@ -860,6 +892,9 @@ void radeon_compute_pll_avivo(struct radeon_pll *pll,
|
||||
u32 *ref_div_p,
|
||||
u32 *post_div_p)
|
||||
{
|
||||
+ unsigned target_clock = pll->flags & RADEON_PLL_USE_FRAC_FB_DIV ?
|
||||
+ freq : freq / 10;
|
||||
+
|
||||
unsigned fb_div_min, fb_div_max, fb_div;
|
||||
unsigned post_div_min, post_div_max, post_div;
|
||||
unsigned ref_div_min, ref_div_max, ref_div;
|
||||
@@ -892,7 +927,6 @@ void radeon_compute_pll_avivo(struct radeon_pll *pll,
|
||||
post_div_min = pll->post_div;
|
||||
post_div_max = pll->post_div;
|
||||
} else {
|
||||
- unsigned target_clock = freq / 10;
|
||||
unsigned vco_min, vco_max;
|
||||
|
||||
if (pll->flags & RADEON_PLL_IS_LCD) {
|
||||
@@ -903,6 +937,11 @@ void radeon_compute_pll_avivo(struct radeon_pll *pll,
|
||||
vco_max = pll->pll_out_max;
|
||||
}
|
||||
|
||||
+ if (pll->flags & RADEON_PLL_USE_FRAC_FB_DIV) {
|
||||
+ vco_min *= 10;
|
||||
+ vco_max *= 10;
|
||||
+ }
|
||||
+
|
||||
post_div_min = vco_min / target_clock;
|
||||
if ((target_clock * post_div_min) < vco_min)
|
||||
++post_div_min;
|
||||
@@ -917,7 +956,7 @@ void radeon_compute_pll_avivo(struct radeon_pll *pll,
|
||||
}
|
||||
|
||||
/* represent the searched ratio as fractional number */
|
||||
- nom = pll->flags & RADEON_PLL_USE_FRAC_FB_DIV ? freq : freq / 10;
|
||||
+ nom = target_clock;
|
||||
den = pll->reference_freq;
|
||||
|
||||
/* reduce the numbers to a simpler ratio */
|
||||
@@ -931,7 +970,12 @@ void radeon_compute_pll_avivo(struct radeon_pll *pll,
|
||||
diff_best = ~0;
|
||||
|
||||
for (post_div = post_div_min; post_div <= post_div_max; ++post_div) {
|
||||
- unsigned diff = abs(den - den / post_div * post_div);
|
||||
+ unsigned diff;
|
||||
+ avivo_get_fb_ref_div(nom, den, post_div, fb_div_max,
|
||||
+ ref_div_max, &fb_div, &ref_div);
|
||||
+ diff = abs(target_clock - (pll->reference_freq * fb_div) /
|
||||
+ (ref_div * post_div));
|
||||
+
|
||||
if (diff < diff_best || (diff == diff_best &&
|
||||
!(pll->flags & RADEON_PLL_PREFER_MINM_OVER_MAXP))) {
|
||||
|
||||
@@ -941,28 +985,9 @@ void radeon_compute_pll_avivo(struct radeon_pll *pll,
|
||||
}
|
||||
post_div = post_div_best;
|
||||
|
||||
- /* limit reference * post divider to a maximum */
|
||||
- ref_div_max = min(210 / post_div, ref_div_max);
|
||||
-
|
||||
- /* get matching reference and feedback divider */
|
||||
- ref_div = max(DIV_ROUND_CLOSEST(den, post_div), 1u);
|
||||
- fb_div = DIV_ROUND_CLOSEST(nom * ref_div * post_div, den);
|
||||
-
|
||||
- /* we're almost done, but reference and feedback
|
||||
- divider might be to large now */
|
||||
-
|
||||
- nom = fb_div;
|
||||
- den = ref_div;
|
||||
-
|
||||
- if (fb_div > fb_div_max) {
|
||||
- ref_div = DIV_ROUND_CLOSEST(den * fb_div_max, nom);
|
||||
- fb_div = fb_div_max;
|
||||
- }
|
||||
-
|
||||
- if (ref_div > ref_div_max) {
|
||||
- ref_div = ref_div_max;
|
||||
- fb_div = DIV_ROUND_CLOSEST(nom * ref_div_max, den);
|
||||
- }
|
||||
+ /* get the feedback and reference divider for the optimal value */
|
||||
+ avivo_get_fb_ref_div(nom, den, post_div, fb_div_max, ref_div_max,
|
||||
+ &fb_div, &ref_div);
|
||||
|
||||
/* reduce the numbers to a simpler ratio once more */
|
||||
/* this also makes sure that the reference divider is large enough */
|
||||
@@ -984,7 +1009,7 @@ void radeon_compute_pll_avivo(struct radeon_pll *pll,
|
||||
*post_div_p = post_div;
|
||||
|
||||
DRM_DEBUG_KMS("%d - %d, pll dividers - fb: %d.%d ref: %d, post %d\n",
|
||||
- freq, *dot_clock_p, *fb_div_p, *frac_fb_div_p,
|
||||
+ freq, *dot_clock_p * 10, *fb_div_p, *frac_fb_div_p,
|
||||
ref_div, post_div);
|
||||
}
|
||||
|
||||
--
|
||||
1.9.1
|
||||
|
||||
43
packages/linux/patches/3.14.7/linux-999.04-revert-xhci-Set-scatter-gather-limit.patch
vendored
Normal file
43
packages/linux/patches/3.14.7/linux-999.04-revert-xhci-Set-scatter-gather-limit.patch
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
From b6d7efd33fd2843fbafe2b2d4b8119b217779a6a Mon Sep 17 00:00:00 2001
|
||||
From: fritsch <Peter.Fruehberger@gmail.com>
|
||||
Date: Sat, 3 May 2014 00:08:24 +0200
|
||||
Subject: [PATCH] Revert "Revert "xhci: Set scatter-gather limit to avoid
|
||||
failed block writes.""
|
||||
|
||||
This reverts commit 47f467ac740ebf0475a5176ddb1741acba6aad4e.
|
||||
---
|
||||
drivers/usb/host/xhci.c | 4 ++--
|
||||
drivers/usb/host/xhci.h | 2 +-
|
||||
2 files changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
|
||||
index 5a646a6..cfa5995 100644
|
||||
--- a/drivers/usb/host/xhci.c
|
||||
+++ b/drivers/usb/host/xhci.c
|
||||
@@ -4716,8 +4716,8 @@ int xhci_gen_setup(struct usb_hcd *hcd, xhci_get_quirks_t get_quirks)
|
||||
struct device *dev = hcd->self.controller;
|
||||
int retval;
|
||||
|
||||
- /* Accept arbitrarily long scatter-gather lists */
|
||||
- hcd->self.sg_tablesize = ~0;
|
||||
+ /* Limit the block layer scatter-gather lists to half a segment. */
|
||||
+ hcd->self.sg_tablesize = TRBS_PER_SEGMENT / 2;
|
||||
|
||||
/* support to build packet from discontinuous buffers */
|
||||
hcd->self.no_sg_constraint = 1;
|
||||
diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h
|
||||
index 03c74b7..c283cf1 100644
|
||||
--- a/drivers/usb/host/xhci.h
|
||||
+++ b/drivers/usb/host/xhci.h
|
||||
@@ -1260,7 +1260,7 @@ union xhci_trb {
|
||||
* since the command ring is 64-byte aligned.
|
||||
* It must also be greater than 16.
|
||||
*/
|
||||
-#define TRBS_PER_SEGMENT 64
|
||||
+#define TRBS_PER_SEGMENT 256
|
||||
/* Allow two commands + a link TRB, along with any reserved command TRBs */
|
||||
#define MAX_RSVD_CMD_TRBS (TRBS_PER_SEGMENT - 3)
|
||||
#define TRB_SEGMENT_SIZE (TRBS_PER_SEGMENT*16)
|
||||
--
|
||||
1.9.1
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
diff --git a/init/main.c b/init/main.c
|
||||
index 9484f4b..db55edd 100644
|
||||
--- a/init/main.c
|
||||
+++ b/init/main.c
|
||||
@@ -880,8 +880,14 @@ static noinline void __init kernel_init_freeable(void)
|
||||
do_basic_setup();
|
||||
|
||||
/* Open the /dev/console on the rootfs, this should never fail */
|
||||
- if (sys_open((const char __user *) "/dev/console", O_RDWR, 0) < 0)
|
||||
- pr_err("Warning: unable to open an initial console.\n");
|
||||
+ char *console = "/dev_console";
|
||||
+
|
||||
+ if (sys_open((const char __user *) "/dev/console", O_RDWR, 0) < 0) {
|
||||
+ sys_mknod(console, S_IFCHR|0600, (TTYAUX_MAJOR<<8)|1);
|
||||
+ if (sys_open(console, O_RDWR, 0) < 0)
|
||||
+ printk(KERN_WARNING "Warning: unable to open an initial console.\n");
|
||||
+ sys_unlink(console);
|
||||
+ }
|
||||
|
||||
(void) sys_dup(0);
|
||||
(void) sys_dup(0);
|
||||
@@ -1,12 +0,0 @@
|
||||
diff -Naur linux-3.0/drivers/media/rc/nuvoton-cir.c linux-3.0.patch/drivers/media/rc/nuvoton-cir.c
|
||||
--- linux-3.0/drivers/media/rc/nuvoton-cir.c 2011-07-22 04:17:23.000000000 +0200
|
||||
+++ linux-3.0.patch/drivers/media/rc/nuvoton-cir.c 2011-07-22 21:30:48.374591146 +0200
|
||||
@@ -1110,7 +1110,7 @@
|
||||
rdev->dev.parent = &pdev->dev;
|
||||
rdev->driver_name = NVT_DRIVER_NAME;
|
||||
rdev->map_name = RC_MAP_RC6_MCE;
|
||||
- rdev->timeout = MS_TO_NS(100);
|
||||
+ rdev->timeout = US_TO_NS(1000);
|
||||
/* rx resolution is hardwired to 50us atm, 1, 25, 100 also possible */
|
||||
rdev->rx_resolution = US_TO_NS(CIR_SAMPLE_PERIOD);
|
||||
#if 0
|
||||
@@ -1,12 +0,0 @@
|
||||
diff -Naur linux-3.13-rc1/drivers/media/usb/dvb-usb-v2/rtl28xxu.c linux-3.13-rc1.patch/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
|
||||
--- linux-3.13-rc1/drivers/media/usb/dvb-usb-v2/rtl28xxu.c 2013-11-22 20:30:55.000000000 +0100
|
||||
+++ linux-3.13-rc1.patch/drivers/media/usb/dvb-usb-v2/rtl28xxu.c 2013-11-24 19:44:45.617201463 +0100
|
||||
@@ -1427,6 +1427,8 @@
|
||||
&rtl2832u_props, "Leadtek WinFast DTV Dongle mini", NULL) },
|
||||
{ DVB_USB_DEVICE(USB_VID_GTEK, USB_PID_CPYTO_REDI_PC50A,
|
||||
&rtl2832u_props, "Crypto ReDi PC 50 A", NULL) },
|
||||
+ { DVB_USB_DEVICE(USB_VID_GTEK, 0xa803,
|
||||
+ &rtl2832u_props, "Realtek RTL2832U reference design", NULL) },
|
||||
|
||||
{ DVB_USB_DEVICE(USB_VID_HANFTEK, 0x0131,
|
||||
&rtl2832u_props, "Astrometa DVB-T2", NULL) },
|
||||
@@ -1,12 +0,0 @@
|
||||
diff -Naur linux-3.7.2/drivers/media/dvb-frontends/stb0899_drv.c linux-3.7.2.patch/drivers/media/dvb-frontends/stb0899_drv.c
|
||||
--- linux-3.7.2/drivers/media/dvb-frontends/stb0899_drv.c 2013-01-11 18:19:28.000000000 +0100
|
||||
+++ linux-3.7.2.patch/drivers/media/dvb-frontends/stb0899_drv.c 2013-01-16 10:25:43.479645317 +0100
|
||||
@@ -1581,7 +1581,7 @@
|
||||
.frequency_max = 2150000,
|
||||
.frequency_stepsize = 0,
|
||||
.frequency_tolerance = 0,
|
||||
- .symbol_rate_min = 5000000,
|
||||
+ .symbol_rate_min = 1000000,
|
||||
.symbol_rate_max = 45000000,
|
||||
|
||||
.caps = FE_CAN_INVERSION_AUTO |
|
||||
@@ -1,138 +0,0 @@
|
||||
diff -Naur linux-3.7.2/drivers/media/dvb-frontends/stb0899_algo.c linux-3.7.2.patch/drivers/media/dvb-frontends/stb0899_algo.c
|
||||
--- linux-3.7.2/drivers/media/dvb-frontends/stb0899_algo.c 2013-01-11 18:19:28.000000000 +0100
|
||||
+++ linux-3.7.2.patch/drivers/media/dvb-frontends/stb0899_algo.c 2013-01-16 10:28:33.633409961 +0100
|
||||
@@ -206,7 +206,6 @@
|
||||
static enum stb0899_status stb0899_search_tmg(struct stb0899_state *state)
|
||||
{
|
||||
struct stb0899_internal *internal = &state->internal;
|
||||
- struct stb0899_params *params = &state->params;
|
||||
|
||||
short int derot_step, derot_freq = 0, derot_limit, next_loop = 3;
|
||||
int index = 0;
|
||||
@@ -216,10 +215,9 @@
|
||||
|
||||
/* timing loop computation & symbol rate optimisation */
|
||||
derot_limit = (internal->sub_range / 2L) / internal->mclk;
|
||||
- derot_step = (params->srate / 2L) / internal->mclk;
|
||||
+ derot_step = internal->derot_step * 4; /* dertot_step = decreasing delta */
|
||||
|
||||
while ((stb0899_check_tmg(state) != TIMINGOK) && next_loop) {
|
||||
- index++;
|
||||
derot_freq += index * internal->direction * derot_step; /* next derot zig zag position */
|
||||
|
||||
if (abs(derot_freq) > derot_limit)
|
||||
@@ -230,6 +228,7 @@
|
||||
STB0899_SETFIELD_VAL(CFRL, cfr[1], LSB(state->config->inversion * derot_freq));
|
||||
stb0899_write_regs(state, STB0899_CFRM, cfr, 2); /* derotator frequency */
|
||||
}
|
||||
+ index++;
|
||||
internal->direction = -internal->direction; /* Change zigzag direction */
|
||||
}
|
||||
|
||||
@@ -278,14 +277,18 @@
|
||||
{
|
||||
struct stb0899_internal *internal = &state->internal;
|
||||
|
||||
- short int derot_freq = 0, last_derot_freq = 0, derot_limit, next_loop = 3;
|
||||
+ short int derot_freq = 0, last_derot_freq = 0, derot_limit, derot_step, next_loop = 3;
|
||||
int index = 0;
|
||||
+ int base_freq;
|
||||
u8 cfr[2];
|
||||
u8 reg;
|
||||
|
||||
internal->status = NOCARRIER;
|
||||
derot_limit = (internal->sub_range / 2L) / internal->mclk;
|
||||
derot_freq = internal->derot_freq;
|
||||
+ derot_step = internal->derot_step * 2;
|
||||
+ last_derot_freq = internal->derot_freq;
|
||||
+ base_freq = internal->derot_freq;
|
||||
|
||||
reg = stb0899_read_reg(state, STB0899_CFD);
|
||||
STB0899_SETFIELD_VAL(CFD_ON, reg, 1);
|
||||
@@ -294,11 +297,10 @@
|
||||
do {
|
||||
dprintk(state->verbose, FE_DEBUG, 1, "Derot Freq=%d, mclk=%d", derot_freq, internal->mclk);
|
||||
if (stb0899_check_carrier(state) == NOCARRIER) {
|
||||
- index++;
|
||||
last_derot_freq = derot_freq;
|
||||
- derot_freq += index * internal->direction * internal->derot_step; /* next zig zag derotator position */
|
||||
+ derot_freq += index * internal->direction * derot_step; /* next zig zag derotator position */
|
||||
|
||||
- if(abs(derot_freq) > derot_limit)
|
||||
+ if (derot_freq > base_freq + derot_limit || derot_freq < base_freq - derot_limit)
|
||||
next_loop--;
|
||||
|
||||
if (next_loop) {
|
||||
@@ -310,9 +312,10 @@
|
||||
STB0899_SETFIELD_VAL(CFRL, cfr[1], LSB(state->config->inversion * derot_freq));
|
||||
stb0899_write_regs(state, STB0899_CFRM, cfr, 2); /* derotator frequency */
|
||||
}
|
||||
+ index++;
|
||||
+ internal->direction = -internal->direction; /* Change zigzag direction */
|
||||
}
|
||||
|
||||
- internal->direction = -internal->direction; /* Change zigzag direction */
|
||||
} while ((internal->status != CARRIEROK) && next_loop);
|
||||
|
||||
if (internal->status == CARRIEROK) {
|
||||
@@ -338,6 +341,7 @@
|
||||
int lock = 0, index = 0, dataTime = 500, loop;
|
||||
u8 reg;
|
||||
|
||||
+ msleep(1);
|
||||
internal->status = NODATA;
|
||||
|
||||
/* RESET FEC */
|
||||
@@ -348,6 +352,7 @@
|
||||
reg = stb0899_read_reg(state, STB0899_TSTRES);
|
||||
STB0899_SETFIELD_VAL(FRESACS, reg, 0);
|
||||
stb0899_write_reg(state, STB0899_TSTRES, reg);
|
||||
+ msleep(1);
|
||||
|
||||
if (params->srate <= 2000000)
|
||||
dataTime = 2000;
|
||||
@@ -363,6 +368,7 @@
|
||||
|
||||
stb0899_write_reg(state, STB0899_DSTATUS2, 0x00); /* force search loop */
|
||||
while (1) {
|
||||
+ msleep(1); // Alex: added 1 mSec
|
||||
/* WARNING! VIT LOCKED has to be tested before VIT_END_LOOOP */
|
||||
reg = stb0899_read_reg(state, STB0899_VSTATUS);
|
||||
lock = STB0899_GETFIELD(VSTATUS_LOCKEDVIT, reg);
|
||||
@@ -390,20 +396,21 @@
|
||||
short int derot_freq, derot_step, derot_limit, next_loop = 3;
|
||||
u8 cfr[2];
|
||||
u8 reg;
|
||||
- int index = 1;
|
||||
+ int index = 0;
|
||||
+ int base_freq;
|
||||
|
||||
struct stb0899_internal *internal = &state->internal;
|
||||
- struct stb0899_params *params = &state->params;
|
||||
|
||||
- derot_step = (params->srate / 4L) / internal->mclk;
|
||||
+ derot_step = internal->derot_step;
|
||||
derot_limit = (internal->sub_range / 2L) / internal->mclk;
|
||||
derot_freq = internal->derot_freq;
|
||||
+ base_freq = internal->derot_freq;
|
||||
|
||||
do {
|
||||
if ((internal->status != CARRIEROK) || (stb0899_check_data(state) != DATAOK)) {
|
||||
|
||||
derot_freq += index * internal->direction * derot_step; /* next zig zag derotator position */
|
||||
- if (abs(derot_freq) > derot_limit)
|
||||
+ if (derot_freq > base_freq + derot_limit || derot_freq < base_freq - derot_limit)
|
||||
next_loop--;
|
||||
|
||||
if (next_loop) {
|
||||
@@ -417,9 +424,9 @@
|
||||
stb0899_write_regs(state, STB0899_CFRM, cfr, 2); /* derotator frequency */
|
||||
|
||||
stb0899_check_carrier(state);
|
||||
- index++;
|
||||
}
|
||||
}
|
||||
+ index++;
|
||||
internal->direction = -internal->direction; /* change zig zag direction */
|
||||
} while ((internal->status != DATAOK) && next_loop);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user