d2e0e69
From patchwork Wed Jun 26 15:48:11 2019
2d52c31
Content-Type: text/plain; charset="utf-8"
2d52c31
MIME-Version: 1.0
2d52c31
Content-Transfer-Encoding: 7bit
2d52c31
X-Patchwork-Submitter: Stefan Wahren <wahrenst@gmx.net>
d2e0e69
X-Patchwork-Id: 11018115
2d52c31
Return-Path: 
2d52c31
 <linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org>
2d52c31
Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org
2d52c31
 [172.30.200.125])
d2e0e69
	by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 0546514BB
2d52c31
	for <patchwork-linux-arm@patchwork.kernel.org>;
d2e0e69
 Wed, 26 Jun 2019 15:49:02 +0000 (UTC)
2d52c31
Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1])
d2e0e69
	by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E6FEC288DC
2d52c31
	for <patchwork-linux-arm@patchwork.kernel.org>;
d2e0e69
 Wed, 26 Jun 2019 15:49:01 +0000 (UTC)
2d52c31
Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486)
d2e0e69
	id DADF9288E5; Wed, 26 Jun 2019 15:49:01 +0000 (UTC)
2d52c31
X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on
2d52c31
	pdx-wl-mail.web.codeaurora.org
2d52c31
X-Spam-Level: 
2d52c31
X-Spam-Status: No, score=-5.2 required=2.0 tests=BAYES_00,DKIM_SIGNED,
2d52c31
	DKIM_VALID,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED autolearn=ham
2d52c31
	version=3.3.1
2d52c31
Received: from bombadil.infradead.org (bombadil.infradead.org
2d52c31
 [198.137.202.133])
2d52c31
	(using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits))
2d52c31
	(No client certificate requested)
d2e0e69
	by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 73ADC288DC
2d52c31
	for <patchwork-linux-arm@patchwork.kernel.org>;
d2e0e69
 Wed, 26 Jun 2019 15:49:01 +0000 (UTC)
2d52c31
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
2d52c31
	d=lists.infradead.org; s=bombadil.20170209; h=Sender:
2d52c31
	Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe:
2d52c31
	List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:Message-Id:Date:
2d52c31
	Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date:
2d52c31
	Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:
d2e0e69
	References:List-Owner; bh=qjzvJkBweFVGZWCHd7cHawZMDpcLTzSf2CjoVEIv+0Q=; b=eu5
d2e0e69
	ABKzcpImxwkRcYCdHG/4eTgYM8nrpBaJqeKW2TNWEhNUjvnfU8TgkbD4nsIXkBXSb/riyKYzEcGJo
d2e0e69
	91zXHR6clQ6yf7eRtaHSX9IMfiwGPTC2YQvr6vQ+CrVJs+xDhlH/1V1+9myF4ySIX+mLOnm+w3pgi
d2e0e69
	j1JeP7vd7fpr8iyG29kaFoDH7FdC5Sw66TINVyaE5igT9yKcrFoAITGfRZevp1dd3uq5EKxs/+oo3
d2e0e69
	9BvpwHZ3Bdb+bWzFc9kS4udjL8V4+u7aesLq8tOOPLZab+W8ZW1iq4PHENzdHblrJyrK/2pGEECPx
d2e0e69
	bVAV7MIHqms4tvAAyXSlPai0wU/j12A==;
