Lines Matching refs:hdcp_work

131 static void process_output(struct hdcp_workqueue *hdcp_work)
133 struct mod_hdcp_output output = hdcp_work->output;
136 cancel_delayed_work(&hdcp_work->callback_dwork);
139 schedule_delayed_work(&hdcp_work->callback_dwork,
143 cancel_delayed_work(&hdcp_work->watchdog_timer_dwork);
146 schedule_delayed_work(&hdcp_work->watchdog_timer_dwork,
149 schedule_delayed_work(&hdcp_work->property_validate_dwork, msecs_to_jiffies(0));
164 void hdcp_update_display(struct hdcp_workqueue *hdcp_work,
170 struct hdcp_workqueue *hdcp_w = &hdcp_work[link_index];
185 if (hdcp_work->srm_size > 0)
186 psp_set_srm(hdcp_work->hdcp.config.psp.handle, hdcp_work->srm,
187 hdcp_work->srm_size,
188 &hdcp_work->srm_version);
215 static void hdcp_remove_display(struct hdcp_workqueue *hdcp_work,
219 struct hdcp_workqueue *hdcp_w = &hdcp_work[link_index];
245 void hdcp_reset_display(struct hdcp_workqueue *hdcp_work, unsigned int link_index)
247 struct hdcp_workqueue *hdcp_w = &hdcp_work[link_index];
266 void hdcp_handle_cpirq(struct hdcp_workqueue *hdcp_work, unsigned int link_index)
268 struct hdcp_workqueue *hdcp_w = &hdcp_work[link_index];
275 struct hdcp_workqueue *hdcp_work;
277 hdcp_work = container_of(to_delayed_work(work), struct hdcp_workqueue,
280 mutex_lock(&hdcp_work->mutex);
282 cancel_delayed_work(&hdcp_work->callback_dwork);
284 mod_hdcp_process_event(&hdcp_work->hdcp, MOD_HDCP_EVENT_CALLBACK,
285 &hdcp_work->output);
287 process_output(hdcp_work);
289 mutex_unlock(&hdcp_work->mutex);
294 struct hdcp_workqueue *hdcp_work = container_of(work, struct hdcp_workqueue,
304 aconnector = hdcp_work->aconnector[conn_index];
326 mutex_lock(&hdcp_work->mutex);
333 hdcp_work->encryption_status[conn_index] =
337 if (hdcp_work->encryption_status[conn_index] !=
341 hdcp_work->encryption_status[conn_index] <=
348 hdcp_work->encryption_status[conn_index] ==
358 mutex_unlock(&hdcp_work->mutex);
365 struct hdcp_workqueue *hdcp_work =
371 mutex_lock(&hdcp_work->mutex);
375 aconnector = hdcp_work->aconnector[conn_index];
388 mod_hdcp_query_display(&hdcp_work->hdcp, aconnector->base.index,
395 hdcp_work->encryption_status[conn_index]);
398 hdcp_work->encryption_status[conn_index]) {
400 hdcp_work->encryption_status[conn_index],
403 hdcp_work->encryption_status[conn_index] =
408 schedule_work(&hdcp_work->property_update_work);
412 mutex_unlock(&hdcp_work->mutex);
417 struct hdcp_workqueue *hdcp_work;
419 hdcp_work = container_of(to_delayed_work(work),
423 mutex_lock(&hdcp_work->mutex);
425 cancel_delayed_work(&hdcp_work->watchdog_timer_dwork);
427 mod_hdcp_process_event(&hdcp_work->hdcp,
429 &hdcp_work->output);
431 process_output(hdcp_work);
433 mutex_unlock(&hdcp_work->mutex);
438 struct hdcp_workqueue *hdcp_work;
440 hdcp_work = container_of(work, struct hdcp_workqueue, cpirq_work);
442 mutex_lock(&hdcp_work->mutex);
444 mod_hdcp_process_event(&hdcp_work->hdcp, MOD_HDCP_EVENT_CPIRQ, &hdcp_work->output);
446 process_output(hdcp_work);
448 mutex_unlock(&hdcp_work->mutex);
451 void hdcp_destroy(struct kobject *kobj, struct hdcp_workqueue *hdcp_work)
455 for (i = 0; i < hdcp_work->max_link; i++) {
456 cancel_delayed_work_sync(&hdcp_work[i].callback_dwork);
457 cancel_delayed_work_sync(&hdcp_work[i].watchdog_timer_dwork);
460 sysfs_remove_bin_file(kobj, &hdcp_work[0].attr);
461 kfree(hdcp_work->srm);
462 kfree(hdcp_work->srm_temp);
463 kfree(hdcp_work);
468 struct hdcp_workqueue *hdcp_work = handle;
469 struct mod_hdcp hdcp = hdcp_work->hdcp;
503 struct hdcp_workqueue *hdcp_work = handle;
506 struct mod_hdcp_display *display = &hdcp_work[link_index].display;
507 struct mod_hdcp_link *link = &hdcp_work[link_index].link;
508 struct hdcp_workqueue *hdcp_w = &hdcp_work[link_index];
513 hdcp_remove_display(hdcp_work, link_index, aconnector);
709 struct hdcp_workqueue *hdcp_work;
712 hdcp_work = kcalloc(max_caps, sizeof(*hdcp_work), GFP_KERNEL);
713 if (ZERO_OR_NULL_PTR(hdcp_work))
716 hdcp_work->srm = kcalloc(PSP_HDCP_SRM_FIRST_GEN_MAX_SIZE,
717 sizeof(*hdcp_work->srm), GFP_KERNEL);
719 if (!hdcp_work->srm)
722 hdcp_work->srm_temp = kcalloc(PSP_HDCP_SRM_FIRST_GEN_MAX_SIZE,
723 sizeof(*hdcp_work->srm_temp), GFP_KERNEL);
725 if (!hdcp_work->srm_temp)
728 hdcp_work->max_link = max_caps;
731 mutex_init(&hdcp_work[i].mutex);
733 INIT_WORK(&hdcp_work[i].cpirq_work, event_cpirq);
734 INIT_WORK(&hdcp_work[i].property_update_work, event_property_update);
735 INIT_DELAYED_WORK(&hdcp_work[i].callback_dwork, event_callback);
736 INIT_DELAYED_WORK(&hdcp_work[i].watchdog_timer_dwork, event_watchdog_timer);
737 INIT_DELAYED_WORK(&hdcp_work[i].property_validate_dwork, event_property_validate);
739 hdcp_work[i].hdcp.config.psp.handle = &adev->psp;
746 hdcp_work[i].hdcp.config.psp.caps.dtm_v3_supported = 1;
747 hdcp_work[i].hdcp.config.ddc.handle = dc_get_link_at_index(dc, i);
748 hdcp_work[i].hdcp.config.ddc.funcs.write_i2c = lp_write_i2c;
749 hdcp_work[i].hdcp.config.ddc.funcs.read_i2c = lp_read_i2c;
750 hdcp_work[i].hdcp.config.ddc.funcs.write_dpcd = lp_write_dpcd;
751 hdcp_work[i].hdcp.config.ddc.funcs.read_dpcd = lp_read_dpcd;
753 memset(hdcp_work[i].aconnector, 0,
756 memset(hdcp_work[i].encryption_status, 0,
763 cp_psp->handle = hdcp_work;
766 hdcp_work[0].attr = data_attr;
767 sysfs_bin_attr_init(&hdcp_work[0].attr);
769 if (sysfs_create_bin_file(&adev->dev->kobj, &hdcp_work[0].attr))
772 return hdcp_work;
775 kfree(hdcp_work->srm);
776 kfree(hdcp_work->srm_temp);
777 kfree(hdcp_work);