Received: by 2002:a05:7412:8d10:b0:f3:1519:9f41 with SMTP id bj16csp3296249rdb; Sat, 9 Dec 2023 22:57:13 -0800 (PST) X-Google-Smtp-Source: AGHT+IEPPqFG9uOLK0v7HPL8zfBNJFke7+DrWTrmHxS902UjtfYxy7f2c+l74MF1slBbabWmi8X3 X-Received: by 2002:a05:6808:10c3:b0:3b8:b063:5d6d with SMTP id s3-20020a05680810c300b003b8b0635d6dmr3061633ois.84.1702191433283; Sat, 09 Dec 2023 22:57:13 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702191433; cv=none; d=google.com; s=arc-20160816; b=TtytllEae9f/UpfvYozaZMwqRTdG3S6sjijXvpgWXb0LeKS8W5k3pt4wapD5WuKOsY jTjG8hQXNFQd9F7wq6GBPTIQQD0Ifv1+X/Lh6SnCepB4pTGnLurtuHXfOr4siW1/sN5J 85nnQAABaLoMr/xjnavD2QoAL/alYh/XvzYkjCYY2pYqE7QQASyqv1AwyYlvidDmMZXe +zaAJN8p/PJ23UuYrCmilqJ0Ht/g0v8U/D/VqvhTg/qWbqMcIt/uyOGHRv22bh1ts0KW 2yNtXkrtiM7rGIxahiVZgvECd6tJ6pqR3B/mttjOF7BtmpgUnKHG5+oPKeSvg0oOJAAB xcug== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:from :dkim-signature; bh=LKeocmb910W+MflyKsO/aX9nOqpcVtW8TrdWpRGtl3w=; fh=JpSGF3BKFJLb8IMJo74JuG0TUQEWRsRbAcd9Vu9fS0Y=; b=Rrv15geZW/j8IYvL8zIhzYVewtghfF+vkehktffZUs1VcLW6UV/hYQEgfd2r465RV8 9MSYaoPrjbF2byDd78rnrwc1OJzll57+cglOSUa48Vo2GblUo9SzZdp96K/mZqP4iHPt P/AZ2aZxYjxK8LwYgLQiZp0t0LOXZOIt4sGgQIz5vLeOIf4VEKTbThK6H3FxU+jLGnSb bWWLudhlGjb2ZMrJCKg/bcNOyP9L/KVz8UA1mCqEUnqDtHyEemFb0qn6lDfdL+0L3wd0 4uyScl+f6sP4rr9/PqTRsyfRRr0QfLNHhiPBfVFYVx5ZyXB5qr5YxZ3+Am0oYH1DIUeK uNRA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@jookia.org header.s=key1 header.b=arN5QEEA; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=jookia.org Return-Path: Received: from pete.vger.email (pete.vger.email. [23.128.96.36]) by mx.google.com with ESMTPS id y184-20020a638ac1000000b005c6c9524f93si4102085pgd.766.2023.12.09.22.57.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 09 Dec 2023 22:57:13 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 as permitted sender) client-ip=23.128.96.36; Authentication-Results: mx.google.com; dkim=pass header.i=@jookia.org header.s=key1 header.b=arN5QEEA; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=jookia.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by pete.vger.email (Postfix) with ESMTP id 7ED598050019; Sat, 9 Dec 2023 22:57:10 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at pete.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231601AbjLJG4w (ORCPT + 99 others); Sun, 10 Dec 2023 01:56:52 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50928 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231596AbjLJG4v (ORCPT ); Sun, 10 Dec 2023 01:56:51 -0500 Received: from out-173.mta1.migadu.com (out-173.mta1.migadu.com [95.215.58.173]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BA2C611C for ; Sat, 9 Dec 2023 22:56:56 -0800 (PST) X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jookia.org; s=key1; t=1702191415; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=LKeocmb910W+MflyKsO/aX9nOqpcVtW8TrdWpRGtl3w=; b=arN5QEEAmunfx2Kwth8M/y9Sm0gVl3bXcOcy0paX28p5ZbPMhIjmBusOf83sv1pjiAvZdj 471XE4AZkXeqlin0obo7ZnSxIp/EF/2ge7IdhTuamELRyIJjyhifv+skKILt3pI/Yd/3YY WUjphVz6Gojk1gVC4kd0T6mtn+brZx5aDHW8wTZEGYIlK0e3O37w1KTTAE2XwstHyvJAlQ o9I0x5R5BxP1gk4O8Z1bfvGhCIxQRQAMg+QM29J7XEXeapIBtuR79vc1cgU6ADxYWrGItp A5/Nblv1s01262OQ0VrWiD9/7BOlwUt00vi+bkdi5mztHi21IFu5BMs/xbCQmQ== From: John Watts Date: Sun, 10 Dec 2023 17:55:51 +1100 Subject: [PATCH RFC v5 3/7] drm/panel: nv3052c: Allow specifying registers per panel MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20231210-fs035vg158-v5-3-d75adc75571f@jookia.org> References: <20231210-fs035vg158-v5-0-d75adc75571f@jookia.org> In-Reply-To: <20231210-fs035vg158-v5-0-d75adc75571f@jookia.org> To: dri-devel@lists.freedesktop.org Cc: Neil Armstrong , Jessica Zhang , Sam Ravnborg , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Daniel Vetter , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Paul Cercueil , Christophe Branchereau , John Watts , linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Rob Herring X-Migadu-Flow: FLOW_OUT X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on pete.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (pete.vger.email [0.0.0.0]); Sat, 09 Dec 2023 22:57:10 -0800 (PST) Panel initialization registers are per-display and not tied to the controller itself. Different panels will specify their own registers. Attach the sequences to the panel info struct so future panels can specify their own sequences. Signed-off-by: John Watts Reviewed-by: Jessica Zhang --- drivers/gpu/drm/panel/panel-newvision-nv3052c.c | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/panel/panel-newvision-nv3052c.c b/drivers/gpu/drm/panel/panel-newvision-nv3052c.c index 90dea21f9856..b0114b5e8554 100644 --- a/drivers/gpu/drm/panel/panel-newvision-nv3052c.c +++ b/drivers/gpu/drm/panel/panel-newvision-nv3052c.c @@ -20,11 +20,18 @@ #include #include +struct nv3052c_reg { + u8 cmd; + u8 val; +}; + struct nv3052c_panel_info { const struct drm_display_mode *display_modes; unsigned int num_modes; u16 width_mm, height_mm; u32 bus_format, bus_flags; + const struct nv3052c_reg *panel_regs; + unsigned int panel_regs_len; }; struct nv3052c { @@ -36,12 +43,7 @@ struct nv3052c { struct gpio_desc *reset_gpio; }; -struct nv3052c_reg { - u8 cmd; - u8 val; -}; - -static const struct nv3052c_reg nv3052c_panel_regs[] = { +static const struct nv3052c_reg ltk035c5444t_panel_regs[] = { // EXTC Command set enable, select page 1 { 0xff, 0x30 }, { 0xff, 0x52 }, { 0xff, 0x01 }, // Mostly unknown registers @@ -244,6 +246,8 @@ static inline struct nv3052c *to_nv3052c(struct drm_panel *panel) static int nv3052c_prepare(struct drm_panel *panel) { struct nv3052c *priv = to_nv3052c(panel); + const struct nv3052c_reg *panel_regs = priv->panel_info->panel_regs; + unsigned int panel_regs_len = priv->panel_info->panel_regs_len; struct mipi_dbi *dbi = &priv->dbi; unsigned int i; int err; @@ -260,9 +264,9 @@ static int nv3052c_prepare(struct drm_panel *panel) gpiod_set_value_cansleep(priv->reset_gpio, 0); usleep_range(5000, 20000); - for (i = 0; i < ARRAY_SIZE(nv3052c_panel_regs); i++) { - err = mipi_dbi_command(dbi, nv3052c_panel_regs[i].cmd, - nv3052c_panel_regs[i].val); + for (i = 0; i < panel_regs_len; i++) { + err = mipi_dbi_command(dbi, panel_regs[i].cmd, + panel_regs[i].val); if (err) { dev_err(priv->dev, "Unable to set register: %d\n", err); @@ -463,6 +467,8 @@ static const struct nv3052c_panel_info ltk035c5444t_panel_info = { .height_mm = 64, .bus_format = MEDIA_BUS_FMT_RGB888_1X24, .bus_flags = DRM_BUS_FLAG_DE_HIGH | DRM_BUS_FLAG_PIXDATA_DRIVE_NEGEDGE, + .panel_regs = ltk035c5444t_panel_regs, + .panel_regs_len = ARRAY_SIZE(ltk035c5444t_panel_regs), }; static const struct spi_device_id nv3052c_ids[] = { -- 2.43.0