drm/panel-notatek-nt35510: Fix MTP read init
authorLinus Walleij <linus.walleij@linaro.org>
Sat, 8 Aug 2020 22:43:22 +0000 (00:43 +0200)
committerLinus Walleij <linus.walleij@linaro.org>
Tue, 11 Aug 2020 20:27:10 +0000 (22:27 +0200)
In order to successfully read ID of the MTP panel the
panel MTP control page must be unlocked. Previously
this wasn't encountered because in the setup with this
panel the power wasn't ever really dropped. When power
gets dropped from the panel, MTP needs to be unlocked.

Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Cc: newbytee@protonmail.com
Cc: Stephan Gerhold <stephan@gerhold.net>
Link: https://patchwork.freedesktop.org/patch/msgid/20200808224322.1507713-1-linus.walleij@linaro.org
drivers/gpu/drm/panel/panel-novatek-nt35510.c

index e67d095..64c8cf2 100644 (file)
@@ -376,6 +376,10 @@ struct nt35510 {
 };
 
 /* Manufacturer command has strictly this byte sequence */
+static const u8 nt35510_mauc_mtp_read_param[] = { 0xAA, 0x55, 0x25, 0x01 };
+static const u8 nt35510_mauc_mtp_read_setting[] = { 0x01, 0x02, 0x00, 0x20,
+                                                   0x33, 0x13, 0x00, 0x40,
+                                                   0x00, 0x00, 0x23, 0x02 };
 static const u8 nt35510_mauc_select_page_0[] = { 0x55, 0xAA, 0x52, 0x08, 0x00 };
 static const u8 nt35510_mauc_select_page_1[] = { 0x55, 0xAA, 0x52, 0x08, 0x01 };
 static const u8 nt35510_vgh_on[] = { 0x01 };
@@ -698,6 +702,18 @@ static int nt35510_power_on(struct nt35510 *nt)
                usleep_range(120000, 140000);
        }
 
+       ret = nt35510_send_long(nt, dsi, MCS_CMD_MTP_READ_PARAM,
+                               ARRAY_SIZE(nt35510_mauc_mtp_read_param),
+                               nt35510_mauc_mtp_read_param);
+       if (ret)
+               return ret;
+
+       ret = nt35510_send_long(nt, dsi, MCS_CMD_MTP_READ_SETTING,
+                               ARRAY_SIZE(nt35510_mauc_mtp_read_setting),
+                               nt35510_mauc_mtp_read_setting);
+       if (ret)
+               return ret;
+
        ret = nt35510_read_id(nt);
        if (ret)
                return ret;