drm/amdgpu: expand sdma copy_buffer interface with tmz parameter
[linux-2.6-microblaze.git] / drivers / gpu / drm / drm_mipi_dbi.c
index 16bff1b..558baf9 100644 (file)
@@ -24,7 +24,6 @@
 #include <drm/drm_modes.h>
 #include <drm/drm_probe_helper.h>
 #include <drm/drm_rect.h>
-#include <drm/drm_vblank.h>
 #include <video/mipi_display.h>
 
 #define MIPI_DBI_MAX_SPI_READ_SPEED 2000000 /* 2MHz */
@@ -238,6 +237,23 @@ int mipi_dbi_buf_copy(void *dst, struct drm_framebuffer *fb,
 }
 EXPORT_SYMBOL(mipi_dbi_buf_copy);
 
+static void mipi_dbi_set_window_address(struct mipi_dbi_dev *dbidev,
+                                       unsigned int xs, unsigned int xe,
+                                       unsigned int ys, unsigned int ye)
+{
+       struct mipi_dbi *dbi = &dbidev->dbi;
+
+       xs += dbidev->left_offset;
+       xe += dbidev->left_offset;
+       ys += dbidev->top_offset;
+       ye += dbidev->top_offset;
+
+       mipi_dbi_command(dbi, MIPI_DCS_SET_COLUMN_ADDRESS, (xs >> 8) & 0xff,
+                        xs & 0xff, (xe >> 8) & 0xff, xe & 0xff);
+       mipi_dbi_command(dbi, MIPI_DCS_SET_PAGE_ADDRESS, (ys >> 8) & 0xff,
+                        ys & 0xff, (ye >> 8) & 0xff, ye & 0xff);
+}
+
 static void mipi_dbi_fb_dirty(struct drm_framebuffer *fb, struct drm_rect *rect)
 {
        struct drm_gem_object *gem = drm_gem_fb_get_obj(fb, 0);
@@ -271,12 +287,8 @@ static void mipi_dbi_fb_dirty(struct drm_framebuffer *fb, struct drm_rect *rect)
                tr = cma_obj->vaddr;
        }
 
-       mipi_dbi_command(dbi, MIPI_DCS_SET_COLUMN_ADDRESS,
-                        (rect->x1 >> 8) & 0xff, rect->x1 & 0xff,
-                        ((rect->x2 - 1) >> 8) & 0xff, (rect->x2 - 1) & 0xff);
-       mipi_dbi_command(dbi, MIPI_DCS_SET_PAGE_ADDRESS,
-                        (rect->y1 >> 8) & 0xff, rect->y1 & 0xff,
-                        ((rect->y2 - 1) >> 8) & 0xff, (rect->y2 - 1) & 0xff);
+       mipi_dbi_set_window_address(dbidev, rect->x1, rect->x2 - 1, rect->y1,
+                                   rect->y2 - 1);
 
        ret = mipi_dbi_command_buf(dbi, MIPI_DCS_WRITE_MEMORY_START, tr,
                                   width * height * 2);
@@ -299,18 +311,10 @@ void mipi_dbi_pipe_update(struct drm_simple_display_pipe *pipe,
                          struct drm_plane_state *old_state)
 {
        struct drm_plane_state *state = pipe->plane.state;
-       struct drm_crtc *crtc = &pipe->crtc;
        struct drm_rect rect;
 
        if (drm_atomic_helper_damage_merged(old_state, state, &rect))
                mipi_dbi_fb_dirty(state->fb, &rect);
-
-       if (crtc->state->event) {
-               spin_lock_irq(&crtc->dev->event_lock);
-               drm_crtc_send_vblank_event(crtc, crtc->state->event);
-               spin_unlock_irq(&crtc->dev->event_lock);
-               crtc->state->event = NULL;
-       }
 }
 EXPORT_SYMBOL(mipi_dbi_pipe_update);
 
@@ -366,10 +370,7 @@ static void mipi_dbi_blank(struct mipi_dbi_dev *dbidev)
 
        memset(dbidev->tx_buf, 0, len);
 
-       mipi_dbi_command(dbi, MIPI_DCS_SET_COLUMN_ADDRESS, 0, 0,
-                        ((width - 1) >> 8) & 0xFF, (width - 1) & 0xFF);
-       mipi_dbi_command(dbi, MIPI_DCS_SET_PAGE_ADDRESS, 0, 0,
-                        ((height - 1) >> 8) & 0xFF, (height - 1) & 0xFF);
+       mipi_dbi_set_window_address(dbidev, 0, width - 1, 0, height - 1);
        mipi_dbi_command_buf(dbi, MIPI_DCS_WRITE_MEMORY_START,
                             (u8 *)dbidev->tx_buf, len);