<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[D1 &#x2F; D1s 可以用的 5.5元的 1280*400 长条形MIPI屏, 未验证]]></title><description><![CDATA[<p dir="auto">购买链接:　<a href="https://item.taobao.com/item.htm?id=669390481038" target="_blank" rel="noopener noreferrer nofollow ugc">https://item.taobao.com/item.htm?id=669390481038</a></p>
<p dir="auto"><strong>未验证</strong><br />
<strong>未验证</strong><br />
<strong>未验证</strong></p>
]]></description><link>https://bbs.aw-ol.com/topic/1134/d1-d1s-可以用的-5-5元的-1280-400-长条形mipi屏-未验证</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Apr 2026 20:12:46 GMT</lastBuildDate><atom:link href="https://bbs.aw-ol.com/topic/1134.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 08 Mar 2022 03:01:57 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to D1 &#x2F; D1s 可以用的 5.5元的 1280*400 长条形MIPI屏, 未验证 on Sun, 19 Jun 2022 06:18:49 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="https://bbs.aw-ol.com/uid/317">@yuzukitsuru</a> <a class="plugin-mentions-user plugin-mentions-a" href="https://bbs.aw-ol.com/uid/129">@tigger</a>  大佬你们点亮了吗？</p>
]]></description><link>https://bbs.aw-ol.com/post/7907</link><guid isPermaLink="true">https://bbs.aw-ol.com/post/7907</guid><dc:creator><![CDATA[liuxingkeji]]></dc:creator><pubDate>Sun, 19 Jun 2022 06:18:49 GMT</pubDate></item><item><title><![CDATA[Reply to D1 &#x2F; D1s 可以用的 5.5元的 1280*400 长条形MIPI屏, 未验证 on Thu, 24 Mar 2022 09:18:11 GMT]]></title><description><![CDATA[<p dir="auto">牛逼 被你们买到下架了<br />
<img src="/assets/uploads/files/1648113489772-dae377b7-314e-4898-979c-ca440a320bdb-image.png" alt="dae377b7-314e-4898-979c-ca440a320bdb-image.png" class=" img-responsive img-markdown" width="1317" height="870" /></p>
]]></description><link>https://bbs.aw-ol.com/post/5359</link><guid isPermaLink="true">https://bbs.aw-ol.com/post/5359</guid><dc:creator><![CDATA[xiaowenge]]></dc:creator><pubDate>Thu, 24 Mar 2022 09:18:11 GMT</pubDate></item><item><title><![CDATA[Reply to D1 &#x2F; D1s 可以用的 5.5元的 1280*400 长条形MIPI屏, 未验证 on Thu, 24 Mar 2022 08:55:52 GMT]]></title><description><![CDATA[<pre><code>{0xB0, 1, {0x5A}},

{0xB1, 1, {0x00}},
{0x89, 1, {0x01}},
{0x91, 1, {0x17}},
{0xB1, 1, {0x03}},
{0x2C, 1, {0x28}},

{0x00, 1, {0xB7}},
{0x01, 1, {0x1B}},
{0x02, 1, {0x00}},
{0x03, 1, {0x00}},
{0x04, 1, {0x00}},
{0x05, 1, {0x00}},
{0x06, 1, {0x00}},
{0x07, 1, {0x00}},
{0x08, 1, {0x00}},
{0x09, 1, {0x00}},
{0x0A, 1, {0x01}},
{0x0B, 1, {0x01}},
{0x0C, 1, {0x00}},
{0x0D, 1, {0x00}},
{0x0E, 1, {0x24}},
{0x0F, 1, {0x1C}},
{0x10, 1, {0xC9}},
{0x11, 1, {0x60}},
{0x12, 1, {0x70}},
{0x13, 1, {0x01}},
{0x14, 1, {0xE7}},
{0x15, 1, {0xFF}},
{0x16, 1, {0x3D}},
{0x17, 1, {0x0E}},
{0x18, 1, {0x01}},
{0x19, 1, {0x00}},
{0x1A, 1, {0x00}},
{0x1B, 1, {0xFC}},
{0x1C, 1, {0x0B}},
{0x1D, 1, {0xA0}},
{0x1E, 1, {0x03}},
{0x1F, 1, {0x04}},
{0x20, 1, {0x0C}},
{0x21, 1, {0x00}},
{0x22, 1, {0x04}},
{0x23, 1, {0x81}},
{0x24, 1, {0x1F}},
{0x25, 1, {0x10}},
{0x26, 1, {0x9B}},
{0x2D, 1, {0x01}},
{0x2E, 1, {0x84}},
{0x2F, 1, {0x00}},
{0x30, 1, {0x02}},
{0x31, 1, {0x08}},
{0x32, 1, {0x01}},
{0x33, 1, {0x1C}},
{0x34, 1, {0x40}},
{0x35, 1, {0xFF}},
{0x36, 1, {0xFF}},
{0x37, 1, {0xFF}},
{0x38, 1, {0xFF}},
{0x39, 1, {0xFF}},
{0x3A, 1, {0x05}},
{0x3B, 1, {0x00}},
{0x3C, 1, {0x00}},
{0x3D, 1, {0x00}},
{0x3E, 1, {0xCF}},
{0x3F, 1, {0x84}},
{0x40, 1, {0x2F}},
{0x41, 1, {0xFC}},
{0x42, 1, {0x01}},
{0x43, 1, {0x40}},
{0x44, 1, {0x05}},
{0x45, 1, {0xE8}},
{0x46, 1, {0x16}},
{0x47, 1, {0x00}},
{0x48, 1, {0x00}},
{0x49, 1, {0x88}},
{0x4A, 1, {0x08}},
{0x4B, 1, {0x05}},
{0x4C, 1, {0x03}},
{0x4D, 1, {0xD0}},
{0x4E, 1, {0x13}},
{0x4F, 1, {0xFF}},
{0x50, 1, {0x0A}},
{0x51, 1, {0x53}},
{0x52, 1, {0x26}},
{0x53, 1, {0x22}},
{0x54, 1, {0x09}},
{0x55, 1, {0x22}},
{0x56, 1, {0x00}},
{0x57, 1, {0x1C}},
{0x58, 1, {0x03}},
{0x59, 1, {0x3F}},
{0x5A, 1, {0x28}},
{0x5B, 1, {0x01}},
{0x5C, 1, {0xCC}},
{0x5D, 1, {0x21}},
{0x5E, 1, {0x84}},
{0x5F, 1, {0x10}},
{0x60, 1, {0x42}},
{0x61, 1, {0x08}},
{0x62, 1, {0x21}},
{0x63, 1, {0x84}},
{0x64, 1, {0x80}},
{0x65, 1, {0x0C}},
{0x66, 1, {0x74}},
{0x67, 1, {0x4C}},
{0x68, 1, {0x09}},
{0x69, 1, {0x12}},
{0x6A, 1, {0x42}},
{0x6B, 1, {0x08}},
{0x6C, 1, {0x21}},
{0x6D, 1, {0x84}},
{0x6E, 1, {0x10}},
{0x6F, 1, {0x42}},
{0x70, 1, {0x08}},
{0x71, 1, {0xE9}},
{0x72, 1, {0xC4}},
{0x73, 1, {0xD7}},
{0x74, 1, {0xD6}},
{0x75, 1, {0x28}},
{0x76, 1, {0x00}},
{0x77, 1, {0x00}},
{0x78, 1, {0x0F}},
{0x79, 1, {0xE0}},
{0x7A, 1, {0x01}},
{0x7B, 1, {0xFF}},
{0x7C, 1, {0xFF}},
{0x7D, 1, {0x0F}},
{0x7E, 1, {0x41}},
{0x7F, 1, {0xFE}},

