Re: [RESEND PATCH v11 11/18] drm: exynos: dsi: Add atomic_get_input_bus_fmts

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 1/24/23 22:16, Jagan Teki wrote:
On Wed, Jan 25, 2023 at 2:15 AM Marek Vasut <marex@xxxxxxx> wrote:

On 1/23/23 16:12, Jagan Teki wrote:

[...]

+static bool exynos_dsi_pixel_output_fmt_supported(u32 fmt)
+{
+     int i;

if (fmt == MEDIA_BUS_FMT_FIXED)
   return false;

+     for (i = 0; i < ARRAY_SIZE(exynos_dsi_pixel_output_fmts); i++) {
+             if (exynos_dsi_pixel_output_fmts[i] == fmt)
+                     return true;
+     }
+
+     return false;
+}
+
+static u32 *
+exynos_dsi_atomic_get_input_bus_fmts(struct drm_bridge *bridge,
+                                  struct drm_bridge_state *bridge_state,
+                                  struct drm_crtc_state *crtc_state,
+                                  struct drm_connector_state *conn_state,
+                                  u32 output_fmt,
+                                  unsigned int *num_input_fmts)
+{
+     u32 *input_fmts;
+
+     if (!exynos_dsi_pixel_output_fmt_supported(output_fmt))
+             /*
+              * Some bridge/display drivers are still not able to pass the
+              * correct format, so handle those pipelines by falling back
+              * to the default format till the supported formats finalized.
+              */
+             output_fmt = MEDIA_BUS_FMT_RGB888_1X24;

You can move this ^ past the kmalloc() call, so in unlikely case the
kmalloc() fails, it would fail first.

I didn't get this point, what do we need to do if
exynos_dsi_pixel_output_fmt_supported returns false?

{
	u32 *input_fmts;

	input_fmts = kmalloc(sizeof(*input_fmts), GFP_KERNEL);
	if (!input_fmts)
		return NULL;

	if (!exynos_dsi_pixel_output_fmt_supported(output_fmt))
		/* ... the comment ... */
		output_fmt = MEDIA_BUS_FMT_RGB888_1X24;

	input_fmts[0] = output_fmt;
	*num_input_fmts = 1;

	return input_fmts;
}



[Index of Archives]     [Linux SoC Development]     [Linux Rockchip Development]     [Linux for Synopsys ARC Processors]    
  • [Linux on Unisoc (RDA Micro) SoCs]     [Linux Actions SoC]     [Linux USB Development]     [Video for Linux]     [Linux Audio Users]     [Linux SCSI]     [Yosemite News]

  •   Powered by Linux