2d52c31
Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org)
2d52c31
	by bombadil.infradead.org with esmtp (Exim 4.92 #3 (Red Hat Linux))
d2e0e69
	id 1hgAAK-00030G-Ny; Wed, 26 Jun 2019 15:48:56 +0000
d2e0e69
Received: from mout.gmx.net ([212.227.17.20])
2d52c31
 by bombadil.infradead.org with esmtps (Exim 4.92 #3 (Red Hat Linux))
d2e0e69
 id 1hgAAH-0002yg-2E; Wed, 26 Jun 2019 15:48:54 +0000
2d52c31
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;
d2e0e69
 s=badeba3b8450; t=1561564113;
d2e0e69
 bh=mWLTbdtxGfwZ13vnfxlQDfv6DzwTGycBEng3zNk/XaE=;
2d52c31
 h=X-UI-Sender-Class:From:To:Cc:Subject:Date;
d2e0e69
 b=KYHDR8XZmzxft+7qC8J8cyQ71BSi6JkTsAhWvd+vK2f+YjWqjT42uTfrjNGCcQfdV
d2e0e69
 Z9gkAVPhUJWqXcu/GipMjVfx/QmxN65eJI1oHCOZ/vhkhzCqY9CuiJjHWnxF6jmydK
d2e0e69
 5QSqYnKAOWM3NXmd6pWkd6wlKwIFV9zX8+x8R0gE=
2d52c31
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
2d52c31
Received: from localhost.localdomain ([37.4.249.111]) by mail.gmx.com
d2e0e69
 (mrgmx102 [212.227.17.168]) with ESMTPSA (Nemesis) id
d2e0e69
 0LyS5K-1ibrK32soI-015u60; Wed, 26 Jun 2019 17:48:33 +0200
2d52c31
From: Stefan Wahren <wahrenst@gmx.net>
2d52c31
To: Eric Anholt <eric@anholt.net>,
2d52c31
 Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
2d52c31
 Madhumitha Prabakaran <madhumithabiw@gmail.com>
d2e0e69
Subject: [PATCH V2] staging: bcm2835-camera: Restore return behavior of
2d52c31
 ctrl_set_bitrate()
d2e0e69
Date: Wed, 26 Jun 2019 17:48:11 +0200
d2e0e69
Message-Id: <1561564091-14248-1-git-send-email-wahrenst@gmx.net>
2d52c31
X-Mailer: git-send-email 2.7.4
d2e0e69
X-Provags-ID: V03:K1:oGZaaF0VyX9aU1B2KlshIgSdbA6j0aZLN7PhhBatNb+3vHD/bim
d2e0e69
 IAE1eOdpYqQunHD6Pg0lTq7WJELowblFluMBHzPg8LdD02e6QUAOnsxpP9+ZsegmN4310bJ
d2e0e69
 qbWyOk73ZUf0L+ErExAilg9x9ygGjCdTujEDRrk0vloZc12lmdHMEA8VQs/4HDu6WGeOoac
d2e0e69
 M59q+7daHAsSTIgJrRUuA==
d2e0e69
X-UI-Out-Filterresults: notjunk:1;V03:K0:+5QZJxEbxD4=:fxpwesVoxYf61efHxmcTKK
d2e0e69
 BddiAtw8+v4csO9cTNV4qSFAebPmgWlPv8KyLXPbOQdcjOl72FUcevKvhsznxi/uv5leFw9uX
d2e0e69
 Sr99W78EPj3EmJmQT1KZ8GMPWcB/hQa1h/t4bhjHByFu4VQ2xaIdpsJfZlFcR2poK1E6dEFT6
d2e0e69
 jHlzWYjt2kP7anvsjMJvdSVILf9+ei6ysWz1aaMCKFLhxNUNmXH9onDdO8WOanGVr15zb+cVv
d2e0e69
 N4ecxzj0SonMoADsz1UJqgwb8Pi5/me809KQd8pQ/GhKDeLPNwQPXJMMhRbyPgmg5bJVCRUgp
d2e0e69
 MaMwDNiIn3qPl6t4jPx9uiSL5n47PAyt6vVlyufqp1lOr4EqgQFWp+2hknWJYJ8hzkBLgXrdZ
d2e0e69
 gfNGAtlqG9MdHsJds/KNtpjNvF3iCuOWcIyBEGAYKZL78LQggOcIFSlHn+KZ9JU2t9jGJHKF7
d2e0e69
 0E7pkZuWJIQjaWnt7WTAiO/Pv3tNhKukGVQXG7OTxkwS3+BsXI+vBB+xtOP+syI1QFkP3h+5c
d2e0e69
 9HVQLB7CA73bkyul1AwmrHNV+OqITaTatTPFXsDojt54X59pz2G3SkQI5z8JZ2aq40Z3vwI6u
d2e0e69
 lyMT+gPPFDx2aNm460FX8Gm+2BisA5xrkpjxb4KIDZvTRDCexntK3cadXRyX7GZQWc6poIcVf
d2e0e69
 atWNWiKYv6KN6vA+lc2Ffl5FM8p7BFtkX4GA0GZ/XhMTvCqDtgxBdQ4sevKJ4riNMAvRuswrM
d2e0e69
 BUrlhaRg3ElFPF3x+S73QaRmNmtv34L7puWW57WxrkKKSJS7Td0oZd1ktx6eAW1CA+I8RmOn3
d2e0e69
 A+rcm/ZfBf00TXqxsq3/t9h4mL3cP4KhBAxtyYg4z4yjuWt8AmXR6GfvTwCxk+qioygsV6KyY
d2e0e69
 6yh532oUizARrL8gUwZBauRwgH5rk7e2BWINY86y8vr3nSBzocuIFAekTK42reIsJ+qq9OSD5
d2e0e69
 IcQroenV1LixMtStvb6CiyHMHMqpxb+Buu+0bdl5qjKcUB4JxBA6KWMPC6Orj+Yf/GKaQlk+k
d2e0e69
 VsgZBuZAUHsZFuULBdIsUg//MyQJ0q/13WL31BSqJX9SAMgHFgsGeDo4yAg4YSF2Mbh1EgZu7
d2e0e69
 a3+bklRX7SG3Ts=
2d52c31
X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 
d2e0e69
X-CRM114-CacheID: sfid-20190626_084853_443115_5EF1DFC7 
d2e0e69
X-CRM114-Status: GOOD (  11.55  )
2d52c31
X-BeenThere: linux-arm-kernel@lists.infradead.org
2d52c31
X-Mailman-Version: 2.1.29
2d52c31
Precedence: list
2d52c31
List-Id: <linux-arm-kernel.lists.infradead.org>
2d52c31
List-Unsubscribe: 
2d52c31
 <http://lists.infradead.org/mailman/options/linux-arm-kernel>,
2d52c31
 <mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>
2d52c31
List-Archive: <http://lists.infradead.org/pipermail/linux-arm-kernel/>
2d52c31
List-Post: <mailto:linux-arm-kernel@lists.infradead.org>
2d52c31
List-Help: <mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>
2d52c31
List-Subscribe: 
2d52c31
 <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,
2d52c31
 <mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>
d2e0e69
Cc: devel@driverdev.osuosl.org, Stefan Wahren <wahrenst@gmx.net>,
d2e0e69
 Dave Stevenson <dave.stevenson@raspberrypi.org>,
d2e0e69
 Dan Carpenter <dan.carpenter@oracle.com>,
d2e0e69
 linux-arm-kernel@lists.infradead.org,
d2e0e69
 linux-rpi-kernel@lists.infradead.org
2d52c31
MIME-Version: 1.0
2d52c31
Content-Type: text/plain; charset="us-ascii"
2d52c31
Sender: "linux-arm-kernel" <linux-arm-kernel-bounces@lists.infradead.org>
2d52c31
Errors-To: 
2d52c31
 linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org
2d52c31
X-Virus-Scanned: ClamAV using ClamSMTP
2d52c31
2d52c31
The commit 52c4dfcead49 ("Staging: vc04_services: Cleanup in
2d52c31
ctrl_set_bitrate()") changed the return behavior of ctrl_set_bitrate().
d2e0e69
We cannot do this because of a bug in the firmware, which breaks probing
d2e0e69
of bcm2835-camera:
2d52c31
2d52c31
    bcm2835-v4l2: mmal_init: failed to set all camera controls: -3
2d52c31
    Cleanup: Destroy video encoder
2d52c31
    Cleanup: Destroy image encoder
2d52c31
    Cleanup: Destroy video render
2d52c31
    Cleanup: Destroy camera
2d52c31
    bcm2835-v4l2: bcm2835_mmal_probe: mmal init failed: -3
2d52c31
    bcm2835-camera: probe of bcm2835-camera failed with error -3
2d52c31
d2e0e69
So restore the old behavior, add an explaining comment and a debug message
d2e0e69
to verify that the bug has been fixed in firmware.
2d52c31
2d52c31
Fixes: 52c4dfcead49 ("Staging: vc04_services: Cleanup in ctrl_set_bitrate()")
2d52c31
Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
d2e0e69
Acked-by: Dan Carpenter <dan.carpenter@oracle.com>
2d52c31
---
d2e0e69
 .../staging/vc04_services/bcm2835-camera/controls.c   | 19 ++++++++++++++++---
d2e0e69
 1 file changed, 16 insertions(+), 3 deletions(-)
d2e0e69
d2e0e69
Changes in V2:
d2e0e69
- add an explaining comment as suggest by Dan and Dave
d2e0e69
- add a debug message to verify the firmware behavior
2d52c31
2d52c31
--
2d52c31
2.7.4
2d52c31
2d52c31
diff --git a/drivers/staging/vc04_services/bcm2835-camera/controls.c b/drivers/staging/vc04_services/bcm2835-camera/controls.c
d2e0e69
index d60e378..c251164 100644
2d52c31
--- a/drivers/staging/vc04_services/bcm2835-camera/controls.c
2d52c31
+++ b/drivers/staging/vc04_services/bcm2835-camera/controls.c
d2e0e69
@@ -604,15 +604,28 @@ static int ctrl_set_bitrate(struct bm2835_mmal_dev *dev,
d2e0e69
 			    struct v4l2_ctrl *ctrl,
d2e0e69
 			    const struct bm2835_mmal_v4l2_ctrl *mmal_ctrl)
d2e0e69
 {
d2e0e69
+	int ret;
d2e0e69
 	struct vchiq_mmal_port *encoder_out;
d2e0e69
d2e0e69
 	dev->capture.encode_bitrate = ctrl->val;
2d52c31
2d52c31
 	encoder_out = &dev->component[MMAL_COMPONENT_VIDEO_ENCODE]->output[0];
2d52c31
2d52c31
-	return vchiq_mmal_port_parameter_set(dev->instance, encoder_out,
2d52c31
-					     mmal_ctrl->mmal_id, &ctrl->val,
2d52c31
-					     sizeof(ctrl->val));
d2e0e69
+	ret = vchiq_mmal_port_parameter_set(dev->instance, encoder_out,
d2e0e69
+					    mmal_ctrl->mmal_id, &ctrl->val,
d2e0e69
+					    sizeof(ctrl->val));
d2e0e69
+
d2e0e69
+	v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev,
d2e0e69
+		 "%s: After: mmal_ctrl:%p ctrl id:0x%x ctrl val:%d ret %d(%d)\n",
d2e0e69
+		 __func__, mmal_ctrl, ctrl->id, ctrl->val, ret,
d2e0e69
+		 (ret == 0 ? 0 : -EINVAL));
2d52c31
+
d2e0e69
+	/*
d2e0e69
+	 * Older firmware versions (pre July 2019) have a bug in handling
d2e0e69
+	 * MMAL_PARAMETER_VIDEO_BIT_RATE that result in the call
d2e0e69
+	 * returning -MMAL_MSG_STATUS_EINVAL. So ignore errors from this call.
d2e0e69
+	 */
2d52c31
+	return 0;
2d52c31
 }
2d52c31
2d52c31
 static int ctrl_set_bitrate_mode(struct bm2835_mmal_dev *dev,