git: d128ddf32e87 - main - fwcam: retry ISO enable after re-powering camera
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 09 Jul 2026 02:54:12 UTC
The branch main has been updated by adrian:
URL: https://cgit.FreeBSD.org/src/commit/?id=d128ddf32e87a672dbbbc26cfece71e241e0ffa0
commit d128ddf32e87a672dbbbc26cfece71e241e0ffa0
Author: Abdelkader Boudih <freebsd@seuros.com>
AuthorDate: 2026-07-09 02:52:29 +0000
Commit: Adrian Chadd <adrian@FreeBSD.org>
CommitDate: 2026-07-09 02:52:30 +0000
fwcam: retry ISO enable after re-powering camera
Some IIDC cameras power down the sensor when inactive (e.g. lens
cover closed) and reject ISO enable with EIO. Re-power the camera
and retry once before failing.
Reviewed by: adrian
Differential Revision: https://reviews.freebsd.org/D58101
---
sys/dev/firewire/fwcam.c | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/sys/dev/firewire/fwcam.c b/sys/dev/firewire/fwcam.c
index c5e5cf545fe9..234dd41eedf1 100644
--- a/sys/dev/firewire/fwcam.c
+++ b/sys/dev/firewire/fwcam.c
@@ -429,7 +429,22 @@ fwcam_iso_start(struct fwcam_softc *sc)
}
err = fwcam_write_quadlet(sc, IIDC_ISO_EN, IIDC_ISO_EN_ON);
- if (err) {
+ if (err == EIO) {
+ /*
+ * Cameras with a lens cover might power down the sensor
+ * when the cover is closed and reject streaming requests.
+ * Try to re-power and retry once before giving up.
+ */
+ err = fwcam_power_on(sc);
+ if (err == 0)
+ err = fwcam_write_quadlet(sc, IIDC_ISO_EN,
+ IIDC_ISO_EN_ON);
+ if (err) {
+ device_printf(sc->fd.dev,
+ "ISO enable refused (lens cover closed?)\n");
+ goto fail;
+ }
+ } else if (err) {
device_printf(sc->fd.dev,
"failed to enable ISO: %d\n", err);
goto fail;