{0xB1, 1, {0x02}},
{0x00, 1, {0xFF}},
{0x01, 1, {0x05}},
{0x02, 1, {0xF0}},
{0x03, 1, {0x00}},
{0x04, 1, {0x94}},
{0x05, 1, {0x48}},
{0x06, 1, {0xC8}},
{0x07, 1, {0x0A}},
{0x08, 1, {0x00}},
{0x09, 1, {0x00}},
{0x0A, 1, {0x00}},
{0x0B, 1, {0x10}},
{0x0C, 1, {0xE6}},
{0x0D, 1, {0x0D}},
{0x0F, 1, {0x00}},
{0x10, 1, {0xF9}},
{0x11, 1, {0x4D}},
{0x12, 1, {0x9E}},
{0x13, 1, {0x8F}},
{0x14, 1, {0xDF}},
{0x15, 1, {0x15}},
{0x16, 1, {0xE4}},
{0x17, 1, {0x6A}},
{0x18, 1, {0xAB}},
{0x19, 1, {0xD7}},
{0x1A, 1, {0x78}},
{0x1B, 1, {0xFE}},
{0x1C, 1, {0xFF}},
{0x1D, 1, {0xFF}},
{0x1E, 1, {0xFF}},
{0x1F, 1, {0xFF}},
{0x20, 1, {0xFF}},
{0x21, 1, {0xFF}},
{0x22, 1, {0xFF}},
{0x23, 1, {0xFF}},
{0x24, 1, {0xFF}},
{0x25, 1, {0xFF}},
{0x26, 1, {0xFF}},
{0x27, 1, {0x1F}},
{0x28, 1, {0xFF}},
{0x29, 1, {0xFF}},
{0x2A, 1, {0xFF}},
{0x2B, 1, {0xFF}},
{0x2C, 1, {0xFF}},
{0x2D, 1, {0x07}},
{0x33, 1, {0x3F}},
{0x35, 1, {0x7F}},
{0x36, 1, {0x3F}},
{0x38, 1, {0xFF}},
{0x3A, 1, {0x80}},
{0x3B, 1, {0x01}},
{0x3C, 1, {0x00}},
{0x3D, 1, {0x2F}},
{0x3E, 1, {0x00}},
{0x3F, 1, {0xE0}},
{0x40, 1, {0x05}},
{0x41, 1, {0x00}},
{0x42, 1, {0xBC}},
{0x43, 1, {0x00}},
{0x44, 1, {0x80}},
{0x45, 1, {0x07}},
{0x46, 1, {0x00}},
{0x47, 1, {0x00}},
{0x48, 1, {0x9B}},
{0x49, 1, {0xD2}},
{0x4A, 1, {0xC1}},
{0x4B, 1, {0x83}},
{0x4C, 1, {0x17}},
{0x4D, 1, {0xC0}},
{0x4E, 1, {0x0F}},
{0x4F, 1, {0xF1}},
{0x50, 1, {0x78}},
{0x51, 1, {0x7A}},
{0x52, 1, {0x34}},
{0x53, 1, {0x99}},
{0x54, 1, {0xA2}},
{0x55, 1, {0x02}},
{0x56, 1, {0x14}},
{0x57, 1, {0xB8}},
{0x58, 1, {0xDC}},
{0x59, 1, {0xD4}},
{0x5A, 1, {0xEF}},
{0x5B, 1, {0xF7}},
{0x5C, 1, {0xFB}},
{0x5D, 1, {0xFD}},
{0x5E, 1, {0x7E}},
{0x5F, 1, {0xBF}},
{0x60, 1, {0xEF}},
{0x61, 1, {0xE6}},
{0x62, 1, {0x76}},
{0x63, 1, {0x73}},
{0x64, 1, {0xBB}},
{0x65, 1, {0xDD}},
{0x66, 1, {0x6E}},
{0x67, 1, {0x37}},
{0x68, 1, {0x8C}},
{0x69, 1, {0x08}},
{0x6A, 1, {0x31}},
{0x6B, 1, {0xB8}},
{0x6C, 1, {0xB8}},
{0x6D, 1, {0xB8}},
{0x6E, 1, {0xB8}},
{0x6F, 1, {0xB8}},
{0x70, 1, {0x5C}},
{0x71, 1, {0x2E}},
{0x72, 1, {0x17}},
{0x73, 1, {0x00}},
{0x74, 1, {0x00}},
{0x75, 1, {0x00}},
{0x76, 1, {0x00}},
{0x77, 1, {0x00}},
{0x78, 1, {0x00}},
{0x79, 1, {0x00}},
{0x7A, 1, {0xDC}},
{0x7B, 1, {0xDC}},
{0x7C, 1, {0xDC}},
{0x7D, 1, {0xDC}},
{0x7E, 1, {0xDC}},
{0x7F, 1, {0x6E}},
{0x0B, 1, {0x00}},
{0xB1, 1, {0x03}},
{0x2C, 1, {0x2C}},
{0xB1, 1, {0x00}},
{0x89, 1, {0x03}},
</code></pre>
]]></description><link>https://bbs.aw-ol.com/post/5358</link><guid isPermaLink="true">https://bbs.aw-ol.com/post/5358</guid><dc:creator><![CDATA[YuzukiTsuru]]></dc:creator><pubDate>Thu, 24 Mar 2022 08:55:52 GMT</pubDate></item><item><title><![CDATA[Reply to D1 &#x2F; D1s 可以用的 5.5元的 1280*400 长条形MIPI屏, 未验证 on Sat, 12 Mar 2022 06:57:35 GMT]]></title><description><![CDATA[<p dir="auto">到货了，屏没法拆下来，全贴合的（不要问我怎么知道</p>
]]></description><link>https://bbs.aw-ol.com/post/4983</link><guid isPermaLink="true">https://bbs.aw-ol.com/post/4983</guid><dc:creator><![CDATA[YuzukiTsuru]]></dc:creator><pubDate>Sat, 12 Mar 2022 06:57:35 GMT</pubDate></item><item><title><![CDATA[Reply to D1 &#x2F; D1s 可以用的 5.5元的 1280*400 长条形MIPI屏, 未验证 on Tue, 08 Mar 2022 09:45:34 GMT]]></title><description><![CDATA[<p dir="auto">已下单，D1s正好点</p>
]]></description><link>https://bbs.aw-ol.com/post/4826</link><guid isPermaLink="true">https://bbs.aw-ol.com/post/4826</guid><dc:creator><![CDATA[YuzukiTsuru]]></dc:creator><pubDate>Tue, 08 Mar 2022 09:45:34 GMT</pubDate></item><item><title><![CDATA[Reply to D1 &#x2F; D1s 可以用的 5.5元的 1280*400 长条形MIPI屏, 未验证 on Tue, 08 Mar 2022 03:05:26 GMT]]></title><description><![CDATA[<p dir="auto">引脚定义： <a href="/assets/uploads/files/1646708678262-wtl078401g08-18m%E6%8E%A5%E5%8F%A3%E5%AE%9A%E4%B9%89.xls">WTL078401G08-18M接口定义.xls</a></p>
<p dir="auto">芯片手册：　<a href="/assets/uploads/files/1646708678258-ota7290b_datasheet.pdf">OTA7290B_datasheet.pdf</a></p>
<p dir="auto">ＬＣＤ手册：　<a href="/assets/uploads/files/1646708678254-c078sww2-r0.pdf">C078SWW2 R0.pdf</a></p>
]]></description><link>https://bbs.aw-ol.com/post/4809</link><guid isPermaLink="true">https://bbs.aw-ol.com/post/4809</guid><dc:creator><![CDATA[tigger]]></dc:creator><pubDate>Tue, 08 Mar 2022 03:05:26 GMT</pubDate></item><item><title><![CDATA[Reply to D1 &#x2F; D1s 可以用的 5.5元的 1280*400 长条形MIPI屏, 未验证 on Tue, 08 Mar 2022 03:04:06 GMT]]></title><description><![CDATA[<p dir="auto"><img src="/assets/uploads/files/1646708645471-wtl068601g04-12m.jpg" alt="WTL068601G04-12M.jpg" class=" img-responsive img-markdown" width="920" height="537" /></p>
]]></description><link>https://bbs.aw-ol.com/post/4808</link><guid isPermaLink="true">https://bbs.aw-ol.com/post/4808</guid><dc:creator><![CDATA[tigger]]></dc:creator><pubDate>Tue, 08 Mar 2022 03:04:06 GMT</pubDate></item><item><title><![CDATA[Reply to D1 &#x2F; D1s 可以用的 5.5元的 1280*400 长条形MIPI屏, 未验证 on Tue, 08 Mar 2022 03:03:20 GMT]]></title><description><![CDATA[<p dir="auto">某网站下载的初始化驱动 <strong>mipi_ota7290b.c</strong>:</p>
<pre><code class="language-C">/*
 * drivers/video/mmp/panel/mipi_ota7290b.c
 * active panel using DSI interface to do init
 *
 * Copyright (C) 2013 Marvell Technology Group Ltd.
 * Authors: Yonghai Huang &lt;huangyh@marvell.com&gt;
 *		Xiaolong Ye &lt;yexl@marvell.com&gt;
 *          Guoqing Li &lt;ligq@marvell.com&gt;
 *          Lisa Du &lt;cldu@marvell.com&gt;
 *          Zhou Zhu &lt;zzhu3@marvell.com&gt;
 *          Jing Xiang &lt;jxiang@marvell.com&gt;
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License as published by the
 * Free Software Foundation; either version 2 of the License, or (at your
 * option) any later version.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 * more details.
 *
 * You should have received a copy of the GNU General Public License along with
 * this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.
 *
 */

