Page MenuHomeFreeBSD

D58101.diff
No OneTemporary

D58101.diff

diff --git a/sys/dev/firewire/fwcam.c b/sys/dev/firewire/fwcam.c
--- a/sys/dev/firewire/fwcam.c
+++ b/sys/dev/firewire/fwcam.c
@@ -429,7 +429,22 @@
}
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;

File Metadata

Mime Type
text/plain
Expires
Sun, Jul 12, 8:56 PM (12 h, 22 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
34882258
Default Alt Text
D58101.diff (782 B)

Event Timeline