Received: by 2002:a05:7412:a9a2:b0:e2:908c:2ebd with SMTP id o34csp2564514rdh; Mon, 30 Oct 2023 00:25:14 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEk1P6Bx2/LjVf4yBXIP316ci+FQHEdIZWYPvP8g3nPxJAoiDezsQC2Xxc/cKmMC68YwYyV X-Received: by 2002:a05:6358:7f0e:b0:168:e4c1:eb9c with SMTP id p14-20020a0563587f0e00b00168e4c1eb9cmr11797744rwn.20.1698650713750; Mon, 30 Oct 2023 00:25:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698650713; cv=none; d=google.com; s=arc-20160816; b=z+CXG71U3UTeELChSeY/m5Nz6icWBtrzN6fqxbZ0NGY7n/+EU4Z3mDGxIZY1g/4IPp aYY/Lt2cV4+SWHeOJVqlYprFB9EkVC3SR3bI6kEiDtDBYyQw6u0wHW8oaihk2h2MAIG/ KE2EtuaAv6UDOhC1UF6c0V5HQLLAmibuGSv7HIB2V42NwVbO7t7pqmut1O13GIB4KKpC 5wYV+MyXamR8gKNf0mnM5sWFlHqP0bQaaz4FpvKyEPnFtEIvtrZFq7eSPFiMbtn30zfJ vB9YpMW+A6iysd5nbm0GSSowHxiwyncuqmlb6j5u19013XHR9xLI7TQib5ynzYgNoY1k cjrw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=VdRmvtayK3v7BctwV3dFsg7DY1HPt865jjTnPuCP2sQ=; fh=za98pfQR3ydg9Y3ccswEGlQo2zusiaZLmS4hGcokLbU=; b=V05AjyyUaVnzTS9wV/SW0L+a0FCFu8HuhMQaczoylV3awT3XTuBmeJEchDS+kBvS/n OKl2WoTTP0OY8q9Xlk2L5ha437haWZjMqIDzYXkGEnQyWTjbWdOKwOTWRdHAzDzbBx4i c2QPLC2C6ZDg+AeV2Yi3H46BxDI2Poi6WVMBsaqf/qZ/GDZeUMBKcAxJYEOgBqbAG1Ey +iZh/9vb8FhK+it+Xg6BBEKPAJOmo5f/2BgkZiQ28PISkMMB2DoXpTDv7Oj9y4Wwb7mE 1Pa5OfTJKyp8QAwws4BcQhSFRNkOskF6ePfUcVjIYxV0EU6Dw8nx1RVx5FFJFjquQaeK /ksA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@jookia.org header.s=key1 header.b=pDpRB6l3; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 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 lipwig.vger.email (lipwig.vger.email. [23.128.96.33]) by mx.google.com with ESMTPS id i184-20020a6387c1000000b005b9607abd4asi2991443pge.73.2023.10.30.00.25.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 30 Oct 2023 00:25:13 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) client-ip=23.128.96.33; Authentication-Results: mx.google.com; dkim=pass header.i=@jookia.org header.s=key1 header.b=pDpRB6l3; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 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 lipwig.vger.email (Postfix) with ESMTP id 58D0A80ABB20; Mon, 30 Oct 2023 00:25:09 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231862AbjJ3HY4 (ORCPT + 99 others); Mon, 30 Oct 2023 03:24:56 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41430 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231898AbjJ3HYp (ORCPT ); Mon, 30 Oct 2023 03:24:45 -0400 Received: from out-189.mta0.migadu.com (out-189.mta0.migadu.com [91.218.175.189]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6F8A4DA for ; Mon, 30 Oct 2023 00:24:43 -0700 (PDT) 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=1698650681; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=VdRmvtayK3v7BctwV3dFsg7DY1HPt865jjTnPuCP2sQ=; b=pDpRB6l3Quf6ybG+onRldnpSvB+dCBObKHswAeimDoAZMtcUTokGbt4/JPd3W2PbLhwDWR wNchHBOJXJVRNn58YmNFpQSlkoyVeS3m8jA+eg0cHGFWUHaew/gcEXrBArekB3MNmZMsHw 50wL202vUwtCX/1h83buXZwu0yxSP5lYFE9Oyy7ZDOCNwffnX2fs+kawlwWYgQbYPqdHnC 7bBN27Og8F6GPx6ffXESqOxkZVjxS67NAO9fm2Ao/jrYi/BxBaiym5MmyAMWsqfwzNhjay yYT6Sp6guDFSZeBrjcZ99VwlPH/dGj7IWI3hxAQItHkP/ihuOO27gKSFSa/YGA== From: John Watts 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 , Heiko Stuebner , Bjorn Andersson , Chris Morgan , Jagan Teki , Linus Walleij , John Watts , Paul Cercueil , Christophe Branchereau , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [RFC PATCH v4 3/7] drm/panel: nv3052c: Allow specifying registers per panel Date: Mon, 30 Oct 2023 18:23:34 +1100 Message-ID: <20231030072337.2341539-5-contact@jookia.org> In-Reply-To: <20231030072337.2341539-2-contact@jookia.org> References: <20231030072337.2341539-2-contact@jookia.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Migadu-Flow: FLOW_OUT X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.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 (lipwig.vger.email [0.0.0.0]); Mon, 30 Oct 2023 00:25:09 -0700 (PDT) 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 --- .../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.42.0