#include &lt;linux/module.h&gt;
#include &lt;linux/moduleparam.h&gt;
#include &lt;linux/kernel.h&gt;
#include &lt;linux/errno.h&gt;
#include &lt;linux/string.h&gt;
#include &lt;linux/delay.h&gt;
#include &lt;linux/platform_device.h&gt;
#include &lt;linux/err.h&gt;
#include &lt;linux/of.h&gt;
#include &lt;linux/kthread.h&gt;
#include &lt;linux/of_gpio.h&gt;
#include &lt;linux/regulator/consumer.h&gt;
#include &lt;linux/slab.h&gt;
#include &lt;linux/fb.h&gt;
#include &lt;video/mmp_disp.h&gt;
#include &lt;video/mipi_display.h&gt;
#include &lt;video/mmp_esd.h&gt;

#define TRACE pr_err("@@ %s, %d\n", __func__, __LINE__);

static int vcom_pwm = 0;
//static struct task_struct *vcom_task = NULL;

struct ota7290b_plat_data {
	struct mmp_panel *panel;
	u32 esd_enable;
	int vcom_pin;
	int power_pin;
	void (*plat_onoff)(int status);
	void (*plat_set_backlight)(struct mmp_panel *panel, int level);
};

static char exit_sleep[] = {0x11};
static char display_on[] = {0x29};

#define OTA7290B_ID 0xE3
#define HSM 0
#define LPM 1


static char ota7290b_on_cmd0[] = {0xB0,0x5A};

static char ota7290b_on_cmd1[] = {0xB1,0x00};
static char ota7290b_on_cmd2[] = {0x89,0x01};
static char ota7290b_on_cmd3[] = {0x91,0x17};
static char ota7290b_on_cmd4[] = {0xB1,0x03};
static char ota7290b_on_cmd5[] = {0x2C,0x28};

static char ota7290b_on_cmd6[] = {0x00,0xB7};
static char ota7290b_on_cmd7[] = {0x01,0x1B};
static char ota7290b_on_cmd8[] = {0x02,0x00};
static char ota7290b_on_cmd9[] = {0x03,0x00};
static char ota7290b_on_cmd10[] = {0x04,0x00};
static char ota7290b_on_cmd11[] = {0x05,0x00};
static char ota7290b_on_cmd12[] = {0x06,0x00};
static char ota7290b_on_cmd13[] = {0x07,0x00};
static char ota7290b_on_cmd14[] = {0x08,0x00};
static char ota7290b_on_cmd15[] = {0x09,0x00};
static char ota7290b_on_cmd16[] = {0x0A,0x01};
static char ota7290b_on_cmd17[] = {0x0B,0x01};
static char ota7290b_on_cmd18[] = {0x0C,0x00};
static char ota7290b_on_cmd19[] = {0x0D,0x00};
static char ota7290b_on_cmd20[] = {0x0E,0x24};
static char ota7290b_on_cmd21[] = {0x0F,0x1C};
static char ota7290b_on_cmd22[] = {0x10,0xC9};
static char ota7290b_on_cmd23[] = {0x11,0x60};
static char ota7290b_on_cmd24[] = {0x12,0x70};
static char ota7290b_on_cmd25[] = {0x13,0x01};
static char ota7290b_on_cmd26[] = {0x14,0xE7};
static char ota7290b_on_cmd27[] = {0x15,0xFF};
static char ota7290b_on_cmd28[] = {0x16,0x3D};
static char ota7290b_on_cmd29[] = {0x17,0x0E};
static char ota7290b_on_cmd30[] = {0x18,0x01};
static char ota7290b_on_cmd31[] = {0x19,0x00};
static char ota7290b_on_cmd32[] = {0x1A,0x00};
static char ota7290b_on_cmd33[] = {0x1B,0xFC};
static char ota7290b_on_cmd34[] = {0x1C,0x0B};
static char ota7290b_on_cmd35[] = {0x1D,0xA0};
static char ota7290b_on_cmd36[] = {0x1E,0x03};
static char ota7290b_on_cmd37[] = {0x1F,0x04};
static char ota7290b_on_cmd38[] = {0x20,0x0C};
static char ota7290b_on_cmd39[] = {0x21,0x00};
static char ota7290b_on_cmd40[] = {0x22,0x04};
static char ota7290b_on_cmd41[] = {0x23,0x81};
static char ota7290b_on_cmd42[] = {0x24,0x1F};
static char ota7290b_on_cmd43[] = {0x25,0x10};
static char ota7290b_on_cmd44[] = {0x26,0x9B};
static char ota7290b_on_cmd45[] = {0x2D,0x01};
static char ota7290b_on_cmd46[] = {0x2E,0x84};
static char ota7290b_on_cmd47[] = {0x2F,0x00};
static char ota7290b_on_cmd48[] = {0x30,0x02};
static char ota7290b_on_cmd49[] = {0x31,0x08};
static char ota7290b_on_cmd50[] = {0x32,0x01};
static char ota7290b_on_cmd51[] = {0x33,0x1C};
static char ota7290b_on_cmd52[] = {0x34,0x40};
static char ota7290b_on_cmd53[] = {0x35,0xFF};
static char ota7290b_on_cmd54[] = {0x36,0xFF};
static char ota7290b_on_cmd55[] = {0x37,0xFF};
static char ota7290b_on_cmd56[] = {0x38,0xFF};
static char ota7290b_on_cmd57[] = {0x39,0xFF};
static char ota7290b_on_cmd58[] = {0x3A,0x05};
static char ota7290b_on_cmd59[] = {0x3B,0x00};
static char ota7290b_on_cmd60[] = {0x3C,0x00};
static char ota7290b_on_cmd61[] = {0x3D,0x00};
static char ota7290b_on_cmd62[] = {0x3E,0xCF};
static char ota7290b_on_cmd63[] = {0x3F,0x84};
static char ota7290b_on_cmd64[] = {0x40,0x2F};
static char ota7290b_on_cmd65[] = {0x41,0xFC};
static char ota7290b_on_cmd66[] = {0x42,0x01};
static char ota7290b_on_cmd67[] = {0x43,0x40};
static char ota7290b_on_cmd68[] = {0x44,0x05};
static char ota7290b_on_cmd69[] = {0x45,0xE8};
static char ota7290b_on_cmd70[] = {0x46,0x16};
static char ota7290b_on_cmd71[] = {0x47,0x00};
static char ota7290b_on_cmd72[] = {0x48,0x00};
static char ota7290b_on_cmd73[] = {0x49,0x88};
static char ota7290b_on_cmd74[] = {0x4A,0x08};
static char ota7290b_on_cmd75[] = {0x4B,0x05};
static char ota7290b_on_cmd76[] = {0x4C,0x03};
static char ota7290b_on_cmd77[] = {0x4D,0xD0};
static char ota7290b_on_cmd78[] = {0x4E,0x13};
static char ota7290b_on_cmd79[] = {0x4F,0xFF};
static char ota7290b_on_cmd80[] = {0x50,0x0A};
static char ota7290b_on_cmd81[] = {0x51,0x53};
static char ota7290b_on_cmd82[] = {0x52,0x26};
static char ota7290b_on_cmd83[] = {0x53,0x22};
static char ota7290b_on_cmd84[] = {0x54,0x09};
static char ota7290b_on_cmd85[] = {0x55,0x22};
static char ota7290b_on_cmd86[] = {0x56,0x00};
static char ota7290b_on_cmd87[] = {0x57,0x1C};
static char ota7290b_on_cmd88[] = {0x58,0x03};
static char ota7290b_on_cmd89[] = {0x59,0x3F};
static char ota7290b_on_cmd90[] = {0x5A,0x28};
static char ota7290b_on_cmd91[] = {0x5B,0x01};
static char ota7290b_on_cmd92[] = {0x5C,0xCC};
static char ota7290b_on_cmd93[] = {0x5D,0x21};
static char ota7290b_on_cmd94[] = {0x5E,0x84};
static char ota7290b_on_cmd95[] = {0x5F,0x10};
static char ota7290b_on_cmd96[] = {0x60,0x42};
static char ota7290b_on_cmd97[] = {0x61,0x08};
static char ota7290b_on_cmd98[] = {0x62,0x21};
static char ota7290b_on_cmd99[] = {0x63,0x84};
static char ota7290b_on_cmd100[] = {0x64,0x80};
static char ota7290b_on_cmd101[] = {0x65,0x0C};
static char ota7290b_on_cmd102[] = {0x66,0x74};
static char ota7290b_on_cmd103[] = {0x67,0x4C};
static char ota7290b_on_cmd104[] = {0x68,0x09};
static char ota7290b_on_cmd105[] = {0x69,0x12};
static char ota7290b_on_cmd106[] = {0x6A,0x42};
static char ota7290b_on_cmd107[] = {0x6B,0x08};
static char ota7290b_on_cmd108[] = {0x6C,0x21};
static char ota7290b_on_cmd109[] = {0x6D,0x84};
static char ota7290b_on_cmd110[] = {0x6E,0x10};
static char ota7290b_on_cmd111[] = {0x6F,0x42};
static char ota7290b_on_cmd112[] = {0x70,0x08};
static char ota7290b_on_cmd113[] = {0x71,0xE9};
static char ota7290b_on_cmd114[] = {0x72,0xC4};
static char ota7290b_on_cmd115[] = {0x73,0xD7};
static char ota7290b_on_cmd116[] = {0x74,0xD6};
static char ota7290b_on_cmd117[] = {0x75,0x28};
static char ota7290b_on_cmd118[] = {0x76,0x00};
static char ota7290b_on_cmd119[] = {0x77,0x00};
static char ota7290b_on_cmd120[] = {0x78,0x0F};
static char ota7290b_on_cmd121[] = {0x79,0xE0};
static char ota7290b_on_cmd122[] = {0x7A,0x01};
static char ota7290b_on_cmd123[] = {0x7B,0xFF};
static char ota7290b_on_cmd124[] = {0x7C,0xFF};
static char ota7290b_on_cmd125[] = {0x7D,0x0F};
static char ota7290b_on_cmd126[] = {0x7E,0x41};
static char ota7290b_on_cmd127[] = {0x7F,0xFE};

