mirror of
https://github.com/LibreELEC/LibreELEC.tv
synced 2025-09-24 19:46:01 +07:00
Compare commits
122 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f2efba3fde | ||
|
|
63b6450499 | ||
|
|
26bd487945 | ||
|
|
4e4b41466a | ||
|
|
1e9da92e52 | ||
|
|
2aa4b9e7ca | ||
|
|
dee2f48e4e | ||
|
|
9f7ed691a2 | ||
|
|
8c44c2e60c | ||
|
|
7f5e1fe3e3 | ||
|
|
ccb9f18dc7 | ||
|
|
5951c7a9c9 | ||
|
|
780ae9c4d0 | ||
|
|
1db2a8a9b5 | ||
|
|
18fbddb442 | ||
|
|
e7508278e1 | ||
|
|
0c9124f171 | ||
|
|
c1be286cec | ||
|
|
94b11f9dd5 | ||
|
|
0eb3f773e2 | ||
|
|
3cd503a505 | ||
|
|
abe0b1bdca | ||
|
|
1cf465dced | ||
|
|
5a394f3f53 | ||
|
|
bc9c5f891c | ||
|
|
55922b59b7 | ||
|
|
665375f922 | ||
|
|
37018a33ef | ||
|
|
19bb76a6f2 | ||
|
|
59a91a67fb | ||
|
|
e5ddd19161 | ||
|
|
2798741270 | ||
|
|
5caa286b0e | ||
|
|
0bfd5e466d | ||
|
|
c6caa03015 | ||
|
|
c18ae0f26b | ||
|
|
838229616b | ||
|
|
ce71d26923 | ||
|
|
dec3f64eb1 | ||
|
|
51372a751f | ||
|
|
fd52ff9d08 | ||
|
|
ff687b3a06 | ||
|
|
4bbf6d1014 | ||
|
|
0b046eab86 | ||
|
|
f90472fb77 | ||
|
|
5377342718 | ||
|
|
a32fad3798 | ||
|
|
dccedfda07 | ||
|
|
74239e3027 | ||
|
|
5fb72aad8e | ||
|
|
42c4095dd8 | ||
|
|
5703f68b55 | ||
|
|
1c35a56e09 | ||
|
|
3abecdba4e | ||
|
|
85d63c456c | ||
|
|
0c2f2be1be | ||
|
|
978f075594 | ||
|
|
4779966a0b | ||
|
|
380874e25d | ||
|
|
6ba6413f36 | ||
|
|
a6d3963612 | ||
|
|
a06e99326f | ||
|
|
ab64766ae3 | ||
|
|
b50d88c0e4 | ||
|
|
d8f7fa4436 | ||
|
|
8ddba4bb59 | ||
|
|
86c9c6a247 | ||
|
|
5b81e398ef | ||
|
|
21a07a9916 | ||
|
|
4255bdb097 | ||
|
|
f2b6c64d7b | ||
|
|
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 |
@@ -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
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# VERSION: set full version, use "devel" for development version
|
||||
OPENELEC_VERSION="4.0.3"
|
||||
OPENELEC_VERSION="4.0.7"
|
||||
|
||||
# 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
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="alsa-lib"
|
||||
PKG_VERSION="1.0.27.2"
|
||||
PKG_VERSION="1.0.28"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="alsa-utils"
|
||||
PKG_VERSION="1.0.27.2"
|
||||
PKG_VERSION="1.0.28"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
@@ -48,6 +48,10 @@ post_makeinstall_target() {
|
||||
rm -rf $INSTALL/usr/share/sounds
|
||||
rm -rf $INSTALL/usr/lib/systemd/system
|
||||
|
||||
# remove default udev rule to restore mixer configs, we install our own.
|
||||
# so we avoid resetting our soundconfig
|
||||
rm -rf $INSTALL/usr/lib/udev/rules.d/90-alsa-restore.rules
|
||||
|
||||
for i in aconnect alsaucm amidi aplaymidi arecord arecordmidi aseqdump aseqnet iecset; do
|
||||
rm -rf $INSTALL/usr/bin/$i
|
||||
done
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
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
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
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
|
||||
|
||||
@@ -1,232 +0,0 @@
|
||||
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
|
||||
|
||||
@@ -1,44 +0,0 @@
|
||||
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
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
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
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="lzo"
|
||||
PKG_VERSION="2.06"
|
||||
PKG_VERSION="2.08"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="sqlite"
|
||||
PKG_VERSION="autoconf-3080403"
|
||||
PKG_VERSION="autoconf-3080500"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="PublicDomain"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="cloog"
|
||||
PKG_VERSION="0.18.0"
|
||||
PKG_VERSION="0.18.2"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="LGPL"
|
||||
|
||||
26
packages/devel/cloog/patches/cloog-buildfix.patch
Normal file
26
packages/devel/cloog/patches/cloog-buildfix.patch
Normal file
@@ -0,0 +1,26 @@
|
||||
diff -Naur cloog-0.18.2/Makefile.am cloog-0.18.2.patch/Makefile.am
|
||||
--- cloog-0.18.2/Makefile.am 2013-12-18 13:27:49.000000000 +0100
|
||||
+++ cloog-0.18.2.patch/Makefile.am 2014-06-22 17:51:19.285392908 +0200
|
||||
@@ -147,9 +147,7 @@
|
||||
@test -z "$(pkgconfig_libdir)" || $(mkdir_p) "$(DESTDIR)$(pkgconfig_libdir)"
|
||||
$(INSTALL_DATA) $(pkgconfig_libfile) "$(DESTDIR)$(pkgconfig_libdir)/$(pkgconfig_libfile)"
|
||||
@test -z "$(DESTDIR)$(libdir)/isl" || $(mkdir_p) "$(DESTDIR)$(libdir)/isl"
|
||||
- $(INSTALL_DATA) "$(top_srcdir)/cmake/isl-config.cmake" "$(DESTDIR)$(libdir)/isl/"
|
||||
@test -z "$(DESTDIR)$(libdir)/$(PACKAGE_NAME)" || $(mkdir_p) "$(DESTDIR)$(libdir)/$(PACKAGE_NAME)"
|
||||
- $(INSTALL_DATA) "$(top_srcdir)/cmake/cloog-isl-config.cmake" "$(DESTDIR)$(libdir)/$(PACKAGE_NAME)/"
|
||||
|
||||
uninstall-local:
|
||||
rm -f "$(DESTDIR)$(pkgconfig_libdir)/$(pkgconfig_libfile)"
|
||||
diff -Naur cloog-0.18.2/Makefile.in cloog-0.18.2.patch/Makefile.in
|
||||
--- cloog-0.18.2/Makefile.in 2013-12-18 13:36:08.000000000 +0100
|
||||
+++ cloog-0.18.2.patch/Makefile.in 2014-06-22 17:51:27.580413087 +0200
|
||||
@@ -1342,9 +1342,7 @@
|
||||
@test -z "$(pkgconfig_libdir)" || $(mkdir_p) "$(DESTDIR)$(pkgconfig_libdir)"
|
||||
$(INSTALL_DATA) $(pkgconfig_libfile) "$(DESTDIR)$(pkgconfig_libdir)/$(pkgconfig_libfile)"
|
||||
@test -z "$(DESTDIR)$(libdir)/isl" || $(mkdir_p) "$(DESTDIR)$(libdir)/isl"
|
||||
- $(INSTALL_DATA) "$(top_srcdir)/cmake/isl-config.cmake" "$(DESTDIR)$(libdir)/isl/"
|
||||
@test -z "$(DESTDIR)$(libdir)/$(PACKAGE_NAME)" || $(mkdir_p) "$(DESTDIR)$(libdir)/$(PACKAGE_NAME)"
|
||||
- $(INSTALL_DATA) "$(top_srcdir)/cmake/cloog-isl-config.cmake" "$(DESTDIR)$(libdir)/$(PACKAGE_NAME)/"
|
||||
|
||||
uninstall-local:
|
||||
rm -f "$(DESTDIR)$(pkgconfig_libdir)/$(pkgconfig_libfile)"
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="dbus-glib"
|
||||
PKG_VERSION="0.100.2"
|
||||
PKG_VERSION="0.102"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
diff -Naur dbus-glib-0.100-old/configure.ac dbus-glib-0.100-new/configure.ac
|
||||
--- dbus-glib-0.100-old/configure.ac 2012-06-25 09:26:39.000000000 -0700
|
||||
+++ dbus-glib-0.100-new/configure.ac 2012-12-29 08:54:04.000000000 -0800
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
AM_INIT_AUTOMAKE([1.9])
|
||||
|
||||
-AM_CONFIG_HEADER(config.h)
|
||||
+AC_CONFIG_HEADERS(config.h)
|
||||
|
||||
# Honor aclocal flags
|
||||
ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="file"
|
||||
PKG_VERSION="5.18"
|
||||
PKG_VERSION="5.19"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="BSD"
|
||||
|
||||
@@ -32,6 +32,8 @@ PKG_LONGDESC="This is the GNU gettext package. It is interesting for authors or
|
||||
PKG_IS_ADDON="no"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
PKG_CONFIGURE_SCRIPT="gettext-tools/configure"
|
||||
|
||||
PKG_CONFIGURE_OPTS_HOST="--enable-static --disable-shared \
|
||||
--disable-rpath \
|
||||
--with-gnu-ld \
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
diff -Naur gettext-0.19.1/gettext-tools/Makefile.am gettext-0.19.1.patch/gettext-tools/Makefile.am
|
||||
--- gettext-0.19.1/gettext-tools/Makefile.am 2014-05-01 11:37:33.000000000 +0200
|
||||
+++ gettext-0.19.1.patch/gettext-tools/Makefile.am 2014-06-23 16:06:15.225426222 +0200
|
||||
@@ -19,7 +19,7 @@
|
||||
AUTOMAKE_OPTIONS = 1.5 gnu no-dependencies
|
||||
ACLOCAL_AMFLAGS = -I m4 -I ../gettext-runtime/m4 -I ../m4 -I gnulib-m4 -I libgrep/gnulib-m4 -I libgettextpo/gnulib-m4
|
||||
|
||||
-SUBDIRS = doc intl gnulib-lib libgrep src libgettextpo po projects styles misc man m4 tests gnulib-tests examples
|
||||
+SUBDIRS = intl gnulib-lib libgrep src libgettextpo po projects styles misc man m4 tests gnulib-tests
|
||||
|
||||
EXTRA_DIST = misc/DISCLAIM
|
||||
MOSTLYCLEANFILES = core *.stackdump
|
||||
diff -Naur gettext-0.19.1/gettext-tools/Makefile.in gettext-0.19.1.patch/gettext-tools/Makefile.in
|
||||
--- gettext-0.19.1/gettext-tools/Makefile.in 2014-06-10 07:42:48.000000000 +0200
|
||||
+++ gettext-0.19.1.patch/gettext-tools/Makefile.in 2014-06-23 16:06:32.453461116 +0200
|
||||
@@ -1556,7 +1556,7 @@
|
||||
top_srcdir = @top_srcdir@
|
||||
AUTOMAKE_OPTIONS = 1.5 gnu no-dependencies
|
||||
ACLOCAL_AMFLAGS = -I m4 -I ../gettext-runtime/m4 -I ../m4 -I gnulib-m4 -I libgrep/gnulib-m4 -I libgettextpo/gnulib-m4
|
||||
-SUBDIRS = doc intl gnulib-lib libgrep src libgettextpo po projects styles misc man m4 tests gnulib-tests examples
|
||||
+SUBDIRS = intl gnulib-lib libgrep src libgettextpo po projects styles misc man m4 tests gnulib-tests
|
||||
|
||||
# Allow users to use "gnulib-tool --update".
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="libffi"
|
||||
PKG_VERSION="3.0.11"
|
||||
PKG_VERSION="3.1"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
diff -Naur libffi-3.0.10/include/Makefile.am libffi-3.0.10.patch/include/Makefile.am
|
||||
--- libffi-3.0.10/include/Makefile.am 2011-08-22 20:38:12.000000000 +0200
|
||||
+++ libffi-3.0.10.patch/include/Makefile.am 2011-11-04 09:26:38.587669344 +0100
|
||||
@@ -5,5 +5,5 @@
|
||||
DISTCLEANFILES=ffitarget.h
|
||||
EXTRA_DIST=ffi.h.in ffi_common.h
|
||||
|
||||
-includesdir = $(libdir)/@PACKAGE_NAME@-@PACKAGE_VERSION@/include
|
||||
+includesdir = $(includedir)/@PACKAGE_NAME@
|
||||
nodist_includes_HEADERS = ffi.h ffitarget.h
|
||||
diff -Naur libffi-3.0.10/libffi.pc.in libffi-3.0.10.patch/libffi.pc.in
|
||||
--- libffi-3.0.10/libffi.pc.in 2011-08-22 20:38:12.000000000 +0200
|
||||
+++ libffi-3.0.10.patch/libffi.pc.in 2011-11-04 09:25:20.218682315 +0100
|
||||
@@ -1,7 +1,7 @@
|
||||
prefix=@prefix@
|
||||
exec_prefix=@exec_prefix@
|
||||
libdir=@libdir@
|
||||
-includedir=${libdir}/@PACKAGE_NAME@-@PACKAGE_VERSION@/include
|
||||
+includedir=@includedir@/@PACKAGE_NAME@
|
||||
|
||||
Name: @PACKAGE_NAME@
|
||||
Description: Library supporting Foreign Function Interfaces
|
||||
@@ -0,0 +1,50 @@
|
||||
From 102c02de867bfe831b5366c89d66bcf170db962e Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||
Date: Thu, 7 Feb 2013 22:26:56 +0100
|
||||
Subject: [PATCH] Fix installation location of libffi
|
||||
|
||||
The libffi is currently declared as toolexeclib_LTLIBRARIES. In many
|
||||
cases, toolexeclib libraries will be installed in /usr/lib, so it
|
||||
doesn't make any difference.
|
||||
|
||||
However, with multilib toolchains, they get installed in a
|
||||
subdirectory of /usr/lib/. For example, with a Sourcery CodeBench
|
||||
PowerPC toolchain, if the e500mc multilib variant is used, the libffi
|
||||
library gets installed in /usr/lib/te500mc/. This is due to the
|
||||
following code in the configure script:
|
||||
|
||||
multi_os_directory=`$CC -print-multi-os-directory`
|
||||
case $multi_os_directory in
|
||||
.) ;; # Avoid trailing /.
|
||||
*) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;;
|
||||
esac
|
||||
|
||||
Once the library is installed in /usr/lib/te500mc/, nothing works
|
||||
because this installation location is inconsistent with the
|
||||
installation location declared in libffi.pc.
|
||||
|
||||
So, instead of using this bizarre toolexeclib_LTLIBRARIES, simply use
|
||||
the more standard lib_LTLIBRARIES, which ensures that the libffi
|
||||
library is always installed in /usr/lib.
|
||||
|
||||
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||
---
|
||||
Makefile.am | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/Makefile.am b/Makefile.am
|
||||
index 6f669ca..b60bcc1 100644
|
||||
--- a/Makefile.am
|
||||
+++ b/Makefile.am
|
||||
@@ -93,7 +93,7 @@ FLAGS_TO_PASS = $(AM_MAKEFLAGS)
|
||||
|
||||
MAKEOVERRIDES=
|
||||
|
||||
-toolexeclib_LTLIBRARIES = libffi.la
|
||||
+lib_LTLIBRARIES = libffi.la
|
||||
noinst_LTLIBRARIES = libffi_convenience.la
|
||||
|
||||
libffi_la_SOURCES = src/prep_cif.c src/types.c \
|
||||
--
|
||||
1.7.9.5
|
||||
|
||||
23
packages/devel/libffi/patches/libffi-includedir.patch
Normal file
23
packages/devel/libffi/patches/libffi-includedir.patch
Normal file
@@ -0,0 +1,23 @@
|
||||
diff -Naur libffi-3.1/include/Makefile.am libffi-3.1.patch/include/Makefile.am
|
||||
--- libffi-3.1/include/Makefile.am 2014-04-25 19:45:13.000000000 +0200
|
||||
+++ libffi-3.1.patch/include/Makefile.am 2014-07-03 14:30:29.019161705 +0200
|
||||
@@ -5,5 +5,6 @@
|
||||
DISTCLEANFILES=ffitarget.h
|
||||
EXTRA_DIST=ffi.h.in ffi_common.h
|
||||
|
||||
-includesdir = $(libdir)/@PACKAGE_NAME@-@PACKAGE_VERSION@/include
|
||||
+includesdir = $(includedir)/@PACKAGE_NAME@
|
||||
+
|
||||
nodist_includes_HEADERS = ffi.h ffitarget.h
|
||||
diff -Naur libffi-3.1/libffi.pc.in libffi-3.1.patch/libffi.pc.in
|
||||
--- libffi-3.1/libffi.pc.in 2014-04-25 19:45:13.000000000 +0200
|
||||
+++ libffi-3.1.patch/libffi.pc.in 2014-07-03 14:30:56.047220839 +0200
|
||||
@@ -2,7 +2,7 @@
|
||||
exec_prefix=@exec_prefix@
|
||||
libdir=@libdir@
|
||||
toolexeclibdir=@toolexeclibdir@
|
||||
-includedir=${libdir}/@PACKAGE_NAME@-@PACKAGE_VERSION@/include
|
||||
+includedir=@includedir@/@PACKAGE_NAME@
|
||||
|
||||
Name: @PACKAGE_NAME@
|
||||
Description: Library supporting Foreign Function Interfaces
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="mpc"
|
||||
PKG_VERSION="1.0.1"
|
||||
PKG_VERSION="1.0.2"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="LGPL"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="Mesa"
|
||||
PKG_VERSION="10.1.4"
|
||||
PKG_VERSION="10.1.6"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="OSS"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="bcm2835-driver"
|
||||
PKG_VERSION="b163259"
|
||||
PKG_VERSION="1e7d3d9"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="nonfree"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="libpng"
|
||||
PKG_VERSION="1.6.10"
|
||||
PKG_VERSION="1.6.12"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="OSS"
|
||||
|
||||
@@ -52,6 +52,8 @@ BOOTSTRAP_CONFIGURE_OPTS="--host=$HOST_NAME \
|
||||
--disable-libada \
|
||||
--disable-libmudflap \
|
||||
--disable-libatomic \
|
||||
--disable-libitm \
|
||||
--disable-libsanitizer \
|
||||
--enable-gold \
|
||||
--enable-ld=default \
|
||||
--enable-plugin \
|
||||
@@ -68,7 +70,8 @@ BOOTSTRAP_CONFIGURE_OPTS="--host=$HOST_NAME \
|
||||
--disable-decimal-float \
|
||||
$GCC_OPTS \
|
||||
--disable-nls \
|
||||
--disable-cloog-version-check"
|
||||
--disable-cloog-version-check \
|
||||
--enable-checking=release"
|
||||
|
||||
PKG_CONFIGURE_OPTS_HOST="--target=$TARGET_NAME \
|
||||
--with-sysroot=$SYSROOT_PREFIX \
|
||||
@@ -96,14 +99,17 @@ PKG_CONFIGURE_OPTS_HOST="--target=$TARGET_NAME \
|
||||
--enable-cloog-backend=isl \
|
||||
--enable-tls \
|
||||
--enable-shared \
|
||||
--disable-static \
|
||||
--enable-c99 \
|
||||
--enable-long-long \
|
||||
--enable-threads=posix \
|
||||
--disable-libstdcxx-pch \
|
||||
--enable-libstdcxx-time \
|
||||
--enable-clocale=gnu \
|
||||
$GCC_OPTS \
|
||||
--disable-nls \
|
||||
--disable-cloog-version-check"
|
||||
--disable-cloog-version-check \
|
||||
--enable-checking=release"
|
||||
|
||||
pre_configure_bootstrap() {
|
||||
setup_toolchain host
|
||||
|
||||
100
packages/lang/gcc/patches/gcc-4.9-PR60902-1.patch
Normal file
100
packages/lang/gcc/patches/gcc-4.9-PR60902-1.patch
Normal file
@@ -0,0 +1,100 @@
|
||||
From 0c5e8ed4943e302f6154e07368c0831e14c24187 Mon Sep 17 00:00:00 2001
|
||||
From: law <law@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Tue, 13 May 2014 20:26:30 +0000
|
||||
Subject: [PATCH] PR tree-optimization/60902
|
||||
* tree-ssa-threadedge.c
|
||||
(record_temporary_equivalences_from_stmts_at_dest): Make sure to
|
||||
invalidate outputs from statements that do not produce useful
|
||||
outputs for threading.
|
||||
|
||||
PR tree-optimization/60902
|
||||
* gcc.target/i386/pr60902.c: New test.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_9-branch@210398 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
---
|
||||
gcc/testsuite/gcc.target/i386/pr60902.c | 32 +++++++++++++++++++++++++++++++
|
||||
gcc/tree-ssa-threadedge.c | 29 +++++++++++++++++++++++++++-
|
||||
4 files changed, 79 insertions(+), 1 deletions(-)
|
||||
create mode 100644 gcc/testsuite/gcc.target/i386/pr60902.c
|
||||
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/pr60902.c b/gcc/testsuite/gcc.target/i386/pr60902.c
|
||||
new file mode 100644
|
||||
index 0000000..b81dcd7
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.target/i386/pr60902.c
|
||||
@@ -0,0 +1,32 @@
|
||||
+/* { dg-do run } */
|
||||
+/* { dg-options "-O2" } */
|
||||
+extern void abort ();
|
||||
+extern void exit (int);
|
||||
+
|
||||
+int x;
|
||||
+
|
||||
+foo()
|
||||
+{
|
||||
+ static int count;
|
||||
+ count++;
|
||||
+ if (count > 1)
|
||||
+ abort ();
|
||||
+}
|
||||
+
|
||||
+static inline int
|
||||
+frob ()
|
||||
+{
|
||||
+ int a;
|
||||
+ __asm__ ("mov %1, %0\n\t" : "=r" (a) : "m" (x));
|
||||
+ x++;
|
||||
+ return a;
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+main ()
|
||||
+{
|
||||
+ int i;
|
||||
+ for (i = 0; i < 10 && frob () == 0; i++)
|
||||
+ foo();
|
||||
+ exit (0);
|
||||
+}
|
||||
diff --git a/gcc/tree-ssa-threadedge.c b/gcc/tree-ssa-threadedge.c
|
||||
index c447b72..8a0103b 100644
|
||||
--- a/gcc/tree-ssa-threadedge.c
|
||||
+++ b/gcc/tree-ssa-threadedge.c
|
||||
@@ -387,7 +387,34 @@ record_temporary_equivalences_from_stmts_at_dest (edge e,
|
||||
&& (gimple_code (stmt) != GIMPLE_CALL
|
||||
|| gimple_call_lhs (stmt) == NULL_TREE
|
||||
|| TREE_CODE (gimple_call_lhs (stmt)) != SSA_NAME))
|
||||
- continue;
|
||||
+ {
|
||||
+ /* STMT might still have DEFS and we need to invalidate any known
|
||||
+ equivalences for them.
|
||||
+
|
||||
+ Consider if STMT is a GIMPLE_ASM with one or more outputs that
|
||||
+ feeds a conditional inside a loop. We might derive an equivalence
|
||||
+ due to the conditional. */
|
||||
+ tree op;
|
||||
+ ssa_op_iter iter;
|
||||
+
|
||||
+ if (backedge_seen)
|
||||
+ FOR_EACH_SSA_TREE_OPERAND (op, stmt, iter, SSA_OP_ALL_DEFS)
|
||||
+ {
|
||||
+ /* This call only invalidates equivalences created by
|
||||
+ PHI nodes. This is by design to keep the cost of
|
||||
+ of invalidation reasonable. */
|
||||
+ invalidate_equivalences (op, stack, src_map, dst_map);
|
||||
+
|
||||
+ /* However, conditionals can imply values for real
|
||||
+ operands as well. And those won't be recorded in the
|
||||
+ maps. In fact, those equivalences may be recorded totally
|
||||
+ outside the threading code. We can just create a new
|
||||
+ temporary NULL equivalence here. */
|
||||
+ record_temporary_equivalence (op, NULL_TREE, stack);
|
||||
+ }
|
||||
+
|
||||
+ continue;
|
||||
+ }
|
||||
|
||||
/* The result of __builtin_object_size depends on all the arguments
|
||||
of a phi node. Temporarily using only one edge produces invalid
|
||||
--
|
||||
1.7.1
|
||||
|
||||
30
packages/lang/gcc/patches/gcc-4.9-PR60902-2.patch
Normal file
30
packages/lang/gcc/patches/gcc-4.9-PR60902-2.patch
Normal file
@@ -0,0 +1,30 @@
|
||||
From 4de76fa443ab107e4542bbdba242f0ed467cfecf Mon Sep 17 00:00:00 2001
|
||||
From: law <law@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Tue, 13 May 2014 20:26:41 +0000
|
||||
Subject: [PATCH] PR tree-optimization/60902
|
||||
* tree-ssa-threadedge.c
|
||||
(record_temporary_equivalences_from_stmts_at_dest): Only iterate
|
||||
over real defs when invalidating outputs from statements that do not
|
||||
produce useful outputs for threading.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_9-branch@210399 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
---
|
||||
gcc/tree-ssa-threadedge.c | 2 +-
|
||||
2 files changed, 10 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/gcc/tree-ssa-threadedge.c b/gcc/tree-ssa-threadedge.c
|
||||
index 8a0103b..7621348 100644
|
||||
--- a/gcc/tree-ssa-threadedge.c
|
||||
+++ b/gcc/tree-ssa-threadedge.c
|
||||
@@ -398,7 +398,7 @@ record_temporary_equivalences_from_stmts_at_dest (edge e,
|
||||
ssa_op_iter iter;
|
||||
|
||||
if (backedge_seen)
|
||||
- FOR_EACH_SSA_TREE_OPERAND (op, stmt, iter, SSA_OP_ALL_DEFS)
|
||||
+ FOR_EACH_SSA_TREE_OPERAND (op, stmt, iter, SSA_OP_DEF)
|
||||
{
|
||||
/* This call only invalidates equivalences created by
|
||||
PHI nodes. This is by design to keep the cost of
|
||||
--
|
||||
1.7.1
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="llvm"
|
||||
PKG_VERSION="3.4.1"
|
||||
PKG_VERSION="3.4.2"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -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-09 02:51:25.318208735 +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,8 +9,11 @@ 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 */ \
|
||||
@@ -146,6 +147,7 @@
|
||||
@@ -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 */ \
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="misc-firmware"
|
||||
PKG_VERSION="0.0.9"
|
||||
PKG_VERSION="0.0.11"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="Free-to-use"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="wlan-firmware"
|
||||
PKG_VERSION="0.0.21"
|
||||
PKG_VERSION="0.0.23"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="Free-to-use"
|
||||
|
||||
BIN
packages/linux/firmware/radeon/BONAIRE_mc2.bin
Normal file
BIN
packages/linux/firmware/radeon/BONAIRE_mc2.bin
Normal file
Binary file not shown.
BIN
packages/linux/firmware/radeon/HAINAN_mc2.bin
Normal file
BIN
packages/linux/firmware/radeon/HAINAN_mc2.bin
Normal file
Binary file not shown.
BIN
packages/linux/firmware/radeon/HAWAII_ce.bin
Normal file
BIN
packages/linux/firmware/radeon/HAWAII_ce.bin
Normal file
Binary file not shown.
BIN
packages/linux/firmware/radeon/HAWAII_mc.bin
Normal file
BIN
packages/linux/firmware/radeon/HAWAII_mc.bin
Normal file
Binary file not shown.
BIN
packages/linux/firmware/radeon/HAWAII_mc2.bin
Normal file
BIN
packages/linux/firmware/radeon/HAWAII_mc2.bin
Normal file
Binary file not shown.
BIN
packages/linux/firmware/radeon/HAWAII_me.bin
Normal file
BIN
packages/linux/firmware/radeon/HAWAII_me.bin
Normal file
Binary file not shown.
BIN
packages/linux/firmware/radeon/HAWAII_mec.bin
Normal file
BIN
packages/linux/firmware/radeon/HAWAII_mec.bin
Normal file
Binary file not shown.
BIN
packages/linux/firmware/radeon/HAWAII_pfp.bin
Normal file
BIN
packages/linux/firmware/radeon/HAWAII_pfp.bin
Normal file
Binary file not shown.
BIN
packages/linux/firmware/radeon/HAWAII_rlc.bin
Normal file
BIN
packages/linux/firmware/radeon/HAWAII_rlc.bin
Normal file
Binary file not shown.
BIN
packages/linux/firmware/radeon/HAWAII_sdma.bin
Normal file
BIN
packages/linux/firmware/radeon/HAWAII_sdma.bin
Normal file
Binary file not shown.
BIN
packages/linux/firmware/radeon/HAWAII_smc.bin
Normal file
BIN
packages/linux/firmware/radeon/HAWAII_smc.bin
Normal file
Binary file not shown.
BIN
packages/linux/firmware/radeon/MULLINS_ce.bin
Normal file
BIN
packages/linux/firmware/radeon/MULLINS_ce.bin
Normal file
Binary file not shown.
BIN
packages/linux/firmware/radeon/MULLINS_me.bin
Normal file
BIN
packages/linux/firmware/radeon/MULLINS_me.bin
Normal file
Binary file not shown.
BIN
packages/linux/firmware/radeon/MULLINS_mec.bin
Normal file
BIN
packages/linux/firmware/radeon/MULLINS_mec.bin
Normal file
Binary file not shown.
BIN
packages/linux/firmware/radeon/MULLINS_pfp.bin
Normal file
BIN
packages/linux/firmware/radeon/MULLINS_pfp.bin
Normal file
Binary file not shown.
BIN
packages/linux/firmware/radeon/MULLINS_rlc.bin
Normal file
BIN
packages/linux/firmware/radeon/MULLINS_rlc.bin
Normal file
Binary file not shown.
BIN
packages/linux/firmware/radeon/MULLINS_sdma.bin
Normal file
BIN
packages/linux/firmware/radeon/MULLINS_sdma.bin
Normal file
Binary file not shown.
BIN
packages/linux/firmware/radeon/OLAND_mc2.bin
Normal file
BIN
packages/linux/firmware/radeon/OLAND_mc2.bin
Normal file
Binary file not shown.
BIN
packages/linux/firmware/radeon/PITCAIRN_mc2.bin
Normal file
BIN
packages/linux/firmware/radeon/PITCAIRN_mc2.bin
Normal file
Binary file not shown.
BIN
packages/linux/firmware/radeon/TAHITI_mc2.bin
Normal file
BIN
packages/linux/firmware/radeon/TAHITI_mc2.bin
Normal file
Binary file not shown.
BIN
packages/linux/firmware/radeon/VERDE_mc2.bin
Normal file
BIN
packages/linux/firmware/radeon/VERDE_mc2.bin
Normal file
Binary file not shown.
@@ -23,7 +23,7 @@ case "$LINUX" in
|
||||
PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.xz"
|
||||
;;
|
||||
*)
|
||||
PKG_VERSION="3.14.4"
|
||||
PKG_VERSION="3.14.11"
|
||||
PKG_URL="http://www.kernel.org/pub/linux/kernel/v3.x/$PKG_NAME-$PKG_VERSION.tar.xz"
|
||||
;;
|
||||
esac
|
||||
|
||||
12
packages/linux/patches/3.14.11/linux-060-add_AUGUST_DVB-T205.patch
vendored
Normal file
12
packages/linux/patches/3.14.11/linux-060-add_AUGUST_DVB-T205.patch
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
diff -Naur linux-3.14.8/drivers/media/usb/dvb-usb-v2/rtl28xxu.c linux-3.14.8.patch/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
|
||||
--- linux-3.14.8/drivers/media/usb/dvb-usb-v2/rtl28xxu.c 2014-06-16 22:41:19.000000000 +0200
|
||||
+++ linux-3.14.8.patch/drivers/media/usb/dvb-usb-v2/rtl28xxu.c 2014-06-17 03:34:54.230287375 +0200
|
||||
@@ -1441,6 +1441,8 @@
|
||||
&rtl2832u_props, "Sveon STV20", NULL) },
|
||||
{ DVB_USB_DEVICE(USB_VID_KWORLD_2, USB_PID_SVEON_STV27,
|
||||
&rtl2832u_props, "Sveon STV27", NULL) },
|
||||
+ { DVB_USB_DEVICE(USB_VID_GTEK, 0xa803,
|
||||
+ &rtl2832u_props, "Realtek RTL2832U reference design", NULL) },
|
||||
|
||||
/* RTL2832P devices: */
|
||||
{ DVB_USB_DEVICE(USB_VID_HANFTEK, 0x0131,
|
||||
97
packages/linux/patches/3.14.11/linux-224-geniatech-t220-dvb-t2-fix.patch
vendored
Normal file
97
packages/linux/patches/3.14.11/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;
|
||||
|
||||
@@ -597,348 +597,3 @@ index 0c26b3c..12a01e9 100644
|
||||
--
|
||||
1.9.1
|
||||
|
||||
From 6e26c28955078c20a78a41e03911d67b5f85bd55 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>
|
||||
Date: Wed, 23 Apr 2014 20:46:06 +0200
|
||||
Subject: [PATCH 6/6] drm/radeon: use pflip irq on R600+
|
||||
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/cik.c | 76 +++++++++++++++++++++++++++++++++
|
||||
drivers/gpu/drm/radeon/cikd.h | 9 ++++
|
||||
drivers/gpu/drm/radeon/evergreen.c | 28 +++++++++---
|
||||
drivers/gpu/drm/radeon/r600.c | 10 +++--
|
||||
drivers/gpu/drm/radeon/radeon.h | 6 +++
|
||||
drivers/gpu/drm/radeon/radeon_display.c | 4 ++
|
||||
drivers/gpu/drm/radeon/si.c | 28 +++++++++---
|
||||
7 files changed, 144 insertions(+), 17 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/radeon/cik.c b/drivers/gpu/drm/radeon/cik.c
|
||||
index bbb1784..e29c9b2 100644
|
||||
--- a/drivers/gpu/drm/radeon/cik.c
|
||||
+++ b/drivers/gpu/drm/radeon/cik.c
|
||||
@@ -6662,6 +6662,19 @@ static void cik_disable_interrupt_state(struct radeon_device *rdev)
|
||||
WREG32(LB_INTERRUPT_MASK + EVERGREEN_CRTC4_REGISTER_OFFSET, 0);
|
||||
WREG32(LB_INTERRUPT_MASK + EVERGREEN_CRTC5_REGISTER_OFFSET, 0);
|
||||
}
|
||||
+ /* pflip */
|
||||
+ if (rdev->num_crtc >= 2) {
|
||||
+ WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC0_REGISTER_OFFSET, 0);
|
||||
+ WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC1_REGISTER_OFFSET, 0);
|
||||
+ }
|
||||
+ if (rdev->num_crtc >= 4) {
|
||||
+ WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC2_REGISTER_OFFSET, 0);
|
||||
+ WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC3_REGISTER_OFFSET, 0);
|
||||
+ }
|
||||
+ if (rdev->num_crtc >= 6) {
|
||||
+ WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC4_REGISTER_OFFSET, 0);
|
||||
+ WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC5_REGISTER_OFFSET, 0);
|
||||
+ }
|
||||
|
||||
/* dac hotplug */
|
||||
WREG32(DAC_AUTODETECT_INT_CONTROL, 0);
|
||||
@@ -7018,6 +7031,25 @@ int cik_irq_set(struct radeon_device *rdev)
|
||||
WREG32(LB_INTERRUPT_MASK + EVERGREEN_CRTC5_REGISTER_OFFSET, crtc6);
|
||||
}
|
||||
|
||||
+ if (rdev->num_crtc >= 2) {
|
||||
+ WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC0_REGISTER_OFFSET,
|
||||
+ GRPH_PFLIP_INT_MASK);
|
||||
+ WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC1_REGISTER_OFFSET,
|
||||
+ GRPH_PFLIP_INT_MASK);
|
||||
+ }
|
||||
+ if (rdev->num_crtc >= 4) {
|
||||
+ WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC2_REGISTER_OFFSET,
|
||||
+ GRPH_PFLIP_INT_MASK);
|
||||
+ WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC3_REGISTER_OFFSET,
|
||||
+ GRPH_PFLIP_INT_MASK);
|
||||
+ }
|
||||
+ if (rdev->num_crtc >= 6) {
|
||||
+ WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC4_REGISTER_OFFSET,
|
||||
+ GRPH_PFLIP_INT_MASK);
|
||||
+ WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC5_REGISTER_OFFSET,
|
||||
+ GRPH_PFLIP_INT_MASK);
|
||||
+ }
|
||||
+
|
||||
WREG32(DC_HPD1_INT_CONTROL, hpd1);
|
||||
WREG32(DC_HPD2_INT_CONTROL, hpd2);
|
||||
WREG32(DC_HPD3_INT_CONTROL, hpd3);
|
||||
@@ -7054,6 +7086,29 @@ static inline void cik_irq_ack(struct radeon_device *rdev)
|
||||
rdev->irq.stat_regs.cik.disp_int_cont5 = RREG32(DISP_INTERRUPT_STATUS_CONTINUE5);
|
||||
rdev->irq.stat_regs.cik.disp_int_cont6 = RREG32(DISP_INTERRUPT_STATUS_CONTINUE6);
|
||||
|
||||
+ rdev->irq.stat_regs.cik.d1grph_int = RREG32(GRPH_INT_STATUS +
|
||||
+ EVERGREEN_CRTC0_REGISTER_OFFSET);
|
||||
+ rdev->irq.stat_regs.cik.d2grph_int = RREG32(GRPH_INT_STATUS +
|
||||
+ EVERGREEN_CRTC1_REGISTER_OFFSET);
|
||||
+ if (rdev->num_crtc >= 4) {
|
||||
+ rdev->irq.stat_regs.cik.d3grph_int = RREG32(GRPH_INT_STATUS +
|
||||
+ EVERGREEN_CRTC2_REGISTER_OFFSET);
|
||||
+ rdev->irq.stat_regs.cik.d4grph_int = RREG32(GRPH_INT_STATUS +
|
||||
+ EVERGREEN_CRTC3_REGISTER_OFFSET);
|
||||
+ }
|
||||
+ if (rdev->num_crtc >= 6) {
|
||||
+ rdev->irq.stat_regs.cik.d5grph_int = RREG32(GRPH_INT_STATUS +
|
||||
+ EVERGREEN_CRTC4_REGISTER_OFFSET);
|
||||
+ rdev->irq.stat_regs.cik.d6grph_int = RREG32(GRPH_INT_STATUS +
|
||||
+ EVERGREEN_CRTC5_REGISTER_OFFSET);
|
||||
+ }
|
||||
+
|
||||
+ if (rdev->irq.stat_regs.cik.d1grph_int & GRPH_PFLIP_INT_OCCURRED)
|
||||
+ WREG32(GRPH_INT_STATUS + EVERGREEN_CRTC0_REGISTER_OFFSET,
|
||||
+ GRPH_PFLIP_INT_CLEAR);
|
||||
+ if (rdev->irq.stat_regs.cik.d2grph_int & GRPH_PFLIP_INT_OCCURRED)
|
||||
+ WREG32(GRPH_INT_STATUS + EVERGREEN_CRTC1_REGISTER_OFFSET,
|
||||
+ GRPH_PFLIP_INT_CLEAR);
|
||||
if (rdev->irq.stat_regs.cik.disp_int & LB_D1_VBLANK_INTERRUPT)
|
||||
WREG32(LB_VBLANK_STATUS + EVERGREEN_CRTC0_REGISTER_OFFSET, VBLANK_ACK);
|
||||
if (rdev->irq.stat_regs.cik.disp_int & LB_D1_VLINE_INTERRUPT)
|
||||
@@ -7064,6 +7119,12 @@ static inline void cik_irq_ack(struct radeon_device *rdev)
|
||||
WREG32(LB_VLINE_STATUS + EVERGREEN_CRTC1_REGISTER_OFFSET, VLINE_ACK);
|
||||
|
||||
if (rdev->num_crtc >= 4) {
|
||||
+ if (rdev->irq.stat_regs.cik.d3grph_int & GRPH_PFLIP_INT_OCCURRED)
|
||||
+ WREG32(GRPH_INT_STATUS + EVERGREEN_CRTC2_REGISTER_OFFSET,
|
||||
+ GRPH_PFLIP_INT_CLEAR);
|
||||
+ if (rdev->irq.stat_regs.cik.d4grph_int & GRPH_PFLIP_INT_OCCURRED)
|
||||
+ WREG32(GRPH_INT_STATUS + EVERGREEN_CRTC3_REGISTER_OFFSET,
|
||||
+ GRPH_PFLIP_INT_CLEAR);
|
||||
if (rdev->irq.stat_regs.cik.disp_int_cont2 & LB_D3_VBLANK_INTERRUPT)
|
||||
WREG32(LB_VBLANK_STATUS + EVERGREEN_CRTC2_REGISTER_OFFSET, VBLANK_ACK);
|
||||
if (rdev->irq.stat_regs.cik.disp_int_cont2 & LB_D3_VLINE_INTERRUPT)
|
||||
@@ -7075,6 +7136,12 @@ static inline void cik_irq_ack(struct radeon_device *rdev)
|
||||
}
|
||||
|
||||
if (rdev->num_crtc >= 6) {
|
||||
+ if (rdev->irq.stat_regs.cik.d5grph_int & GRPH_PFLIP_INT_OCCURRED)
|
||||
+ WREG32(GRPH_INT_STATUS + EVERGREEN_CRTC4_REGISTER_OFFSET,
|
||||
+ GRPH_PFLIP_INT_CLEAR);
|
||||
+ if (rdev->irq.stat_regs.cik.d6grph_int & GRPH_PFLIP_INT_OCCURRED)
|
||||
+ WREG32(GRPH_INT_STATUS + EVERGREEN_CRTC5_REGISTER_OFFSET,
|
||||
+ GRPH_PFLIP_INT_CLEAR);
|
||||
if (rdev->irq.stat_regs.cik.disp_int_cont4 & LB_D5_VBLANK_INTERRUPT)
|
||||
WREG32(LB_VBLANK_STATUS + EVERGREEN_CRTC4_REGISTER_OFFSET, VBLANK_ACK);
|
||||
if (rdev->irq.stat_regs.cik.disp_int_cont4 & LB_D5_VLINE_INTERRUPT)
|
||||
@@ -7426,6 +7493,15 @@ restart_ih:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
+ case 8: /* D1 page flip */
|
||||
+ case 9: /* D2 page flip */
|
||||
+ case 10: /* D3 page flip */
|
||||
+ case 11: /* D4 page flip */
|
||||
+ case 12: /* D5 page flip */
|
||||
+ case 13: /* D6 page flip */
|
||||
+ DRM_DEBUG("IH: D%d flip\n", src_id - 7);
|
||||
+ radeon_crtc_handle_flip(rdev, src_id - 8);
|
||||
+ break;
|
||||
case 42: /* HPD hotplug */
|
||||
switch (src_data) {
|
||||
case 0:
|
||||
diff --git a/drivers/gpu/drm/radeon/cikd.h b/drivers/gpu/drm/radeon/cikd.h
|
||||
index 98bae9d7..d1b2c71 100644
|
||||
--- a/drivers/gpu/drm/radeon/cikd.h
|
||||
+++ b/drivers/gpu/drm/radeon/cikd.h
|
||||
@@ -882,6 +882,15 @@
|
||||
# define DC_HPD6_RX_INTERRUPT (1 << 18)
|
||||
#define DISP_INTERRUPT_STATUS_CONTINUE6 0x6780
|
||||
|
||||
+/* 0x6858, 0x7458, 0x10058, 0x10c58, 0x11858, 0x12458 */
|
||||
+#define GRPH_INT_STATUS 0x6858
|
||||
+# define GRPH_PFLIP_INT_OCCURRED (1 << 0)
|
||||
+# define GRPH_PFLIP_INT_CLEAR (1 << 8)
|
||||
+/* 0x685c, 0x745c, 0x1005c, 0x10c5c, 0x1185c, 0x1245c */
|
||||
+#define GRPH_INT_CONTROL 0x685c
|
||||
+# define GRPH_PFLIP_INT_MASK (1 << 0)
|
||||
+# define GRPH_PFLIP_INT_TYPE (1 << 8)
|
||||
+
|
||||
#define DAC_AUTODETECT_INT_CONTROL 0x67c8
|
||||
|
||||
#define DC_HPD1_INT_STATUS 0x601c
|
||||
diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c
|
||||
index 27b0ff1..8ffee2b 100644
|
||||
--- a/drivers/gpu/drm/radeon/evergreen.c
|
||||
+++ b/drivers/gpu/drm/radeon/evergreen.c
|
||||
@@ -4375,7 +4375,6 @@ int evergreen_irq_set(struct radeon_device *rdev)
|
||||
u32 crtc1 = 0, crtc2 = 0, crtc3 = 0, crtc4 = 0, crtc5 = 0, crtc6 = 0;
|
||||
u32 hpd1, hpd2, hpd3, hpd4, hpd5, hpd6;
|
||||
u32 grbm_int_cntl = 0;
|
||||
- u32 grph1 = 0, grph2 = 0, grph3 = 0, grph4 = 0, grph5 = 0, grph6 = 0;
|
||||
u32 afmt1 = 0, afmt2 = 0, afmt3 = 0, afmt4 = 0, afmt5 = 0, afmt6 = 0;
|
||||
u32 dma_cntl, dma_cntl1 = 0;
|
||||
u32 thermal_int = 0;
|
||||
@@ -4558,15 +4557,21 @@ int evergreen_irq_set(struct radeon_device *rdev)
|
||||
WREG32(INT_MASK + EVERGREEN_CRTC5_REGISTER_OFFSET, crtc6);
|
||||
}
|
||||
|
||||
- WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC0_REGISTER_OFFSET, grph1);
|
||||
- WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC1_REGISTER_OFFSET, grph2);
|
||||
+ WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC0_REGISTER_OFFSET,
|
||||
+ GRPH_PFLIP_INT_MASK);
|
||||
+ WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC1_REGISTER_OFFSET,
|
||||
+ GRPH_PFLIP_INT_MASK);
|
||||
if (rdev->num_crtc >= 4) {
|
||||
- WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC2_REGISTER_OFFSET, grph3);
|
||||
- WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC3_REGISTER_OFFSET, grph4);
|
||||
+ WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC2_REGISTER_OFFSET,
|
||||
+ GRPH_PFLIP_INT_MASK);
|
||||
+ WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC3_REGISTER_OFFSET,
|
||||
+ GRPH_PFLIP_INT_MASK);
|
||||
}
|
||||
if (rdev->num_crtc >= 6) {
|
||||
- WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC4_REGISTER_OFFSET, grph5);
|
||||
- WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC5_REGISTER_OFFSET, grph6);
|
||||
+ WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC4_REGISTER_OFFSET,
|
||||
+ GRPH_PFLIP_INT_MASK);
|
||||
+ WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC5_REGISTER_OFFSET,
|
||||
+ GRPH_PFLIP_INT_MASK);
|
||||
}
|
||||
|
||||
WREG32(DC_HPD1_INT_CONTROL, hpd1);
|
||||
@@ -4955,6 +4960,15 @@ restart_ih:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
+ case 8: /* D1 page flip */
|
||||
+ case 9: /* D2 page flip */
|
||||
+ case 10: /* D3 page flip */
|
||||
+ case 11: /* D4 page flip */
|
||||
+ case 12: /* D5 page flip */
|
||||
+ case 13: /* D6 page flip */
|
||||
+ DRM_DEBUG("IH: D%d flip\n", src_id - 7);
|
||||
+ radeon_crtc_handle_flip(rdev, src_id - 8);
|
||||
+ break;
|
||||
case 42: /* HPD hotplug */
|
||||
switch (src_data) {
|
||||
case 0:
|
||||
diff --git a/drivers/gpu/drm/radeon/r600.c b/drivers/gpu/drm/radeon/r600.c
|
||||
index 647ef40..114a3ef 100644
|
||||
--- a/drivers/gpu/drm/radeon/r600.c
|
||||
+++ b/drivers/gpu/drm/radeon/r600.c
|
||||
@@ -3509,7 +3509,6 @@ int r600_irq_set(struct radeon_device *rdev)
|
||||
u32 hpd1, hpd2, hpd3, hpd4 = 0, hpd5 = 0, hpd6 = 0;
|
||||
u32 grbm_int_cntl = 0;
|
||||
u32 hdmi0, hdmi1;
|
||||
- u32 d1grph = 0, d2grph = 0;
|
||||
u32 dma_cntl;
|
||||
u32 thermal_int = 0;
|
||||
|
||||
@@ -3618,8 +3617,8 @@ int r600_irq_set(struct radeon_device *rdev)
|
||||
WREG32(CP_INT_CNTL, cp_int_cntl);
|
||||
WREG32(DMA_CNTL, dma_cntl);
|
||||
WREG32(DxMODE_INT_MASK, mode_int);
|
||||
- WREG32(D1GRPH_INTERRUPT_CONTROL, d1grph);
|
||||
- WREG32(D2GRPH_INTERRUPT_CONTROL, d2grph);
|
||||
+ WREG32(D1GRPH_INTERRUPT_CONTROL, DxGRPH_PFLIP_INT_MASK);
|
||||
+ WREG32(D2GRPH_INTERRUPT_CONTROL, DxGRPH_PFLIP_INT_MASK);
|
||||
WREG32(GRBM_INT_CNTL, grbm_int_cntl);
|
||||
if (ASIC_IS_DCE3(rdev)) {
|
||||
WREG32(DC_HPD1_INT_CONTROL, hpd1);
|
||||
@@ -3922,6 +3921,11 @@ restart_ih:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
+ case 9: /* D1 pflip */
|
||||
+ case 10: /* D2 pflip */
|
||||
+ DRM_DEBUG("IH: D%d flip\n", src_id - 8);
|
||||
+ radeon_crtc_handle_flip(rdev, src_id - 9);
|
||||
+ break;
|
||||
case 19: /* HPD/DAC hotplug */
|
||||
switch (src_data) {
|
||||
case 0:
|
||||
diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h
|
||||
index e887d02..5587de9 100644
|
||||
--- a/drivers/gpu/drm/radeon/radeon.h
|
||||
+++ b/drivers/gpu/drm/radeon/radeon.h
|
||||
@@ -733,6 +733,12 @@ struct cik_irq_stat_regs {
|
||||
u32 disp_int_cont4;
|
||||
u32 disp_int_cont5;
|
||||
u32 disp_int_cont6;
|
||||
+ u32 d1grph_int;
|
||||
+ u32 d2grph_int;
|
||||
+ u32 d3grph_int;
|
||||
+ u32 d4grph_int;
|
||||
+ u32 d5grph_int;
|
||||
+ u32 d6grph_int;
|
||||
};
|
||||
|
||||
union radeon_irq_stat_regs {
|
||||
diff --git a/drivers/gpu/drm/radeon/radeon_display.c b/drivers/gpu/drm/radeon/radeon_display.c
|
||||
index 12a01e9..5e4326f 100644
|
||||
--- a/drivers/gpu/drm/radeon/radeon_display.c
|
||||
+++ b/drivers/gpu/drm/radeon/radeon_display.c
|
||||
@@ -284,6 +284,10 @@ void radeon_crtc_handle_flip(struct radeon_device *rdev, int crtc_id)
|
||||
u32 update_pending;
|
||||
int vpos, hpos;
|
||||
|
||||
+ /* can happen during initialization */
|
||||
+ if (radeon_crtc == NULL)
|
||||
+ return;
|
||||
+
|
||||
spin_lock_irqsave(&rdev->ddev->event_lock, flags);
|
||||
work = radeon_crtc->unpin_work;
|
||||
if (work == NULL ||
|
||||
diff --git a/drivers/gpu/drm/radeon/si.c b/drivers/gpu/drm/radeon/si.c
|
||||
index 9a124d0..2b47e53 100644
|
||||
--- a/drivers/gpu/drm/radeon/si.c
|
||||
+++ b/drivers/gpu/drm/radeon/si.c
|
||||
@@ -5777,7 +5777,6 @@ int si_irq_set(struct radeon_device *rdev)
|
||||
u32 crtc1 = 0, crtc2 = 0, crtc3 = 0, crtc4 = 0, crtc5 = 0, crtc6 = 0;
|
||||
u32 hpd1 = 0, hpd2 = 0, hpd3 = 0, hpd4 = 0, hpd5 = 0, hpd6 = 0;
|
||||
u32 grbm_int_cntl = 0;
|
||||
- u32 grph1 = 0, grph2 = 0, grph3 = 0, grph4 = 0, grph5 = 0, grph6 = 0;
|
||||
u32 dma_cntl, dma_cntl1;
|
||||
u32 thermal_int = 0;
|
||||
|
||||
@@ -5916,16 +5915,22 @@ int si_irq_set(struct radeon_device *rdev)
|
||||
}
|
||||
|
||||
if (rdev->num_crtc >= 2) {
|
||||
- WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC0_REGISTER_OFFSET, grph1);
|
||||
- WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC1_REGISTER_OFFSET, grph2);
|
||||
+ WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC0_REGISTER_OFFSET,
|
||||
+ GRPH_PFLIP_INT_MASK);
|
||||
+ WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC1_REGISTER_OFFSET,
|
||||
+ GRPH_PFLIP_INT_MASK);
|
||||
}
|
||||
if (rdev->num_crtc >= 4) {
|
||||
- WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC2_REGISTER_OFFSET, grph3);
|
||||
- WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC3_REGISTER_OFFSET, grph4);
|
||||
+ WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC2_REGISTER_OFFSET,
|
||||
+ GRPH_PFLIP_INT_MASK);
|
||||
+ WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC3_REGISTER_OFFSET,
|
||||
+ GRPH_PFLIP_INT_MASK);
|
||||
}
|
||||
if (rdev->num_crtc >= 6) {
|
||||
- WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC4_REGISTER_OFFSET, grph5);
|
||||
- WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC5_REGISTER_OFFSET, grph6);
|
||||
+ WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC4_REGISTER_OFFSET,
|
||||
+ GRPH_PFLIP_INT_MASK);
|
||||
+ WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC5_REGISTER_OFFSET,
|
||||
+ GRPH_PFLIP_INT_MASK);
|
||||
}
|
||||
|
||||
if (!ASIC_IS_NODCE(rdev)) {
|
||||
@@ -6289,6 +6294,15 @@ restart_ih:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
+ case 8: /* D1 page flip */
|
||||
+ case 9: /* D2 page flip */
|
||||
+ case 10: /* D3 page flip */
|
||||
+ case 11: /* D4 page flip */
|
||||
+ case 12: /* D5 page flip */
|
||||
+ case 13: /* D6 page flip */
|
||||
+ DRM_DEBUG("IH: D%d flip\n", src_id - 7);
|
||||
+ radeon_crtc_handle_flip(rdev, src_id - 8);
|
||||
+ break;
|
||||
case 42: /* HPD hotplug */
|
||||
switch (src_data) {
|
||||
case 0:
|
||||
--
|
||||
1.9.1
|
||||
|
||||
|
||||
13
packages/linux/patches/3.14.11/linux-999.06.radeon_fix.patch
vendored
Normal file
13
packages/linux/patches/3.14.11/linux-999.06.radeon_fix.patch
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
diff --git a/drivers/gpu/drm/radeon/trinity_dpm.c b/drivers/gpu/drm/radeon/trinity_dpm.c
|
||||
index 2a2822c..27505b6 100644
|
||||
--- a/drivers/gpu/drm/radeon/trinity_dpm.c
|
||||
+++ b/drivers/gpu/drm/radeon/trinity_dpm.c
|
||||
@@ -1874,7 +1874,7 @@ int trinity_dpm_init(struct radeon_device *rdev)
|
||||
for (i = 0; i < SUMO_MAX_HARDWARE_POWERLEVELS; i++)
|
||||
pi->at[i] = TRINITY_AT_DFLT;
|
||||
|
||||
- pi->enable_bapm = false;
|
||||
+ pi->enable_bapm = true;
|
||||
pi->enable_nbps_policy = true;
|
||||
pi->enable_sclk_ds = true;
|
||||
pi->enable_gfx_power_gating = true;
|
||||
@@ -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,55 +0,0 @@
|
||||
From 299db7189ad00fdddae62c9841c25a4b7c835ce5 Mon Sep 17 00:00:00 2001
|
||||
From: Anssi Hannula <anssi.hannula@iki.fi>
|
||||
Date: Mon, 5 May 2014 01:32:48 +0300
|
||||
Subject: [PATCH 1/2] ALSA: hda - hdmi: Set converter channel count even
|
||||
without sink
|
||||
|
||||
Since commit 1df5a06a ("ALSA: hda - hdmi: Fix programmed active channel
|
||||
count") channel count is no longer being set if monitor_present is 0.
|
||||
This is because setting the count was moved after the CA value is
|
||||
determined, which is only after the monitor_present check in
|
||||
hdmi_setup_audio_infoframe().
|
||||
|
||||
Unfortunately, in some cases, such as with a non-spec-compliant codec or
|
||||
with a problematic video driver, monitor_present is always 0. As a
|
||||
specific example, this seems to happen with gen1 ATV (SiI1390 codec),
|
||||
causing left-channel-only stereo playback (multi-channel playback has
|
||||
apparently never worked with this codec despite it reporting 8 channels,
|
||||
reason unknown).
|
||||
|
||||
Simply setting converter channel count without setting the pin infoframe
|
||||
and channel mapping as well does not theoretically make much sense as
|
||||
this will just mean they are out-of-sync and multichannel playback will
|
||||
have a wrong channel mapping.
|
||||
|
||||
However, adding back just setting the converter channel count even in
|
||||
no-monitor case is the safest change which at least fixes the stereo
|
||||
playback regression on SiI1390 codec. Do that.
|
||||
|
||||
Signed-off-by: Anssi Hannula <anssi.hannula@iki.fi>
|
||||
Reported-by: Stephan Raue <stephan@openelec.tv>
|
||||
Tested-by: Stephan Raue <stephan@openelec.tv>
|
||||
Cc: <stable@vger.kernel.org> # 3.12+
|
||||
---
|
||||
sound/pci/hda/patch_hdmi.c | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c
|
||||
index 0cb5b89cd0c8..1edbb9c47c2d 100644
|
||||
--- a/sound/pci/hda/patch_hdmi.c
|
||||
+++ b/sound/pci/hda/patch_hdmi.c
|
||||
@@ -1127,8 +1127,10 @@ static void hdmi_setup_audio_infoframe(struct hda_codec *codec,
|
||||
AMP_OUT_UNMUTE);
|
||||
|
||||
eld = &per_pin->sink_eld;
|
||||
- if (!eld->monitor_present)
|
||||
+ if (!eld->monitor_present) {
|
||||
+ hdmi_set_channel_count(codec, per_pin->cvt_nid, channels);
|
||||
return;
|
||||
+ }
|
||||
|
||||
if (!non_pcm && per_pin->chmap_set)
|
||||
ca = hdmi_manual_channel_allocation(channels, per_pin->chmap);
|
||||
--
|
||||
1.8.4.5
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="service.openelec.settings"
|
||||
PKG_VERSION="0.3.17"
|
||||
PKG_VERSION="0.3.18"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="prop."
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="xbmc-theme-Confluence"
|
||||
PKG_VERSION="13-4410736"
|
||||
PKG_VERSION="13-84725b0"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="xbmc"
|
||||
PKG_VERSION="13-4410736"
|
||||
PKG_VERSION="13-84725b0"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -0,0 +1,169 @@
|
||||
From d3a6ee05721ca6536b30a4e270d1844acfcb0533 Mon Sep 17 00:00:00 2001
|
||||
From: Stefan Saraev <stefan@saraev.ca>
|
||||
Date: Thu, 5 Jun 2014 18:50:04 +0300
|
||||
Subject: [PATCH] handle SIGTERM
|
||||
|
||||
In some situations, due to deadlocks or crashes, xbmc fails to exit properly in
|
||||
CApplication::Stop(), so g_powerManager.Reboot() / g_powerManager.Powerdown() never gets
|
||||
called, that's a big no-no for openelec as our users can't shutdown or reboot.
|
||||
There are few addons reported to cause this behaviour: trakkt.tv, watchdog, weather.underground.
|
||||
|
||||
I've also noticed that sometimes new threads (FileCache ??) get started AFTER
|
||||
CApplication::Stop() is called, delaying shutdown with 1+ minute (2 curl timeoouts?).
|
||||
The problem seems to be in CJobManager::CancelJobs() but I am too lame to understand where,
|
||||
why, and how to fix it.
|
||||
|
||||
To me, it seems best to let systemd handle it. systemd sends SIGTERM, then waits
|
||||
TimeoutStopSec=xx seconds then sends SIGKILL,s so dont call g_application.Stop() from
|
||||
ApplicationMessenger as it can not be trusted. save the requested exitcode instead
|
||||
(that's required for CEC to switch off the tv) and do it from a simple SIGTERM handler instead.
|
||||
|
||||
CEC thread has enough time (5 seconds in xbmc.service) to switch of the TV after receiving OnQuit.
|
||||
As a side "effect", now guisettings.xml will ALWAYS be saved, even if shutdown / rebooot
|
||||
is requested externaly (ssh, 3rdparty script).
|
||||
---
|
||||
xbmc/Application.cpp | 10 ++++++++--
|
||||
xbmc/Application.h | 1 +
|
||||
xbmc/ApplicationMessenger.cpp | 6 ++++--
|
||||
xbmc/XBApplicationEx.cpp | 1 +
|
||||
xbmc/XBApplicationEx.h | 1 +
|
||||
xbmc/main/main.cpp | 15 +++++++++++++++
|
||||
6 files changed, 30 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp
|
||||
index 9242d53..1b13667 100644
|
||||
--- a/xbmc/Application.cpp
|
||||
+++ b/xbmc/Application.cpp
|
||||
@@ -3509,11 +3509,18 @@ bool CApplication::Cleanup()
|
||||
}
|
||||
}
|
||||
|
||||
+void CApplication::SetExitCode(int exitCode)
|
||||
+{
|
||||
+ // save it for CEC
|
||||
+ m_ExitCode = exitCode;
|
||||
+ m_ExitCodeSet = true;
|
||||
+}
|
||||
+
|
||||
void CApplication::Stop(int exitCode)
|
||||
{
|
||||
try
|
||||
{
|
||||
- CVariant vExitCode(exitCode);
|
||||
+ CVariant vExitCode(m_ExitCode);
|
||||
CAnnouncementManager::Announce(System, "xbmc", "OnQuit", vExitCode);
|
||||
|
||||
SaveFileState(true);
|
||||
@@ -3537,7 +3544,6 @@ void CApplication::Stop(int exitCode)
|
||||
|
||||
m_bStop = true;
|
||||
m_AppFocused = false;
|
||||
- m_ExitCode = exitCode;
|
||||
CLog::Log(LOGNOTICE, "stop all");
|
||||
|
||||
// cancel any jobs from the jobmanager
|
||||
diff --git a/xbmc/Application.h b/xbmc/Application.h
|
||||
index e3a26c5..35656e3 100644
|
||||
--- a/xbmc/Application.h
|
||||
+++ b/xbmc/Application.h
|
||||
@@ -149,6 +149,7 @@ public:
|
||||
void StartPVRManager(bool bOpenPVRWindow = false);
|
||||
void StopPVRManager();
|
||||
bool IsCurrentThread() const;
|
||||
+ void SetExitCode(int exitCode);
|
||||
void Stop(int exitCode);
|
||||
void RestartApp();
|
||||
void UnloadSkin(bool forReload = false);
|
||||
diff --git a/xbmc/ApplicationMessenger.cpp b/xbmc/ApplicationMessenger.cpp
|
||||
index 3524e89..54a15da 100644
|
||||
--- a/xbmc/ApplicationMessenger.cpp
|
||||
+++ b/xbmc/ApplicationMessenger.cpp
|
||||
@@ -259,13 +259,14 @@ void CApplicationMessenger::ProcessMessage(ThreadMessage *pMsg)
|
||||
|
||||
case TMSG_POWERDOWN:
|
||||
{
|
||||
- g_application.Stop(EXITCODE_POWERDOWN);
|
||||
+ g_application.SetExitCode(EXITCODE_POWERDOWN);
|
||||
g_powerManager.Powerdown();
|
||||
}
|
||||
break;
|
||||
|
||||
case TMSG_QUIT:
|
||||
{
|
||||
+ g_application.SetExitCode(EXITCODE_QUIT);
|
||||
g_application.Stop(EXITCODE_QUIT);
|
||||
}
|
||||
break;
|
||||
@@ -287,7 +288,7 @@ void CApplicationMessenger::ProcessMessage(ThreadMessage *pMsg)
|
||||
case TMSG_RESTART:
|
||||
case TMSG_RESET:
|
||||
{
|
||||
- g_application.Stop(EXITCODE_REBOOT);
|
||||
+ g_application.SetExitCode(EXITCODE_REBOOT);
|
||||
g_powerManager.Reboot();
|
||||
}
|
||||
break;
|
||||
@@ -295,6 +296,7 @@ void CApplicationMessenger::ProcessMessage(ThreadMessage *pMsg)
|
||||
case TMSG_RESTARTAPP:
|
||||
{
|
||||
#if defined(TARGET_WINDOWS) || defined(TARGET_LINUX)
|
||||
+ g_application.SetExitCode(EXITCODE_RESTARTAPP);
|
||||
g_application.Stop(EXITCODE_RESTARTAPP);
|
||||
#endif
|
||||
}
|
||||
diff --git a/xbmc/XBApplicationEx.cpp b/xbmc/XBApplicationEx.cpp
|
||||
index ad6a145..6058938 100644
|
||||
--- a/xbmc/XBApplicationEx.cpp
|
||||
+++ b/xbmc/XBApplicationEx.cpp
|
||||
@@ -40,6 +40,7 @@ CXBApplicationEx::CXBApplicationEx()
|
||||
m_bStop = false;
|
||||
m_AppFocused = true;
|
||||
m_ExitCode = EXITCODE_QUIT;
|
||||
+ m_ExitCodeSet = false;
|
||||
m_renderGUI = false;
|
||||
}
|
||||
|
||||
diff --git a/xbmc/XBApplicationEx.h b/xbmc/XBApplicationEx.h
|
||||
index c46cba1..ed3f35f 100644
|
||||
--- a/xbmc/XBApplicationEx.h
|
||||
+++ b/xbmc/XBApplicationEx.h
|
||||
@@ -40,6 +40,7 @@ public:
|
||||
// Variables for timing
|
||||
bool m_bStop;
|
||||
int m_ExitCode;
|
||||
+ bool m_ExitCodeSet;
|
||||
bool m_AppFocused;
|
||||
bool m_renderGUI;
|
||||
|
||||
diff --git a/xbmc/main/main.cpp b/xbmc/main/main.cpp
|
||||
index ec86426..ad8fe6e 100644
|
||||
--- a/xbmc/main/main.cpp
|
||||
+++ b/xbmc/main/main.cpp
|
||||
@@ -40,9 +40,24 @@
|
||||
#include "input/linux/LIRC.h"
|
||||
#endif
|
||||
#include "XbmcContext.h"
|
||||
+#include "Application.h"
|
||||
+
|
||||
+void xbmc_term_handler(int signum)
|
||||
+{
|
||||
+ CLog::Log(LOGINFO, "Received SIGTERM...");
|
||||
+ if (!g_application.m_ExitCodeSet)
|
||||
+ g_application.SetExitCode(EXITCODE_RESTARTAPP);
|
||||
+ g_application.Stop(EXITCODE_RESTARTAPP);
|
||||
+}
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
+ // SIGTERM handler
|
||||
+ struct sigaction action;
|
||||
+ memset(&action, 0, sizeof(struct sigaction));
|
||||
+ action.sa_handler = xbmc_term_handler;
|
||||
+ sigaction(SIGTERM, &action, NULL);
|
||||
+
|
||||
// set up some xbmc specific relationships
|
||||
XBMC::Context context;
|
||||
|
||||
--
|
||||
1.9.1
|
||||
|
||||
236
packages/mediacenter/xbmc/patches/xbmc-999.91.02-PR4838.patch
Normal file
236
packages/mediacenter/xbmc/patches/xbmc-999.91.02-PR4838.patch
Normal file
@@ -0,0 +1,236 @@
|
||||
From 856d88d87f27370e8471963790db4e4e7c4ba910 Mon Sep 17 00:00:00 2001
|
||||
From: Matthias Kortstiege <vdrfan@xbmc.org>
|
||||
Date: Fri, 30 May 2014 15:57:25 +0200
|
||||
Subject: [PATCH] added: CPosixDirectory implementation
|
||||
|
||||
---
|
||||
XBMC.xcodeproj/project.pbxproj | 18 +++++
|
||||
xbmc/filesystem/DirectoryFactory.cpp | 7 ++
|
||||
xbmc/filesystem/Makefile.in | 1 +
|
||||
xbmc/filesystem/posix/PosixDirectory.cpp | 130 +++++++++++++++++++++++++++++++
|
||||
xbmc/filesystem/posix/PosixDirectory.h | 37 +++++++++
|
||||
5 files changed, 193 insertions(+)
|
||||
create mode 100644 xbmc/filesystem/posix/PosixDirectory.cpp
|
||||
create mode 100644 xbmc/filesystem/posix/PosixDirectory.h
|
||||
|
||||
diff --git a/xbmc/filesystem/DirectoryFactory.cpp b/xbmc/filesystem/DirectoryFactory.cpp
|
||||
index 260d53c..dc39a93 100644
|
||||
--- a/xbmc/filesystem/DirectoryFactory.cpp
|
||||
+++ b/xbmc/filesystem/DirectoryFactory.cpp
|
||||
@@ -46,6 +46,9 @@
|
||||
#include "utils/log.h"
|
||||
#include "network/WakeOnAccess.h"
|
||||
|
||||
+#ifdef TARGET_POSIX
|
||||
+#include "posix/PosixDirectory.h"
|
||||
+#endif
|
||||
#ifdef HAS_FILESYSTEM_SMB
|
||||
#ifdef TARGET_WINDOWS
|
||||
#include "windows/WINSMBDirectory.h"
|
||||
@@ -135,7 +138,11 @@ IDirectory* CDirectoryFactory::Create(const CStdString& strPath)
|
||||
|
||||
CStdString strProtocol = url.GetProtocol();
|
||||
|
||||
+#ifdef TARGET_POSIX
|
||||
+ if (strProtocol.size() == 0 || strProtocol == "file") return new CPosixDirectory();
|
||||
+#else
|
||||
if (strProtocol.size() == 0 || strProtocol == "file") return new CHDDirectory();
|
||||
+#endif
|
||||
if (strProtocol == "special") return new CSpecialProtocolDirectory();
|
||||
if (strProtocol == "sources") return new CSourcesDirectory();
|
||||
if (strProtocol == "addons") return new CAddonsDirectory();
|
||||
diff --git a/xbmc/filesystem/Makefile.in b/xbmc/filesystem/Makefile.in
|
||||
index 623bbb8..725951e 100644
|
||||
--- a/xbmc/filesystem/Makefile.in
|
||||
+++ b/xbmc/filesystem/Makefile.in
|
||||
@@ -57,6 +57,7 @@ SRCS += PlaylistFileDirectory.cpp
|
||||
SRCS += PipeFile.cpp
|
||||
SRCS += PipesManager.cpp
|
||||
SRCS += PluginDirectory.cpp
|
||||
+SRCS += posix/PosixDirectory.cpp
|
||||
SRCS += PVRFile.cpp
|
||||
SRCS += PVRDirectory.cpp
|
||||
SRCS += RSSDirectory.cpp
|
||||
diff --git a/xbmc/filesystem/posix/PosixDirectory.cpp b/xbmc/filesystem/posix/PosixDirectory.cpp
|
||||
new file mode 100644
|
||||
index 0000000..e60c6f9
|
||||
--- /dev/null
|
||||
+++ b/xbmc/filesystem/posix/PosixDirectory.cpp
|
||||
@@ -0,0 +1,131 @@
|
||||
+/*
|
||||
+ * Copyright (C) 2014 Team XBMC
|
||||
+ * http://xbmc.org
|
||||
+ *
|
||||
+ * This Program 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, or (at your option)
|
||||
+ * any later version.
|
||||
+ *
|
||||
+ * This Program 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 XBMC; see the file COPYING. If not, see
|
||||
+ * <http://www.gnu.org/licenses/>.
|
||||
+ *
|
||||
+ */
|
||||
+
|
||||
+#if defined(TARGET_POSIX)
|
||||
+
|
||||
+#include "PosixDirectory.h"
|
||||
+#include "utils/StringUtils.h"
|
||||
+#include "utils/URIUtils.h"
|
||||
+#include "FileItem.h"
|
||||
+#include "XTimeUtils.h"
|
||||
+
|
||||
+#include <dirent.h>
|
||||
+#include <sys/stat.h>
|
||||
+
|
||||
+using namespace std;
|
||||
+using namespace XFILE;
|
||||
+
|
||||
+CPosixDirectory::CPosixDirectory(void)
|
||||
+{}
|
||||
+
|
||||
+CPosixDirectory::~CPosixDirectory(void)
|
||||
+{}
|
||||
+
|
||||
+bool CPosixDirectory::GetDirectory(const CStdString& strPath, CFileItemList &items)
|
||||
+{
|
||||
+ const char* root = strPath;
|
||||
+ struct dirent* entry;
|
||||
+ DIR *dir = opendir(root);
|
||||
+
|
||||
+ if (!dir)
|
||||
+ return false;
|
||||
+
|
||||
+ while ((entry = readdir(dir)) != NULL)
|
||||
+ {
|
||||
+ if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0)
|
||||
+ continue;
|
||||
+
|
||||
+ CFileItemPtr pItem(new CFileItem(entry->d_name));
|
||||
+ std::string itemPath(URIUtils::AddFileToFolder(root, entry->d_name));
|
||||
+
|
||||
+ bool bStat = false;
|
||||
+ struct stat buffer;
|
||||
+
|
||||
+ // Unix-based readdir implementations may return an incorrect dirent.d_ino value that
|
||||
+ // is not equal to the (correct) stat() obtained one. In this case the file type
|
||||
+ // could not be determined and the value of dirent.d_type is set to DT_UNKNOWN.
|
||||
+ // In order to get a correct value we have to incur the cost of calling stat.
|
||||
+ if (entry->d_type == DT_UNKNOWN || entry->d_type == DT_LNK)
|
||||
+ {
|
||||
+ if (stat(itemPath.c_str(), &buffer) == 0)
|
||||
+ bStat = true;
|
||||
+ }
|
||||
+
|
||||
+ if (entry->d_type == DT_DIR || (bStat && buffer.st_mode & S_IFDIR))
|
||||
+ {
|
||||
+ pItem->m_bIsFolder = true;
|
||||
+ URIUtils::AddSlashAtEnd(itemPath);
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ pItem->m_bIsFolder = false;
|
||||
+ }
|
||||
+
|
||||
+ if (StringUtils::StartsWith(entry->d_name, "."))
|
||||
+ pItem->SetProperty("file:hidden", true);
|
||||
+
|
||||
+ pItem->SetPath(itemPath);
|
||||
+
|
||||
+ if (!(m_flags & DIR_FLAG_NO_FILE_INFO))
|
||||
+ {
|
||||
+ if (bStat || stat(pItem->GetPath(), &buffer) == 0)
|
||||
+ {
|
||||
+ FILETIME fileTime, localTime;
|
||||
+ TimeTToFileTime(buffer.st_mtime, &fileTime);
|
||||
+ FileTimeToLocalFileTime(&fileTime, &localTime);
|
||||
+ pItem->m_dateTime = localTime;
|
||||
+
|
||||
+ if (!pItem->m_bIsFolder)
|
||||
+ pItem->m_dwSize = buffer.st_size;
|
||||
+ }
|
||||
+ }
|
||||
+ items.Add(pItem);
|
||||
+ }
|
||||
+ closedir(dir);
|
||||
+ return true;
|
||||
+}
|
||||
+
|
||||
+bool CPosixDirectory::Create(const char* strPath)
|
||||
+{
|
||||
+ if (!strPath || !*strPath)
|
||||
+ return false;
|
||||
+
|
||||
+ return (mkdir(strPath, 0755) == 0 || errno == EEXIST);
|
||||
+}
|
||||
+
|
||||
+bool CPosixDirectory::Remove(const char* strPath)
|
||||
+{
|
||||
+ if (!strPath || !*strPath)
|
||||
+ return false;
|
||||
+
|
||||
+ return (rmdir(strPath) == 0);
|
||||
+}
|
||||
+
|
||||
+bool CPosixDirectory::Exists(const char* strPath)
|
||||
+{
|
||||
+ if (!strPath || !*strPath)
|
||||
+ return false;
|
||||
+
|
||||
+ struct stat buffer;
|
||||
+ if (stat(strPath, &buffer) != 0)
|
||||
+ return false;
|
||||
+ return S_ISDIR(buffer.st_mode) ? true : false;
|
||||
+}
|
||||
+#endif
|
||||
diff --git a/xbmc/filesystem/posix/PosixDirectory.h b/xbmc/filesystem/posix/PosixDirectory.h
|
||||
new file mode 100644
|
||||
index 0000000..a3fd01e
|
||||
--- /dev/null
|
||||
+++ b/xbmc/filesystem/posix/PosixDirectory.h
|
||||
@@ -0,0 +1,37 @@
|
||||
+#pragma once
|
||||
+/*
|
||||
+ * Copyright (C) 2014 Team XBMC
|
||||
+ * http://xbmc.org
|
||||
+ *
|
||||
+ * This Program 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, or (at your option)
|
||||
+ * any later version.
|
||||
+ *
|
||||
+ * This Program 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 XBMC; see the file COPYING. If not, see
|
||||
+ * <http://www.gnu.org/licenses/>.
|
||||
+ *
|
||||
+ */
|
||||
+
|
||||
+#include "filesystem/IDirectory.h"
|
||||
+
|
||||
+namespace XFILE
|
||||
+{
|
||||
+
|
||||
+class CPosixDirectory : public IDirectory
|
||||
+{
|
||||
+public:
|
||||
+ CPosixDirectory(void);
|
||||
+ virtual ~CPosixDirectory(void);
|
||||
+ virtual bool GetDirectory(const CStdString& strPath, CFileItemList &items);
|
||||
+ virtual bool Create(const char* strPath);
|
||||
+ virtual bool Exists(const char* strPath);
|
||||
+ virtual bool Remove(const char* strPath);
|
||||
+};
|
||||
+}
|
||||
--
|
||||
1.9.3
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user