From nobody Thu Jul 9 02:54:11 2026 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4gwfgY0QHFz6kLLk for ; Thu, 09 Jul 2026 02:54:17 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "YR1" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4gwfgX4PDzz3xZM for ; Thu, 09 Jul 2026 02:54:16 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1783565656; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=yY3qEfhtt2RO2ouQXcJRzySx1/zElXVJwQQFeCG4OWk=; b=ojLubGtSw3K7DQ+tOajX833w+faL+VYfmcvS/tDql5V+nDUEOebt4JdMG27JWA2Koio9g+ Trs7vNDWJtwWiwp/wZze7s/lvkOq8MLCNPCCXiMUruLy/RSMElu6L2sAYTD85Cpjbzl8yD eIhWV01vv8gysWToTHaqhUF7/bN3T9rURf+5Ewblzyq37subQu7HFts2yVvQuEvWybil3o TKcIwfvFH4q+a5kWjfptonjCtgLhEy78Y7GEXf1whAghp14LOI1JYavhGIFG51/KytyuVa SnArSDtqhX1g1Bf/BL1ioTtaLzfnarC9Npp0vsGZHBOiDTbGQWSipS/bQoP/iA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1783565656; a=rsa-sha256; cv=none; b=X8cMCS0DWgdTWAkqEPXfi8g1C4ljY3GNAR3P0sZilBo5AScJ6IioTMzxVOPK3P8vuZJZ1n UhAvPBxuSEbQ943j/T6jOFp33V4QtlocxptHTrSePmTOxVAnNkvYISQaQzP8BYHIq+j6vr WjFX4uDpmNg+Bzcq6M9CzYDer4BcLBSqsQMLsvfmNGfiEiEWAqXFrYe9TiKCckdyyJJmIP 5nHkFvPh2pISgvJlso7skbpQyRjA7Y2VKAtAa6zqpKKdg6kILKUH5SBQq8v4f6MfPRDlWH iYFsiJUAVnqyj0I5MSk3qSFkFDvo1NhdkZbSuhbSP06VZEN8LfipudqBMafQoA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1783565656; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=yY3qEfhtt2RO2ouQXcJRzySx1/zElXVJwQQFeCG4OWk=; b=yilJcNwc+C5nLhApQWqWmoBib38TRvrKwNwc8VptAbevAbdJ7lrNfEoTBtD8MSIZWpVEwk d29Rp991nCQLCAkJIzppAKIWX7q3tUHZvy2Bz/4I0OgN0fFyAfNcUStXDZatVXuzcMAGl9 kOGy9CBRAILY+f6OwWzxFMJW6f7j2lg7yB3PdllDlMUGWFOaqXmp2RZtX1kCWkQEeSnugW KEyvEpdmW+ARilAqnxedyfcnUC34N6Ugkq8LFuJGBGguApSXcpf9ZkMWzE9CxhmjzIIR0N WeW1tYGbCrWVJOiFVxC5HFG9we24sPY+xRwHOa0K+PWWnXPReB5596+GpylpZQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4gwfgX3Fb8zqyt for ; Thu, 09 Jul 2026 02:54:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 236fd by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 09 Jul 2026 02:54:11 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Cc: Abdelkader Boudih From: Adrian Chadd Subject: git: 56d4dee82de1 - main - fwcam: defer ISO streaming to first read List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: adrian X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 56d4dee82de1b5c8c77d5be79f7bf4183b327b57 Auto-Submitted: auto-generated Date: Thu, 09 Jul 2026 02:54:11 +0000 Message-Id: <6a4f0d53.236fd.369b15e7@gitrepo.freebsd.org> The branch main has been updated by adrian: URL: https://cgit.FreeBSD.org/src/commit/?id=56d4dee82de1b5c8c77d5be79f7bf4183b327b57 commit 56d4dee82de1b5c8c77d5be79f7bf4183b327b57 Author: Abdelkader Boudih AuthorDate: 2026-07-09 02:52:12 +0000 Commit: Adrian Chadd CommitDate: 2026-07-09 02:52:18 +0000 fwcam: defer ISO streaming to first read Moved ISO start to first usage. Opening the device now only validates state and increments the open count, allowing info queries and mode changes without starting the camera. ISO streaming begins on demand when userland first reads frame data. This avoid the camera led to turn-on at attach. Reviewed by: adrian Differential Revision: https://reviews.freebsd.org/D58100 --- sys/dev/firewire/fwcam.c | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/sys/dev/firewire/fwcam.c b/sys/dev/firewire/fwcam.c index 27451316d613..c5e5cf545fe9 100644 --- a/sys/dev/firewire/fwcam.c +++ b/sys/dev/firewire/fwcam.c @@ -288,7 +288,7 @@ fwcam_probe_task(void *arg, int pending __unused) sc->state = FWCAM_STATE_PROBED; FWCAM_UNLOCK(sc); - if (sc->open_count > 0 && + if (sc->dma_ch >= 0 && sc->state != FWCAM_STATE_DETACHING) fwcam_iso_start(sc); } @@ -601,7 +601,6 @@ static int fwcam_cdev_open(struct cdev *dev, int oflags, int devtype, struct thread *td) { struct fwcam_softc *sc = dev->si_drv1; - int err = 0; FWCAM_LOCK(sc); if (sc->state == FWCAM_STATE_DETACHING) { @@ -615,18 +614,8 @@ fwcam_cdev_open(struct cdev *dev, int oflags, int devtype, struct thread *td) } sc->open_count++; - if (sc->open_count == 1 && sc->state == FWCAM_STATE_PROBED) { - FWCAM_UNLOCK(sc); - err = fwcam_iso_start(sc); - if (err) { - FWCAM_LOCK(sc); - sc->open_count--; - FWCAM_UNLOCK(sc); - } - } else { - FWCAM_UNLOCK(sc); - } - return (err); + FWCAM_UNLOCK(sc); + return (0); } static int @@ -657,6 +646,13 @@ fwcam_cdev_read(struct cdev *dev, struct uio *uio, int ioflag) int err; FWCAM_LOCK(sc); + if (sc->state == FWCAM_STATE_PROBED) { + FWCAM_UNLOCK(sc); + err = fwcam_iso_start(sc); + if (err) + return (err); + FWCAM_LOCK(sc); + } while (!sc->frame_ready) { if (sc->state != FWCAM_STATE_STREAMING) { FWCAM_UNLOCK(sc);