static char ota7290b_on_cmd128[] = {0xB1,0x02};
static char ota7290b_on_cmd129[] = {0x00,0xFF};
static char ota7290b_on_cmd130[] = {0x01,0x05};
static char ota7290b_on_cmd131[] = {0x02,0xF0};
static char ota7290b_on_cmd132[] = {0x03,0x00};
static char ota7290b_on_cmd133[] = {0x04,0x94};
static char ota7290b_on_cmd134[] = {0x05,0x48};
static char ota7290b_on_cmd135[] = {0x06,0xC8};
static char ota7290b_on_cmd136[] = {0x07,0x0A};
static char ota7290b_on_cmd137[] = {0x08,0x00};
static char ota7290b_on_cmd138[] = {0x09,0x00};
static char ota7290b_on_cmd139[] = {0x0A,0x00};
static char ota7290b_on_cmd140[] = {0x0B,0x10};
static char ota7290b_on_cmd141[] = {0x0C,0xE6};
static char ota7290b_on_cmd142[] = {0x0D,0x0D};
static char ota7290b_on_cmd143[] = {0x0F,0x00};
static char ota7290b_on_cmd144[] = {0x10,0xF9};
static char ota7290b_on_cmd145[] = {0x11,0x4D};
static char ota7290b_on_cmd146[] = {0x12,0x9E};
static char ota7290b_on_cmd147[] = {0x13,0x8F};
static char ota7290b_on_cmd148[] = {0x14,0xDF};
static char ota7290b_on_cmd149[] = {0x15,0x15};
static char ota7290b_on_cmd150[] = {0x16,0xE4};
static char ota7290b_on_cmd151[] = {0x17,0x6A};
static char ota7290b_on_cmd152[] = {0x18,0xAB};
static char ota7290b_on_cmd153[] = {0x19,0xD7};
static char ota7290b_on_cmd154[] = {0x1A,0x78};
static char ota7290b_on_cmd155[] = {0x1B,0xFE};
static char ota7290b_on_cmd156[] = {0x1C,0xFF};
static char ota7290b_on_cmd157[] = {0x1D,0xFF};
static char ota7290b_on_cmd158[] = {0x1E,0xFF};
static char ota7290b_on_cmd159[] = {0x1F,0xFF};
static char ota7290b_on_cmd160[] = {0x20,0xFF};
static char ota7290b_on_cmd161[] = {0x21,0xFF};
static char ota7290b_on_cmd162[] = {0x22,0xFF};
static char ota7290b_on_cmd163[] = {0x23,0xFF};
static char ota7290b_on_cmd164[] = {0x24,0xFF};
static char ota7290b_on_cmd165[] = {0x25,0xFF};
static char ota7290b_on_cmd166[] = {0x26,0xFF};
static char ota7290b_on_cmd167[] = {0x27,0x1F};
static char ota7290b_on_cmd168[] = {0x28,0xFF};
static char ota7290b_on_cmd169[] = {0x29,0xFF};
static char ota7290b_on_cmd170[] = {0x2A,0xFF};
static char ota7290b_on_cmd171[] = {0x2B,0xFF};
static char ota7290b_on_cmd172[] = {0x2C,0xFF};
static char ota7290b_on_cmd173[] = {0x2D,0x07};
static char ota7290b_on_cmd174[] = {0x33,0x3F};
static char ota7290b_on_cmd175[] = {0x35,0x7F};
static char ota7290b_on_cmd176[] = {0x36,0x3F};
static char ota7290b_on_cmd177[] = {0x38,0xFF};
static char ota7290b_on_cmd178[] = {0x3A,0x80};
static char ota7290b_on_cmd179[] = {0x3B,0x01};
static char ota7290b_on_cmd180[] = {0x3C,0x00};
static char ota7290b_on_cmd181[] = {0x3D,0x2F};
static char ota7290b_on_cmd182[] = {0x3E,0x00};
static char ota7290b_on_cmd183[] = {0x3F,0xE0};
static char ota7290b_on_cmd184[] = {0x40,0x05};
static char ota7290b_on_cmd185[] = {0x41,0x00};
static char ota7290b_on_cmd186[] = {0x42,0xBC};
static char ota7290b_on_cmd187[] = {0x43,0x00};
static char ota7290b_on_cmd188[] = {0x44,0x80};
static char ota7290b_on_cmd189[] = {0x45,0x07};
static char ota7290b_on_cmd190[] = {0x46,0x00};
static char ota7290b_on_cmd191[] = {0x47,0x00};
static char ota7290b_on_cmd192[] = {0x48,0x9B};
static char ota7290b_on_cmd193[] = {0x49,0xD2};
static char ota7290b_on_cmd194[] = {0x4A,0xC1};
static char ota7290b_on_cmd195[] = {0x4B,0x83};
static char ota7290b_on_cmd196[] = {0x4C,0x17};
static char ota7290b_on_cmd197[] = {0x4D,0xC0};
static char ota7290b_on_cmd198[] = {0x4E,0x0F};
static char ota7290b_on_cmd199[] = {0x4F,0xF1};
static char ota7290b_on_cmd200[] = {0x50,0x78};
static char ota7290b_on_cmd201[] = {0x51,0x7A};
static char ota7290b_on_cmd202[] = {0x52,0x34};
static char ota7290b_on_cmd203[] = {0x53,0x99};
static char ota7290b_on_cmd204[] = {0x54,0xA2};
static char ota7290b_on_cmd205[] = {0x55,0x02};
static char ota7290b_on_cmd206[] = {0x56,0x14};
static char ota7290b_on_cmd207[] = {0x57,0xB8};
static char ota7290b_on_cmd208[] = {0x58,0xDC};
static char ota7290b_on_cmd209[] = {0x59,0xD4};
static char ota7290b_on_cmd210[] = {0x5A,0xEF};
static char ota7290b_on_cmd211[] = {0x5B,0xF7};
static char ota7290b_on_cmd212[] = {0x5C,0xFB};
static char ota7290b_on_cmd213[] = {0x5D,0xFD};
static char ota7290b_on_cmd214[] = {0x5E,0x7E};
static char ota7290b_on_cmd215[] = {0x5F,0xBF};
static char ota7290b_on_cmd216[] = {0x60,0xEF};
static char ota7290b_on_cmd217[] = {0x61,0xE6};
static char ota7290b_on_cmd218[] = {0x62,0x76};
static char ota7290b_on_cmd219[] = {0x63,0x73};
static char ota7290b_on_cmd220[] = {0x64,0xBB};
static char ota7290b_on_cmd221[] = {0x65,0xDD};
static char ota7290b_on_cmd222[] = {0x66,0x6E};
static char ota7290b_on_cmd223[] = {0x67,0x37};
static char ota7290b_on_cmd224[] = {0x68,0x8C};
static char ota7290b_on_cmd225[] = {0x69,0x08};
static char ota7290b_on_cmd226[] = {0x6A,0x31};
static char ota7290b_on_cmd227[] = {0x6B,0xB8};
static char ota7290b_on_cmd228[] = {0x6C,0xB8};
static char ota7290b_on_cmd229[] = {0x6D,0xB8};
static char ota7290b_on_cmd230[] = {0x6E,0xB8};
static char ota7290b_on_cmd231[] = {0x6F,0xB8};
static char ota7290b_on_cmd232[] = {0x70,0x5C};
static char ota7290b_on_cmd233[] = {0x71,0x2E};
static char ota7290b_on_cmd234[] = {0x72,0x17};
static char ota7290b_on_cmd235[] = {0x73,0x00};
static char ota7290b_on_cmd236[] = {0x74,0x00};
static char ota7290b_on_cmd237[] = {0x75,0x00};
static char ota7290b_on_cmd238[] = {0x76,0x00};
static char ota7290b_on_cmd239[] = {0x77,0x00};
static char ota7290b_on_cmd240[] = {0x78,0x00};
static char ota7290b_on_cmd241[] = {0x79,0x00};
static char ota7290b_on_cmd242[] = {0x7A,0xDC};
static char ota7290b_on_cmd243[] = {0x7B,0xDC};
static char ota7290b_on_cmd244[] = {0x7C,0xDC};
static char ota7290b_on_cmd245[] = {0x7D,0xDC};
static char ota7290b_on_cmd246[] = {0x7E,0xDC};
static char ota7290b_on_cmd247[] = {0x7F,0x6E};
static char ota7290b_on_cmd248[] = {0x0B,0x00};
static char ota7290b_on_cmd249[] = {0xB1,0x03};
static char ota7290b_on_cmd250[] = {0x2C,0x2C};
static char ota7290b_on_cmd251[] = {0xB1,0x00};
static char ota7290b_on_cmd252[] = {0x89,0x03};


