From nobody Sat Jun 13 04:48:47 2026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 77666196C7C for ; Sun, 10 May 2026 19:15:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778440531; cv=none; b=vGQg2SKSsNgO9TxKwl/KRebne6/pUxXeigqDNp+eMLZpYrPqH/IEARIJtfkkCnETaQQBHQk+/d66MYV/uUydStYsvTp/MyjCYBJV1gpHxJMInPoK4COWQAOjZFiu/FjVnymCoYNBtMq8DaxweJ9fbLdBxEHDC6NumnoHev/eei0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778440531; c=relaxed/simple; bh=2bkzo0x7WzdOHtnPaGg7ckVWdQL14juOTqF8dKSNxjs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=cuzofXQflN7r1rWAXo3VyfAW/uZqZ9Uv6j4C5NqAP7w86MkOe9rRZk/4nghsrL3ntvs1pHDhdnxHB+i1llCNEcGTDTLGmEsy9FK+AeH8XuXTejiGzfFgn6BVCVIzZRyMUDmKSwWQL+bLzuKpgvcL+PmEduMYHbJZHBkLOFserkE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=E73NzPo6; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=VHJgNyPF; arc=none smtp.client-ip=170.10.133.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="E73NzPo6"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="VHJgNyPF" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1778440529; 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=WSff1/jlC/KCVsnlxPeLLqVDEAsoLX+CZn5Ceh75Mv0=; b=E73NzPo6n4Yxnu5hYkEKXf2e6Nby17ZhbD2ovk/2/6VC2qRd5IJpGFjYdiSqY0sVYmQOLy JJyuB63dwDnM4fJqr7wOarjlr0tqUrThfT2ywgDps7oSNQP06ROdJUCDzJeSRgWvybBgtT 3uBmOHo1BDsqyHm/aa15w004TYQx1FY= Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-458-RL1gXzKmNA-hR6D9UaXNoA-1; Sun, 10 May 2026 15:15:28 -0400 X-MC-Unique: RL1gXzKmNA-hR6D9UaXNoA-1 X-Mimecast-MFC-AGG-ID: RL1gXzKmNA-hR6D9UaXNoA_1778440527 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-4518f777225so2400009f8f.1 for ; Sun, 10 May 2026 12:15:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1778440526; x=1779045326; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=WSff1/jlC/KCVsnlxPeLLqVDEAsoLX+CZn5Ceh75Mv0=; b=VHJgNyPFX3C22WLC++706puB6dcghjUbKIefo7JlyveqlVp6jJXRLjrcTrZSswWPAo j93zfMn0ujytJFg1ImUgSJyBigbFnNoWwOZN9/y937KbNYg+UJaiN++bLiUWrFo5Slew 0y4mpM5zmBj6Em0h3AZ7QbKlyDLHr/QjbawEdTqwI/y2eFo4zOkVuLSOxhQZ6ON/ezGQ qKNDiDemyQgz3A0XnEjSGY+hHjbh9Qqvdr1Hilgi6VLKc80QsqSdo8jBcLdngkn2+RmP j2i3B69OtOT4Z7uGKVtQs69t4iasCMbSQkDg1ePHQbmo7tkGqCJGSxgpf8/8AyI0izd3 C9FQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778440526; x=1779045326; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=WSff1/jlC/KCVsnlxPeLLqVDEAsoLX+CZn5Ceh75Mv0=; b=LmbFAB0AYdTiEJ9jz7NvOd4nOwcaBVH3WIyFFdEVK8zbu36ZTgYbMIybPbgz62TSrm p2mZVkS6QCZdh5ixcLR8NGDRjOWWz73ENXyOX8+3CWQl3mukn9CnQP8uRba73DJ/qXjp 9WC5bTz3QQos4OuXm+wiGIrKVJXSlB3/OV+LiGbJWyAR1KgpILTEHNnWqqlHeAcStqiH VzaCviA+IpKYpggJh6tahDAhSBJgFOtf/vuREcYLfFl+ZFut8bEXbZj1ONRHZYg1FjBE 7xirKB9+g+0dopi3kFdlPr/rRJEuCRNVBb9eHfYy1s4kB3LUDXbjJuRHEGjIgwad0LSW x8lg== X-Gm-Message-State: AOJu0Yx7AKWDC0m3dyUnnuSUefXaidoZbA49FpEExma/8JkH25jhPPdT mWooQb6RFfQtpJlRfYwfKxO/EoQdlWGgVgffvrnuqcxfMsIRc9j5Hca7nIjJFXXIk5afyfoh4vd 9tgFVUa3T5MX023dOF26n7HVJDDhj7YkSylCCUqaXDJvDYWGGRK/mWztmOTEsc2bb7s3Zpvj0g+ cIMAlLSQb8cIQ12P8tR3RbIMA/ZGRzvEkYd/M0iKELnjchPr/b X-Gm-Gg: Acq92OFEllJDtv+WsP0yXoLaFwFeWdD1KcyVNFtbScVTR86VozaXaYOUFS9Hpmm1/D0 xbGD6sHKjynZK924JhjGIRtrZ6y5iIAVYD2qeH0rpRwk2HJvV63XPKIUrXW+Ub2oOy1g5Zl/Gyx uyAjlcduJBfOAHMy8D5v2iaBU6QnzzMqOxguB2sOHQQ+1GgyN+zdLveKjHAhOG24xX+KBrqC0aO R+S1j0UHkGVvQlgm/uWO6cvvHTPKfGGEy51/4YbCBawdcEOZtVuNBDli+1zKtJKzqQC0r6dBCuE 2JTSHHyHym7dfgRzLUjmZ+CmRxhGxm2lmwPHuStj7nJ3HjnjO6jpjE+T+y1m/ZIWW6/XrvcdahM MPXE6yAug+7ro8kK8i7iVKmFAvJLGleTcIfwxrXRef7kQBgo= X-Received: by 2002:a5d:5f53:0:b0:43e:a69b:d810 with SMTP id ffacd0b85a97d-4515d9a0839mr34527754f8f.38.1778440526271; Sun, 10 May 2026 12:15:26 -0700 (PDT) X-Received: by 2002:a5d:5f53:0:b0:43e:a69b:d810 with SMTP id ffacd0b85a97d-4515d9a0839mr34527707f8f.38.1778440525714; Sun, 10 May 2026 12:15:25 -0700 (PDT) Received: from localhost (62-151-111-63.jazzfree.ya.com. [62.151.111.63]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4548e4bbebdsm21919341f8f.5.2026.05.10.12.15.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 10 May 2026 12:15:24 -0700 (PDT) From: Javier Martinez Canillas To: linux-kernel@vger.kernel.org Cc: Javier Martinez Canillas , Andrzej Hajda , David Airlie , Jernej Skrabec , Jonas Karlman , Laurent Pinchart , Luca Ceresoli , Maarten Lankhorst , Maxime Ripard , Neil Armstrong , Phong LE , Robert Foss , Simona Vetter , Thomas Zimmermann , dri-devel@lists.freedesktop.org Subject: [PATCH 1/3] drm/bridge: it66121: Add bridge_to_it66121_ctx() helper Date: Sun, 10 May 2026 21:14:47 +0200 Message-ID: <20260510191459.90769-2-javierm@redhat.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260510191459.90769-1-javierm@redhat.com> References: <20260510191459.90769-1-javierm@redhat.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The driver just calls container_of() to obtain the it66121_ctx from a drm_bridge, but follow the convention of other bridge drivers and add a helper function to wrap this duplicated logic. No functional change. Assisted-by: Cursor:claude-4.6-opus Signed-off-by: Javier Martinez Canillas --- drivers/gpu/drm/bridge/ite-it66121.c | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/drm/bridge/ite-it66121.c b/drivers/gpu/drm/bridge/= ite-it66121.c index 19a027d75b61..038a67a32e39 100644 --- a/drivers/gpu/drm/bridge/ite-it66121.c +++ b/drivers/gpu/drm/bridge/ite-it66121.c @@ -315,6 +315,11 @@ struct it66121_ctx { enum chip_id id; }; =20 +static inline struct it66121_ctx *bridge_to_it66121_ctx(struct drm_bridge = *bridge) +{ + return container_of(bridge, struct it66121_ctx, bridge); +} + static const struct regmap_range_cfg it66121_regmap_banks[] =3D { { .name =3D "it66121", @@ -589,7 +594,7 @@ static int it66121_bridge_attach(struct drm_bridge *bri= dge, struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { - struct it66121_ctx *ctx =3D container_of(bridge, struct it66121_ctx, brid= ge); + struct it66121_ctx *ctx =3D bridge_to_it66121_ctx(bridge); int ret; =20 if (!(flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR)) @@ -700,7 +705,7 @@ static u32 *it66121_bridge_atomic_get_input_bus_fmts(st= ruct drm_bridge *bridge, u32 output_fmt, unsigned int *num_input_fmts) { - struct it66121_ctx *ctx =3D container_of(bridge, struct it66121_ctx, brid= ge); + struct it66121_ctx *ctx =3D bridge_to_it66121_ctx(bridge); u32 *input_fmts; =20 *num_input_fmts =3D 0; @@ -724,7 +729,7 @@ static u32 *it66121_bridge_atomic_get_input_bus_fmts(st= ruct drm_bridge *bridge, static void it66121_bridge_enable(struct drm_bridge *bridge, struct drm_atomic_commit *state) { - struct it66121_ctx *ctx =3D container_of(bridge, struct it66121_ctx, brid= ge); + struct it66121_ctx *ctx =3D bridge_to_it66121_ctx(bridge); =20 ctx->connector =3D drm_atomic_get_new_connector_for_encoder(state, bridge= ->encoder); =20 @@ -734,7 +739,7 @@ static void it66121_bridge_enable(struct drm_bridge *br= idge, static void it66121_bridge_disable(struct drm_bridge *bridge, struct drm_atomic_commit *state) { - struct it66121_ctx *ctx =3D container_of(bridge, struct it66121_ctx, brid= ge); + struct it66121_ctx *ctx =3D bridge_to_it66121_ctx(bridge); =20 it66121_set_mute(ctx, true); =20 @@ -746,7 +751,7 @@ static int it66121_bridge_check(struct drm_bridge *brid= ge, struct drm_crtc_state *crtc_state, struct drm_connector_state *conn_state) { - struct it66121_ctx *ctx =3D container_of(bridge, struct it66121_ctx, brid= ge); + struct it66121_ctx *ctx =3D bridge_to_it66121_ctx(bridge); =20 if (ctx->id =3D=3D ID_IT6610) { /* The IT6610 only supports these settings */ @@ -765,7 +770,7 @@ void it66121_bridge_mode_set(struct drm_bridge *bridge, const struct drm_display_mode *adjusted_mode) { u8 buf[HDMI_INFOFRAME_SIZE(AVI)]; - struct it66121_ctx *ctx =3D container_of(bridge, struct it66121_ctx, brid= ge); + struct it66121_ctx *ctx =3D bridge_to_it66121_ctx(bridge); int ret; =20 mutex_lock(&ctx->lock); @@ -829,7 +834,7 @@ static enum drm_mode_status it66121_bridge_mode_valid(s= truct drm_bridge *bridge, const struct drm_display_info *info, const struct drm_display_mode *mode) { - struct it66121_ctx *ctx =3D container_of(bridge, struct it66121_ctx, brid= ge); + struct it66121_ctx *ctx =3D bridge_to_it66121_ctx(bridge); unsigned long max_clock; =20 max_clock =3D (ctx->bus_width =3D=3D 12) ? 74250 : 148500; @@ -846,7 +851,7 @@ static enum drm_mode_status it66121_bridge_mode_valid(s= truct drm_bridge *bridge, static enum drm_connector_status it66121_bridge_detect(struct drm_bridge *bridge, struct drm_connector *con= nector) { - struct it66121_ctx *ctx =3D container_of(bridge, struct it66121_ctx, brid= ge); + struct it66121_ctx *ctx =3D bridge_to_it66121_ctx(bridge); =20 return it66121_is_hpd_detect(ctx) ? connector_status_connected : connector_status_disconnected; @@ -854,7 +859,7 @@ it66121_bridge_detect(struct drm_bridge *bridge, struct= drm_connector *connector =20 static void it66121_bridge_hpd_enable(struct drm_bridge *bridge) { - struct it66121_ctx *ctx =3D container_of(bridge, struct it66121_ctx, brid= ge); + struct it66121_ctx *ctx =3D bridge_to_it66121_ctx(bridge); int ret; =20 ret =3D regmap_write_bits(ctx->regmap, IT66121_INT_MASK1_REG, IT66121_INT= _MASK1_HPD, 0); @@ -864,7 +869,7 @@ static void it66121_bridge_hpd_enable(struct drm_bridge= *bridge) =20 static void it66121_bridge_hpd_disable(struct drm_bridge *bridge) { - struct it66121_ctx *ctx =3D container_of(bridge, struct it66121_ctx, brid= ge); + struct it66121_ctx *ctx =3D bridge_to_it66121_ctx(bridge); int ret; =20 ret =3D regmap_write_bits(ctx->regmap, IT66121_INT_MASK1_REG, @@ -876,7 +881,7 @@ static void it66121_bridge_hpd_disable(struct drm_bridg= e *bridge) static const struct drm_edid *it66121_bridge_edid_read(struct drm_bridge *= bridge, struct drm_connector *connector) { - struct it66121_ctx *ctx =3D container_of(bridge, struct it66121_ctx, brid= ge); + struct it66121_ctx *ctx =3D bridge_to_it66121_ctx(bridge); const struct drm_edid *drm_edid; int ret; =20 --=20 2.54.0 From nobody Sat Jun 13 04:48:47 2026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D55C3238150 for ; Sun, 10 May 2026 19:15:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778440536; cv=none; b=i91RFjzu7tF8IOKTCT0vmfFAZNu1JB/1drmZtUyTOjUmyofmRTvkb6hBo3ydsJNHP0LtUd4DkToT61n+D3vLSABdFUB1pCIJooeIcEQm2e7TSyBp/6fMY8LmtGtUEbVTmaKqG9jqDSIzUPoIkaswM1BamANG5BXg8ne6LQ1lOUE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778440536; c=relaxed/simple; bh=Ycas6jyhkFIEFANM+2Zr6NXcUnTXZqEeWi0HdUuBU5Y=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=IjIdQvJGmeQhitLNuDHFnzBa+dOt82I4NLjvU58Km9qExA0/5khDkf+a3/VIjA6KhVORsJt0VUv28HsiOe93vnt8eppQ476dqW6ilZwsjd/APgnUjGLynSNKB4dV6Lux/snbo8+usGd54/2hI2fnS2DvbVjriZ6N/VJDz+49OgA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=OR8aIqcw; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=UDSMQnSO; arc=none smtp.client-ip=170.10.133.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="OR8aIqcw"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="UDSMQnSO" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1778440533; 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=B5GqCf5R+p7fabe4GDp9/SkqKKTHiUv88WJZ+GaLKk0=; b=OR8aIqcwl1lxf/ry7LaCPW747H0Y4tMRPmrvwRquaNmagGvBE2961G/jgz/Vz/RMJfyVqg 6bH+VWnEMMqTYasjTNQ5XWXJcOVQnqRltMvpsRuKu9qPA0nEQ6uJFG1bQD+pQEjhxU9IXH vkIuHa4KapjH9zb4RMRcKnkGMnwG40A= Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-294-M1p0rw_1NHinKjP8agHhNg-1; Sun, 10 May 2026 15:15:32 -0400 X-MC-Unique: M1p0rw_1NHinKjP8agHhNg-1 X-Mimecast-MFC-AGG-ID: M1p0rw_1NHinKjP8agHhNg_1778440531 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-488bd1ee9e7so39229575e9.1 for ; Sun, 10 May 2026 12:15:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1778440531; x=1779045331; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=B5GqCf5R+p7fabe4GDp9/SkqKKTHiUv88WJZ+GaLKk0=; b=UDSMQnSOEILi66TCGcnetvfGe2+hLz5stp8mTfasSFYXdQ52MzwSCaDPYQdfYAZu05 22L16AbWp5fwwgvqKgFGGAU9i1fx/PboX1sX+hEflWHfn/O9Dn/uMuTcddFwLw59lYzZ Hyv2BOQulJTaJBUjvV9n8OC0029UlhOohOGdd+ODJP+gfI6aWG4B3/ArMfPL6UfLGlST llHkfhR1l5CJWV/jZVuKklPqRDr7N/bR0PzWDPvtFBv/rN7QoVzcuO3lDGCiua3ysRhZ Mfj3hxMamFqfB8/9hwlnVPyK24y9512ZM9q6ouT1Yil+2JQ3Tmd5MTr3ThsrA4UCvSxM 6Rpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778440531; x=1779045331; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=B5GqCf5R+p7fabe4GDp9/SkqKKTHiUv88WJZ+GaLKk0=; b=n8dYLgKFS0YoVRpnJZ5/lMRKO7m8uoUmpRh/2/bwLwyIzDKqA/3FOhf0uW7jfzS2lm UmJ5rVZ7H3RCuD8No/Y8RJIXEcPAPV8eDkpxWlpbVqumz5PHesAdpiUMIXxk/vcB2ILd 2x0gFOkf2gBA5MamCGEjTFKnnOEfeph2tQPDrP2yTPyrRhfqfTjB8QEmjFhrT3s2CGxl dJHZBlL3jciS+ad4Fva/7/z1WNuWlPuH3glEDZH2it/COJDfUh4ArR6dCVE1y/pXiPL4 kbLj6TjaEJB3CPjdr7/x9Xggvmc+bokuf8hnlPTUfjJlJ+4Uz5o0xVcixJUqiolzgE/1 fRjQ== X-Gm-Message-State: AOJu0Yz8ZULcFOueO4FFgENjedGFeMx1XYyuwRW0Yyq4cVmFma3X4g3e ERejQH+k2IIX2zT2hGWsvCdPQOTfqIvql8xLKclfP5e3fA4DO975CgdalaNfOm8Kh/MzYANMVjm P303Tp/yO777XlWX3prO5GzPyvcPTnxjmKHvn4NG1plKui4Wt7fqJr3VtGsL+TBjJg3ZyvFiB2f hIXqZOhjo971IGwTVsrODx8rmVbfTseLPjmYCpn9cS0h6hkitp X-Gm-Gg: Acq92OGk0h681U5/yb2GmE3OnwPK+JjCiGrBtDE7grAR1mTOIfTNFsROcTyfpBJBw5e 2ojlw0i7DP4WiX2Hiam2mMXxD+EXWxj5hYnotOMwNZYCe+l3j8miSnd2ILa0v8VN6Y/krwIjmLD UnnLPpBD/K7a9/oqLeC7I9q/hzsMtRslUS8tbRfhaLcVMYd3Fo5UxG2bPuMFPAKcjDJzrSuHPDk 5A/iqgBPJ4/uJz6ni57TlUP6dExhYSMgNa9GvgguoYszNyPT3ae3SXEuy6+tFg56CbxrI3GEHmx SarH0kX9G0DqDU1d/AHNWnIKtrw5elpkcHHP0h7Caie1x/MbgJvvvCL+JYSU4KzrkeyjEW2xiCS ak1OXJbcp4Y0AwqeypHDhrF+c1G0aHi3FLdlhStKG27Re6Ha/fxfc4W7ngA== X-Received: by 2002:a05:600c:c11c:b0:48a:6315:da26 with SMTP id 5b1f17b1804b1-48e70804097mr77660785e9.26.1778440530849; Sun, 10 May 2026 12:15:30 -0700 (PDT) X-Received: by 2002:a05:600c:c11c:b0:48a:6315:da26 with SMTP id 5b1f17b1804b1-48e70804097mr77660435e9.26.1778440530284; Sun, 10 May 2026 12:15:30 -0700 (PDT) Received: from localhost (62-151-111-63.jazzfree.ya.com. [62.151.111.63]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45492271510sm24198854f8f.37.2026.05.10.12.15.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 10 May 2026 12:15:28 -0700 (PDT) From: Javier Martinez Canillas To: linux-kernel@vger.kernel.org Cc: Javier Martinez Canillas , Andrzej Hajda , David Airlie , Jernej Skrabec , Jonas Karlman , Laurent Pinchart , Luca Ceresoli , Maarten Lankhorst , Maxime Ripard , Neil Armstrong , Phong LE , Robert Foss , Simona Vetter , Thomas Zimmermann , dri-devel@lists.freedesktop.org Subject: [PATCH 2/3] drm/bridge: it66121: Add bridge-private atomic state Date: Sun, 10 May 2026 21:14:48 +0200 Message-ID: <20260510191459.90769-3-javierm@redhat.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260510191459.90769-1-javierm@redhat.com> References: <20260510191459.90769-1-javierm@redhat.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" In preparation to support per-state configuration during atomic commits, add a private bridge state data structure and access helpers. This will be needed to store the display information sink mode, to determine if a connector is HDMI or DVI. No functional change. Assisted-by: Cursor:claude-4.6-opus Signed-off-by: Javier Martinez Canillas --- drivers/gpu/drm/bridge/ite-it66121.c | 42 ++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/bridge/ite-it66121.c b/drivers/gpu/drm/bridge/= ite-it66121.c index 038a67a32e39..a203c94a27e5 100644 --- a/drivers/gpu/drm/bridge/ite-it66121.c +++ b/drivers/gpu/drm/bridge/ite-it66121.c @@ -320,6 +320,44 @@ static inline struct it66121_ctx *bridge_to_it66121_ct= x(struct drm_bridge *bridg return container_of(bridge, struct it66121_ctx, bridge); } =20 +struct it66121_bridge_state { + struct drm_bridge_state base; +}; + +static inline struct it66121_bridge_state * +to_it66121_bridge_state(struct drm_bridge_state *state) +{ + return container_of(state, struct it66121_bridge_state, base); +} + +static struct drm_bridge_state * +it66121_bridge_atomic_duplicate_state(struct drm_bridge *bridge) +{ + struct it66121_bridge_state *state; + + state =3D kzalloc_obj(*state); + if (!state) + return NULL; + + __drm_atomic_helper_bridge_duplicate_state(bridge, &state->base); + + return &state->base; +} + +static struct drm_bridge_state * +it66121_bridge_atomic_reset(struct drm_bridge *bridge) +{ + struct it66121_bridge_state *state; + + state =3D kzalloc_obj(*state); + if (!state) + return NULL; + + __drm_atomic_helper_bridge_reset(bridge, &state->base); + + return &state->base; +} + static const struct regmap_range_cfg it66121_regmap_banks[] =3D { { .name =3D "it66121", @@ -908,9 +946,9 @@ static const struct drm_edid *it66121_bridge_edid_read(= struct drm_bridge *bridge } =20 static const struct drm_bridge_funcs it66121_bridge_funcs =3D { - .atomic_duplicate_state =3D drm_atomic_helper_bridge_duplicate_state, + .atomic_duplicate_state =3D it66121_bridge_atomic_duplicate_state, .atomic_destroy_state =3D drm_atomic_helper_bridge_destroy_state, - .atomic_reset =3D drm_atomic_helper_bridge_reset, + .atomic_reset =3D it66121_bridge_atomic_reset, .attach =3D it66121_bridge_attach, .atomic_get_output_bus_fmts =3D it66121_bridge_atomic_get_output_bus_fmts, .atomic_get_input_bus_fmts =3D it66121_bridge_atomic_get_input_bus_fmts, --=20 2.54.0 From nobody Sat Jun 13 04:48:47 2026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A2B873BB40 for ; Sun, 10 May 2026 19:15:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778440539; cv=none; b=l69V39dYxmykvE1BN/erEf4CqOQIQuQYNLCqRi46Op86iVwAeWhRc9BPvJ9Xrldt4r3eXkKjS1Gwod50cDnZRWzESNa2gCYK9NTYrgywoH3a4ln/i66YQlxbCwuUXeYtfmfEMBYJPf/r/EOmVBJ069yUfKzo4RIjYZz684fKUT4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778440539; c=relaxed/simple; bh=EUQ4ryCMXjHWp8p6kKTordGEHf+D1kGBWvhnhot4NA0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=AlZKRER6fNMs1SIsE4Y9tQQvluXkUnfbn9qqfU39JLd6lGilImpn3jF1efE84qpC0mJ0T9MIkAcs7UDgiejUo5me3Sqr7vY4p26w3ScbasonkIIYpqSsDaGJoQ3niyIFU72QNl2g+PwLgqOpiypsLNraWi03tj/jxvf4wrw5/Co= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=EYNCHrI8; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=GpouMj8G; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="EYNCHrI8"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="GpouMj8G" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1778440536; 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=D2HWKQFo0Wy5+aYZ6lPgr+vjevQgXgZHh6o51C0aBUU=; b=EYNCHrI82MBUE8YJk2xFvpK+4vOdJnkaSyd+Es8AO6W8Nu+zWsfUd3tdS+HuPBRAotBFBc Jwz0z5P8Ie7tTQsS0zcTFPRN3Xkx3FRHd3a7/0WWq5F1dsSzCVn6AhI/FieJFCZDWe5Mbn 9F+UE5+t8Zn+LG16PjD7AsqlAkI9K1g= Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-373-YnEDiwOvMmO29BfX7mmw1g-1; Sun, 10 May 2026 15:15:35 -0400 X-MC-Unique: YnEDiwOvMmO29BfX7mmw1g-1 X-Mimecast-MFC-AGG-ID: YnEDiwOvMmO29BfX7mmw1g_1778440534 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-488dcaf2f2fso28175605e9.0 for ; Sun, 10 May 2026 12:15:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1778440533; x=1779045333; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=D2HWKQFo0Wy5+aYZ6lPgr+vjevQgXgZHh6o51C0aBUU=; b=GpouMj8GvVTpmExaRy+GvkEBNlIIPTUsEseiHcUS/ePJCAMYhR5yYyTrlKZ8dSNtAx v9IHQ9thM4b8A1uxXvEhbSAHXI+hq5Zf9dt0WIGaugRxiTf6GFUJ6olhxC63FPOsUBw+ NKk5yWLvQbcMVCdzH8LphdH5Z1OXN1DO73S38baXi55zMDfk07D//4hiWaDVSiKT0ufP eaywX7ZyZ4LGCgHdX285pxoD7cb7U66p7Ab6MCR770UhJXMbdX5hme6VSPJJ0JLP3AfS yp4mW3ykr0XHamAaPR7qM8tKoFhqKZM2Gz0sZuF/iKmbxv8ij4g+P4IYi1Ufc3sQJbSm KhJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778440533; x=1779045333; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=D2HWKQFo0Wy5+aYZ6lPgr+vjevQgXgZHh6o51C0aBUU=; b=X80edIfYeiGblhtZB7/gyIrhJoEa/9gG5KNT1/Ek3X7UQKLR2NZZgkpu7yde8Atldz iMp5ao3+grvp4BdTLmEapPba6zdWRnsHxqoP6r+6iWF2OP3ZmcCF254CpONSDjglaApV 5FMNVkNn2TnBDPpi8YVCMXNLgZP7aaVhKfdQRMiRyvRRLAHmQ5PCR6kqpkHwwsGl7aGR 20NYv/R3xfDZV9YQFr6BxrixdpLD6t8oM171f5QHbCCXnGgtsEi2Js2+DSFU2j14Bjzw cP/ETsLQ3b6R2dH0vqZqOWxLCsglJ0vRL1vAgRqCzGQvjMBX0f/99LTjSRIAS2izOAfD zdDg== X-Gm-Message-State: AOJu0YytlSH45fsvcJYpHSoxMqGbGFFITUvHcqoeTtc4vnipE3F32nad X42A2BwRJx4SSxiBLw13svIkhmjQBuGE11ZmJGr3an177uTAVjaIto8DjN3rMjD/jY19GvrCEIk PGJBjhKyJnC6zearnqCzLfXUUyUM3xECScNVBppHoX1/WiXe54VRxz4+3SbymnHI8DR7L2iGPp0 bKa+vvgnqYJgTPOrMD2TLmys/djUeNXXb2pDEJ9YdIYHo1itdE X-Gm-Gg: Acq92OHTCPjRTCp62bJLLzt9MG+5i6ylsgqpxkupHA0gokZS6sAHD2D4Not1x6q+jy1 pb2Jj7+GWijSqYRvMa0sZjYoy1H2Um8itIF5At7Dp01cfwA1k8exyw/UCk6ElzLdaZVjA/e+poP tkkdS1+J/z3NmXcTUM8Q973QfmpbeOgig9aDyj+28hLajzZ2y83zqldymRrzPcnQ58+J0wVOCK7 DPjXDwUpxpUhbJR8zDkqLJ7xz1irT0AhQdCeTWMUqLktXPb0VDsj46VhEwHelD5MgqoTB1nXFno qEVNF8SrqhiNhcHFvyYymRHw/c33T5+CiFjGeQTylUsyUi1o95ncarKmAgg6o3jGKrHvvYc976O psMo3HcybxB9gpem7YTXagM52+OhllPXdSMTN1EiDwqfloh8= X-Received: by 2002:a05:600c:34cd:b0:48e:707f:cdfd with SMTP id 5b1f17b1804b1-48e707fce07mr120219605e9.2.1778440533150; Sun, 10 May 2026 12:15:33 -0700 (PDT) X-Received: by 2002:a05:600c:34cd:b0:48e:707f:cdfd with SMTP id 5b1f17b1804b1-48e707fce07mr120219265e9.2.1778440532660; Sun, 10 May 2026 12:15:32 -0700 (PDT) Received: from localhost (62-151-111-63.jazzfree.ya.com. [62.151.111.63]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48e6fffb9bdsm124059865e9.1.2026.05.10.12.15.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 10 May 2026 12:15:31 -0700 (PDT) From: Javier Martinez Canillas To: linux-kernel@vger.kernel.org Cc: Javier Martinez Canillas , Andrzej Hajda , David Airlie , Jernej Skrabec , Jonas Karlman , Laurent Pinchart , Luca Ceresoli , Maarten Lankhorst , Maxime Ripard , Neil Armstrong , Phong LE , Robert Foss , Simona Vetter , Thomas Zimmermann , dri-devel@lists.freedesktop.org Subject: [PATCH 3/3] drm/bridge: it66121: Select HDMI or DVI mode based on sink type Date: Sun, 10 May 2026 21:14:49 +0200 Message-ID: <20260510191459.90769-4-javierm@redhat.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260510191459.90769-1-javierm@redhat.com> References: <20260510191459.90769-1-javierm@redhat.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Currently, the driver assumes that the connector sink type is always HDMI and configures the IT66121 bridge appropriately. But configuring in this mode and enabling the transmission of AVI infoframe packets can cause DVI monitors to fail parsing the video signal. To prevent this, store the connector display information sink type in the bridge atomic state and use it to decide whether the bridge should be set in HDMI or DVI mode, and if the AVI infoframes packets should be sent. Assisted-by: Cursor:claude-4.6-opus Signed-off-by: Javier Martinez Canillas --- drivers/gpu/drm/bridge/ite-it66121.c | 68 ++++++++++++++++++---------- 1 file changed, 44 insertions(+), 24 deletions(-) diff --git a/drivers/gpu/drm/bridge/ite-it66121.c b/drivers/gpu/drm/bridge/= ite-it66121.c index a203c94a27e5..99088277d170 100644 --- a/drivers/gpu/drm/bridge/ite-it66121.c +++ b/drivers/gpu/drm/bridge/ite-it66121.c @@ -322,6 +322,7 @@ static inline struct it66121_ctx *bridge_to_it66121_ctx= (struct drm_bridge *bridg =20 struct it66121_bridge_state { struct drm_bridge_state base; + bool sink_is_hdmi; }; =20 static inline struct it66121_bridge_state * @@ -790,6 +791,14 @@ static int it66121_bridge_check(struct drm_bridge *bri= dge, struct drm_connector_state *conn_state) { struct it66121_ctx *ctx =3D bridge_to_it66121_ctx(bridge); + struct it66121_bridge_state *state =3D + to_it66121_bridge_state(bridge_state); + + /* Default to HDMI to preserve legacy behavior. */ + state->sink_is_hdmi =3D true; + + if (conn_state && conn_state->connector) + state->sink_is_hdmi =3D conn_state->connector->display_info.is_hdmi; =20 if (ctx->id =3D=3D ID_IT6610) { /* The IT6610 only supports these settings */ @@ -809,40 +818,51 @@ void it66121_bridge_mode_set(struct drm_bridge *bridg= e, { u8 buf[HDMI_INFOFRAME_SIZE(AVI)]; struct it66121_ctx *ctx =3D bridge_to_it66121_ctx(bridge); + struct drm_bridge_state *bridge_state =3D + drm_priv_to_bridge_state(bridge->base.state); + struct it66121_bridge_state *state =3D + to_it66121_bridge_state(bridge_state); + unsigned int hdmi_mode =3D state->sink_is_hdmi ? + IT66121_HDMI_MODE_HDMI : 0; + unsigned int avi_pkt =3D 0; int ret; =20 mutex_lock(&ctx->lock); =20 - ret =3D drm_hdmi_avi_infoframe_from_display_mode(&ctx->hdmi_avi_infoframe= , ctx->connector, - adjusted_mode); - if (ret) { - DRM_ERROR("Failed to setup AVI infoframe: %d\n", ret); - goto unlock; - } + if (hdmi_mode) { + ret =3D drm_hdmi_avi_infoframe_from_display_mode(&ctx->hdmi_avi_infofram= e, + ctx->connector, + adjusted_mode); + if (ret) { + DRM_ERROR("Failed to setup AVI infoframe: %d\n", ret); + goto unlock; + } =20 - ret =3D hdmi_avi_infoframe_pack(&ctx->hdmi_avi_infoframe, buf, sizeof(buf= )); - if (ret < 0) { - DRM_ERROR("Failed to pack infoframe: %d\n", ret); - goto unlock; - } + ret =3D hdmi_avi_infoframe_pack(&ctx->hdmi_avi_infoframe, buf, sizeof(bu= f)); + if (ret < 0) { + DRM_ERROR("Failed to pack infoframe: %d\n", ret); + goto unlock; + } =20 - /* Write new AVI infoframe packet */ - ret =3D regmap_bulk_write(ctx->regmap, IT66121_AVIINFO_DB1_REG, - &buf[HDMI_INFOFRAME_HEADER_SIZE], - HDMI_AVI_INFOFRAME_SIZE); - if (ret) - goto unlock; + /* Write new AVI infoframe packet */ + ret =3D regmap_bulk_write(ctx->regmap, IT66121_AVIINFO_DB1_REG, + &buf[HDMI_INFOFRAME_HEADER_SIZE], + HDMI_AVI_INFOFRAME_SIZE); + if (ret) + goto unlock; =20 - if (regmap_write(ctx->regmap, IT66121_AVIINFO_CSUM_REG, buf[3])) - goto unlock; + if (regmap_write(ctx->regmap, IT66121_AVIINFO_CSUM_REG, buf[3])) + goto unlock; + + avi_pkt =3D IT66121_AVI_INFO_PKT_ON | IT66121_AVI_INFO_PKT_RPT; + } =20 - /* Enable AVI infoframe */ - if (regmap_write(ctx->regmap, IT66121_AVI_INFO_PKT_REG, - IT66121_AVI_INFO_PKT_ON | IT66121_AVI_INFO_PKT_RPT)) + /* Enable or disable AVI infoframe */ + if (regmap_write(ctx->regmap, IT66121_AVI_INFO_PKT_REG, avi_pkt)) goto unlock; =20 - /* Set TX mode to HDMI */ - if (regmap_write(ctx->regmap, IT66121_HDMI_MODE_REG, IT66121_HDMI_MODE_HD= MI)) + /* Set TX mode to HDMI or DVI */ + if (regmap_write(ctx->regmap, IT66121_HDMI_MODE_REG, hdmi_mode)) goto unlock; =20 if ((ctx->id =3D=3D ID_IT66121 || ctx->id =3D=3D ID_IT66122) && --=20 2.54.0