mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-28 21:26:49 +00:00
Merge pull request #4606 from jernejsk/h264
ffmpeg, Allwinner: Update H264 request API patches
This commit is contained in:
commit
636e32e503
File diff suppressed because it is too large
Load Diff
3236
projects/Allwinner/patches/linux/0001-backport-from-5.10.patch
Normal file
3236
projects/Allwinner/patches/linux/0001-backport-from-5.10.patch
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,524 +0,0 @@
|
||||
From 3658a2b7f3e16c7053eb8d70657b94bb62c5a0f4 Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Mon, 24 Aug 2020 21:36:49 +0200
|
||||
Subject: [PATCH] ARM: dts: sun8i: r40: bananapi-m2-ultra: Fix dcdc1 regulator
|
||||
|
||||
DCDC1 regulator powers many different subsystems. While some of them can
|
||||
work at 3.0 V, some of them can not. For example, VCC-HDMI can only work
|
||||
between 3.24 V and 3.36 V. According to OS images provided by the board
|
||||
manufacturer this regulator should be set to 3.3 V.
|
||||
|
||||
Set DCDC1 and DCDC1SW to 3.3 V in order to fix this.
|
||||
|
||||
Fixes: da7ac948fa93 ("ARM: dts: sun8i: Add board dts file for Banana Pi M2 Ultra")
|
||||
Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
Link: https://lore.kernel.org/r/20200824193649.978197-1-jernej.skrabec@siol.net
|
||||
---
|
||||
arch/arm/boot/dts/sun8i-r40-bananapi-m2-ultra.dts | 10 +++++-----
|
||||
1 file changed, 5 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/arch/arm/boot/dts/sun8i-r40-bananapi-m2-ultra.dts b/arch/arm/boot/dts/sun8i-r40-bananapi-m2-ultra.dts
|
||||
index 42d62d1ba1dc..ea15073f0c79 100644
|
||||
--- a/arch/arm/boot/dts/sun8i-r40-bananapi-m2-ultra.dts
|
||||
+++ b/arch/arm/boot/dts/sun8i-r40-bananapi-m2-ultra.dts
|
||||
@@ -223,16 +223,16 @@ ®_aldo3 {
|
||||
};
|
||||
|
||||
®_dc1sw {
|
||||
- regulator-min-microvolt = <3000000>;
|
||||
- regulator-max-microvolt = <3000000>;
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
regulator-name = "vcc-gmac-phy";
|
||||
};
|
||||
|
||||
®_dcdc1 {
|
||||
regulator-always-on;
|
||||
- regulator-min-microvolt = <3000000>;
|
||||
- regulator-max-microvolt = <3000000>;
|
||||
- regulator-name = "vcc-3v0";
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ regulator-name = "vcc-3v3";
|
||||
};
|
||||
|
||||
®_dcdc2 {
|
||||
--
|
||||
2.28.0
|
||||
|
||||
From 12bb1887be9dc8ca88fccd4da4d8d9eaae561239 Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Mon, 24 Aug 2020 17:04:34 +0200
|
||||
Subject: [PATCH] ARM: dts: sun8i: r40: Add Mali node
|
||||
|
||||
R40 has Mali400 GP2 GPU. Add a node for it.
|
||||
|
||||
Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
Link: https://lore.kernel.org/r/20200824150434.951693-3-jernej.skrabec@siol.net
|
||||
---
|
||||
arch/arm/boot/dts/sun8i-r40.dtsi | 22 ++++++++++++++++++++++
|
||||
1 file changed, 22 insertions(+)
|
||||
|
||||
diff --git a/arch/arm/boot/dts/sun8i-r40.dtsi b/arch/arm/boot/dts/sun8i-r40.dtsi
|
||||
index b782041e0e04..b82031b19893 100644
|
||||
--- a/arch/arm/boot/dts/sun8i-r40.dtsi
|
||||
+++ b/arch/arm/boot/dts/sun8i-r40.dtsi
|
||||
@@ -743,6 +743,28 @@ i2c4: i2c@1c2c000 {
|
||||
#size-cells = <0>;
|
||||
};
|
||||
|
||||
+ mali: gpu@1c40000 {
|
||||
+ compatible = "allwinner,sun8i-r40-mali", "arm,mali-400";
|
||||
+ reg = <0x01c40000 0x10000>;
|
||||
+ interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>,
|
||||
+ <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>,
|
||||
+ <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>,
|
||||
+ <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>,
|
||||
+ <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>,
|
||||
+ <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>,
|
||||
+ <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ interrupt-names = "gp",
|
||||
+ "gpmmu",
|
||||
+ "pp0",
|
||||
+ "ppmmu0",
|
||||
+ "pp1",
|
||||
+ "ppmmu1",
|
||||
+ "pmu";
|
||||
+ clocks = <&ccu CLK_BUS_GPU>, <&ccu CLK_GPU>;
|
||||
+ clock-names = "bus", "core";
|
||||
+ resets = <&ccu RST_BUS_GPU>;
|
||||
+ };
|
||||
+
|
||||
gmac: ethernet@1c50000 {
|
||||
compatible = "allwinner,sun8i-r40-gmac";
|
||||
syscon = <&ccu>;
|
||||
--
|
||||
2.28.0
|
||||
|
||||
From 2933bf3528007f834fb7f5eab033f9c5b0683f91 Mon Sep 17 00:00:00 2001
|
||||
From: Qiang Yu <yuq825@gmail.com>
|
||||
Date: Sat, 22 Aug 2020 14:27:55 +0800
|
||||
Subject: [PATCH] arm64: dts: allwinner: h5: remove Mali GPU PMU module
|
||||
|
||||
H5's Mali GPU PMU is not present or working corretly although
|
||||
H5 datasheet record its interrupt vector.
|
||||
|
||||
Adding this module will miss lead lima driver try to shutdown
|
||||
it and get waiting timeout. This problem is not exposed before
|
||||
lima runtime PM support is added.
|
||||
|
||||
Fixes: bb39ed07e55b ("arm64: dts: allwinner: h5: Add device node for Mali-450 GPU")
|
||||
Signed-off-by: Qiang Yu <yuq825@gmail.com>
|
||||
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
Link: https://lore.kernel.org/r/20200822062755.534761-1-yuq825@gmail.com
|
||||
---
|
||||
arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi | 6 ++----
|
||||
1 file changed, 2 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi
|
||||
index 6735e316a39c..6c6053a18413 100644
|
||||
--- a/arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi
|
||||
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi
|
||||
@@ -139,8 +139,7 @@ mali: gpu@1e80000 {
|
||||
<GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>,
|
||||
- <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>,
|
||||
- <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-names = "gp",
|
||||
"gpmmu",
|
||||
"pp",
|
||||
@@ -151,8 +150,7 @@ mali: gpu@1e80000 {
|
||||
"pp2",
|
||||
"ppmmu2",
|
||||
"pp3",
|
||||
- "ppmmu3",
|
||||
- "pmu";
|
||||
+ "ppmmu3";
|
||||
clocks = <&ccu CLK_BUS_GPU>, <&ccu CLK_GPU>;
|
||||
clock-names = "bus", "core";
|
||||
resets = <&ccu RST_BUS_GPU>;
|
||||
--
|
||||
2.28.0
|
||||
|
||||
From a3ba99a24b36bc4eee5413a820e2c4f3d81593fa Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Tue, 25 Aug 2020 15:10:49 +0200
|
||||
Subject: [PATCH] clk: sunxi-ng: sun8i: r40: Use sigma delta modulation for
|
||||
audio PLL
|
||||
|
||||
Audio cores need specific clock rates which can't be simply obtained by
|
||||
adjusting integer multipliers and dividers. HW for such cases supports
|
||||
delta-sigma modulation which enables fractional multipliers.
|
||||
|
||||
Port H3 delta-sigma table to R40. They have identical audio PLLs.
|
||||
|
||||
Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
Link: https://lore.kernel.org/r/20200825131049.1277596-1-jernej.skrabec@siol.net
|
||||
---
|
||||
drivers/clk/sunxi-ng/ccu-sun8i-r40.c | 37 ++++++++++++++++++----------
|
||||
1 file changed, 24 insertions(+), 13 deletions(-)
|
||||
|
||||
diff --git a/drivers/clk/sunxi-ng/ccu-sun8i-r40.c b/drivers/clk/sunxi-ng/ccu-sun8i-r40.c
|
||||
index 23bfe1d12f21..84153418453f 100644
|
||||
--- a/drivers/clk/sunxi-ng/ccu-sun8i-r40.c
|
||||
+++ b/drivers/clk/sunxi-ng/ccu-sun8i-r40.c
|
||||
@@ -45,18 +45,29 @@ static struct ccu_nkmp pll_cpu_clk = {
|
||||
* the base (2x, 4x and 8x), and one variable divider (the one true
|
||||
* pll audio).
|
||||
*
|
||||
- * We don't have any need for the variable divider for now, so we just
|
||||
- * hardcode it to match with the clock names
|
||||
+ * With sigma-delta modulation for fractional-N on the audio PLL,
|
||||
+ * we have to use specific dividers. This means the variable divider
|
||||
+ * can no longer be used, as the audio codec requests the exact clock
|
||||
+ * rates we support through this mechanism. So we now hard code the
|
||||
+ * variable divider to 1. This means the clock rates will no longer
|
||||
+ * match the clock names.
|
||||
*/
|
||||
#define SUN8I_R40_PLL_AUDIO_REG 0x008
|
||||
|
||||
-static SUNXI_CCU_NM_WITH_GATE_LOCK(pll_audio_base_clk, "pll-audio-base",
|
||||
- "osc24M", 0x008,
|
||||
- 8, 7, /* N */
|
||||
- 0, 5, /* M */
|
||||
- BIT(31), /* gate */
|
||||
- BIT(28), /* lock */
|
||||
- CLK_SET_RATE_UNGATE);
|
||||
+static struct ccu_sdm_setting pll_audio_sdm_table[] = {
|
||||
+ { .rate = 22579200, .pattern = 0xc0010d84, .m = 8, .n = 7 },
|
||||
+ { .rate = 24576000, .pattern = 0xc000ac02, .m = 14, .n = 14 },
|
||||
+};
|
||||
+
|
||||
+static SUNXI_CCU_NM_WITH_SDM_GATE_LOCK(pll_audio_base_clk, "pll-audio-base",
|
||||
+ "osc24M", 0x008,
|
||||
+ 8, 7, /* N */
|
||||
+ 0, 5, /* M */
|
||||
+ pll_audio_sdm_table, BIT(24),
|
||||
+ 0x284, BIT(31),
|
||||
+ BIT(31), /* gate */
|
||||
+ BIT(28), /* lock */
|
||||
+ CLK_SET_RATE_UNGATE);
|
||||
|
||||
static SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK_MIN_MAX(pll_video0_clk, "pll-video0",
|
||||
"osc24M", 0x0010,
|
||||
@@ -952,10 +963,10 @@ static const struct clk_hw *clk_parent_pll_audio[] = {
|
||||
&pll_audio_base_clk.common.hw
|
||||
};
|
||||
|
||||
-/* We hardcode the divider to 4 for now */
|
||||
+/* We hardcode the divider to 1 for now */
|
||||
static CLK_FIXED_FACTOR_HWS(pll_audio_clk, "pll-audio",
|
||||
clk_parent_pll_audio,
|
||||
- 4, 1, CLK_SET_RATE_PARENT);
|
||||
+ 1, 1, CLK_SET_RATE_PARENT);
|
||||
static CLK_FIXED_FACTOR_HWS(pll_audio_2x_clk, "pll-audio-2x",
|
||||
clk_parent_pll_audio,
|
||||
2, 1, CLK_SET_RATE_PARENT);
|
||||
@@ -1307,10 +1318,10 @@ static int sun8i_r40_ccu_probe(struct platform_device *pdev)
|
||||
if (IS_ERR(reg))
|
||||
return PTR_ERR(reg);
|
||||
|
||||
- /* Force the PLL-Audio-1x divider to 4 */
|
||||
+ /* Force the PLL-Audio-1x divider to 1 */
|
||||
val = readl(reg + SUN8I_R40_PLL_AUDIO_REG);
|
||||
val &= ~GENMASK(19, 16);
|
||||
- writel(val | (3 << 16), reg + SUN8I_R40_PLL_AUDIO_REG);
|
||||
+ writel(val | (0 << 16), reg + SUN8I_R40_PLL_AUDIO_REG);
|
||||
|
||||
/* Force PLL-MIPI to MIPI mode */
|
||||
val = readl(reg + SUN8I_R40_PLL_MIPI_REG);
|
||||
--
|
||||
2.28.0
|
||||
|
||||
From 5822bfed6472340f882b43d5c2f2629091191c9d Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Tue, 25 Aug 2020 12:00:30 +0200
|
||||
Subject: [PATCH] ARM: dts: sun8i: r40: Add DMA node
|
||||
|
||||
Allwinner R40 SoC has DMA with 16 channels and 31 request sources.
|
||||
|
||||
Add a node for it.
|
||||
|
||||
Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
Link: https://lore.kernel.org/r/20200825100030.1145356-3-jernej.skrabec@siol.net
|
||||
---
|
||||
arch/arm/boot/dts/sun8i-r40.dtsi | 12 ++++++++++++
|
||||
1 file changed, 12 insertions(+)
|
||||
|
||||
diff --git a/arch/arm/boot/dts/sun8i-r40.dtsi b/arch/arm/boot/dts/sun8i-r40.dtsi
|
||||
index b82031b19893..d481fe7989b8 100644
|
||||
--- a/arch/arm/boot/dts/sun8i-r40.dtsi
|
||||
+++ b/arch/arm/boot/dts/sun8i-r40.dtsi
|
||||
@@ -198,6 +198,18 @@ nmi_intc: interrupt-controller@1c00030 {
|
||||
interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
+ dma: dma-controller@1c02000 {
|
||||
+ compatible = "allwinner,sun8i-r40-dma",
|
||||
+ "allwinner,sun50i-a64-dma";
|
||||
+ reg = <0x01c02000 0x1000>;
|
||||
+ interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ clocks = <&ccu CLK_BUS_DMA>;
|
||||
+ dma-channels = <16>;
|
||||
+ dma-requests = <31>;
|
||||
+ resets = <&ccu RST_BUS_DMA>;
|
||||
+ #dma-cells = <1>;
|
||||
+ };
|
||||
+
|
||||
spi0: spi@1c05000 {
|
||||
compatible = "allwinner,sun8i-r40-spi",
|
||||
"allwinner,sun8i-h3-spi";
|
||||
--
|
||||
2.28.0
|
||||
|
||||
From 166405e1f89acf7b24d95b90dbd1f78ec1ab3ec6 Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Tue, 25 Aug 2020 19:13:57 +0200
|
||||
Subject: [PATCH] ARM: dts: sun8i: r40: Add IR nodes
|
||||
|
||||
Allwinner R40 has two IR cores, add nodes for them.
|
||||
|
||||
Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
Link: https://lore.kernel.org/r/20200825171358.1286902-3-jernej.skrabec@siol.net
|
||||
---
|
||||
arch/arm/boot/dts/sun8i-r40.dtsi | 36 ++++++++++++++++++++++++++++++++
|
||||
1 file changed, 36 insertions(+)
|
||||
|
||||
diff --git a/arch/arm/boot/dts/sun8i-r40.dtsi b/arch/arm/boot/dts/sun8i-r40.dtsi
|
||||
index d481fe7989b8..dff9a3dc1fba 100644
|
||||
--- a/arch/arm/boot/dts/sun8i-r40.dtsi
|
||||
+++ b/arch/arm/boot/dts/sun8i-r40.dtsi
|
||||
@@ -513,6 +513,16 @@ i2c4_pins: i2c4-pins {
|
||||
function = "i2c4";
|
||||
};
|
||||
|
||||
+ ir0_pins: ir0-pins {
|
||||
+ pins = "PB4";
|
||||
+ function = "ir0";
|
||||
+ };
|
||||
+
|
||||
+ ir1_pins: ir1-pins {
|
||||
+ pins = "PB23";
|
||||
+ function = "ir1";
|
||||
+ };
|
||||
+
|
||||
mmc0_pins: mmc0-pins {
|
||||
pins = "PF0", "PF1", "PF2",
|
||||
"PF3", "PF4", "PF5";
|
||||
@@ -591,6 +601,32 @@ wdt: watchdog@1c20c90 {
|
||||
clocks = <&osc24M>;
|
||||
};
|
||||
|
||||
+ ir0: ir@1c21800 {
|
||||
+ compatible = "allwinner,sun8i-r40-ir",
|
||||
+ "allwinner,sun6i-a31-ir";
|
||||
+ reg = <0x01c21800 0x400>;
|
||||
+ pinctrl-0 = <&ir0_pins>;
|
||||
+ pinctrl-names = "default";
|
||||
+ clocks = <&ccu CLK_BUS_IR0>, <&ccu CLK_IR0>;
|
||||
+ clock-names = "apb", "ir";
|
||||
+ interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ resets = <&ccu RST_BUS_IR0>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ ir1: ir@1c21c00 {
|
||||
+ compatible = "allwinner,sun8i-r40-ir",
|
||||
+ "allwinner,sun6i-a31-ir";
|
||||
+ reg = <0x01c21c00 0x400>;
|
||||
+ pinctrl-0 = <&ir1_pins>;
|
||||
+ pinctrl-names = "default";
|
||||
+ clocks = <&ccu CLK_BUS_IR1>, <&ccu CLK_IR1>;
|
||||
+ clock-names = "apb", "ir";
|
||||
+ interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ resets = <&ccu RST_BUS_IR1>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
ths: thermal-sensor@1c24c00 {
|
||||
compatible = "allwinner,sun8i-r40-ths";
|
||||
reg = <0x01c24c00 0x100>;
|
||||
--
|
||||
2.28.0
|
||||
|
||||
From 44406428f5764d7a71be3bafd642c8e02cdd5468 Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Tue, 25 Aug 2020 19:13:58 +0200
|
||||
Subject: [PATCH] ARM: dts: sun8i: r40: bananapi-m2-ultra: Enable IR
|
||||
|
||||
BananaPi M2 Ultra has IR receiver connected to IR0.
|
||||
|
||||
Enable it.
|
||||
|
||||
Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
Link: https://lore.kernel.org/r/20200825171358.1286902-4-jernej.skrabec@siol.net
|
||||
---
|
||||
arch/arm/boot/dts/sun8i-r40-bananapi-m2-ultra.dts | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/arch/arm/boot/dts/sun8i-r40-bananapi-m2-ultra.dts b/arch/arm/boot/dts/sun8i-r40-bananapi-m2-ultra.dts
|
||||
index 42d62d1ba1dc..ca6088c87855 100644
|
||||
--- a/arch/arm/boot/dts/sun8i-r40-bananapi-m2-ultra.dts
|
||||
+++ b/arch/arm/boot/dts/sun8i-r40-bananapi-m2-ultra.dts
|
||||
@@ -164,6 +164,10 @@ axp22x: pmic@34 {
|
||||
|
||||
#include "axp22x.dtsi"
|
||||
|
||||
+&ir0 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
&mmc0 {
|
||||
vmmc-supply = <®_dcdc1>;
|
||||
bus-width = <4>;
|
||||
--
|
||||
2.28.0
|
||||
|
||||
From 3566b0869179779d3abc4b605dcc9d2121d67672 Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Tue, 25 Aug 2020 19:35:20 +0200
|
||||
Subject: [PATCH] ARM: dts: sun8i: r40: Add node for system controller
|
||||
|
||||
Allwinner R40 has system controller and SRAM C1 region similar to that
|
||||
in A10.
|
||||
|
||||
Add nodes for them.
|
||||
|
||||
Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
Link: https://lore.kernel.org/r/20200825173523.1289379-3-jernej.skrabec@siol.net
|
||||
---
|
||||
arch/arm/boot/dts/sun8i-r40.dtsi | 23 +++++++++++++++++++++++
|
||||
1 file changed, 23 insertions(+)
|
||||
|
||||
diff --git a/arch/arm/boot/dts/sun8i-r40.dtsi b/arch/arm/boot/dts/sun8i-r40.dtsi
|
||||
index dff9a3dc1fba..0c7526365896 100644
|
||||
--- a/arch/arm/boot/dts/sun8i-r40.dtsi
|
||||
+++ b/arch/arm/boot/dts/sun8i-r40.dtsi
|
||||
@@ -190,6 +190,29 @@ mixer1_out_tcon_top: endpoint {
|
||||
};
|
||||
};
|
||||
|
||||
+ syscon: system-control@1c00000 {
|
||||
+ compatible = "allwinner,sun8i-r40-system-control",
|
||||
+ "allwinner,sun4i-a10-system-control";
|
||||
+ reg = <0x01c00000 0x30>;
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <1>;
|
||||
+ ranges;
|
||||
+
|
||||
+ sram_c: sram@1d00000 {
|
||||
+ compatible = "mmio-sram";
|
||||
+ reg = <0x01d00000 0xd0000>;
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <1>;
|
||||
+ ranges = <0 0x01d00000 0xd0000>;
|
||||
+
|
||||
+ ve_sram: sram-section@0 {
|
||||
+ compatible = "allwinner,sun8i-r40-sram-c1",
|
||||
+ "allwinner,sun4i-a10-sram-c1";
|
||||
+ reg = <0x000000 0x80000>;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
nmi_intc: interrupt-controller@1c00030 {
|
||||
compatible = "allwinner,sun7i-a20-sc-nmi";
|
||||
interrupt-controller;
|
||||
--
|
||||
2.28.0
|
||||
|
||||
From 343bbfd1652964fb52520c4cc232c5a2c679cb21 Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Tue, 25 Aug 2020 19:35:22 +0200
|
||||
Subject: [PATCH] media: cedrus: Add support for R40
|
||||
|
||||
Video engine in R40 is very similar to that in A33 but it runs on lower
|
||||
speed, at least according to OS images released by board designer.
|
||||
|
||||
Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
Link: https://lore.kernel.org/r/20200825173523.1289379-5-jernej.skrabec@siol.net
|
||||
---
|
||||
drivers/staging/media/sunxi/cedrus/cedrus.c | 9 +++++++++
|
||||
1 file changed, 9 insertions(+)
|
||||
|
||||
diff --git a/drivers/staging/media/sunxi/cedrus/cedrus.c b/drivers/staging/media/sunxi/cedrus/cedrus.c
|
||||
index bc27f9430eeb..83a654a618be 100644
|
||||
--- a/drivers/staging/media/sunxi/cedrus/cedrus.c
|
||||
+++ b/drivers/staging/media/sunxi/cedrus/cedrus.c
|
||||
@@ -496,6 +496,11 @@ static const struct cedrus_variant sun8i_h3_cedrus_variant = {
|
||||
.mod_rate = 402000000,
|
||||
};
|
||||
|
||||
+static const struct cedrus_variant sun8i_r40_cedrus_variant = {
|
||||
+ .capabilities = CEDRUS_CAPABILITY_UNTILED,
|
||||
+ .mod_rate = 297000000,
|
||||
+};
|
||||
+
|
||||
static const struct cedrus_variant sun50i_a64_cedrus_variant = {
|
||||
.capabilities = CEDRUS_CAPABILITY_UNTILED |
|
||||
CEDRUS_CAPABILITY_H265_DEC,
|
||||
@@ -536,6 +541,10 @@ static const struct of_device_id cedrus_dt_match[] = {
|
||||
.compatible = "allwinner,sun8i-h3-video-engine",
|
||||
.data = &sun8i_h3_cedrus_variant,
|
||||
},
|
||||
+ {
|
||||
+ .compatible = "allwinner,sun8i-r40-video-engine",
|
||||
+ .data = &sun8i_r40_cedrus_variant,
|
||||
+ },
|
||||
{
|
||||
.compatible = "allwinner,sun50i-a64-video-engine",
|
||||
.data = &sun50i_a64_cedrus_variant,
|
||||
--
|
||||
2.28.0
|
||||
|
||||
From 2abed6778f38e2cfb90806994dff01de00ca77a6 Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Tue, 25 Aug 2020 19:35:23 +0200
|
||||
Subject: [PATCH] ARM: dts: sun8i: r40: Add video engine node
|
||||
|
||||
Allwinner R40 SoC has a video engine.
|
||||
|
||||
Add a node for it.
|
||||
|
||||
Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
Link: https://lore.kernel.org/r/20200825173523.1289379-6-jernej.skrabec@siol.net
|
||||
---
|
||||
arch/arm/boot/dts/sun8i-r40.dtsi | 11 +++++++++++
|
||||
1 file changed, 11 insertions(+)
|
||||
|
||||
diff --git a/arch/arm/boot/dts/sun8i-r40.dtsi b/arch/arm/boot/dts/sun8i-r40.dtsi
|
||||
index 0c7526365896..7907569e7b5c 100644
|
||||
--- a/arch/arm/boot/dts/sun8i-r40.dtsi
|
||||
+++ b/arch/arm/boot/dts/sun8i-r40.dtsi
|
||||
@@ -273,6 +273,17 @@ csi0: csi@1c09000 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
+ video-codec@1c0e000 {
|
||||
+ compatible = "allwinner,sun8i-r40-video-engine";
|
||||
+ reg = <0x01c0e000 0x1000>;
|
||||
+ clocks = <&ccu CLK_BUS_VE>, <&ccu CLK_VE>,
|
||||
+ <&ccu CLK_DRAM_VE>;
|
||||
+ clock-names = "ahb", "mod", "ram";
|
||||
+ resets = <&ccu RST_BUS_VE>;
|
||||
+ interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ allwinner,sram = <&ve_sram 1>;
|
||||
+ };
|
||||
+
|
||||
mmc0: mmc@1c0f000 {
|
||||
compatible = "allwinner,sun8i-r40-mmc",
|
||||
"allwinner,sun50i-a64-mmc";
|
||||
--
|
||||
2.28.0
|
||||
|
@ -603,92 +603,6 @@ index 3e2e32098312..d1b094c8aaeb 100644
|
||||
2.25.1
|
||||
|
||||
|
||||
From 8da7946b350d6e951eea38f9b920628b6abead01 Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Thu, 14 Feb 2019 22:50:12 +0100
|
||||
Subject: [PATCH 07/11] media: cedrus: H264 interlace hack
|
||||
|
||||
Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
---
|
||||
.../staging/media/sunxi/cedrus/cedrus_h264.c | 24 ++++++++++++-------
|
||||
1 file changed, 16 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/media/sunxi/cedrus/cedrus_h264.c b/drivers/staging/media/sunxi/cedrus/cedrus_h264.c
|
||||
index 54ee2aa423e2..ba723d5af35c 100644
|
||||
--- a/drivers/staging/media/sunxi/cedrus/cedrus_h264.c
|
||||
+++ b/drivers/staging/media/sunxi/cedrus/cedrus_h264.c
|
||||
@@ -102,7 +102,7 @@ static void cedrus_write_frame_list(struct cedrus_ctx *ctx,
|
||||
struct cedrus_dev *dev = ctx->dev;
|
||||
unsigned long used_dpbs = 0;
|
||||
unsigned int position;
|
||||
- unsigned int output = 0;
|
||||
+ int output = -1;
|
||||
unsigned int i;
|
||||
|
||||
cap_q = v4l2_m2m_get_vq(ctx->fh.m2m_ctx, V4L2_BUF_TYPE_VIDEO_CAPTURE);
|
||||
@@ -125,6 +125,11 @@ static void cedrus_write_frame_list(struct cedrus_ctx *ctx,
|
||||
position = cedrus_buf->codec.h264.position;
|
||||
used_dpbs |= BIT(position);
|
||||
|
||||
+ if (run->dst->vb2_buf.timestamp == dpb->reference_ts) {
|
||||
+ output = position;
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
if (!(dpb->flags & V4L2_H264_DPB_ENTRY_FLAG_ACTIVE))
|
||||
continue;
|
||||
|
||||
@@ -132,13 +137,11 @@ static void cedrus_write_frame_list(struct cedrus_ctx *ctx,
|
||||
dpb->top_field_order_cnt,
|
||||
dpb->bottom_field_order_cnt,
|
||||
&pic_list[position]);
|
||||
-
|
||||
- output = max(position, output);
|
||||
}
|
||||
|
||||
- position = find_next_zero_bit(&used_dpbs, CEDRUS_H264_FRAME_NUM,
|
||||
- output);
|
||||
- if (position >= CEDRUS_H264_FRAME_NUM)
|
||||
+ if (output >= 0)
|
||||
+ position = output;
|
||||
+ else
|
||||
position = find_first_zero_bit(&used_dpbs, CEDRUS_H264_FRAME_NUM);
|
||||
|
||||
output_buf = vb2_to_cedrus_buffer(&run->dst->vb2_buf);
|
||||
@@ -164,6 +167,10 @@ static void cedrus_write_frame_list(struct cedrus_ctx *ctx,
|
||||
|
||||
#define CEDRUS_MAX_REF_IDX 32
|
||||
|
||||
+#define REF_IDX(v) (v & GENMASK(5, 0))
|
||||
+#define REF_FIELD(v) (v >> 6)
|
||||
+#define REF_FIELD_BOTTOM 2
|
||||
+
|
||||
static void _cedrus_write_ref_list(struct cedrus_ctx *ctx,
|
||||
struct cedrus_run *run,
|
||||
const u8 *ref_list, u8 num_ref,
|
||||
@@ -188,7 +195,7 @@ static void _cedrus_write_ref_list(struct cedrus_ctx *ctx,
|
||||
int buf_idx;
|
||||
u8 dpb_idx;
|
||||
|
||||
- dpb_idx = ref_list[i];
|
||||
+ dpb_idx = REF_IDX(ref_list[i]);
|
||||
dpb = &decode->dpb[dpb_idx];
|
||||
|
||||
if (!(dpb->flags & V4L2_H264_DPB_ENTRY_FLAG_ACTIVE))
|
||||
@@ -203,7 +210,8 @@ static void _cedrus_write_ref_list(struct cedrus_ctx *ctx,
|
||||
position = cedrus_buf->codec.h264.position;
|
||||
|
||||
sram_array[i] |= position << 1;
|
||||
- if (ref_buf->field == V4L2_FIELD_BOTTOM)
|
||||
+ /* set bottom field flag when reference is to bottom field */
|
||||
+ if (REF_FIELD(ref_list[i]) == REF_FIELD_BOTTOM)
|
||||
sram_array[i] |= BIT(0);
|
||||
}
|
||||
|
||||
--
|
||||
2.25.1
|
||||
|
||||
|
||||
From 464ef73deba86cb59d14a5094604f4bb30ac1ce7 Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Sat, 9 Nov 2019 13:06:15 +0100
|
||||
@ -1087,7 +1001,7 @@ index ba723d5af35c..c336366f6e19 100644
|
||||
+ output_buf->codec.h264.mv_col_buf_size = 0;
|
||||
+ }
|
||||
+
|
||||
if (slice->flags & V4L2_H264_SLICE_FLAG_FIELD_PIC)
|
||||
if (decode->flags & V4L2_H264_DECODE_PARAM_FLAG_FIELD_PIC)
|
||||
output_buf->codec.h264.pic_type = CEDRUS_H264_PIC_TYPE_FIELD;
|
||||
else if (sps->flags & V4L2_H264_SPS_FLAG_MB_ADAPTIVE_FRAME_FIELD)
|
||||
@@ -525,8 +544,6 @@ static int cedrus_h264_start(struct cedrus_ctx *ctx)
|
||||
@ -1300,7 +1214,7 @@ index 7f95216a552e..daff14d0a1ae 100644
|
||||
pix_fmt->width = width;
|
||||
pix_fmt->height = height;
|
||||
|
||||
@@ -237,15 +248,25 @@ static int cedrus_try_fmt_vid_cap(struct file *file, void *priv,
|
||||
@@ -237,17 +248,27 @@ static int cedrus_try_fmt_vid_cap(struct file *file, void *priv,
|
||||
struct cedrus_ctx *ctx = cedrus_file2ctx(file);
|
||||
struct cedrus_dev *dev = ctx->dev;
|
||||
struct v4l2_pix_format *pix_fmt = &f->fmt.pix;
|
||||
@ -1320,6 +1234,8 @@ index 7f95216a552e..daff14d0a1ae 100644
|
||||
+ sps->bit_depth_luma_minus8 == 2;
|
||||
+
|
||||
pix_fmt->pixelformat = fmt->pixelformat;
|
||||
pix_fmt->width = ctx->src_fmt.width;
|
||||
pix_fmt->height = ctx->src_fmt.height;
|
||||
- cedrus_prepare_format(pix_fmt);
|
||||
+
|
||||
+ pix_fmt->pixelformat = fmt->pixelformat;
|
||||
@ -1335,6 +1251,15 @@ index 7f95216a552e..daff14d0a1ae 100644
|
||||
- cedrus_prepare_format(pix_fmt);
|
||||
+ cedrus_prepare_format(pix_fmt, 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -348,7 +348,7 @@ static int cedrus_s_fmt_vid_out(struct file *file, void *priv,
|
||||
ctx->dst_fmt.quantization = f->fmt.pix.quantization;
|
||||
ctx->dst_fmt.width = ctx->src_fmt.width;
|
||||
ctx->dst_fmt.height = ctx->src_fmt.height;
|
||||
- cedrus_prepare_format(&ctx->dst_fmt);
|
||||
+ cedrus_prepare_format(&ctx->dst_fmt, 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
diff --git a/drivers/staging/media/sunxi/cedrus/cedrus_video.h b/drivers/staging/media/sunxi/cedrus/cedrus_video.h
|
||||
@ -2513,3 +2438,33 @@ index 000000000000..93beffd07c35
|
||||
+ .stop = cedrus_vp8_stop,
|
||||
+ .trigger = cedrus_vp8_trigger,
|
||||
+};
|
||||
From 732934b823fb3519f3616a4493db88928a8fec3a Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Wed, 21 Oct 2020 22:26:05 +0200
|
||||
Subject: [PATCH] media: cedrus: h264: Fix check for presence of scaling matrix
|
||||
|
||||
If scaling matrix control is present, VPU should not use default matrix.
|
||||
Fix that.
|
||||
|
||||
Fixes: b3a23db0e2f8 ("media: cedrus: Use H264_SCALING_MATRIX only when required")
|
||||
Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
---
|
||||
drivers/staging/media/sunxi/cedrus/cedrus_h264.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/staging/media/sunxi/cedrus/cedrus_h264.c b/drivers/staging/media/sunxi/cedrus/cedrus_h264.c
|
||||
index 28319351e909..781c84a9b1b7 100644
|
||||
--- a/drivers/staging/media/sunxi/cedrus/cedrus_h264.c
|
||||
+++ b/drivers/staging/media/sunxi/cedrus/cedrus_h264.c
|
||||
@@ -446,7 +446,7 @@ static void cedrus_set_params(struct cedrus_ctx *ctx,
|
||||
reg |= (pps->second_chroma_qp_index_offset & 0x3f) << 16;
|
||||
reg |= (pps->chroma_qp_index_offset & 0x3f) << 8;
|
||||
reg |= (pps->pic_init_qp_minus26 + 26 + slice->slice_qp_delta) & 0x3f;
|
||||
- if (pps->flags & V4L2_H264_PPS_FLAG_SCALING_MATRIX_PRESENT)
|
||||
+ if (!(pps->flags & V4L2_H264_PPS_FLAG_SCALING_MATRIX_PRESENT))
|
||||
reg |= VE_H264_SHS_QP_SCALING_MATRIX_DEFAULT;
|
||||
cedrus_write(dev, VE_H264_SHS_QP, reg);
|
||||
|
||||
--
|
||||
2.29.0
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
# base ffmpeg version
|
||||
KODI_FFMPEG_REPO="https://github.com/xbmc/FFmpeg"
|
||||
KODI_FFMPEG_VERSION="4.3-Matrix-Alpha1"
|
||||
KODI_FFMPEG_VERSION="4.3.1-Matrix-Alpha1-1"
|
||||
|
||||
ALL_FEATURE_SETS="v4l2-drmprime v4l2-request libreelec rpi"
|
||||
|
||||
@ -29,7 +29,7 @@ create_patch() {
|
||||
;;
|
||||
v4l2-request)
|
||||
REPO="https://github.com/Kwiboo/FFmpeg"
|
||||
REFSPEC="v4l2-request-hwaccel-4.3"
|
||||
REFSPEC="v4l2-request-hwaccel-4.3.1"
|
||||
;;
|
||||
libreelec)
|
||||
REPO="https://github.com/LibreELEC/FFmpeg"
|
||||
|
Loading…
x
Reference in New Issue
Block a user