static struct mmp_dsi_cmd_desc ota7290b_cpt_display_on_cmds[] = {
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd0),ota7290b_on_cmd0},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd1),ota7290b_on_cmd1},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd2),ota7290b_on_cmd2},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd3),ota7290b_on_cmd3},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd4),ota7290b_on_cmd4},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd5),ota7290b_on_cmd5},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd6),ota7290b_on_cmd6},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd7),ota7290b_on_cmd7},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd8),ota7290b_on_cmd8},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd9),ota7290b_on_cmd9},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd10),ota7290b_on_cmd10},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd11),ota7290b_on_cmd11},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd12),ota7290b_on_cmd12},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd13),ota7290b_on_cmd13},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd14),ota7290b_on_cmd14},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd15),ota7290b_on_cmd15},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd16),ota7290b_on_cmd16},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd17),ota7290b_on_cmd17},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd18),ota7290b_on_cmd18},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd19),ota7290b_on_cmd19},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd20),ota7290b_on_cmd20},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd21),ota7290b_on_cmd21},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd22),ota7290b_on_cmd22},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd23),ota7290b_on_cmd23},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd24),ota7290b_on_cmd24},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd25),ota7290b_on_cmd25},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd26),ota7290b_on_cmd26},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd27),ota7290b_on_cmd27},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd28),ota7290b_on_cmd28},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd29),ota7290b_on_cmd29},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd30),ota7290b_on_cmd30},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd31),ota7290b_on_cmd31},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd32),ota7290b_on_cmd32},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd33),ota7290b_on_cmd33},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd34),ota7290b_on_cmd34},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd35),ota7290b_on_cmd35},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd36),ota7290b_on_cmd36},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd37),ota7290b_on_cmd37},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd38),ota7290b_on_cmd38},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd39),ota7290b_on_cmd39},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd40),ota7290b_on_cmd40},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd41),ota7290b_on_cmd41},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd42),ota7290b_on_cmd42},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd43),ota7290b_on_cmd43},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd44),ota7290b_on_cmd44},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd45),ota7290b_on_cmd45},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd46),ota7290b_on_cmd46},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd47),ota7290b_on_cmd47},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd48),ota7290b_on_cmd48},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd49),ota7290b_on_cmd49},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd50),ota7290b_on_cmd50},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd51),ota7290b_on_cmd51},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd52),ota7290b_on_cmd52},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd53),ota7290b_on_cmd53},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd54),ota7290b_on_cmd54},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd55),ota7290b_on_cmd55},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd56),ota7290b_on_cmd56},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd57),ota7290b_on_cmd57},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd58),ota7290b_on_cmd58},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd59),ota7290b_on_cmd59},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd60),ota7290b_on_cmd60},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd61),ota7290b_on_cmd61},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd62),ota7290b_on_cmd62},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd63),ota7290b_on_cmd63},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd64),ota7290b_on_cmd64},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd65),ota7290b_on_cmd65},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd66),ota7290b_on_cmd66},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd67),ota7290b_on_cmd67},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd68),ota7290b_on_cmd68},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd69),ota7290b_on_cmd69},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd70),ota7290b_on_cmd70},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd71),ota7290b_on_cmd71},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd72),ota7290b_on_cmd72},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd73),ota7290b_on_cmd73},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd74),ota7290b_on_cmd74},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd75),ota7290b_on_cmd75},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd76),ota7290b_on_cmd76},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd77),ota7290b_on_cmd77},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd78),ota7290b_on_cmd78},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd79),ota7290b_on_cmd79},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd80),ota7290b_on_cmd80},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd81),ota7290b_on_cmd81},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd82),ota7290b_on_cmd82},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd83),ota7290b_on_cmd83},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd84),ota7290b_on_cmd84},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd85),ota7290b_on_cmd85},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd86),ota7290b_on_cmd86},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd87),ota7290b_on_cmd87},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd88),ota7290b_on_cmd88},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd89),ota7290b_on_cmd89},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd90),ota7290b_on_cmd90},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd91),ota7290b_on_cmd91},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd92),ota7290b_on_cmd92},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd93),ota7290b_on_cmd93},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd94),ota7290b_on_cmd94},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd95),ota7290b_on_cmd95},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd96),ota7290b_on_cmd96},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd97),ota7290b_on_cmd97},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd98),ota7290b_on_cmd98},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd99),ota7290b_on_cmd99},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd100),ota7290b_on_cmd100},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd101),ota7290b_on_cmd101},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd102),ota7290b_on_cmd102},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd103),ota7290b_on_cmd103},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd104),ota7290b_on_cmd104},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd105),ota7290b_on_cmd105},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd106),ota7290b_on_cmd106},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd107),ota7290b_on_cmd107},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd108),ota7290b_on_cmd108},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd109),ota7290b_on_cmd109},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd110),ota7290b_on_cmd110},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd111),ota7290b_on_cmd111},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd112),ota7290b_on_cmd112},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd113),ota7290b_on_cmd113},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd114),ota7290b_on_cmd114},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd115),ota7290b_on_cmd115},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd116),ota7290b_on_cmd116},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd117),ota7290b_on_cmd117},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd118),ota7290b_on_cmd118},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd119),ota7290b_on_cmd119},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd120),ota7290b_on_cmd120},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd121),ota7290b_on_cmd121},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd122),ota7290b_on_cmd122},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd123),ota7290b_on_cmd123},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd124),ota7290b_on_cmd124},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd125),ota7290b_on_cmd125},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd126),ota7290b_on_cmd126},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd127),ota7290b_on_cmd127},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd128),ota7290b_on_cmd128},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd129),ota7290b_on_cmd129},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd130),ota7290b_on_cmd130},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd131),ota7290b_on_cmd131},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd132),ota7290b_on_cmd132},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd133),ota7290b_on_cmd133},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd134),ota7290b_on_cmd134},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd135),ota7290b_on_cmd135},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd136),ota7290b_on_cmd136},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd137),ota7290b_on_cmd137},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd138),ota7290b_on_cmd138},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd139),ota7290b_on_cmd139},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd140),ota7290b_on_cmd140},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd141),ota7290b_on_cmd141},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd142),ota7290b_on_cmd142},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd143),ota7290b_on_cmd143},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd144),ota7290b_on_cmd144},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd145),ota7290b_on_cmd145},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd146),ota7290b_on_cmd146},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd147),ota7290b_on_cmd147},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd148),ota7290b_on_cmd148},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd149),ota7290b_on_cmd149},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd150),ota7290b_on_cmd150},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd151),ota7290b_on_cmd151},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd152),ota7290b_on_cmd152},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd153),ota7290b_on_cmd153},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd154),ota7290b_on_cmd154},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd155),ota7290b_on_cmd155},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd156),ota7290b_on_cmd156},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd157),ota7290b_on_cmd157},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd158),ota7290b_on_cmd158},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd159),ota7290b_on_cmd159},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd160),ota7290b_on_cmd160},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd161),ota7290b_on_cmd161},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd162),ota7290b_on_cmd162},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd163),ota7290b_on_cmd163},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd164),ota7290b_on_cmd164},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd165),ota7290b_on_cmd165},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd166),ota7290b_on_cmd166},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd167),ota7290b_on_cmd167},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd168),ota7290b_on_cmd168},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd169),ota7290b_on_cmd169},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd170),ota7290b_on_cmd170},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd171),ota7290b_on_cmd171},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd172),ota7290b_on_cmd172},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd173),ota7290b_on_cmd173},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd174),ota7290b_on_cmd174},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd175),ota7290b_on_cmd175},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd176),ota7290b_on_cmd176},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd177),ota7290b_on_cmd177},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd178),ota7290b_on_cmd178},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd179),ota7290b_on_cmd179},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd180),ota7290b_on_cmd180},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd181),ota7290b_on_cmd181},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd182),ota7290b_on_cmd182},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd183),ota7290b_on_cmd183},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd184),ota7290b_on_cmd184},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd185),ota7290b_on_cmd185},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd186),ota7290b_on_cmd186},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd187),ota7290b_on_cmd187},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd188),ota7290b_on_cmd188},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd189),ota7290b_on_cmd189},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd190),ota7290b_on_cmd190},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd191),ota7290b_on_cmd191},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd192),ota7290b_on_cmd192},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd193),ota7290b_on_cmd193},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd194),ota7290b_on_cmd194},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd195),ota7290b_on_cmd195},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd196),ota7290b_on_cmd196},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd197),ota7290b_on_cmd197},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd198),ota7290b_on_cmd198},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd199),ota7290b_on_cmd199},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd200),ota7290b_on_cmd200},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd201),ota7290b_on_cmd201},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd202),ota7290b_on_cmd202},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd203),ota7290b_on_cmd203},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd204),ota7290b_on_cmd204},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd205),ota7290b_on_cmd205},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd206),ota7290b_on_cmd206},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd207),ota7290b_on_cmd207},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd208),ota7290b_on_cmd208},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd209),ota7290b_on_cmd209},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd210),ota7290b_on_cmd210},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd211),ota7290b_on_cmd211},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd212),ota7290b_on_cmd212},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd213),ota7290b_on_cmd213},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd214),ota7290b_on_cmd214},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd215),ota7290b_on_cmd215},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd216),ota7290b_on_cmd216},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd217),ota7290b_on_cmd217},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd218),ota7290b_on_cmd218},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd219),ota7290b_on_cmd219},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd220),ota7290b_on_cmd220},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd221),ota7290b_on_cmd221},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd222),ota7290b_on_cmd222},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd223),ota7290b_on_cmd223},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd224),ota7290b_on_cmd224},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd225),ota7290b_on_cmd225},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd226),ota7290b_on_cmd226},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd227),ota7290b_on_cmd227},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd228),ota7290b_on_cmd228},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd229),ota7290b_on_cmd229},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd230),ota7290b_on_cmd230},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd231),ota7290b_on_cmd231},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd232),ota7290b_on_cmd232},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd233),ota7290b_on_cmd233},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd234),ota7290b_on_cmd234},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd235),ota7290b_on_cmd235},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd236),ota7290b_on_cmd236},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd237),ota7290b_on_cmd237},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd238),ota7290b_on_cmd238},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd239),ota7290b_on_cmd239},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd240),ota7290b_on_cmd240},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd241),ota7290b_on_cmd241},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd242),ota7290b_on_cmd242},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd243),ota7290b_on_cmd243},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd244),ota7290b_on_cmd244},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd245),ota7290b_on_cmd245},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd246),ota7290b_on_cmd246},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd247),ota7290b_on_cmd247},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd248),ota7290b_on_cmd248},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd249),ota7290b_on_cmd249},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd250),ota7290b_on_cmd250},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd251),ota7290b_on_cmd251},
{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd252),ota7290b_on_cmd252},
{MIPI_DSI_DCS_SHORT_WRITE, 1, 120, sizeof(exit_sleep),exit_sleep},
{MIPI_DSI_DCS_SHORT_WRITE, 1, 150, sizeof(display_on),display_on},
};

