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