+++ /dev/null
-From 75388df24d42977379132c72fd904480f44f1690 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Tue, 3 Aug 2021 11:06:54 +0200
-Subject: drm/fsl-dcu: Convert to Linux IRQ interfaces
-
-From: Thomas Zimmermann <tzimmermann@suse.de>
-
-[ Upstream commit 03ac16e584e496230903ba20f2b4bbfd942a16b4 ]
-
-Drop the DRM IRQ midlayer in favor of Linux IRQ interfaces. DRM's
-IRQ helpers are mostly useful for UMS drivers. Modern KMS drivers
-don't benefit from using it. DRM IRQ callbacks are now being called
-directly or inlined.
-
-Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
-Acked-by: Sam Ravnborg <sam@ravnborg.org>
-Link: https://patchwork.freedesktop.org/patch/msgid/20210803090704.32152-5-tzimmermann@suse.de
-Stable-dep-of: ffcde9e44d3e ("drm: fsl-dcu: enable PIXCLK on LS1021A")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c | 78 +++++++++++++----------
- 1 file changed, 46 insertions(+), 32 deletions(-)
-
-diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
-index abbc1ddbf27f0..11b4a81bacc68 100644
---- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
-+++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
-@@ -23,7 +23,6 @@
- #include <drm/drm_fb_cma_helper.h>
- #include <drm/drm_fb_helper.h>
- #include <drm/drm_gem_cma_helper.h>
--#include <drm/drm_irq.h>
- #include <drm/drm_modeset_helper.h>
- #include <drm/drm_probe_helper.h>
- #include <drm/drm_vblank.h>
-@@ -51,7 +50,7 @@ static const struct regmap_config fsl_dcu_regmap_config = {
- .volatile_reg = fsl_dcu_drm_is_volatile_reg,
- };
-
--static void fsl_dcu_irq_uninstall(struct drm_device *dev)
-+static void fsl_dcu_irq_reset(struct drm_device *dev)
- {
- struct fsl_dcu_drm_device *fsl_dev = dev->dev_private;
-
-@@ -59,6 +58,45 @@ static void fsl_dcu_irq_uninstall(struct drm_device *dev)
- regmap_write(fsl_dev->regmap, DCU_INT_MASK, ~0);
- }
-
-+static irqreturn_t fsl_dcu_drm_irq(int irq, void *arg)
-+{
-+ struct drm_device *dev = arg;
-+ struct fsl_dcu_drm_device *fsl_dev = dev->dev_private;
-+ unsigned int int_status;
-+ int ret;
-+
-+ ret = regmap_read(fsl_dev->regmap, DCU_INT_STATUS, &int_status);
-+ if (ret) {
-+ dev_err(dev->dev, "read DCU_INT_STATUS failed\n");
-+ return IRQ_NONE;
-+ }
-+
-+ if (int_status & DCU_INT_STATUS_VBLANK)
-+ drm_handle_vblank(dev, 0);
-+
-+ regmap_write(fsl_dev->regmap, DCU_INT_STATUS, int_status);
-+
-+ return IRQ_HANDLED;
-+}
-+
-+static int fsl_dcu_irq_install(struct drm_device *dev, unsigned int irq)
-+{
-+ if (irq == IRQ_NOTCONNECTED)
-+ return -ENOTCONN;
-+
-+ fsl_dcu_irq_reset(dev);
-+
-+ return request_irq(irq, fsl_dcu_drm_irq, 0, dev->driver->name, dev);
-+}
-+
-+static void fsl_dcu_irq_uninstall(struct drm_device *dev)
-+{
-+ struct fsl_dcu_drm_device *fsl_dev = dev->dev_private;
-+
-+ fsl_dcu_irq_reset(dev);
-+ free_irq(fsl_dev->irq, dev);
-+}
-+
- static int fsl_dcu_load(struct drm_device *dev, unsigned long flags)
- {
- struct fsl_dcu_drm_device *fsl_dev = dev->dev_private;
-@@ -73,13 +111,13 @@ static int fsl_dcu_load(struct drm_device *dev, unsigned long flags)
- ret = drm_vblank_init(dev, dev->mode_config.num_crtc);
- if (ret < 0) {
- dev_err(dev->dev, "failed to initialize vblank\n");
-- goto done;
-+ goto done_vblank;
- }
-
-- ret = drm_irq_install(dev, fsl_dev->irq);
-+ ret = fsl_dcu_irq_install(dev, fsl_dev->irq);
- if (ret < 0) {
- dev_err(dev->dev, "failed to install IRQ handler\n");
-- goto done;
-+ goto done_irq;
- }
-
- if (legacyfb_depth != 16 && legacyfb_depth != 24 &&
-@@ -90,11 +128,11 @@ static int fsl_dcu_load(struct drm_device *dev, unsigned long flags)
- }
-
- return 0;
--done:
-+done_irq:
- drm_kms_helper_poll_fini(dev);
-
- drm_mode_config_cleanup(dev);
-- drm_irq_uninstall(dev);
-+done_vblank:
- dev->dev_private = NULL;
-
- return ret;
-@@ -106,41 +144,17 @@ static void fsl_dcu_unload(struct drm_device *dev)
- drm_kms_helper_poll_fini(dev);
-
- drm_mode_config_cleanup(dev);
-- drm_irq_uninstall(dev);
-+ fsl_dcu_irq_uninstall(dev);
-
- dev->dev_private = NULL;
- }
-
--static irqreturn_t fsl_dcu_drm_irq(int irq, void *arg)
--{
-- struct drm_device *dev = arg;
-- struct fsl_dcu_drm_device *fsl_dev = dev->dev_private;
-- unsigned int int_status;
-- int ret;
--
-- ret = regmap_read(fsl_dev->regmap, DCU_INT_STATUS, &int_status);
-- if (ret) {
-- dev_err(dev->dev, "read DCU_INT_STATUS failed\n");
-- return IRQ_NONE;
-- }
--
-- if (int_status & DCU_INT_STATUS_VBLANK)
-- drm_handle_vblank(dev, 0);
--
-- regmap_write(fsl_dev->regmap, DCU_INT_STATUS, int_status);
--
-- return IRQ_HANDLED;
--}
--
- DEFINE_DRM_GEM_CMA_FOPS(fsl_dcu_drm_fops);
-
- static struct drm_driver fsl_dcu_drm_driver = {
- .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
- .load = fsl_dcu_load,
- .unload = fsl_dcu_unload,
-- .irq_handler = fsl_dcu_drm_irq,
-- .irq_preinstall = fsl_dcu_irq_uninstall,
-- .irq_uninstall = fsl_dcu_irq_uninstall,
- DRM_GEM_CMA_DRIVER_OPS,
- .fops = &fsl_dcu_drm_fops,
- .name = "fsl-dcu-drm",
---
-2.43.0
-
+++ /dev/null
-From 3f5e17e7289a97dfb3542bf9d920346434ef1ece Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Thu, 26 Sep 2024 07:55:51 +0200
-Subject: drm: fsl-dcu: enable PIXCLK on LS1021A
-
-From: Matthias Schiffer <matthias.schiffer@tq-group.com>
-
-[ Upstream commit ffcde9e44d3e18fde3d18bfff8d9318935413bfd ]
-
-The PIXCLK needs to be enabled in SCFG before accessing certain DCU
-registers, or the access will hang. For simplicity, the PIXCLK is enabled
-unconditionally, resulting in increased power consumption.
-
-Signed-off-by: Matthias Schiffer <matthias.schiffer@tq-group.com>
-Signed-off-by: Alexander Stein <alexander.stein@ew.tq-group.com>
-Fixes: 109eee2f2a18 ("drm/layerscape: Add Freescale DCU DRM driver")
-Acked-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
-Link: https://patchwork.freedesktop.org/patch/msgid/20240926055552.1632448-2-alexander.stein@ew.tq-group.com
-Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/gpu/drm/fsl-dcu/Kconfig | 1 +
- drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c | 15 +++++++++++++++
- drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.h | 3 +++
- 3 files changed, 19 insertions(+)
-
-diff --git a/drivers/gpu/drm/fsl-dcu/Kconfig b/drivers/gpu/drm/fsl-dcu/Kconfig
-index d7dd8ba90e3af..9e5a35e7c00cc 100644
---- a/drivers/gpu/drm/fsl-dcu/Kconfig
-+++ b/drivers/gpu/drm/fsl-dcu/Kconfig
-@@ -8,6 +8,7 @@ config DRM_FSL_DCU
- select DRM_PANEL
- select REGMAP_MMIO
- select VIDEOMODE_HELPERS
-+ select MFD_SYSCON if SOC_LS1021A
- help
- Choose this option if you have an Freescale DCU chipset.
- If M is selected the module will be called fsl-dcu-drm.
-diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
-index 11b4a81bacc68..1065249807323 100644
---- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
-+++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
-@@ -100,6 +100,7 @@ static void fsl_dcu_irq_uninstall(struct drm_device *dev)
- static int fsl_dcu_load(struct drm_device *dev, unsigned long flags)
- {
- struct fsl_dcu_drm_device *fsl_dev = dev->dev_private;
-+ struct regmap *scfg;
- int ret;
-
- ret = fsl_dcu_drm_modeset_init(fsl_dev);
-@@ -108,6 +109,20 @@ static int fsl_dcu_load(struct drm_device *dev, unsigned long flags)
- return ret;
- }
-
-+ scfg = syscon_regmap_lookup_by_compatible("fsl,ls1021a-scfg");
-+ if (PTR_ERR(scfg) != -ENODEV) {
-+ /*
-+ * For simplicity, enable the PIXCLK unconditionally,
-+ * resulting in increased power consumption. Disabling
-+ * the clock in PM or on unload could be implemented as
-+ * a future improvement.
-+ */
-+ ret = regmap_update_bits(scfg, SCFG_PIXCLKCR, SCFG_PIXCLKCR_PXCEN,
-+ SCFG_PIXCLKCR_PXCEN);
-+ if (ret < 0)
-+ return dev_err_probe(dev->dev, ret, "failed to enable pixclk\n");
-+ }
-+
- ret = drm_vblank_init(dev, dev->mode_config.num_crtc);
- if (ret < 0) {
- dev_err(dev->dev, "failed to initialize vblank\n");
-diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.h b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.h
-index e2049a0e8a92a..566396013c04a 100644
---- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.h
-+++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.h
-@@ -160,6 +160,9 @@
- #define FSL_DCU_ARGB4444 12
- #define FSL_DCU_YUV422 14
-
-+#define SCFG_PIXCLKCR 0x28
-+#define SCFG_PIXCLKCR_PXCEN BIT(31)
-+
- #define VF610_LAYER_REG_NUM 9
- #define LS1021A_LAYER_REG_NUM 10
-
---
-2.43.0
-
+++ /dev/null
-From ee7adc74f8e5cf669ef85f7cc517a1b6473c6099 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Fri, 5 Jun 2020 09:32:15 +0200
-Subject: drm/fsl-dcu: Set GEM CMA functions with DRM_GEM_CMA_DRIVER_OPS
-
-From: Thomas Zimmermann <tzimmermann@suse.de>
-
-[ Upstream commit 6a32e55d18b34a787f7beaacc912b30b58022646 ]
-
-DRM_GEM_CMA_DRIVER_OPS sets the functions in struct drm_driver
-to their defaults. No functional changes are made.
-
-Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
-Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
-Link: https://patchwork.freedesktop.org/patch/msgid/20200605073247.4057-12-tzimmermann@suse.de
-Stable-dep-of: ffcde9e44d3e ("drm: fsl-dcu: enable PIXCLK on LS1021A")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c | 7 +------
- 1 file changed, 1 insertion(+), 6 deletions(-)
-
-diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
-index 113d2e30cf952..abbc1ddbf27f0 100644
---- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
-+++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
-@@ -141,12 +141,7 @@ static struct drm_driver fsl_dcu_drm_driver = {
- .irq_handler = fsl_dcu_drm_irq,
- .irq_preinstall = fsl_dcu_irq_uninstall,
- .irq_uninstall = fsl_dcu_irq_uninstall,
-- .gem_create_object = drm_gem_cma_create_object_default_funcs,
-- .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 = drm_gem_cma_prime_import_sg_table,
-- .gem_prime_mmap = drm_gem_cma_prime_mmap,
-- .dumb_create = drm_gem_cma_dumb_create,
-+ DRM_GEM_CMA_DRIVER_OPS,
- .fops = &fsl_dcu_drm_fops,
- .name = "fsl-dcu-drm",
- .desc = "Freescale DCU DRM",
---
-2.43.0
-
+++ /dev/null
-From 73437846418b6f526094a7add1159ad5ac2dfda0 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Fri, 5 Jun 2020 09:32:14 +0200
-Subject: drm/fsl-dcu: Use GEM CMA object functions
-
-From: Thomas Zimmermann <tzimmermann@suse.de>
-
-[ Upstream commit 929027087f527ef1d9e906e4ebeca7eb3a36042e ]
-
-Create GEM objects with drm_gem_cma_create_object_default_funcs(), which
-allocates the object and sets CMA's default object functions. Corresponding
-callbacks in struct drm_driver are cleared. No functional changes are made.
-
-Driver and object-function instances use the same callback functions, with
-the exception of vunmap. The implementation of vunmap is empty and left out
-in CMA's default object functions.
-
-v3:
- * convert to DRIVER_OPS macro in a separate patch
-
-Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
-Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
-Link: https://patchwork.freedesktop.org/patch/msgid/20200605073247.4057-11-tzimmermann@suse.de
-Stable-dep-of: ffcde9e44d3e ("drm: fsl-dcu: enable PIXCLK on LS1021A")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c | 6 +-----
- 1 file changed, 1 insertion(+), 5 deletions(-)
-
-diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
-index f15d2e7967a3e..113d2e30cf952 100644
---- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
-+++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
-@@ -141,14 +141,10 @@ static struct drm_driver fsl_dcu_drm_driver = {
- .irq_handler = fsl_dcu_drm_irq,
- .irq_preinstall = fsl_dcu_irq_uninstall,
- .irq_uninstall = fsl_dcu_irq_uninstall,
-- .gem_free_object_unlocked = drm_gem_cma_free_object,
-- .gem_vm_ops = &drm_gem_cma_vm_ops,
-+ .gem_create_object = drm_gem_cma_create_object_default_funcs,
- .prime_handle_to_fd = drm_gem_prime_handle_to_fd,
- .prime_fd_to_handle = drm_gem_prime_fd_to_handle,
-- .gem_prime_get_sg_table = drm_gem_cma_prime_get_sg_table,
- .gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table,
-- .gem_prime_vmap = drm_gem_cma_prime_vmap,
-- .gem_prime_vunmap = drm_gem_cma_prime_vunmap,
- .gem_prime_mmap = drm_gem_cma_prime_mmap,
- .dumb_create = drm_gem_cma_dumb_create,
- .fops = &fsl_dcu_drm_fops,
---
-2.43.0
-
asoc-fsl_micfil-fix-regmap_write_bits-usage.patch
bpf-fix-the-xdp_adjust_tail-sample-prog-issue.patch
wifi-mwifiex-fix-memcpy-field-spanning-write-warning.patch
-drm-fsl-dcu-use-gem-cma-object-functions.patch
-drm-fsl-dcu-set-gem-cma-functions-with-drm_gem_cma_d.patch
-drm-fsl-dcu-convert-to-linux-irq-interfaces.patch
-drm-fsl-dcu-enable-pixclk-on-ls1021a.patch
drm-panfrost-remove-unused-id_mask-from-struct-panfr.patch
drm-msm-adreno-use-irqf_no_autoen-flag-in-request_ir.patch
drm-etnaviv-dump-fix-sparse-warnings.patch