Re: [RFC PATCH 4/6] drm: mxc-epdc: Add update management

Jonathan Neuschäfer
2022-03-12T20:22:34Z

[-- Attachment #1: Type: text/plain, Size: 2120 bytes --]

On Sun, Feb 06, 2022 at 09:00:14AM +0100, Andreas Kemnade wrote:
> The EPDC can process some dirty rectangles at a time, pick them up and
> forward them to the controller. Only processes not involving PXP are
> supported at the moment. Due to that and to work with more waveforms,
> there is some masking/shifting done. It was tested with the factory
> waveforms of Kobo Clara HD, Tolino Shine 3, and Tolino Shine 2HD.
> Also the waveform called epdc_E060SCM.fw from NXP BSP works with the
> i.MX6SL devices.
>
> Signed-off-by: Andreas Kemnade <andreas@kemnade.info>
> ---

[...]
> + adj_update_region = upd_data_list->update_desc->upd_data.update_region;
> + /*
> + * Is the working buffer idle?
> + * If the working buffer is busy, we must wait for the resource
> + * to become free. The IST will signal this event.

What does IST mean?

> +void mxc_epdc_draw_mode0(struct mxc_epdc *priv)

What does mode 0 imply? An overview of the possible modes would be
appreciated.

> +{
> + u32 *upd_buf_ptr;
> + int i;
> + u32 xres, yres;
> +
> + upd_buf_ptr = (u32 *)priv->epdc_mem_virt;
> +
> + epdc_working_buf_intr(priv, true);
> + epdc_lut_complete_intr(priv, 0, true);
> +
> + /* Use unrotated (native) width/height */
> + xres = priv->epdc_mem_width;
> + yres = priv->epdc_mem_height;
> +
> + /* Program EPDC update to process buffer */
> + epdc_set_update_area(priv, priv->epdc_mem_phys, 0, 0, xres, yres, 0);
> + epdc_submit_update(priv, 0, priv->wv_modes.mode_init, UPDATE_MODE_FULL,
> + false, true, 0xFF);
> +
> + dev_dbg(priv->drm.dev, "Mode0 update - Waiting for LUT to complete...\n");
> +
> + /* Will timeout after ~4-5 seconds */
> +
> + for (i = 0; i < 40; i++) {
> + if (!epdc_is_lut_active(priv, 0)) {
> + dev_dbg(priv->drm.dev, "Mode0 init complete\n");
> + return;
> + }
> + msleep(100);
> + }
> +
> + dev_err(priv->drm.dev, "Mode0 init failed!\n");
> +}

> +#define WAVEFORM_MODE_GLR16 4
> +#define WAVEFORM_MODE_GLD16 5
> +#define WAVEFORM_MODE_AUTO 257

(How) are these mode numbers related to "mode 0"?

Jonathan

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]