The ssd132x_update_rect had to calculate the column address twice in
the same function by dividing the byte address and the segment_width.
Optimize this by hoisting the result into a col variable.

Renamed the "y" variable to "row" to match the change made in the x
axis.

Signed-off-by: Amit Barzilai <[email protected]>
---
 drivers/gpu/drm/solomon/ssd130x.c | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/solomon/ssd130x.c 
b/drivers/gpu/drm/solomon/ssd130x.c
index 77aa5585a46c..fee35496a324 100644
--- a/drivers/gpu/drm/solomon/ssd130x.c
+++ b/drivers/gpu/drm/solomon/ssd130x.c
@@ -835,9 +835,9 @@ static int ssd132x_update_rect(struct ssd130x_device 
*ssd130x,
                               struct drm_rect *rect, u8 *buf,
                               u8 *data_array)
 {
-       unsigned int x = rect->x1;
-       unsigned int y = rect->y1;
        unsigned int segment_width = SSD132X_SEGMENT_WIDTH;
+       unsigned int col = rect->x1 / segment_width;
+       unsigned int row = rect->y1;
        unsigned int width = drm_rect_width(rect);
        unsigned int height = drm_rect_height(rect);
        unsigned int columns = DIV_ROUND_UP(width, segment_width);
@@ -847,7 +847,7 @@ static int ssd132x_update_rect(struct ssd130x_device 
*ssd130x,
        unsigned int i, j;
        int ret;
 
-       drm_WARN_ONCE(drm, x % segment_width != 0, "x must be aligned to screen 
segment\n");
+       drm_WARN_ONCE(drm, rect->x1 % segment_width != 0, "x must be aligned to 
screen segment\n");
 
        /*
         * The screen is divided in Segment and Common outputs, where
@@ -864,13 +864,12 @@ static int ssd132x_update_rect(struct ssd130x_device 
*ssd130x,
         */
 
        /* Set column start and end */
-       ret = ssd130x_write_cmd(ssd130x, 3, SSD132X_SET_COL_RANGE, x / 
segment_width,
-                               x / segment_width + columns - 1);
+       ret = ssd130x_write_cmd(ssd130x, 3, SSD132X_SET_COL_RANGE, col, col + 
columns - 1);
        if (ret < 0)
                return ret;
 
        /* Set row start and end */
-       ret = ssd130x_write_cmd(ssd130x, 3, SSD132X_SET_ROW_RANGE, y, y + rows 
- 1);
+       ret = ssd130x_write_cmd(ssd130x, 3, SSD132X_SET_ROW_RANGE, row, row + 
rows - 1);
        if (ret < 0)
                return ret;
 
-- 
2.54.0

Reply via email to