imx6: update kodi, libcec and linux 3.14 patches

This commit is contained in:
Peter Vicman 2016-12-04 17:31:18 +01:00
parent 170604fbcc
commit 27c38bd87c
7 changed files with 4643 additions and 425 deletions

View File

@ -1,6 +1,6 @@
https://github.com/OpenBricks/openbricks/tree/krypton-glibc
https://github.com/OpenBricks/openbricks/tree/krypton-glibc/packages/multimedia/kodi/patches
https://github.com/OpenBricks/openbricks/tree/32da31689ba04a94d1a08bfc04f69d6c1a3c848a/packages/multimedia/kodi/patches
https://github.com/OpenBricks/openbricks/tree/731d2788a4f5924cdf80314709dc303a43b5c3f5/packages/multimedia/kodi/patches
==============================================================
file 0010-IMX-add-Supports-ERENDERFEATURE.patch
@ -3201,12 +3201,77 @@ index 2168e00..22b34d7 100644
==============================================================
file 0050-Change-mediainfo-logging.patch
file 0042-Honour-forced-aspect-ratio-hint.patch
==============================================================
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp 2016-10-02 11:49:42.415297936 +0200
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp 2016-10-02 11:50:57.875301018 +0200
@@ -504,8 +504,6 @@
From 8542fadfce7bfa1c7691403029a81682c389c8c2 Mon Sep 17 00:00:00 2001
From: Rudi <r.ihle@s-t.de>
Date: Mon, 3 Oct 2016 18:08:34 +0200
Subject: [PATCH] Honour forced aspect ratio hint
---
xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp | 6 +++++-
xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.h | 1 +
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp
index 74f4ae4..155710a 100644
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp
@@ -544,6 +544,8 @@ bool CIMXCodec::Open(CDVDStreamInfo &hints, CDVDCodecOptions &options, std::stri
#endif
m_warnOnce = true;
+ m_forcedWidthHeightRatio = m_hints.forced_aspect ? (65536 * m_hints.aspect) : 0;
+
switch(m_hints.codec)
{
case AV_CODEC_ID_MPEG1VIDEO:
@@ -1155,7 +1157,9 @@ bool CIMXCodec::GetPicture(DVDVideoPicture* pDvdVideoPicture)
pDvdVideoPicture->iWidth = pIMXBuffer->GetPictureWidth();
pDvdVideoPicture->iHeight = pIMXBuffer->GetPictureHeight();
- pDvdVideoPicture->iDisplayWidth = ((pDvdVideoPicture->iWidth * pIMXBuffer->GetWidthHeightRatio()) + 32767) >> 16;
+ int ratio = m_forcedWidthHeightRatio ? m_forcedWidthHeightRatio : pIMXBuffer->GetWidthHeightRatio();
+
+ pDvdVideoPicture->iDisplayWidth = ((pDvdVideoPicture->iWidth * ratio) + 32767) >> 16;
pDvdVideoPicture->iDisplayHeight = pDvdVideoPicture->iHeight;
pDvdVideoPicture->pts = pIMXBuffer->GetPts();
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.h b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.h
index 22b34d7..b91cdc2 100644
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.h
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.h
@@ -386,6 +386,7 @@ protected:
int m_speed;
CCriticalSection m_signalLock;
CCriticalSection m_queuesLock;
+ int m_forcedWidthHeightRatio;
#ifdef DUMP_STREAM
FILE *m_dump;
#endif
--
1.9.1
==============================================================
file 0043-Cleanup-mediainfo-logging.patch
==============================================================
From 5a26b1e3d341dd2591f6315f9fc97b5677105bf8 Mon Sep 17 00:00:00 2001
From: Rudi <r.ihle@s-t.de>
Date: Mon, 3 Oct 2016 18:11:31 +0200
Subject: [PATCH] Cleanup mediainfo logging
---
.../DVDCodecs/Video/DVDVideoCodecIMX.cpp | 52 +++++++++++-----------
1 file changed, 26 insertions(+), 26 deletions(-)
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp
index 155710a..3dc63d5 100644
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp
@@ -504,8 +504,6 @@ bool CIMXCodec::Open(CDVDStreamInfo &hints, CDVDCodecOptions &options, std::stri
}
m_hints = hints;
@ -3215,7 +3280,7 @@ file 0050-Change-mediainfo-logging.patch
int param = 0;
SetVPUParams(VPU_DEC_CONF_INPUTTYPE, &param);
@@ -514,32 +512,31 @@
@@ -514,32 +512,31 @@ bool CIMXCodec::Open(CDVDStreamInfo &hints, CDVDCodecOptions &options, std::stri
#ifdef MEDIAINFO
if (g_advancedSettings.CanLogComponent(LOGVIDEO))
{
@ -3271,7 +3336,7 @@ file 0050-Change-mediainfo-logging.patch
}
#endif
@@ -624,6 +621,9 @@
@@ -626,6 +623,9 @@ bool CIMXCodec::Open(CDVDStreamInfo &hints, CDVDCodecOptions &options, std::stri
return false;
}
@ -3281,6 +3346,75 @@ file 0050-Change-mediainfo-logging.patch
std::list<EINTERLACEMETHOD> deintMethods({ EINTERLACEMETHOD::VS_INTERLACEMETHOD_AUTO,
EINTERLACEMETHOD::VS_INTERLACEMETHOD_RENDER_BOB });
--
1.9.1
==============================================================
file 0044-CodecIMX-fix-a-xvid-type-media-playback-starting-wit.patch
==============================================================
From 451b97280d92fe1eedd78a5f06ec8b5bad6ae28c Mon Sep 17 00:00:00 2001
From: Matus Kral <matuskral@me.com>
Date: Sat, 8 Oct 2016 17:23:32 +0200
Subject: [PATCH] [CodecIMX] fix a xvid-type media playback - starting with
green screen
---
xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp
index 3dc63d5..5e0abd5 100644
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp
@@ -977,7 +977,7 @@ void CIMXCodec::Process()
m_decInput.setquotasize(m_fps);
bool getFrame = m_decOpenParam.CodecFormat != VPU_V_AVC || !m_converter;
- getFrame &= m_decOpenParam.CodecFormat != VPU_V_MPEG2;
+ getFrame &= m_decOpenParam.CodecFormat != VPU_V_MPEG2 && m_decOpenParam.CodecFormat != VPU_V_XVID;
if (getFrame || m_decRet & VPU_DEC_RESOLUTION_CHANGED)
{
SetDrainMode((VpuDecInputType)IN_DECODER_SET);
--
1.9.1
==============================================================
file 0045-Partly-undo-d6f6155a060e0a5b94e3257f7c5d75fa1a8be321.patch
==============================================================
From 99f481ea2c64ada525e135957be4b50751ca3a09 Mon Sep 17 00:00:00 2001
From: Rudi <r.ihle@s-t.de>
Date: Thu, 13 Oct 2016 20:49:02 +0200
Subject: [PATCH] Partly undo d6f6155a060e0a5b94e3257f7c5d75fa1a8be321
---
xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp | 7 -------
1 file changed, 7 deletions(-)
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp
index 5e0abd5..4fefc27 100644
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp
@@ -393,13 +393,6 @@ bool CIMXCodec::VpuAllocFrameBuffers()
#endif
vpuFrameBuffer.pbufVirtMvCol = ptrVirt + ySize + uSize + vSize;
- if (i < 2)
- {
- memset(vpuFrameBuffer.pbufVirtY, 16, ySize);
- memset(vpuFrameBuffer.pbufVirtCb, 128, uSize + vSize);
- memset(vpuFrameBuffer.pbufVirtMvCol, 0, mvSize);
- }
-
m_vpuFrameBuffers.push_back(vpuFrameBuffer);
}
--
1.9.1
==============================================================
file 400-Boost-Center-Audio-Channel-on-Downmixing.patch
@ -3367,43 +3501,6 @@ index e4ddf9e..34d0152 100644
if (remapLayout)
{
==============================================================
file 52-imx-enable-forced-aspect-ratio.patch
==============================================================
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.h 2016-08-15 21:22:26.222137237 +0200
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.h 2016-08-15 21:22:26.246137238 +0200
@@ -385,6 +385,7 @@
int m_speed;
CCriticalSection m_signalLock;
CCriticalSection m_queuesLock;
+ int m_forcedWidthDivHeightRatio;
#ifdef DUMP_STREAM
FILE *m_dump;
#endif
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp 2016-08-15 21:27:17.166149119 +0200
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp 2016-08-15 21:27:17.190149120 +0200
@@ -541,6 +541,8 @@
#endif
m_warnOnce = true;
+ m_forcedWidthDivHeightRatio = m_hints.forced_aspect ? (65536 * m_hints.aspect) : 0;
+
switch(m_hints.codec)
{
case AV_CODEC_ID_MPEG1VIDEO:
@@ -1154,7 +1156,9 @@
pDvdVideoPicture->iWidth = pIMXBuffer->GetPictureWidth();
pDvdVideoPicture->iHeight = pIMXBuffer->GetPictureHeight();
- pDvdVideoPicture->iDisplayWidth = ((pDvdVideoPicture->iWidth * pIMXBuffer->GetWidthHeightRatio()) + 32767) >> 16;
+ int ratio = m_forcedWidthDivHeightRatio ? m_forcedWidthDivHeightRatio : pIMXBuffer->GetWidthHeightRatio();
+
+ pDvdVideoPicture->iDisplayWidth = ((pDvdVideoPicture->iWidth * ratio) + 32767) >> 16;
pDvdVideoPicture->iDisplayHeight = pDvdVideoPicture->iHeight;
pDvdVideoPicture->pts = pIMXBuffer->GetPts();
==============================================================
file 53-imx-fix-edid-readout.patch
==============================================================
@ -3515,7 +3612,7 @@ file 55-cec-power-button.diff
--- a/xbmc/peripherals/devices/PeripheralCecAdapter.cpp 2015-10-17 10:00:03.704969969 +0200
+++ b/xbmc/peripherals/devices/PeripheralCecAdapter.cpp 2015-10-17 10:00:03.724969970 +0200
@@ -908,8 +908,14 @@
@@ -935,8 +935,14 @@
case CEC_USER_CONTROL_CODE_POWER:
case CEC_USER_CONTROL_CODE_POWER_TOGGLE_FUNCTION:
case CEC_USER_CONTROL_CODE_POWER_OFF_FUNCTION:
@ -3527,7 +3624,7 @@ file 55-cec-power-button.diff
+ cec_command command;
+ command.opcode = CEC_OPCODE_STANDBY;
+ command.initiator = CECDEVICE_TV;
+ CecCommand(this, command);
+ CecCommand(this, &command);
+ }
break;
case CEC_USER_CONTROL_CODE_VOLUME_UP:
@ -3674,7 +3771,7 @@ file 65-fix-cec-dialog-text.diff
--- a/addons/resource.language.en_gb/resources/strings.po 2016-08-06 13:03:04.169879835 +0200
+++ b/addons/resource.language.en_gb/resources/strings.po 2016-08-06 13:03:04.197879836 +0200
@@ -16235,7 +16235,7 @@
@@ -16416,7 +16416,7 @@
#: system/peripherals.xml
msgctxt "#36026"

View File

@ -1,3 +1,5 @@
disable standby
--- a/xbmc/powermanagement/linux/LogindUPowerSyscall.cpp 2016-10-07 09:41:03.067310207 +0200
+++ b/xbmc/powermanagement/linux/LogindUPowerSyscall.cpp 2016-10-07 09:41:27.658371366 +0200
@@ -52,8 +52,8 @@ CLogindUPowerSyscall::CLogindUPowerSysca
@ -25,90 +27,44 @@
#endif
From aa2b510f1ab61c8989fe41f23c2704facb962d50 Mon Sep 17 00:00:00 2001
From: Matus Kral <matuskral@me.com>
Date: Sat, 28 Mar 2015 23:30:03 +0100
Subject: [PATCH] Add CEC IMX adapter as known type and set no polling. - that
eliminates extensive periodic /sys walkthrough
From e0c980535b164d7c28555418e5ce2252dbada2dc Mon Sep 17 00:00:00 2001
From: Peter Vicman <peter.vicman@gmail.com>
Date: Thu, 10 Nov 2016 17:05:11 +0100
Subject: [PATCH] fix freeze on lvds display connected to udoo quad
Upstream-commit: f7ba60b4e94091a007fd656bc0084b600a12eb17
---
xbmc/peripherals/PeripheralTypes.h | 6 ++++++
xbmc/peripherals/bus/virtual/PeripheralBusCEC.cpp | 4 ++++
2 files changed, 10 insertions(+)
diff --git a/xbmc/peripherals/PeripheralTypes.h b/xbmc/peripherals/PeripheralTypes.h
index 565de4b..e2f2805 100644
--- a/xbmc/peripherals/PeripheralTypes.h
+++ b/xbmc/peripherals/PeripheralTypes.h
@@ -40,11 +40,13 @@ namespace PERIPHERALS
PERIPHERAL_BUS_USB,
PERIPHERAL_BUS_PCI,
PERIPHERAL_BUS_RPI,
+ PERIPHERAL_BUS_IMX,
PERIPHERAL_BUS_CEC,
PERIPHERAL_BUS_ADDON,
#ifdef TARGET_ANDROID
PERIPHERAL_BUS_ANDROID,
#endif
+ //PERIPHERAL_BUS_CEC
};
enum PeripheralFeature
@@ -169,6 +171,8 @@ namespace PERIPHERALS
return "pci";
case PERIPHERAL_BUS_RPI:
return "rpi";
+ case PERIPHERAL_BUS_IMX:
+ return "imx";
case PERIPHERAL_BUS_CEC:
return "cec";
case PERIPHERAL_BUS_ADDON:
@@ -193,6 +197,8 @@ namespace PERIPHERALS
return PERIPHERAL_BUS_PCI;
else if (strTypeLowerCase == "rpi")
return PERIPHERAL_BUS_RPI;
+ else if (strTypeLowerCase == "imx")
+ return PERIPHERAL_BUS_IMX;
else if (strTypeLowerCase == "cec")
return PERIPHERAL_BUS_CEC;
else if (strTypeLowerCase == "addon")
diff --git a/xbmc/peripherals/bus/virtual/PeripheralBusCEC.cpp b/xbmc/peripherals/bus/virtual/PeripheralBusCEC.cpp
index b04fe00..3dc3d0e 100644
--- a/xbmc/peripherals/bus/virtual/PeripheralBusCEC.cpp
+++ b/xbmc/peripherals/bus/virtual/PeripheralBusCEC.cpp
@@ -102,6 +102,10 @@ bool CPeripheralBusCEC::PerformDeviceScan(PeripheralScanResults &results)
/** the Pi's adapter cannot be removed, no need to rescan */
m_bNeedsPolling = false;
break;
+ case ADAPTERTYPE_IMX:
+ result.m_mappedBusType = PERIPHERAL_BUS_IMX;
+ m_bNeedsPolling = false;
+ break;
default:
break;
}
From 07ae05827ef197fae42a6e849a816a38ffa3bf0d Mon Sep 17 00:00:00 2001
From: Matus Kral <matuskral@me.com>
Date: Sat, 8 Oct 2016 17:23:32 +0200
Subject: [PATCH 20/20] [CodecIMX] fix a xvid-type media playback - starting
with green screen
revert 0ff257943e032e0f4b669a65e6449ab1e1699d74
[IMXRenderer] skip rendering same frame
---
xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
.../cores/VideoPlayer/VideoRenderers/HwDecRender/RendererIMX.cpp | 8 --------
1 file changed, 8 deletions(-)
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp
index f692482..50ff805 100644
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecIMX.cpp
@@ -974,7 +974,7 @@ void CIMXCodec::Process()
m_decInput.setquotasize(m_fps);
diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererIMX.cpp b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererIMX.cpp
index 8569c72..f21fa98 100644
--- a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererIMX.cpp
+++ b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererIMX.cpp
@@ -132,7 +132,6 @@ bool CRendererIMX::RenderHook(int index)
bool CRendererIMX::RenderUpdateVideoHook(bool clear, DWORD flags, DWORD alpha)
{
- static DWORD flagsPrev;
#if 0
static unsigned long long previous = 0;
unsigned long long current = XbmcThreads::SystemClockMillis();
@@ -142,13 +141,6 @@ bool CRendererIMX::RenderUpdateVideoHook(bool clear, DWORD flags, DWORD alpha)
CDVDVideoCodecIMXBuffer *buffer = static_cast<CDVDVideoCodecIMXBuffer*>(m_buffers[m_iYV12RenderBuffer].hwDec);
if (buffer)
{
- if (buffer == m_bufHistory[0] && flagsPrev == flags)
- {
- g_IMX.WaitVsync();
- return true;
- }
-
- flagsPrev = flags;
buffer->Lock();
SAFE_RELEASE(m_bufHistory[1]);
--
2.7.1
bool getFrame = m_decOpenParam.CodecFormat != VPU_V_AVC || !m_converter;
- getFrame &= m_decOpenParam.CodecFormat != VPU_V_MPEG2;
+ getFrame &= m_decOpenParam.CodecFormat != VPU_V_MPEG2 && m_decOpenParam.CodecFormat != VPU_V_XVID;
if (getFrame || m_decRet & VPU_DEC_RESOLUTION_CHANGED)
{
SetDrainMode((VpuDecInputType)IN_DECODER_SET);

File diff suppressed because it is too large Load Diff

View File

@ -1,86 +0,0 @@
commit 7c545ae5467cca6ce537e213ecd647fcd4c3c4c0
Author: wolfgar <stephan.rafin@laposte.net>
Date: Fri Sep 12 01:42:52 2014 +0200
Remove superflous guards that could even break invocation from mxc-hdmi
diff --git a/drivers/mxc/hdmi-cec/mxc_hdmi-cec.c b/drivers/mxc/hdmi-cec/mxc_hdmi-cec.c
index e53510f..88670bd 100644
--- a/drivers/mxc/hdmi-cec/mxc_hdmi-cec.c
+++ b/drivers/mxc/hdmi-cec/mxc_hdmi-cec.c
@@ -83,8 +83,6 @@ struct hdmi_cec_event {
static LIST_HEAD(head);
-static int hdmi_cec_ready = 0;
-static int hdmi_cec_started;
static int hdmi_cec_major;
static struct class *hdmi_cec_class;
static struct hdmi_cec_priv hdmi_cec_data;
@@ -315,7 +313,7 @@ static ssize_t hdmi_cec_write(struct file *file, const char __user *buf,
mutex_unlock(&hdmi_cec_data.lock);
return -EACCES;
}
- /* Ensure that there is only one writer who is the only listener of tx_cec_queue */
+ /* Ensure that there is only one writer who is the unique listener of tx_cec_queue */
if (hdmi_cec_data.tx_answer != CEC_TX_AVAIL) {
mutex_unlock(&hdmi_cec_data.lock);
return -EBUSY;
@@ -359,13 +357,11 @@ static ssize_t hdmi_cec_write(struct file *file, const char __user *buf,
return ret;
}
+
void hdmi_cec_start_device(void)
{
u8 val;
- if (!hdmi_cec_ready || hdmi_cec_started)
- return;
-
val = hdmi_readb(HDMI_MC_CLKDIS);
val &= ~HDMI_MC_CLKDIS_CECCLK_DISABLE;
hdmi_writeb(val, HDMI_MC_CLKDIS);
@@ -378,11 +374,7 @@ void hdmi_cec_start_device(void)
hdmi_writeb(val, HDMI_CEC_MASK);
hdmi_writeb(val, HDMI_IH_MUTE_CEC_STAT0);
hdmi_cec_data.link_status = hdmi_readb(HDMI_PHY_STAT0) & 0x02;
- mutex_lock(&hdmi_cec_data.lock);
hdmi_cec_data.cec_state = true;
- mutex_unlock(&hdmi_cec_data.lock);
-
- hdmi_cec_started = 1;
}
EXPORT_SYMBOL(hdmi_cec_start_device);
@@ -390,9 +382,6 @@ void hdmi_cec_stop_device(void)
{
u8 val;
- if (!hdmi_cec_ready || !hdmi_cec_started)
- return;
-
hdmi_writeb(0x10, HDMI_CEC_CTRL);
val = HDMI_IH_CEC_STAT0_WAKEUP | HDMI_IH_CEC_STAT0_ERROR_FOLL | HDMI_IH_CEC_STAT0_ERROR_INIT | HDMI_IH_CEC_STAT0_ARB_LOST | \
HDMI_IH_CEC_STAT0_NACK | HDMI_IH_CEC_STAT0_EOM | HDMI_IH_CEC_STAT0_DONE;
@@ -402,11 +391,7 @@ void hdmi_cec_stop_device(void)
val = hdmi_readb(HDMI_MC_CLKDIS);
val |= HDMI_MC_CLKDIS_CECCLK_DISABLE;
hdmi_writeb(val, HDMI_MC_CLKDIS);
- mutex_lock(&hdmi_cec_data.lock);
hdmi_cec_data.cec_state = false;
- mutex_unlock(&hdmi_cec_data.lock);
-
- hdmi_cec_started = 0;
}
EXPORT_SYMBOL(hdmi_cec_stop_device);
@@ -580,7 +565,6 @@ static int hdmi_cec_dev_probe(struct platform_device *pdev)
INIT_DELAYED_WORK(&hdmi_cec_data.hdmi_cec_work, mxc_hdmi_cec_worker);
dev_info(&pdev->dev, "HDMI CEC initialized\n");
- hdmi_cec_ready = 1;
goto out;
err_out_class:

View File

@ -1,29 +0,0 @@
commit b6b72f40ec3b9d7faa0e37e87c3509848928746c
Author: wolfgar <stephan.rafin@laposte.net>
Date: Fri Sep 12 03:05:22 2014 +0200
Flush pending events at close
diff --git a/drivers/mxc/hdmi-cec/mxc_hdmi-cec.c b/drivers/mxc/hdmi-cec/mxc_hdmi-cec.c
index 88670bd..f8b3f7a 100644
--- a/drivers/mxc/hdmi-cec/mxc_hdmi-cec.c
+++ b/drivers/mxc/hdmi-cec/mxc_hdmi-cec.c
@@ -466,11 +466,18 @@ static long hdmi_cec_ioctl(struct file *filp, u_int cmd,
*/
static int hdmi_cec_release(struct inode *inode, struct file *filp)
{
+ struct hdmi_cec_event *event, *tmp_event;
mutex_lock(&hdmi_cec_data.lock);
if (open_count) {
open_count = 0;
hdmi_cec_data.cec_state = false;
hdmi_cec_data.Logical_address = 15;
+
+ /* Flush eventual events which have not been read by user space */
+ list_for_each_entry_safe(event, tmp_event, &head, list) {
+ list_del(&event->list);
+ vfree(event);
+ }
}
mutex_unlock(&hdmi_cec_data.lock);

View File

@ -1,166 +0,0 @@
From cb984d101b30eb7478d32df56a0023e4603cba7f Mon Sep 17 00:00:00 2001
From: Joe Perches <joe@perches.com>
Date: Thu, 25 Jun 2015 15:01:02 -0700
Subject: compiler-gcc: integrate the various compiler-gcc[345].h files
As gcc major version numbers are going to advance rather rapidly in the
future, there's no real value in separate files for each compiler
version.
Deduplicate some of the macros #defined in each file too.
Neaten comments using normal kernel commenting style.
Signed-off-by: Joe Perches <joe@perches.com>
Cc: Andi Kleen <andi@firstfloor.org>
Cc: Michal Marek <mmarek@suse.cz>
Cc: Segher Boessenkool <segher@kernel.crashing.org>
Cc: Sasha Levin <levinsasha928@gmail.com>
Cc: Anton Blanchard <anton@samba.org>
Cc: Alan Modra <amodra@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
---
include/linux/compiler-gcc.h | 120 ++++++++++++++++++++++++++++++++++++++++--
include/linux/compiler-gcc3.h | 23 --------
include/linux/compiler-gcc4.h | 91 --------------------------------
include/linux/compiler-gcc5.h | 67 -----------------------
4 files changed, 116 insertions(+), 185 deletions(-)
delete mode 100644 include/linux/compiler-gcc3.h
delete mode 100644 include/linux/compiler-gcc4.h
delete mode 100644 include/linux/compiler-gcc5.h
diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h
index 5c2c14e..dfaa7b3 100644
--- a/include/linux/compiler-gcc.h
+++ b/include/linux/compiler-gcc.h
@@ -122,10 +122,122 @@
#define __maybe_unused __attribute__((unused))
#define __always_unused __attribute__((unused))
-#define __gcc_header(x) #x
-#define _gcc_header(x) __gcc_header(linux/compiler-gcc##x.h)
-#define gcc_header(x) _gcc_header(x)
-#include gcc_header(__GNUC__)
+/* gcc version specific checks */
+
+#if GCC_VERSION < 30200
+# error Sorry, your compiler is too old - please upgrade it.
+#endif
+
+#if GCC_VERSION < 30300
+# define __used __attribute__((__unused__))
+#else
+# define __used __attribute__((__used__))
+#endif
+
+#ifdef CONFIG_GCOV_KERNEL
+# if GCC_VERSION < 30400
+# error "GCOV profiling support for gcc versions below 3.4 not included"
+# endif /* __GNUC_MINOR__ */
+#endif /* CONFIG_GCOV_KERNEL */
+
+#if GCC_VERSION >= 30400
+#define __must_check __attribute__((warn_unused_result))
+#endif
+
+#if GCC_VERSION >= 40000
+
+/* GCC 4.1.[01] miscompiles __weak */
+#ifdef __KERNEL__
+# if GCC_VERSION >= 40100 && GCC_VERSION <= 40101
+# error Your version of gcc miscompiles the __weak directive
+# endif
+#endif
+
+#define __used __attribute__((__used__))
+#define __compiler_offsetof(a, b) \
+ __builtin_offsetof(a, b)
+
+#if GCC_VERSION >= 40100 && GCC_VERSION < 40600
+# define __compiletime_object_size(obj) __builtin_object_size(obj, 0)
+#endif
+
+#if GCC_VERSION >= 40300
+/* Mark functions as cold. gcc will assume any path leading to a call
+ * to them will be unlikely. This means a lot of manual unlikely()s
+ * are unnecessary now for any paths leading to the usual suspects
+ * like BUG(), printk(), panic() etc. [but let's keep them for now for
+ * older compilers]
+ *
+ * Early snapshots of gcc 4.3 don't support this and we can't detect this
+ * in the preprocessor, but we can live with this because they're unreleased.
+ * Maketime probing would be overkill here.
+ *
+ * gcc also has a __attribute__((__hot__)) to move hot functions into
+ * a special section, but I don't see any sense in this right now in
+ * the kernel context
+ */
+#define __cold __attribute__((__cold__))
+
+#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__)
+
+#ifndef __CHECKER__
+# define __compiletime_warning(message) __attribute__((warning(message)))
+# define __compiletime_error(message) __attribute__((error(message)))
+#endif /* __CHECKER__ */
+#endif /* GCC_VERSION >= 40300 */
+
+#if GCC_VERSION >= 40500
+/*
+ * Mark a position in code as unreachable. This can be used to
+ * suppress control flow warnings after asm blocks that transfer
+ * control elsewhere.
+ *
+ * Early snapshots of gcc 4.5 don't support this and we can't detect
+ * this in the preprocessor, but we can live with this because they're
+ * unreleased. Really, we need to have autoconf for the kernel.
+ */
+#define unreachable() __builtin_unreachable()
+
+/* Mark a function definition as prohibited from being cloned. */
+#define __noclone __attribute__((__noclone__))
+
+#endif /* GCC_VERSION >= 40500 */
+
+#if GCC_VERSION >= 40600
+/*
+ * Tell the optimizer that something else uses this function or variable.
+ */
+#define __visible __attribute__((externally_visible))
+#endif
+
+/*
+ * GCC 'asm goto' miscompiles certain code sequences:
+ *
+ * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670
+ *
+ * Work it around via a compiler barrier quirk suggested by Jakub Jelinek.
+ *
+ * (asm goto is automatically volatile - the naming reflects this.)
+ */
+#define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
+
+#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP
+#if GCC_VERSION >= 40400
+#define __HAVE_BUILTIN_BSWAP32__
+#define __HAVE_BUILTIN_BSWAP64__
+#endif
+#if GCC_VERSION >= 40800 || (defined(__powerpc__) && GCC_VERSION >= 40600)
+#define __HAVE_BUILTIN_BSWAP16__
+#endif
+#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */
+
+#if GCC_VERSION >= 50000
+#define KASAN_ABI_VERSION 4
+#elif GCC_VERSION >= 40902
+#define KASAN_ABI_VERSION 3
+#endif
+
+#endif /* gcc version >= 40000 specific checks */
#if !defined(__noclone)
#define __noclone /* not needed */
--
cgit v0.12