Re: Linux USB file storage gadget with new UDC

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 1 Feb 2013, victor yeo wrote:

> Hi,
> 
> >> i have list_add_tail() in my ep_queue() function. Prior to ep1
> >> receiving data, my ep_queue() is called to send 0x00 to ep0. then it
> >> is not called. how to make it to be called by file gadget, in order to
> >> queue the request before ep1 interrupt?
> >
> > This should happen when get_next_command() calls start_transfer(),
> > which calls usb_ep_queue().
> 
> I put printk in fsg_main_thread. After insmod g_file_storage, the
> fsg_main_thread goes to fsg->running. Then it sleeps.

Do you mean that it executes these lines?

		if (!fsg->running) {
			sleep_thread(fsg);
			continue;
		}

Here's how it's supposed to work.  Initially fsg_main_thread does sleep
there.  But when the host sends a Set-Configuration request,
standard_setup_req calls raise_exception, which wakes up
fsg_main_thread (by calling send_sig_info).

The next time though its big loop, fsg_main_thread calls 
handle_exception, which calls do_set_config, which calls 
do_set_interface, which sets fsg->running to 1 (near the end of the 
do_set_interface routine).

Then when fsg_main_thread goes through its big loop again, it will call 
get_next_command.

>  When ep1
> receives data, get_next_command() is not called, so start_transfer()
> is not called.
> 
> The fsg_main_thread is sleeping in sleep_thread(). How to make it wake
> up? is there anything udc driver has to do to wake up fsg_main_thread?

See above.

Alan Stern

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux