Received: by 2002:a05:6500:1b45:b0:1f5:f2ab:c469 with SMTP id cz5csp132499lqb; Tue, 16 Apr 2024 10:44:19 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCWcfIm34ys5Z70/chS2B2TBMZHztxQHNd7AgL0W2xMh6lGsmgAF+76cJ6HBkhM8VjGq5IGRdHg3u6EfO8wvNJvNQadDOD3QOcU09SLJgg== X-Google-Smtp-Source: AGHT+IE7ocRQGGkXc+rSZY2HJmZEZaUuKaiEz7QiAdkc0Mh1ZUcvxeJza22crmb20PcbVOQKuSpq X-Received: by 2002:a50:a6d3:0:b0:56e:2f39:c5d2 with SMTP id f19-20020a50a6d3000000b0056e2f39c5d2mr9460825edc.7.1713289459545; Tue, 16 Apr 2024 10:44:19 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1713289459; cv=pass; d=google.com; s=arc-20160816; b=qC/7uqmgDeHD1ZZVpU9At2/5ovl6S5ULUVzhZoKxyQB4hiYRFjA/CswZyG9o1DElyh uchWlG9/IZlvmmXn6SzIAgheEPnOJ8xa6OU+I8xW4LFH1Ed4TlBM92pi3+f28x1I0ard YhMcRlygtx6FfnDyg8JdOlTeO3Y0pgNiX21mhpaSyNCkZcW5mBBeByo6iHpOi9WOR+uA a+zC9lEo1jD/ypu2FZeu5DlsAoQhgLaqUAPNlz4cZTqi/1ok3yoEUYp/QA4/QrAskZdU /SUex5urafkvxuduM7cVGOV7C/Q+WFuLpyWWfazzuL/BDVw8M0CqabaSDKcf65NKe0BO +nZg== 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=dCeTiIDGAFgOAkGMmaIvUFAzZFcccTha+TuzFNIo+Rc=; fh=y8gTwdv67a39p2HHeQXly6ZEWXZ1DyNRD8n/7w0u1K4=; b=GjCx6FMroSSnxH/gQu46nRSPlcVdnJIE79lZxAKefeHLIR0QTxE+9e/GtxMMaG0rDK BRZjLf9k0Xe8GpKQehiqzt7wqXxEx2xtx/C5+EXN80ajBFXw7IoDGAOeErJSQ0utJayM p++f/F9LXCc3AF+rLyZi5qzQpl24MMJtgT1fEfr4sanCN0jRJ17h7+3N2NKDmA8pkoe8 XqOgA88uqTLdsqjgMknkR49ONXEk70t/c7CRtPmH8ZK7HtKkUTXLicwE0sW5i7VEl1fv efhdVKhbbP0MhYpSeksPnsYU2vF1nvmMyKDQjZ1awQPeWIsIS1Rp4LMhlDDL9K2tYnGn 0yZA==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=WGSVTq7m; 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-147328-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-147328-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [147.75.80.249]) by mx.google.com with ESMTPS id t8-20020a056402524800b005702422bf38si2678711edd.413.2024.04.16.10.44.19 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Apr 2024 10:44:19 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-147328-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) client-ip=147.75.80.249; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=WGSVTq7m; 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-147328-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-147328-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 am.mirrors.kernel.org (Postfix) with ESMTPS id 1F4ED1F21BEF for ; Tue, 16 Apr 2024 17:44:19 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 6D504133997; Tue, 16 Apr 2024 17:44:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="WGSVTq7m" Received: from mail-pj1-f46.google.com (mail-pj1-f46.google.com [209.85.216.46]) (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 CD59813342A for ; Tue, 16 Apr 2024 17:44:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.46 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713289450; cv=none; b=Wq+9bV9ByU3nqfhtkU1wNdiQpRjlHUSXG9ARpYog2rUFVokH+cGZ9X3QdPOkTJDoEnkqpmLUhdWO+nWF0CKMidvPsJ48zYHv8zGHA/DDMMdzpMuvuogYWuaXimcSr0sEDnOhnBkdudxVGbZr5+I5fqFeC2bMHvebrkoirIrbS/Q= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713289450; c=relaxed/simple; bh=IN3qZ94G5RDAk3xwMtxSDZeM1xeKLUOQCa1w7qj9+lM=; h=Message-ID:Date:MIME-Version:From:Subject:To:Cc:References: In-Reply-To:Content-Type; b=l1M8wOgJVaRlA61/avk5KmWDe0xJDsiYrxrq2K6ZB8qqhQb/cP7wOXHZMewLy4fzk3E+L2SARVQKQsOLx5F19x1mEH1I+m8lg7rHiCd64Dz2Hx0trm5GKTgNkhTcsaYJtPEd4u8nMzIu0IYtcW482N7NL+JBBsKF++bPlMu8F88= 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=WGSVTq7m; arc=none smtp.client-ip=209.85.216.46 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-pj1-f46.google.com with SMTP id 98e67ed59e1d1-2a614b0391dso3208011a91.1 for ; Tue, 16 Apr 2024 10:44:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1713289447; x=1713894247; 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=dCeTiIDGAFgOAkGMmaIvUFAzZFcccTha+TuzFNIo+Rc=; b=WGSVTq7m4R15Y9iV2L+HGPrrseWuQONnDrn23aNlOkgkjACqXBtwp2ivFg2C8TaYwh afbfd7eQJGutGb5TkDfWie0wtArv9jxvAHNIf6Vq++9eIi5y5CmuYZIXH7x2ikJSjAMQ l3Q+H+alKGxm/HoTspT9Ha1OMkQok2IPVfyzdveuriNe5NjK32wOypd/gr/T9Sy3fuXY GwgNMrZRctca+kLdPhLQ3PPTXmB2I9CW57qlyEvVkwsuk4M7npJI7z2czZsnMTDNifr2 KOwitPL4JVfXz0qAd7Slh2srmIlUL1iFueaW+7FYhGatp2Hr8SdYCuRB7hL0zdHNsW0y eRpg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713289447; x=1713894247; 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=dCeTiIDGAFgOAkGMmaIvUFAzZFcccTha+TuzFNIo+Rc=; b=QTRql2+8UV4xEXLrrx1MGNdvBufqwi27sMhmODG0h1+3okUcRUE93kBLcBqYyzJc+e 906borvoO7HeiyZyTQURvi153B5AHZrKaUpIbLzNTNT6yGQrIgtoCLimY1pTh8qrYYAW Py63Wd9nc5ydkD3Cz6IT/HCElbYGljfyqFrjDQsr86REa43iWk0EEadZO1I1jJ9GaT1O B81jYIgxJohTZD94QjcuJ7GFXgwbEhqTqEK5f00L7z9qFY2bTFEOqCQ435Nmc6kGcOaB /RteaF4KJPaiubCyCojlqX2OGlSwJGR7QsDJgWxb/m0n+Gv8TfKeR5a1bpKhQEQ6d3qI xvoA== X-Forwarded-Encrypted: i=1; AJvYcCVvAfSsNlP2bI2YWFMsS+jEvT3ZLj/SY+a7JjnGCNZMPPUA+NCLeZw6nLIppkbcqUjK441Hg64T7Jqg1JGKm/X597rZDjgDKw6nhTTV X-Gm-Message-State: AOJu0YwocfmqBMJ5PCbSrQM3bqMBc3hUNoVnW4qqhmCJ2c1BbPiatjES I8R3R7IDQ77CV/Y5rdBlD0fQucJlMbpf0TgHCt/gusSUxh41Sn4tw9JhoZQDqj8= X-Received: by 2002:a17:90a:72c1:b0:2a2:5e65:f434 with SMTP id l1-20020a17090a72c100b002a25e65f434mr11789018pjk.16.1713289446840; Tue, 16 Apr 2024 10:44:06 -0700 (PDT) Received: from [10.36.52.145] ([24.75.208.156]) by smtp.gmail.com with ESMTPSA id a18-20020a17090acb9200b002a5e1b215ccsm9240157pju.21.2024.04.16.10.44.06 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 16 Apr 2024 10:44:06 -0700 (PDT) Message-ID: Date: Tue, 16 Apr 2024 19:44:05 +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 v2 2/2] drm/panel: add Khadas TS050 V2 panel support To: Jacobe Zang , airlied@gmail.com, daniel@ffwll.ch, maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, robh@kernel.org, krzysztof.kozlowski+dt@linaro.org, conor+dt@kernel.org Cc: nick@khadas.com, linux-amlogic@lists.infradead.org, quic_jesszhan@quicinc.com, sam@ravnborg.org, thierry.reding@gmail.com, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org References: <20240415031408.8150-1-jacobe.zang@wesion.com> <20240415031408.8150-3-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: <20240415031408.8150-3-jacobe.zang@wesion.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 15/04/2024 05:14, Jacobe Zang wrote: > This add Khadas TS050 V2 Panel and make it compatible with old one. > Controller of V2 panel is "Himax HX8399-C" and the old panel is "NT35596". > In driver file, the only different between them is the timing squence. > > 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..c54be0cc3f084 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 ts050v2_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}, > }; > > /* 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 ts050v2_panel_data = { > + .init_code = (struct khadas_ts050_panel_cmd *)ts050v2_init_code, > + .len = ARRAY_SIZE(ts050v2_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,ts050v2", .data = &ts050v2_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; > Reviewed-by: Neil Armstrong