diff --git a/packages/graphics/bcm2835-driver/package.mk b/packages/graphics/bcm2835-driver/package.mk index 52972739b9..6aa4c68a41 100644 --- a/packages/graphics/bcm2835-driver/package.mk +++ b/packages/graphics/bcm2835-driver/package.mk @@ -3,8 +3,8 @@ # Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv) PKG_NAME="bcm2835-driver" -PKG_VERSION="165bd7bc5622ee1c721aa5da9af68935075abedd" -PKG_SHA256="8d8a810c2c45c80720c2dd74bd9c75fb2c08a9e8f01a3581ada8e13727708834" +PKG_VERSION="48606ad5e152227db4a26459fc2ba7944b6597a3" +PKG_SHA256="1c7ba776f3c81f706c7dceed2e83d90962e44e9287a13697cfc620518804d990" PKG_LICENSE="nonfree" PKG_SITE="http://www.broadcom.com" PKG_URL="${DISTRO_SRC}/${PKG_NAME}-${PKG_VERSION}.tar.xz" diff --git a/packages/linux/package.mk b/packages/linux/package.mk index ec8cbfdd2c..efd47baaab 100644 --- a/packages/linux/package.mk +++ b/packages/linux/package.mk @@ -22,8 +22,8 @@ case "${LINUX}" in PKG_SOURCE_NAME="linux-${LINUX}-${PKG_VERSION}.tar.gz" ;; raspberrypi) - PKG_VERSION="e13d4e98076f3698cfd03186159e652f5721a241" # 5.10.90 - PKG_SHA256="939ce936b1ac22afcf64940e84c20cfaaedf45291f0ebac2fc4fd742d238016f" + PKG_VERSION="b0272c695e99a8dcc3a01298db56361333f1fdcf" # 5.10.95 + PKG_SHA256="e545db3c1064318c76477436589d3d36041389bae254bcf050022807b0822086" PKG_URL="https://github.com/raspberrypi/linux/archive/${PKG_VERSION}.tar.gz" PKG_SOURCE_NAME="linux-${LINUX}-${PKG_VERSION}.tar.gz" ;; diff --git a/packages/linux/patches/raspberrypi/linux-001-test-delay-cec_phys_addr_invalidate.patch b/packages/linux/patches/raspberrypi/linux-001-test-delay-cec_phys_addr_invalidate.patch new file mode 100644 index 0000000000..3abacb3ac5 --- /dev/null +++ b/packages/linux/patches/raspberrypi/linux-001-test-delay-cec_phys_addr_invalidate.patch @@ -0,0 +1,87 @@ +From b5c047738ca72ac345820a4573b576a466584234 Mon Sep 17 00:00:00 2001 +From: Dom Cobley +Date: Thu, 20 Jan 2022 18:09:18 +0000 +Subject: [PATCH] drm/vc4:hdmi: Delay cec_phys_addr_invalidate + +Wait briefly before generating the cec_phys_addr_invalidate, +and skip it if it's immediately followed by a valid one. + +This avoids the confusion of TV generating a powered up event +and libcec generating an active source message which swicthes +everything back on after a power off. + +See: +https://forum.libreelec.tv/thread/24783-tv-avr-turns-back-on-right-after-turning-them-off +Signed-off-by: Dom Cobley +--- + drivers/gpu/drm/vc4/vc4_hdmi.c | 16 +++++++++++++++- + drivers/gpu/drm/vc4/vc4_hdmi.h | 1 + + 2 files changed, 16 insertions(+), 1 deletion(-) + +diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c +index d71cd43785053..7f68faedba669 100644 +--- a/drivers/gpu/drm/vc4/vc4_hdmi.c ++++ b/drivers/gpu/drm/vc4/vc4_hdmi.c +@@ -224,6 +224,8 @@ static void vc4_hdmi_cec_update_clk_div(struct vc4_hdmi *vc4_hdmi) {} + + static void vc4_hdmi_enable_scrambling(struct drm_encoder *encoder); + ++#define CEC_POLLING_DELAY_MS 1000 ++ + static enum drm_connector_status + vc4_hdmi_connector_detect(struct drm_connector *connector, bool force) + { +@@ -250,6 +252,8 @@ vc4_hdmi_connector_detect(struct drm_connector *connector, bool force) + struct edid *edid = drm_get_edid(connector, vc4_hdmi->ddc); + + if (edid) { ++ if (delayed_work_pending(&vc4_hdmi->cec_work)) ++ cancel_delayed_work_sync(&vc4_hdmi->cec_work); + cec_s_phys_addr_from_edid(vc4_hdmi->cec_adap, edid); + vc4_hdmi->encoder.hdmi_monitor = drm_detect_hdmi_monitor(edid); + kfree(edid); +@@ -266,7 +270,8 @@ vc4_hdmi_connector_detect(struct drm_connector *connector, bool force) + + vc4_hdmi->encoder.hdmi_monitor = false; + +- cec_phys_addr_invalidate(vc4_hdmi->cec_adap); ++ queue_delayed_work(system_wq, &vc4_hdmi->cec_work, ++ msecs_to_jiffies(CEC_POLLING_DELAY_MS)); + + out: + pm_runtime_put(&vc4_hdmi->pdev->dev); +@@ -751,6 +756,14 @@ static void vc4_hdmi_scrambling_wq(struct work_struct *work) + msecs_to_jiffies(SCRAMBLING_POLLING_DELAY_MS)); + } + ++static void vc4_hdmi_cec_wq(struct work_struct *work) ++{ ++ struct vc4_hdmi *vc4_hdmi = container_of(to_delayed_work(work), ++ struct vc4_hdmi, ++ cec_work); ++ cec_phys_addr_invalidate(vc4_hdmi->cec_adap); ++} ++ + static void vc4_hdmi_encoder_post_crtc_disable(struct drm_encoder *encoder, + struct drm_atomic_state *state) + { +@@ -2956,6 +2969,7 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data) + mutex_init(&vc4_hdmi->mutex); + spin_lock_init(&vc4_hdmi->hw_lock); + INIT_DELAYED_WORK(&vc4_hdmi->scrambling_work, vc4_hdmi_scrambling_wq); ++ INIT_DELAYED_WORK(&vc4_hdmi->cec_work, vc4_hdmi_cec_wq); + + dev_set_drvdata(dev, vc4_hdmi); + encoder = &vc4_hdmi->encoder.base.base; +diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.h b/drivers/gpu/drm/vc4/vc4_hdmi.h +index 3dd0d2a53a445..2125633f72e3d 100644 +--- a/drivers/gpu/drm/vc4/vc4_hdmi.h ++++ b/drivers/gpu/drm/vc4/vc4_hdmi.h +@@ -141,6 +141,7 @@ struct vc4_hdmi { + struct drm_connector connector; + + struct delayed_work scrambling_work; ++ struct delayed_work cec_work; + + struct i2c_adapter *ddc; + void __iomem *hdmicore_regs; diff --git a/packages/tools/bcm2835-bootloader/package.mk b/packages/tools/bcm2835-bootloader/package.mk index 388cecab22..be40baea52 100644 --- a/packages/tools/bcm2835-bootloader/package.mk +++ b/packages/tools/bcm2835-bootloader/package.mk @@ -3,8 +3,8 @@ # Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv) PKG_NAME="bcm2835-bootloader" -PKG_VERSION="165bd7bc5622ee1c721aa5da9af68935075abedd" -PKG_SHA256="5bce9d3659b618dca74c33aae0ed4472331d386c1070880ec39e492238ede6d2" +PKG_VERSION="48606ad5e152227db4a26459fc2ba7944b6597a3" +PKG_SHA256="d4313f2bc9505bea9e4ac73dd2469472dfbbee2bbf42b2be2b5b2a46e62c04a2" PKG_ARCH="arm aarch64" PKG_LICENSE="nonfree" PKG_SITE="http://www.broadcom.com" diff --git a/packages/tools/rpi-eeprom/package.mk b/packages/tools/rpi-eeprom/package.mk index ebaa96d2ec..50664e63e9 100644 --- a/packages/tools/rpi-eeprom/package.mk +++ b/packages/tools/rpi-eeprom/package.mk @@ -2,8 +2,8 @@ # Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv) PKG_NAME="rpi-eeprom" -PKG_VERSION="9ca0e123e67d6b46cf021deb5fe400f27249e858" -PKG_SHA256="e42fffdfb155f74b51a93eec6cd575bd1ffdf3c3e7b3909ff7b641cbf287f2d5" +PKG_VERSION="9652be22713e926514e17a7b6068e07b7746a547" +PKG_SHA256="26f98caf0c42e91f99b60a1c0eebb8751f565f02358a53c494171ba934b68bb5" PKG_ARCH="arm" PKG_LICENSE="BSD-3/custom" PKG_SITE="https://github.com/raspberrypi/rpi-eeprom"