Received: by 2002:ab2:3350:0:b0:1f4:6588:b3a7 with SMTP id o16csp1841100lqe; Tue, 9 Apr 2024 01:46:43 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCVq1u3cI0ckhZ6F9IYyp5XNysHzbBDNrlcVTAtvVYjIxoRZJOGiN+dZvyduUUYHTMFMOHPank50OmpzBpDEvNhtBg9UAXmWS+zD9rehcw== X-Google-Smtp-Source: AGHT+IH0/5cFnXH+DSTWghFecz6UoJd7IpTxpMxgMXwi0hCy22FoKrkiFREMCgu+82RTWH6V5lFL X-Received: by 2002:a17:902:cf03:b0:1e4:635b:684f with SMTP id i3-20020a170902cf0300b001e4635b684fmr3667592plg.49.1712652403621; Tue, 09 Apr 2024 01:46:43 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1712652403; cv=pass; d=google.com; s=arc-20160816; b=W/reiqGSHoWglYV0XRs+fK0ZdcPArfT7XvmvOackZXL46GJ9iN+lLHBZXC4MOIpmBB WeelVVfR7/PoA9xpfCec9ECu7Kx/C6ce9Btj8FCSYf4Pnf3xgdWpneK735wmTvwL2xMf iJpO+MMNAyUN9zPBvXQ/LVX2n7EtFgR2a7L1nP4HpKnC88QaZi0297uHLYvvvG+d0LjI do+wQaDjdMcy/B4vR93gIiuuDnVXE8uC8JZXp4LUgJtNYM5FgNckLj8nViqQaSAJXVgJ IAjILCoz2g8dDGDp3wRHqs+UqNJJAVnahTK9DQQ/CpGfW8eYiiQxIYtSB/23jeadeuJc y02Q== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:in-reply-to:organization:autocrypt :content-language:references:cc:to:subject:reply-to:from:user-agent :mime-version:list-unsubscribe:list-subscribe:list-id:precedence :date:message-id:dkim-signature; bh=vHu+ApQiDZm4wD0OGF1m10+AEQltl74anFd8SqfDw8A=; fh=TmI8oPSbQcwrhGQF5mupr5jnFFZgDZJplkFANfcygVU=; b=hRVVVSbY70rg4diSWvdd7Mhc+gAGdFQ3gw1Zf63rqdWG6QG180r9kOOn+/hs152H7i OEOWViBWfWtivRfdNXknLC8oWBMFdIP1Bltmy8jwx2It65RISTe70PwsBV36XZPWZdFt fjC/xiHpFK/AfvGpkbM1D7KnZt3NjQC13v67QGd6/xNIahKK2le5CG+dWBBDA+ZfNYpq qGzNsSsdnoVwqq6YYuZfzF/qhdBrk5JCc/PmjQ1v3wYKgZcfOb69pJ3RhVm+XHuAjIhN uV2mTcXoB0Hf4C0uqBVgrYmQjYp+0RGvbU6dB7dWYwmlv0O+Fx0oq2vMtqNbbEQFqsF6 KxSg==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=wQabo0sz; arc=pass (i=1 spf=pass spfdomain=linaro.org dkim=pass dkdomain=linaro.org dmarc=pass fromdomain=linaro.org); spf=pass (google.com: domain of linux-kernel+bounces-136496-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-136496-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id n15-20020a170902f60f00b001ddc90af6c6si8136211plg.319.2024.04.09.01.46.43 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Apr 2024 01:46:43 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-136496-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) client-ip=2604:1380:45e3:2400::1; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=wQabo0sz; arc=pass (i=1 spf=pass spfdomain=linaro.org dkim=pass dkdomain=linaro.org dmarc=pass fromdomain=linaro.org); spf=pass (google.com: domain of linux-kernel+bounces-136496-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-136496-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id AB7552834B2 for ; Tue, 9 Apr 2024 08:46:42 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 6B39A71B3D; Tue, 9 Apr 2024 08:46:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="wQabo0sz" Received: from mail-wm1-f50.google.com (mail-wm1-f50.google.com [209.85.128.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 404C71EA74 for ; Tue, 9 Apr 2024 08:46:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.50 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712652396; cv=none; b=MNwT/cZmjorQ4lRu9eg48qrp8TCuPxSQTB8PFVX/z+jDy4EorPk4RdJwI37kGEqd+nXLG/R1+MLdMF9SC40+LYmZIAqFmlQ7a2tqwc9c+KgxP8zSaFDb9PsLuF3MudldJpjF2cBQLN4F1JrsLDT8YNeLAae8RpacRiup6DGE4so= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712652396; c=relaxed/simple; bh=Pxx9vIt4q3QuchBycycxjLRl20GUmaDoIQ7DgHLgr0g=; h=Message-ID:Date:MIME-Version:From:Subject:To:Cc:References: In-Reply-To:Content-Type; b=j6z1A75g55pmaKux3k2KEbZv3Tc9sBNP1zHayxpGQqWtwtyPBp6eYwVvB2UGvlddo6FN6aqH9V65u8VJUh+6amAi/+Q5sE5N9+RvchqIfXkIY40xseaTTsGlIKHzYEOK0kJ5Dl2+W4jPsjazJr7su/mV4H7/8K12LhIBEWpfORY= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=wQabo0sz; arc=none smtp.client-ip=209.85.128.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Received: by mail-wm1-f50.google.com with SMTP id 5b1f17b1804b1-41649860cecso15953275e9.0 for ; Tue, 09 Apr 2024 01:46:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1712652390; x=1713257190; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:organization:autocrypt :content-language:references:cc:to:subject:reply-to:from:user-agent :mime-version:date:message-id:from:to:cc:subject:date:message-id :reply-to; bh=vHu+ApQiDZm4wD0OGF1m10+AEQltl74anFd8SqfDw8A=; b=wQabo0szDLUrwE8sHFKc7X9df6sf6Bi9EbZJgBO8QhR4SphAadqQO76womsrUaziF9 pjKq4NyY/fLKqbaTA2hYI4WVi0m/sAwWPDZqR/snMmjq1RbeIpHFgfPZHHSTABB9dhdT ibFuO3x5YGFFJyptA1t39RXbmSR6W7YGut/T7ass/7s8MkrpeYk7VW89QsiEwtPVyqai UiBGjB5my2r+zNPNDdSn0BegiET9XRdVO+YFNBw+RinXw8Sv0JfLwzcbAIUatWhQuFRM HuOuaFfmNaF6YpCRJRgfxqjbpgESHuR255QjqNfheiX1S4K8j9zT8i2BnVqgyIVoTpxF O92A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712652390; x=1713257190; h=content-transfer-encoding:in-reply-to:organization:autocrypt :content-language:references:cc:to:subject:reply-to:from:user-agent :mime-version:date:message-id:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=vHu+ApQiDZm4wD0OGF1m10+AEQltl74anFd8SqfDw8A=; b=p7E47npdPLphb9Sqp94ZAf9ey/E9fgBt1OkmVCqf/+V+1/ydq+jxalUZPJmA/7gWdV vrSaPoLOmDc0Fjd6kaftDZMWtmSAJjiCOm+QbUqaCvwtnVJ8JgnfNwT3fAjQltMgY36k ZH0zLG7RFM4f6z2g3MWFob5NT2x5ZwioUC9Pvm3gMpH/mZVtCeI595gqwxmLfN+risE+ 9cgsTn6lYl/JOFAMdIaZ3gXFD/DHRogB0P5s6dZ/xZbPFVNMvMHMqeLrlLPjsNyQ1yaP KJUk0NQngFd7ZUJ1G16AVyZthbKD/DQCQpaW54+0eCB+XYnbNt5Gyzd3vluON9Kmc9zC Jg7A== X-Forwarded-Encrypted: i=1; AJvYcCV7SUQ4/ACgIeaEh4v40pkXsKj0yhw+j/0guCGiQjfh7uPMRpofos6btGSPaqB97XlvOGbWz8evoaOQvHkLPciE6R+PSJqqQ6B7mD4w X-Gm-Message-State: AOJu0YxRpRMPYc7VC4CFzJl6iMftRCrf8KwnfPR3Q24GX7/lITy0Fx2C zz+zUSxLOYBUlWDCM/0APPddJFPDwxgD2Jf0Yw7Y+RDZdC3HuMnI1+usawZnRs8= X-Received: by 2002:a05:600c:4f0c:b0:416:6dff:9850 with SMTP id l12-20020a05600c4f0c00b004166dff9850mr4497717wmq.0.1712652390128; Tue, 09 Apr 2024 01:46:30 -0700 (PDT) Received: from ?IPV6:2a01:e0a:982:cbb0:f55f:39:b3eb:53ba? ([2a01:e0a:982:cbb0:f55f:39:b3eb:53ba]) by smtp.gmail.com with ESMTPSA id k16-20020a05600c1c9000b004166a7afd20sm7386481wms.10.2024.04.09.01.46.29 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Apr 2024 01:46:29 -0700 (PDT) Message-ID: Date: Tue, 9 Apr 2024 10:46:28 +0200 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: neil.armstrong@linaro.org Reply-To: neil.armstrong@linaro.org Subject: Re: [PATCH 2/2] drm/panel: add New TS050 panel support To: Jacobe Zang , narmstrong@baylibre.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, daniel@ffwll.ch Cc: quic_jesszhan@quicinc.com, sam@ravnborg.org, nick@khadas.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-amlogic@lists.infradead.org References: <20240409082954.360286-1-jacobe.zang@wesion.com> Content-Language: en-US, fr Autocrypt: addr=neil.armstrong@linaro.org; keydata= xsBNBE1ZBs8BCAD78xVLsXPwV/2qQx2FaO/7mhWL0Qodw8UcQJnkrWmgTFRobtTWxuRx8WWP GTjuhvbleoQ5Cxjr+v+1ARGCH46MxFP5DwauzPekwJUD5QKZlaw/bURTLmS2id5wWi3lqVH4 BVF2WzvGyyeV1o4RTCYDnZ9VLLylJ9bneEaIs/7cjCEbipGGFlfIML3sfqnIvMAxIMZrvcl9 qPV2k+KQ7q+aXavU5W+yLNn7QtXUB530Zlk/d2ETgzQ5FLYYnUDAaRl+8JUTjc0CNOTpCeik 80TZcE6f8M76Xa6yU8VcNko94Ck7iB4vj70q76P/J7kt98hklrr85/3NU3oti3nrIHmHABEB AAHNKk5laWwgQXJtc3Ryb25nIDxuZWlsLmFybXN0cm9uZ0BsaW5hcm8ub3JnPsLAkQQTAQoA OwIbIwULCQgHAwUVCgkICwUWAgMBAAIeAQIXgBYhBInsPQWERiF0UPIoSBaat7Gkz/iuBQJk Q5wSAhkBAAoJEBaat7Gkz/iuyhMIANiD94qDtUTJRfEW6GwXmtKWwl/mvqQtaTtZID2dos04 YqBbshiJbejgVJjy+HODcNUIKBB3PSLaln4ltdsV73SBcwUNdzebfKspAQunCM22Mn6FBIxQ GizsMLcP/0FX4en9NaKGfK6ZdKK6kN1GR9YffMJd2P08EO8mHowmSRe/ExAODhAs9W7XXExw UNCY4pVJyRPpEhv373vvff60bHxc1k/FF9WaPscMt7hlkbFLUs85kHtQAmr8pV5Hy9ezsSRa GzJmiVclkPc2BY592IGBXRDQ38urXeM4nfhhvqA50b/nAEXc6FzqgXqDkEIwR66/Gbp0t3+r yQzpKRyQif3OwE0ETVkGzwEIALyKDN/OGURaHBVzwjgYq+ZtifvekdrSNl8TIDH8g1xicBYp QTbPn6bbSZbdvfeQPNCcD4/EhXZuhQXMcoJsQQQnO4vwVULmPGgtGf8PVc7dxKOeta+qUh6+ SRh3vIcAUFHDT3f/Zdspz+e2E0hPV2hiSvICLk11qO6cyJE13zeNFoeY3ggrKY+IzbFomIZY 4yG6xI99NIPEVE9lNBXBKIlewIyVlkOaYvJWSV+p5gdJXOvScNN1epm5YHmf9aE2ZjnqZGoM Mtsyw18YoX9BqMFInxqYQQ3j/HpVgTSvmo5ea5qQDDUaCsaTf8UeDcwYOtgI8iL4oHcsGtUX oUk33HEAEQEAAcLAXwQYAQIACQUCTVkGzwIbDAAKCRAWmrexpM/4rrXiB/sGbkQ6itMrAIfn M7IbRuiSZS1unlySUVYu3SD6YBYnNi3G5EpbwfBNuT3H8//rVvtOFK4OD8cRYkxXRQmTvqa3 3eDIHu/zr1HMKErm+2SD6PO9umRef8V82o2oaCLvf4WeIssFjwB0b6a12opuRP7yo3E3gTCS KmbUuLv1CtxKQF+fUV1cVaTPMyT25Od+RC1K+iOR0F54oUJvJeq7fUzbn/KdlhA8XPGzwGRy 4zcsPWvwnXgfe5tk680fEKZVwOZKIEuJC3v+/yZpQzDvGYJvbyix0lHnrCzq43WefRHI5XTT QbM0WUIBIcGmq38+OgUsMYu4NzLu7uZFAcmp6h8g Organization: Linaro In-Reply-To: <20240409082954.360286-1-jacobe.zang@wesion.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi Jacobe, On 09/04/2024 10:29, Jacobe Zang wrote: > This add New TS050 Panel and make it compatible with old one. > > Signed-off-by: Jacobe Zang > --- > drivers/gpu/drm/panel/panel-khadas-ts050.c | 1112 +++++++++++--------- > 1 file changed, 590 insertions(+), 522 deletions(-) > > diff --git a/drivers/gpu/drm/panel/panel-khadas-ts050.c b/drivers/gpu/drm/panel/panel-khadas-ts050.c > index b942a01622743..564b3c8ae4d91 100644 > --- a/drivers/gpu/drm/panel/panel-khadas-ts050.c > +++ b/drivers/gpu/drm/panel/panel-khadas-ts050.c > @@ -25,6 +25,7 @@ struct khadas_ts050_panel { > struct regulator *supply; > struct gpio_desc *reset_gpio; > struct gpio_desc *enable_gpio; > + struct khadas_ts050_panel_data *panel_data; > > bool prepared; > bool enabled; > @@ -32,544 +33,601 @@ struct khadas_ts050_panel { > > struct khadas_ts050_panel_cmd { > u8 cmd; > - u8 data; > + u8 data[55]; > + u8 size; > +}; > + > +struct khadas_ts050_panel_data { > + struct khadas_ts050_panel_cmd *init_code; > + int len; > +}; > + > +static const struct khadas_ts050_panel_cmd new_ts050_init_code[] = { > + {0xB9, {0xFF, 0x83, 0x99}, 0x03}, > + {0xBA, {0x63, 0x23, 0x68, 0xCF}, 0x04}, > + {0xD2, {0x55}, 0x01}, > + {0xB1, {0x02, 0x04, 0x70, 0x90, 0x01, 0x32, 0x33, > + 0x11, 0x11, 0x4D, 0x57, 0x56, 0x73, 0x02, 0x02}, 0x0f}, > + {0xB2, {0x00, 0x80, 0x80, 0xAE, 0x0A, 0x0E, 0x75, 0x11, 0x00, 0x00, 0x00}, 0x0b}, > + {0xB4, {0x00, 0xFF, 0x04, 0xA4, 0x02, 0xA0, 0x00, 0x00, 0x10, 0x00, 0x00, 0x02, > + 0x00, 0x24, 0x02, 0x04, 0x0A, 0x21, 0x03, 0x00, 0x00, 0x08, 0xA6, 0x88, > + 0x04, 0xA4, 0x02, 0xA0, 0x00, 0x00, 0x10, 0x00, 0x00, 0x02, 0x00, 0x24, > + 0x02, 0x04, 0x0A, 0x00, 0x00, 0x08, 0xA6, 0x00, 0x08, 0x11}, 0x2e}, > + {0xD3, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, > + 0x18, 0x32, 0x10, 0x09, 0x00, 0x09, 0x32, > + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x11, 0x00, 0x02, 0x02, 0x03, 0x00, 0x00, 0x00, 0x0A, > + 0x40}, 0x21}, > + {0xD5, {0x18, 0x18, 0x18, 0x18, 0x21, 0x20, 0x18, 0x18, 0x19, 0x19, 0x19, > + 0x19, 0x18, 0x18, 0x18, 0x18, 0x03, 0x02, 0x01, 0x00, 0x2F, 0x2F, > + 0x30, 0x30, 0x31, 0x31, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18}, 0x20}, > + {0xD6, {0x18, 0x18, 0x18, 0x18, 0x20, 0x21, 0x19, 0x19, 0x18, 0x18, 0x19, > + 0x19, 0x18, 0x18, 0x18, 0x18, 0x00, 0x01, 0x02, 0x03, 0x2F, 0x2F, > + 0x30, 0x30, 0x31, 0x31, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18}, 0x20}, > + {0xD8, {0x0A, 0xBE, 0xFA, 0xA0, 0x0A, 0xBE, 0xFA, 0xA0}, 0x08}, > + {0xBD, {0x01}, 0x01}, > + {0xD8, {0x0F, 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0xE0}, 0x08}, > + {0xBD, {0x02}, 0x01}, > + {0xD8, {0x0F, 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0xE0}, 0x08}, > + {0xBD, {0x00}, 0x01}, > + {0xE0, {0x01, 0x35, 0x41, 0x3B, 0x79, 0x81, 0x8C, 0x85, 0x8E, > + 0x95, 0x9B, 0xA0, 0xA4, 0xAB, 0xB1, 0xB3, 0xB7, 0xC5, 0xBD, 0xC5, > + 0xB6, 0xC2, 0xC2, 0x62, 0x5D, 0x66, 0x73, 0x01, 0x35, 0x41, 0x3B, > + 0x79, 0x81, 0x8C, 0x85, 0x8E, 0x95, 0x9B, 0xA0, 0xA4, 0xAB, 0xB1, > + 0xB3, 0xB7, 0xB5, 0xBD, 0xC5, 0xB6, 0xC2, 0xC2, 0x62, 0x5D, 0x66, > + 0x73}, 0x36}, > + {0xB6, {0x97, 0x97}, 0x02}, > + {0xCC, {0xC8}, 0x02}, > + {0xBF, {0x40, 0x41, 0x50, 0x19}, 0x04}, > + {0xC6, {0xFF, 0xF9}, 0x02}, > + {0xC0, {0x25, 0x5A}, 0x02}, > }; This init sequence looks very very close to the ltk050h3146w one in https://elixir.bootlin.com/linux/latest/source/drivers/gpu/drm/panel/panel-leadtek-ltk050h3146w.c#L247 could it probably be adding in this driver instead ? do you know which controller is used in this new panel ? Thanks, Neil > > /* Only the CMD1 User Command set is documented */ > -static const struct khadas_ts050_panel_cmd init_code[] = { > +static const struct khadas_ts050_panel_cmd ts050_init_code[] = { > /* Select Unknown CMD Page (Undocumented) */ > - {0xff, 0xee}, > + {0xff, {0xee}, 0x01}, > /* Reload CMD1: Don't reload default value to register */ > - {0xfb, 0x01}, > - {0x1f, 0x45}, > - {0x24, 0x4f}, > - {0x38, 0xc8}, > - {0x39, 0x27}, > - {0x1e, 0x77}, > - {0x1d, 0x0f}, > - {0x7e, 0x71}, > - {0x7c, 0x03}, > - {0xff, 0x00}, > - {0xfb, 0x01}, > - {0x35, 0x01}, > + {0xfb, {0x01}, 0x01}, > + {0x1f, {0x45}, 0x01}, > + {0x24, {0x4f}, 0x01}, > + {0x38, {0xc8}, 0x01}, > + {0x39, {0x27}, 0x01}, > + {0x1e, {0x77}, 0x01}, > + {0x1d, {0x0f}, 0x01}, > + {0x7e, {0x71}, 0x01}, > + {0x7c, {0x03}, 0x01}, > + {0xff, {0x00}, 0x01}, > + {0xfb, {0x01}, 0x01}, > + {0x35, {0x01}, 0x01}, > /* Select CMD2 Page0 (Undocumented) */ > - {0xff, 0x01}, > + {0xff, {0x01}, 0x01}, > /* Reload CMD1: Don't reload default value to register */ > - {0xfb, 0x01}, > - {0x00, 0x01}, > - {0x01, 0x55}, > - {0x02, 0x40}, > - {0x05, 0x40}, > - {0x06, 0x4a}, > - {0x07, 0x24}, > - {0x08, 0x0c}, > - {0x0b, 0x7d}, > - {0x0c, 0x7d}, > - {0x0e, 0xb0}, > - {0x0f, 0xae}, > - {0x11, 0x10}, > - {0x12, 0x10}, > - {0x13, 0x03}, > - {0x14, 0x4a}, > - {0x15, 0x12}, > - {0x16, 0x12}, > - {0x18, 0x00}, > - {0x19, 0x77}, > - {0x1a, 0x55}, > - {0x1b, 0x13}, > - {0x1c, 0x00}, > - {0x1d, 0x00}, > - {0x1e, 0x13}, > - {0x1f, 0x00}, > - {0x23, 0x00}, > - {0x24, 0x00}, > - {0x25, 0x00}, > - {0x26, 0x00}, > - {0x27, 0x00}, > - {0x28, 0x00}, > - {0x35, 0x00}, > - {0x66, 0x00}, > - {0x58, 0x82}, > - {0x59, 0x02}, > - {0x5a, 0x02}, > - {0x5b, 0x02}, > - {0x5c, 0x82}, > - {0x5d, 0x82}, > - {0x5e, 0x02}, > - {0x5f, 0x02}, > - {0x72, 0x31}, > + {0xfb, {0x01}, 0x01}, > + {0x00, {0x01}, 0x01}, > + {0x01, {0x55}, 0x01}, > + {0x02, {0x40}, 0x01}, > + {0x05, {0x40}, 0x01}, > + {0x06, {0x4a}, 0x01}, > + {0x07, {0x24}, 0x01}, > + {0x08, {0x0c}, 0x01}, > + {0x0b, {0x7d}, 0x01}, > + {0x0c, {0x7d}, 0x01}, > + {0x0e, {0xb0}, 0x01}, > + {0x0f, {0xae}, 0x01}, > + {0x11, {0x10}, 0x01}, > + {0x12, {0x10}, 0x01}, > + {0x13, {0x03}, 0x01}, > + {0x14, {0x4a}, 0x01}, > + {0x15, {0x12}, 0x01}, > + {0x16, {0x12}, 0x01}, > + {0x18, {0x00}, 0x01}, > + {0x19, {0x77}, 0x01}, > + {0x1a, {0x55}, 0x01}, > + {0x1b, {0x13}, 0x01}, > + {0x1c, {0x00}, 0x01}, > + {0x1d, {0x00}, 0x01}, > + {0x1e, {0x13}, 0x01}, > + {0x1f, {0x00}, 0x01}, > + {0x23, {0x00}, 0x01}, > + {0x24, {0x00}, 0x01}, > + {0x25, {0x00}, 0x01}, > + {0x26, {0x00}, 0x01}, > + {0x27, {0x00}, 0x01}, > + {0x28, {0x00}, 0x01}, > + {0x35, {0x00}, 0x01}, > + {0x66, {0x00}, 0x01}, > + {0x58, {0x82}, 0x01}, > + {0x59, {0x02}, 0x01}, > + {0x5a, {0x02}, 0x01}, > + {0x5b, {0x02}, 0x01}, > + {0x5c, {0x82}, 0x01}, > + {0x5d, {0x82}, 0x01}, > + {0x5e, {0x02}, 0x01}, > + {0x5f, {0x02}, 0x01}, > + {0x72, {0x31}, 0x01}, > /* Select CMD2 Page4 (Undocumented) */ > - {0xff, 0x05}, > + {0xff, {0x05}, 0x01}, > /* Reload CMD1: Don't reload default value to register */ > - {0xfb, 0x01}, > - {0x00, 0x01}, > - {0x01, 0x0b}, > - {0x02, 0x0c}, > - {0x03, 0x09}, > - {0x04, 0x0a}, > - {0x05, 0x00}, > - {0x06, 0x0f}, > - {0x07, 0x10}, > - {0x08, 0x00}, > - {0x09, 0x00}, > - {0x0a, 0x00}, > - {0x0b, 0x00}, > - {0x0c, 0x00}, > - {0x0d, 0x13}, > - {0x0e, 0x15}, > - {0x0f, 0x17}, > - {0x10, 0x01}, > - {0x11, 0x0b}, > - {0x12, 0x0c}, > - {0x13, 0x09}, > - {0x14, 0x0a}, > - {0x15, 0x00}, > - {0x16, 0x0f}, > - {0x17, 0x10}, > - {0x18, 0x00}, > - {0x19, 0x00}, > - {0x1a, 0x00}, > - {0x1b, 0x00}, > - {0x1c, 0x00}, > - {0x1d, 0x13}, > - {0x1e, 0x15}, > - {0x1f, 0x17}, > - {0x20, 0x00}, > - {0x21, 0x03}, > - {0x22, 0x01}, > - {0x23, 0x40}, > - {0x24, 0x40}, > - {0x25, 0xed}, > - {0x29, 0x58}, > - {0x2a, 0x12}, > - {0x2b, 0x01}, > - {0x4b, 0x06}, > - {0x4c, 0x11}, > - {0x4d, 0x20}, > - {0x4e, 0x02}, > - {0x4f, 0x02}, > - {0x50, 0x20}, > - {0x51, 0x61}, > - {0x52, 0x01}, > - {0x53, 0x63}, > - {0x54, 0x77}, > - {0x55, 0xed}, > - {0x5b, 0x00}, > - {0x5c, 0x00}, > - {0x5d, 0x00}, > - {0x5e, 0x00}, > - {0x5f, 0x15}, > - {0x60, 0x75}, > - {0x61, 0x00}, > - {0x62, 0x00}, > - {0x63, 0x00}, > - {0x64, 0x00}, > - {0x65, 0x00}, > - {0x66, 0x00}, > - {0x67, 0x00}, > - {0x68, 0x04}, > - {0x69, 0x00}, > - {0x6a, 0x00}, > - {0x6c, 0x40}, > - {0x75, 0x01}, > - {0x76, 0x01}, > - {0x7a, 0x80}, > - {0x7b, 0xa3}, > - {0x7c, 0xd8}, > - {0x7d, 0x60}, > - {0x7f, 0x15}, > - {0x80, 0x81}, > - {0x83, 0x05}, > - {0x93, 0x08}, > - {0x94, 0x10}, > - {0x8a, 0x00}, > - {0x9b, 0x0f}, > - {0xea, 0xff}, > - {0xec, 0x00}, > + {0xfb, {0x01}, 0x01}, > + {0x00, {0x01}, 0x01}, > + {0x01, {0x0b}, 0x01}, > + {0x02, {0x0c}, 0x01}, > + {0x03, {0x09}, 0x01}, > + {0x04, {0x0a}, 0x01}, > + {0x05, {0x00}, 0x01}, > + {0x06, {0x0f}, 0x01}, > + {0x07, {0x10}, 0x01}, > + {0x08, {0x00}, 0x01}, > + {0x09, {0x00}, 0x01}, > + {0x0a, {0x00}, 0x01}, > + {0x0b, {0x00}, 0x01}, > + {0x0c, {0x00}, 0x01}, > + {0x0d, {0x13}, 0x01}, > + {0x0e, {0x15}, 0x01}, > + {0x0f, {0x17}, 0x01}, > + {0x10, {0x01}, 0x01}, > + {0x11, {0x0b}, 0x01}, > + {0x12, {0x0c}, 0x01}, > + {0x13, {0x09}, 0x01}, > + {0x14, {0x0a}, 0x01}, > + {0x15, {0x00}, 0x01}, > + {0x16, {0x0f}, 0x01}, > + {0x17, {0x10}, 0x01}, > + {0x18, {0x00}, 0x01}, > + {0x19, {0x00}, 0x01}, > + {0x1a, {0x00}, 0x01}, > + {0x1b, {0x00}, 0x01}, > + {0x1c, {0x00}, 0x01}, > + {0x1d, {0x13}, 0x01}, > + {0x1e, {0x15}, 0x01}, > + {0x1f, {0x17}, 0x01}, > + {0x20, {0x00}, 0x01}, > + {0x21, {0x03}, 0x01}, > + {0x22, {0x01}, 0x01}, > + {0x23, {0x40}, 0x01}, > + {0x24, {0x40}, 0x01}, > + {0x25, {0xed}, 0x01}, > + {0x29, {0x58}, 0x01}, > + {0x2a, {0x12}, 0x01}, > + {0x2b, {0x01}, 0x01}, > + {0x4b, {0x06}, 0x01}, > + {0x4c, {0x11}, 0x01}, > + {0x4d, {0x20}, 0x01}, > + {0x4e, {0x02}, 0x01}, > + {0x4f, {0x02}, 0x01}, > + {0x50, {0x20}, 0x01}, > + {0x51, {0x61}, 0x01}, > + {0x52, {0x01}, 0x01}, > + {0x53, {0x63}, 0x01}, > + {0x54, {0x77}, 0x01}, > + {0x55, {0xed}, 0x01}, > + {0x5b, {0x00}, 0x01}, > + {0x5c, {0x00}, 0x01}, > + {0x5d, {0x00}, 0x01}, > + {0x5e, {0x00}, 0x01}, > + {0x5f, {0x15}, 0x01}, > + {0x60, {0x75}, 0x01}, > + {0x61, {0x00}, 0x01}, > + {0x62, {0x00}, 0x01}, > + {0x63, {0x00}, 0x01}, > + {0x64, {0x00}, 0x01}, > + {0x65, {0x00}, 0x01}, > + {0x66, {0x00}, 0x01}, > + {0x67, {0x00}, 0x01}, > + {0x68, {0x04}, 0x01}, > + {0x69, {0x00}, 0x01}, > + {0x6a, {0x00}, 0x01}, > + {0x6c, {0x40}, 0x01}, > + {0x75, {0x01}, 0x01}, > + {0x76, {0x01}, 0x01}, > + {0x7a, {0x80}, 0x01}, > + {0x7b, {0xa3}, 0x01}, > + {0x7c, {0xd8}, 0x01}, > + {0x7d, {0x60}, 0x01}, > + {0x7f, {0x15}, 0x01}, > + {0x80, {0x81}, 0x01}, > + {0x83, {0x05}, 0x01}, > + {0x93, {0x08}, 0x01}, > + {0x94, {0x10}, 0x01}, > + {0x8a, {0x00}, 0x01}, > + {0x9b, {0x0f}, 0x01}, > + {0xea, {0xff}, 0x01}, > + {0xec, {0x00}, 0x01}, > /* Select CMD2 Page0 (Undocumented) */ > - {0xff, 0x01}, > + {0xff, {0x01}, 0x01}, > /* Reload CMD1: Don't reload default value to register */ > - {0xfb, 0x01}, > - {0x75, 0x00}, > - {0x76, 0xdf}, > - {0x77, 0x00}, > - {0x78, 0xe4}, > - {0x79, 0x00}, > - {0x7a, 0xed}, > - {0x7b, 0x00}, > - {0x7c, 0xf6}, > - {0x7d, 0x00}, > - {0x7e, 0xff}, > - {0x7f, 0x01}, > - {0x80, 0x07}, > - {0x81, 0x01}, > - {0x82, 0x10}, > - {0x83, 0x01}, > - {0x84, 0x18}, > - {0x85, 0x01}, > - {0x86, 0x20}, > - {0x87, 0x01}, > - {0x88, 0x3d}, > - {0x89, 0x01}, > - {0x8a, 0x56}, > - {0x8b, 0x01}, > - {0x8c, 0x84}, > - {0x8d, 0x01}, > - {0x8e, 0xab}, > - {0x8f, 0x01}, > - {0x90, 0xec}, > - {0x91, 0x02}, > - {0x92, 0x22}, > - {0x93, 0x02}, > - {0x94, 0x23}, > - {0x95, 0x02}, > - {0x96, 0x55}, > - {0x97, 0x02}, > - {0x98, 0x8b}, > - {0x99, 0x02}, > - {0x9a, 0xaf}, > - {0x9b, 0x02}, > - {0x9c, 0xdf}, > - {0x9d, 0x03}, > - {0x9e, 0x01}, > - {0x9f, 0x03}, > - {0xa0, 0x2c}, > - {0xa2, 0x03}, > - {0xa3, 0x39}, > - {0xa4, 0x03}, > - {0xa5, 0x47}, > - {0xa6, 0x03}, > - {0xa7, 0x56}, > - {0xa9, 0x03}, > - {0xaa, 0x66}, > - {0xab, 0x03}, > - {0xac, 0x76}, > - {0xad, 0x03}, > - {0xae, 0x85}, > - {0xaf, 0x03}, > - {0xb0, 0x90}, > - {0xb1, 0x03}, > - {0xb2, 0xcb}, > - {0xb3, 0x00}, > - {0xb4, 0xdf}, > - {0xb5, 0x00}, > - {0xb6, 0xe4}, > - {0xb7, 0x00}, > - {0xb8, 0xed}, > - {0xb9, 0x00}, > - {0xba, 0xf6}, > - {0xbb, 0x00}, > - {0xbc, 0xff}, > - {0xbd, 0x01}, > - {0xbe, 0x07}, > - {0xbf, 0x01}, > - {0xc0, 0x10}, > - {0xc1, 0x01}, > - {0xc2, 0x18}, > - {0xc3, 0x01}, > - {0xc4, 0x20}, > - {0xc5, 0x01}, > - {0xc6, 0x3d}, > - {0xc7, 0x01}, > - {0xc8, 0x56}, > - {0xc9, 0x01}, > - {0xca, 0x84}, > - {0xcb, 0x01}, > - {0xcc, 0xab}, > - {0xcd, 0x01}, > - {0xce, 0xec}, > - {0xcf, 0x02}, > - {0xd0, 0x22}, > - {0xd1, 0x02}, > - {0xd2, 0x23}, > - {0xd3, 0x02}, > - {0xd4, 0x55}, > - {0xd5, 0x02}, > - {0xd6, 0x8b}, > - {0xd7, 0x02}, > - {0xd8, 0xaf}, > - {0xd9, 0x02}, > - {0xda, 0xdf}, > - {0xdb, 0x03}, > - {0xdc, 0x01}, > - {0xdd, 0x03}, > - {0xde, 0x2c}, > - {0xdf, 0x03}, > - {0xe0, 0x39}, > - {0xe1, 0x03}, > - {0xe2, 0x47}, > - {0xe3, 0x03}, > - {0xe4, 0x56}, > - {0xe5, 0x03}, > - {0xe6, 0x66}, > - {0xe7, 0x03}, > - {0xe8, 0x76}, > - {0xe9, 0x03}, > - {0xea, 0x85}, > - {0xeb, 0x03}, > - {0xec, 0x90}, > - {0xed, 0x03}, > - {0xee, 0xcb}, > - {0xef, 0x00}, > - {0xf0, 0xbb}, > - {0xf1, 0x00}, > - {0xf2, 0xc0}, > - {0xf3, 0x00}, > - {0xf4, 0xcc}, > - {0xf5, 0x00}, > - {0xf6, 0xd6}, > - {0xf7, 0x00}, > - {0xf8, 0xe1}, > - {0xf9, 0x00}, > - {0xfa, 0xea}, > + {0xfb, {0x01}, 0x01}, > + {0x75, {0x00}, 0x01}, > + {0x76, {0xdf}, 0x01}, > + {0x77, {0x00}, 0x01}, > + {0x78, {0xe4}, 0x01}, > + {0x79, {0x00}, 0x01}, > + {0x7a, {0xed}, 0x01}, > + {0x7b, {0x00}, 0x01}, > + {0x7c, {0xf6}, 0x01}, > + {0x7d, {0x00}, 0x01}, > + {0x7e, {0xff}, 0x01}, > + {0x7f, {0x01}, 0x01}, > + {0x80, {0x07}, 0x01}, > + {0x81, {0x01}, 0x01}, > + {0x82, {0x10}, 0x01}, > + {0x83, {0x01}, 0x01}, > + {0x84, {0x18}, 0x01}, > + {0x85, {0x01}, 0x01}, > + {0x86, {0x20}, 0x01}, > + {0x87, {0x01}, 0x01}, > + {0x88, {0x3d}, 0x01}, > + {0x89, {0x01}, 0x01}, > + {0x8a, {0x56}, 0x01}, > + {0x8b, {0x01}, 0x01}, > + {0x8c, {0x84}, 0x01}, > + {0x8d, {0x01}, 0x01}, > + {0x8e, {0xab}, 0x01}, > + {0x8f, {0x01}, 0x01}, > + {0x90, {0xec}, 0x01}, > + {0x91, {0x02}, 0x01}, > + {0x92, {0x22}, 0x01}, > + {0x93, {0x02}, 0x01}, > + {0x94, {0x23}, 0x01}, > + {0x95, {0x02}, 0x01}, > + {0x96, {0x55}, 0x01}, > + {0x97, {0x02}, 0x01}, > + {0x98, {0x8b}, 0x01}, > + {0x99, {0x02}, 0x01}, > + {0x9a, {0xaf}, 0x01}, > + {0x9b, {0x02}, 0x01}, > + {0x9c, {0xdf}, 0x01}, > + {0x9d, {0x03}, 0x01}, > + {0x9e, {0x01}, 0x01}, > + {0x9f, {0x03}, 0x01}, > + {0xa0, {0x2c}, 0x01}, > + {0xa2, {0x03}, 0x01}, > + {0xa3, {0x39}, 0x01}, > + {0xa4, {0x03}, 0x01}, > + {0xa5, {0x47}, 0x01}, > + {0xa6, {0x03}, 0x01}, > + {0xa7, {0x56}, 0x01}, > + {0xa9, {0x03}, 0x01}, > + {0xaa, {0x66}, 0x01}, > + {0xab, {0x03}, 0x01}, > + {0xac, {0x76}, 0x01}, > + {0xad, {0x03}, 0x01}, > + {0xae, {0x85}, 0x01}, > + {0xaf, {0x03}, 0x01}, > + {0xb0, {0x90}, 0x01}, > + {0xb1, {0x03}, 0x01}, > + {0xb2, {0xcb}, 0x01}, > + {0xb3, {0x00}, 0x01}, > + {0xb4, {0xdf}, 0x01}, > + {0xb5, {0x00}, 0x01}, > + {0xb6, {0xe4}, 0x01}, > + {0xb7, {0x00}, 0x01}, > + {0xb8, {0xed}, 0x01}, > + {0xb9, {0x00}, 0x01}, > + {0xba, {0xf6}, 0x01}, > + {0xbb, {0x00}, 0x01}, > + {0xbc, {0xff}, 0x01}, > + {0xbd, {0x01}, 0x01}, > + {0xbe, {0x07}, 0x01}, > + {0xbf, {0x01}, 0x01}, > + {0xc0, {0x10}, 0x01}, > + {0xc1, {0x01}, 0x01}, > + {0xc2, {0x18}, 0x01}, > + {0xc3, {0x01}, 0x01}, > + {0xc4, {0x20}, 0x01}, > + {0xc5, {0x01}, 0x01}, > + {0xc6, {0x3d}, 0x01}, > + {0xc7, {0x01}, 0x01}, > + {0xc8, {0x56}, 0x01}, > + {0xc9, {0x01}, 0x01}, > + {0xca, {0x84}, 0x01}, > + {0xcb, {0x01}, 0x01}, > + {0xcc, {0xab}, 0x01}, > + {0xcd, {0x01}, 0x01}, > + {0xce, {0xec}, 0x01}, > + {0xcf, {0x02}, 0x01}, > + {0xd0, {0x22}, 0x01}, > + {0xd1, {0x02}, 0x01}, > + {0xd2, {0x23}, 0x01}, > + {0xd3, {0x02}, 0x01}, > + {0xd4, {0x55}, 0x01}, > + {0xd5, {0x02}, 0x01}, > + {0xd6, {0x8b}, 0x01}, > + {0xd7, {0x02}, 0x01}, > + {0xd8, {0xaf}, 0x01}, > + {0xd9, {0x02}, 0x01}, > + {0xda, {0xdf}, 0x01}, > + {0xdb, {0x03}, 0x01}, > + {0xdc, {0x01}, 0x01}, > + {0xdd, {0x03}, 0x01}, > + {0xde, {0x2c}, 0x01}, > + {0xdf, {0x03}, 0x01}, > + {0xe0, {0x39}, 0x01}, > + {0xe1, {0x03}, 0x01}, > + {0xe2, {0x47}, 0x01}, > + {0xe3, {0x03}, 0x01}, > + {0xe4, {0x56}, 0x01}, > + {0xe5, {0x03}, 0x01}, > + {0xe6, {0x66}, 0x01}, > + {0xe7, {0x03}, 0x01}, > + {0xe8, {0x76}, 0x01}, > + {0xe9, {0x03}, 0x01}, > + {0xea, {0x85}, 0x01}, > + {0xeb, {0x03}, 0x01}, > + {0xec, {0x90}, 0x01}, > + {0xed, {0x03}, 0x01}, > + {0xee, {0xcb}, 0x01}, > + {0xef, {0x00}, 0x01}, > + {0xf0, {0xbb}, 0x01}, > + {0xf1, {0x00}, 0x01}, > + {0xf2, {0xc0}, 0x01}, > + {0xf3, {0x00}, 0x01}, > + {0xf4, {0xcc}, 0x01}, > + {0xf5, {0x00}, 0x01}, > + {0xf6, {0xd6}, 0x01}, > + {0xf7, {0x00}, 0x01}, > + {0xf8, {0xe1}, 0x01}, > + {0xf9, {0x00}, 0x01}, > + {0xfa, {0xea}, 0x01}, > /* Select CMD2 Page2 (Undocumented) */ > - {0xff, 0x02}, > + {0xff, {0x02}, 0x01}, > /* Reload CMD1: Don't reload default value to register */ > - {0xfb, 0x01}, > - {0x00, 0x00}, > - {0x01, 0xf4}, > - {0x02, 0x00}, > - {0x03, 0xef}, > - {0x04, 0x01}, > - {0x05, 0x07}, > - {0x06, 0x01}, > - {0x07, 0x28}, > - {0x08, 0x01}, > - {0x09, 0x44}, > - {0x0a, 0x01}, > - {0x0b, 0x76}, > - {0x0c, 0x01}, > - {0x0d, 0xa0}, > - {0x0e, 0x01}, > - {0x0f, 0xe7}, > - {0x10, 0x02}, > - {0x11, 0x1f}, > - {0x12, 0x02}, > - {0x13, 0x22}, > - {0x14, 0x02}, > - {0x15, 0x54}, > - {0x16, 0x02}, > - {0x17, 0x8b}, > - {0x18, 0x02}, > - {0x19, 0xaf}, > - {0x1a, 0x02}, > - {0x1b, 0xe0}, > - {0x1c, 0x03}, > - {0x1d, 0x01}, > - {0x1e, 0x03}, > - {0x1f, 0x2d}, > - {0x20, 0x03}, > - {0x21, 0x39}, > - {0x22, 0x03}, > - {0x23, 0x47}, > - {0x24, 0x03}, > - {0x25, 0x57}, > - {0x26, 0x03}, > - {0x27, 0x65}, > - {0x28, 0x03}, > - {0x29, 0x77}, > - {0x2a, 0x03}, > - {0x2b, 0x85}, > - {0x2d, 0x03}, > - {0x2f, 0x8f}, > - {0x30, 0x03}, > - {0x31, 0xcb}, > - {0x32, 0x00}, > - {0x33, 0xbb}, > - {0x34, 0x00}, > - {0x35, 0xc0}, > - {0x36, 0x00}, > - {0x37, 0xcc}, > - {0x38, 0x00}, > - {0x39, 0xd6}, > - {0x3a, 0x00}, > - {0x3b, 0xe1}, > - {0x3d, 0x00}, > - {0x3f, 0xea}, > - {0x40, 0x00}, > - {0x41, 0xf4}, > - {0x42, 0x00}, > - {0x43, 0xfe}, > - {0x44, 0x01}, > - {0x45, 0x07}, > - {0x46, 0x01}, > - {0x47, 0x28}, > - {0x48, 0x01}, > - {0x49, 0x44}, > - {0x4a, 0x01}, > - {0x4b, 0x76}, > - {0x4c, 0x01}, > - {0x4d, 0xa0}, > - {0x4e, 0x01}, > - {0x4f, 0xe7}, > - {0x50, 0x02}, > - {0x51, 0x1f}, > - {0x52, 0x02}, > - {0x53, 0x22}, > - {0x54, 0x02}, > - {0x55, 0x54}, > - {0x56, 0x02}, > - {0x58, 0x8b}, > - {0x59, 0x02}, > - {0x5a, 0xaf}, > - {0x5b, 0x02}, > - {0x5c, 0xe0}, > - {0x5d, 0x03}, > - {0x5e, 0x01}, > - {0x5f, 0x03}, > - {0x60, 0x2d}, > - {0x61, 0x03}, > - {0x62, 0x39}, > - {0x63, 0x03}, > - {0x64, 0x47}, > - {0x65, 0x03}, > - {0x66, 0x57}, > - {0x67, 0x03}, > - {0x68, 0x65}, > - {0x69, 0x03}, > - {0x6a, 0x77}, > - {0x6b, 0x03}, > - {0x6c, 0x85}, > - {0x6d, 0x03}, > - {0x6e, 0x8f}, > - {0x6f, 0x03}, > - {0x70, 0xcb}, > - {0x71, 0x00}, > - {0x72, 0x00}, > - {0x73, 0x00}, > - {0x74, 0x21}, > - {0x75, 0x00}, > - {0x76, 0x4c}, > - {0x77, 0x00}, > - {0x78, 0x6b}, > - {0x79, 0x00}, > - {0x7a, 0x85}, > - {0x7b, 0x00}, > - {0x7c, 0x9a}, > - {0x7d, 0x00}, > - {0x7e, 0xad}, > - {0x7f, 0x00}, > - {0x80, 0xbe}, > - {0x81, 0x00}, > - {0x82, 0xcd}, > - {0x83, 0x01}, > - {0x84, 0x01}, > - {0x85, 0x01}, > - {0x86, 0x29}, > - {0x87, 0x01}, > - {0x88, 0x68}, > - {0x89, 0x01}, > - {0x8a, 0x98}, > - {0x8b, 0x01}, > - {0x8c, 0xe5}, > - {0x8d, 0x02}, > - {0x8e, 0x1e}, > - {0x8f, 0x02}, > - {0x90, 0x30}, > - {0x91, 0x02}, > - {0x92, 0x52}, > - {0x93, 0x02}, > - {0x94, 0x88}, > - {0x95, 0x02}, > - {0x96, 0xaa}, > - {0x97, 0x02}, > - {0x98, 0xd7}, > - {0x99, 0x02}, > - {0x9a, 0xf7}, > - {0x9b, 0x03}, > - {0x9c, 0x21}, > - {0x9d, 0x03}, > - {0x9e, 0x2e}, > - {0x9f, 0x03}, > - {0xa0, 0x3d}, > - {0xa2, 0x03}, > - {0xa3, 0x4c}, > - {0xa4, 0x03}, > - {0xa5, 0x5e}, > - {0xa6, 0x03}, > - {0xa7, 0x71}, > - {0xa9, 0x03}, > - {0xaa, 0x86}, > - {0xab, 0x03}, > - {0xac, 0x94}, > - {0xad, 0x03}, > - {0xae, 0xfa}, > - {0xaf, 0x00}, > - {0xb0, 0x00}, > - {0xb1, 0x00}, > - {0xb2, 0x21}, > - {0xb3, 0x00}, > - {0xb4, 0x4c}, > - {0xb5, 0x00}, > - {0xb6, 0x6b}, > - {0xb7, 0x00}, > - {0xb8, 0x85}, > - {0xb9, 0x00}, > - {0xba, 0x9a}, > - {0xbb, 0x00}, > - {0xbc, 0xad}, > - {0xbd, 0x00}, > - {0xbe, 0xbe}, > - {0xbf, 0x00}, > - {0xc0, 0xcd}, > - {0xc1, 0x01}, > - {0xc2, 0x01}, > - {0xc3, 0x01}, > - {0xc4, 0x29}, > - {0xc5, 0x01}, > - {0xc6, 0x68}, > - {0xc7, 0x01}, > - {0xc8, 0x98}, > - {0xc9, 0x01}, > - {0xca, 0xe5}, > - {0xcb, 0x02}, > - {0xcc, 0x1e}, > - {0xcd, 0x02}, > - {0xce, 0x20}, > - {0xcf, 0x02}, > - {0xd0, 0x52}, > - {0xd1, 0x02}, > - {0xd2, 0x88}, > - {0xd3, 0x02}, > - {0xd4, 0xaa}, > - {0xd5, 0x02}, > - {0xd6, 0xd7}, > - {0xd7, 0x02}, > - {0xd8, 0xf7}, > - {0xd9, 0x03}, > - {0xda, 0x21}, > - {0xdb, 0x03}, > - {0xdc, 0x2e}, > - {0xdd, 0x03}, > - {0xde, 0x3d}, > - {0xdf, 0x03}, > - {0xe0, 0x4c}, > - {0xe1, 0x03}, > - {0xe2, 0x5e}, > - {0xe3, 0x03}, > - {0xe4, 0x71}, > - {0xe5, 0x03}, > - {0xe6, 0x86}, > - {0xe7, 0x03}, > - {0xe8, 0x94}, > - {0xe9, 0x03}, > - {0xea, 0xfa}, > + {0xfb, {0x01}, 0x01}, > + {0x00, {0x00}, 0x01}, > + {0x01, {0xf4}, 0x01}, > + {0x02, {0x00}, 0x01}, > + {0x03, {0xef}, 0x01}, > + {0x04, {0x01}, 0x01}, > + {0x05, {0x07}, 0x01}, > + {0x06, {0x01}, 0x01}, > + {0x07, {0x28}, 0x01}, > + {0x08, {0x01}, 0x01}, > + {0x09, {0x44}, 0x01}, > + {0x0a, {0x01}, 0x01}, > + {0x0b, {0x76}, 0x01}, > + {0x0c, {0x01}, 0x01}, > + {0x0d, {0xa0}, 0x01}, > + {0x0e, {0x01}, 0x01}, > + {0x0f, {0xe7}, 0x01}, > + {0x10, {0x02}, 0x01}, > + {0x11, {0x1f}, 0x01}, > + {0x12, {0x02}, 0x01}, > + {0x13, {0x22}, 0x01}, > + {0x14, {0x02}, 0x01}, > + {0x15, {0x54}, 0x01}, > + {0x16, {0x02}, 0x01}, > + {0x17, {0x8b}, 0x01}, > + {0x18, {0x02}, 0x01}, > + {0x19, {0xaf}, 0x01}, > + {0x1a, {0x02}, 0x01}, > + {0x1b, {0xe0}, 0x01}, > + {0x1c, {0x03}, 0x01}, > + {0x1d, {0x01}, 0x01}, > + {0x1e, {0x03}, 0x01}, > + {0x1f, {0x2d}, 0x01}, > + {0x20, {0x03}, 0x01}, > + {0x21, {0x39}, 0x01}, > + {0x22, {0x03}, 0x01}, > + {0x23, {0x47}, 0x01}, > + {0x24, {0x03}, 0x01}, > + {0x25, {0x57}, 0x01}, > + {0x26, {0x03}, 0x01}, > + {0x27, {0x65}, 0x01}, > + {0x28, {0x03}, 0x01}, > + {0x29, {0x77}, 0x01}, > + {0x2a, {0x03}, 0x01}, > + {0x2b, {0x85}, 0x01}, > + {0x2d, {0x03}, 0x01}, > + {0x2f, {0x8f}, 0x01}, > + {0x30, {0x03}, 0x01}, > + {0x31, {0xcb}, 0x01}, > + {0x32, {0x00}, 0x01}, > + {0x33, {0xbb}, 0x01}, > + {0x34, {0x00}, 0x01}, > + {0x35, {0xc0}, 0x01}, > + {0x36, {0x00}, 0x01}, > + {0x37, {0xcc}, 0x01}, > + {0x38, {0x00}, 0x01}, > + {0x39, {0xd6}, 0x01}, > + {0x3a, {0x00}, 0x01}, > + {0x3b, {0xe1}, 0x01}, > + {0x3d, {0x00}, 0x01}, > + {0x3f, {0xea}, 0x01}, > + {0x40, {0x00}, 0x01}, > + {0x41, {0xf4}, 0x01}, > + {0x42, {0x00}, 0x01}, > + {0x43, {0xfe}, 0x01}, > + {0x44, {0x01}, 0x01}, > + {0x45, {0x07}, 0x01}, > + {0x46, {0x01}, 0x01}, > + {0x47, {0x28}, 0x01}, > + {0x48, {0x01}, 0x01}, > + {0x49, {0x44}, 0x01}, > + {0x4a, {0x01}, 0x01}, > + {0x4b, {0x76}, 0x01}, > + {0x4c, {0x01}, 0x01}, > + {0x4d, {0xa0}, 0x01}, > + {0x4e, {0x01}, 0x01}, > + {0x4f, {0xe7}, 0x01}, > + {0x50, {0x02}, 0x01}, > + {0x51, {0x1f}, 0x01}, > + {0x52, {0x02}, 0x01}, > + {0x53, {0x22}, 0x01}, > + {0x54, {0x02}, 0x01}, > + {0x55, {0x54}, 0x01}, > + {0x56, {0x02}, 0x01}, > + {0x58, {0x8b}, 0x01}, > + {0x59, {0x02}, 0x01}, > + {0x5a, {0xaf}, 0x01}, > + {0x5b, {0x02}, 0x01}, > + {0x5c, {0xe0}, 0x01}, > + {0x5d, {0x03}, 0x01}, > + {0x5e, {0x01}, 0x01}, > + {0x5f, {0x03}, 0x01}, > + {0x60, {0x2d}, 0x01}, > + {0x61, {0x03}, 0x01}, > + {0x62, {0x39}, 0x01}, > + {0x63, {0x03}, 0x01}, > + {0x64, {0x47}, 0x01}, > + {0x65, {0x03}, 0x01}, > + {0x66, {0x57}, 0x01}, > + {0x67, {0x03}, 0x01}, > + {0x68, {0x65}, 0x01}, > + {0x69, {0x03}, 0x01}, > + {0x6a, {0x77}, 0x01}, > + {0x6b, {0x03}, 0x01}, > + {0x6c, {0x85}, 0x01}, > + {0x6d, {0x03}, 0x01}, > + {0x6e, {0x8f}, 0x01}, > + {0x6f, {0x03}, 0x01}, > + {0x70, {0xcb}, 0x01}, > + {0x71, {0x00}, 0x01}, > + {0x72, {0x00}, 0x01}, > + {0x73, {0x00}, 0x01}, > + {0x74, {0x21}, 0x01}, > + {0x75, {0x00}, 0x01}, > + {0x76, {0x4c}, 0x01}, > + {0x77, {0x00}, 0x01}, > + {0x78, {0x6b}, 0x01}, > + {0x79, {0x00}, 0x01}, > + {0x7a, {0x85}, 0x01}, > + {0x7b, {0x00}, 0x01}, > + {0x7c, {0x9a}, 0x01}, > + {0x7d, {0x00}, 0x01}, > + {0x7e, {0xad}, 0x01}, > + {0x7f, {0x00}, 0x01}, > + {0x80, {0xbe}, 0x01}, > + {0x81, {0x00}, 0x01}, > + {0x82, {0xcd}, 0x01}, > + {0x83, {0x01}, 0x01}, > + {0x84, {0x01}, 0x01}, > + {0x85, {0x01}, 0x01}, > + {0x86, {0x29}, 0x01}, > + {0x87, {0x01}, 0x01}, > + {0x88, {0x68}, 0x01}, > + {0x89, {0x01}, 0x01}, > + {0x8a, {0x98}, 0x01}, > + {0x8b, {0x01}, 0x01}, > + {0x8c, {0xe5}, 0x01}, > + {0x8d, {0x02}, 0x01}, > + {0x8e, {0x1e}, 0x01}, > + {0x8f, {0x02}, 0x01}, > + {0x90, {0x30}, 0x01}, > + {0x91, {0x02}, 0x01}, > + {0x92, {0x52}, 0x01}, > + {0x93, {0x02}, 0x01}, > + {0x94, {0x88}, 0x01}, > + {0x95, {0x02}, 0x01}, > + {0x96, {0xaa}, 0x01}, > + {0x97, {0x02}, 0x01}, > + {0x98, {0xd7}, 0x01}, > + {0x99, {0x02}, 0x01}, > + {0x9a, {0xf7}, 0x01}, > + {0x9b, {0x03}, 0x01}, > + {0x9c, {0x21}, 0x01}, > + {0x9d, {0x03}, 0x01}, > + {0x9e, {0x2e}, 0x01}, > + {0x9f, {0x03}, 0x01}, > + {0xa0, {0x3d}, 0x01}, > + {0xa2, {0x03}, 0x01}, > + {0xa3, {0x4c}, 0x01}, > + {0xa4, {0x03}, 0x01}, > + {0xa5, {0x5e}, 0x01}, > + {0xa6, {0x03}, 0x01}, > + {0xa7, {0x71}, 0x01}, > + {0xa9, {0x03}, 0x01}, > + {0xaa, {0x86}, 0x01}, > + {0xab, {0x03}, 0x01}, > + {0xac, {0x94}, 0x01}, > + {0xad, {0x03}, 0x01}, > + {0xae, {0xfa}, 0x01}, > + {0xaf, {0x00}, 0x01}, > + {0xb0, {0x00}, 0x01}, > + {0xb1, {0x00}, 0x01}, > + {0xb2, {0x21}, 0x01}, > + {0xb3, {0x00}, 0x01}, > + {0xb4, {0x4c}, 0x01}, > + {0xb5, {0x00}, 0x01}, > + {0xb6, {0x6b}, 0x01}, > + {0xb7, {0x00}, 0x01}, > + {0xb8, {0x85}, 0x01}, > + {0xb9, {0x00}, 0x01}, > + {0xba, {0x9a}, 0x01}, > + {0xbb, {0x00}, 0x01}, > + {0xbc, {0xad}, 0x01}, > + {0xbd, {0x00}, 0x01}, > + {0xbe, {0xbe}, 0x01}, > + {0xbf, {0x00}, 0x01}, > + {0xc0, {0xcd}, 0x01}, > + {0xc1, {0x01}, 0x01}, > + {0xc2, {0x01}, 0x01}, > + {0xc3, {0x01}, 0x01}, > + {0xc4, {0x29}, 0x01}, > + {0xc5, {0x01}, 0x01}, > + {0xc6, {0x68}, 0x01}, > + {0xc7, {0x01}, 0x01}, > + {0xc8, {0x98}, 0x01}, > + {0xc9, {0x01}, 0x01}, > + {0xca, {0xe5}, 0x01}, > + {0xcb, {0x02}, 0x01}, > + {0xcc, {0x1e}, 0x01}, > + {0xcd, {0x02}, 0x01}, > + {0xce, {0x20}, 0x01}, > + {0xcf, {0x02}, 0x01}, > + {0xd0, {0x52}, 0x01}, > + {0xd1, {0x02}, 0x01}, > + {0xd2, {0x88}, 0x01}, > + {0xd3, {0x02}, 0x01}, > + {0xd4, {0xaa}, 0x01}, > + {0xd5, {0x02}, 0x01}, > + {0xd6, {0xd7}, 0x01}, > + {0xd7, {0x02}, 0x01}, > + {0xd8, {0xf7}, 0x01}, > + {0xd9, {0x03}, 0x01}, > + {0xda, {0x21}, 0x01}, > + {0xdb, {0x03}, 0x01}, > + {0xdc, {0x2e}, 0x01}, > + {0xdd, {0x03}, 0x01}, > + {0xde, {0x3d}, 0x01}, > + {0xdf, {0x03}, 0x01}, > + {0xe0, {0x4c}, 0x01}, > + {0xe1, {0x03}, 0x01}, > + {0xe2, {0x5e}, 0x01}, > + {0xe3, {0x03}, 0x01}, > + {0xe4, {0x71}, 0x01}, > + {0xe5, {0x03}, 0x01}, > + {0xe6, {0x86}, 0x01}, > + {0xe7, {0x03}, 0x01}, > + {0xe8, {0x94}, 0x01}, > + {0xe9, {0x03}, 0x01}, > + {0xea, {0xfa}, 0x01}, > /* Select CMD2 Page0 (Undocumented) */ > - {0xff, 0x01}, > + {0xff, {0x01}, 0x01}, > /* Reload CMD1: Don't reload default value to register */ > - {0xfb, 0x01}, > + {0xfb, {0x01}, 0x01}, > /* Select CMD2 Page1 (Undocumented) */ > - {0xff, 0x02}, > + {0xff, {0x02}, 0x01}, > /* Reload CMD1: Don't reload default value to register */ > - {0xfb, 0x01}, > + {0xfb, {0x01}, 0x01}, > /* Select CMD2 Page3 (Undocumented) */ > - {0xff, 0x04}, > + {0xff, {0x04}, 0x01}, > /* Reload CMD1: Don't reload default value to register */ > - {0xfb, 0x01}, > + {0xfb, {0x01}, 0x01}, > /* Select CMD1 */ > - {0xff, 0x00}, > - {0xd3, 0x22}, /* RGBMIPICTRL: VSYNC back porch = 34 */ > - {0xd4, 0x04}, /* RGBMIPICTRL: VSYNC front porch = 4 */ > + {0xff, {0x00}, 0x01}, > + {0xd3, {0x22}, 0x01}, /* RGBMIPICTRL: VSYNC back porch = 34 */ > + {0xd4, {0x04}, 0x01}, /* RGBMIPICTRL: VSYNC front porch = 4 */ > +}; > + > +struct khadas_ts050_panel_data ts050_panel_data = { > + .init_code = (struct khadas_ts050_panel_cmd *)ts050_init_code, > + .len = ARRAY_SIZE(ts050_init_code) > +}; > + > +struct khadas_ts050_panel_data new_ts050_panel_data = { > + .init_code = (struct khadas_ts050_panel_cmd *)new_ts050_init_code, > + .len = ARRAY_SIZE(new_ts050_init_code) > }; > > static inline > @@ -613,10 +671,11 @@ static int khadas_ts050_panel_prepare(struct drm_panel *panel) > > msleep(100); > > - for (i = 0; i < ARRAY_SIZE(init_code); i++) { > + for (i = 0; i < khadas_ts050->panel_data->len; i++) { > err = mipi_dsi_dcs_write(khadas_ts050->link, > - init_code[i].cmd, > - &init_code[i].data, 1); > + khadas_ts050->panel_data->init_code[i].cmd, > + &khadas_ts050->panel_data->init_code[i].data, > + khadas_ts050->panel_data->init_code[i].size); > if (err < 0) { > dev_err(panel->dev, "failed write cmds: %d\n", err); > goto poweroff; > @@ -762,7 +821,8 @@ static const struct drm_panel_funcs khadas_ts050_panel_funcs = { > }; > > static const struct of_device_id khadas_ts050_of_match[] = { > - { .compatible = "khadas,ts050", }, > + { .compatible = "khadas,ts050", .data = &ts050_panel_data, }, > + { .compatible = "khadas,newts050", .data = &new_ts050_panel_data, }, > { /* sentinel */ } > }; > MODULE_DEVICE_TABLE(of, khadas_ts050_of_match); > @@ -806,6 +866,13 @@ static int khadas_ts050_panel_probe(struct mipi_dsi_device *dsi) > struct khadas_ts050_panel *khadas_ts050; > int err; > > + const void *data = of_device_get_match_data(&dsi->dev); > + > + if (!data) { > + dev_err(&dsi->dev, "No matching data\n"); > + return -ENODEV; > + } > + > dsi->lanes = 4; > dsi->format = MIPI_DSI_FMT_RGB888; > dsi->mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | > @@ -816,6 +883,7 @@ static int khadas_ts050_panel_probe(struct mipi_dsi_device *dsi) > if (!khadas_ts050) > return -ENOMEM; > > + khadas_ts050->panel_data = (struct khadas_ts050_panel_data *)data; > mipi_dsi_set_drvdata(dsi, khadas_ts050); > khadas_ts050->link = dsi; >