From patchwork Wed Dec 14 12:58:12 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Cercueil X-Patchwork-Id: 33188 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:e747:0:0:0:0:0 with SMTP id c7csp202949wrn; Wed, 14 Dec 2022 05:02:27 -0800 (PST) X-Google-Smtp-Source: AA0mqf48MSY6aypga7BscmXxDAzAYs+1o1NYZPDrRArC/gpr6lxrmTbX049/DrmzvbTHs2M4sTvG X-Received: by 2002:a17:906:e104:b0:7c1:22ad:655a with SMTP id gj4-20020a170906e10400b007c122ad655amr18810790ejb.23.1671022947147; Wed, 14 Dec 2022 05:02:27 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1671022947; cv=none; d=google.com; s=arc-20160816; b=TRt+EJVAjV1oP/HJ63uaV7Hehnk79azXMfBdhdGt901FPRGT+NCaiCeRol87YPjSGI bgmmeoc9AK/OOIbAJHQf8D3rMd5wBm38Ijuyy4Scbe6HjNM49DP5PVjpqj5wToG8PDze G4eiChIHWWje7Sz94deRxV4/vNDsqjtdIdcgIxyQO4knCjJmEP6V/D7hQpFcZUDjD9TZ Y4etYymJk50mR6oG8hUkY3obgGr4WkT9YH2u02PxTpB8NeNCBMhSb454JloaHL9Hp1BM lTNcNlNKztHhcqwmUW/JfJhT48c9j3+TIqtbX8j92EknYRjjKVNG7BSgjL3sXX378a1J aO3Q== 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=V929Ie0WGrd9/qKW1WSMq4nbVzLzTmKoyeEjONPKBnc=; b=fHkT3UxC30EX8w563Ge+/ztKYCvwoPpsooq4HYVulp0DFj05irzd/djDVSs1pUDgwP b6nA8UU9QvhGPy/GPQw/pEtZ+qivEHYo67fN5tZf+fBNS7EKx41/bc8njdBdhhOVQEQN 10I54fh4Z4TiMraqsuDIkShPu8WRbayUI4TJ2slL9xYXZ3aWHx7MOKKVoXjQq3UQG+Rs lEklgDfE8iTwxAPavJ5U4inqgKwqrC5U/oxlpQEzUfPrZ7gRQEciiy3uxO1gMUorQ6ze KxZyiWyMN4JtudzeJn2ecw6ZS6lx2Vpdae8wGYT9FRMR3WKTVsN25vnF1onIc3fapk+e 1NIQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@crapouillou.net header.s=mail header.b=WJrDdD0K; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=crapouillou.net Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id nd39-20020a17090762a700b007adb388df38si11391832ejc.706.2022.12.14.05.01.40; Wed, 14 Dec 2022 05:02:27 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@crapouillou.net header.s=mail header.b=WJrDdD0K; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=crapouillou.net Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238372AbiLNM6s (ORCPT + 99 others); Wed, 14 Dec 2022 07:58:48 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58320 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238310AbiLNM6p (ORCPT ); Wed, 14 Dec 2022 07:58:45 -0500 Received: from aposti.net (aposti.net [89.234.176.197]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 933ACB1F3; Wed, 14 Dec 2022 04:58:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=crapouillou.net; s=mail; t=1671022716; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=V929Ie0WGrd9/qKW1WSMq4nbVzLzTmKoyeEjONPKBnc=; b=WJrDdD0KZkbeWjEVzhorAQsFnjG1x/ACBPKI1qF/hggOPz1woTq/bByJ0rc5U+Ul+ZKhoY 110VJ0A1hd3ZwW0AQYzOP15z/4/CiCMhklQhAkoj78fYrRPQzzETqUFz45j+hx4JlWdcD+ wNxf6JR7hlAyzVJvpWSuOtxp7bE1FyU= From: Paul Cercueil To: Phong LE , Neil Armstrong , Andrzej Hajda , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , David Airlie , Daniel Vetter , Rob Herring , Krzysztof Kozlowski Cc: list@opendingux.net, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Paul Cercueil Subject: [PATCH 01/10] dt-bindings: display: bridge: it66121: Add compatible string for IT6610 Date: Wed, 14 Dec 2022 13:58:12 +0100 Message-Id: <20221214125821.12489-2-paul@crapouillou.net> In-Reply-To: <20221214125821.12489-1-paul@crapouillou.net> References: <20221214125821.12489-1-paul@crapouillou.net> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1752194557948605218?= X-GMAIL-MSGID: =?utf-8?q?1752194557948605218?= Add a new ite,it6610 compatible string to the IT66121 binding documentation, since the two chips are very similar. Signed-off-by: Paul Cercueil Reviewed-by: Robert Foss --- .../devicetree/bindings/display/bridge/ite,it66121.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/display/bridge/ite,it66121.yaml b/Documentation/devicetree/bindings/display/bridge/ite,it66121.yaml index 1b2185be92cd..72957be0ba3c 100644 --- a/Documentation/devicetree/bindings/display/bridge/ite,it66121.yaml +++ b/Documentation/devicetree/bindings/display/bridge/ite,it66121.yaml @@ -17,7 +17,9 @@ description: | properties: compatible: - const: ite,it66121 + enum: + - ite,it66121 + - ite,it6610 reg: maxItems: 1 From patchwork Wed Dec 14 12:58:13 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Cercueil X-Patchwork-Id: 33189 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:e747:0:0:0:0:0 with SMTP id c7csp202974wrn; Wed, 14 Dec 2022 05:02:29 -0800 (PST) X-Google-Smtp-Source: AA0mqf6hKi5FPsCRjOncW+iLq+Bc2zCLlnolVJWNhk/zz2gTvhI6drikPuQOv9+Oc4M84bvTXH5/ X-Received: by 2002:a17:906:b7c6:b0:7c0:d60b:2887 with SMTP id fy6-20020a170906b7c600b007c0d60b2887mr20419042ejb.69.1671022949191; Wed, 14 Dec 2022 05:02:29 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1671022949; cv=none; d=google.com; s=arc-20160816; b=zHoy9s/Zok0zCKdZmo1wYmBcz2umaALsmJkIRfuv56dms4+KjRVL5tQPkN7IqBUvNy UYA+4QSPlgdzqoVwrw9GnHe76jVrj3+AiD6IpjCoNHJ6p7vVtxz7QC+6rhrQVSV1b+9w YhOd65dd9Ri9uQvyerFLJPEGBBKADjrJNv7L2I6A0RgNtLiFr3stJoXtNME4nKd66Nps jjRj+kWQvh13mIINdGjJVlQ2unoC2HV3Eke10SXEK1TWo4nWsUf7r5mFz+BG3WxtINJM yhY599EziTELPthAz4ap8cRGEBfjTODB55+P7ZWaLAnETQscodccJk74KV7nvBHOoc9D YUiQ== 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=ALeT/K979z4FbQL+GNOo8bkN3uAPgFKLruh1Ib4LZ7c=; b=A85uiSV5Uihtg4+vfqMrxRnaDLVHR5G0GLZgTS9rzfvifwnseDhSZ1nzjgmVBvw0TP qPjidGfjU4bU+1DR8egFSv2W3Hp0IyQO3FLoEIgiRFgXkoJmT5FxqxS70L+BjWWN143Q 9lEYWgRgHAW/WoNpIxa0g+nNz1x2Q/O2Y7uRgh7f9BRbz/Pky0Rk+UzLI2Km+Lh86cDz IcU/ywqO02txovBVQKUgO23IDbvvU/ldf/6/GYQtKMD37aSacXB9pUE6zvkbQjetlAxn EHQBlUNSuzMTL/urJJXDG1T3RePHTTsM+q9l/J4qygSZh1KirLCRlZlKUT/pQLfGWOoX qgMg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@crapouillou.net header.s=mail header.b="y/G2f0lw"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=crapouillou.net Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id hc17-20020a170907169100b007c0b71dfd96si12798382ejc.734.2022.12.14.05.01.40; Wed, 14 Dec 2022 05:02:29 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@crapouillou.net header.s=mail header.b="y/G2f0lw"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=crapouillou.net Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238368AbiLNM66 (ORCPT + 99 others); Wed, 14 Dec 2022 07:58:58 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58416 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238347AbiLNM6w (ORCPT ); Wed, 14 Dec 2022 07:58:52 -0500 Received: from aposti.net (aposti.net [89.234.176.197]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6B07C1004A; Wed, 14 Dec 2022 04:58:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=crapouillou.net; s=mail; t=1671022716; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ALeT/K979z4FbQL+GNOo8bkN3uAPgFKLruh1Ib4LZ7c=; b=y/G2f0lwEhHr1QeY4WnxJSj3DBBbi3DV0qCBXdArfDRsVjYlFiMwQ7DuUmnHqCP7ldCCef wu38teVetlFGMA2UT8Fon5UCjaGzZ+JS+Aro4vVTv81biu83EG2e7abMSpVdulHGkvR/lp ZIu+loFyFKh9NDzn4cGp5BrXrLWEO+0= From: Paul Cercueil To: Phong LE , Neil Armstrong , Andrzej Hajda , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , David Airlie , Daniel Vetter , Rob Herring , Krzysztof Kozlowski Cc: list@opendingux.net, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Paul Cercueil Subject: [PATCH 02/10] drm: bridge: it66121: Use devm_regulator_bulk_get_enable() Date: Wed, 14 Dec 2022 13:58:13 +0100 Message-Id: <20221214125821.12489-3-paul@crapouillou.net> In-Reply-To: <20221214125821.12489-1-paul@crapouillou.net> References: <20221214125821.12489-1-paul@crapouillou.net> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1752194559895912464?= X-GMAIL-MSGID: =?utf-8?q?1752194559895912464?= Simplify the code of the driver by using devm_regulator_bulk_get_enable(), which will handle powering up the regulators, and disabling them on probe error or module removal. Signed-off-by: Paul Cercueil Reviewed-by: Robert Foss --- drivers/gpu/drm/bridge/ite-it66121.c | 34 +++++++--------------------- 1 file changed, 8 insertions(+), 26 deletions(-) diff --git a/drivers/gpu/drm/bridge/ite-it66121.c b/drivers/gpu/drm/bridge/ite-it66121.c index 7476cfbf9585..a698eec8f250 100644 --- a/drivers/gpu/drm/bridge/ite-it66121.c +++ b/drivers/gpu/drm/bridge/ite-it66121.c @@ -301,7 +301,6 @@ struct it66121_ctx { struct device *dev; struct gpio_desc *gpio_reset; struct i2c_client *client; - struct regulator_bulk_data supplies[3]; u32 bus_width; struct mutex lock; /* Protects fields below and device registers */ struct hdmi_avi_infoframe hdmi_avi_infoframe; @@ -342,16 +341,6 @@ static void it66121_hw_reset(struct it66121_ctx *ctx) gpiod_set_value(ctx->gpio_reset, 0); } -static inline int ite66121_power_on(struct it66121_ctx *ctx) -{ - return regulator_bulk_enable(ARRAY_SIZE(ctx->supplies), ctx->supplies); -} - -static inline int ite66121_power_off(struct it66121_ctx *ctx) -{ - return regulator_bulk_disable(ARRAY_SIZE(ctx->supplies), ctx->supplies); -} - static inline int it66121_preamble_ddc(struct it66121_ctx *ctx) { return regmap_write(ctx->regmap, IT66121_MASTER_SEL_REG, IT66121_MASTER_SEL_HOST); @@ -1512,6 +1501,10 @@ static int it66121_audio_codec_init(struct it66121_ctx *ctx, struct device *dev) return PTR_ERR_OR_ZERO(ctx->audio.pdev); } +static const char * const it66121_supplies[] = { + "vcn33", "vcn18", "vrf12" +}; + static int it66121_probe(struct i2c_client *client) { u32 revision_id, vendor_ids[2] = { 0 }, device_ids[2] = { 0 }; @@ -1564,26 +1557,18 @@ static int it66121_probe(struct i2c_client *client) i2c_set_clientdata(client, ctx); mutex_init(&ctx->lock); - ctx->supplies[0].supply = "vcn33"; - ctx->supplies[1].supply = "vcn18"; - ctx->supplies[2].supply = "vrf12"; - ret = devm_regulator_bulk_get(ctx->dev, 3, ctx->supplies); + ret = devm_regulator_bulk_get_enable(dev, ARRAY_SIZE(it66121_supplies), + it66121_supplies); if (ret) { - dev_err(ctx->dev, "regulator_bulk failed\n"); + dev_err(dev, "Failed to enable power supplies\n"); return ret; } - ret = ite66121_power_on(ctx); - if (ret) - return ret; - it66121_hw_reset(ctx); ctx->regmap = devm_regmap_init_i2c(client, &it66121_regmap_config); - if (IS_ERR(ctx->regmap)) { - ite66121_power_off(ctx); + 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]); @@ -1596,7 +1581,6 @@ static int it66121_probe(struct i2c_client *client) if (vendor_ids[0] != IT66121_VENDOR_ID0 || vendor_ids[1] != IT66121_VENDOR_ID1 || device_ids[0] != IT66121_DEVICE_ID0 || device_ids[1] != IT66121_DEVICE_ID1) { - ite66121_power_off(ctx); return -ENODEV; } @@ -1609,7 +1593,6 @@ static int it66121_probe(struct i2c_client *client) IRQF_ONESHOT, dev_name(dev), ctx); if (ret < 0) { dev_err(dev, "Failed to request irq %d:%d\n", client->irq, ret); - ite66121_power_off(ctx); return ret; } @@ -1626,7 +1609,6 @@ static void it66121_remove(struct i2c_client *client) { struct it66121_ctx *ctx = i2c_get_clientdata(client); - ite66121_power_off(ctx); drm_bridge_remove(&ctx->bridge); mutex_destroy(&ctx->lock); } From patchwork Wed Dec 14 12:58:14 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Cercueil X-Patchwork-Id: 33186 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:e747:0:0:0:0:0 with SMTP id c7csp202619wrn; Wed, 14 Dec 2022 05:01:59 -0800 (PST) X-Google-Smtp-Source: AA0mqf5s7ukxxGs6kA6paWoND0d62Fq3pIjOIdMfEnglVvYqrlFKDyeNGj6GqH5mLBigxgz/LyiJ X-Received: by 2002:a50:cbcd:0:b0:46a:331:8e72 with SMTP id l13-20020a50cbcd000000b0046a03318e72mr20376361edi.37.1671022919679; Wed, 14 Dec 2022 05:01:59 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1671022919; cv=none; d=google.com; s=arc-20160816; b=nm0MSMvyI2E0SAAaUZz25lo/ju/gy/aWYsdyziYx2h3cJVudQgtiDwcl79mKgLj37v EbEeaJq/hLz+Cf/r+kZz5qik7lvP12zV8hntZw1c9fo81q3o9urtPnlQVLuZAe8+2Swr M9DuYCmwkvvI3/nxnhNu6jdSGbg66g6KufS7rfr7WUcevTBEfMQk8B479Bv6ZpHMjZ/T GGYLFkZuL+M17sCHGhAot2nJ2yNKuAWJi6asgPnhASGtl60UO53dHSltBzFatjCnT9Yt ssVVOWBYI8235Nll5DZ8XqxKk0Ujg1bjDjnI7YfkveHBfu0GCqIMck0w5Pl6RWrwa6ZU 74Mw== 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=jKGHG3bC4nshhLO5ifNxW0xWVxriUgCc83bAuctfHfM=; b=ZODk5zmSJvcNkQuXpckIJAHkPT/Q1J9Irv+PMJFdWUPFtKQByUJeeA0KpRlGQsDnW+ euwQw/7sIowBg6SZ9SAB1so4ztIB88LktYP0IUTUq5YCHzNt8iYoe0JriqcKg4XnQ8gY r3NzZjSvWMNFMdRkmLYmr+8FkYvS+jxS9aW68AN6llZTXuKojyaNDs1bXbSIyAwYaR/G JKn+YO8MLcxK3E0tP1DfGd9fo8KyyUSQbTunqngmslnqYW/2Qyiz173u5ledkVFMCoiK bK4kyhe6O53/lr4+dCxjfsm2G42gvfG7KpnUYFoNy4at0N0+IK7vI9RHzcIPIXCLIRhB fpQg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@crapouillou.net header.s=mail header.b=1UNKVvlP; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=crapouillou.net Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id x17-20020a05640226d100b00471fa3d8745si1937437edd.138.2022.12.14.05.01.18; Wed, 14 Dec 2022 05:01:59 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@crapouillou.net header.s=mail header.b=1UNKVvlP; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=crapouillou.net Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238383AbiLNM7D (ORCPT + 99 others); Wed, 14 Dec 2022 07:59:03 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58428 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238380AbiLNM67 (ORCPT ); Wed, 14 Dec 2022 07:58:59 -0500 Received: from aposti.net (aposti.net [89.234.176.197]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4731FBC05; Wed, 14 Dec 2022 04:58:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=crapouillou.net; s=mail; t=1671022717; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=jKGHG3bC4nshhLO5ifNxW0xWVxriUgCc83bAuctfHfM=; b=1UNKVvlPTCVro1zT9tLnprJM4KzWBmPcIfZ+/YwAJTfExGEKe8L4wFBgt/tWhbgfq4nnM8 6x49DhWmiF5wrRlZOKZKPB8wl329iYZMowaJU3UrytIIjrxs1FwFmaudP95pflspjXO0Ar K99cRfcUZdugJ7YX26IV83++N9LZMzU= From: Paul Cercueil To: Phong LE , Neil Armstrong , Andrzej Hajda , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , David Airlie , Daniel Vetter , Rob Herring , Krzysztof Kozlowski Cc: list@opendingux.net, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Paul Cercueil Subject: [PATCH 03/10] drm: bridge: it66121: Use regmap_noinc_read() Date: Wed, 14 Dec 2022 13:58:14 +0100 Message-Id: <20221214125821.12489-4-paul@crapouillou.net> In-Reply-To: <20221214125821.12489-1-paul@crapouillou.net> References: <20221214125821.12489-1-paul@crapouillou.net> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1752194528748583512?= X-GMAIL-MSGID: =?utf-8?q?1752194528748583512?= Use regmap_noinc_read() instead of reading the data from the DDC FIFO one byte at a time. Signed-off-by: Paul Cercueil Reviewed-by: Robert Foss --- drivers/gpu/drm/bridge/ite-it66121.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/bridge/ite-it66121.c b/drivers/gpu/drm/bridge/ite-it66121.c index a698eec8f250..12222840df30 100644 --- a/drivers/gpu/drm/bridge/ite-it66121.c +++ b/drivers/gpu/drm/bridge/ite-it66121.c @@ -589,13 +589,12 @@ static int it66121_get_edid_block(void *context, u8 *buf, if (ret) return ret; - do { - ret = regmap_read(ctx->regmap, IT66121_DDC_RD_FIFO_REG, &val); - if (ret) - return ret; - *(buf++) = val; - cnt--; - } while (cnt > 0); + ret = regmap_noinc_read(ctx->regmap, IT66121_DDC_RD_FIFO_REG, + buf, cnt); + if (ret) + return ret; + + buf += cnt; } return 0; From patchwork Wed Dec 14 12:58:15 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Cercueil X-Patchwork-Id: 33187 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:e747:0:0:0:0:0 with SMTP id c7csp202934wrn; Wed, 14 Dec 2022 05:02:25 -0800 (PST) X-Google-Smtp-Source: AA0mqf5YV6UuF9/OSWTG4Wf+YX3w1uUAXPWRqzTgKeBEM2lZbcQH/cSq+KYc1AjNrKVRBpXOL8NA X-Received: by 2002:a05:6512:7b:b0:4aa:7821:8021 with SMTP id i27-20020a056512007b00b004aa78218021mr7432148lfo.34.1671022945427; Wed, 14 Dec 2022 05:02:25 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1671022945; cv=none; d=google.com; s=arc-20160816; b=pbStfbaibnkqq5sj/v8oexD9R/Tj2RYQ3JpAkC+16py6Qiw083ek9pgG2yO3p07yMQ YHieSpQhmrl/UQYHE8c19kHDbqggf/dbYN1NryOjcUhHntD5EoxFdm9cX9Xmv295tXEm TK1ulvONraIicgSedZ0+4Qqz8Ss7rQM+8zZnHOMN/dD2HoNndyKcOyUjZyHH3EaoXqqF DSzfUKjBNgMR85k2hMNpQRLwr4fp1wO6gPy8RXKh2lShtHGB1TOdcZR2MV4zBicq589a 9h7ZaykIkEYeTcBIzsrwxKPM+y1NM05TsLo6PV4BkJrcUJz2aOyRDrApSAcJgR3XMp7g Ae4w== 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=OWoSCk2ituhKYm0/ufJukih+FFvTeAkXh/icLalhjMU=; b=NEr5lzjYJfEUnopFod9Msj5Y8+puDK+O0/sSGgZQSnO0XvjrGZyh2mYYv3i28/yR8+ aAvxm+m/LAzeDhLr3cAqqVfjglbj8XSA+A0Ex4CEujn2CLJdYY8SqYWIG1iCkIyCRlaH UZBnV8SmjF880Cjqro2dl4AeODltEcVyM4a+yaIW7gVnp5syqj85EizDuToeZcsmBDgx wcSu7pVs6ybUVXBiXwIO7wo8nKPR6Lpzh5NUQaumetFfAT/FyUXLqzCeAuAeHEM0+f4U 37+Khor5R7b+azBXfEKQ8a5eOuthqYv+KptSEmwvwcByNRzAp5Fym/pfqKKQxIyoZycA wfNA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@crapouillou.net header.s=mail header.b=WQHYKNy6; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=crapouillou.net Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id n23-20020aa7c697000000b0046bccab3947si10665357edq.469.2022.12.14.05.01.37; Wed, 14 Dec 2022 05:02:25 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@crapouillou.net header.s=mail header.b=WQHYKNy6; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=crapouillou.net Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238380AbiLNM7M (ORCPT + 99 others); Wed, 14 Dec 2022 07:59:12 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58588 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238283AbiLNM7G (ORCPT ); Wed, 14 Dec 2022 07:59:06 -0500 Received: from aposti.net (aposti.net [89.234.176.197]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B794AD2C8; Wed, 14 Dec 2022 04:59:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=crapouillou.net; s=mail; t=1671022717; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=OWoSCk2ituhKYm0/ufJukih+FFvTeAkXh/icLalhjMU=; b=WQHYKNy6OB/jkbFThVhdeMU3KkWHydgSHaXQn9FzLTm135synLNrG8eIYt3yiHQs+o/WVU weO98VRMojZx8O68xVYEdEwFwyDlZZr3vjG7siwPXmRq4/Ln2nonqiebfWJINUChxklDOk x6fvTEIu05htYE0Zmf50eYtPowY3pbg= From: Paul Cercueil To: Phong LE , Neil Armstrong , Andrzej Hajda , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , David Airlie , Daniel Vetter , Rob Herring , Krzysztof Kozlowski Cc: list@opendingux.net, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Paul Cercueil Subject: [PATCH 04/10] drm: bridge: it66121: Write AVI infoframe with regmap_bulk_write() Date: Wed, 14 Dec 2022 13:58:15 +0100 Message-Id: <20221214125821.12489-5-paul@crapouillou.net> In-Reply-To: <20221214125821.12489-1-paul@crapouillou.net> References: <20221214125821.12489-1-paul@crapouillou.net> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1752194556145031099?= X-GMAIL-MSGID: =?utf-8?q?1752194556145031099?= Since all AVI infoframe registers are contiguous in the address space, the AVI infoframe can be written in one go with regmap_bulk_write(). Signed-off-by: Paul Cercueil Reviewed-by: Robert Foss --- drivers/gpu/drm/bridge/ite-it66121.c | 27 +++++++-------------------- 1 file changed, 7 insertions(+), 20 deletions(-) diff --git a/drivers/gpu/drm/bridge/ite-it66121.c b/drivers/gpu/drm/bridge/ite-it66121.c index 12222840df30..0a4fdfd7af44 100644 --- a/drivers/gpu/drm/bridge/ite-it66121.c +++ b/drivers/gpu/drm/bridge/ite-it66121.c @@ -773,24 +773,9 @@ void it66121_bridge_mode_set(struct drm_bridge *bridge, const struct drm_display_mode *mode, const struct drm_display_mode *adjusted_mode) { - int ret, i; u8 buf[HDMI_INFOFRAME_SIZE(AVI)]; struct it66121_ctx *ctx = container_of(bridge, struct it66121_ctx, bridge); - const u16 aviinfo_reg[HDMI_AVI_INFOFRAME_SIZE] = { - IT66121_AVIINFO_DB1_REG, - IT66121_AVIINFO_DB2_REG, - IT66121_AVIINFO_DB3_REG, - IT66121_AVIINFO_DB4_REG, - IT66121_AVIINFO_DB5_REG, - IT66121_AVIINFO_DB6_REG, - IT66121_AVIINFO_DB7_REG, - IT66121_AVIINFO_DB8_REG, - IT66121_AVIINFO_DB9_REG, - IT66121_AVIINFO_DB10_REG, - IT66121_AVIINFO_DB11_REG, - IT66121_AVIINFO_DB12_REG, - IT66121_AVIINFO_DB13_REG - }; + int ret; mutex_lock(&ctx->lock); @@ -810,10 +795,12 @@ void it66121_bridge_mode_set(struct drm_bridge *bridge, } /* Write new AVI infoframe packet */ - for (i = 0; i < HDMI_AVI_INFOFRAME_SIZE; i++) { - if (regmap_write(ctx->regmap, aviinfo_reg[i], buf[i + HDMI_INFOFRAME_HEADER_SIZE])) - goto unlock; - } + ret = regmap_bulk_write(ctx->regmap, IT66121_AVIINFO_DB1_REG, + &buf[HDMI_INFOFRAME_HEADER_SIZE], + HDMI_AVI_INFOFRAME_SIZE); + if (ret) + goto unlock; + if (regmap_write(ctx->regmap, IT66121_AVIINFO_CSUM_REG, buf[3])) goto unlock; From patchwork Wed Dec 14 12:58:16 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Cercueil X-Patchwork-Id: 33190 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:e747:0:0:0:0:0 with SMTP id c7csp202988wrn; Wed, 14 Dec 2022 05:02:30 -0800 (PST) X-Google-Smtp-Source: AA0mqf7wNUO0eBBvwez1I3onM5eTBwNKiHuct2wuIvaCgnPRlZRzHpJ5p+hgHFPWZlMYU/LiiGhI X-Received: by 2002:a17:906:df4a:b0:7c0:efbd:70a2 with SMTP id if10-20020a170906df4a00b007c0efbd70a2mr18468901ejc.42.1671022950436; Wed, 14 Dec 2022 05:02:30 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1671022950; cv=none; d=google.com; s=arc-20160816; b=zUxo2V/FbRggw4d1CX6+jDBcVya6cOX6UJv/7fYUnSKXEgtY34swicjyXdZN8k8Eed hcbJAa3++E/FUGxOgQGegkwIQF20+M9bHsMhJYJts5yORHfzRwMyiO4An0KcEle6A/ZN PkxF5PS9ByXOvi1G9ahPxS91Q6xyVrawopE448ikoYZUx0N169Tym/2I+mSNzpOkEflf cHjvlPgxeyuaLrTnKPHad7/1ZZ5XepdIHe5ZX5UfM3U9Aad25GGKtbaPfiZQpLrTd6pg D22zxveJiXtuiMel8H3L37T1P9GviCVzOLa0uNrXPHPAyW6LjHmiMm+rSyFS9QFHiu+K dIwQ== 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=IjEqO4+e5a85zoFujWIdC4NDhCTvt3vZK7qMG1zFzpw=; b=qAQIR14tzlRksAR3Qdtg1gl6pXWpT7G8/o6j+ziHwC9Oc6vXLWBm8FwJ5P3ElN3dpe jUh6W7xleO1a2ho1rPJCrxPGbHhK9HdXhH2OoECTTmB5zlY1mY/4OuOPR/7iWS2iBuki FGGvxjiE+IxQNMmBpmZ5W0to2oeJccBszflWBetc8EXZjhGSIVcB4Pz7Qtc9SxNSQkkL Ij8ftABAtMKnBt0OQN/Evw81sO7notJDeznnpkdUFz5vZzOG+1BDyjPqrN/S3StevNX2 2Z3F+fqFouENYSAYwM76diLyFBq5b93y8vVQOPKgs1Z1cjddX+lWah/OMwiI+dPb3tkn xOiQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@crapouillou.net header.s=mail header.b="cQ7sM/du"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=crapouillou.net Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id mm25-20020a170906cc5900b007c128ebacfcsi8469571ejb.835.2022.12.14.05.01.43; Wed, 14 Dec 2022 05:02:30 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@crapouillou.net header.s=mail header.b="cQ7sM/du"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=crapouillou.net Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238404AbiLNM7Q (ORCPT + 99 others); Wed, 14 Dec 2022 07:59:16 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58638 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238283AbiLNM7N (ORCPT ); Wed, 14 Dec 2022 07:59:13 -0500 Received: from aposti.net (aposti.net [89.234.176.197]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3B7AE2AD4; Wed, 14 Dec 2022 04:59:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=crapouillou.net; s=mail; t=1671022718; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=IjEqO4+e5a85zoFujWIdC4NDhCTvt3vZK7qMG1zFzpw=; b=cQ7sM/duB1Ux5RyiSMSRezimCjOFlDjgcHqu/LkB5qaauPqMY+kcSY77YiRqS0AG8ETxcA BjsEBiB4N5UcW9AWZxSlL2MPpBh9Z6sR6et5U2F5j/ynZ3lJZejoAvRXj3YFfb/5JxHaaJ g2cNzoksDdMX6uTjGK3w5RApjGizKd8= From: Paul Cercueil To: Phong LE , Neil Armstrong , Andrzej Hajda , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , David Airlie , Daniel Vetter , Rob Herring , Krzysztof Kozlowski Cc: list@opendingux.net, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Paul Cercueil Subject: [PATCH 05/10] drm: bridge: it66121: Fix wait for DDC ready Date: Wed, 14 Dec 2022 13:58:16 +0100 Message-Id: <20221214125821.12489-6-paul@crapouillou.net> In-Reply-To: <20221214125821.12489-1-paul@crapouillou.net> References: <20221214125821.12489-1-paul@crapouillou.net> MIME-Version: 1.0 X-Spam: Yes X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1752194561545896806?= X-GMAIL-MSGID: =?utf-8?q?1752194561545896806?= The function it66121_wait_ddc_ready() would previously read the status register until "true", which means it never actually polled anything and would just read the register once. Now, it will properly wait until the DDC hardware is ready or until it reported an error. The 'busy' variable was also renamed to 'error' since these bits are set on error and not when the DDC hardware is busy. Since the DDC ready function is now working properly, the msleep(20) can be removed. Signed-off-by: Paul Cercueil Reviewed-by: Robert Foss --- drivers/gpu/drm/bridge/ite-it66121.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/bridge/ite-it66121.c b/drivers/gpu/drm/bridge/ite-it66121.c index 0a4fdfd7af44..bfb9c87a7019 100644 --- a/drivers/gpu/drm/bridge/ite-it66121.c +++ b/drivers/gpu/drm/bridge/ite-it66121.c @@ -440,15 +440,17 @@ static int it66121_configure_afe(struct it66121_ctx *ctx, static inline int it66121_wait_ddc_ready(struct it66121_ctx *ctx) { int ret, val; - u32 busy = IT66121_DDC_STATUS_NOACK | IT66121_DDC_STATUS_WAIT_BUS | - IT66121_DDC_STATUS_ARBI_LOSE; + u32 error = IT66121_DDC_STATUS_NOACK | IT66121_DDC_STATUS_WAIT_BUS | + IT66121_DDC_STATUS_ARBI_LOSE; + u32 done = IT66121_DDC_STATUS_TX_DONE; - ret = regmap_read_poll_timeout(ctx->regmap, IT66121_DDC_STATUS_REG, val, true, - IT66121_EDID_SLEEP_US, IT66121_EDID_TIMEOUT_US); + ret = regmap_read_poll_timeout(ctx->regmap, IT66121_DDC_STATUS_REG, val, + val & (error | done), IT66121_EDID_SLEEP_US, + IT66121_EDID_TIMEOUT_US); if (ret) return ret; - if (val & busy) + if (val & error) return -EAGAIN; return 0; @@ -582,9 +584,6 @@ static int it66121_get_edid_block(void *context, u8 *buf, offset += cnt; remain -= cnt; - /* Per programming manual, sleep here before emptying the FIFO */ - msleep(20); - ret = it66121_wait_ddc_ready(ctx); if (ret) return ret; From patchwork Wed Dec 14 12:58:17 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Cercueil X-Patchwork-Id: 33192 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:e747:0:0:0:0:0 with SMTP id c7csp203443wrn; Wed, 14 Dec 2022 05:03:07 -0800 (PST) X-Google-Smtp-Source: AA0mqf4KdCDhAZoFrPAl1TlS51xn+6xD87QwN81BHkB0drN0kHI9a1cFsMZKrcno8AFCSzNDuuzG X-Received: by 2002:a05:6402:22da:b0:46b:c11:c8d2 with SMTP id dm26-20020a05640222da00b0046b0c11c8d2mr20976661edb.40.1671022987440; Wed, 14 Dec 2022 05:03:07 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1671022987; cv=none; d=google.com; s=arc-20160816; b=aVFMrPEjYOPt0Zw5QvrakoEDr85Z6+ILn0/LMrnR602fgLXpYkFUaikfW2L2nX+jGC Ssmxrz1PVR1XwgV0X1mDavqhaRLqCZGrAjHFZniJCcKs02KpzZJ30QTlEikhWZODLM5c O7UAJ1IcJ1VB+MVPniAbixuIrppxMPPGFzxzegQLUiQoWwNMGiqZzxJGsPA+/wKz048g mWGklB31tAZUjOMxLjinxqGwPj/gParcSJqYZc50BJbA6Lkwlm4jivWlJNuXtz+KqlMe 9Oir8RPYrMQZGFEwi7b69IX74eQP78z+sdqT2+o2m/Eb58Ma/YsRUsGaG+ZOfeUoIbyO xW4g== 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=2Ws6li5dO3CpsHCt9CPPSqXKDyNgVlYNQcMTzRYtTc0=; b=i/wVyoPlfNHvko7tmuUQpPYK/qxG8qqYFZ1AN9PBcX5s2bvaSXeW2Ybcyw9AzUgxKK OIctWVUWwtaaxohcYSIADiLgi7YoeV6kOwmxO8fxCMVN/4EoZzju2uwgBeg4Ua+PUW9p Ua8hjYSYK9D2rxC/PXKramhmxTSoeLcgAMjl/6bwofUxiXBK+jNX6n1pEPi/R9GEfz+u aGaZETH303VpEIeRd9P+9EjvLIlkw8lW7LQSoP3lRKPI2nLLfkrgowQRhViEQLIGI3TJ nNZxfHKFoLFdI6x/xMEhpK10tu1MWnkBp+UCAeRDEI/bFscaf/LbWd/M7S3D3474EAPH SHGw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@crapouillou.net header.s=mail header.b=Yx3CR7S3; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=crapouillou.net Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id dr14-20020a170907720e00b00791910ecd0fsi10707463ejc.540.2022.12.14.05.02.41; Wed, 14 Dec 2022 05:03:07 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@crapouillou.net header.s=mail header.b=Yx3CR7S3; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=crapouillou.net Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238413AbiLNM70 (ORCPT + 99 others); Wed, 14 Dec 2022 07:59:26 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58694 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238283AbiLNM7U (ORCPT ); Wed, 14 Dec 2022 07:59:20 -0500 Received: from aposti.net (aposti.net [89.234.176.197]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C16029FC8; Wed, 14 Dec 2022 04:59:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=crapouillou.net; s=mail; t=1671022719; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=2Ws6li5dO3CpsHCt9CPPSqXKDyNgVlYNQcMTzRYtTc0=; b=Yx3CR7S3q+zwFupKXU6o/dNqmCYY3D4AMyXhhL28ejrgEsIzv3C6TPiVBDzDgwJZghnKgG JZoBP+8kMeS2Cx2uZaW9f1duXF5NOiwlV8P6ilIqiMeJoffvvJUUwmCpi383rLQuXCWwto NRTlkEGFNsFbqpMJ/Q4Gwl8GMDeX+g8= From: Paul Cercueil To: Phong LE , Neil Armstrong , Andrzej Hajda , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , David Airlie , Daniel Vetter , Rob Herring , Krzysztof Kozlowski Cc: list@opendingux.net, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Paul Cercueil Subject: [PATCH 06/10] drm: bridge: it66121: Don't use DDC error IRQs Date: Wed, 14 Dec 2022 13:58:17 +0100 Message-Id: <20221214125821.12489-7-paul@crapouillou.net> In-Reply-To: <20221214125821.12489-1-paul@crapouillou.net> References: <20221214125821.12489-1-paul@crapouillou.net> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1752194599971047202?= X-GMAIL-MSGID: =?utf-8?q?1752194599971047202?= The DDC error IRQs will fire on the IT6610 every time the FIFO is empty, which is not very helpful. To resolve this, we can simply disable them, and handle DDC errors in it66121_wait_ddc_ready(). Signed-off-by: Paul Cercueil Reviewed-by: Robert Foss --- drivers/gpu/drm/bridge/ite-it66121.c | 49 ++++++---------------------- 1 file changed, 10 insertions(+), 39 deletions(-) diff --git a/drivers/gpu/drm/bridge/ite-it66121.c b/drivers/gpu/drm/bridge/ite-it66121.c index bfb9c87a7019..06fa59ae5ffc 100644 --- a/drivers/gpu/drm/bridge/ite-it66121.c +++ b/drivers/gpu/drm/bridge/ite-it66121.c @@ -515,16 +515,6 @@ static int it66121_get_edid_block(void *context, u8 *buf, offset = (block % 2) * len; block = block / 2; - ret = regmap_read(ctx->regmap, IT66121_INT_STATUS1_REG, &val); - if (ret) - return ret; - - if (val & IT66121_INT_STATUS1_DDC_BUSHANG) { - ret = it66121_abort_ddc_ops(ctx); - if (ret) - return ret; - } - ret = it66121_clear_ddc_fifo(ctx); if (ret) return ret; @@ -545,16 +535,6 @@ static int it66121_get_edid_block(void *context, u8 *buf, if (ret) return ret; - ret = regmap_read(ctx->regmap, IT66121_INT_STATUS1_REG, &val); - if (ret) - return ret; - - if (val & IT66121_INT_STATUS1_DDC_BUSHANG) { - ret = it66121_abort_ddc_ops(ctx); - if (ret) - return ret; - } - ret = it66121_preamble_ddc(ctx); if (ret) return ret; @@ -585,8 +565,10 @@ static int it66121_get_edid_block(void *context, u8 *buf, remain -= cnt; ret = it66121_wait_ddc_ready(ctx); - if (ret) + if (ret) { + it66121_abort_ddc_ops(ctx); return ret; + } ret = regmap_noinc_read(ctx->regmap, IT66121_DDC_RD_FIFO_REG, buf, cnt); @@ -671,11 +653,7 @@ static int it66121_bridge_attach(struct drm_bridge *bridge, /* Per programming manual, sleep here for bridge to settle */ msleep(50); - /* Start interrupts */ - return regmap_write_bits(ctx->regmap, IT66121_INT_MASK1_REG, - IT66121_INT_MASK1_DDC_NOACK | - IT66121_INT_MASK1_DDC_FIFOERR | - IT66121_INT_MASK1_DDC_BUSHANG, 0); + return 0; } static int it66121_set_mute(struct it66121_ctx *ctx, bool mute) @@ -926,21 +904,14 @@ static irqreturn_t it66121_irq_threaded_handler(int irq, void *dev_id) ret = regmap_read(ctx->regmap, IT66121_INT_STATUS1_REG, &val); if (ret) { dev_err(dev, "Cannot read STATUS1_REG %d\n", ret); - } else { - if (val & IT66121_INT_STATUS1_DDC_FIFOERR) - it66121_clear_ddc_fifo(ctx); - if (val & (IT66121_INT_STATUS1_DDC_BUSHANG | - IT66121_INT_STATUS1_DDC_NOACK)) - it66121_abort_ddc_ops(ctx); - if (val & IT66121_INT_STATUS1_HPD_STATUS) { - regmap_write_bits(ctx->regmap, IT66121_INT_CLR1_REG, - IT66121_INT_CLR1_HPD, IT66121_INT_CLR1_HPD); + } else if (val & IT66121_INT_STATUS1_HPD_STATUS) { + regmap_write_bits(ctx->regmap, IT66121_INT_CLR1_REG, + IT66121_INT_CLR1_HPD, IT66121_INT_CLR1_HPD); - status = it66121_is_hpd_detect(ctx) ? connector_status_connected - : connector_status_disconnected; + status = it66121_is_hpd_detect(ctx) ? connector_status_connected + : connector_status_disconnected; - event = true; - } + event = true; } regmap_write_bits(ctx->regmap, IT66121_SYS_STATUS_REG, From patchwork Wed Dec 14 12:58:18 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Cercueil X-Patchwork-Id: 33191 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:e747:0:0:0:0:0 with SMTP id c7csp203394wrn; Wed, 14 Dec 2022 05:03:03 -0800 (PST) X-Google-Smtp-Source: AA0mqf743NpFrHS6AV6ISiyGWYY6dn9DzOxCkCBY6qUv/R9mYNGzJkPGjvMqbBpCSPfnAy/RMqgj X-Received: by 2002:a05:6a20:d696:b0:9d:efbe:2052 with SMTP id it22-20020a056a20d69600b0009defbe2052mr35204485pzb.8.1671022983260; Wed, 14 Dec 2022 05:03:03 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1671022983; cv=none; d=google.com; s=arc-20160816; b=opmpl2OI/nKOxpUQGg+qYgOjaRfqMtqukcyOp5CKgemv4PODYDZY+78n7Ri2wo6kfi tVl6P+HJoQYDRucAHhztb0phoRIacHhhhNGLZjR+RydtdFnV7ND/N/WqoLcP5vpC2zyo sQG12ok5FakbTWTpb8C3bL+JHVlK9a0eCZs7VNDGDnfDzxLe1txH/HQT5921CXsElGz5 eD9IYBY27ASklXUuqcydOixxBW1QebP8Fw8oGPTsXjGEkYvHPt6TCfDSr6SwN4OpE1L2 HFfm5xNJHfhoV3bjAo5CtC9ua7lpip1xlIqQTc0/1wN309et0yXw+1/noiGpg7d1m3eF c1Qg== 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=K/tzTFKNZMMV1rVb1b3n0tYGGd7bT77iWuW0eM5CPb0=; b=K2bDXzh9a1Mb5kFc/yWyP4rDMQb/oRw9j2psgVKO64gUHxvFZYBKriuf1KUicpJKTK WU5qOMiyJ42srUgKz5LA12AhXDsd39MZxhKH0xX9eyaKpoQAPXbWtWQGwNf+wTMArrYy eZtvKns6xgpS7+NAZzIPRzI8OA1/4MINAr8LUvZv26dpdj9gdQERRImgodMgQ5+CU56N cKhWParNcXpi0V7dCMru//N2ta6Xq1FnWjgcLik2yDVfblP1fApbZdQ77dA+DUSUw0Ot bfZfZtoyRgyLrplXvbus65+NJFYj5DsUebA2GhDcQlTPwguQSWIFI1HHoeOl4df5ENY5 9uYA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@crapouillou.net header.s=mail header.b=CCR3Jzkc; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=crapouillou.net Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id v8-20020a63bf08000000b004776061dac9si15384164pgf.138.2022.12.14.05.02.46; Wed, 14 Dec 2022 05:03:03 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@crapouillou.net header.s=mail header.b=CCR3Jzkc; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=crapouillou.net Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237528AbiLNM7a (ORCPT + 99 others); Wed, 14 Dec 2022 07:59:30 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58766 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238416AbiLNM71 (ORCPT ); Wed, 14 Dec 2022 07:59:27 -0500 Received: from aposti.net (aposti.net [89.234.176.197]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B557960F1; Wed, 14 Dec 2022 04:59:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=crapouillou.net; s=mail; t=1671022719; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=K/tzTFKNZMMV1rVb1b3n0tYGGd7bT77iWuW0eM5CPb0=; b=CCR3JzkcrQ+B4tyoWwJL3L2TVfweylPk+HzdU2AjikcAi/uYXMI4ARgOFTeN/x+/dWqY9k izDSAMZnqNqvIKvlNoV5fEhv2aaKZqS7j4Xm79sZel9uJcrZjgvHi9U4O1jCEnOUs8DcGA JSqpM1oCWcQyajDG1YG+2XJMmAHRi+M= From: Paul Cercueil To: Phong LE , Neil Armstrong , Andrzej Hajda , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , David Airlie , Daniel Vetter , Rob Herring , Krzysztof Kozlowski Cc: list@opendingux.net, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Paul Cercueil Subject: [PATCH 07/10] drm: bridge: it66121: Don't clear DDC FIFO twice Date: Wed, 14 Dec 2022 13:58:18 +0100 Message-Id: <20221214125821.12489-8-paul@crapouillou.net> In-Reply-To: <20221214125821.12489-1-paul@crapouillou.net> References: <20221214125821.12489-1-paul@crapouillou.net> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1752194596133811419?= X-GMAIL-MSGID: =?utf-8?q?1752194596133811419?= The DDC FIFO was cleared before the loop in it66121_get_edid_block(), and at the beginning of each iteration; which means that it did not have to be cleared before the loop. Signed-off-by: Paul Cercueil Reviewed-by: Robert Foss --- drivers/gpu/drm/bridge/ite-it66121.c | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/drivers/gpu/drm/bridge/ite-it66121.c b/drivers/gpu/drm/bridge/ite-it66121.c index 06fa59ae5ffc..5335d4abd7c5 100644 --- a/drivers/gpu/drm/bridge/ite-it66121.c +++ b/drivers/gpu/drm/bridge/ite-it66121.c @@ -456,18 +456,6 @@ static inline int it66121_wait_ddc_ready(struct it66121_ctx *ctx) return 0; } -static int it66121_clear_ddc_fifo(struct it66121_ctx *ctx) -{ - int ret; - - ret = it66121_preamble_ddc(ctx); - if (ret) - return ret; - - return regmap_write(ctx->regmap, IT66121_DDC_COMMAND_REG, - IT66121_DDC_COMMAND_FIFO_CLR); -} - static int it66121_abort_ddc_ops(struct it66121_ctx *ctx) { int ret; @@ -515,10 +503,6 @@ static int it66121_get_edid_block(void *context, u8 *buf, offset = (block % 2) * len; block = block / 2; - ret = it66121_clear_ddc_fifo(ctx); - if (ret) - return ret; - while (remain > 0) { cnt = (remain > IT66121_EDID_FIFO_SIZE) ? IT66121_EDID_FIFO_SIZE : remain; From patchwork Wed Dec 14 12:58:19 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Cercueil X-Patchwork-Id: 33193 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:e747:0:0:0:0:0 with SMTP id c7csp203447wrn; Wed, 14 Dec 2022 05:03:08 -0800 (PST) X-Google-Smtp-Source: AA0mqf4srKfE7f2Awd35w1M2Te6u9kDAxnVp47Fua2u11Zd/5btsbolejba2A+tFs2Oy2/lKtOdz X-Received: by 2002:a17:90a:d705:b0:219:bd15:8c4c with SMTP id y5-20020a17090ad70500b00219bd158c4cmr28341075pju.34.1671022985190; Wed, 14 Dec 2022 05:03:05 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1671022985; cv=none; d=google.com; s=arc-20160816; b=OWnY9Sm2HRGHwLTBWf0/TMb9uB55ydtEXVQr6zW0oLsRLtUdtcG583WlDslEw5yytw MTjMyCB0aGYJSbDAyVI85LE1eOQV6gKDm7zmyqp5I6gkg1OHVTZbkw5EOn2mXNqndMNa EKXqX+EF7r+B/RLvf0IRJPdyomyMC9fh1oZwYPVh26A94zCbn/bpBf+OU1xXhvE9i4K8 zxkrZOwAEWPj19qlkTsT9o8AQoRNhyVuo/aOy9UxJF26IwUOj/m+YS+6QqXzwf/Qizsj PdZGjGOfwFl7TrQTrUdBIRhphBm2qTOKDwTJ/b4GyFKrp43uPEb2XZuVZsq1M5NHuxbf Sxow== 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=8KeMpz45TOyvVn4HaL38PVZq5CngjCz3MJ9MuW8B68E=; b=n8QycHVQGks66Ig1bf5jRt/0+T+jPLGP8OWryMPChvGJ2ldiQ9aY0V6Pf4JOeC9aT/ CQl4LuyybrFSj9rwgvTyz3M3ElfRL8mr7pgnE1d7mUOleg4mhtVJFnftGRJJJt9KrHI9 PPaXx7+NgXcGb7L8tdvykHUvi8a7tKxiCqdONipQ+Z8XwiossWNakp9xtXW+InJCMC0N a766QdWSn/0fgELujnvHJltPPUTzlcLoMBOFqRvxFp//n6DF+LRTI+VBRPdwCJ8YQPja DRhp9SFzp/CzMNVMgLHv2onRRGE5PN5PJqABf5RP5GhHAu/3GWIB0fY2a2jdpofUEaZJ hUuQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@crapouillou.net header.s=mail header.b=WxwtGcHN; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=crapouillou.net Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id k7-20020a17090a514700b00219d31681b8si1779688pjm.42.2022.12.14.05.02.50; Wed, 14 Dec 2022 05:03:05 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@crapouillou.net header.s=mail header.b=WxwtGcHN; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=crapouillou.net Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238289AbiLNM7i (ORCPT + 99 others); Wed, 14 Dec 2022 07:59:38 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58834 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238421AbiLNM7e (ORCPT ); Wed, 14 Dec 2022 07:59:34 -0500 Received: from aposti.net (aposti.net [89.234.176.197]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D3A956383; Wed, 14 Dec 2022 04:59:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=crapouillou.net; s=mail; t=1671022720; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=8KeMpz45TOyvVn4HaL38PVZq5CngjCz3MJ9MuW8B68E=; b=WxwtGcHNpUdeoMnK9VyRRg1AKQrf7nrJx2dLo+asEzu8mp12lAvL0MApYB073TpGc9enhA ikJV6XHx0WOUB7IM2eU3Sbdzj2VINliYZIfpBlMFeVZWkyoZ3026A6iMsICsHNNZSQ1ttJ /otM2kHhHEk3Hvus50mtdJPhKLXUmbs= From: Paul Cercueil To: Phong LE , Neil Armstrong , Andrzej Hajda , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , David Airlie , Daniel Vetter , Rob Herring , Krzysztof Kozlowski Cc: list@opendingux.net, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Paul Cercueil Subject: [PATCH 08/10] drm: bridge: it66121: Set DDC preamble only once before reading EDID Date: Wed, 14 Dec 2022 13:58:19 +0100 Message-Id: <20221214125821.12489-9-paul@crapouillou.net> In-Reply-To: <20221214125821.12489-1-paul@crapouillou.net> References: <20221214125821.12489-1-paul@crapouillou.net> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1752194597341599878?= X-GMAIL-MSGID: =?utf-8?q?1752194597341599878?= The DDC preamble and target address only need to be set once before reading the EDID, even if multiple segments have to be read. Signed-off-by: Paul Cercueil Reviewed-by: Robert Foss --- drivers/gpu/drm/bridge/ite-it66121.c | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/drivers/gpu/drm/bridge/ite-it66121.c b/drivers/gpu/drm/bridge/ite-it66121.c index 5335d4abd7c5..7972003d4776 100644 --- a/drivers/gpu/drm/bridge/ite-it66121.c +++ b/drivers/gpu/drm/bridge/ite-it66121.c @@ -506,9 +506,6 @@ static int it66121_get_edid_block(void *context, u8 *buf, while (remain > 0) { cnt = (remain > IT66121_EDID_FIFO_SIZE) ? IT66121_EDID_FIFO_SIZE : remain; - ret = it66121_preamble_ddc(ctx); - if (ret) - return ret; ret = regmap_write(ctx->regmap, IT66121_DDC_COMMAND_REG, IT66121_DDC_COMMAND_FIFO_CLR); @@ -519,15 +516,6 @@ static int it66121_get_edid_block(void *context, u8 *buf, if (ret) return ret; - ret = it66121_preamble_ddc(ctx); - if (ret) - return ret; - - ret = regmap_write(ctx->regmap, IT66121_DDC_HEADER_REG, - IT66121_DDC_HEADER_EDID); - if (ret) - return ret; - ret = regmap_write(ctx->regmap, IT66121_DDC_OFFSET_REG, offset); if (ret) return ret; @@ -842,9 +830,25 @@ static struct edid *it66121_bridge_get_edid(struct drm_bridge *bridge, { struct it66121_ctx *ctx = container_of(bridge, struct it66121_ctx, bridge); struct edid *edid; + int ret; mutex_lock(&ctx->lock); + ret = it66121_preamble_ddc(ctx); + if (ret) { + edid = ERR_PTR(ret); + goto out_unlock; + } + + ret = regmap_write(ctx->regmap, IT66121_DDC_HEADER_REG, + IT66121_DDC_HEADER_EDID); + if (ret) { + edid = ERR_PTR(ret); + goto out_unlock; + } + edid = drm_do_get_edid(connector, it66121_get_edid_block, ctx); + +out_unlock: mutex_unlock(&ctx->lock); return edid; From patchwork Wed Dec 14 13:01:22 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Cercueil X-Patchwork-Id: 33195 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:e747:0:0:0:0:0 with SMTP id c7csp204321wrn; Wed, 14 Dec 2022 05:04:17 -0800 (PST) X-Google-Smtp-Source: AA0mqf6MNI4DLf1DxawbWIF5eCL7kYTQ1qlQoSNXcRdTjo6IE1uFlHtnIxzjyosaGb8Pox+KJJT2 X-Received: by 2002:a05:6a00:813:b0:578:4efa:e3ae with SMTP id m19-20020a056a00081300b005784efae3aemr24347648pfk.33.1671023057415; Wed, 14 Dec 2022 05:04:17 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1671023057; cv=none; d=google.com; s=arc-20160816; b=rIcEnRbtylRKC1DywEL+zZ2nVbGNs5MVPRcPwPeWBXDzLzjqwT5ziRcpsC4DwLljxz XitR6LhWeKQFQ9YecLgMk5EuLZNqrG1MYY8WzQNB6Nsv3rQYp7n2y4XbOJEVA0F3EHrJ nbJ1xgEMBFygtIis7EQjAxIYlrCgkGRm71uQoXA24wpazFS+HFYSG81M8TI7/P+pD1e9 UP4sfWPpCUctP9psI0dDDJlWcoWdTOfA6V0Z2iWmLiERQLaTdIyM+KftNlqBKp6zqTkV 74hsKGxo8rrEXMlck6cMN0/KDHO8BrL7inbbSCdlJb+IZsEb2napghOIl30fOU5+8HS0 OVUg== 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=Xz93IPFieV9WZW5Gg4FpvmQyVwuBdgxq4Bwe+uEuf+8=; b=DggdQNXwKmA9f6Ycbv8zol9e36fjP7BfYVpH1oTmdz7ebA7cu3N0VXd3TzmJyJRwkz p8ZDQGk2MlIOUJlcj4ETaPfJd1tbE6we/a99xJgbitUNdGbxFEBh3xg+49nku4RZffyj gfhFIl3eCOk4xkwP6419eUEcI6amKFCv6bVKHA9wsEAoFlgBfn2e8R7FtfnjBuw3+W39 ru6VuZ+P7mglkK2JJXtTRqrf9wwggJK2612X8AvwRwHk/mSs/lrkrt50/zINXdaeNuk+ xouyp/ElqQ0cNiGzAHSXchFiKEccQ6b19ZVwUnBrQLWbncJD3b64akaNks58H17uELMh X8uQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@crapouillou.net header.s=mail header.b=CXGjkewK; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=crapouillou.net Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id e16-20020a62aa10000000b005747a147929si14547471pff.21.2022.12.14.05.04.02; Wed, 14 Dec 2022 05:04:17 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@crapouillou.net header.s=mail header.b=CXGjkewK; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=crapouillou.net Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238455AbiLNNCs (ORCPT + 99 others); Wed, 14 Dec 2022 08:02:48 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60952 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238447AbiLNNCL (ORCPT ); Wed, 14 Dec 2022 08:02:11 -0500 Received: from aposti.net (aposti.net [89.234.176.197]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 48795313; Wed, 14 Dec 2022 05:01:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=crapouillou.net; s=mail; t=1671022886; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Xz93IPFieV9WZW5Gg4FpvmQyVwuBdgxq4Bwe+uEuf+8=; b=CXGjkewKSL1heZ8BJd/MmWY9TG4IYsU+t6d6zAoCqRIO/38IJF0Vf0XAOaGlMhzmwubZau aUuw1svfwrCu7RL+gHSITIsyKtt/BFIbrSaT6NXuCjLsG+RMfeHNmpkcN+1f/CbST2CRJ9 WfFnBedMnAlwEOjVq7eiXeKw81g6O4w= From: Paul Cercueil To: Phong LE , Neil Armstrong , Andrzej Hajda , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , David Airlie , Daniel Vetter , Rob Herring , Krzysztof Kozlowski Cc: list@opendingux.net, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Paul Cercueil Subject: [PATCH 09/10] drm: bridge: it66121: Move VID/PID to new it66121_chip_info structure Date: Wed, 14 Dec 2022 14:01:22 +0100 Message-Id: <20221214130122.12911-1-paul@crapouillou.net> In-Reply-To: <20221214125821.12489-1-paul@crapouillou.net> References: <20221214125821.12489-1-paul@crapouillou.net> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1752194673187612790?= X-GMAIL-MSGID: =?utf-8?q?1752194673187612790?= This will make it easier later to introduce support for new chips in this driver. Signed-off-by: Paul Cercueil Reviewed-by: Robert Foss --- drivers/gpu/drm/bridge/ite-it66121.c | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/drivers/gpu/drm/bridge/ite-it66121.c b/drivers/gpu/drm/bridge/ite-it66121.c index 7972003d4776..43b027b85b8e 100644 --- a/drivers/gpu/drm/bridge/ite-it66121.c +++ b/drivers/gpu/drm/bridge/ite-it66121.c @@ -35,10 +35,6 @@ #define IT66121_DEVICE_ID0_REG 0x02 #define IT66121_DEVICE_ID1_REG 0x03 -#define IT66121_VENDOR_ID0 0x54 -#define IT66121_VENDOR_ID1 0x49 -#define IT66121_DEVICE_ID0 0x12 -#define IT66121_DEVICE_ID1 0x06 #define IT66121_REVISION_MASK GENMASK(7, 4) #define IT66121_DEVICE_ID1_MASK GENMASK(3, 0) @@ -286,13 +282,12 @@ #define IT66121_AUD_SWL_16BIT 0x2 #define IT66121_AUD_SWL_NOT_INDICATED 0x0 -#define IT66121_VENDOR_ID0 0x54 -#define IT66121_VENDOR_ID1 0x49 -#define IT66121_DEVICE_ID0 0x12 -#define IT66121_DEVICE_ID1 0x06 -#define IT66121_DEVICE_MASK 0x0F #define IT66121_AFE_CLK_HIGH 80000 /* Khz */ +struct it66121_chip_info { + u16 vid, pid; +}; + struct it66121_ctx { struct regmap *regmap; struct drm_bridge bridge; @@ -311,6 +306,7 @@ struct it66121_ctx { u8 swl; bool auto_cts; } audio; + const struct it66121_chip_info *info; }; static const struct regmap_range_cfg it66121_regmap_banks[] = { @@ -1451,6 +1447,7 @@ static const char * const it66121_supplies[] = { static int it66121_probe(struct i2c_client *client) { + const struct i2c_device_id *id = i2c_client_get_device_id(client); u32 revision_id, vendor_ids[2] = { 0 }, device_ids[2] = { 0 }; struct device_node *ep; int ret; @@ -1472,6 +1469,7 @@ static int it66121_probe(struct i2c_client *client) ctx->dev = dev; ctx->client = client; + ctx->info = (const struct it66121_chip_info *) id->driver_data; of_property_read_u32(ep, "bus-width", &ctx->bus_width); of_node_put(ep); @@ -1523,8 +1521,8 @@ static int it66121_probe(struct i2c_client *client) revision_id = FIELD_GET(IT66121_REVISION_MASK, device_ids[1]); device_ids[1] &= IT66121_DEVICE_ID1_MASK; - if (vendor_ids[0] != IT66121_VENDOR_ID0 || vendor_ids[1] != IT66121_VENDOR_ID1 || - device_ids[0] != IT66121_DEVICE_ID0 || device_ids[1] != IT66121_DEVICE_ID1) { + if ((vendor_ids[1] << 8 | vendor_ids[0]) != ctx->info->vid || + (device_ids[1] << 8 | device_ids[0]) != ctx->info->pid) { return -ENODEV; } @@ -1563,8 +1561,13 @@ static const struct of_device_id it66121_dt_match[] = { }; MODULE_DEVICE_TABLE(of, it66121_dt_match); +static const struct it66121_chip_info it66121_chip_info = { + .vid = 0x4954, + .pid = 0x0612, +}; + static const struct i2c_device_id it66121_id[] = { - { "it66121", 0 }, + { "it66121", (kernel_ulong_t) &it66121_chip_info }, { } }; MODULE_DEVICE_TABLE(i2c, it66121_id); From patchwork Wed Dec 14 13:01:31 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Cercueil X-Patchwork-Id: 33194 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:e747:0:0:0:0:0 with SMTP id c7csp204310wrn; Wed, 14 Dec 2022 05:04:16 -0800 (PST) X-Google-Smtp-Source: AA0mqf4JZzDB0W+3GZEbx0dNF/Cr+pUi8vlXXhGTZkFfkyYgSLO8uKyUx1YEmNVOf3A64xpEfH/u X-Received: by 2002:a17:906:9704:b0:7c1:7442:8b70 with SMTP id k4-20020a170906970400b007c174428b70mr9600156ejx.75.1671023056293; Wed, 14 Dec 2022 05:04:16 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1671023056; cv=none; d=google.com; s=arc-20160816; b=BnEi1G8zEbPnUdqynU+NX8cYGsbfdc4mK2EOHsgZYm/Yv2fyFqxZDdR+1oNTlm+SfD RHZSJvw2rR2ZnNoeSeUowuYgQtSUzob0qZ6k9Rij74z/U0PyHMhX9ve06AY7yQu+6yOr yxKVsxrAyz5JOXBQdbwKtJ6kW7sZ8LsM2yjI3L9pXUK9EP55ypIfSoGzE9gKQAYv7IQw gQZRYQMiQjcXCx3A4Rd2gpcp2FloCR7JxZI20qY4vQwGzIU0kwbefGe1a/4mo3bZNRm9 wfnFMgHyeQWWbag5YaCSM1Qkm3UMIoN4+SmRm5w2Qx6LZ2qPLOYa312hP1uniDAudSA1 DByw== 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=54+4ueu5T1/xC0rmHnqvYZ6EX75p2F2DCkDDVJurBq8=; b=qxOfFFR0BdQGe1waTluo9/fmAZkzXZMhaf4k0dK1Rxy1F+uleWAgpMsXC+Do8xguoe Qvtx7FcQ+f78Jwx44uT703XhucObElZrO4Q9/1MMFGy4a6csqqsyJhJKppaYu+UkbYX1 zjPi/KUnWgiNIig9bRpDX6TpdINq0H9i/vI0jmxIbgKu3cLEcXh2vq2Gc0JKEUSDHqOO L4lqpK/U2gD0FeykV1gxDdT+jQNSTeGd4VtB4R9YfzwofiyOaZJVeRAjcsg2qeLJJfgu H+IwakWAjXGOIbr1uA8EwzTAP+CL+n+jlJyG6FfYbLsJKa0CgVkglZqJmK/E3IK1TWXq A2SA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@crapouillou.net header.s=mail header.b=AYA5uFXV; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=crapouillou.net Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id hp26-20020a1709073e1a00b007c0db55679bsi11696230ejc.114.2022.12.14.05.03.51; Wed, 14 Dec 2022 05:04:16 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@crapouillou.net header.s=mail header.b=AYA5uFXV; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=crapouillou.net Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238450AbiLNNCv (ORCPT + 99 others); Wed, 14 Dec 2022 08:02:51 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60984 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238471AbiLNNCO (ORCPT ); Wed, 14 Dec 2022 08:02:14 -0500 Received: from aposti.net (aposti.net [89.234.176.197]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4AA471022; Wed, 14 Dec 2022 05:01:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=crapouillou.net; s=mail; t=1671022896; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=54+4ueu5T1/xC0rmHnqvYZ6EX75p2F2DCkDDVJurBq8=; b=AYA5uFXVtLsqM5Mwh7qvJwRdGdJy/7tQE13iGDpRyM0xYx4nuqgL9deriatRy/FJkwV3us mbAG9Hnemi5O71+4CPskroO2XMdfvQ2z9IKj2nS0QE3BcZusLf5oy8tKoq5wpadmU33dCO VVJg9q9xPJZJ+4hdsQ9bPpFTufZh9OY= From: Paul Cercueil To: Phong LE , Neil Armstrong , Andrzej Hajda , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , David Airlie , Daniel Vetter , Rob Herring , Krzysztof Kozlowski Cc: list@opendingux.net, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Paul Cercueil Subject: [PATCH 10/10] drm: bridge: it66121: Add support for the IT6610 Date: Wed, 14 Dec 2022 14:01:31 +0100 Message-Id: <20221214130131.12962-1-paul@crapouillou.net> In-Reply-To: <20221214125821.12489-1-paul@crapouillou.net> References: <20221214125821.12489-1-paul@crapouillou.net> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1752194672264852708?= X-GMAIL-MSGID: =?utf-8?q?1752194672264852708?= Add support for the IT6610 HDMI encoder. The hardware is very similar, and therefore the driver did not require too many changes. Some bits are only available on the IT66121, and vice-versa. Also, the IT6610 requires specific polarities on the DE and pixel lines. Signed-off-by: Paul Cercueil Reviewed-by: Robert Foss --- drivers/gpu/drm/bridge/ite-it66121.c | 108 +++++++++++++++++++++------ 1 file changed, 86 insertions(+), 22 deletions(-) diff --git a/drivers/gpu/drm/bridge/ite-it66121.c b/drivers/gpu/drm/bridge/ite-it66121.c index 43b027b85b8e..b34860871627 100644 --- a/drivers/gpu/drm/bridge/ite-it66121.c +++ b/drivers/gpu/drm/bridge/ite-it66121.c @@ -68,6 +68,7 @@ #define IT66121_AFE_XP_ENO BIT(4) #define IT66121_AFE_XP_RESETB BIT(3) #define IT66121_AFE_XP_PWDI BIT(2) +#define IT6610_AFE_XP_BYPASS BIT(0) #define IT66121_AFE_IP_REG 0x64 #define IT66121_AFE_IP_GAINBIT BIT(7) @@ -284,7 +285,13 @@ #define IT66121_AFE_CLK_HIGH 80000 /* Khz */ +enum chip_id { + ID_IT6610, + ID_IT66121, +}; + struct it66121_chip_info { + enum chip_id id; u16 vid, pid; }; @@ -391,16 +398,22 @@ static int it66121_configure_afe(struct it66121_ctx *ctx, ret = regmap_write_bits(ctx->regmap, IT66121_AFE_IP_REG, IT66121_AFE_IP_GAINBIT | - IT66121_AFE_IP_ER0 | - IT66121_AFE_IP_EC1, + IT66121_AFE_IP_ER0, IT66121_AFE_IP_GAINBIT); if (ret) return ret; - ret = regmap_write_bits(ctx->regmap, IT66121_AFE_XP_EC1_REG, - IT66121_AFE_XP_EC1_LOWCLK, 0x80); - if (ret) - return ret; + if (ctx->info->id == ID_IT66121) { + ret = regmap_write_bits(ctx->regmap, IT66121_AFE_IP_REG, + IT66121_AFE_IP_EC1, 0); + if (ret) + return ret; + + ret = regmap_write_bits(ctx->regmap, IT66121_AFE_XP_EC1_REG, + IT66121_AFE_XP_EC1_LOWCLK, 0x80); + if (ret) + return ret; + } } else { ret = regmap_write_bits(ctx->regmap, IT66121_AFE_XP_REG, IT66121_AFE_XP_GAINBIT | @@ -411,17 +424,24 @@ static int it66121_configure_afe(struct it66121_ctx *ctx, ret = regmap_write_bits(ctx->regmap, IT66121_AFE_IP_REG, IT66121_AFE_IP_GAINBIT | - IT66121_AFE_IP_ER0 | - IT66121_AFE_IP_EC1, IT66121_AFE_IP_ER0 | - IT66121_AFE_IP_EC1); + IT66121_AFE_IP_ER0, + IT66121_AFE_IP_ER0); if (ret) return ret; - ret = regmap_write_bits(ctx->regmap, IT66121_AFE_XP_EC1_REG, - IT66121_AFE_XP_EC1_LOWCLK, - IT66121_AFE_XP_EC1_LOWCLK); - if (ret) - return ret; + if (ctx->info->id == ID_IT66121) { + ret = regmap_write_bits(ctx->regmap, IT66121_AFE_IP_REG, + IT66121_AFE_IP_EC1, + IT66121_AFE_IP_EC1); + if (ret) + return ret; + + ret = regmap_write_bits(ctx->regmap, IT66121_AFE_XP_EC1_REG, + IT66121_AFE_XP_EC1_LOWCLK, + IT66121_AFE_XP_EC1_LOWCLK); + if (ret) + return ret; + } } /* Clear reset flags */ @@ -430,6 +450,14 @@ static int it66121_configure_afe(struct it66121_ctx *ctx, if (ret) return ret; + if (ctx->info->id == ID_IT6610) { + ret = regmap_write_bits(ctx->regmap, IT66121_AFE_XP_REG, + IT6610_AFE_XP_BYPASS, + IT6610_AFE_XP_BYPASS); + if (ret) + return ret; + } + return it66121_fire_afe(ctx); } @@ -491,7 +519,6 @@ static int it66121_get_edid_block(void *context, u8 *buf, unsigned int block, size_t len) { struct it66121_ctx *ctx = context; - unsigned int val; int remain = len; int offset = 0; int ret, cnt; @@ -572,10 +599,12 @@ static int it66121_bridge_attach(struct drm_bridge *bridge, if (ret) return ret; - ret = regmap_write_bits(ctx->regmap, IT66121_CLK_BANK_REG, - IT66121_CLK_BANK_PWROFF_RCLK, 0); - if (ret) - return ret; + if (ctx->info->id == ID_IT66121) { + ret = regmap_write_bits(ctx->regmap, IT66121_CLK_BANK_REG, + IT66121_CLK_BANK_PWROFF_RCLK, 0); + if (ret) + return ret; + } ret = regmap_write_bits(ctx->regmap, IT66121_INT_REG, IT66121_INT_TX_CLK_OFF, 0); @@ -713,6 +742,24 @@ static void it66121_bridge_disable(struct drm_bridge *bridge, ctx->connector = NULL; } +static int it66121_bridge_check(struct drm_bridge *bridge, + struct drm_bridge_state *bridge_state, + struct drm_crtc_state *crtc_state, + struct drm_connector_state *conn_state) +{ + struct it66121_ctx *ctx = container_of(bridge, struct it66121_ctx, bridge); + + if (ctx->info->id == ID_IT6610) { + /* The IT6610 only supports these settings */ + bridge_state->input_bus_cfg.flags |= DRM_BUS_FLAG_DE_HIGH | + DRM_BUS_FLAG_PIXDATA_DRIVE_NEGEDGE; + bridge_state->input_bus_cfg.flags &= + ~DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE; + } + + return 0; +} + static void it66121_bridge_mode_set(struct drm_bridge *bridge, const struct drm_display_mode *mode, @@ -758,9 +805,12 @@ void it66121_bridge_mode_set(struct drm_bridge *bridge, if (regmap_write(ctx->regmap, IT66121_HDMI_MODE_REG, IT66121_HDMI_MODE_HDMI)) goto unlock; - if (regmap_write_bits(ctx->regmap, IT66121_CLK_BANK_REG, - IT66121_CLK_BANK_PWROFF_TXCLK, IT66121_CLK_BANK_PWROFF_TXCLK)) + if (ctx->info->id == ID_IT66121 && + regmap_write_bits(ctx->regmap, IT66121_CLK_BANK_REG, + IT66121_CLK_BANK_PWROFF_TXCLK, + IT66121_CLK_BANK_PWROFF_TXCLK)) { goto unlock; + } if (it66121_configure_input(ctx)) goto unlock; @@ -768,7 +818,11 @@ void it66121_bridge_mode_set(struct drm_bridge *bridge, if (it66121_configure_afe(ctx, adjusted_mode)) goto unlock; - regmap_write_bits(ctx->regmap, IT66121_CLK_BANK_REG, IT66121_CLK_BANK_PWROFF_TXCLK, 0); + if (ctx->info->id == ID_IT66121 && + regmap_write_bits(ctx->regmap, IT66121_CLK_BANK_REG, + IT66121_CLK_BANK_PWROFF_TXCLK, 0)) { + goto unlock; + } unlock: mutex_unlock(&ctx->lock); @@ -859,6 +913,7 @@ static const struct drm_bridge_funcs it66121_bridge_funcs = { .atomic_get_input_bus_fmts = it66121_bridge_atomic_get_input_bus_fmts, .atomic_enable = it66121_bridge_enable, .atomic_disable = it66121_bridge_disable, + .atomic_check = it66121_bridge_check, .mode_set = it66121_bridge_mode_set, .mode_valid = it66121_bridge_mode_valid, .detect = it66121_bridge_detect, @@ -1557,17 +1612,26 @@ static void it66121_remove(struct i2c_client *client) static const struct of_device_id it66121_dt_match[] = { { .compatible = "ite,it66121" }, + { .compatible = "ite,it6610" }, { } }; MODULE_DEVICE_TABLE(of, it66121_dt_match); 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 i2c_device_id it66121_id[] = { { "it66121", (kernel_ulong_t) &it66121_chip_info }, + { "it6610", (kernel_ulong_t) &it6610_chip_info }, { } }; MODULE_DEVICE_TABLE(i2c, it66121_id);