mirror of https://gitee.com/openkylin/linux.git
usb: renesas_usbhs: modify pipe direction flags
Current driver had pipe direction flag which came from usb_endpoint_dir_in(). It means "input direction" for HOST, and "out direction" for Gadget. But driver needs "input direction for pipe". This patch adds IS_DIR_HOST flags and care both "input direction for HOST" and "input direction for pipe" Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
cc55687124
commit
ad6f2a8bc5
|
@ -550,12 +550,15 @@ static u16 usbhsp_setup_pipecfg(struct usbhs_pipe *pipe,
|
||||||
|
|
||||||
/* DIR */
|
/* DIR */
|
||||||
if (usb_endpoint_dir_in(desc))
|
if (usb_endpoint_dir_in(desc))
|
||||||
usbhsp_flags_set(pipe, IS_DIR_IN);
|
usbhsp_flags_set(pipe, IS_DIR_HOST);
|
||||||
|
|
||||||
if ((is_host && usb_endpoint_dir_out(desc)) ||
|
if ((is_host && usb_endpoint_dir_out(desc)) ||
|
||||||
(!is_host && usb_endpoint_dir_in(desc)))
|
(!is_host && usb_endpoint_dir_in(desc)))
|
||||||
dir |= DIR_OUT;
|
dir |= DIR_OUT;
|
||||||
|
|
||||||
|
if (!dir)
|
||||||
|
usbhsp_flags_set(pipe, IS_DIR_IN);
|
||||||
|
|
||||||
/* SHTNAK */
|
/* SHTNAK */
|
||||||
if (usbhsp_type_is(pipe, USB_ENDPOINT_XFER_BULK) &&
|
if (usbhsp_type_is(pipe, USB_ENDPOINT_XFER_BULK) &&
|
||||||
!dir)
|
!dir)
|
||||||
|
@ -678,6 +681,11 @@ int usbhs_pipe_is_dir_in(struct usbhs_pipe *pipe)
|
||||||
return usbhsp_flags_has(pipe, IS_DIR_IN);
|
return usbhsp_flags_has(pipe, IS_DIR_IN);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int usbhs_pipe_is_dir_host(struct usbhs_pipe *pipe)
|
||||||
|
{
|
||||||
|
return usbhsp_flags_has(pipe, IS_DIR_HOST);
|
||||||
|
}
|
||||||
|
|
||||||
void usbhs_pipe_clear_sequence(struct usbhs_pipe *pipe)
|
void usbhs_pipe_clear_sequence(struct usbhs_pipe *pipe)
|
||||||
{
|
{
|
||||||
usbhsp_pipectrl_set(pipe, SQCLR, SQCLR);
|
usbhsp_pipectrl_set(pipe, SQCLR, SQCLR);
|
||||||
|
|
|
@ -30,6 +30,7 @@ struct usbhs_pipe {
|
||||||
u32 flags;
|
u32 flags;
|
||||||
#define USBHS_PIPE_FLAGS_IS_USED (1 << 0)
|
#define USBHS_PIPE_FLAGS_IS_USED (1 << 0)
|
||||||
#define USBHS_PIPE_FLAGS_IS_DIR_IN (1 << 1)
|
#define USBHS_PIPE_FLAGS_IS_DIR_IN (1 << 1)
|
||||||
|
#define USBHS_PIPE_FLAGS_IS_DIR_HOST (1 << 2)
|
||||||
|
|
||||||
void *mod_private;
|
void *mod_private;
|
||||||
};
|
};
|
||||||
|
@ -89,6 +90,7 @@ struct usbhs_pipe
|
||||||
const struct usb_endpoint_descriptor *desc);
|
const struct usb_endpoint_descriptor *desc);
|
||||||
|
|
||||||
int usbhs_pipe_is_dir_in(struct usbhs_pipe *pipe);
|
int usbhs_pipe_is_dir_in(struct usbhs_pipe *pipe);
|
||||||
|
int usbhs_pipe_is_dir_host(struct usbhs_pipe *pipe);
|
||||||
void usbhs_pipe_init(struct usbhs_priv *priv);
|
void usbhs_pipe_init(struct usbhs_priv *priv);
|
||||||
int usbhs_pipe_get_maxpacket(struct usbhs_pipe *pipe);
|
int usbhs_pipe_get_maxpacket(struct usbhs_pipe *pipe);
|
||||||
void usbhs_pipe_clear_sequence(struct usbhs_pipe *pipe);
|
void usbhs_pipe_clear_sequence(struct usbhs_pipe *pipe);
|
||||||
|
|
Loading…
Reference in New Issue