if (pad != CCS_PAD_SRC)
return -EINVAL;
+ if (sensor->streaming) {
+ sensor->streaming |= streams_mask;
+ return 0;
+ }
+
rval = ccs_pm_get_init(sensor);
if (rval)
return rval;
rval = ccs_write(sensor, MODE_SELECT, CCS_MODE_SELECT_STREAMING);
- sensor->streaming = true;
+ sensor->streaming |= streams_mask;
return 0;
if (pad != CCS_PAD_SRC)
return -EINVAL;
+ sensor->streaming &= ~streams_mask;
+ if (sensor->streaming)
+ return 0;
+
rval = ccs_write(sensor, MODE_SELECT, CCS_MODE_SELECT_SOFTWARE_STANDBY);
if (rval)
return rval;
if (rval)
dev_err(&client->dev, "post_streamoff quirks failed\n");
- sensor->streaming = false;
pm_runtime_put_autosuspend(&client->dev);
return 0;
goto out_cleanup;
}
- sensor->streaming = false;
sensor->dev_init_done = true;
sensor->handler_setup_needed = true;