Lines Matching refs:drv

524 static int cx8802_request_acquire(struct cx8802_driver *drv)  in cx8802_request_acquire()  argument
526 struct cx88_core *core = drv->core; in cx8802_request_acquire()
531 core->active_type_id != drv->type_id) in cx8802_request_acquire()
534 if (drv->type_id == CX88_MPEG_DVB) { in cx8802_request_acquire()
548 if (drv->advise_acquire) in cx8802_request_acquire()
552 core->active_type_id = drv->type_id; in cx8802_request_acquire()
553 drv->advise_acquire(drv); in cx8802_request_acquire()
563 static int cx8802_request_release(struct cx8802_driver *drv) in cx8802_request_release() argument
565 struct cx88_core *core = drv->core; in cx8802_request_release()
567 if (drv->advise_release && --core->active_ref == 0) in cx8802_request_release()
569 if (drv->type_id == CX88_MPEG_DVB) { in cx8802_request_release()
575 drv->advise_release(drv); in cx8802_request_release()
583 static int cx8802_check_driver(struct cx8802_driver *drv) in cx8802_check_driver() argument
585 if (drv == NULL) in cx8802_check_driver()
588 if ((drv->type_id != CX88_MPEG_DVB) && in cx8802_check_driver()
589 (drv->type_id != CX88_MPEG_BLACKBIRD)) in cx8802_check_driver()
592 if ((drv->hw_access != CX8802_DRVCTL_SHARED) && in cx8802_check_driver()
593 (drv->hw_access != CX8802_DRVCTL_EXCLUSIVE)) in cx8802_check_driver()
596 if ((drv->probe == NULL) || in cx8802_check_driver()
597 (drv->remove == NULL) || in cx8802_check_driver()
598 (drv->advise_acquire == NULL) || in cx8802_check_driver()
599 (drv->advise_release == NULL)) in cx8802_check_driver()
605 int cx8802_register_driver(struct cx8802_driver *drv) in cx8802_register_driver() argument
613 drv->type_id == CX88_MPEG_DVB ? "dvb" : "blackbird", in cx8802_register_driver()
614 drv->hw_access == CX8802_DRVCTL_SHARED ? "shared" : "exclusive"); in cx8802_register_driver()
616 if ((err = cx8802_check_driver(drv)) != 0) { in cx8802_register_driver()
631 driver = kzalloc(sizeof(*drv),GFP_KERNEL); in cx8802_register_driver()
638 drv->core = dev->core; in cx8802_register_driver()
639 drv->suspend = cx8802_suspend_common; in cx8802_register_driver()
640 drv->resume = cx8802_resume_common; in cx8802_register_driver()
641 drv->request_acquire = cx8802_request_acquire; in cx8802_register_driver()
642 drv->request_release = cx8802_request_release; in cx8802_register_driver()
643 memcpy(driver, drv, sizeof(*driver)); in cx8802_register_driver()
645 mutex_lock(&drv->core->lock); in cx8802_register_driver()
646 err = drv->probe(driver); in cx8802_register_driver()
655 mutex_unlock(&drv->core->lock); in cx8802_register_driver()
664 int cx8802_unregister_driver(struct cx8802_driver *drv) in cx8802_unregister_driver() argument
672 drv->type_id == CX88_MPEG_DVB ? "dvb" : "blackbird", in cx8802_unregister_driver()
673 drv->hw_access == CX8802_DRVCTL_SHARED ? "shared" : "exclusive"); in cx8802_unregister_driver()
688 if (d->type_id != drv->type_id) in cx8802_unregister_driver()
778 struct cx8802_driver *drv, *tmp; in cx8802_remove() local
785 list_for_each_entry_safe(drv, tmp, &dev->drvlist, drvlist) { in cx8802_remove()
786 err = drv->remove(drv); in cx8802_remove()
788 list_del(&drv->drvlist); in cx8802_remove()
792 kfree(drv); in cx8802_remove()