static char enter_sleep[] = {0x10};
static char display_off[] = {0x28};

static struct mmp_dsi_cmd_desc ota7290b_display_off_cmds[] = {

	{MIPI_DSI_DCS_SHORT_WRITE, 1, 10,
		sizeof(display_off), display_off},
			{MIPI_DSI_DCS_SHORT_WRITE, 1, 200,
		sizeof(enter_sleep), enter_sleep},
};

static void ota7290b_panel_on(struct mmp_panel *panel, int status)
{
	if (status) {
		mmp_panel_dsi_ulps_set_on(panel, 0);
		mmp_panel_dsi_tx_cmd_array(panel, ota7290b_cpt_display_on_cmds,
			ARRAY_SIZE(ota7290b_cpt_display_on_cmds));
	} else {
		mmp_panel_dsi_tx_cmd_array(panel, ota7290b_display_off_cmds,
			ARRAY_SIZE(ota7290b_display_off_cmds));
		mmp_panel_dsi_ulps_set_on(panel, 1);
	}
}

static ssize_t vcom_pwm_show(struct device *dev,
		struct device_attribute *attr, char *buf)
{
	return sprintf(buf, "%d\n", vcom_pwm);
}

static ssize_t vcom_pwm_store(struct device *dev,
		struct device_attribute *attr,
		const char *buf, size_t count)
{
	unsigned long data = 0;
	int error = 0;

	error = strict_strtoul(buf, 10, &amp;data);
	if (error)
		return error;

	if((data &lt; 0)||(data &gt; 100))
		return -EINVAL;

	vcom_pwm = data;

	return count;
}


static DEVICE_ATTR(vcom, S_IRUGO|S_IWUSR|S_IWGRP|S_IWOTH,
			vcom_pwm_show    , vcom_pwm_store);

static struct attribute *vcom_attributes[] = {
	&amp;dev_attr_vcom.attr,
	NULL
};

static struct attribute_group vcom_attribute_group= {
	.attrs = vcom_attributes
};


int vcom_task_func(void *data)
{
	int interval = 0;
	struct ota7290b_plat_data *plat = data;

	if((vcom_pwm &gt;100)||(vcom_pwm &lt; 0)){
		return -EFAULT;
	}
	while(!kthread_should_stop()){
		set_current_state(TASK_UNINTERRUPTIBLE);

		if(vcom_pwm)
		{
			interval = vcom_pwm/5;
			gpio_set_value(plat-&gt;vcom_pin, 1);
			msleep(interval);
//			msleep(vcom_freq);
			gpio_set_value(plat-&gt;vcom_pin, 0);
//			msleep(vcom_freq);
			msleep(20 - interval);
		}
		else{
			gpio_set_value(plat-&gt;vcom_pin, 0);
			schedule_timeout(1*HZ);
		}
	}
	return 0;
}

