Received: by 2002:ab2:69cc:0:b0:1f4:be93:e15a with SMTP id n12csp2017124lqp; Tue, 16 Apr 2024 05:15:40 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCWgCuczEHSlcEX+ImKfCDhWUJAsBwp08pMiFysNqgVpT77od3mdD5UPdl6kjty4F9J7T5bD78283yenuEqUHRPrp/j/SexcL+aoQE5tvw== X-Google-Smtp-Source: AGHT+IEvI4nCIAi8D9KVhAZflnXnuJKStgH2t1R5o+84sr7K0Dm2QdAIDbQLZKL/tmzJ804J610c X-Received: by 2002:a05:6122:17a8:b0:4d3:b326:5ae8 with SMTP id o40-20020a05612217a800b004d3b3265ae8mr10551136vkf.14.1713269740425; Tue, 16 Apr 2024 05:15:40 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1713269740; cv=pass; d=google.com; s=arc-20160816; b=QynAzAvYzq8Tud30wslCe4VRdEdqxnbxmeP4MWrdtNfeDsW3pMYAegpTj8+1OKEb6p tyJ0xmMD0eGzw14njILzEBnnw/zrq20n+5VHr41ruDO8Xk1WmPC+BpKTpZxLJ3EBtOtu 3nAbS31ahsy8IfBzg7gzDTc4c68CiWQGh1RdsTI5rfX73A3X1QQaF2Qe4masU1ftG1g4 +1YVWWXJde3XLI86Q9uktlOA0ag1qJ42N5tDnrpiTzVPHH7vB6/xQL5d+2xRRCeJMtiE qLxryTTzwBhQACFm93NuTWrjoBVAQFSjd3+Ekx57kkseLjohFdARVZGXcCS2ZkvfQ8St MBcQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:list-unsubscribe:list-subscribe :list-id:precedence:dkim-signature; bh=wlWFv7cOcND2wnTqRNzMBr2pMz9vnQZWAIMjfeiHzPY=; fh=gJPPgL/N+igFnYbYrqSI4Nw6Fac8f64+xR8R3fwPTHw=; b=B+ZdlPa10uVJ3QUy8c5cv6gm2YZ+8EyklGEn3AuvAdnA9gLqUrm8l+1eiCmmYdo5lT xzUf8ImpJGEZmgObJeI6I5ei5XXckQUm6ltCt+YO1O4U//eEk+TYiVt27YQCEooJYb2b OmyKrn314DwL7Od5cPiijrVD+rtG4KL5aOKW7X+mHmK2zykTS3cA5FLcV5f8ajEPjbzo a16z3F5BuXRVuVOT17x4GZaQXyu6iQgiTyIRbpzbiiM46jowa76Y3GV7QJmUkl9qfpEU ejUUwZ6zqrTYIGDBuRBoFnITxKsiJ6g9tovoKoNWwYuXIFzYUId5bVHTOYTTlSIUj9c6 52GQ==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=SCyyr7pv; arc=pass (i=1 spf=pass spfdomain=gmail.com dkim=pass dkdomain=gmail.com dmarc=pass fromdomain=gmail.com); spf=pass (google.com: domain of linux-kernel+bounces-146760-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-146760-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [2604:1380:45d1:ec00::1]) by mx.google.com with ESMTPS id et10-20020a056214176a00b0069b63a8737asi7917910qvb.437.2024.04.16.05.15.40 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Apr 2024 05:15:40 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-146760-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) client-ip=2604:1380:45d1:ec00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=SCyyr7pv; arc=pass (i=1 spf=pass spfdomain=gmail.com dkim=pass dkdomain=gmail.com dmarc=pass fromdomain=gmail.com); spf=pass (google.com: domain of linux-kernel+bounces-146760-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-146760-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com 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 ny.mirrors.kernel.org (Postfix) with ESMTPS id DC4351C210B2 for ; Tue, 16 Apr 2024 12:15:39 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id E553212AAF8; Tue, 16 Apr 2024 12:15:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="SCyyr7pv" Received: from mail-pg1-f173.google.com (mail-pg1-f173.google.com [209.85.215.173]) (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 8898E12AAC9 for ; Tue, 16 Apr 2024 12:15:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.173 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713269725; cv=none; b=nw27sv7vsMITO5hgsrfNaPKE2nkZJvPAOZsVNdKkO89MR9IZpLgoBBhgtKZzqPci/o7HS8TF0J1UMHQxvpWjNGZsPsHxW/ZPi9a18RekaMyynQmSxKmZN/Ku32CIbczTkNxAztll9hCKrY+E1gWC2H66dlGvMRb5EoPkKheiwZ4= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713269725; c=relaxed/simple; bh=wrKI7QZ6HanmjwtzPADRvU6WaXyrFt9p6yXSrd3Udu8=; h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject: To:Cc:Content-Type; b=NzQmhZrH/vZCfFy1sE6BlvpHyl4jz26scLMPXwDJJ4SiCsopwMWwMXfIiOgEkaYxlxpFHBn6l09aY8YH4W/ZvBCCRcyUJHWKkNVWtiUDWxfX44NyNJvIYwiREuzhz4NKY6syG0rLCLuIn88woE8CNySf+7865c6p+sAXMSZB/AM= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=SCyyr7pv; arc=none smtp.client-ip=209.85.215.173 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-pg1-f173.google.com with SMTP id 41be03b00d2f7-5dbd519bde6so2829667a12.1 for ; Tue, 16 Apr 2024 05:15:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1713269723; x=1713874523; darn=vger.kernel.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=wlWFv7cOcND2wnTqRNzMBr2pMz9vnQZWAIMjfeiHzPY=; b=SCyyr7pvkiW3U1u49nwW/xzY4yN0hrZaQ8l0pC4bO6gb2h/BLaz6Au7luNhlzRQIQf ei/ATG1ovBIU3Nsz1aoKQ7yYjeS6tL3JvTfan/QMhZlY06B4dqhjuc4d/8F7D7jfd+VN mFNJl3noiXwuc1GTXa0QRbMeiZuv0iiYS/D7gbt7Qm5snf1ny/gIOGOHGXGfhNm42qkv F21bCc9cIJegyT/iwcZtF+ls85nc7hIzb+Rfsol1zFKAiPfSJYeIHoI5Yfn0SEevksA5 KD4gTc+/wYI5aDUN9vnkkOG/W7qa6am5OhMKvSuSrTIBbTCJzdnzvzRrOFEQ46QpZ5N8 dxnQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713269723; x=1713874523; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=wlWFv7cOcND2wnTqRNzMBr2pMz9vnQZWAIMjfeiHzPY=; b=Ix9YtCucRlj197dLTTrZ2HU87+QBEF8ykH5didlP78EtlI2E5eKD1iO9RA6gjOfCwc xyH51jDlfFbGRoW9mR0od7sqLzjR/Q6F/X8aUAtWAbnL/rjds2MBYfDDRVYzuy12424Y sRH0Go3u2dW+f4gTOf7QanrRjMIBxqeRlFxkiCzZS0vnvlLjiMbuubeCOU8HzG/LDemE xvw22HpdLpvliu/lmwCPmp0gLFb9sOP7kU+Jjdm8wSvkHHot33bxkCRJ7vP0AKl/w6uY e7wujKwZqROV7CI47omDX4UEbQ9rJ2S5mEE4y/EeZdKgHCqLq/WZ45C9xsKlNln0oPN2 jPbA== X-Forwarded-Encrypted: i=1; AJvYcCVi1zSfJYFgrYnKGZveTXLH4A4TlRSF/Z4zANscekEolE5OJLgdY3WTsNTdSj0z0TFDUylcc9y9281jMmMvdMdCjGxPGQ8zhOFUKkkD X-Gm-Message-State: AOJu0YwSOIzQ82cTr41nPDqTqtKBKdSZ+xGRcMawYNLHon/LkR5efAj3 Vskq/2xE1PybHM1DqOWjNIMMOmLc7voeMwWo2uMYlqXYOMlqzLGBxHGHS6FFUq0q0GxiHzjqe6A qp0pdGcAc2G/jyir8dKT/m5QqLvM= X-Received: by 2002:a17:90b:4b48:b0:2a2:227a:50fc with SMTP id mi8-20020a17090b4b4800b002a2227a50fcmr9557932pjb.41.1713269722636; Tue, 16 Apr 2024 05:15:22 -0700 (PDT) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 References: <20240211230931.188194-1-aford173@gmail.com> <20240211230931.188194-2-aford173@gmail.com> In-Reply-To: <20240211230931.188194-2-aford173@gmail.com> From: Adam Ford Date: Tue, 16 Apr 2024 07:15:10 -0500 Message-ID: Subject: Re: [PATCH V2 2/2] drm/bridge: samsung-dsim: Fix porch calcalcuation rounding To: dri-devel@lists.freedesktop.org Cc: marex@denx.de, aford@beaconembedded.com, Frieder Schrempf , Inki Dae , Jagan Teki , Marek Szyprowski , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Daniel Vetter , Marco Felsch , Michael Tretter , linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sun, Feb 11, 2024 at 5:09=E2=80=AFPM Adam Ford wrot= e: > > When using video sync pulses, the HFP, HBP, and HSA are divided between > the available lanes if there is more than one lane. For certain > timings and lane configurations, the HFP may not be evenly divisible. > If the HFP is rounded down, it ends up being too small which can cause > some monitors to not sync properly. In these instances, adjust htotal > and hsync to round the HFP up, and recalculate the htotal. > Marek V and Marek S, Would either of you be willing to test that this doesn't break your applications? thanks adam > Tested-by: Frieder Schrempf # Kontron BL i.= MX8MM with HDMI monitor > Signed-off-by: Adam Ford > --- > V2: No changes > > diff --git a/drivers/gpu/drm/bridge/samsung-dsim.c b/drivers/gpu/drm/brid= ge/samsung-dsim.c > index 8476650c477c..52939211fe93 100644 > --- a/drivers/gpu/drm/bridge/samsung-dsim.c > +++ b/drivers/gpu/drm/bridge/samsung-dsim.c > @@ -1606,6 +1606,27 @@ static int samsung_dsim_atomic_check(struct drm_br= idge *bridge, > adjusted_mode->flags |=3D (DRM_MODE_FLAG_PHSYNC | DRM_MOD= E_FLAG_PVSYNC); > } > > + /* > + * When using video sync pulses, the HFP, HBP, and HSA are divide= d between > + * the available lanes if there is more than one lane. For certa= in > + * timings and lane configurations, the HFP may not be evenly div= isible. > + * If the HFP is rounded down, it ends up being too small which c= an cause > + * some monitors to not sync properly. In these instances, adjust= htotal > + * and hsync to round the HFP up, and recalculate the htotal. Thr= ough trial > + * and error, it appears that the HBP and HSA do not appearto nee= d the same > + * correction that HFP does. > + */ > + if (dsi->mode_flags & MIPI_DSI_MODE_VIDEO_SYNC_PULSE && dsi->lane= s > 1) { > + int hfp =3D adjusted_mode->hsync_start - adjusted_mode->h= display; > + int remainder =3D hfp % dsi->lanes; > + > + if (remainder) { > + adjusted_mode->hsync_start +=3D remainder; > + adjusted_mode->hsync_end +=3D remainder; > + adjusted_mode->htotal +=3D remainder; > + } > + } > + > return 0; > } > > -- > 2.43.0 >