Lines Matching refs:sfp

282 static void pvr2_sysfs_add_control(struct pvr2_sysfs *sfp,int ctl_id)
289 cptr = pvr2_hdw_get_ctrl_by_index(sfp->channel.hdw,ctl_id);
299 cip->chptr = sfp;
301 if (sfp->item_last) {
302 sfp->item_last->item_next = cip;
304 sfp->item_first = cip;
306 sfp->item_last = cip;
391 ret = sysfs_create_group(&sfp->class_dev->kobj,&cip->grp);
409 static void pvr2_sysfs_add_debugifc(struct pvr2_sysfs *sfp)
425 sfp->debugifc = dip;
426 ret = device_create_file(sfp->class_dev,&dip->attr_debugcmd);
434 ret = device_create_file(sfp->class_dev,&dip->attr_debuginfo);
445 static void pvr2_sysfs_tear_down_debugifc(struct pvr2_sysfs *sfp)
447 if (!sfp->debugifc) return;
448 if (sfp->debugifc->debuginfo_created_ok) {
449 device_remove_file(sfp->class_dev,
450 &sfp->debugifc->attr_debuginfo);
452 if (sfp->debugifc->debugcmd_created_ok) {
453 device_remove_file(sfp->class_dev,
454 &sfp->debugifc->attr_debugcmd);
456 kfree(sfp->debugifc);
457 sfp->debugifc = NULL;
462 static void pvr2_sysfs_add_controls(struct pvr2_sysfs *sfp)
465 cnt = pvr2_hdw_get_ctrl_count(sfp->channel.hdw);
467 pvr2_sysfs_add_control(sfp,idx);
472 static void pvr2_sysfs_tear_down_controls(struct pvr2_sysfs *sfp)
475 for (cip1 = sfp->item_first; cip1; cip1 = cip2) {
478 sysfs_remove_group(&sfp->class_dev->kobj,&cip1->grp);
499 static void class_dev_destroy(struct pvr2_sysfs *sfp)
502 if (!sfp->class_dev) return;
504 pvr2_sysfs_tear_down_debugifc(sfp);
506 pvr2_sysfs_tear_down_controls(sfp);
507 if (sfp->hdw_desc_created_ok) {
508 device_remove_file(sfp->class_dev,
509 &sfp->attr_hdw_desc);
511 if (sfp->hdw_name_created_ok) {
512 device_remove_file(sfp->class_dev,
513 &sfp->attr_hdw_name);
515 if (sfp->bus_info_created_ok) {
516 device_remove_file(sfp->class_dev,
517 &sfp->attr_bus_info);
519 if (sfp->v4l_minor_number_created_ok) {
520 device_remove_file(sfp->class_dev,
521 &sfp->attr_v4l_minor_number);
523 if (sfp->v4l_radio_minor_number_created_ok) {
524 device_remove_file(sfp->class_dev,
525 &sfp->attr_v4l_radio_minor_number);
527 if (sfp->unit_number_created_ok) {
528 device_remove_file(sfp->class_dev,
529 &sfp->attr_unit_number);
531 pvr2_sysfs_trace("Destroying class_dev id=%p",sfp->class_dev);
532 dev_set_drvdata(sfp->class_dev, NULL);
533 dev = sfp->class_dev->parent;
534 sfp->class_dev->parent = NULL;
536 device_unregister(sfp->class_dev);
537 sfp->class_dev = NULL;
544 struct pvr2_sysfs *sfp;
545 sfp = dev_get_drvdata(class_dev);
546 if (!sfp) return -EINVAL;
548 pvr2_hdw_v4l_get_minor_number(sfp->channel.hdw,
556 struct pvr2_sysfs *sfp;
557 sfp = dev_get_drvdata(class_dev);
558 if (!sfp) return -EINVAL;
560 pvr2_hdw_get_bus_info(sfp->channel.hdw));
567 struct pvr2_sysfs *sfp;
568 sfp = dev_get_drvdata(class_dev);
569 if (!sfp) return -EINVAL;
571 pvr2_hdw_get_type(sfp->channel.hdw));
578 struct pvr2_sysfs *sfp;
579 sfp = dev_get_drvdata(class_dev);
580 if (!sfp) return -EINVAL;
582 pvr2_hdw_get_desc(sfp->channel.hdw));
590 struct pvr2_sysfs *sfp;
591 sfp = dev_get_drvdata(class_dev);
592 if (!sfp) return -EINVAL;
594 pvr2_hdw_v4l_get_minor_number(sfp->channel.hdw,
602 struct pvr2_sysfs *sfp;
603 sfp = dev_get_drvdata(class_dev);
604 if (!sfp) return -EINVAL;
606 pvr2_hdw_get_unit_number(sfp->channel.hdw));
610 static void class_dev_create(struct pvr2_sysfs *sfp)
616 usb_dev = pvr2_hdw_get_dev(sfp->channel.hdw);
626 pvr2_hdw_get_device_identifier(sfp->channel.hdw));
630 sfp->class_dev = class_dev;
631 dev_set_drvdata(class_dev, sfp);
640 sysfs_attr_init(&sfp->attr_v4l_minor_number.attr);
641 sfp->attr_v4l_minor_number.attr.name = "v4l_minor_number";
642 sfp->attr_v4l_minor_number.attr.mode = S_IRUGO;
643 sfp->attr_v4l_minor_number.show = v4l_minor_number_show;
644 sfp->attr_v4l_minor_number.store = NULL;
645 ret = device_create_file(sfp->class_dev,
646 &sfp->attr_v4l_minor_number);
652 sfp->v4l_minor_number_created_ok = !0;
655 sysfs_attr_init(&sfp->attr_v4l_radio_minor_number.attr);
656 sfp->attr_v4l_radio_minor_number.attr.name = "v4l_radio_minor_number";
657 sfp->attr_v4l_radio_minor_number.attr.mode = S_IRUGO;
658 sfp->attr_v4l_radio_minor_number.show = v4l_radio_minor_number_show;
659 sfp->attr_v4l_radio_minor_number.store = NULL;
660 ret = device_create_file(sfp->class_dev,
661 &sfp->attr_v4l_radio_minor_number);
667 sfp->v4l_radio_minor_number_created_ok = !0;
670 sysfs_attr_init(&sfp->attr_unit_number.attr);
671 sfp->attr_unit_number.attr.name = "unit_number";
672 sfp->attr_unit_number.attr.mode = S_IRUGO;
673 sfp->attr_unit_number.show = unit_number_show;
674 sfp->attr_unit_number.store = NULL;
675 ret = device_create_file(sfp->class_dev,&sfp->attr_unit_number);
681 sfp->unit_number_created_ok = !0;
684 sysfs_attr_init(&sfp->attr_bus_info.attr);
685 sfp->attr_bus_info.attr.name = "bus_info_str";
686 sfp->attr_bus_info.attr.mode = S_IRUGO;
687 sfp->attr_bus_info.show = bus_info_show;
688 sfp->attr_bus_info.store = NULL;
689 ret = device_create_file(sfp->class_dev,
690 &sfp->attr_bus_info);
696 sfp->bus_info_created_ok = !0;
699 sysfs_attr_init(&sfp->attr_hdw_name.attr);
700 sfp->attr_hdw_name.attr.name = "device_hardware_type";
701 sfp->attr_hdw_name.attr.mode = S_IRUGO;
702 sfp->attr_hdw_name.show = hdw_name_show;
703 sfp->attr_hdw_name.store = NULL;
704 ret = device_create_file(sfp->class_dev,
705 &sfp->attr_hdw_name);
711 sfp->hdw_name_created_ok = !0;
714 sysfs_attr_init(&sfp->attr_hdw_desc.attr);
715 sfp->attr_hdw_desc.attr.name = "device_hardware_description";
716 sfp->attr_hdw_desc.attr.mode = S_IRUGO;
717 sfp->attr_hdw_desc.show = hdw_desc_show;
718 sfp->attr_hdw_desc.store = NULL;
719 ret = device_create_file(sfp->class_dev,
720 &sfp->attr_hdw_desc);
726 sfp->hdw_desc_created_ok = !0;
729 pvr2_sysfs_add_controls(sfp);
731 pvr2_sysfs_add_debugifc(sfp);
738 struct pvr2_sysfs *sfp;
739 sfp = container_of(chp,struct pvr2_sysfs,channel);
740 if (!sfp->channel.mc_head->disconnect_flag) return;
741 pvr2_trace(PVR2_TRACE_STRUCT,"Destroying pvr2_sysfs id=%p",sfp);
742 class_dev_destroy(sfp);
743 pvr2_channel_done(&sfp->channel);
744 kfree(sfp);
750 struct pvr2_sysfs *sfp;
751 sfp = kzalloc(sizeof(*sfp),GFP_KERNEL);
752 if (!sfp)
754 pvr2_trace(PVR2_TRACE_STRUCT,"Creating pvr2_sysfs id=%p",sfp);
755 pvr2_channel_init(&sfp->channel,mp);
756 sfp->channel.check_func = pvr2_sysfs_internal_check;
758 class_dev_create(sfp);
779 struct pvr2_sysfs *sfp;
780 sfp = dev_get_drvdata(class_dev);
781 if (!sfp) return -EINVAL;
782 pvr2_hdw_trigger_module_log(sfp->channel.hdw);
783 return pvr2_debugifc_print_info(sfp->channel.hdw,buf,PAGE_SIZE);
790 struct pvr2_sysfs *sfp;
791 sfp = dev_get_drvdata(class_dev);
792 if (!sfp) return -EINVAL;
793 return pvr2_debugifc_print_status(sfp->channel.hdw,buf,PAGE_SIZE);
801 struct pvr2_sysfs *sfp;
804 sfp = dev_get_drvdata(class_dev);
805 if (!sfp) return -EINVAL;
807 ret = pvr2_debugifc_docmd(sfp->channel.hdw,buf,count);