[RESEND PATCH v11 11/18] drm: exynos: dsi: Add atomic_get_input_bus_fmts
Marek Vasut
marex at denx.de
Tue Jan 24 21:19:42 UTC 2023
On 1/24/23 22:16, Jagan Teki wrote:
> On Wed, Jan 25, 2023 at 2:15 AM Marek Vasut <marex at denx.de> 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;
}
More information about the dri-devel
mailing list