From patchwork Tue Nov 14 15:01:23 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sui Jingfeng X-Patchwork-Id: 164981 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:6358:a59:b0:164:83eb:24d7 with SMTP id 25csp1987082rwb; Tue, 14 Nov 2023 07:10:05 -0800 (PST) X-Google-Smtp-Source: AGHT+IHf52xc7iCCZkeMOptrLfXlI3nsPiI8vBbl3aXPpTQAtBg54kC+dAal2XDHoaV7CVAhonCT X-Received: by 2002:a17:90a:9282:b0:280:74e7:9284 with SMTP id n2-20020a17090a928200b0028074e79284mr3988378pjo.21.1699974605202; Tue, 14 Nov 2023 07:10:05 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699974605; cv=none; d=google.com; s=arc-20160816; b=bee5thMGfH/o1SIoGJIw+2jdJZ/BMeM9LYXelOzV4VzaPH+wQECJHvJIsRkKftdSck XaBPH7ssWa9EhGPrMmiXO9me/r9a489Z5ISU1fYxe4WUVMHbgDokT5PYt79kYjjF617d ZLeZW1A4SZPSwIboiNz0CCv1yloP6SMGApu5B2x4/DrUNMmm7/rTYD4xwTlMpgRaCM2K 7L6qR5zAqbAP5g2qZRCIC6xFZRCDJTqrnXv04SX5od97eOX9y3BZ9lpsosvodvII6Bzo +9Vrv1N88ChY8f2h817hSDz71K1I5M0NLMHozf2/UPTSwi+v3KrQ4dUNfdb74Dypg0Q/ T9EQ== 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=RX2Fmd7n/lPyGrqbFE5Q/i0VXpKAAer+IRR7UyADmdM=; fh=AsQUxY17UP4I4ANjAjzQGhV+/8Tz+vG6DJFG+Cn0IYE=; b=bcBvLpdX48Rep9r1P1dCw7/JT/hRjKJXO7c+XmLbZPhpxL4xo+t8ptPpo4Lr2WFnkm /kaUNfHExAin7ctWoNHUMxRvstgW8gpdACLGpTZpo3kIis8iHktu7TUTpTxtq7VHvZug yHHd5msvI/WdHMpjNo4Hl5c5eI39L83BQLgNfeXOM9g9h0P54M3Wh5pCtArz/dP41IW+ mv/bKQPg+wzc5gZVfRl+wb2teX5EfrkjHEi8lYubbDF8pmYqHqFac9e0+7sWEhw17YlD +J40DGzwdvwPC7xrE2ILt68XC5k+1HIkf7Rm0Ljvmpr9T0kMnVE3jGiCx6UiPjB1IyaC RRtw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=klKW73ka; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id pj6-20020a17090b4f4600b002774ecb2ecdsi8857082pjb.19.2023.11.14.07.10.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Nov 2023 07:10:05 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=klKW73ka; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 4306B810673A; Tue, 14 Nov 2023 07:10:01 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233612AbjKNPJu (ORCPT + 29 others); Tue, 14 Nov 2023 10:09:50 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39872 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233462AbjKNPJh (ORCPT ); Tue, 14 Nov 2023 10:09:37 -0500 Received: from out-171.mta1.migadu.com (out-171.mta1.migadu.com [95.215.58.171]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A91A51B6 for ; Tue, 14 Nov 2023 07:09:32 -0800 (PST) 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=linux.dev; s=key1; t=1699974120; 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=RX2Fmd7n/lPyGrqbFE5Q/i0VXpKAAer+IRR7UyADmdM=; b=klKW73kaFsLVaV8jy29fj+SNcq26CObnK9T7ZK0lbfaiZ9pJIWcWc3+wTt5eXRI9KAA9IR rUls9elRnQaFDjw61cap3rSDs05hBsnaiPASNuG2NcT5drLy2PiqB1Qa4EAtQDJuokeQSz y7hD8OiSWR6bdBFVNwZjIHmcC2KkW3s= From: Sui Jingfeng To: Phong LE , Neil Armstrong Cc: Laurent Pinchart , Maxime Ripard , Thomas Zimmermann , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Sui Jingfeng Subject: [PATCH 1/8] drm/bridge: it66121: Use dev replace ctx->dev in the it66121_probe() Date: Tue, 14 Nov 2023 23:01:23 +0800 Message-Id: <20231114150130.497915-2-sui.jingfeng@linux.dev> In-Reply-To: <20231114150130.497915-1-sui.jingfeng@linux.dev> References: <20231114150130.497915-1-sui.jingfeng@linux.dev> MIME-Version: 1.0 X-Migadu-Flow: FLOW_OUT X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE 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 X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Tue, 14 Nov 2023 07:10:02 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782552571232144345 X-GMAIL-MSGID: 1782552571232144345 From: Sui Jingfeng As the value of 'ctx->dev' has already been cached to the local variable 'dev', so keep the usage consistent. Just trivial cleanup, no functional change. Signed-off-by: Sui Jingfeng Reviewed-by: Dmitry Baryshkov --- drivers/gpu/drm/bridge/ite-it66121.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/bridge/ite-it66121.c b/drivers/gpu/drm/bridge/ite-it66121.c index 1cf3fb1f13dc..6e5c10cfa0bc 100644 --- a/drivers/gpu/drm/bridge/ite-it66121.c +++ b/drivers/gpu/drm/bridge/ite-it66121.c @@ -1536,20 +1536,20 @@ static int it66121_probe(struct i2c_client *client) ep = of_graph_get_remote_node(dev->of_node, 1, -1); if (!ep) { - dev_err(ctx->dev, "The endpoint is unconnected\n"); + dev_err(dev, "The endpoint is unconnected\n"); return -EINVAL; } if (!of_device_is_available(ep)) { of_node_put(ep); - dev_err(ctx->dev, "The remote device is disabled\n"); + dev_err(dev, "The remote device is disabled\n"); return -ENODEV; } ctx->next_bridge = of_drm_find_bridge(ep); of_node_put(ep); if (!ctx->next_bridge) { - dev_dbg(ctx->dev, "Next bridge not found, deferring probe\n"); + dev_dbg(dev, "Next bridge not found, deferring probe\n"); return -EPROBE_DEFER; } @@ -1599,7 +1599,7 @@ static int it66121_probe(struct i2c_client *client) drm_bridge_add(&ctx->bridge); - dev_info(ctx->dev, "IT66121 revision %d probed\n", revision_id); + dev_info(dev, "IT66121 revision %d probed\n", revision_id); return 0; } From patchwork Tue Nov 14 15:01:24 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sui Jingfeng X-Patchwork-Id: 164985 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:6358:a59:b0:164:83eb:24d7 with SMTP id 25csp1987913rwb; Tue, 14 Nov 2023 07:11:09 -0800 (PST) X-Google-Smtp-Source: AGHT+IFl5oGgw26UXGNKbHKqxCdLHsMXfaBi10HGvJoM+6PAFLnRMJbe8qU6fxztrZeyeIg9mJKs X-Received: by 2002:a17:90b:1bc2:b0:281:5550:ce3d with SMTP id oa2-20020a17090b1bc200b002815550ce3dmr7955405pjb.31.1699974668850; Tue, 14 Nov 2023 07:11:08 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699974668; cv=none; d=google.com; s=arc-20160816; b=huRZUR9wIGWZxx2QXeuPLiYWorMVeBMHFVTkDZIr8xcBWKxGn6ri8cIeHvCU36oLHD jtelPVZllblxNYbiNyu8l0in35HUefjdJEM+Nh425TWDe6zpMar/d55t/n5Znhtq1or/ rfz6aZYDBEYxNzS0sDdi1w3LvSHmhGUBtwL/z8sT1ztkKG1fvi8x9NEx4eK6VRclmXY/ zEaIFpwD0yIptQclK5+4aC/yuXsa/fObtICjkIfPGjhp51yRiRv0UcNJDfS/knmydZTe +wgw1Hb2aNDf6RY99pxwxXfPt103BxNV0Ss/zO5J8KjCDoTRS/qOX7XAUxvz485mTQFY IiMw== 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=4/AJQfUuyoCHR0j5BR2C2vklNLNE7s2XZrrtydJkf1Y=; fh=AsQUxY17UP4I4ANjAjzQGhV+/8Tz+vG6DJFG+Cn0IYE=; b=CLb0eQ7Q1jxHMAwlQ6U+EswvNBZ2KqcREQzLskNtHteMDhshrY0MQLKJJAA3CmbH5D ty5R+dGOJmssOP7Ji7JEADVFjqcS1gIfTdmkLXQd6K3ztISaEjs/U7sg1tL31h79CBYU 0j3022TKnm6V7MV/3k5jHeesY8YBOcpjhoSikn/lnxS98VoJ07GbPFZJT13UB6gpwzBz JIdFHt3yCQwT0R9gU5zjT+UQXFLzr9nQ13cOjTLsu6ox4WMbwSNemwJ3uMN3ZJ33QPY+ AdocMk4oRoER/0wfUPw2ZvbnC03w1++hffyfuA5JpQ4XSGJ+dA1oPwaLy026GRAsH5MM mBpA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=GbeqzuX9; 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=NONE sp=NONE dis=NONE) header.from=linux.dev Received: from lipwig.vger.email (lipwig.vger.email. [23.128.96.33]) by mx.google.com with ESMTPS id c4-20020a17090ad90400b0027d60ad5caesi8226408pjv.110.2023.11.14.07.11.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Nov 2023 07:11:08 -0800 (PST) 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=@linux.dev header.s=key1 header.b=GbeqzuX9; 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=NONE sp=NONE dis=NONE) header.from=linux.dev Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id 5F57D80310F2; Tue, 14 Nov 2023 07:10:17 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233569AbjKNPJp (ORCPT + 29 others); Tue, 14 Nov 2023 10:09:45 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39840 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233456AbjKNPJh (ORCPT ); Tue, 14 Nov 2023 10:09:37 -0500 Received: from out-184.mta1.migadu.com (out-184.mta1.migadu.com [95.215.58.184]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6A3B8187 for ; Tue, 14 Nov 2023 07:09:32 -0800 (PST) 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=linux.dev; s=key1; t=1699974126; 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=4/AJQfUuyoCHR0j5BR2C2vklNLNE7s2XZrrtydJkf1Y=; b=GbeqzuX9VdvKdWkR2XqDAMvGruVGq8spw3/v9UF6jqToYc3Z6Hew/hWfItzHXN0Xzk5wJD Qu/o7xOs2P/VBCJ3V5OjQ6v5AwiNp8C4t5HTkeduQYOhxoN0zK0isNsmlylCZAZn6/2x9L UxtcHTx8KMWl+yGrNIj0PtjKPD/pOIA= From: Sui Jingfeng To: Phong LE , Neil Armstrong Cc: Laurent Pinchart , Maxime Ripard , Thomas Zimmermann , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Sui Jingfeng Subject: [PATCH 2/8] drm/bridge: it66121: Add bridge_to_it66121() helper and use it Date: Tue, 14 Nov 2023 23:01:24 +0800 Message-Id: <20231114150130.497915-3-sui.jingfeng@linux.dev> In-Reply-To: <20231114150130.497915-1-sui.jingfeng@linux.dev> References: <20231114150130.497915-1-sui.jingfeng@linux.dev> MIME-Version: 1.0 X-Migadu-Flow: FLOW_OUT X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE 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]); Tue, 14 Nov 2023 07:10:17 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782552638438710588 X-GMAIL-MSGID: 1782552638438710588 From: Sui Jingfeng Instead of using the container_of() directly, which avoid the code lines too long in horizontial. Just trivial cleanup, no functional change. Signed-off-by: Sui Jingfeng Reviewed-by: Dmitry Baryshkov --- 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 6e5c10cfa0bc..83dbdbfc9ed8 100644 --- a/drivers/gpu/drm/bridge/ite-it66121.c +++ b/drivers/gpu/drm/bridge/ite-it66121.c @@ -315,6 +315,11 @@ struct it66121_ctx { const struct it66121_chip_info *info; }; +static inline struct it66121_ctx *bridge_to_it66121(struct drm_bridge *bridge) +{ + return container_of(bridge, struct it66121_ctx, bridge); +} + static const struct regmap_range_cfg it66121_regmap_banks[] = { { .name = "it66121", @@ -588,7 +593,7 @@ static bool it66121_is_hpd_detect(struct it66121_ctx *ctx) static int it66121_bridge_attach(struct drm_bridge *bridge, enum drm_bridge_attach_flags flags) { - struct it66121_ctx *ctx = container_of(bridge, struct it66121_ctx, bridge); + struct it66121_ctx *ctx = bridge_to_it66121(bridge); int ret; if (!(flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR)) @@ -699,7 +704,7 @@ static u32 *it66121_bridge_atomic_get_input_bus_fmts(struct drm_bridge *bridge, u32 output_fmt, unsigned int *num_input_fmts) { - struct it66121_ctx *ctx = container_of(bridge, struct it66121_ctx, bridge); + struct it66121_ctx *ctx = bridge_to_it66121(bridge); u32 *input_fmts; *num_input_fmts = 0; @@ -723,7 +728,7 @@ static u32 *it66121_bridge_atomic_get_input_bus_fmts(struct drm_bridge *bridge, static void it66121_bridge_enable(struct drm_bridge *bridge, struct drm_bridge_state *bridge_state) { - struct it66121_ctx *ctx = container_of(bridge, struct it66121_ctx, bridge); + struct it66121_ctx *ctx = bridge_to_it66121(bridge); struct drm_atomic_state *state = bridge_state->base.state; ctx->connector = drm_atomic_get_new_connector_for_encoder(state, bridge->encoder); @@ -734,7 +739,7 @@ static void it66121_bridge_enable(struct drm_bridge *bridge, static void it66121_bridge_disable(struct drm_bridge *bridge, struct drm_bridge_state *bridge_state) { - struct it66121_ctx *ctx = container_of(bridge, struct it66121_ctx, bridge); + struct it66121_ctx *ctx = bridge_to_it66121(bridge); it66121_set_mute(ctx, true); @@ -746,7 +751,7 @@ static int it66121_bridge_check(struct drm_bridge *bridge, struct drm_crtc_state *crtc_state, struct drm_connector_state *conn_state) { - struct it66121_ctx *ctx = container_of(bridge, struct it66121_ctx, bridge); + struct it66121_ctx *ctx = bridge_to_it66121(bridge); if (ctx->info->id == 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 = container_of(bridge, struct it66121_ctx, bridge); + struct it66121_ctx *ctx = bridge_to_it66121(bridge); int ret; mutex_lock(&ctx->lock); @@ -831,7 +836,7 @@ static enum drm_mode_status it66121_bridge_mode_valid(struct drm_bridge *bridge, const struct drm_display_info *info, const struct drm_display_mode *mode) { - struct it66121_ctx *ctx = container_of(bridge, struct it66121_ctx, bridge); + struct it66121_ctx *ctx = bridge_to_it66121(bridge); unsigned long max_clock; max_clock = (ctx->bus_width == 12) ? 74250 : 148500; @@ -847,7 +852,7 @@ static enum drm_mode_status it66121_bridge_mode_valid(struct drm_bridge *bridge, static enum drm_connector_status it66121_bridge_detect(struct drm_bridge *bridge) { - struct it66121_ctx *ctx = container_of(bridge, struct it66121_ctx, bridge); + struct it66121_ctx *ctx = bridge_to_it66121(bridge); return it66121_is_hpd_detect(ctx) ? connector_status_connected : connector_status_disconnected; @@ -855,7 +860,7 @@ static enum drm_connector_status it66121_bridge_detect(struct drm_bridge *bridge static void it66121_bridge_hpd_enable(struct drm_bridge *bridge) { - struct it66121_ctx *ctx = container_of(bridge, struct it66121_ctx, bridge); + struct it66121_ctx *ctx = bridge_to_it66121(bridge); int ret; ret = regmap_write_bits(ctx->regmap, IT66121_INT_MASK1_REG, IT66121_INT_MASK1_HPD, 0); @@ -865,7 +870,7 @@ static void it66121_bridge_hpd_enable(struct drm_bridge *bridge) static void it66121_bridge_hpd_disable(struct drm_bridge *bridge) { - struct it66121_ctx *ctx = container_of(bridge, struct it66121_ctx, bridge); + struct it66121_ctx *ctx = bridge_to_it66121(bridge); int ret; ret = regmap_write_bits(ctx->regmap, IT66121_INT_MASK1_REG, @@ -877,7 +882,7 @@ static void it66121_bridge_hpd_disable(struct drm_bridge *bridge) static struct edid *it66121_bridge_get_edid(struct drm_bridge *bridge, struct drm_connector *connector) { - struct it66121_ctx *ctx = container_of(bridge, struct it66121_ctx, bridge); + struct it66121_ctx *ctx = bridge_to_it66121(bridge); struct edid *edid; int ret; From patchwork Tue Nov 14 15:01:25 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sui Jingfeng X-Patchwork-Id: 164982 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:6358:a59:b0:164:83eb:24d7 with SMTP id 25csp1987154rwb; Tue, 14 Nov 2023 07:10:10 -0800 (PST) X-Google-Smtp-Source: AGHT+IH5hONUrjMXrsq/vicuvlnVLj5bKLA7PCezXIPFcWSrSeqA2JOHCWTVytGW0xa/KF/trdrU X-Received: by 2002:a05:6a20:2588:b0:185:b481:302b with SMTP id k8-20020a056a20258800b00185b481302bmr9056358pzd.9.1699974610585; Tue, 14 Nov 2023 07:10:10 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699974610; cv=none; d=google.com; s=arc-20160816; b=YYg4UkdA60pbEEP/ULkilb5rrEmwKDpj3q1DOOip3osA87eTe7/IVG3otqTQLVHc+a Fld+1cCWGU/T9+3Q4c+gYwbCGHpttnKKfOAL6QnTUeFariz2rwLDfCSuCHZD1msvIdNy rX1nQbnerv77NhvNk5Ks4xy8J+X97YcaioI8OMPIOc5Y9VN6gfeNvJVQod/bh+1/4jou BHw0NU21GetrDhUU/r6d1iOQw0Ou4o1IsTMpRbDnkBj/Girx9ttcN9ARf+DQKnwJA5jo XyBnyELOzTPMefebsjHWdixj4zHFkTT50fhi5MnwUgypIjoLh/TUKl7vboFbaqsKzEYN azPg== 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=cnL8rRLdhxEUHMmzuPbpEqxboZkciFsFzGYdTqdV4zg=; fh=AsQUxY17UP4I4ANjAjzQGhV+/8Tz+vG6DJFG+Cn0IYE=; b=JW2ugNoFrEQCKU6qA100VJfOZZrocgu2DInURcS2zNPFdEfP2M/1je6K7NWkKDSIYu 3Kw+za3RGd33EULU0gYZ2pIt4gmmVFOA+eQVf31dTDaIDCsXvJ71wXe877jtl1jUUG76 cRx08EM64hjuFrTOy629ICmHUOGt64d4h66UMQ2nv3+DamC0JZJvBcA8r4aj6sWk5M7z udk/lxxUa3PB5gPPwJu7o18cXtXjQa+mMcmeqeq6ZocpmmuZOGkh/uQ5hTyYqKvVhuW/ sz2i0tplEB6JX5f7us0Pt2g4zXxZ8a+0IBuASWJVWZrVVEA+avs9iv+ZBpFA0+QVcvs4 z9bg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=PKDm94kM; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: from snail.vger.email (snail.vger.email. [2620:137:e000::3:7]) by mx.google.com with ESMTPS id t12-20020a65554c000000b005b92fb731a9si7813362pgr.834.2023.11.14.07.10.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Nov 2023 07:10:10 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) client-ip=2620:137:e000::3:7; Authentication-Results: mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=PKDm94kM; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 9E2E881067A2; Tue, 14 Nov 2023 07:10:08 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233633AbjKNPJz (ORCPT + 29 others); Tue, 14 Nov 2023 10:09:55 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39844 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233473AbjKNPJh (ORCPT ); Tue, 14 Nov 2023 10:09:37 -0500 Received: from out-183.mta1.migadu.com (out-183.mta1.migadu.com [95.215.58.183]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 909E6198 for ; Tue, 14 Nov 2023 07:09:32 -0800 (PST) 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=linux.dev; s=key1; t=1699974131; 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=cnL8rRLdhxEUHMmzuPbpEqxboZkciFsFzGYdTqdV4zg=; b=PKDm94kMbgxgRSLDoJDDSVLVgpcMTPt7BhKDKq9u6fu0bN01BjveNYWGPsleYtML9yc6Vd eKvVW8SN4uT1AYUPGnTKzuZUQsbFIhPRfNrOrlPK588nvpPe3PyohC6pRUszauqnKiTdjK GJIH4tNSxWQ8DotrzwByn2N/K9Jo9og= From: Sui Jingfeng To: Phong LE , Neil Armstrong Cc: Laurent Pinchart , Maxime Ripard , Thomas Zimmermann , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Sui Jingfeng Subject: [PATCH 3/8] drm/bridge: it66121: Add a helper function to read bus width Date: Tue, 14 Nov 2023 23:01:25 +0800 Message-Id: <20231114150130.497915-4-sui.jingfeng@linux.dev> In-Reply-To: <20231114150130.497915-1-sui.jingfeng@linux.dev> References: <20231114150130.497915-1-sui.jingfeng@linux.dev> MIME-Version: 1.0 X-Migadu-Flow: FLOW_OUT X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE 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 X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Tue, 14 Nov 2023 07:10:08 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782552577625212985 X-GMAIL-MSGID: 1782552577625212985 From: Sui Jingfeng Group those relavent code lines (which with common purpose) into one helper function, suppress the dependency on DT to function level. Just trivial cleanup, no functional change. Signed-off-by: Sui Jingfeng --- drivers/gpu/drm/bridge/ite-it66121.c | 32 ++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/bridge/ite-it66121.c b/drivers/gpu/drm/bridge/ite-it66121.c index 83dbdbfc9ed8..0f78737adc83 100644 --- a/drivers/gpu/drm/bridge/ite-it66121.c +++ b/drivers/gpu/drm/bridge/ite-it66121.c @@ -320,6 +320,26 @@ static inline struct it66121_ctx *bridge_to_it66121(struct drm_bridge *bridge) return container_of(bridge, struct it66121_ctx, bridge); } +static int it66121_of_read_bus_width(struct device *dev, u32 *bus_width) +{ + struct device_node *np; + u32 bw; + + np = of_graph_get_endpoint_by_regs(dev->of_node, 0, 0); + if (!np) + return -EINVAL; + + of_property_read_u32(np, "bus-width", &bw); + of_node_put(np); + + if (bw != 12 && bw != 24) + return -EINVAL; + + *bus_width = bw; + + return 0; +} + static const struct regmap_range_cfg it66121_regmap_banks[] = { { .name = "it66121", @@ -1525,19 +1545,13 @@ static int it66121_probe(struct i2c_client *client) if (!ctx) return -ENOMEM; - ep = of_graph_get_endpoint_by_regs(dev->of_node, 0, 0); - if (!ep) - return -EINVAL; - ctx->dev = dev; ctx->client = client; ctx->info = i2c_get_match_data(client); - of_property_read_u32(ep, "bus-width", &ctx->bus_width); - of_node_put(ep); - - if (ctx->bus_width != 12 && ctx->bus_width != 24) - return -EINVAL; + ret = it66121_of_read_bus_width(dev, &ctx->bus_width); + if (ret) + return ret; ep = of_graph_get_remote_node(dev->of_node, 1, -1); if (!ep) { From patchwork Tue Nov 14 15:01:26 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sui Jingfeng X-Patchwork-Id: 164986 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:6358:a59:b0:164:83eb:24d7 with SMTP id 25csp1987989rwb; Tue, 14 Nov 2023 07:11:17 -0800 (PST) X-Google-Smtp-Source: AGHT+IEuZgpsJDyTj18exeJIrPLXbPiSiNPrH65CVWlHAZfIIubF7Y2aQdwxGHxCncQjW6fB2ako X-Received: by 2002:a05:6a20:8f29:b0:15e:707c:904 with SMTP id b41-20020a056a208f2900b0015e707c0904mr9250233pzk.24.1699974677085; Tue, 14 Nov 2023 07:11:17 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699974677; cv=none; d=google.com; s=arc-20160816; b=E0s2xsogSUrxuAtNT/WgfxM/i9extCJdzedr1Sdzkqe4dz8rggEnwujEIVcnGOGZ1f Ex8mwVXk/10dqQJ95eOq5pqbsuSwJ91rMKlT3DR1Hx4LQvaXv/tElPsgws8V0cBB1Oaf mj4C0XTktPKTmZku2jYNwkSVOTS7aoaGIDloSvepblF6iIC5a9soWQE/9hp4ulO2uv+l dQKRp5ATIYZclK1wjIKbop90cT1yYZjyxgrPEonDNviwb3R99C3hYiT+UWdN7lm1Wmvj tb9w5u3QWtNmRkmsCdU+dQg/Gvl4MSAUc2iaIADzS1tsVy6PuObQ7KlfT8Vn8Fzr8/20 iFnA== 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=m5kKprLLEL4tPCbX40jldFRROJifNOVhztsTzbLcjYw=; fh=AsQUxY17UP4I4ANjAjzQGhV+/8Tz+vG6DJFG+Cn0IYE=; b=Nlss0V/AQMuu56P664cnkyJpWSP6lJgu7g62cTNwwNoPbOotxiutpsRovXCm7vGv/i FqIOisLPfPeKNYcdiE13aUIo7h2VZgnJdAur/p1GBEjxwwyQa50E5n38vUH2i1sM7WbS dN0LRqEPBk4lQELIuv7XAxzF2nDwuHUQriOKGNZoU0fvtjkYFgtoX3dJuWBhOKdfH/T5 KDzXs7Vc4ErkcT/Ivzw7BpBAWQ0dXNmRUJgIMvy1lck2Z7kTyWrDQfzHkdO8fh2DaNz0 xqzlW6AAoC4VevuPlt9w3bAPhbYMF1GMc+9r7Cg2oJ7Hjalm6z3myWx1ysFnFXS5mhDH NZyw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=WyS6P1AX; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: from fry.vger.email (fry.vger.email. [2620:137:e000::3:8]) by mx.google.com with ESMTPS id z192-20020a6333c9000000b005b88dfa676esi7842642pgz.158.2023.11.14.07.11.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Nov 2023 07:11:17 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) client-ip=2620:137:e000::3:8; Authentication-Results: mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=WyS6P1AX; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by fry.vger.email (Postfix) with ESMTP id 6EEAD8026421; Tue, 14 Nov 2023 07:11:11 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at fry.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233620AbjKNPJx (ORCPT + 29 others); Tue, 14 Nov 2023 10:09:53 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39856 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233472AbjKNPJh (ORCPT ); Tue, 14 Nov 2023 10:09:37 -0500 Received: from out-177.mta1.migadu.com (out-177.mta1.migadu.com [95.215.58.177]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 98F4B1A1 for ; Tue, 14 Nov 2023 07:09:32 -0800 (PST) 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=linux.dev; s=key1; t=1699974134; 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=m5kKprLLEL4tPCbX40jldFRROJifNOVhztsTzbLcjYw=; b=WyS6P1AXayZo5bIYUZyFvxH6Pcx9HWuPhtPw37v8O/C66WjCM/UsZI7uLcPBQhHcgaFult iAcTH0nqI4aF7oSAFTboO7pyfc69AuLknUW9GM/uJkXUWSgMdgnBcNGGZ9brJwJvjYiGsZ OuC9XAyhhLHvBgL2h19yod6bgx6jhXg= From: Sui Jingfeng To: Phong LE , Neil Armstrong Cc: Laurent Pinchart , Maxime Ripard , Thomas Zimmermann , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Sui Jingfeng Subject: [PATCH 4/8] drm/bridge: it66121: Add a helper function to get the next bridge Date: Tue, 14 Nov 2023 23:01:26 +0800 Message-Id: <20231114150130.497915-5-sui.jingfeng@linux.dev> In-Reply-To: <20231114150130.497915-1-sui.jingfeng@linux.dev> References: <20231114150130.497915-1-sui.jingfeng@linux.dev> MIME-Version: 1.0 X-Migadu-Flow: FLOW_OUT X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on fry.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 (fry.vger.email [0.0.0.0]); Tue, 14 Nov 2023 07:11:11 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782552647005644018 X-GMAIL-MSGID: 1782552647005644018 From: Sui Jingfeng Group the code lines(which with the same functional) into one dedicated function, which reduce the weight of it66121_probe() function. Just trivial cleanuo, no functional change. Signed-off-by: Sui Jingfeng --- drivers/gpu/drm/bridge/ite-it66121.c | 53 ++++++++++++++++++---------- 1 file changed, 34 insertions(+), 19 deletions(-) diff --git a/drivers/gpu/drm/bridge/ite-it66121.c b/drivers/gpu/drm/bridge/ite-it66121.c index 0f78737adc83..7e473beefc79 100644 --- a/drivers/gpu/drm/bridge/ite-it66121.c +++ b/drivers/gpu/drm/bridge/ite-it66121.c @@ -340,6 +340,37 @@ static int it66121_of_read_bus_width(struct device *dev, u32 *bus_width) return 0; } +static int it66121_of_get_next_bridge(struct device *dev, + struct drm_bridge **next_bridge) +{ + struct device_node *np; + struct drm_bridge *bridge; + + np = of_graph_get_remote_node(dev->of_node, 1, -1); + if (!np) { + dev_err(dev, "The endpoint is unconnected\n"); + return -EINVAL; + } + + if (!of_device_is_available(np)) { + of_node_put(np); + dev_err(dev, "The remote device is disabled\n"); + return -ENODEV; + } + + bridge = of_drm_find_bridge(np); + of_node_put(np); + + if (!bridge) { + dev_dbg(dev, "Next bridge not found, deferring probe\n"); + return -EPROBE_DEFER; + } + + *next_bridge = bridge; + + return 0; +} + static const struct regmap_range_cfg it66121_regmap_banks[] = { { .name = "it66121", @@ -1531,7 +1562,6 @@ static const char * const it66121_supplies[] = { static int it66121_probe(struct i2c_client *client) { u32 revision_id, vendor_ids[2] = { 0 }, device_ids[2] = { 0 }; - struct device_node *ep; int ret; struct it66121_ctx *ctx; struct device *dev = &client->dev; @@ -1553,24 +1583,9 @@ static int it66121_probe(struct i2c_client *client) if (ret) return ret; - ep = of_graph_get_remote_node(dev->of_node, 1, -1); - if (!ep) { - dev_err(dev, "The endpoint is unconnected\n"); - return -EINVAL; - } - - if (!of_device_is_available(ep)) { - of_node_put(ep); - dev_err(dev, "The remote device is disabled\n"); - return -ENODEV; - } - - ctx->next_bridge = of_drm_find_bridge(ep); - of_node_put(ep); - if (!ctx->next_bridge) { - dev_dbg(dev, "Next bridge not found, deferring probe\n"); - return -EPROBE_DEFER; - } + ret = it66121_of_get_next_bridge(dev, &ctx->next_bridge); + if (ret) + return ret; i2c_set_clientdata(client, ctx); mutex_init(&ctx->lock); From patchwork Tue Nov 14 15:01:27 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sui Jingfeng X-Patchwork-Id: 164984 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:6358:a59:b0:164:83eb:24d7 with SMTP id 25csp1987616rwb; Tue, 14 Nov 2023 07:10:48 -0800 (PST) X-Google-Smtp-Source: AGHT+IH6oRq+sPJM1lzp8J17PTHdK2kL3yxU32Ziaw9LSNmJFKJqAQzh/et5m0Lm3VEO6CTPsYrj X-Received: by 2002:a17:90b:3850:b0:280:e2e1:f955 with SMTP id nl16-20020a17090b385000b00280e2e1f955mr10576649pjb.35.1699974647715; Tue, 14 Nov 2023 07:10:47 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699974647; cv=none; d=google.com; s=arc-20160816; b=BvrwVQ2fize0C/7/ZgTMz583xMsgz/Z0hlulp8WX9i0Fo+C1kohOOG+SPOD5GCSQNM Lo5q9pcSkeeFohjP+82bLdPL7+s7PUVCrTjUOVJCfpZs+Qjx57NWkv/7/1xHFA/4Po8F hfKj4xami1J84fPbdHnmrHfNG1X3PB+a+LzmXgFnYy6yuSc1IM5WUS4NCc/OXhSvVcSA EsPFNv+kaTSa8He3BLnMMmO/mKwayWegaQVcjIvo/xKO3DlF6ThXlm2csgW1q9oRjrlj /ezGY1JO6WF4ckjwWvDpFszdfVfFPbm99dxxLiytpgKC6O3eU436jE0VB/wiRtFKJxIS PkgA== 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=NjLEQ2aBUBcn+Sqc95rmrPoW3NH5ZZ26cu6iyzwpGc0=; fh=AsQUxY17UP4I4ANjAjzQGhV+/8Tz+vG6DJFG+Cn0IYE=; b=kUwD+ygCBT+aExR1JhxotR1JGqJdlq9ze7DDrfiEkOncw3re1XgMnWJJ4yzmV9Aqvz yk+B2qRvcMw6jJHU4TdJeMxab64piPKz5hJkHwrm8cJWj9vsSQ5yNBEzvN533Z1LVUpl qrnWnxHhcD9Cgw4X7UprX4GNbIOwpI03Xl1COLwP1djUDGrlrWQt9UX1K4BHmYZxcU7Q eGmpEmEL5MD9S0k1JGvr51qWgswnuJS+WabxmHJ2VAA7eH9+9yy3yUlEkcHruVFnyd2v 6EfJTO0sQLApcl13jAk9tAxNlSjl+Su/D/NrgnScRvu9uButhW2oKzKZvRkJ1Z7uOq4z yL8g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=kuURKlYb; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: from fry.vger.email (fry.vger.email. [23.128.96.38]) by mx.google.com with ESMTPS id u8-20020a170903124800b001ce2fc160cfsi3206125plh.434.2023.11.14.07.10.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Nov 2023 07:10:47 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) client-ip=23.128.96.38; Authentication-Results: mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=kuURKlYb; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by fry.vger.email (Postfix) with ESMTP id BA9F08096BAF; Tue, 14 Nov 2023 07:10:19 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at fry.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233493AbjKNPJi (ORCPT + 29 others); Tue, 14 Nov 2023 10:09:38 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39834 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229504AbjKNPJg (ORCPT ); Tue, 14 Nov 2023 10:09:36 -0500 X-Greylist: delayed 453 seconds by postgrey-1.37 at lindbergh.monkeyblade.net; Tue, 14 Nov 2023 07:09:32 PST Received: from out-177.mta1.migadu.com (out-177.mta1.migadu.com [IPv6:2001:41d0:203:375::b1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7D3B118A for ; Tue, 14 Nov 2023 07:09:32 -0800 (PST) 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=linux.dev; s=key1; t=1699974138; 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=NjLEQ2aBUBcn+Sqc95rmrPoW3NH5ZZ26cu6iyzwpGc0=; b=kuURKlYbDIZkkE2VlZVqW0eLF4/yKYOCNNFEuflSWrkD8XOv6U9BWn3iVZmIUtoJqSidkD tHAtBcRbv/f+SkUPe+gNkccy0E/Nv7Yd/65IhYW7jtAtFcDG5baoSGFxCLWjC+195kewFe Ihq1rL5hTg0Go/FFQ+xyAE9m8Z5jvmw= From: Sui Jingfeng To: Phong LE , Neil Armstrong Cc: Laurent Pinchart , Maxime Ripard , Thomas Zimmermann , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Sui Jingfeng Subject: [PATCH 5/8] drm/bridge: it66121: Add a helper function to read chip id Date: Tue, 14 Nov 2023 23:01:27 +0800 Message-Id: <20231114150130.497915-6-sui.jingfeng@linux.dev> In-Reply-To: <20231114150130.497915-1-sui.jingfeng@linux.dev> References: <20231114150130.497915-1-sui.jingfeng@linux.dev> MIME-Version: 1.0 X-Migadu-Flow: FLOW_OUT X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on fry.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 (fry.vger.email [0.0.0.0]); Tue, 14 Nov 2023 07:10:19 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782552616204870252 X-GMAIL-MSGID: 1782552616204870252 From: Sui Jingfeng Read the required chip id data back by calling regmap_bulk_read() once, reduce the number of local variables needed in it66121_probe() function. And store its values into struct it66121_ctx, as it will be used latter. Signed-off-by: Sui Jingfeng --- drivers/gpu/drm/bridge/ite-it66121.c | 47 ++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 13 deletions(-) diff --git a/drivers/gpu/drm/bridge/ite-it66121.c b/drivers/gpu/drm/bridge/ite-it66121.c index 7e473beefc79..f36d05331f25 100644 --- a/drivers/gpu/drm/bridge/ite-it66121.c +++ b/drivers/gpu/drm/bridge/ite-it66121.c @@ -313,6 +313,9 @@ struct it66121_ctx { bool auto_cts; } audio; const struct it66121_chip_info *info; + u16 vender_id; + u16 device_id; + u8 revision; }; static inline struct it66121_ctx *bridge_to_it66121(struct drm_bridge *bridge) @@ -399,6 +402,30 @@ static void it66121_hw_reset(struct it66121_ctx *ctx) gpiod_set_value(ctx->gpio_reset, 0); } +static int it66121_read_chip_id(struct it66121_ctx *ctx, bool verbose) +{ + u8 id[4]; + int ret; + + ret = regmap_bulk_read(ctx->regmap, IT66121_VENDOR_ID0_REG, id, 4); + if (ret < 0) { + dev_err(ctx->dev, "Failed to read chip ID: %d\n", ret); + return ret; + } + + ctx->vender_id = (u16)id[1] << 8 | id[0]; + ctx->device_id = ((u16)(id[3] & IT66121_DEVICE_ID1_MASK) << 8 | id[2]); + /* Revision is shared with DEVICE_ID1 */ + ctx->revision = FIELD_GET(IT66121_REVISION_MASK, id[3]); + + if (verbose) { + dev_info(ctx->dev, "Found ITE66121: 0x%x%x, revision: %u\n", + ctx->vender_id, ctx->device_id, ctx->revision); + } + + return 0; +} + static inline int it66121_preamble_ddc(struct it66121_ctx *ctx) { return regmap_write(ctx->regmap, IT66121_MASTER_SEL_REG, IT66121_MASTER_SEL_HOST); @@ -1561,7 +1588,6 @@ static const char * const it66121_supplies[] = { static int it66121_probe(struct i2c_client *client) { - u32 revision_id, vendor_ids[2] = { 0 }, device_ids[2] = { 0 }; int ret; struct it66121_ctx *ctx; struct device *dev = &client->dev; @@ -1603,19 +1629,13 @@ static int it66121_probe(struct i2c_client *client) if (IS_ERR(ctx->regmap)) return PTR_ERR(ctx->regmap); - regmap_read(ctx->regmap, IT66121_VENDOR_ID0_REG, &vendor_ids[0]); - regmap_read(ctx->regmap, IT66121_VENDOR_ID1_REG, &vendor_ids[1]); - regmap_read(ctx->regmap, IT66121_DEVICE_ID0_REG, &device_ids[0]); - regmap_read(ctx->regmap, IT66121_DEVICE_ID1_REG, &device_ids[1]); - - /* Revision is shared with DEVICE_ID1 */ - revision_id = FIELD_GET(IT66121_REVISION_MASK, device_ids[1]); - device_ids[1] &= IT66121_DEVICE_ID1_MASK; + ret = it66121_read_chip_id(ctx, false); + if (ret) + return ret; - if ((vendor_ids[1] << 8 | vendor_ids[0]) != ctx->info->vid || - (device_ids[1] << 8 | device_ids[0]) != ctx->info->pid) { + if (ctx->vender_id != ctx->info->vid || + ctx->device_id != ctx->info->pid) return -ENODEV; - } ctx->bridge.funcs = &it66121_bridge_funcs; ctx->bridge.of_node = dev->of_node; @@ -1633,7 +1653,8 @@ static int it66121_probe(struct i2c_client *client) drm_bridge_add(&ctx->bridge); - dev_info(dev, "IT66121 revision %d probed\n", revision_id); + dev_info(dev, "IT66121 probed, chip id: 0x%x:0x%x, revision: %u\n", + ctx->vender_id, ctx->device_id, ctx->revision); return 0; } From patchwork Tue Nov 14 15:01:28 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sui Jingfeng X-Patchwork-Id: 164980 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:6358:a59:b0:164:83eb:24d7 with SMTP id 25csp1986925rwb; Tue, 14 Nov 2023 07:09:53 -0800 (PST) X-Google-Smtp-Source: AGHT+IFwjERDxNlDnPtlhl3SUTqii8RjlaHEbNJCmcQEPbP92rqYoojwYhBqbKtArNAjov4FQdHN X-Received: by 2002:a05:6a20:8f29:b0:15e:707c:904 with SMTP id b41-20020a056a208f2900b0015e707c0904mr9243914pzk.24.1699974593362; Tue, 14 Nov 2023 07:09:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699974593; cv=none; d=google.com; s=arc-20160816; b=MgdocvsrSAKhZCg0OXxiphyyyCKljQEjyNgIbYKyW9ZZJ6uCHgGwwO096WezYT1ie/ nTM0e/seU4UeoZjjT0b9R9HnSRhrBeTjEOyCDqcUzp9Vhr6Q8QcmJFZmvNKbS6wqFqNA K6uNW+QLq4z8g7TrP56yxd458vD+MgDKTtWgGmcWy5QCanh9vtzc5fB9MC3aZavP+yWq igjjT1fn9ctXhD12IQplJqlFTz6Nmwcx0NHasIiz0/m1NziO18WFPD4Ls2K6n1X7KH0m 8L9DYKxhHuNOElQBVkFEwaf/Qj0/2aV/iO7UGiW0hyG4fcxThnJ6W55/SL7Rmoy4lp86 6PeA== 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=Tk2pBXgQD0Hn7zpS98T/yj1apxuqc9nh5y9T0ytNhnY=; fh=AsQUxY17UP4I4ANjAjzQGhV+/8Tz+vG6DJFG+Cn0IYE=; b=wkmEj207i7HGEj1Mq+uTKbVm9e3fvkjaWcP8v2+IZ4mVZl6BLx8+iNYxO6BtCMGamA oqauaptb6p61jckMOaZh7ixTJ/7NVEnCSB4Of/yyi2JpKP1LvKMnUH44Uo6p2mU576mx 56rJWTyEQJSUfIzfiy4taEwzGSNnt2v1ZidTsjejafTe14w0sQlF+a/AnjBvwoWF8p3e +mMwfrFKc28RxDfqkXkzXohx5lvWEBZljvzhOYdJOZyWKuDKywESh7hs7H6un42EC5P4 wyNK7goe+ejoxeRPpqOIg9yPBIqCqG9Rnop9lZkaRpKcW2m3khOYkLJRfIo4ZAAEv/Y1 cIuQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=IG+qX9fh; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id fb30-20020a056a002d9e00b006910a45a234si8439382pfb.202.2023.11.14.07.09.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Nov 2023 07:09:53 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=IG+qX9fh; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id D6BDB810661F; Tue, 14 Nov 2023 07:09:51 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233481AbjKNPJl (ORCPT + 29 others); Tue, 14 Nov 2023 10:09:41 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39820 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233442AbjKNPJg (ORCPT ); Tue, 14 Nov 2023 10:09:36 -0500 X-Greylist: delayed 455 seconds by postgrey-1.37 at lindbergh.monkeyblade.net; Tue, 14 Nov 2023 07:09:32 PST Received: from out-173.mta1.migadu.com (out-173.mta1.migadu.com [95.215.58.173]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 16925123 for ; Tue, 14 Nov 2023 07:09:32 -0800 (PST) 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=linux.dev; s=key1; t=1699974142; 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=Tk2pBXgQD0Hn7zpS98T/yj1apxuqc9nh5y9T0ytNhnY=; b=IG+qX9fhNU13FWEzeAZz9CPbGXv4Uly+pxQorlItWtMm/A+Gg8MLaKRo/b7sILbTskuT8o 4kIPnkiw7jtyV9we+sG8iA5WJrI4dONftKCvJ5peYK7Z5SVLke//m+V7D1J4WernaPkb2k vMg9KunawNFPE+bT756aiR/b3oyM738= From: Sui Jingfeng To: Phong LE , Neil Armstrong Cc: Laurent Pinchart , Maxime Ripard , Thomas Zimmermann , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Sui Jingfeng Subject: [PATCH 6/8] drm/bridge: it66121: Add a helper to initialize the DRM bridge structure Date: Tue, 14 Nov 2023 23:01:28 +0800 Message-Id: <20231114150130.497915-7-sui.jingfeng@linux.dev> In-Reply-To: <20231114150130.497915-1-sui.jingfeng@linux.dev> References: <20231114150130.497915-1-sui.jingfeng@linux.dev> MIME-Version: 1.0 X-Migadu-Flow: FLOW_OUT X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE 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 X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Tue, 14 Nov 2023 07:09:51 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782552559375836559 X-GMAIL-MSGID: 1782552559375836559 From: Sui Jingfeng Helps the it66121_probe() function to reduce weight, no functional change. Signed-off-by: Sui Jingfeng --- drivers/gpu/drm/bridge/ite-it66121.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/bridge/ite-it66121.c b/drivers/gpu/drm/bridge/ite-it66121.c index f36d05331f25..2f7f00f1bedb 100644 --- a/drivers/gpu/drm/bridge/ite-it66121.c +++ b/drivers/gpu/drm/bridge/ite-it66121.c @@ -1004,6 +1004,21 @@ static const struct drm_bridge_funcs it66121_bridge_funcs = { .hpd_disable = it66121_bridge_hpd_disable, }; +static void it66121_bridge_init_base(struct drm_bridge *bridge, + struct device_node *of_node, + bool hpd_support) +{ + bridge->funcs = &it66121_bridge_funcs; + bridge->type = DRM_MODE_CONNECTOR_HDMIA; + bridge->ops = DRM_BRIDGE_OP_DETECT | DRM_BRIDGE_OP_EDID; + if (hpd_support) + bridge->ops |= DRM_BRIDGE_OP_HPD; + + bridge->of_node = of_node; + + drm_bridge_add(bridge); +} + static irqreturn_t it66121_irq_threaded_handler(int irq, void *dev_id) { int ret; @@ -1637,11 +1652,6 @@ static int it66121_probe(struct i2c_client *client) ctx->device_id != ctx->info->pid) return -ENODEV; - ctx->bridge.funcs = &it66121_bridge_funcs; - ctx->bridge.of_node = dev->of_node; - ctx->bridge.type = DRM_MODE_CONNECTOR_HDMIA; - ctx->bridge.ops = DRM_BRIDGE_OP_DETECT | DRM_BRIDGE_OP_EDID | DRM_BRIDGE_OP_HPD; - ret = devm_request_threaded_irq(dev, client->irq, NULL, it66121_irq_threaded_handler, IRQF_ONESHOT, dev_name(dev), ctx); if (ret < 0) { @@ -1649,9 +1659,9 @@ static int it66121_probe(struct i2c_client *client) return ret; } - it66121_audio_codec_init(ctx, dev); + it66121_bridge_init_base(&ctx->bridge, dev->of_node, true); - drm_bridge_add(&ctx->bridge); + it66121_audio_codec_init(ctx, dev); dev_info(dev, "IT66121 probed, chip id: 0x%x:0x%x, revision: %u\n", ctx->vender_id, ctx->device_id, ctx->revision); From patchwork Tue Nov 14 15:01:29 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sui Jingfeng X-Patchwork-Id: 164983 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:6358:a59:b0:164:83eb:24d7 with SMTP id 25csp1987233rwb; Tue, 14 Nov 2023 07:10:16 -0800 (PST) X-Google-Smtp-Source: AGHT+IEqtpHRrvCQtSe57A+nnkPDRfI4md8078i5uu33HDkL9Vj6oJLvMysHAmh11ZLrnK7o7eEU X-Received: by 2002:a17:902:cecd:b0:1cc:6597:f41e with SMTP id d13-20020a170902cecd00b001cc6597f41emr3207341plg.0.1699974615719; Tue, 14 Nov 2023 07:10:15 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699974615; cv=none; d=google.com; s=arc-20160816; b=WrgKXV7m7msWpOl0ZHNHlDvPTsrvquEL/+dIwCQiCKkugtKAp6VqGHOE6RvvefpZb/ iIFkoTIxbuumIQqVuPCAqJbKLYfuaqfc3eTyAZerSM8ltPz6BSF/V5fN4NYCvtPXXSKu v+N087xm+kxYiGueEsbrZCGXD46owf6nmsQrQky4eLwyA9FYZb4V1vYJHQe6WtTQsmX+ 6/Y4pBYx8Q7PmNUOLCkJDSDwGRcxAnsaxnBokg87PQ437TZR+2FjSqd/mINuBMgj6SG1 kFBxdt4RyP37slHUTnA1fx6cJMbB2bJ4AO5Z+zSe2gbP8XgUGiMPuGIg1YPVkRUbNj/Q OMbA== 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=7fhy2BdhWb4isZ8fdQwycwXhv0lYWLOPVT6/N56SGbY=; fh=AsQUxY17UP4I4ANjAjzQGhV+/8Tz+vG6DJFG+Cn0IYE=; b=RXz01MKsdOtp0/UUwNBCf1wV6mS2JIBybRZOc1LLAhbwA111h2OGt66d3nIt9AdhNn n6ZUL8dfbzCKWndg2z9tVLblCSgvDudFDO5D+1WJPOzkaYMoBS4SHJJ0tyCLjPU7SYJs ASFlKUT3JkNF8iOlbk0gpEJq2qxOcMFDq31iciS++ti0svFtfLRrSpBjPdggMWjxzJPp SFNhm8gHpq3mXu6Xl3T0W7tk/t/6c6oxPE6wR11oG82V4wwF04PCWCUGrg8wZLUDnvdl cLNBP31NZONlmzQM4agrwMaOEK4q2YMfZ4OTkfD3EFonbq9PbL+Ya00fDLoWDzJ6jW0E 6yPg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=mmQDOwqK; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: from snail.vger.email (snail.vger.email. [2620:137:e000::3:7]) by mx.google.com with ESMTPS id y13-20020a17090322cd00b001cdf9442d20si8711125plg.336.2023.11.14.07.10.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Nov 2023 07:10:15 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) client-ip=2620:137:e000::3:7; Authentication-Results: mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=mmQDOwqK; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 6CB168106799; Tue, 14 Nov 2023 07:10:13 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233638AbjKNPJ6 (ORCPT + 29 others); Tue, 14 Nov 2023 10:09:58 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39914 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233498AbjKNPJi (ORCPT ); Tue, 14 Nov 2023 10:09:38 -0500 Received: from out-185.mta1.migadu.com (out-185.mta1.migadu.com [95.215.58.185]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9901D1A5 for ; Tue, 14 Nov 2023 07:09:32 -0800 (PST) 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=linux.dev; s=key1; t=1699974147; 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=7fhy2BdhWb4isZ8fdQwycwXhv0lYWLOPVT6/N56SGbY=; b=mmQDOwqK8B5ctogSr2HC/KmzDYYRDtMtPUdLgd4bOhuRUXf+o2wbSvB60vY1wXe4Trwv8N JSoEbBgebPLxXManXcCNGf4wDGVv7+gXTY1y6+0AE0XBKESbyoqG/LRpzFeL2R2Fj4o1hW gJKplKgscixJPf4rRPCLhYQEiKzq2P0= From: Sui Jingfeng To: Phong LE , Neil Armstrong Cc: Laurent Pinchart , Maxime Ripard , Thomas Zimmermann , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Sui Jingfeng Subject: [PATCH 7/8] drm/bridge: it66121: Add another implementation for getting match data Date: Tue, 14 Nov 2023 23:01:29 +0800 Message-Id: <20231114150130.497915-8-sui.jingfeng@linux.dev> In-Reply-To: <20231114150130.497915-1-sui.jingfeng@linux.dev> References: <20231114150130.497915-1-sui.jingfeng@linux.dev> MIME-Version: 1.0 X-Migadu-Flow: FLOW_OUT X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE 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 X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Tue, 14 Nov 2023 07:10:14 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782552582916834422 X-GMAIL-MSGID: 1782552582916834422 From: Sui Jingfeng Because if use the i2c_get_match_data() function on our platform, the following error will emerge. [ 3.597872] ACPI: bus type drm_connector registered [ 3.602877] loongson 0000:00:06.1: Found LS7A1000 bridge chipset, revision: 1 [ 3.610013] loongson 0000:00:06.1: [drm] dc: 264MHz, gmc: 529MHz, gpu: 529MHz [ 3.617111] loongson 0000:00:06.1: [drm] Dedicated vram start: 0xe0030000000, size: 64MiB [ 3.633628] loongson 0000:00:06.1: [drm] Loongson VBIOS version: 0.3 [ 3.639944] loongson 0000:00:06.1: [drm] Loongson VBIOS: has 8 DCBs [ 3.646271] Console: switching to colour dummy device 80x25 [ 3.651902] loongson 0000:00:06.1: [drm] VRAM: 4096 pages ready [ 3.657791] loongson 0000:00:06.1: [drm] GTT: 32768 pages ready [ 3.663731] loongson 0000:00:06.1: [drm] lsdc-i2c0(sda pin mask=1, scl pin mask=2) created [ 3.671966] loongson 0000:00:06.1: [drm] lsdc-i2c1(sda pin mask=4, scl pin mask=8) created [ 3.680188] loongson 0000:00:06.1: [drm] DisplayPipe-0 has DVO-0 connector [ 3.711860] debugfs: Directory '1-004c' with parent 'regmap' already present! [ 3.720312] CPU 0 Unable to handle kernel paging request at virtual address 0000000000000090, era == 9000000002faffec, ra == 9000000002faffc8 [ 3.732935] Oops[#1]: [ 3.735187] CPU: 0 PID: 8 Comm: kworker/0:0 Not tainted 6.6.0-rc3+ #941 [ 3.741757] Hardware name: Loongson Loongson-3A5000-7A1000-1w-ML5A/Loongson-LS3A5000-7A1000-1w-ML5A, BIOS vUDK2018-LoongArch-V4.0.05-test-stable202305 06/ [ 3.755500] Workqueue: events work_for_cpu_fn [ 3.759833] pc 9000000002faffec ra 9000000002faffc8 tp 900000010017c000 sp 900000010017fb80 [ 3.768132] a0 0000000000000000 a1 9000000101c00420 a2 0000000000000001 a3 900000010017fbc0 [ 3.776430] a4 0000000000000004 a5 0000000000000000 a6 0000000000000001 a7 0000000000000001 [ 3.784727] t0 0000000000000000 t1 0000000000000001 t2 0000000006124954 t3 0000000000000012 [ 3.793026] t4 0000000000004954 t5 900000000800b530 t6 0000000000000000 t7 0000000000018500 [ 3.801324] t8 90000001019c90c0 u0 9000000101c00c00 s9 fffffffffffff000 s0 9000000101c00400 [ 3.809621] s1 0000000000000000 s2 0000000000000000 s3 9000000003c42cb0 s4 9000000101c00420 [ 3.817920] s5 900000010017fc48 s6 0000000000000000 s7 0000000000000000 s8 90000000037fa000 [ 3.826219] ra: 9000000002faffc8 i2c_get_match_data+0x24/0xac [ 3.832189] ERA: 9000000002faffec i2c_get_match_data+0x48/0xac [ 3.838156] CRMD: 000000b0 (PLV0 -IE -DA +PG DACF=CC DACM=CC -WE) [ 3.844303] PRMD: 00000004 (PPLV0 +PIE -PWE) [ 3.848631] EUEN: 00000000 (-FPE -SXE -ASXE -BTE) [ 3.853391] ECFG: 00071c1d (LIE=0,2-4,10-12 VS=7) [ 3.858149] ESTAT: 00010000 [PIL] (IS= ECode=1 EsubCode=0) [ 3.863599] BADV: 0000000000000090 [ 3.867058] PRID: 0014c011 (Loongson-64bit, Loongson-3A5000) [ 3.872764] Modules linked in: [ 3.875793] Process kworker/0:0 (pid: 8, threadinfo=(____ptrval____), task=(____ptrval____)) [ 3.884180] Stack : 9000000101c00400 0000000000000000 900000010177f428 9000000002ceb734 [ 3.892137] 9000000101c00404 90000000037fa000 900000010017fc60 9000000101c00400 [ 3.900093] 9000000016124954 8c326e68047d36df 0000004c037fa000 900000010017fc50 [ 3.908050] 0000000000000080 9000000003c44490 900000010017fcb0 90000001003e9ec0 [ 3.916007] 0000000000000001 900000010044f000 900000010017fc60 9000000101c00400 [ 3.923964] 90000000037fa000 9000000002cf05a8 90000001003e8000 900000010017fcb2 [ 3.931920] 000000304c17fc68 0000000000000000 000000000000004c 0000000000000000 [ 3.939877] 4031323136365449 0000000000006334 004c000000000000 0000000000000000 [ 3.947833] 0000000000000000 0000000000000000 0000000000000000 0000000000000000 [ 3.955790] 0000000000000000 0000000000000000 9000000100449a98 8c326e68047d36df [ 3.963746] ... [ 3.966170] Call Trace: [ 3.966172] [<9000000002faffec>] i2c_get_match_data+0x48/0xac [ 3.974304] [<9000000002ceb734>] it66121_create_bridge+0x15c/0x404 [ 3.980446] [<9000000002cf05a8>] ls7a1000_output_init+0x228/0x248 [ 3.986503] [<9000000002cee494>] lsdc_pci_probe+0x4dc/0x5b0 [ 3.992038] [<9000000002b86b50>] local_pci_probe+0x48/0xa0 [ 3.997487] [<90000000023b5d04>] work_for_cpu_fn+0x1c/0x30 [ 4.002936] [<90000000023b7c0c>] process_one_work+0x14c/0x288 [ 4.008644] [<90000000023b8084>] worker_thread+0x33c/0x438 [ 4.014092] [<90000000023c1ccc>] kthread+0x124/0x130 [ 4.019023] [<9000000002381188>] ret_from_kernel_thread+0xc/0xa4 [ 4.024991] [ 4.026463] Code: 26000079 02c08063 4c000020 <28c24318> 43ffe31f 43ffdeff 2a00030c 43ffd59f 02c012f7 [ 4.036154] [ 4.037630] ---[ end trace 0000000000000000 ]--- Signed-off-by: Sui Jingfeng --- drivers/gpu/drm/bridge/ite-it66121.c | 51 +++++++++++++++++++--------- 1 file changed, 35 insertions(+), 16 deletions(-) diff --git a/drivers/gpu/drm/bridge/ite-it66121.c b/drivers/gpu/drm/bridge/ite-it66121.c index 2f7f00f1bedb..8971414a2a60 100644 --- a/drivers/gpu/drm/bridge/ite-it66121.c +++ b/drivers/gpu/drm/bridge/ite-it66121.c @@ -292,8 +292,39 @@ enum chip_id { struct it66121_chip_info { enum chip_id id; u16 vid, pid; + char name[24]; }; +static const struct it66121_chip_info it66121_chip_info[] = { + { + .id = ID_IT66121, + .vid = 0x4954, + .pid = 0x0612, + .name = "IT66121", + }, + { + .id = ID_IT6610, + .vid = 0xca00, + .pid = 0x0611, + .name = "IT6610", + }, +}; + +static const struct it66121_chip_info * +it66121_get_match_data(u16 vender_id, u16 device_id) +{ + const struct it66121_chip_info *info; + unsigned int i; + + for (i = 0; i < ARRAY_SIZE(it66121_chip_info); i++) { + info = &it66121_chip_info[i]; + if (info->vid == vender_id && info->pid == device_id) + return info; + } + + return NULL; +} + struct it66121_ctx { struct regmap *regmap; struct drm_bridge bridge; @@ -1677,28 +1708,16 @@ static void it66121_remove(struct i2c_client *client) mutex_destroy(&ctx->lock); } -static const struct it66121_chip_info it66121_chip_info = { - .id = ID_IT66121, - .vid = 0x4954, - .pid = 0x0612, -}; - -static const struct it66121_chip_info it6610_chip_info = { - .id = ID_IT6610, - .vid = 0xca00, - .pid = 0x0611, -}; - static const struct of_device_id it66121_dt_match[] = { - { .compatible = "ite,it66121", &it66121_chip_info }, - { .compatible = "ite,it6610", &it6610_chip_info }, + { .compatible = "ite,it66121", &it66121_chip_info[0] }, + { .compatible = "ite,it6610", &it66121_chip_info[1] }, { } }; MODULE_DEVICE_TABLE(of, it66121_dt_match); static const struct i2c_device_id it66121_id[] = { - { "it66121", (kernel_ulong_t) &it66121_chip_info }, - { "it6610", (kernel_ulong_t) &it6610_chip_info }, + { "it66121", (kernel_ulong_t) &it66121_chip_info[0] }, + { "it6610", (kernel_ulong_t) &it66121_chip_info[1] }, { } }; MODULE_DEVICE_TABLE(i2c, it66121_id); From patchwork Tue Nov 14 15:01:30 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sui Jingfeng X-Patchwork-Id: 164987 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:6358:a59:b0:164:83eb:24d7 with SMTP id 25csp1988117rwb; Tue, 14 Nov 2023 07:11:28 -0800 (PST) X-Google-Smtp-Source: AGHT+IFDoXB26uOJwaXjBtl/oki4N4FgprKwsNhbHIsmXdtHUy83DqXW6tCREDW/VqLM/DfkYaGr X-Received: by 2002:a17:902:aa4a:b0:1cc:5612:85 with SMTP id c10-20020a170902aa4a00b001cc56120085mr2200633plr.45.1699974687785; Tue, 14 Nov 2023 07:11:27 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699974687; cv=none; d=google.com; s=arc-20160816; b=dtNmj45EYKd1zs88zwVuCbnEXS4xZOGmjp1eskKv4inUik+/aI6eoG1VrZ0CJaIO5k iFbdtpbyhLis1PZf/q+fROSOgokEZT7BApQGcrhVrNgQJC2d1FsMMM5En73T60Ac6QzK wcx9iADgQhtv+VEIJrsjqN5nxLTHNtUhShfZDdnpfHx5p6dZ7eJfAlXo64KB34QrIzhM kPz/43SH5FUWkFAaGBiH0KGQk73RjVtY7xxbZDM04ax17gviWsqQgST5x23XynvmSlAi ZsBFtxQMwuoYVNW4KTaLkVj7VShBT193M9htHth8pZ5VkSNFAonzdm3RDE+PgJ2hAVu9 N+Gg== 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=un07RUcu2zgWpUGIkjqz4RZwf2xRaP/AV1IDnwLkbiQ=; fh=AsQUxY17UP4I4ANjAjzQGhV+/8Tz+vG6DJFG+Cn0IYE=; b=qVtM2mrk0jhKh2aa6TZI+O35Dryis9taKjNFkfWk5LSEXw7b0AI63zOb7zHJWBbqM4 uIumypk9cLO/Gaz4JbdRVlpXGhkGP0YNq6GDoAi35duKI7AfzGnsA6L3Lx5e73gvmWxj Z4ZjfBRQ3fQW0fX5fE8FR8CG75c0TYhidjKqjFPwDsVv4v2kJYiQtQrXSSUdwNgLSI1A m2vXloKyfu205b9P5D3CLdMIWTyRsLYTlC5F8q4FP7NhVnwIzV0or7H1qbFjzjWUw2Yt Z8j5twLb1YYJ+7ec+WAKqfMAVTko6GXVQ6QvvTacQ5C3ux9z4uWVKDBHHmx/v9b6WG3r wPXQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=hbWJRAWG; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: from agentk.vger.email (agentk.vger.email. [2620:137:e000::3:2]) by mx.google.com with ESMTPS id z11-20020a1709027e8b00b001cc3a66229dsi7647498pla.507.2023.11.14.07.11.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Nov 2023 07:11:27 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) client-ip=2620:137:e000::3:2; Authentication-Results: mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=hbWJRAWG; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by agentk.vger.email (Postfix) with ESMTP id 0731B807FCCC; Tue, 14 Nov 2023 07:11:01 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233647AbjKNPJ7 (ORCPT + 29 others); Tue, 14 Nov 2023 10:09:59 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39922 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233506AbjKNPJi (ORCPT ); Tue, 14 Nov 2023 10:09:38 -0500 Received: from out-175.mta1.migadu.com (out-175.mta1.migadu.com [IPv6:2001:41d0:203:375::af]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A0FE31B5 for ; Tue, 14 Nov 2023 07:09:32 -0800 (PST) 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=linux.dev; s=key1; t=1699974151; 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=un07RUcu2zgWpUGIkjqz4RZwf2xRaP/AV1IDnwLkbiQ=; b=hbWJRAWGsb2GqirQOKQlvdC45YacNeKEi/rBOc4EJTe9WDpiaj6qOwW+Qf4/9hSOJSbGp8 mdMq5IocqxI5teuylhH5gVTr6qB9+xwhTPScfL7rJEmaa7LOzCK+zIEenJ4Uwdsj6jDvlH 8TBlWGDj2kfglMhHbLSBt1wAZnhyj5c= From: Sui Jingfeng To: Phong LE , Neil Armstrong Cc: Laurent Pinchart , Maxime Ripard , Thomas Zimmermann , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Sui Jingfeng Subject: [PATCH 8/8] drm/bridge: it66121: Allow link this driver as a lib Date: Tue, 14 Nov 2023 23:01:30 +0800 Message-Id: <20231114150130.497915-9-sui.jingfeng@linux.dev> In-Reply-To: <20231114150130.497915-1-sui.jingfeng@linux.dev> References: <20231114150130.497915-1-sui.jingfeng@linux.dev> MIME-Version: 1.0 X-Migadu-Flow: FLOW_OUT X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on agentk.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 (agentk.vger.email [0.0.0.0]); Tue, 14 Nov 2023 07:11:01 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782552658619666687 X-GMAIL-MSGID: 1782552658619666687 From: Sui Jingfeng The it66121_create_bridge() and it66121_destroy_bridge() are added to export the core functionalities. Create a connector manually by using bridge connector helpers when link as a lib. Signed-off-by: Sui Jingfeng --- drivers/gpu/drm/bridge/ite-it66121.c | 134 +++++++++++++++++++-------- include/drm/bridge/ite-it66121.h | 17 ++++ 2 files changed, 113 insertions(+), 38 deletions(-) create mode 100644 include/drm/bridge/ite-it66121.h diff --git a/drivers/gpu/drm/bridge/ite-it66121.c b/drivers/gpu/drm/bridge/ite-it66121.c index 8971414a2a60..f5968b679c5d 100644 --- a/drivers/gpu/drm/bridge/ite-it66121.c +++ b/drivers/gpu/drm/bridge/ite-it66121.c @@ -22,6 +22,7 @@ #include #include +#include #include #include #include @@ -703,14 +704,32 @@ static int it66121_bridge_attach(struct drm_bridge *bridge, enum drm_bridge_attach_flags flags) { struct it66121_ctx *ctx = bridge_to_it66121(bridge); + struct drm_bridge *next_bridge = ctx->next_bridge; + struct drm_encoder *encoder = bridge->encoder; int ret; - if (!(flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR)) - return -EINVAL; + if (next_bridge) { + if (!(flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR)) { + WARN_ON(1); + flags |= DRM_BRIDGE_ATTACH_NO_CONNECTOR; + } + ret = drm_bridge_attach(encoder, next_bridge, bridge, flags); + if (ret) + return ret; + } else { + struct drm_connector *connector; - ret = drm_bridge_attach(bridge->encoder, ctx->next_bridge, bridge, flags); - if (ret) - return ret; + if (flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR) + WARN_ON(1); + + connector = drm_bridge_connector_init(bridge->dev, encoder); + if (IS_ERR(connector)) + return PTR_ERR(connector); + + drm_connector_attach_encoder(connector, encoder); + + ctx->connector = connector; + } if (ctx->info->id == ID_IT66121) { ret = regmap_write_bits(ctx->regmap, IT66121_CLK_BANK_REG, @@ -1632,16 +1651,13 @@ static const char * const it66121_supplies[] = { "vcn33", "vcn18", "vrf12" }; -static int it66121_probe(struct i2c_client *client) +int it66121_create_bridge(struct i2c_client *client, bool of_support, + bool hpd_support, bool audio_support, + struct drm_bridge **bridge) { + struct device *dev = &client->dev; int ret; struct it66121_ctx *ctx; - struct device *dev = &client->dev; - - if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) { - dev_err(dev, "I2C check functionality failed.\n"); - return -ENXIO; - } ctx = devm_kzalloc(dev, sizeof(*ctx), GFP_KERNEL); if (!ctx) @@ -1649,24 +1665,19 @@ static int it66121_probe(struct i2c_client *client) ctx->dev = dev; ctx->client = client; - ctx->info = i2c_get_match_data(client); - - ret = it66121_of_read_bus_width(dev, &ctx->bus_width); - if (ret) - return ret; - - ret = it66121_of_get_next_bridge(dev, &ctx->next_bridge); - if (ret) - return ret; - - i2c_set_clientdata(client, ctx); mutex_init(&ctx->lock); - ret = devm_regulator_bulk_get_enable(dev, ARRAY_SIZE(it66121_supplies), - it66121_supplies); - if (ret) { - dev_err(dev, "Failed to enable power supplies\n"); - return ret; + if (of_support) { + ret = it66121_of_read_bus_width(dev, &ctx->bus_width); + if (ret) + return ret; + + ret = it66121_of_get_next_bridge(dev, &ctx->next_bridge); + if (ret) + return ret; + } else { + ctx->bus_width = 24; + ctx->next_bridge = NULL; } it66121_hw_reset(ctx); @@ -1679,33 +1690,80 @@ static int it66121_probe(struct i2c_client *client) if (ret) return ret; - if (ctx->vender_id != ctx->info->vid || - ctx->device_id != ctx->info->pid) + ctx->info = it66121_get_match_data(ctx->vender_id, ctx->device_id); + if (!ctx->info) return -ENODEV; - ret = devm_request_threaded_irq(dev, client->irq, NULL, it66121_irq_threaded_handler, - IRQF_ONESHOT, dev_name(dev), ctx); - if (ret < 0) { - dev_err(dev, "Failed to request irq %d:%d\n", client->irq, ret); - return ret; + if (hpd_support) { + ret = devm_request_threaded_irq(dev, client->irq, NULL, + it66121_irq_threaded_handler, + IRQF_ONESHOT, dev_name(dev), + ctx); + if (ret < 0) { + dev_err(dev, "Failed to request irq: %d\n", ret); + return ret; + } } it66121_bridge_init_base(&ctx->bridge, dev->of_node, true); - it66121_audio_codec_init(ctx, dev); + if (audio_support) + it66121_audio_codec_init(ctx, dev); + + *bridge = &ctx->bridge; dev_info(dev, "IT66121 probed, chip id: 0x%x:0x%x, revision: %u\n", ctx->vender_id, ctx->device_id, ctx->revision); return 0; } +EXPORT_SYMBOL_GPL(it66121_create_bridge); + +static int it66121_probe(struct i2c_client *client) +{ + struct device *dev = &client->dev; + struct it66121_ctx *ctx; + struct drm_bridge *bridge; + int ret; + + if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) { + dev_err(dev, "I2C check functionality failed.\n"); + return -ENXIO; + } + + ret = devm_regulator_bulk_get_enable(dev, ARRAY_SIZE(it66121_supplies), + it66121_supplies); + if (ret) { + dev_err(dev, "Failed to enable power supplies\n"); + return ret; + } + + ret = it66121_create_bridge(client, true, true, true, &bridge); + if (ret) + return ret; + + ctx = bridge_to_it66121(bridge); + + i2c_set_clientdata(client, ctx); + + return 0; +} + +void it66121_destroy_bridge(struct drm_bridge *bridge) +{ + struct it66121_ctx *ctx = bridge_to_it66121(bridge); + + drm_bridge_remove(bridge); + + mutex_destroy(&ctx->lock); +} +EXPORT_SYMBOL_GPL(it66121_destroy_bridge); static void it66121_remove(struct i2c_client *client) { struct it66121_ctx *ctx = i2c_get_clientdata(client); - drm_bridge_remove(&ctx->bridge); - mutex_destroy(&ctx->lock); + it66121_destroy_bridge(&ctx->bridge); } static const struct of_device_id it66121_dt_match[] = { diff --git a/include/drm/bridge/ite-it66121.h b/include/drm/bridge/ite-it66121.h new file mode 100644 index 000000000000..e6753f695b7f --- /dev/null +++ b/include/drm/bridge/ite-it66121.h @@ -0,0 +1,17 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#ifndef __ITE_IT66121_H__ +#define __ITE_IT66121_H__ + +#include + +#include +#include + +int it66121_create_bridge(struct i2c_client *client, bool of_support, + bool hpd_support, bool audio_support, + struct drm_bridge **bridge); + +void it66121_destroy_bridge(struct drm_bridge *bridge); + +#endif