#ifdef CONFIG_OF
static void ota7290b_panel_power(struct mmp_panel *panel, int skip_on, int on)
{
	static struct regulator *lcd_iovdd, *lcd_avdd, *lcd_ldo;
	struct ota7290b_plat_data *plat = panel-&gt;plat_data;
	int lcd_rst_n, ret = 0;

	pr_debug("%s on=%d skip=%d +\n", __func__, on, skip_on);


	lcd_rst_n = of_get_named_gpio(panel-&gt;dev-&gt;of_node, "rst_gpio", 0);
	if (lcd_rst_n &lt; 0) {
		pr_err("%s: of_get_named_gpio failed\n", __func__);
		return;
	}

	if (gpio_request(lcd_rst_n, "lcd reset gpio")) {
		pr_err("gpio %d request failed\n", lcd_rst_n);
		return;
	}

	/* FIXME: LCD_IOVDD, 1.8V from buck2 */
	if (panel-&gt;is_iovdd &amp;&amp; (!lcd_iovdd)) {
		lcd_iovdd = regulator_get(panel-&gt;dev, "iovdd");
		if (IS_ERR(lcd_iovdd)) {
			pr_err("%s regulator get error!\n", __func__);
			ret = -EIO;
			goto regu_lcd_iovdd;
		}
	}
	if (panel-&gt;is_avdd &amp;&amp; (!lcd_avdd)) {
		lcd_avdd = regulator_get(panel-&gt;dev, "avdd");
		if (IS_ERR(lcd_avdd)) {
			pr_err("%s regulator get error!\n", __func__);
			ret = -EIO;
			goto regu_lcd_iovdd;
		}
	}
	
		if (panel-&gt;is_ldo &amp;&amp; (!lcd_ldo)) {
		lcd_ldo = regulator_get(panel-&gt;dev, "ldo");
		if (IS_ERR(lcd_ldo)) {
			pr_err("%s regulator get error!\n", __func__);
			ret = -EIO;
			goto regu_lcd_iovdd;
		}
	}

	if (on) {

		if (panel-&gt;is_avdd &amp;&amp; lcd_avdd) {
			regulator_set_voltage(lcd_avdd, 3300000, 3300000);
			ret = regulator_enable(lcd_avdd);
			if (ret &lt; 0)
				goto regu_lcd_iovdd;
		}

		if (panel-&gt;is_iovdd &amp;&amp; lcd_iovdd) {
			regulator_set_voltage(lcd_iovdd, 1800000, 1800000);
			ret = regulator_enable(lcd_iovdd);
			if (ret &lt; 0)
				goto regu_lcd_iovdd;
		}
		usleep_range(20000, 21000);
		
	 	if (panel-&gt;is_ldo &amp;&amp; lcd_ldo) {
			regulator_set_voltage(lcd_ldo, 1800000, 1800000);
			ret = regulator_enable(lcd_ldo);
			if (ret &lt; 0)
				goto regu_lcd_iovdd;
		}
		usleep_range(15000, 16000);
	
		gpio_set_value(plat-&gt;power_pin, 1);
//		vcom_pwm = 85;
		gpio_set_value(plat-&gt;vcom_pin, 1);

		if (!skip_on) {
			gpio_direction_output(lcd_rst_n, 1);
			usleep_range(10000, 11000);
			gpio_direction_output(lcd_rst_n, 0);
			usleep_range(10000, 12000);
			gpio_direction_output(lcd_rst_n, 1);
			msleep(120);
		}
	} else {
		/* set panel reset */
		gpio_direction_output(lcd_rst_n, 0);

		gpio_set_value(plat-&gt;power_pin, 0);
//		vcom_pwm = 0;
		gpio_set_value(plat-&gt;vcom_pin, 0);
		/* disable LCD_IOVDD 1.8v */
		if (panel-&gt;is_iovdd &amp;&amp; lcd_iovdd)
			regulator_disable(lcd_iovdd);
		if (panel-&gt;is_avdd &amp;&amp; lcd_avdd)
			regulator_disable(lcd_avdd);
		if (panel-&gt;is_ldo &amp;&amp; lcd_ldo)
			regulator_disable(lcd_ldo);
	}

regu_lcd_iovdd:
	gpio_free(lcd_rst_n);
	if (ret &lt; 0) {
		lcd_iovdd = NULL;
		lcd_avdd = NULL;
	}
}
#else
static void ota7290b_panel_power(struct mmp_panel *panel, int skip_on, int on) {}
#endif

static void ota7290b_set_status(struct mmp_panel *panel, int status)
{
	struct ota7290b_plat_data *plat = panel-&gt;plat_data;
	int skip_on = (status == MMP_ON_REDUCED);

	if (status_is_on(status)) {
		/* power on */
		if (plat-&gt;plat_onoff)
			plat-&gt;plat_onoff(1);
		else
			ota7290b_panel_power(panel, skip_on, 1);
		if (!skip_on)
			ota7290b_panel_on(panel, 1);
	} else if (status_is_off(status)) {
		ota7290b_panel_on(panel, 0);
		/* power off */
		if (plat-&gt;plat_onoff)
			plat-&gt;plat_onoff(0);
		else
			ota7290b_panel_power(panel, 0, 0);
	} else
		dev_warn(panel-&gt;dev, "set status %s not supported\n",
					status_name(status));
}

static void ota7290b_esd_onoff(struct mmp_panel *panel, int status)
{
	struct ota7290b_plat_data *plat = panel-&gt;plat_data;

	if (status) {
		if (plat-&gt;esd_enable)
			esd_start(&amp;panel-&gt;esd);
	} else {
		if (plat-&gt;esd_enable)
			esd_stop(&amp;panel-&gt;esd);
	}
}

static void ota7290b_esd_recover(struct mmp_panel *panel)
{
	struct mmp_path *path = mmp_get_path(panel-&gt;plat_path_name);
	static int count = 1;

	/*
	 * FIXME: skip the first esd_recover
	 * since the first esd check will fail.
	 */
	if (count++ &gt; 1)
		esd_panel_recover(path);
}

/*
 * OTA7290B read id
 */
static char ota7290ba_pkt_size_cmd[] = {0x01};
static char ota7290b_manufacetrue_init[] = {0xB0, 0x5A, 0x03};
static char read_id_ota7290b[] = {0x14};

static struct mmp_dsi_cmd_desc ota7290ba_read_id_cmds[] = {
	{MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_manufacetrue_init),
		ota7290b_manufacetrue_init},
	{MIPI_DSI_SET_MAXIMUM_RETURN_PACKET_SIZE, 1, 0,
		sizeof(ota7290ba_pkt_size_cmd), ota7290ba_pkt_size_cmd},
	{MIPI_DSI_DCS_READ, 1, 0,
		sizeof(read_id_ota7290b), read_id_ota7290b},
};

static int ota7290b_get_status(struct mmp_panel *panel)
{
	struct mmp_dsi_buf dbuf;
	u32 read_id = 0;
	int ret;

	return 0;

	ret = mmp_panel_dsi_rx_cmd_array(panel, &amp;dbuf,
		ota7290ba_read_id_cmds,
		ARRAY_SIZE(ota7290ba_read_id_cmds));
	if (ret &lt; 0) {
		pr_err("[ERROR] DSI receive failure!\n");
		return 1;
	}

	read_id = dbuf.data[0];


	if (read_id != OTA7290B_ID) {
		pr_err("[ERROR] panel status is 0x%x\n", read_id);
		return 1;
	} else {
		pr_debug("panel status is 0x%x\n", read_id);
	}

}

static struct mmp_mode mmp_modes_ota7290b[] = {
	[0] = {
		.pixclock_freq = 51797760,
		.refresh = 60,
		.xres = 480,
		.yres = 1280,
		.real_xres = 480,
		.real_yres = 1280,
		.hsync_len = 2,
		.left_margin = 30,
		.right_margin = 146,
		.vsync_len = 2,
		.upper_margin = 14,
		.lower_margin = 16,
		.invert_pixclock = 0,
		.pix_fmt_out = PIXFMT_BGR888PACK,
		.hsync_invert = 0,
		.vsync_invert = 0,
		.height = 90,
		.width = 50,
	},
};

static int ota7290b_get_modelist(struct mmp_panel *panel,
		struct mmp_mode **modelist)
{
	*modelist = mmp_modes_ota7290b;
	return 1;
}

static struct mmp_panel panel_ota7290b = {
	.name = "ota7290b",
	.panel_type = PANELTYPE_DSI_VIDEO,
	.is_iovdd = 0,
	.is_avdd = 0,
	.is_ldo = 0,
	.get_modelist = ota7290b_get_modelist,
	.set_status = ota7290b_set_status,
	//.get_status = ota7290b_get_status,
	//.panel_esd_recover = ota7290b_esd_recover,
	//.esd_set_onoff = ota7290b_esd_onoff,
};

static int ota7290b_bl_update_status(struct backlight_device *bl)
{
	struct ota7290b_plat_data *data = dev_get_drvdata(&amp;bl-&gt;dev);
	struct mmp_panel *panel = data-&gt;panel;
	int level;

	if (bl-&gt;props.fb_blank == FB_BLANK_UNBLANK &amp;&amp;
			bl-&gt;props.power == FB_BLANK_UNBLANK)
		level = bl-&gt;props.brightness;
	else
		level = 0;

	/* If there is backlight function of board, use it */
	if (data &amp;&amp; data-&gt;plat_set_backlight) {
		data-&gt;plat_set_backlight(panel, level);
		return 0;
	}

	if (panel &amp;&amp; panel-&gt;set_brightness)
		panel-&gt;set_brightness(panel, level);

	return 0;
}

static int ota7290b_bl_get_brightness(struct backlight_device *bl)
{
	if (bl-&gt;props.fb_blank == FB_BLANK_UNBLANK &amp;&amp;
			bl-&gt;props.power == FB_BLANK_UNBLANK)
		return bl-&gt;props.brightness;

	return 0;
}

