From patchwork Wed Feb 22 22:12:47 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Niklas_S=C3=B6derlund?= X-Patchwork-Id: 90025 X-Patchwork-Delegate: hverkuil@xs4all.nl Received: from vger.kernel.org ([23.128.96.18]) by www.linuxtv.org with esmtp (Exim 4.92) (envelope-from ) id 1pUxO3-0072tx-0E; Wed, 22 Feb 2023 22:14:55 +0000 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232723AbjBVWOw (ORCPT + 1 other); Wed, 22 Feb 2023 17:14:52 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39384 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232895AbjBVWOe (ORCPT ); Wed, 22 Feb 2023 17:14:34 -0500 Received: from mail-ed1-x534.google.com (mail-ed1-x534.google.com [IPv6:2a00:1450:4864:20::534]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B7ABF2114 for ; Wed, 22 Feb 2023 14:14:05 -0800 (PST) Received: by mail-ed1-x534.google.com with SMTP id ec43so35847722edb.8 for ; Wed, 22 Feb 2023 14:14:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ragnatech-se.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=LTEndFXZ/l1vDOfzmYbg3ZufQ1osqUOSn+fpUklZzgo=; b=Iyuy6frOKBtwCAC0jTBbHeUubipxvnbXn6Pe9dNSehaH6IyV9WGI4TQCAT88rt+39G gsOAiL0HYz0uzzxkVB2dgH5UsqVUJ9lkQJjpSbbWXkGUXyAdvWcYBI2E96sYcY9SBTMS WEzDny6Bfy3Eox7VrhXNBGkpDATjkJEjGjq+x1mnz7dDPNBQ+DA+To77NoSOfPLPz8l1 mBp4mxaNKh3U9lmSFRTA8mkl7ZJEafDG5lvzAR5AQ4D3QzeLeJFiGDCxwjZHAFDLhreA u9QURia/t7eiGdlQJctXoFff6nBqA7M9JKUpYX1wyv9F7eWWICS+pbhKz6vGt8ag+ybX JFnQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=LTEndFXZ/l1vDOfzmYbg3ZufQ1osqUOSn+fpUklZzgo=; b=B1U6zw6S13DUPbxtW5zwb6O0phHgo/ty8DEY7f+za2zKDzDco7R5mfQ1bCpuoOvjSd v+juQmbuwm34kjZu3y/Zw12lytgAeN5su8ukyqxYX3QMxDTSb9w+GTsYZ/87aLVOhAnZ c4ulR3rgp9JYp+JO60ameeILsaBQNo9orw2YSQxopKSUP4m/xOi15ojF1oI1LkmECumJ xEK4BNOt57fw0bpfeE8yp3cioDsZHpF3Vl9U8Ux4m5a4NlHOIEe2toahGyauX8hbbiNa SS/exRhfl7VwzB1VLODqr/JKoDeWu5ZT/UwnmHot+tj92n2bL0d97xqY0aK2JIycvhPu mJVw== X-Gm-Message-State: AO0yUKUYnkCSdPWUV0vURXLgfngE09pHo4awPCj4QWMWHG+pmar9Mm7G 61iKHZHtMWxRJ+VQgAqRNWAwRA== X-Google-Smtp-Source: AK7set/TRpEFhpMT+/2HLh4qIz7Z+rHiLTXj+0HwclPVQW3m8WdkCp23shUFujeRnIwV6PEKm11bBA== X-Received: by 2002:a50:ed0c:0:b0:4af:601c:ea21 with SMTP id j12-20020a50ed0c000000b004af601cea21mr3921313eds.38.1677104040607; Wed, 22 Feb 2023 14:14:00 -0800 (PST) Received: from sleipner.berto.se (p54ac5802.dip0.t-ipconnect.de. [84.172.88.2]) by smtp.googlemail.com with ESMTPSA id a26-20020a170906685a00b008b1b86bf668sm7711893ejs.4.2023.02.22.14.13.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Feb 2023 14:14:00 -0800 (PST) From: =?utf-8?q?Niklas_S=C3=B6derlund?= To: Kieran Bingham , Hans Verkuil , linux-media@vger.kernel.org Cc: linux-renesas-soc@vger.kernel.org, =?utf-8?q?Niklas_S=C3=B6derlund?= Subject: [PATCH 1/3] media: i2c: adv748x: Fix lookup of DV timings Date: Wed, 22 Feb 2023 23:12:47 +0100 Message-Id: <20230222221249.1324102-2-niklas.soderlund+renesas@ragnatech.se> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230222221249.1324102-1-niklas.soderlund+renesas@ragnatech.se> References: <20230222221249.1324102-1-niklas.soderlund+renesas@ragnatech.se> MIME-Version: 1.0 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS autolearn=unavailable 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-media@vger.kernel.org X-LSpam-Score: -2.4 (--) X-LSpam-Report: No, score=-2.4 required=5.0 tests=BAYES_00=-1.9,DKIM_SIGNED=0.1,DKIM_VALID=-0.1,HEADER_FROM_DIFFERENT_DOMAINS=0.5,MAILING_LIST_MULTI=-1 autolearn=ham autolearn_force=no The loop to match the requested timings with the ones supported by the driver is incorrect. It always iterates thru the whole array of supported modes. The bounds check after the loop always triggers resulting in adv748x_hdmi_set_video_timings() always returning -EINVAL. Fix this by correcting the lookup to break the loop when a match is found. Signed-off-by: Niklas Söderlund Reviewed-by: Geert Uytterhoeven --- drivers/media/i2c/adv748x/adv748x-hdmi.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/media/i2c/adv748x/adv748x-hdmi.c b/drivers/media/i2c/adv748x/adv748x-hdmi.c index 52fa7bd75660..1d62e05572cd 100644 --- a/drivers/media/i2c/adv748x/adv748x-hdmi.c +++ b/drivers/media/i2c/adv748x/adv748x-hdmi.c @@ -176,9 +176,9 @@ static int adv748x_hdmi_set_video_timings(struct adv748x_state *state, unsigned int i; for (i = 0; i < ARRAY_SIZE(adv748x_hdmi_video_standards); i++) { - if (!v4l2_match_dv_timings(timings, &stds[i].timings, 250000, - false)) - continue; + if (v4l2_match_dv_timings(timings, &stds[i].timings, 250000, + false)) + break; } if (i >= ARRAY_SIZE(adv748x_hdmi_video_standards)) From patchwork Wed Feb 22 22:12:48 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Niklas_S=C3=B6derlund?= X-Patchwork-Id: 90026 X-Patchwork-Delegate: hverkuil@xs4all.nl Received: from vger.kernel.org ([23.128.96.18]) by www.linuxtv.org with esmtp (Exim 4.92) (envelope-from ) id 1pUxO3-0072tx-TG; Wed, 22 Feb 2023 22:14:59 +0000 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232835AbjBVWOx (ORCPT + 1 other); Wed, 22 Feb 2023 17:14:53 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39424 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232903AbjBVWOg (ORCPT ); Wed, 22 Feb 2023 17:14:36 -0500 Received: from mail-ed1-x530.google.com (mail-ed1-x530.google.com [IPv6:2a00:1450:4864:20::530]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F300948E1F for ; Wed, 22 Feb 2023 14:14:07 -0800 (PST) Received: by mail-ed1-x530.google.com with SMTP id b12so36338902edd.4 for ; Wed, 22 Feb 2023 14:14:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ragnatech-se.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=qGUJrtnlz9Yo3S83G8V63+H0kWn768DHMiymUEO8oRc=; b=VxGB6sPzhAIZM/XP47p7RUWvv+v6HYDJk5eU+CCIqVYqkRzjaH/GWNvz3F2+KZ4JGz mYHNTdFq66G8rEKmRtY5IjyEVpiXJ6Z/0dIpkYbWs0m7X4hFWKpdA2HtVQixrxTz42WF L46WsTdiuRbGWo0akeCzeSXsQxnXB2wtViFjDrm1AwWZm6UjkvzKguLARL0eJai+RFCp sQnWio5sMclVv8E8ykN7nUsZv8nFMXt3+0LjVp7MzC2+vpJhJ3Pl4cH2NqTczkJ3dE+x x29h82Vwva1vS9g6u/pnB4zXINjqdZZc3qwy7sLruh4oc2XDLs9MQ91hR7sXAWJXeFL0 e2og== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=qGUJrtnlz9Yo3S83G8V63+H0kWn768DHMiymUEO8oRc=; b=f4tnhw73aAnEwHAMKyKVwaPTjHU7QBtAKUotKq5Ht7FOYx2o3mk1ChrT7+bOdNutje xTqTmSX5n81/BHZVtC36h7Eha4v5Ai715Ppecyqe3fE/8RvO7SNrdwyrvXC+1ibckxjN 5asI6uXkv+Bg0qNSvSAvutNfl52mQBAyvDWEmEACBPNtZYqZ2iVdYFToQpyROoXMnpfE x+vUZARRG5SKVYAwDx6i6imWO0gawb+YU20PQvArSbto0ZZFQ7uFax52jec4hyuJ63kc CVUZyApF952axkj/3I3hhl104osC5i2NKDRNL12xtKMGFY/FQ7ePe4jk5swpL/Yv28kT sElA== X-Gm-Message-State: AO0yUKURSzRLDZaNlh3kb9T/JhtoonDJU67qAggEgNynJQ0U9AhiLk+R 0+qBVDx5/twnEvhJEm5OLOz8uGtdwybErfvqQWE= X-Google-Smtp-Source: AK7set9iKMN+331A78WOS0+283/LRLCQZcWvZJIXGOxwFzQXnHGwTGuTzqDRl1h2YTXjpvwyCnxIqw== X-Received: by 2002:a17:907:98b1:b0:8e4:96c4:94a with SMTP id ju17-20020a17090798b100b008e496c4094amr4858736ejc.56.1677104041367; Wed, 22 Feb 2023 14:14:01 -0800 (PST) Received: from sleipner.berto.se (p54ac5802.dip0.t-ipconnect.de. [84.172.88.2]) by smtp.googlemail.com with ESMTPSA id a26-20020a170906685a00b008b1b86bf668sm7711893ejs.4.2023.02.22.14.14.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Feb 2023 14:14:01 -0800 (PST) From: =?utf-8?q?Niklas_S=C3=B6derlund?= To: Kieran Bingham , Hans Verkuil , linux-media@vger.kernel.org Cc: linux-renesas-soc@vger.kernel.org, =?utf-8?q?Niklas_S=C3=B6derlund?= Subject: [PATCH 2/3] media: i2c: adv748x: Write initial DV timings to device Date: Wed, 22 Feb 2023 23:12:48 +0100 Message-Id: <20230222221249.1324102-3-niklas.soderlund+renesas@ragnatech.se> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230222221249.1324102-1-niklas.soderlund+renesas@ragnatech.se> References: <20230222221249.1324102-1-niklas.soderlund+renesas@ragnatech.se> MIME-Version: 1.0 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS autolearn=unavailable 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-media@vger.kernel.org X-LSpam-Score: -2.4 (--) X-LSpam-Report: No, score=-2.4 required=5.0 tests=BAYES_00=-1.9,DKIM_SIGNED=0.1,DKIM_VALID=-0.1,HEADER_FROM_DIFFERENT_DOMAINS=0.5,MAILING_LIST_MULTI=-1 autolearn=ham autolearn_force=no When initializing the HDMI block during probe an initial set of timings are selected. These timings are stored in the drivers private data, but not written to the device. This in itself is not bad, but in s_dv_timings() the timings stored in the drivers private data are compared to the new timings, if they match no action is taken. This creates the corner-case where the timing selected at initialization is the first timings a user want to use as the driver then never writes it to the device preventing proper operation. Fix this by writing the timings to the device at initialization in addition to storing them in the drivers private data. Signed-off-by: Niklas Söderlund --- drivers/media/i2c/adv748x/adv748x-hdmi.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/drivers/media/i2c/adv748x/adv748x-hdmi.c b/drivers/media/i2c/adv748x/adv748x-hdmi.c index 1d62e05572cd..47688d1b6833 100644 --- a/drivers/media/i2c/adv748x/adv748x-hdmi.c +++ b/drivers/media/i2c/adv748x/adv748x-hdmi.c @@ -721,11 +721,10 @@ static int adv748x_hdmi_init_controls(struct adv748x_hdmi *hdmi) int adv748x_hdmi_init(struct adv748x_hdmi *hdmi) { struct adv748x_state *state = adv748x_hdmi_to_state(hdmi); - static const struct v4l2_dv_timings cea1280x720 = - V4L2_DV_BT_CEA_1280X720P30; + struct v4l2_dv_timings cea1280x720 = V4L2_DV_BT_CEA_1280X720P30; int ret; - hdmi->timings = cea1280x720; + adv748x_hdmi_s_dv_timings(&hdmi->sd, &cea1280x720); /* Initialise a default 16:9 aspect ratio */ hdmi->aspect_ratio.numerator = 16; From patchwork Wed Feb 22 22:12:49 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Niklas_S=C3=B6derlund?= X-Patchwork-Id: 90027 X-Patchwork-Delegate: hverkuil@xs4all.nl Received: from vger.kernel.org ([23.128.96.18]) by www.linuxtv.org with esmtp (Exim 4.92) (envelope-from ) id 1pUxO8-0072tx-0Q; Wed, 22 Feb 2023 22:15:00 +0000 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232861AbjBVWOz (ORCPT + 1 other); Wed, 22 Feb 2023 17:14:55 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39454 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232911AbjBVWOh (ORCPT ); Wed, 22 Feb 2023 17:14:37 -0500 Received: from mail-ed1-x52b.google.com (mail-ed1-x52b.google.com [IPv6:2a00:1450:4864:20::52b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 596F948E1E for ; Wed, 22 Feb 2023 14:14:10 -0800 (PST) Received: by mail-ed1-x52b.google.com with SMTP id eg37so32566366edb.12 for ; Wed, 22 Feb 2023 14:14:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ragnatech-se.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=tEppd4OhzMYnVa+HKy8qqHzfPuUopXSp8sEG9Vdb4jM=; b=EYbRWsmMG++uhINyyeH8Zn2RewJQqhVUkAG2QqSYlgHoUF9HGkAGswoAPQAto2DPYr R9D+1rBmO2qgkg9vLq3g4hpo2S3D+WoUlA1vl/Lw6Xc1YTcQHv8n5FAXN7uVJt0+tNI3 vPcMhwI8KWQzq29ktsN1DkbU9oKF4aiN9syhvikd2mMhpfz9hTo3ENUymVSiua4H5wqQ FGNDIk4+jdwZwMJ2OAx5MaBsmWJLAPO9FjXMmBqwDUdvoxEs9GX+GR9vJIuoRSoY/HTU zaDH+H/soh4TX3y/JG/Tu3ahVPw8SFzhFSxfsHGk5JX5Z1tco5S/5j2bFqUCqRuhZyjW n/Lg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=tEppd4OhzMYnVa+HKy8qqHzfPuUopXSp8sEG9Vdb4jM=; b=2fMljXeJ/XRiD1wB4g9muhDWoL9OiMNBp7pE/X36hQL2+9A0GLycdOCGMXM/of3Y1X +9wB2yh9aEDcC1RFDdjYw6Su3RBY8ybuEB1tcdf9evv5OgnQEXemv5pi46pWAyrQIVgU V5NyI0RwJOS0aGkp8vn99A5u6bWCNh3tuxaYelXoRjKUgc22hfFqpvqBlkmhdA7+3T6Y 1UFqUD4HcBiIMTIk3k479BOMYTIhOc9GoF1fzhDxyN6ZHcLNFvwjd7MdCCqkChCVHPJp eA0Hvn8Q0sF6b51ORPPzT/HX4KuB6x5iymUlIb5+5iIbUXcnMshRy/boGjaLL9mGy5q9 ojeA== X-Gm-Message-State: AO0yUKVHSfXbf3D4EAZVjRRiPyrcanrfUwhEPpGZzfUcDdhsfki4YNHH QqZ3MmJ4HdP9+NQh095/yemSYw== X-Google-Smtp-Source: AK7set8AfoeIZeyoOYhpqhlggdvn4LUAj2j06/1mpD2pGHua9C13pVdBojL2xs9rQt0Vu+33IahfIA== X-Received: by 2002:a17:906:fe06:b0:8af:2fa1:619e with SMTP id wy6-20020a170906fe0600b008af2fa1619emr16755194ejb.18.1677104042279; Wed, 22 Feb 2023 14:14:02 -0800 (PST) Received: from sleipner.berto.se (p54ac5802.dip0.t-ipconnect.de. [84.172.88.2]) by smtp.googlemail.com with ESMTPSA id a26-20020a170906685a00b008b1b86bf668sm7711893ejs.4.2023.02.22.14.14.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Feb 2023 14:14:01 -0800 (PST) From: =?utf-8?q?Niklas_S=C3=B6derlund?= To: Kieran Bingham , Hans Verkuil , linux-media@vger.kernel.org Cc: linux-renesas-soc@vger.kernel.org, =?utf-8?q?Niklas_S=C3=B6derlund?= Subject: [PATCH 3/3] media: i2c: adv748x: Report correct DV timings for pattern generator Date: Wed, 22 Feb 2023 23:12:49 +0100 Message-Id: <20230222221249.1324102-4-niklas.soderlund+renesas@ragnatech.se> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230222221249.1324102-1-niklas.soderlund+renesas@ragnatech.se> References: <20230222221249.1324102-1-niklas.soderlund+renesas@ragnatech.se> MIME-Version: 1.0 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS autolearn=unavailable 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-media@vger.kernel.org X-LSpam-Score: -2.4 (--) X-LSpam-Report: No, score=-2.4 required=5.0 tests=BAYES_00=-1.9,DKIM_SIGNED=0.1,DKIM_VALID=-0.1,HEADER_FROM_DIFFERENT_DOMAINS=0.5,MAILING_LIST_MULTI=-1 autolearn=ham autolearn_force=no If the pattern generator is enabled the device shall not be queried for timings. Instead the timings programmed shall be reported as they are the ones being used to generate the pattern. Before this change an external HDMI source needed to be connected for the pattern generator to work. The driver would query this external HDMI source for timings and program the pattern generator using those. With this change the user can control the timings and have the pattern generator work without the need of an external HDMI source being connected. Signed-off-by: Niklas Söderlund --- drivers/media/i2c/adv748x/adv748x-hdmi.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/media/i2c/adv748x/adv748x-hdmi.c b/drivers/media/i2c/adv748x/adv748x-hdmi.c index 47688d1b6833..400d71c2745c 100644 --- a/drivers/media/i2c/adv748x/adv748x-hdmi.c +++ b/drivers/media/i2c/adv748x/adv748x-hdmi.c @@ -283,6 +283,16 @@ static int adv748x_hdmi_query_dv_timings(struct v4l2_subdev *sd, memset(timings, 0, sizeof(struct v4l2_dv_timings)); + /* + * If the pattern generator is enabled the device shall not be queried + * for timings. Instead the timings programmed shall be reported as they + * are the ones being used to generate the pattern. + */ + if (cp_read(state, ADV748X_CP_PAT_GEN) & ADV748X_CP_PAT_GEN_EN) { + *timings = hdmi->timings; + return 0; + } + if (!adv748x_hdmi_has_signal(state)) return -ENOLINK;