The branch main has been updated by adrian:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=d128ddf32e87a672dbbbc26cfece71e241e0ffa0

commit d128ddf32e87a672dbbbc26cfece71e241e0ffa0
Author:     Abdelkader Boudih <[email protected]>
AuthorDate: 2026-07-09 02:52:29 +0000
Commit:     Adrian Chadd <[email protected]>
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;

Reply via email to