Received: by 2002:ac0:e34a:0:0:0:0:0 with SMTP id g10csp416802imn; Thu, 28 Jul 2022 04:56:10 -0700 (PDT) X-Google-Smtp-Source: AGRyM1tOoPx3V30/fC+QSdTG8zPNMix+JeXPhwGMSxYByHWQ3fHGSkxKtqeFiLnA9YVu3vdF68Al X-Received: by 2002:a63:293:0:b0:412:4f02:950f with SMTP id 141-20020a630293000000b004124f02950fmr22161883pgc.187.1659009370352; Thu, 28 Jul 2022 04:56:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1659009370; cv=none; d=google.com; s=arc-20160816; b=tbNKJTkm1FhUYZpiT3LtaTWG7GoKmRYWW+jp6I7LSmxb3RIX2rkPXmK82NHFRq5Fl3 42GDKqwFE9aN8jgDgwydVvuCVTwiD5Wn4cgw8JymT2AT/RUpFoKRPHIfnVpEi1Zw4OqP QCTPX2bigRseOcdLuxgmWDuHnMPqN4/a3ObOW8hAiYrhbMR/zKQyXdLIRJtTd/71WhMo mMCXRJza0860cXjViajHIDiJq0N7JiQjTGhNydx/CEckD0y+5hLEiGf5ynQm6iD4PvrB va9PTMHV6Lk81LhWAIHsB20lrk493OSVA1eB7Rk8exBtizpLKUSlmZHGhXyVKcru/Wer 084g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:references :cc:to:from:content-language:subject:user-agent:mime-version:date :message-id:dkim-signature; bh=KjWioIhylhprDfAiynP8M37s42/RkRzqIDLkGM2tZ34=; b=S9o21Dz+9Mn08VSAZXWdwugFuaNxvUKe5hLmMBexPUBZBo+fapFEcWFFt1RPL7RFDb uni1Jv9cvZLoQKq95oUCkxSGGvrh+cnu/tjSyodYVpvDD1B89UsIbSp16xTM7H9wzYoe TkGoNttnpaOp/6sQzNkVnvS3C2PUGoXEDTSGk580A01vI1PvIZfKOnBB6aWNf49zHQyA dam9KWHF/Gi5xDg9d/kt8U5dhQT+zHKBFKfY5LDSxy27EEeJMbra5YmepdUD1a4LchVI pqke1VWaSUr1P2TFWF5+aEmUa+HXNq9nzB6EygfT8FUqzgz9vyDvlS91rWYwGEop8bvP XDzg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass (test mode) header.i=@ideasonboard.com header.s=mail header.b=efmE0csa; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id k1-20020a056a00134100b0050df0383302si523929pfu.255.2022.07.28.04.55.55; Thu, 28 Jul 2022 04:56:10 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass (test mode) header.i=@ideasonboard.com header.s=mail header.b=efmE0csa; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235837AbiG1Lps (ORCPT + 99 others); Thu, 28 Jul 2022 07:45:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50000 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236878AbiG1Lpk (ORCPT ); Thu, 28 Jul 2022 07:45:40 -0400 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1E87ABF4D; Thu, 28 Jul 2022 04:45:39 -0700 (PDT) Received: from [192.168.1.111] (91-158-154-79.elisa-laajakaista.fi [91.158.154.79]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id AB30156D; Thu, 28 Jul 2022 13:45:36 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1659008737; bh=3ikDa89hPYF22Nu4Eybw5k3qIbhMbiGDUev623G/ipc=; h=Date:Subject:From:To:Cc:References:In-Reply-To:From; b=efmE0csadS2tbT7C4q6dQr+rNAmoe8cpjcdCIfPwXMd4qS1Hssq/M8zc8MJxcmoty 0o4wzww9oUIU4jNuSQHvj3eMurOAqhsTOqVObvOaHPXs4hulWPgPJwrfq23L3OxPyX brrKEUw92mSMsdwOtUP/YiJZibXzdbP5D7xkeHvU= Message-ID: Date: Thu, 28 Jul 2022 14:45:34 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 Subject: Re: [PATCH 4/8] drm/tidss: Add support for Dual Link LVDS Bus Format Content-Language: en-US From: Tomi Valkeinen To: Aradhya Bhatia Cc: Darren Etheridge , Nishanth Menon , Vignesh Raghavendra , Rahul T R , Krunal Bhargav , Devarsh Thakkar , DRI Development List , David Airlie , Daniel Vetter , Rob Herring , Jyri Sarha , Devicetree List , Linux Kernel List , Krzysztof Kozlowski References: <20220719080845.22122-1-a-bhatia1@ti.com> <20220719080845.22122-5-a-bhatia1@ti.com> In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NICE_REPLY_A,SPF_HELO_PASS, SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 28/07/2022 14:03, Tomi Valkeinen wrote: > On 19/07/2022 11:08, Aradhya Bhatia wrote: >> The 2 OLDI TXes in the AM625 SoC can be synced together to output a 2K >> resolution video. >> >> Add support in the driver for the discovery of such a dual mode >> connection on the OLDI video port, using the values of "ti,oldi-mode" >> property. >> >> Signed-off-by: Aradhya Bhatia >> --- >>   drivers/gpu/drm/tidss/tidss_dispc.c | 39 +++++++++++++++++++++-------- >>   1 file changed, 28 insertions(+), 11 deletions(-) >> >> diff --git a/drivers/gpu/drm/tidss/tidss_dispc.c >> b/drivers/gpu/drm/tidss/tidss_dispc.c >> index add725fa682b..fb1fdecfc83a 100644 >> --- a/drivers/gpu/drm/tidss/tidss_dispc.c >> +++ b/drivers/gpu/drm/tidss/tidss_dispc.c >> @@ -853,25 +853,36 @@ void dispc_set_irqenable(struct dispc_device >> *dispc, dispc_irq_t mask) >>       } >>   } >> -enum dispc_oldi_mode_reg_val { SPWG_18 = 0, JEIDA_24 = 1, SPWG_24 = 2 }; >> +enum dispc_oldi_mode_reg_val { >> +    SPWG_18        = 0, >> +    JEIDA_24    = 1, >> +    SPWG_24        = 2, >> +    DL_SPWG_18    = 4, >> +    DL_JEIDA_24    = 5, >> +    DL_SPWG_24    = 6, >> +}; >>   struct dispc_bus_format { >>       u32 bus_fmt; >>       u32 data_width; >>       bool is_oldi_fmt; >> +    bool is_dual_link; >>       enum dispc_oldi_mode_reg_val oldi_mode_reg_val; >>   }; >>   static const struct dispc_bus_format dispc_bus_formats[] = { >> -    { MEDIA_BUS_FMT_RGB444_1X12,        12, false, 0 }, >> -    { MEDIA_BUS_FMT_RGB565_1X16,        16, false, 0 }, >> -    { MEDIA_BUS_FMT_RGB666_1X18,        18, false, 0 }, >> -    { MEDIA_BUS_FMT_RGB888_1X24,        24, false, 0 }, >> -    { MEDIA_BUS_FMT_RGB101010_1X30,        30, false, 0 }, >> -    { MEDIA_BUS_FMT_RGB121212_1X36,        36, false, 0 }, >> -    { MEDIA_BUS_FMT_RGB666_1X7X3_SPWG,    18, true, SPWG_18 }, >> -    { MEDIA_BUS_FMT_RGB888_1X7X4_SPWG,    24, true, SPWG_24 }, >> -    { MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA,    24, true, JEIDA_24 }, >> +    { MEDIA_BUS_FMT_RGB444_1X12,        12, false, false, 0 }, >> +    { MEDIA_BUS_FMT_RGB565_1X16,        16, false, false, 0 }, >> +    { MEDIA_BUS_FMT_RGB666_1X18,        18, false, false, 0 }, >> +    { MEDIA_BUS_FMT_RGB888_1X24,        24, false, false, 0 }, >> +    { MEDIA_BUS_FMT_RGB101010_1X30,        30, false, false, 0 }, >> +    { MEDIA_BUS_FMT_RGB121212_1X36,        36, false, false, 0 }, >> +    { MEDIA_BUS_FMT_RGB666_1X7X3_SPWG,    18, true, false, SPWG_18 }, >> +    { MEDIA_BUS_FMT_RGB888_1X7X4_SPWG,    24, true, false, SPWG_24 }, >> +    { MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA,    24, true, false, JEIDA_24 }, >> +    { MEDIA_BUS_FMT_RGB666_1X7X3_SPWG,    18, true, true, DL_SPWG_18 }, >> +    { MEDIA_BUS_FMT_RGB888_1X7X4_SPWG,    24, true, true, DL_SPWG_24 }, >> +    { MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA,    24, true, true, >> DL_JEIDA_24 }, >>   }; > > So the dual link sends two pixels per clock, right? Are there panel or > bridge drivers that support this? My initial thought was that it should > be a new bus format. Looks like we have drm bridges supporting dual link, and they use the "normal" bus format. Did you have a look at them? They require two port nodes for dual link, and use the existence of the second one to decide if dual link is used or not. There are also lvds helpers in drm_of.c. I didn't look closely, but it looked to me that the helpers can tell you if the ports are connected to a dual link bridge. If not, you could fall back to cloning. This way no extra properties are needed. But you will need to add a port node, which I think you need to add anyway for cloning. Tomi