Received: by 2002:a89:48b:0:b0:1f5:f2ab:c469 with SMTP id a11csp1371126lqd; Thu, 25 Apr 2024 13:30:25 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCWdp7oOYW/Xx1dBJetflb/UW8fhInM9lvKNUWVcBTZwb6wRVMOAer+8KKtSlxanorSO7C14oPWd9Gr+jPC8lKfgeCxHh/sRGvQkx6luaA== X-Google-Smtp-Source: AGHT+IGbDmr2GfUFbRwKmPWzVzMiosWbMRzRfwXTnCpWZrLuz+laEpYsQA2/yCBKAcV18ahRD3Q2 X-Received: by 2002:a50:875c:0:b0:571:fc58:a8dc with SMTP id 28-20020a50875c000000b00571fc58a8dcmr392464edv.32.1714077025327; Thu, 25 Apr 2024 13:30:25 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1714077025; cv=pass; d=google.com; s=arc-20160816; b=oHIs8EQeYV0UzkFdbObo0HbtBgLXC2biADYBA7OGqyqPeb6VvcpJgjOgEx5+9jqn44 826bMud406fa+ihZRxYOoCGmWmkFqKnNqoU4dSfWPwwXKsaM3xc5dRpofPQBlhC4I9vP 2oRSDTmivUfJV8nNeZ514ZQNGWMstbhzc0G4Y4bjw3pEOVwuvRs5+/DjPWN7sRLCoOk6 OoX6a3bvrR3+RlNE8fyfPVnpLUKUaUgESUcoY0FpM756KevVzVUBF2N6L8FT2jLG9sQt 6w+tgbhBhgRci97iLtSWBQMLzvXbnN/+mRnId5KFxrX6COlbtQx0IGBe6XUpSP2bLXj5 pX5Q== 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=9PzTk/0GTrpkXInH9ZwioMKJlS+GbN8syGyhHAUyME8=; fh=lhxgylSOrWZ9g7jlyGsR8YvGC5ZaVyNZYYvx/263UPQ=; b=r5uEwsc01AaDcxeCJ81ppGFxuXH3i+eIwlkOEEPgWiXSYpsl40TVw2HQ9m6Y1Haznx RBUDGKFxFJNg1T4+jTFwa8f5q+7e/TSRqDagWIVqcgNVItk7lS7OwcZ+Fmhk17jeck1x qTAisVqtuvoOauTSvU6ssoVRBhzU0OlAsfkqogze8kDTiC9jyxWqGH+00ysoyNMQov8o ZUztKraR2hjyqBjP2uMO+IxCahpGdF56keFaC+ljN11mQ+v9t7dY6oJ5ls8ucmaJZDUk uBjw3wMPkXm9osW4SBx4XAJa/qVc9lvHc5v6dcUpXLScEixFlmE4MVQrtMpxeJwXUMde /L5Q==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=VtbDT1BH; 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-159139-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-159139-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [147.75.80.249]) by mx.google.com with ESMTPS id b31-20020a509f22000000b0056e5b895d89si10047730edf.426.2024.04.25.13.30.25 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 25 Apr 2024 13:30:25 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-159139-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=@gmail.com header.s=20230601 header.b=VtbDT1BH; 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-159139-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-159139-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 am.mirrors.kernel.org (Postfix) with ESMTPS id D638A1F2235E for ; Thu, 25 Apr 2024 20:30:24 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id ACBB737143; Thu, 25 Apr 2024 20:30:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="VtbDT1BH" Received: from mail-pj1-f51.google.com (mail-pj1-f51.google.com [209.85.216.51]) (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 6BD902B9D9 for ; Thu, 25 Apr 2024 20:30:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.51 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714077016; cv=none; b=AEfV0uUxTPVWao8emO2/WJINT5CPYa7YT51D1yzLNdUA09+wdTH424ObFHvRy32XYcgyAXLAooOLELLxLgd7/Dy/gTFlmLCCL/vWuRaAWpzxhVkBUEGJInVJv7uAhAttzyzRTbxEy9SoV9UgZldwWuSAqDu/YKtPqq2LBEbOUWM= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714077016; c=relaxed/simple; bh=gqp6wvS4UfJxlEmIog1zsBpPUNy2+DlmIhJNSWYKfew=; h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject: To:Cc:Content-Type; b=ZDP4K+LIyTBUcbk7seiXMttRlO5N9FSYcR5XPDgF0CgzHcnmO8BQAlxuCQj54g89FSVfqM3AWtspi6OAUMBjwJWMiHZGcfB2RvqXdWug0bWGkxX2v8UCtIWdW4Y50l7WA+rZ/QlGO51wcyz1nPgowcHqQXCbf8+MPCWkgUwYHTs= 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=VtbDT1BH; arc=none smtp.client-ip=209.85.216.51 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-pj1-f51.google.com with SMTP id 98e67ed59e1d1-2a564ca6f67so1300462a91.2 for ; Thu, 25 Apr 2024 13:30:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1714077015; x=1714681815; 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=9PzTk/0GTrpkXInH9ZwioMKJlS+GbN8syGyhHAUyME8=; b=VtbDT1BH8a/hCqINQ+xv3sdlcequomW5BAUBdAauERH5rBuzst2gGZFcR1CKSiIPn9 Lrv2iCKQqus5qRE4p3uyqGu82pYbFS62v+brPZ9OrlcB8kjwxdiiXZD/jK66SsXuIpOh uQZpknYhYRjigNo4yL2m/397L87PJaMscWgqC1fJ8xGUmm4GnS0wLebBinFshBqWKzJd 1yxYpjL0G8K3sdtoVBDss/QhHw3dk5d8yPcJ8GgBZWcmUUB2xAcd2Z6WpcGancAAYf2i B/qOuthh27LfJeT98s+EplM7hFezqFzQ6FLrbLYc4jC2RP0H7sL++cTdr6ojHLcRTg72 UUhg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1714077015; x=1714681815; 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=9PzTk/0GTrpkXInH9ZwioMKJlS+GbN8syGyhHAUyME8=; b=hq3yYV1K1ePmy++8tHLL6Ga4rUnHegtd1KqfjSKE5vAIyqEqWr5au0746ltM8EwLz0 maLV/U4k91NJup+5Lj0dcQXff71JUwezebAlw3uAqcaSOmOEOusN2noIFLQHkuAYZN22 DKuxomk72fBZil6GVEah4vlb8QsERiDger65GKduT0E3YuN/nQiAI36NgqM9FO/ufc7r 0bFR2/i58e/MN5AuV+XgUZ/0kYsde0SVlugY08a++wm+U19AqSEM88jg2jGlkrNX5O1k g7ZvehgwzJcMCmOCCCTOpueQ9xvafspMcOBdORkqwExT8Sm2QhZysaCwRJjMKxbm3JHQ /7zw== X-Forwarded-Encrypted: i=1; AJvYcCUbg6AU5Mt5HGttnqhDpOR5BHaX9wuSFm5ZzKfJSe4/XzgnNpUXXiFU4cuhbHVn4Qh2a8Xb7JgpBRl+6yzcWV83wQ1ykehe/S7mSlJI X-Gm-Message-State: AOJu0YwaBtITvhWC7Wnjs/Sb6JgWxqNVvNCasbeMQEMofYKYAwrjFcT0 6CthL2SsKV6txsdGm3BhE/XZMmFtR4D+hjYrLGb06Vzx6Q/GeJElMY4Z+QqWcCPZVLCyaIw1f5Q QgnAn/zrNih8nt4CrbGQw2MfPy4Q= X-Received: by 2002:a17:90a:c292:b0:2ae:814f:43fa with SMTP id f18-20020a17090ac29200b002ae814f43famr666154pjt.46.1714077014367; Thu, 25 Apr 2024 13:30:14 -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> <6fcfe1bb-a1e9-4d7c-aff7-e572bcdf5d31@samsung.com> In-Reply-To: <6fcfe1bb-a1e9-4d7c-aff7-e572bcdf5d31@samsung.com> From: Adam Ford Date: Thu, 25 Apr 2024 15:30:02 -0500 Message-ID: Subject: Re: [PATCH V2 2/2] drm/bridge: samsung-dsim: Fix porch calcalcuation rounding To: Marek Szyprowski Cc: dri-devel@lists.freedesktop.org, marex@denx.de, aford@beaconembedded.com, Frieder Schrempf , Inki Dae , Jagan Teki , 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 Thu, Apr 25, 2024 at 4:19=E2=80=AFAM Marek Szyprowski wrote: > > On 12.02.2024 00:09, Adam Ford wrote: > > 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. > > > > Tested-by: Frieder Schrempf # Kontron BL = i.MX8MM with HDMI monitor > > Signed-off-by: Adam Ford > > Tested-by: Marek Szyprowski Thank you very much for testing! > > > --- > > V2: No changes > > > > diff --git a/drivers/gpu/drm/bridge/samsung-dsim.c b/drivers/gpu/drm/br= idge/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_= bridge *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) { Frieder & Marek S, Marek V is proposing we eliminate the check against the flags and do it unconditionally. If I send you both a different patch, would you be willing to try them on your platforms? I don't want to risk breaking a board. I used the check above from the NXP downstream kernel, so it felt safe, but I am not as familiar with the different DSI modes, so I am not sure what the impact would be if this read: if (dsi->lanes > 1) { Does anyone else have an opinion on this? > > + 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; > > } > > > > Best regards > -- > Marek Szyprowski, PhD > Samsung R&D Institute Poland >