Lines Matching refs:flash_data
139 struct qcom_flash_data *flash_data;
153 struct qcom_flash_data *flash_data = led->flash_data;
160 mutex_lock(&flash_data->lock);
162 flash_data->chan_en_bits |= led_mask;
164 flash_data->chan_en_bits &= ~led_mask;
166 enable = !!flash_data->chan_en_bits;
167 rc = regmap_field_write(flash_data->r_fields[REG_MODULE_EN], enable);
170 mutex_unlock(&flash_data->lock);
177 struct qcom_flash_data *flash_data = led->flash_data;
197 rc = regmap_fields_write(flash_data->r_fields[REG_ITARGET], chan_id, itarget);
201 if (flash_data->hw_type == QCOM_MVFLASH_3CH) {
207 } else if (flash_data->hw_type == QCOM_MVFLASH_4CH) {
215 "HW type %d is not supported\n", flash_data->hw_type);
220 return regmap_field_update_bits(flash_data->r_fields[REG_IRESOLUTION], ires_mask, ires_val);
225 struct qcom_flash_data *flash_data = led->flash_data;
241 rc = regmap_fields_write(flash_data->r_fields[REG_CHAN_TIMER], chan_id, timer);
251 struct qcom_flash_data *flash_data = led->flash_data;
269 flash_data->r_fields[REG_CHAN_STROBE], chan_id, strobe_sel);
278 rc = regmap_field_update_bits(flash_data->r_fields[REG_CHAN_EN], chan_mask, chan_en);
342 struct qcom_flash_data *flash_data = led->flash_data;
348 rc = regmap_field_read(flash_data->r_fields[REG_STATUS1], &val);
362 rc = regmap_field_read(flash_data->r_fields[REG_STATUS2], &val);
366 if (flash_data->hw_type == QCOM_MVFLASH_3CH) {
375 } else if (flash_data->hw_type == QCOM_MVFLASH_4CH) {
394 rc = regmap_field_read(flash_data->r_fields[REG_STATUS3], &val);
398 if (flash_data->hw_type == QCOM_MVFLASH_3CH) {
401 } else if (flash_data->hw_type == QCOM_MVFLASH_4CH) {
505 struct qcom_flash_data *flash_data = led->flash_data;
526 flash_data->v4l2_flash[flash_data->leds_count] =
528 return PTR_ERR_OR_ZERO(flash_data->v4l2_flash);
541 struct qcom_flash_data *flash_data = led->flash_data;
555 if (count > flash_data->max_channels) {
557 count, flash_data->max_channels);
573 if ((channels[i] == 0) || (channels[i] > flash_data->max_channels)) {
575 flash_data->max_channels);
656 struct qcom_flash_data *flash_data;
665 flash_data = devm_kzalloc(dev, sizeof(*flash_data), GFP_KERNEL);
666 if (!flash_data)
699 flash_data->hw_type = QCOM_MVFLASH_3CH;
700 flash_data->max_channels = 3;
703 flash_data->hw_type = QCOM_MVFLASH_4CH;
704 flash_data->max_channels = 4;
714 rc = devm_regmap_field_bulk_alloc(dev, regmap, flash_data->r_fields, regs, REG_MAX_COUNT);
720 platform_set_drvdata(pdev, flash_data);
721 mutex_init(&flash_data->lock);
724 if (count == 0 || count > flash_data->max_channels) {
725 dev_err(dev, "No child or child count exceeds %d\n", flash_data->max_channels);
729 flash_data->v4l2_flash = devm_kcalloc(dev, count,
730 sizeof(*flash_data->v4l2_flash), GFP_KERNEL);
731 if (!flash_data->v4l2_flash)
741 led->flash_data = flash_data;
746 flash_data->leds_count++;
753 while (flash_data->v4l2_flash[flash_data->leds_count] && flash_data->leds_count)
754 v4l2_flash_release(flash_data->v4l2_flash[flash_data->leds_count--]);
760 struct qcom_flash_data *flash_data = platform_get_drvdata(pdev);
762 while (flash_data->v4l2_flash[flash_data->leds_count] && flash_data->leds_count)
763 v4l2_flash_release(flash_data->v4l2_flash[flash_data->leds_count--]);
765 mutex_destroy(&flash_data->lock);