mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-29 13:46:49 +00:00
linux (Rockchip): patches included in 5.17
This commit is contained in:
parent
59acf0cb22
commit
e850716c28
@ -376,133 +376,3 @@ index d0410ae4def2..cc46855aba46 100644
|
|||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Alex Bee <knaerzche@gmail.com>
|
|
||||||
Date: Wed, 27 Oct 2021 14:43:40 +0200
|
|
||||||
Subject: [PATCH] arm64: dts: rockchip: add interrupt and headphone-detection
|
|
||||||
for Rock Pi4's audio codec
|
|
||||||
|
|
||||||
As Schematics at [1] and [2] show C- and plus-revisions have interrupt and
|
|
||||||
headphone detection lines of ES8316 codec connected.
|
|
||||||
|
|
||||||
Add them to the respective device trees.
|
|
||||||
|
|
||||||
[1] https://dl.radxa.com/rockpi4/docs/hw/rockpi4/rockpi_4c_v12_sch_20200620.pdf
|
|
||||||
[2] https://dl.radxa.com/rockpi4/docs/hw/rockpi4/rockpi4b_plus_v16_sch_20200628.pdf
|
|
||||||
|
|
||||||
Signed-off-by: Alex Bee <knaerzche@gmail.com>
|
|
||||||
---
|
|
||||||
arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi | 12 +++++++++++-
|
|
||||||
.../boot/dts/rockchip/rk3399-rock-pi-4a-plus.dts | 11 +++++++++++
|
|
||||||
.../boot/dts/rockchip/rk3399-rock-pi-4b-plus.dts | 11 +++++++++++
|
|
||||||
arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4c.dts | 11 +++++++++++
|
|
||||||
4 files changed, 44 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi
|
|
||||||
index 6a434be62819..92acf6ea299b 100644
|
|
||||||
--- a/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi
|
|
||||||
+++ b/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi
|
|
||||||
@@ -36,7 +36,7 @@ sdio_pwrseq: sdio-pwrseq {
|
|
||||||
reset-gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>;
|
|
||||||
};
|
|
||||||
|
|
||||||
- sound {
|
|
||||||
+ sound: sound {
|
|
||||||
compatible = "audio-graph-card";
|
|
||||||
label = "Analog";
|
|
||||||
dais = <&i2s0_p0>;
|
|
||||||
@@ -543,6 +543,16 @@ bt_wake_l: bt-wake-l {
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
+ es8316 {
|
|
||||||
+ hp_detect: hp-detect {
|
|
||||||
+ rockchip,pins = <1 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ hp_int: hp-int {
|
|
||||||
+ rockchip,pins = <1 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
pcie {
|
|
||||||
pcie_pwr_en: pcie-pwr-en {
|
|
||||||
rockchip,pins = <2 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>;
|
|
||||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4a-plus.dts b/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4a-plus.dts
|
|
||||||
index 281a04b2f5e9..f5a68d8d072d 100644
|
|
||||||
--- a/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4a-plus.dts
|
|
||||||
+++ b/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4a-plus.dts
|
|
||||||
@@ -12,3 +12,14 @@ / {
|
|
||||||
model = "Radxa ROCK Pi 4A+";
|
|
||||||
compatible = "radxa,rockpi4a-plus", "radxa,rockpi4", "rockchip,rk3399";
|
|
||||||
};
|
|
||||||
+
|
|
||||||
+&es8316 {
|
|
||||||
+ pinctrl-0 = <&hp_detect &hp_int>;
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+ interrupt-parent = <&gpio1>;
|
|
||||||
+ interrupts = <RK_PA1 IRQ_TYPE_LEVEL_HIGH>;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&sound {
|
|
||||||
+ hp-det-gpio = <&gpio1 RK_PA0 GPIO_ACTIVE_HIGH>;
|
|
||||||
+};
|
|
||||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4b-plus.dts b/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4b-plus.dts
|
|
||||||
index dfad13d2ab24..81bea953c891 100644
|
|
||||||
--- a/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4b-plus.dts
|
|
||||||
+++ b/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4b-plus.dts
|
|
||||||
@@ -17,6 +17,13 @@ aliases {
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
+&es8316 {
|
|
||||||
+ pinctrl-0 = <&hp_detect &hp_int>;
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+ interrupt-parent = <&gpio1>;
|
|
||||||
+ interrupts = <RK_PA1 IRQ_TYPE_LEVEL_HIGH>;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
&sdio0 {
|
|
||||||
status = "okay";
|
|
||||||
|
|
||||||
@@ -31,6 +38,10 @@ brcmf: wifi@1 {
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
+&sound {
|
|
||||||
+ hp-det-gpio = <&gpio1 RK_PA0 GPIO_ACTIVE_HIGH>;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
&uart0 {
|
|
||||||
status = "okay";
|
|
||||||
|
|
||||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4c.dts b/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4c.dts
|
|
||||||
index 99169bcd51c0..0ad7b6e22f70 100644
|
|
||||||
--- a/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4c.dts
|
|
||||||
+++ b/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4c.dts
|
|
||||||
@@ -17,6 +17,13 @@ aliases {
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
+&es8316 {
|
|
||||||
+ pinctrl-0 = <&hp_detect &hp_int>;
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+ interrupt-parent = <&gpio1>;
|
|
||||||
+ interrupts = <RK_PA1 IRQ_TYPE_LEVEL_HIGH>;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
&sdio0 {
|
|
||||||
status = "okay";
|
|
||||||
|
|
||||||
@@ -31,6 +38,10 @@ brcmf: wifi@1 {
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
+&sound {
|
|
||||||
+ hp-det-gpio = <&gpio1 RK_PA0 GPIO_ACTIVE_HIGH>;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
&uart0 {
|
|
||||||
status = "okay";
|
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -362,169 +362,3 @@ index be74c87a8be4..288462fd5d8e 100644
|
|||||||
DRM_DEV_ERROR(lvds->dev, "failed to get pm runtime: %d\n", ret);
|
DRM_DEV_ERROR(lvds->dev, "failed to get pm runtime: %d\n", ret);
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Thomas Zimmermann <tzimmermann@suse.de>
|
|
||||||
Date: Thu, 24 Jun 2021 11:55:02 +0200
|
|
||||||
Subject: [PATCH] drm/rockchip: Implement mmap as GEM object function
|
|
||||||
|
|
||||||
Moving the driver-specific mmap code into a GEM object function allows
|
|
||||||
for using DRM helpers for various mmap callbacks.
|
|
||||||
|
|
||||||
The respective rockchip functions are being removed. The file_operations
|
|
||||||
structure fops is now being created by the helper macro
|
|
||||||
DEFINE_DRM_GEM_FOPS().
|
|
||||||
|
|
||||||
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
|
|
||||||
Tested-by: Heiko Stuebner <heiko@sntech.de>
|
|
||||||
---
|
|
||||||
drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 13 +-----
|
|
||||||
drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c | 3 +-
|
|
||||||
drivers/gpu/drm/rockchip/rockchip_drm_gem.c | 44 +++++--------------
|
|
||||||
drivers/gpu/drm/rockchip/rockchip_drm_gem.h | 7 ---
|
|
||||||
4 files changed, 15 insertions(+), 52 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
|
|
||||||
index e4ebe60b3cc1..69c699459dce 100644
|
|
||||||
--- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
|
|
||||||
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
|
|
||||||
@@ -199,16 +199,7 @@ static void rockchip_drm_unbind(struct device *dev)
|
|
||||||
drm_dev_put(drm_dev);
|
|
||||||
}
|
|
||||||
|
|
||||||
-static const struct file_operations rockchip_drm_driver_fops = {
|
|
||||||
- .owner = THIS_MODULE,
|
|
||||||
- .open = drm_open,
|
|
||||||
- .mmap = rockchip_gem_mmap,
|
|
||||||
- .poll = drm_poll,
|
|
||||||
- .read = drm_read,
|
|
||||||
- .unlocked_ioctl = drm_ioctl,
|
|
||||||
- .compat_ioctl = drm_compat_ioctl,
|
|
||||||
- .release = drm_release,
|
|
||||||
-};
|
|
||||||
+DEFINE_DRM_GEM_FOPS(rockchip_drm_driver_fops);
|
|
||||||
|
|
||||||
static const struct drm_driver rockchip_drm_driver = {
|
|
||||||
.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
|
|
||||||
@@ -217,7 +208,7 @@ static const struct drm_driver rockchip_drm_driver = {
|
|
||||||
.prime_handle_to_fd = drm_gem_prime_handle_to_fd,
|
|
||||||
.prime_fd_to_handle = drm_gem_prime_fd_to_handle,
|
|
||||||
.gem_prime_import_sg_table = rockchip_gem_prime_import_sg_table,
|
|
||||||
- .gem_prime_mmap = rockchip_gem_mmap_buf,
|
|
||||||
+ .gem_prime_mmap = drm_gem_prime_mmap,
|
|
||||||
.fops = &rockchip_drm_driver_fops,
|
|
||||||
.name = DRIVER_NAME,
|
|
||||||
.desc = DRIVER_DESC,
|
|
||||||
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c b/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c
|
|
||||||
index 2fdc455c4ad7..d8418dd39d0e 100644
|
|
||||||
--- a/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c
|
|
||||||
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c
|
|
||||||
@@ -7,6 +7,7 @@
|
|
||||||
#include <drm/drm.h>
|
|
||||||
#include <drm/drm_fb_helper.h>
|
|
||||||
#include <drm/drm_fourcc.h>
|
|
||||||
+#include <drm/drm_prime.h>
|
|
||||||
#include <drm/drm_probe_helper.h>
|
|
||||||
|
|
||||||
#include "rockchip_drm_drv.h"
|
|
||||||
@@ -24,7 +25,7 @@ static int rockchip_fbdev_mmap(struct fb_info *info,
|
|
||||||
struct drm_fb_helper *helper = info->par;
|
|
||||||
struct rockchip_drm_private *private = to_drm_private(helper);
|
|
||||||
|
|
||||||
- return rockchip_gem_mmap_buf(private->fbdev_bo, vma);
|
|
||||||
+ return drm_gem_prime_mmap(private->fbdev_bo, vma);
|
|
||||||
}
|
|
||||||
|
|
||||||
static const struct fb_ops rockchip_drm_fbdev_ops = {
|
|
||||||
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_gem.c b/drivers/gpu/drm/rockchip/rockchip_drm_gem.c
|
|
||||||
index 7971f57436dd..63eb73b624aa 100644
|
|
||||||
--- a/drivers/gpu/drm/rockchip/rockchip_drm_gem.c
|
|
||||||
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_gem.c
|
|
||||||
@@ -240,12 +240,22 @@ static int rockchip_drm_gem_object_mmap(struct drm_gem_object *obj,
|
|
||||||
int ret;
|
|
||||||
struct rockchip_gem_object *rk_obj = to_rockchip_obj(obj);
|
|
||||||
|
|
||||||
+ /*
|
|
||||||
+ * Set vm_pgoff (used as a fake buffer offset by DRM) to 0 and map the
|
|
||||||
+ * whole buffer from the start.
|
|
||||||
+ */
|
|
||||||
+ vma->vm_pgoff = 0;
|
|
||||||
+
|
|
||||||
/*
|
|
||||||
* We allocated a struct page table for rk_obj, so clear
|
|
||||||
* VM_PFNMAP flag that was set by drm_gem_mmap_obj()/drm_gem_mmap().
|
|
||||||
*/
|
|
||||||
+ vma->vm_flags |= VM_IO | VM_DONTEXPAND | VM_DONTDUMP;
|
|
||||||
vma->vm_flags &= ~VM_PFNMAP;
|
|
||||||
|
|
||||||
+ vma->vm_page_prot = pgprot_writecombine(vm_get_page_prot(vma->vm_flags));
|
|
||||||
+ vma->vm_page_prot = pgprot_decrypted(vma->vm_page_prot);
|
|
||||||
+
|
|
||||||
if (rk_obj->pages)
|
|
||||||
ret = rockchip_drm_gem_object_mmap_iommu(obj, vma);
|
|
||||||
else
|
|
||||||
@@ -257,39 +267,6 @@ static int rockchip_drm_gem_object_mmap(struct drm_gem_object *obj,
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
-int rockchip_gem_mmap_buf(struct drm_gem_object *obj,
|
|
||||||
- struct vm_area_struct *vma)
|
|
||||||
-{
|
|
||||||
- int ret;
|
|
||||||
-
|
|
||||||
- ret = drm_gem_mmap_obj(obj, obj->size, vma);
|
|
||||||
- if (ret)
|
|
||||||
- return ret;
|
|
||||||
-
|
|
||||||
- return rockchip_drm_gem_object_mmap(obj, vma);
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
-/* drm driver mmap file operations */
|
|
||||||
-int rockchip_gem_mmap(struct file *filp, struct vm_area_struct *vma)
|
|
||||||
-{
|
|
||||||
- struct drm_gem_object *obj;
|
|
||||||
- int ret;
|
|
||||||
-
|
|
||||||
- ret = drm_gem_mmap(filp, vma);
|
|
||||||
- if (ret)
|
|
||||||
- return ret;
|
|
||||||
-
|
|
||||||
- /*
|
|
||||||
- * Set vm_pgoff (used as a fake buffer offset by DRM) to 0 and map the
|
|
||||||
- * whole buffer from the start.
|
|
||||||
- */
|
|
||||||
- vma->vm_pgoff = 0;
|
|
||||||
-
|
|
||||||
- obj = vma->vm_private_data;
|
|
||||||
-
|
|
||||||
- return rockchip_drm_gem_object_mmap(obj, vma);
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
static void rockchip_gem_release_object(struct rockchip_gem_object *rk_obj)
|
|
||||||
{
|
|
||||||
drm_gem_object_release(&rk_obj->base);
|
|
||||||
@@ -301,6 +278,7 @@ static const struct drm_gem_object_funcs rockchip_gem_object_funcs = {
|
|
||||||
.get_sg_table = rockchip_gem_prime_get_sg_table,
|
|
||||||
.vmap = rockchip_gem_prime_vmap,
|
|
||||||
.vunmap = rockchip_gem_prime_vunmap,
|
|
||||||
+ .mmap = rockchip_drm_gem_object_mmap,
|
|
||||||
.vm_ops = &drm_gem_cma_vm_ops,
|
|
||||||
};
|
|
||||||
|
|
||||||
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_gem.h b/drivers/gpu/drm/rockchip/rockchip_drm_gem.h
|
|
||||||
index 5a70a56cd406..47c1861eece0 100644
|
|
||||||
--- a/drivers/gpu/drm/rockchip/rockchip_drm_gem.h
|
|
||||||
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_gem.h
|
|
||||||
@@ -34,13 +34,6 @@ rockchip_gem_prime_import_sg_table(struct drm_device *dev,
|
|
||||||
int rockchip_gem_prime_vmap(struct drm_gem_object *obj, struct dma_buf_map *map);
|
|
||||||
void rockchip_gem_prime_vunmap(struct drm_gem_object *obj, struct dma_buf_map *map);
|
|
||||||
|
|
||||||
-/* drm driver mmap file operations */
|
|
||||||
-int rockchip_gem_mmap(struct file *filp, struct vm_area_struct *vma);
|
|
||||||
-
|
|
||||||
-/* mmap a gem object to userspace. */
|
|
||||||
-int rockchip_gem_mmap_buf(struct drm_gem_object *obj,
|
|
||||||
- struct vm_area_struct *vma);
|
|
||||||
-
|
|
||||||
struct rockchip_gem_object *
|
|
||||||
rockchip_gem_create_object(struct drm_device *drm, unsigned int size,
|
|
||||||
bool alloc_kmap);
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user