mirror of https://gitee.com/openkylin/linux.git
usb: gadget: function: f_obex: fix Interface Descriptor Test
On USB20CV's Interface Descriptor Test, a series of SetInterface/GetInterface requests are issued and gadget driver is required to always return correct alternate setting. In one step of the test, g_serial with f_obex was returning the wrong value (1 instead of 0). In order to fix this, we will now hold currently selected alternate setting inside our struct f_obex and just return that from our ->get_alt() implementation. Note that his also simplifies the code a bit. Signed-off-by: Felipe Balbi <balbi@ti.com>
This commit is contained in:
parent
de1e6e799f
commit
3985f3ab08
|
@ -35,6 +35,7 @@ struct f_obex {
|
|||
struct gserial port;
|
||||
u8 ctrl_id;
|
||||
u8 data_id;
|
||||
u8 cur_alt;
|
||||
u8 port_num;
|
||||
u8 can_activate;
|
||||
};
|
||||
|
@ -235,6 +236,8 @@ static int obex_set_alt(struct usb_function *f, unsigned intf, unsigned alt)
|
|||
} else
|
||||
goto fail;
|
||||
|
||||
obex->cur_alt = alt;
|
||||
|
||||
return 0;
|
||||
|
||||
fail:
|
||||
|
@ -245,10 +248,7 @@ static int obex_get_alt(struct usb_function *f, unsigned intf)
|
|||
{
|
||||
struct f_obex *obex = func_to_obex(f);
|
||||
|
||||
if (intf == obex->ctrl_id)
|
||||
return 0;
|
||||
|
||||
return obex->port.in->driver_data ? 1 : 0;
|
||||
return obex->cur_alt;
|
||||
}
|
||||
|
||||
static void obex_disable(struct usb_function *f)
|
||||
|
|
Loading…
Reference in New Issue