Lines Matching refs:ss

345 	struct f_sourcesink	*ss = func_to_ss(f);  in sourcesink_bind()  local
357 ss->in_ep = usb_ep_autoconfig(cdev->gadget, &fs_source_desc); in sourcesink_bind()
358 if (!ss->in_ep) { in sourcesink_bind()
364 ss->in_ep->driver_data = cdev; /* claim */ in sourcesink_bind()
366 ss->out_ep = usb_ep_autoconfig(cdev->gadget, &fs_sink_desc); in sourcesink_bind()
367 if (!ss->out_ep) in sourcesink_bind()
369 ss->out_ep->driver_data = cdev; /* claim */ in sourcesink_bind()
390 ss->iso_in_ep = usb_ep_autoconfig(cdev->gadget, &fs_iso_source_desc); in sourcesink_bind()
391 if (!ss->iso_in_ep) in sourcesink_bind()
393 ss->iso_in_ep->driver_data = cdev; /* claim */ in sourcesink_bind()
395 ss->iso_out_ep = usb_ep_autoconfig(cdev->gadget, &fs_iso_sink_desc); in sourcesink_bind()
396 if (ss->iso_out_ep) { in sourcesink_bind()
397 ss->iso_out_ep->driver_data = cdev; /* claim */ in sourcesink_bind()
399 ss->iso_in_ep->driver_data = NULL; in sourcesink_bind()
400 ss->iso_in_ep = NULL; in sourcesink_bind()
471 f->name, ss->in_ep->name, ss->out_ep->name, in sourcesink_bind()
472 ss->iso_in_ep ? ss->iso_in_ep->name : "<none>", in sourcesink_bind()
473 ss->iso_out_ep ? ss->iso_out_ep->name : "<none>"); in sourcesink_bind()
493 static int check_read_data(struct f_sourcesink *ss, struct usb_request *req) in check_read_data() argument
497 struct usb_composite_dev *cdev = ss->function.config->cdev; in check_read_data()
524 usb_ep_set_halt(ss->out_ep); in check_read_data()
551 struct f_sourcesink *ss = ep->driver_data; in source_sink_complete() local
555 if (!ss) in source_sink_complete()
558 cdev = ss->function.config->cdev; in source_sink_complete()
563 if (ep == ss->out_ep) { in source_sink_complete()
564 check_read_data(ss, req); in source_sink_complete()
576 if (ep == ss->out_ep) in source_sink_complete()
577 check_read_data(ss, req); in source_sink_complete()
603 static int source_sink_start_ep(struct f_sourcesink *ss, bool is_in, in source_sink_start_ep() argument
625 ep = is_in ? ss->iso_in_ep : ss->iso_out_ep; in source_sink_start_ep()
628 ep = is_in ? ss->in_ep : ss->out_ep; in source_sink_start_ep()
645 cdev = ss->function.config->cdev; in source_sink_start_ep()
659 static void disable_source_sink(struct f_sourcesink *ss) in disable_source_sink() argument
663 cdev = ss->function.config->cdev; in disable_source_sink()
664 disable_endpoints(cdev, ss->in_ep, ss->out_ep, ss->iso_in_ep, in disable_source_sink()
665 ss->iso_out_ep); in disable_source_sink()
666 VDBG(cdev, "%s disabled\n", ss->function.name); in disable_source_sink()
670 enable_source_sink(struct usb_composite_dev *cdev, struct f_sourcesink *ss, in enable_source_sink() argument
678 ep = ss->in_ep; in enable_source_sink()
679 result = config_ep_by_speed(cdev->gadget, &(ss->function), ep); in enable_source_sink()
685 ep->driver_data = ss; in enable_source_sink()
687 result = source_sink_start_ep(ss, true, false, speed); in enable_source_sink()
690 ep = ss->in_ep; in enable_source_sink()
697 ep = ss->out_ep; in enable_source_sink()
698 result = config_ep_by_speed(cdev->gadget, &(ss->function), ep); in enable_source_sink()
704 ep->driver_data = ss; in enable_source_sink()
706 result = source_sink_start_ep(ss, false, false, speed); in enable_source_sink()
709 ep = ss->out_ep; in enable_source_sink()
719 ep = ss->iso_in_ep; in enable_source_sink()
721 result = config_ep_by_speed(cdev->gadget, &(ss->function), ep); in enable_source_sink()
727 ep->driver_data = ss; in enable_source_sink()
729 result = source_sink_start_ep(ss, true, true, speed); in enable_source_sink()
732 ep = ss->iso_in_ep; in enable_source_sink()
742 ep = ss->iso_out_ep; in enable_source_sink()
744 result = config_ep_by_speed(cdev->gadget, &(ss->function), ep); in enable_source_sink()
750 ep->driver_data = ss; in enable_source_sink()
752 result = source_sink_start_ep(ss, false, true, speed); in enable_source_sink()
760 ss->cur_alt = alt; in enable_source_sink()
762 DBG(cdev, "%s enabled, alt intf %d\n", ss->function.name, alt); in enable_source_sink()
769 struct f_sourcesink *ss = func_to_ss(f); in sourcesink_set_alt() local
772 if (ss->in_ep->driver_data) in sourcesink_set_alt()
773 disable_source_sink(ss); in sourcesink_set_alt()
774 return enable_source_sink(cdev, ss, alt); in sourcesink_set_alt()
779 struct f_sourcesink *ss = func_to_ss(f); in sourcesink_get_alt() local
781 return ss->cur_alt; in sourcesink_get_alt()
786 struct f_sourcesink *ss = func_to_ss(f); in sourcesink_disable() local
788 disable_source_sink(ss); in sourcesink_disable()
868 struct f_sourcesink *ss; in source_sink_alloc_func() local
871 ss = kzalloc(sizeof(*ss), GFP_KERNEL); in source_sink_alloc_func()
872 if (!ss) in source_sink_alloc_func()
888 ss->function.name = "source/sink"; in source_sink_alloc_func()
889 ss->function.bind = sourcesink_bind; in source_sink_alloc_func()
890 ss->function.set_alt = sourcesink_set_alt; in source_sink_alloc_func()
891 ss->function.get_alt = sourcesink_get_alt; in source_sink_alloc_func()
892 ss->function.disable = sourcesink_disable; in source_sink_alloc_func()
893 ss->function.setup = sourcesink_setup; in source_sink_alloc_func()
894 ss->function.strings = sourcesink_strings; in source_sink_alloc_func()
896 ss->function.free_func = sourcesink_free_func; in source_sink_alloc_func()
898 return &ss->function; in source_sink_alloc_func()