Commit a891d7a3 authored by Andrzej Pietrasiewicz's avatar Andrzej Pietrasiewicz Committed by Felipe Balbi

usb: gadget: f_mass_storage: create fsg_common_set_cdev for use in fsg_common_init

fsg_common_init is a lengthy function. Factor a portion of it out.
Signed-off-by: default avatarAndrzej Pietrasiewicz <andrzej.p@samsung.com>
Signed-off-by: default avatarKyungmin Park <kyungmin.park@samsung.com>
Acked-by: default avatarMichal Nazarewicz <mina86@mina86.com>
Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
parent 70634170
...@@ -2810,6 +2810,33 @@ int fsg_common_set_nluns(struct fsg_common *common, int nluns) ...@@ -2810,6 +2810,33 @@ int fsg_common_set_nluns(struct fsg_common *common, int nluns)
return 0; return 0;
} }
int fsg_common_set_cdev(struct fsg_common *common,
struct usb_composite_dev *cdev, bool can_stall)
{
struct usb_string *us;
common->gadget = cdev->gadget;
common->ep0 = cdev->gadget->ep0;
common->ep0req = cdev->req;
common->cdev = cdev;
us = usb_gstrings_attach(cdev, fsg_strings_array,
ARRAY_SIZE(fsg_strings));
if (IS_ERR(us))
return PTR_ERR(us);
fsg_intf_desc.iInterface = us[FSG_STRING_INTERFACE].id;
/*
* Some peripheral controllers are known not to be able to
* halt bulk endpoints correctly. If one of them is present,
* disable stalls.
*/
common->can_stall = can_stall && !(gadget_is_at91(common->gadget));
return 0;
}
struct fsg_common *fsg_common_init(struct fsg_common *common, struct fsg_common *fsg_common_init(struct fsg_common *common,
struct usb_composite_dev *cdev, struct usb_composite_dev *cdev,
struct fsg_config *cfg) struct fsg_config *cfg)
...@@ -2817,7 +2844,6 @@ struct fsg_common *fsg_common_init(struct fsg_common *common, ...@@ -2817,7 +2844,6 @@ struct fsg_common *fsg_common_init(struct fsg_common *common,
struct usb_gadget *gadget = cdev->gadget; struct usb_gadget *gadget = cdev->gadget;
struct fsg_lun **curlun_it; struct fsg_lun **curlun_it;
struct fsg_lun_config *lcfg; struct fsg_lun_config *lcfg;
struct usb_string *us;
int nluns, i, rc; int nluns, i, rc;
char *pathbuf; char *pathbuf;
...@@ -2837,19 +2863,9 @@ struct fsg_common *fsg_common_init(struct fsg_common *common, ...@@ -2837,19 +2863,9 @@ struct fsg_common *fsg_common_init(struct fsg_common *common,
common->ops = cfg->ops; common->ops = cfg->ops;
common->private_data = cfg->private_data; common->private_data = cfg->private_data;
common->gadget = gadget; rc = fsg_common_set_cdev(common, cdev, cfg->can_stall);
common->ep0 = gadget->ep0; if (rc)
common->ep0req = cdev->req;
common->cdev = cdev;
us = usb_gstrings_attach(cdev, fsg_strings_array,
ARRAY_SIZE(fsg_strings));
if (IS_ERR(us)) {
rc = PTR_ERR(us);
goto error_release; goto error_release;
}
fsg_intf_desc.iInterface = us[FSG_STRING_INTERFACE].id;
rc = fsg_common_set_nluns(common, cfg->nluns); rc = fsg_common_set_nluns(common, cfg->nluns);
if (rc) if (rc)
...@@ -2925,14 +2941,6 @@ struct fsg_common *fsg_common_init(struct fsg_common *common, ...@@ -2925,14 +2941,6 @@ struct fsg_common *fsg_common_init(struct fsg_common *common,
: "File-Stor Gadget"), : "File-Stor Gadget"),
i); i);
/*
* Some peripheral controllers are known not to be able to
* halt bulk endpoints correctly. If one of them is present,
* disable stalls.
*/
common->can_stall = cfg->can_stall &&
!(gadget_is_at91(common->gadget));
/* Tell the thread to start working */ /* Tell the thread to start working */
common->thread_task = common->thread_task =
......
...@@ -106,6 +106,9 @@ void fsg_common_set_sysfs(struct fsg_common *common, bool sysfs); ...@@ -106,6 +106,9 @@ void fsg_common_set_sysfs(struct fsg_common *common, bool sysfs);
int fsg_common_set_num_buffers(struct fsg_common *common, unsigned int n); int fsg_common_set_num_buffers(struct fsg_common *common, unsigned int n);
int fsg_common_set_cdev(struct fsg_common *common,
struct usb_composite_dev *cdev, bool can_stall);
void fsg_common_remove_lun(struct fsg_lun *lun, bool sysfs); void fsg_common_remove_lun(struct fsg_lun *lun, bool sysfs);
void fsg_common_remove_luns(struct fsg_common *common); void fsg_common_remove_luns(struct fsg_common *common);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment