drm/omap: dss: Add support for reporting memory bandwidth limitation
authorPeter Ujfalusi <peter.ujfalusi@ti.com>
Thu, 30 Nov 2017 12:12:36 +0000 (14:12 +0200)
committerTomi Valkeinen <tomi.valkeinen@ti.com>
Tue, 19 Dec 2017 08:32:00 +0000 (10:32 +0200)
The get_memory_bandwidth_limit() in dispc_ops can be used to query the
memory bandwidth limit of dispc by upper layers.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
drivers/gpu/drm/omapdrm/dss/dispc.c
drivers/gpu/drm/omapdrm/dss/omapdss.h

index 0f4fdb221498e3144aa44a760a01fba0d9db5be1..90f9ad89af0d6750f6213276c43a04b76fafba96 100644 (file)
@@ -4325,6 +4325,17 @@ static void dispc_free_irq(void *dev_id)
        dispc.user_data = NULL;
 }
 
+static u32 dispc_get_memory_bandwidth_limit(void)
+{
+       u32 limit = 0;
+
+       /* Optional maximum memory bandwidth */
+       of_property_read_u32(dispc.pdev->dev.of_node, "max-memory-bandwidth",
+                            &limit);
+
+       return limit;
+}
+
 /*
  * Workaround for errata i734 in DSS dispc
  *  - LCD1 Gamma Correction Is Not Working When GFX Pipe Is Disabled
@@ -4497,6 +4508,8 @@ static const struct dispc_ops dispc_ops = {
        .get_num_ovls = dispc_get_num_ovls,
        .get_num_mgrs = dispc_get_num_mgrs,
 
+       .get_memory_bandwidth_limit = dispc_get_memory_bandwidth_limit,
+
        .mgr_enable = dispc_mgr_enable,
        .mgr_is_enabled = dispc_mgr_is_enabled,
        .mgr_get_vsync_irq = dispc_mgr_get_vsync_irq,
index 990422b357849ec495f7c9fc9a3a6efbf4d4a0d0..c2166d2d3f2944cce36587dfba041f073c60e6a6 100644 (file)
@@ -695,6 +695,8 @@ struct dispc_ops {
        int (*get_num_ovls)(void);
        int (*get_num_mgrs)(void);
 
+       u32 (*get_memory_bandwidth_limit)(void);
+
        void (*mgr_enable)(enum omap_channel channel, bool enable);
        bool (*mgr_is_enabled)(enum omap_channel channel);
        u32 (*mgr_get_vsync_irq)(enum omap_channel channel);