From c7ffe5eff3c5aa634e9bff3f0edb2e3dd6c47614 Mon Sep 17 00:00:00 2001 From: Raymond Hackley Date: Wed, 19 Jun 2024 12:42:14 +0000 Subject: [PATCH 1/7] lk2nd: display: simplefb: Only support arguments if const-splash is used Suggested-by: Nikita Travkin --- lk2nd/display/simplefb.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lk2nd/display/simplefb.c b/lk2nd/display/simplefb.c index 51fe5b66a..b724d527d 100644 --- a/lk2nd/display/simplefb.c +++ b/lk2nd/display/simplefb.c @@ -28,7 +28,9 @@ static int lk2nd_simplefb_dt_update(void *dtb, const char *cmdline, int ret, resmem_offset, chosen_offset, offset; uint32_t mem_ph, fb_size; char tmp[32], args[16]; +#if WITH_LK2ND_DISPLAY_CONT_SPLASH void *rel_base; +#endif if (!fb) return 0; @@ -39,6 +41,7 @@ static int lk2nd_simplefb_dt_update(void *dtb, const char *cmdline, if (!lk2nd_cmdline_scan_arg(cmdline, "lk2nd.pass-simplefb", args, sizeof(args))) return 0; +#if WITH_LK2ND_DISPLAY_CONT_SPLASH if (!strcmp(args, "autorefresh")) { dprintf(INFO, "simplefb: Enabling autorefresh\n"); mdp_enable_autorefresh(fb); @@ -57,6 +60,7 @@ static int lk2nd_simplefb_dt_update(void *dtb, const char *cmdline, mdp_set_rgb565(fb); else if (strstr(args, "xrgb8888")) mdp_set_xrgb8888(fb); +#endif fb_size = fb->stride * fb->bpp/8 * fb->height; From ddeedd5fdc65e303b4d85579e836f15557f3a57f Mon Sep 17 00:00:00 2001 From: Raymond Hackley Date: Tue, 18 Jun 2024 13:39:04 +0000 Subject: [PATCH 2/7] doc: building: document LK2ND_DISPLAY --- Documentation/building.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Documentation/building.md b/Documentation/building.md index 45c93e54f..bf0a4c75c 100644 --- a/Documentation/building.md +++ b/Documentation/building.md @@ -70,7 +70,9 @@ Set the board compatible value. Use this dtb for lk1st build. -#### `LK2ND_DISPLAY=` - Display panel driver (TBD) +#### `LK2ND_DISPLAY=` - Display panel driver + +Set specific panel driver. By default it uses `cont-splash`. From e17211b8d3bc7fbc6d303e0c85da1df84e7e2aca Mon Sep 17 00:00:00 2001 From: Minecrell Date: Fri, 14 Jan 2022 21:12:51 +0100 Subject: [PATCH 3/7] lk2nd: display: panel: Introduce custom oem_panel implementation The oem_panel implementation from Qualcomm is terrible because it always includes *all* panel implementations in the binary and requires writing lots of code to add support for a new panel. To make this easier for lk1st, let's add a custom oem_panel implementation. The panel implementation is automatically selected using LK1ST_PANEL= on the make command line, which should be the panel ID in lower case, e.g. LK1ST_PANEL=adv7533_1080p_video. --- lk2nd/display/panel/generated/panels.h | 6 +++ lk2nd/display/panel/oem_panel.c | 60 ++++++++++++++++++++++++++ lk2nd/display/panel/rules.mk | 7 +++ lk2nd/display/rules.mk | 8 ++-- 4 files changed, 77 insertions(+), 4 deletions(-) create mode 100644 lk2nd/display/panel/generated/panels.h create mode 100644 lk2nd/display/panel/oem_panel.c create mode 100644 lk2nd/display/panel/rules.mk diff --git a/lk2nd/display/panel/generated/panels.h b/lk2nd/display/panel/generated/panels.h new file mode 100644 index 000000000..23934941e --- /dev/null +++ b/lk2nd/display/panel/generated/panels.h @@ -0,0 +1,6 @@ +// SPDX-License-Identifier: GPL-2.0-only + +#ifndef _LK2ND_GENERATED_PANELS_H_ +#define _LK2ND_GENERATED_PANELS_H_ + +#endif /* _LK2ND_GENERATED_PANELS_H_ */ diff --git a/lk2nd/display/panel/oem_panel.c b/lk2nd/display/panel/oem_panel.c new file mode 100644 index 000000000..0cf8cf20b --- /dev/null +++ b/lk2nd/display/panel/oem_panel.c @@ -0,0 +1,60 @@ +// SPDX-License-Identifier: GPL-2.0-only + +#include +#include +#include +#include +#include + +#include +#include + +#include "generated/panels.h" + +#include "../../device/device.h" + +#if TARGET_MSM8916 +uint32_t panel_regulator_settings[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +#endif + +int oem_panel_rotation() +{ + return NO_ERROR; +} + +int oem_panel_on() +{ + return NO_ERROR; +} + +int oem_panel_off() +{ + return NO_ERROR; +} + +uint32_t oem_panel_max_auto_detect_panels() +{ + return 0; +} + +#define _panel_select(panel) panel_##panel##_select +#define panel_select(panel) _panel_select(panel) + +int oem_panel_select(const char *panel_name, struct panel_struct *panel, + struct msm_panel_info *pinfo, struct mdss_dsi_phy_ctrl *phy_db) +{ + panel_select(LK2ND_DISPLAY)(panel, pinfo, phy_db); + lk2nd_dev.panel.name = panel->paneldata->panel_node_id; + + +#if TARGET_MSM8916 + if (phy_db->regulator_mode == DSI_PHY_REGULATOR_LDO_MODE) + memcpy(panel_regulator_settings, ldo_regulator_settings, REGULATOR_SIZE); + else + memcpy(panel_regulator_settings, dcdc_regulator_settings, REGULATOR_SIZE); +#endif + + return PANEL_TYPE_DSI; +} diff --git a/lk2nd/display/panel/rules.mk b/lk2nd/display/panel/rules.mk new file mode 100644 index 000000000..f5fc09e65 --- /dev/null +++ b/lk2nd/display/panel/rules.mk @@ -0,0 +1,7 @@ +# SPDX-License-Identifier: BSD-3-Clause +LOCAL_DIR := $(GET_LOCAL_DIR) + +# Filter out original panel implementation +OBJS := $(filter-out target/$(TARGET)/oem_panel.o, $(OBJS)) + +OBJS += $(LOCAL_DIR)/oem_panel.o diff --git a/lk2nd/display/rules.mk b/lk2nd/display/rules.mk index 7f218ae78..048041e7c 100644 --- a/lk2nd/display/rules.mk +++ b/lk2nd/display/rules.mk @@ -1,14 +1,14 @@ # SPDX-License-Identifier: BSD-3-Clause LOCAL_DIR := $(GET_LOCAL_DIR) -# Filter out original panel implementation -OBJS := $(filter-out target/$(TARGET)/oem_panel.o, $(OBJS)) - OBJS += \ $(LOCAL_DIR)/simplefb.o ifeq ($(LK2ND_DISPLAY), cont-splash) include $(LOCAL_DIR)/cont-splash/rules.mk +else ifneq ($(LK2ND_DISPLAY),) +DEFINES += LK2ND_DISPLAY=$(LK2ND_DISPLAY) +include $(LOCAL_DIR)/panel/rules.mk else -$(error Display '$(LK2ND_DISPLAY)' is not supported yet) +$(error Please specify the display with LK2ND_DISPLAY option) endif From 35ba4e4bcaf047257a5ede67176235855068b7b7 Mon Sep 17 00:00:00 2001 From: Raymond Hackley Date: Wed, 19 Jun 2024 13:21:18 +0000 Subject: [PATCH 4/7] lk2nd: display: panel: fix no previous prototype for 'oem_panel_select' ``` lk2nd/display/panel/oem_panel.c:45:5: warning: no previous prototype for 'oem_panel_select' [-Wmissing-prototypes] 45 | int oem_panel_select(const char *panel_name, struct panel_struct *panel, | ^~~~~~~~~~~~~~~~ ``` --- lk2nd/display/panel/generated/panels.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lk2nd/display/panel/generated/panels.h b/lk2nd/display/panel/generated/panels.h index 23934941e..8b306662d 100644 --- a/lk2nd/display/panel/generated/panels.h +++ b/lk2nd/display/panel/generated/panels.h @@ -3,4 +3,7 @@ #ifndef _LK2ND_GENERATED_PANELS_H_ #define _LK2ND_GENERATED_PANELS_H_ +int oem_panel_select(const char *panel_name, struct panel_struct *panel, + struct msm_panel_info *pinfo, struct mdss_dsi_phy_ctrl *phy_db); + #endif /* _LK2ND_GENERATED_PANELS_H_ */ From 95aef286872d4d0aca9aa1fd7fdf278733920373 Mon Sep 17 00:00:00 2001 From: Raymond Hackley Date: Thu, 10 Nov 2022 17:05:21 +0000 Subject: [PATCH 5/7] lk2nd: display: panel: generated: Add hx8394d_720p_video for acer-a1-724 --- .../generated/lk_panel_hx8394d_720p_video.h | 261 ++++++++++++++++++ lk2nd/display/panel/generated/panels.h | 2 + 2 files changed, 263 insertions(+) create mode 100644 lk2nd/display/panel/generated/lk_panel_hx8394d_720p_video.h diff --git a/lk2nd/display/panel/generated/lk_panel_hx8394d_720p_video.h b/lk2nd/display/panel/generated/lk_panel_hx8394d_720p_video.h new file mode 100644 index 000000000..ea316359f --- /dev/null +++ b/lk2nd/display/panel/generated/lk_panel_hx8394d_720p_video.h @@ -0,0 +1,261 @@ +// SPDX-License-Identifier: GPL-2.0-only +// Copyright (c) 2024 FIXME +// Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: +// Copyright (c) 2014, The Linux Foundation. All rights reserved. (FIXME) + +#ifndef _PANEL_HX8394D_720P_VIDEO_H_ +#define _PANEL_HX8394D_720P_VIDEO_H_ + +#include +#include +#include +#include + +static struct panel_config hx8394d_720p_video_panel_data = { + .panel_node_id = "qcom,mdss_dsi_hx8394d_720p_video", + .panel_controller = "dsi:0:", + .panel_compatible = "qcom,mdss-dsi-panel", + .panel_type = 0, + .panel_destination = "DISPLAY_1", + /* .panel_orientation not supported yet */ + .panel_framerate = 60, + .panel_lp11_init = 0, + .panel_init_delay = 0, +}; + +static struct panel_resolution hx8394d_720p_video_panel_res = { + .panel_width = 720, + .panel_height = 1280, + .hfront_porch = 50, + .hback_porch = 50, + .hpulse_width = 50, + .hsync_skew = 0, + .vfront_porch = 9, + .vback_porch = 16, + .vpulse_width = 2, + /* Borders not supported yet */ +}; + +static struct color_info hx8394d_720p_video_color = { + .color_format = 24, + .color_order = DSI_RGB_SWAP_RGB, + .underflow_color = 0xff, + /* Borders and pixel packing not supported yet */ +}; + +static char hx8394d_720p_video_on_cmd_0[] = { + 0x04, 0x00, 0x39, 0xc0, 0xb9, 0xff, 0x83, 0x94 +}; +static char hx8394d_720p_video_on_cmd_1[] = { + 0x0c, 0x00, 0x39, 0xc0, 0xba, 0x73, 0x43, 0xa0, + 0x65, 0xb2, 0x89, 0x09, 0x40, 0x50, 0x00, 0x00 +}; +static char hx8394d_720p_video_on_cmd_2[] = { + 0x05, 0x00, 0x39, 0xc0, 0xb0, 0x00, 0x00, 0x7d, + 0x0c, 0xff, 0xff, 0xff +}; +static char hx8394d_720p_video_on_cmd_3[] = { + 0x10, 0x00, 0x39, 0xc0, 0xb1, 0x6c, 0x15, 0x15, + 0x24, 0x04, 0x11, 0xf1, 0x80, 0xe4, 0x97, 0x23, + 0x80, 0xc0, 0xd2, 0x58 +}; +static char hx8394d_720p_video_on_cmd_4[] = { + 0x0c, 0x00, 0x39, 0xc0, 0xb2, 0x00, 0x64, 0x10, + 0x07, 0x22, 0x1c, 0x08, 0x08, 0x1c, 0x4d, 0x00 +}; +static char hx8394d_720p_video_on_cmd_5[] = { + 0x0d, 0x00, 0x39, 0xc0, 0xb4, 0x00, 0xff, 0x03, + 0x5a, 0x03, 0x5a, 0x03, 0x5a, 0x01, 0x6a, 0x30, + 0x6a, 0xff, 0xff, 0xff +}; +static char hx8394d_720p_video_on_cmd_6[] = { + 0x02, 0x00, 0x39, 0xc0, 0xbc, 0x07, 0xff, 0xff +}; +static char hx8394d_720p_video_on_cmd_7[] = { + 0x04, 0x00, 0x39, 0xc0, 0xbf, 0x41, 0x0e, 0x01 +}; +static char hx8394d_720p_video_on_cmd_8[] = { + 0x1f, 0x00, 0x39, 0xc0, 0xd3, 0x00, 0x06, 0x00, + 0x40, 0x07, 0x08, 0x00, 0x32, 0x10, 0x07, 0x00, + 0x07, 0x54, 0x15, 0x0f, 0x05, 0x04, 0x02, 0x12, + 0x10, 0x05, 0x07, 0x33, 0x33, 0x0b, 0x0b, 0x37, + 0x10, 0x07, 0x07, 0xff +}; +static char hx8394d_720p_video_on_cmd_9[] = { + 0x2d, 0x00, 0x39, 0xc0, 0xd5, 0x04, 0x05, 0x06, + 0x07, 0x00, 0x01, 0x02, 0x03, 0x20, 0x21, 0x22, + 0x23, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x19, 0x19, 0x18, 0x18, 0x18, 0x18, 0x1b, + 0x1b, 0x1a, 0x1a, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0xff, 0xff, 0xff +}; +static char hx8394d_720p_video_on_cmd_10[] = { + 0x2d, 0x00, 0x39, 0xc0, 0xd6, 0x03, 0x02, 0x01, + 0x00, 0x07, 0x06, 0x05, 0x04, 0x23, 0x22, 0x21, + 0x20, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x58, + 0x58, 0x18, 0x18, 0x19, 0x19, 0x18, 0x18, 0x1b, + 0x1b, 0x1a, 0x1a, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0xff, 0xff, 0xff +}; +static char hx8394d_720p_video_on_cmd_11[] = { + 0x02, 0x00, 0x39, 0xc0, 0xcc, 0x01, 0xff, 0xff +}; +static char hx8394d_720p_video_on_cmd_12[] = { + 0x03, 0x00, 0x39, 0xc0, 0xb6, 0x4c, 0x4c, 0xff +}; +static char hx8394d_720p_video_on_cmd_13[] = { + 0x2b, 0x00, 0x39, 0xc0, 0xe0, 0x00, 0x10, 0x16, + 0x2d, 0x33, 0x3f, 0x23, 0x3e, 0x07, 0x0b, 0x0d, + 0x17, 0x0e, 0x12, 0x14, 0x12, 0x13, 0x06, 0x11, + 0x13, 0x18, 0x00, 0x0f, 0x16, 0x2e, 0x33, 0x3f, + 0x23, 0x3d, 0x07, 0x0b, 0x0d, 0x18, 0x0f, 0x12, + 0x14, 0x12, 0x14, 0x07, 0x11, 0x12, 0x17, 0xff +}; +static char hx8394d_720p_video_on_cmd_14[] = { + 0x03, 0x00, 0x39, 0xc0, 0xc0, 0x30, 0x14, 0xff +}; +static char hx8394d_720p_video_on_cmd_15[] = { + 0x05, 0x00, 0x39, 0xc0, 0xc7, 0x00, 0xc0, 0x40, + 0xc0, 0xff, 0xff, 0xff +}; +static char hx8394d_720p_video_on_cmd_16[] = { + 0x02, 0x00, 0x39, 0xc0, 0xdf, 0x8e, 0xff, 0xff +}; +static char hx8394d_720p_video_on_cmd_17[] = { + 0x02, 0x00, 0x39, 0xc0, 0x36, 0x02, 0xff, 0xff +}; +static char hx8394d_720p_video_on_cmd_18[] = { + 0x02, 0x00, 0x39, 0xc0, 0xd2, 0x66, 0xff, 0xff +}; +static char hx8394d_720p_video_on_cmd_19[] = { + 0x11, 0x00, 0x05, 0x80 +}; +static char hx8394d_720p_video_on_cmd_20[] = { + 0x04, 0x00, 0x39, 0xc0, 0xc9, 0x1f, 0x00, 0x14 +}; +static char hx8394d_720p_video_on_cmd_21[] = { + 0x29, 0x00, 0x05, 0x80 +}; +static char hx8394d_720p_video_on_cmd_22[] = { + 0x53, 0x24, 0x15, 0x80 +}; +static char hx8394d_720p_video_on_cmd_23[] = { + 0x55, 0x01, 0x15, 0x80 +}; + +static struct mipi_dsi_cmd hx8394d_720p_video_on_command[] = { + { sizeof(hx8394d_720p_video_on_cmd_0), hx8394d_720p_video_on_cmd_0, 0 }, + { sizeof(hx8394d_720p_video_on_cmd_1), hx8394d_720p_video_on_cmd_1, 0 }, + { sizeof(hx8394d_720p_video_on_cmd_2), hx8394d_720p_video_on_cmd_2, 0 }, + { sizeof(hx8394d_720p_video_on_cmd_3), hx8394d_720p_video_on_cmd_3, 0 }, + { sizeof(hx8394d_720p_video_on_cmd_4), hx8394d_720p_video_on_cmd_4, 0 }, + { sizeof(hx8394d_720p_video_on_cmd_5), hx8394d_720p_video_on_cmd_5, 0 }, + { sizeof(hx8394d_720p_video_on_cmd_6), hx8394d_720p_video_on_cmd_6, 0 }, + { sizeof(hx8394d_720p_video_on_cmd_7), hx8394d_720p_video_on_cmd_7, 0 }, + { sizeof(hx8394d_720p_video_on_cmd_8), hx8394d_720p_video_on_cmd_8, 0 }, + { sizeof(hx8394d_720p_video_on_cmd_9), hx8394d_720p_video_on_cmd_9, 0 }, + { sizeof(hx8394d_720p_video_on_cmd_10), hx8394d_720p_video_on_cmd_10, 0 }, + { sizeof(hx8394d_720p_video_on_cmd_11), hx8394d_720p_video_on_cmd_11, 0 }, + { sizeof(hx8394d_720p_video_on_cmd_12), hx8394d_720p_video_on_cmd_12, 0 }, + { sizeof(hx8394d_720p_video_on_cmd_13), hx8394d_720p_video_on_cmd_13, 0 }, + { sizeof(hx8394d_720p_video_on_cmd_14), hx8394d_720p_video_on_cmd_14, 0 }, + { sizeof(hx8394d_720p_video_on_cmd_15), hx8394d_720p_video_on_cmd_15, 0 }, + { sizeof(hx8394d_720p_video_on_cmd_16), hx8394d_720p_video_on_cmd_16, 0 }, + { sizeof(hx8394d_720p_video_on_cmd_17), hx8394d_720p_video_on_cmd_17, 0 }, + { sizeof(hx8394d_720p_video_on_cmd_18), hx8394d_720p_video_on_cmd_18, 0 }, + { sizeof(hx8394d_720p_video_on_cmd_19), hx8394d_720p_video_on_cmd_19, 200 }, + { sizeof(hx8394d_720p_video_on_cmd_20), hx8394d_720p_video_on_cmd_20, 0 }, + { sizeof(hx8394d_720p_video_on_cmd_21), hx8394d_720p_video_on_cmd_21, 10 }, + { sizeof(hx8394d_720p_video_on_cmd_22), hx8394d_720p_video_on_cmd_22, 0 }, + { sizeof(hx8394d_720p_video_on_cmd_23), hx8394d_720p_video_on_cmd_23, 5 }, +}; + +static char hx8394d_720p_video_off_cmd_0[] = { + 0x28, 0x00, 0x05, 0x80 +}; +static char hx8394d_720p_video_off_cmd_1[] = { + 0x10, 0x00, 0x05, 0x80 +}; + +static struct mipi_dsi_cmd hx8394d_720p_video_off_command[] = { + { sizeof(hx8394d_720p_video_off_cmd_0), hx8394d_720p_video_off_cmd_0, 0 }, + { sizeof(hx8394d_720p_video_off_cmd_1), hx8394d_720p_video_off_cmd_1, 0 }, +}; + +static struct command_state hx8394d_720p_video_state = { + .oncommand_state = 0, + .offcommand_state = 1, +}; + +static struct commandpanel_info hx8394d_720p_video_command_panel = { + /* Unused, this is a video mode panel */ +}; + +static struct videopanel_info hx8394d_720p_video_video_panel = { + .hsync_pulse = 1, + .hfp_power_mode = 0, + .hbp_power_mode = 0, + .hsa_power_mode = 0, + .bllp_eof_power_mode = 1, + .bllp_power_mode = 1, + .traffic_mode = 2, + /* This is bllp_eof_power_mode and bllp_power_mode combined */ + .bllp_eof_power = 1 << 3 | 1 << 0, +}; + +static struct lane_configuration hx8394d_720p_video_lane_config = { + .dsi_lanes = 4, + .dsi_lanemap = 0, + .lane0_state = 1, + .lane1_state = 1, + .lane2_state = 1, + .lane3_state = 1, + .force_clk_lane_hs = 0, +}; + +static const uint32_t hx8394d_720p_video_timings[] = { + 0x7b, 0x1a, 0x10, 0x00, 0x3c, 0x91, 0x1c, 0x1c, 0x15, 0x03, 0x04, 0x00 +}; + +static struct panel_timing hx8394d_720p_video_timing_info = { + .tclk_post = 0x1f, + .tclk_pre = 0x2d, +}; + +static struct panel_reset_sequence hx8394d_720p_video_reset_seq = { + .pin_state = { 1, 0, 1 }, + .sleep = { 20, 1, 20 }, + .pin_direction = 2, +}; + +static struct backlight hx8394d_720p_video_backlight = { + .bl_interface_type = BL_DCS, + .bl_min_level = 1, + .bl_max_level = 225, +}; + +static inline void panel_hx8394d_720p_video_select(struct panel_struct *panel, + struct msm_panel_info *pinfo, + struct mdss_dsi_phy_ctrl *phy_db) +{ + panel->paneldata = &hx8394d_720p_video_panel_data; + panel->panelres = &hx8394d_720p_video_panel_res; + panel->color = &hx8394d_720p_video_color; + panel->videopanel = &hx8394d_720p_video_video_panel; + panel->commandpanel = &hx8394d_720p_video_command_panel; + panel->state = &hx8394d_720p_video_state; + panel->laneconfig = &hx8394d_720p_video_lane_config; + panel->paneltiminginfo = &hx8394d_720p_video_timing_info; + panel->panelresetseq = &hx8394d_720p_video_reset_seq; + panel->backlightinfo = &hx8394d_720p_video_backlight; + pinfo->mipi.panel_on_cmds = hx8394d_720p_video_on_command; + pinfo->mipi.panel_off_cmds = hx8394d_720p_video_off_command; + pinfo->mipi.num_of_panel_on_cmds = ARRAY_SIZE(hx8394d_720p_video_on_command); + pinfo->mipi.num_of_panel_off_cmds = ARRAY_SIZE(hx8394d_720p_video_off_command); + memcpy(phy_db->timing, hx8394d_720p_video_timings, TIMING_SIZE); + phy_db->regulator_mode = DSI_PHY_REGULATOR_DCDC_MODE; +} + +#endif /* _PANEL_HX8394D_720P_VIDEO_H_ */ diff --git a/lk2nd/display/panel/generated/panels.h b/lk2nd/display/panel/generated/panels.h index 8b306662d..b2e2588aa 100644 --- a/lk2nd/display/panel/generated/panels.h +++ b/lk2nd/display/panel/generated/panels.h @@ -3,6 +3,8 @@ #ifndef _LK2ND_GENERATED_PANELS_H_ #define _LK2ND_GENERATED_PANELS_H_ +#include "lk_panel_hx8394d_720p_video.h" + int oem_panel_select(const char *panel_name, struct panel_struct *panel, struct msm_panel_info *pinfo, struct mdss_dsi_phy_ctrl *phy_db); From 2ffe4730a320255a7cdb202060d58c884c8d7dba Mon Sep 17 00:00:00 2001 From: Raymond Hackley Date: Thu, 10 Nov 2022 17:17:26 +0000 Subject: [PATCH 6/7] lk2nd: display: panel: generated: hx8394d_720p_video: Set brightness Otherwise the screen does not turn on. --- lk2nd/display/panel/generated/lk_panel_hx8394d_720p_video.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lk2nd/display/panel/generated/lk_panel_hx8394d_720p_video.h b/lk2nd/display/panel/generated/lk_panel_hx8394d_720p_video.h index ea316359f..a98a10357 100644 --- a/lk2nd/display/panel/generated/lk_panel_hx8394d_720p_video.h +++ b/lk2nd/display/panel/generated/lk_panel_hx8394d_720p_video.h @@ -144,6 +144,9 @@ static char hx8394d_720p_video_on_cmd_22[] = { static char hx8394d_720p_video_on_cmd_23[] = { 0x55, 0x01, 0x15, 0x80 }; +static char hx8394d_720p_video_on_cmd_24[] = { + 0x51, 0xe1, 0x15, 0x80 /* Set brightness to maximum 225 */ +}; static struct mipi_dsi_cmd hx8394d_720p_video_on_command[] = { { sizeof(hx8394d_720p_video_on_cmd_0), hx8394d_720p_video_on_cmd_0, 0 }, @@ -170,6 +173,7 @@ static struct mipi_dsi_cmd hx8394d_720p_video_on_command[] = { { sizeof(hx8394d_720p_video_on_cmd_21), hx8394d_720p_video_on_cmd_21, 10 }, { sizeof(hx8394d_720p_video_on_cmd_22), hx8394d_720p_video_on_cmd_22, 0 }, { sizeof(hx8394d_720p_video_on_cmd_23), hx8394d_720p_video_on_cmd_23, 5 }, + { sizeof(hx8394d_720p_video_on_cmd_24), hx8394d_720p_video_on_cmd_24, 0 }, }; static char hx8394d_720p_video_off_cmd_0[] = { From 28387ff914dc1e1128bf40ef94b4086bcff9d452 Mon Sep 17 00:00:00 2001 From: Raymond Hackley Date: Tue, 18 Jun 2024 11:07:30 +0000 Subject: [PATCH 7/7] lk2nd: display: panel: generated: Add ili9806e_boyi_byt45mp41t1m_4p5cpt for acer-t01 --- ..._panel_ili9806e_boyi_byt45mp41t1m_4p5cpt.h | 620 ++++++++++++++++++ lk2nd/display/panel/generated/panels.h | 1 + 2 files changed, 621 insertions(+) create mode 100644 lk2nd/display/panel/generated/lk_panel_ili9806e_boyi_byt45mp41t1m_4p5cpt.h diff --git a/lk2nd/display/panel/generated/lk_panel_ili9806e_boyi_byt45mp41t1m_4p5cpt.h b/lk2nd/display/panel/generated/lk_panel_ili9806e_boyi_byt45mp41t1m_4p5cpt.h new file mode 100644 index 000000000..442fec2a4 --- /dev/null +++ b/lk2nd/display/panel/generated/lk_panel_ili9806e_boyi_byt45mp41t1m_4p5cpt.h @@ -0,0 +1,620 @@ +// SPDX-License-Identifier: GPL-2.0-only +// Copyright (c) 2024 FIXME +// Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: +// Copyright (c) 2014, The Linux Foundation. All rights reserved. (FIXME) + +#ifndef _PANEL_ILI9806E_BOYI_BYT45MP41T1M_4P5CPT_H_ +#define _PANEL_ILI9806E_BOYI_BYT45MP41T1M_4P5CPT_H_ + +#include +#include +#include +#include + +static struct panel_config ili9806e_boyi_byt45mp41t1m_4p5cpt_panel_data = { + .panel_node_id = "qcom,ili9806e_boyi_byt45mp41t1m_4p5cpt", + .panel_controller = "dsi:0:", + .panel_compatible = "qcom,mdss-dsi-panel", + .panel_type = 0, + .panel_destination = "DISPLAY_1", + /* .panel_orientation not supported yet */ + .panel_framerate = 60, + .panel_lp11_init = 1, + .panel_init_delay = 0, +}; + +static struct panel_resolution ili9806e_boyi_byt45mp41t1m_4p5cpt_panel_res = { + .panel_width = 480, + .panel_height = 854, + .hfront_porch = 60, + .hback_porch = 60, + .hpulse_width = 12, + .hsync_skew = 0, + .vfront_porch = 16, + .vback_porch = 16, + .vpulse_width = 2, + /* Borders not supported yet */ +}; + +static struct color_info ili9806e_boyi_byt45mp41t1m_4p5cpt_color = { + .color_format = 24, + .color_order = DSI_RGB_SWAP_RGB, + .underflow_color = 0xff, + /* Borders and pixel packing not supported yet */ +}; + +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_0[] = { + 0x06, 0x00, 0x39, 0xc0, 0xff, 0xff, 0x98, 0x06, + 0x04, 0x01, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_1[] = { + 0x02, 0x00, 0x39, 0xc0, 0x08, 0x10, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_2[] = { + 0x02, 0x00, 0x39, 0xc0, 0x21, 0x01, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_3[] = { + 0x02, 0x00, 0x39, 0xc0, 0x30, 0x01, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_4[] = { + 0x02, 0x00, 0x39, 0xc0, 0x31, 0x00, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_5[] = { + 0x02, 0x00, 0x39, 0xc0, 0x40, 0x15, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_6[] = { + 0x02, 0x00, 0x39, 0xc0, 0x41, 0x55, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_7[] = { + 0x02, 0x00, 0x39, 0xc0, 0x42, 0x02, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_8[] = { + 0x02, 0x00, 0x39, 0xc0, 0x43, 0x0c, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_9[] = { + 0x02, 0x00, 0x39, 0xc0, 0x44, 0x06, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_10[] = { + 0x02, 0x00, 0x39, 0xc0, 0x50, 0x78, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_11[] = { + 0x02, 0x00, 0x39, 0xc0, 0x51, 0x78, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_12[] = { + 0x02, 0x00, 0x39, 0xc0, 0x52, 0x00, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_13[] = { + 0x02, 0x00, 0x39, 0xc0, 0x53, 0x42, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_14[] = { + 0x02, 0x00, 0x39, 0xc0, 0x57, 0x50, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_15[] = { + 0x02, 0x00, 0x39, 0xc0, 0x60, 0x07, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_16[] = { + 0x02, 0x00, 0x39, 0xc0, 0x61, 0x00, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_17[] = { + 0x02, 0x00, 0x39, 0xc0, 0x62, 0x07, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_18[] = { + 0x02, 0x00, 0x39, 0xc0, 0x63, 0x00, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_19[] = { + 0x02, 0x00, 0x39, 0xc0, 0xa0, 0x00, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_20[] = { + 0x02, 0x00, 0x39, 0xc0, 0xa1, 0x0a, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_21[] = { + 0x02, 0x00, 0x39, 0xc0, 0xa2, 0x0e, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_22[] = { + 0x02, 0x00, 0x39, 0xc0, 0xa3, 0x0b, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_23[] = { + 0x02, 0x00, 0x39, 0xc0, 0xa4, 0x04, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_24[] = { + 0x02, 0x00, 0x39, 0xc0, 0xa5, 0x0c, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_25[] = { + 0x02, 0x00, 0x39, 0xc0, 0xa6, 0x08, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_26[] = { + 0x02, 0x00, 0x39, 0xc0, 0xa7, 0x06, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_27[] = { + 0x02, 0x00, 0x39, 0xc0, 0xa8, 0x06, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_28[] = { + 0x02, 0x00, 0x39, 0xc0, 0xa9, 0x0b, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_29[] = { + 0x02, 0x00, 0x39, 0xc0, 0xaa, 0x0c, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_30[] = { + 0x02, 0x00, 0x39, 0xc0, 0xab, 0x01, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_31[] = { + 0x02, 0x00, 0x39, 0xc0, 0xac, 0x01, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_32[] = { + 0x02, 0x00, 0x39, 0xc0, 0xad, 0x19, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_33[] = { + 0x02, 0x00, 0x39, 0xc0, 0xae, 0x0a, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_34[] = { + 0x02, 0x00, 0x39, 0xc0, 0xaf, 0x00, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_35[] = { + 0x02, 0x00, 0x39, 0xc0, 0xc0, 0x00, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_36[] = { + 0x02, 0x00, 0x39, 0xc0, 0xc1, 0x0a, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_37[] = { + 0x02, 0x00, 0x39, 0xc0, 0xc2, 0x0e, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_38[] = { + 0x02, 0x00, 0x39, 0xc0, 0xc3, 0x0b, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_39[] = { + 0x02, 0x00, 0x39, 0xc0, 0xc4, 0x04, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_40[] = { + 0x02, 0x00, 0x39, 0xc0, 0xc5, 0x0c, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_41[] = { + 0x02, 0x00, 0x39, 0xc0, 0xc6, 0x07, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_42[] = { + 0x02, 0x00, 0x39, 0xc0, 0xc7, 0x07, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_43[] = { + 0x02, 0x00, 0x39, 0xc0, 0xc8, 0x07, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_44[] = { + 0x02, 0x00, 0x39, 0xc0, 0xc9, 0x0a, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_45[] = { + 0x02, 0x00, 0x39, 0xc0, 0xca, 0x0c, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_46[] = { + 0x02, 0x00, 0x39, 0xc0, 0xcb, 0x01, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_47[] = { + 0x02, 0x00, 0x39, 0xc0, 0xcc, 0x01, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_48[] = { + 0x02, 0x00, 0x39, 0xc0, 0xcd, 0x19, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_49[] = { + 0x02, 0x00, 0x39, 0xc0, 0xce, 0x12, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_50[] = { + 0x02, 0x00, 0x39, 0xc0, 0xcf, 0x00, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_51[] = { + 0x06, 0x00, 0x39, 0xc0, 0xff, 0xff, 0x98, 0x06, + 0x04, 0x06, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_52[] = { + 0x02, 0x00, 0x39, 0xc0, 0x00, 0x21, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_53[] = { + 0x02, 0x00, 0x39, 0xc0, 0x01, 0x03, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_54[] = { + 0x02, 0x00, 0x39, 0xc0, 0x02, 0x00, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_55[] = { + 0x02, 0x00, 0x39, 0xc0, 0x03, 0x01, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_56[] = { + 0x02, 0x00, 0x39, 0xc0, 0x04, 0x16, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_57[] = { + 0x02, 0x00, 0x39, 0xc0, 0x05, 0x16, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_58[] = { + 0x02, 0x00, 0x39, 0xc0, 0x06, 0x80, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_59[] = { + 0x02, 0x00, 0x39, 0xc0, 0x07, 0x01, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_60[] = { + 0x02, 0x00, 0x39, 0xc0, 0x08, 0x08, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_61[] = { + 0x02, 0x00, 0x39, 0xc0, 0x09, 0x10, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_62[] = { + 0x02, 0x00, 0x39, 0xc0, 0x0a, 0x00, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_63[] = { + 0x02, 0x00, 0x39, 0xc0, 0x0b, 0x00, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_64[] = { + 0x02, 0x00, 0x39, 0xc0, 0x0c, 0x12, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_65[] = { + 0x02, 0x00, 0x39, 0xc0, 0x0d, 0x12, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_66[] = { + 0x02, 0x00, 0x39, 0xc0, 0x0e, 0x00, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_67[] = { + 0x02, 0x00, 0x39, 0xc0, 0x0f, 0x00, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_68[] = { + 0x02, 0x00, 0x39, 0xc0, 0x10, 0x77, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_69[] = { + 0x02, 0x00, 0x39, 0xc0, 0x11, 0xe0, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_70[] = { + 0x02, 0x00, 0x39, 0xc0, 0x12, 0x00, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_71[] = { + 0x02, 0x00, 0x39, 0xc0, 0x13, 0x85, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_72[] = { + 0x02, 0x00, 0x39, 0xc0, 0x14, 0x85, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_73[] = { + 0x02, 0x00, 0x39, 0xc0, 0x15, 0xc0, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_74[] = { + 0x02, 0x00, 0x39, 0xc0, 0x16, 0x08, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_75[] = { + 0x02, 0x00, 0x39, 0xc0, 0x17, 0x00, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_76[] = { + 0x02, 0x00, 0x39, 0xc0, 0x18, 0x00, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_77[] = { + 0x02, 0x00, 0x39, 0xc0, 0x19, 0x00, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_78[] = { + 0x02, 0x00, 0x39, 0xc0, 0x1a, 0x00, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_79[] = { + 0x02, 0x00, 0x39, 0xc0, 0x1b, 0x00, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_80[] = { + 0x02, 0x00, 0x39, 0xc0, 0x1c, 0x00, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_81[] = { + 0x02, 0x00, 0x39, 0xc0, 0x1d, 0x00, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_82[] = { + 0x02, 0x00, 0x39, 0xc0, 0x20, 0x01, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_83[] = { + 0x02, 0x00, 0x39, 0xc0, 0x21, 0x23, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_84[] = { + 0x02, 0x00, 0x39, 0xc0, 0x22, 0x45, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_85[] = { + 0x02, 0x00, 0x39, 0xc0, 0x23, 0x67, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_86[] = { + 0x02, 0x00, 0x39, 0xc0, 0x24, 0x01, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_87[] = { + 0x02, 0x00, 0x39, 0xc0, 0x25, 0x23, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_88[] = { + 0x02, 0x00, 0x39, 0xc0, 0x26, 0x45, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_89[] = { + 0x02, 0x00, 0x39, 0xc0, 0x27, 0x67, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_90[] = { + 0x02, 0x00, 0x39, 0xc0, 0x30, 0x01, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_91[] = { + 0x02, 0x00, 0x39, 0xc0, 0x31, 0x22, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_92[] = { + 0x02, 0x00, 0x39, 0xc0, 0x32, 0x11, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_93[] = { + 0x02, 0x00, 0x39, 0xc0, 0x33, 0x00, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_94[] = { + 0x02, 0x00, 0x39, 0xc0, 0x34, 0x86, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_95[] = { + 0x02, 0x00, 0x39, 0xc0, 0x35, 0x68, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_96[] = { + 0x02, 0x00, 0x39, 0xc0, 0x36, 0x22, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_97[] = { + 0x02, 0x00, 0x39, 0xc0, 0x37, 0x22, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_98[] = { + 0x02, 0x00, 0x39, 0xc0, 0x38, 0xca, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_99[] = { + 0x02, 0x00, 0x39, 0xc0, 0x39, 0xac, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_100[] = { + 0x02, 0x00, 0x39, 0xc0, 0x3a, 0xbb, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_101[] = { + 0x02, 0x00, 0x39, 0xc0, 0x3b, 0xdd, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_102[] = { + 0x02, 0x00, 0x39, 0xc0, 0x3c, 0x22, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_103[] = { + 0x02, 0x00, 0x39, 0xc0, 0x3d, 0x22, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_104[] = { + 0x02, 0x00, 0x39, 0xc0, 0x3e, 0x22, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_105[] = { + 0x02, 0x00, 0x39, 0xc0, 0x3f, 0x22, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_106[] = { + 0x02, 0x00, 0x39, 0xc0, 0x40, 0x22, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_107[] = { + 0x02, 0x00, 0x39, 0xc0, 0x52, 0x10, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_108[] = { + 0x02, 0x00, 0x39, 0xc0, 0x53, 0x10, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_109[] = { + 0x02, 0x00, 0x39, 0xc0, 0x54, 0x13, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_110[] = { + 0x06, 0x00, 0x39, 0xc0, 0xff, 0xff, 0x98, 0x06, + 0x04, 0x07, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_111[] = { + 0x02, 0x00, 0x39, 0xc0, 0x17, 0x22, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_112[] = { + 0x02, 0x00, 0x39, 0xc0, 0x02, 0x77, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_113[] = { + 0x02, 0x00, 0x39, 0xc0, 0xe1, 0x79, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_114[] = { + 0x02, 0x00, 0x39, 0xc0, 0xb3, 0x10, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_115[] = { + 0x06, 0x00, 0x39, 0xc0, 0xff, 0xff, 0x98, 0x06, + 0x04, 0x00, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_116[] = { + 0x02, 0x00, 0x39, 0xc0, 0x21, 0x00, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_117[] = { + 0x02, 0x00, 0x39, 0xc0, 0x35, 0x00, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_118[] = { + 0x02, 0x00, 0x39, 0xc0, 0x11, 0x00, 0xff, 0xff +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_119[] = { + 0x02, 0x00, 0x39, 0xc0, 0x29, 0x00, 0xff, 0xff +}; + +static struct mipi_dsi_cmd ili9806e_boyi_byt45mp41t1m_4p5cpt_on_command[] = { + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_0), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_0, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_1), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_1, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_2), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_2, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_3), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_3, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_4), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_4, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_5), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_5, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_6), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_6, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_7), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_7, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_8), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_8, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_9), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_9, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_10), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_10, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_11), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_11, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_12), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_12, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_13), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_13, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_14), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_14, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_15), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_15, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_16), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_16, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_17), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_17, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_18), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_18, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_19), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_19, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_20), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_20, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_21), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_21, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_22), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_22, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_23), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_23, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_24), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_24, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_25), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_25, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_26), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_26, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_27), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_27, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_28), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_28, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_29), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_29, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_30), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_30, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_31), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_31, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_32), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_32, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_33), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_33, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_34), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_34, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_35), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_35, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_36), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_36, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_37), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_37, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_38), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_38, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_39), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_39, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_40), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_40, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_41), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_41, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_42), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_42, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_43), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_43, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_44), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_44, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_45), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_45, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_46), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_46, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_47), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_47, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_48), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_48, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_49), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_49, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_50), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_50, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_51), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_51, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_52), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_52, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_53), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_53, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_54), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_54, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_55), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_55, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_56), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_56, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_57), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_57, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_58), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_58, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_59), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_59, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_60), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_60, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_61), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_61, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_62), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_62, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_63), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_63, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_64), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_64, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_65), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_65, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_66), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_66, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_67), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_67, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_68), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_68, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_69), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_69, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_70), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_70, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_71), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_71, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_72), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_72, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_73), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_73, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_74), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_74, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_75), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_75, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_76), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_76, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_77), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_77, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_78), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_78, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_79), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_79, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_80), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_80, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_81), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_81, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_82), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_82, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_83), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_83, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_84), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_84, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_85), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_85, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_86), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_86, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_87), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_87, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_88), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_88, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_89), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_89, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_90), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_90, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_91), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_91, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_92), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_92, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_93), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_93, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_94), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_94, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_95), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_95, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_96), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_96, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_97), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_97, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_98), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_98, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_99), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_99, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_100), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_100, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_101), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_101, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_102), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_102, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_103), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_103, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_104), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_104, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_105), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_105, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_106), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_106, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_107), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_107, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_108), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_108, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_109), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_109, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_110), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_110, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_111), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_111, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_112), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_112, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_113), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_113, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_114), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_114, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_115), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_115, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_116), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_116, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_117), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_117, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_118), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_118, 120 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_119), ili9806e_boyi_byt45mp41t1m_4p5cpt_on_cmd_119, 0 }, +}; + +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_off_cmd_0[] = { + 0x28, 0x00, 0x05, 0x80 +}; +static char ili9806e_boyi_byt45mp41t1m_4p5cpt_off_cmd_1[] = { + 0x10, 0x00, 0x05, 0x80 +}; + +static struct mipi_dsi_cmd ili9806e_boyi_byt45mp41t1m_4p5cpt_off_command[] = { + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_off_cmd_0), ili9806e_boyi_byt45mp41t1m_4p5cpt_off_cmd_0, 0 }, + { sizeof(ili9806e_boyi_byt45mp41t1m_4p5cpt_off_cmd_1), ili9806e_boyi_byt45mp41t1m_4p5cpt_off_cmd_1, 120 }, +}; + +static struct command_state ili9806e_boyi_byt45mp41t1m_4p5cpt_state = { + .oncommand_state = 0, + .offcommand_state = 0, +}; + +static struct commandpanel_info ili9806e_boyi_byt45mp41t1m_4p5cpt_command_panel = { + /* Unused, this is a video mode panel */ +}; + +static struct videopanel_info ili9806e_boyi_byt45mp41t1m_4p5cpt_video_panel = { + .hsync_pulse = 1, + .hfp_power_mode = 0, + .hbp_power_mode = 0, + .hsa_power_mode = 0, + .bllp_eof_power_mode = 1, + .bllp_power_mode = 1, + .traffic_mode = 2, + /* This is bllp_eof_power_mode and bllp_power_mode combined */ + .bllp_eof_power = 1 << 3 | 1 << 0, +}; + +static struct lane_configuration ili9806e_boyi_byt45mp41t1m_4p5cpt_lane_config = { + .dsi_lanes = 2, + .dsi_lanemap = 0, + .lane0_state = 1, + .lane1_state = 1, + .lane2_state = 0, + .lane3_state = 0, + .force_clk_lane_hs = 0, +}; + +static const uint32_t ili9806e_boyi_byt45mp41t1m_4p5cpt_timings[] = { + 0x76, 0x18, 0x10, 0x00, 0x3c, 0x3e, 0x14, 0x1c, 0x12, 0x03, 0x04, 0x00 +}; + +static struct panel_timing ili9806e_boyi_byt45mp41t1m_4p5cpt_timing_info = { + .tclk_post = 0x04, + .tclk_pre = 0x19, +}; + +static struct panel_reset_sequence ili9806e_boyi_byt45mp41t1m_4p5cpt_reset_seq = { + .pin_state = { 1, 0, 1 }, + .sleep = { 5, 10, 20 }, + .pin_direction = 2, +}; + +static struct backlight ili9806e_boyi_byt45mp41t1m_4p5cpt_backlight = { + .bl_interface_type = BL_PWM, + .bl_min_level = 1, + .bl_max_level = 255, +}; + +static inline void panel_ili9806e_boyi_byt45mp41t1m_4p5cpt_select(struct panel_struct *panel, + struct msm_panel_info *pinfo, + struct mdss_dsi_phy_ctrl *phy_db) +{ + panel->paneldata = &ili9806e_boyi_byt45mp41t1m_4p5cpt_panel_data; + panel->panelres = &ili9806e_boyi_byt45mp41t1m_4p5cpt_panel_res; + panel->color = &ili9806e_boyi_byt45mp41t1m_4p5cpt_color; + panel->videopanel = &ili9806e_boyi_byt45mp41t1m_4p5cpt_video_panel; + panel->commandpanel = &ili9806e_boyi_byt45mp41t1m_4p5cpt_command_panel; + panel->state = &ili9806e_boyi_byt45mp41t1m_4p5cpt_state; + panel->laneconfig = &ili9806e_boyi_byt45mp41t1m_4p5cpt_lane_config; + panel->paneltiminginfo = &ili9806e_boyi_byt45mp41t1m_4p5cpt_timing_info; + panel->panelresetseq = &ili9806e_boyi_byt45mp41t1m_4p5cpt_reset_seq; + panel->backlightinfo = &ili9806e_boyi_byt45mp41t1m_4p5cpt_backlight; + pinfo->mipi.panel_on_cmds = ili9806e_boyi_byt45mp41t1m_4p5cpt_on_command; + pinfo->mipi.panel_off_cmds = ili9806e_boyi_byt45mp41t1m_4p5cpt_off_command; + pinfo->mipi.num_of_panel_on_cmds = ARRAY_SIZE(ili9806e_boyi_byt45mp41t1m_4p5cpt_on_command); + pinfo->mipi.num_of_panel_off_cmds = ARRAY_SIZE(ili9806e_boyi_byt45mp41t1m_4p5cpt_off_command); + memcpy(phy_db->timing, ili9806e_boyi_byt45mp41t1m_4p5cpt_timings, TIMING_SIZE); + phy_db->regulator_mode = DSI_PHY_REGULATOR_LDO_MODE; +} + +#endif /* _PANEL_ILI9806E_BOYI_BYT45MP41T1M_4P5CPT_H_ */ diff --git a/lk2nd/display/panel/generated/panels.h b/lk2nd/display/panel/generated/panels.h index b2e2588aa..940d1869b 100644 --- a/lk2nd/display/panel/generated/panels.h +++ b/lk2nd/display/panel/generated/panels.h @@ -4,6 +4,7 @@ #define _LK2ND_GENERATED_PANELS_H_ #include "lk_panel_hx8394d_720p_video.h" +#include "lk_panel_ili9806e_boyi_byt45mp41t1m_4p5cpt.h" int oem_panel_select(const char *panel_name, struct panel_struct *panel, struct msm_panel_info *pinfo, struct mdss_dsi_phy_ctrl *phy_db);