static DEFINE_SPINLOCK(bl_lock);
static void ota7290b_panel_set_bl(struct mmp_panel *panel, int intensity)
{
	int gpio_bl, bl_level, p_num;
	unsigned long flags;
	/*
	 * FIXME
	 * the initial value of bl_level_last is the
	 * uboot backlight level, it should be aligned.
	 */
	static int bl_level_last = 17;

	gpio_bl = of_get_named_gpio(panel-&gt;dev-&gt;of_node, "bl_gpio", 0);
	if (gpio_bl &lt; 0) {
		pr_err("%s: of_get_named_gpio failed\n", __func__);
		return;
	}

	if (gpio_request(gpio_bl, "lcd backlight")) {
		pr_err("gpio %d request failed\n", gpio_bl);
		return;
	}

	/*
	 * Brightness is controlled by a series of pulses
	 * generated by gpio. It has 32 leves and level 1
	 * is the brightest. Pull low for 3ms makes
	 * backlight shutdown
	 */
	bl_level = (100 - intensity) * 32 / 100 + 1;

	if (bl_level == bl_level_last)
		goto set_bl_return;

	if (bl_level == 33) {
		/* shutdown backlight */
		gpio_direction_output(gpio_bl, 0);
		goto set_bl_return;
	}

	if (bl_level &gt; bl_level_last)
		p_num = bl_level - bl_level_last;
	else
		p_num = bl_level + 32 - bl_level_last;

	while (p_num--) {
		spin_lock_irqsave(&amp;bl_lock, flags);
		gpio_direction_output(gpio_bl, 0);
		udelay(1);
		gpio_direction_output(gpio_bl, 1);
		spin_unlock_irqrestore(&amp;bl_lock, flags);
		udelay(1);
	}

set_bl_return:
	if (bl_level == 33)
		bl_level_last = 0;
	else
		bl_level_last = bl_level;
	gpio_free(gpio_bl);
}

static const struct backlight_ops ota7290b_bl_ops = {
	.get_brightness = ota7290b_bl_get_brightness,
	.update_status  = ota7290b_bl_update_status,
};

static int ota7290b_probe(struct platform_device *pdev)
{
	struct mmp_mach_panel_info *mi;
	struct ota7290b_plat_data *plat_data;
	struct device_node *np = pdev-&gt;dev.of_node;
	const char *path_name;
	struct backlight_properties props;
	struct backlight_device *bl;
	int ret;
	u32 esd_enable;

	plat_data = devm_kzalloc(&amp;pdev-&gt;dev, sizeof(*plat_data), GFP_KERNEL);
	if (!plat_data)
		return -ENOMEM;

	if (IS_ENABLED(CONFIG_OF)) {
		ret = of_property_read_string(np, "marvell,path-name",
				&amp;path_name);
		if (ret &lt; 0) {
			kfree(plat_data);
			return ret;
		}
		panel_ota7290b.plat_path_name = path_name;

		if (of_find_property(np, "iovdd-supply", NULL))
			panel_ota7290b.is_iovdd = 1;

		if (of_find_property(np, "avdd-supply", NULL))
			panel_ota7290b.is_avdd = 1;
			
		if (of_find_property(np, "ldo-supply", NULL))
			panel_ota7290b.is_ldo = 1;

		if (of_property_read_u32(np, "panel_esd", &amp;esd_enable))
			plat_data-&gt;esd_enable = 0;

		plat_data-&gt;esd_enable = esd_enable;

		if (of_get_named_gpio(np, "bl_gpio", 0) &lt; 0)
			pr_debug("%s: get bl_gpio failed\n", __func__);
		else
			plat_data-&gt;plat_set_backlight = ota7290b_panel_set_bl;

		plat_data-&gt;power_pin = of_get_named_gpio(np, "power_gpio", 0);
		if(plat_data-&gt;power_pin &lt; 0) {
			pr_debug("%s: get power pin failed\n",__func__);
		}

		if(devm_gpio_request(&amp;pdev-&gt;dev, plat_data-&gt;power_pin, "lcd power pin")) {
			pr_err("%s request power pin failed!\n",__func__);
			return -EINVAL;
		}
		gpio_direction_output(plat_data-&gt;power_pin, 1);
		
		plat_data-&gt;vcom_pin = of_get_named_gpio(np, "vcom_gpio", 0);
		if(plat_data-&gt;vcom_pin &lt; 0) {
			pr_debug("%s: get vcom control pin failed\n",__func__);
		}

		if(devm_gpio_request(&amp;pdev-&gt;dev, plat_data-&gt;vcom_pin, "lcd vcom pin")) {
			pr_err("%s request vcom control pin failed!\n",__func__);
			return -EINVAL;
		}
		gpio_direction_output(plat_data-&gt;vcom_pin, 1);

//		vcom_task = kthread_create(vcom_task_func, plat_data, "vcom_task func");
//		if(IS_ERR(vcom_task))
//		{
//			pr_err("Can't create thread vcom_task\n");
//			vcom_task = NULL;
//			return -1;
//		}


	} else {
		/* get configs from platform data */
		mi = pdev-&gt;dev.platform_data;
		if (mi == NULL) {
			dev_err(&amp;pdev-&gt;dev, "no platform data defined\n");
			kfree(plat_data);
			return -EINVAL;
		}
		plat_data-&gt;plat_onoff = mi-&gt;plat_set_onoff;
		panel_ota7290b.plat_path_name = mi-&gt;plat_path_name;
		plat_data-&gt;plat_set_backlight = mi-&gt;plat_set_backlight;
		plat_data-&gt;esd_enable = mi-&gt;esd_enable;
	}

//	ret = sysfs_create_group(&amp;pdev-&gt;dev.kobj,
//			&amp;vcom_attribute_group);
//	if (ret &lt; 0) {
//		pr_err("%s: create group fail!\n", __func__);
//		return ret;
//	}

	plat_data-&gt;panel = &amp;panel_ota7290b;
	panel_ota7290b.plat_data = plat_data;
	panel_ota7290b.dev = &amp;pdev-&gt;dev;
	mmp_register_panel(&amp;panel_ota7290b);

	if (plat_data-&gt;esd_enable)
		esd_init(&amp;panel_ota7290b);

	/*
	 * if no panel or plat associate backlight control,
	 * don't register backlight device here.
	 */
	if (!panel_ota7290b.set_brightness &amp;&amp; !plat_data-&gt;plat_set_backlight)
		return 0;

	memset(&amp;props, 0, sizeof(struct backlight_properties));
	props.max_brightness = 100;
	props.type = BACKLIGHT_RAW;

	bl = backlight_device_register("lcd-bl", &amp;pdev-&gt;dev, plat_data,
			&amp;ota7290b_bl_ops, &amp;props);
	if (IS_ERR(bl)) {
		ret = PTR_ERR(bl);
		dev_err(&amp;pdev-&gt;dev, "failed to register lcd-backlight\n");
		return ret;
	}

	bl-&gt;props.fb_blank = FB_BLANK_UNBLANK;
	bl-&gt;props.power = FB_BLANK_UNBLANK;
	bl-&gt;props.brightness = 40;

	return 0;
}

static int ota7290b_remove(struct platform_device *dev)
{
	mmp_unregister_panel(&amp;panel_ota7290b);
	kfree(panel_ota7290b.plat_data);

	return 0;
}

#ifdef CONFIG_OF
static const struct of_device_id mmp_ota7290b_dt_match[] = {
	{ .compatible = "marvell,mmp-ota7290b" },
	{},
};
#endif

static struct platform_driver ota7290b_driver = {
	.driver		= {
		.name	= "mmp-ota7290b",
		.owner	= THIS_MODULE,
		.of_match_table = of_match_ptr(mmp_ota7290b_dt_match),
	},
	.probe		= ota7290b_probe,
	.remove		= ota7290b_remove,
};

static int ota7290b_init(void)
{
	return platform_driver_register(&amp;ota7290b_driver);
}
static void ota7290b_exit(void)
{
	platform_driver_unregister(&amp;ota7290b_driver);
}
module_init(ota7290b_init);
module_exit(ota7290b_exit);

MODULE_AUTHOR("Yonghai Huang &lt;huangyh@marvell.com&gt;");
MODULE_DESCRIPTION("Panel driver for MIPI panel ILI9806E");
MODULE_LICENSE("GPL");
</code></pre>
]]></description><link>https://bbs.aw-ol.com/post/4807</link><guid isPermaLink="true">https://bbs.aw-ol.com/post/4807</guid><dc:creator><![CDATA[tigger]]></dc:creator><pubDate>Tue, 08 Mar 2022 03:03:20 GMT</pubDate></item></channel></rss>