From: Peter Chen <peter.chen@nxp.com>
To: Macpaul Lin <macpaul.lin@mediatek.com>
Cc: Felipe Balbi <balbi@kernel.org>,
Bart Van Assche <bvanassche@acm.org>,
Mediatek WSD Upstream <wsd_upstream@mediatek.com>,
Hakieyin Hsieh <hakieyin@gmail.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
"linux-usb@vger.kernel.org" <linux-usb@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Alan Stern <stern@rowland.harvard.edu>,
Matthias Brugger <matthias.bgg@gmail.com>,
"linux-mediatek@lists.infradead.org"
<linux-mediatek@lists.infradead.org>,
Macpaul Lin <macpaul.lin@gmail.com>,
Justin Hsieh <justinhsieh@google.com>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH] usb/gadget/function: introduce Built-in CDROM support
Date: Wed, 10 Jun 2020 04:44:22 +0000 [thread overview]
Message-ID: <20200610044446.GA8540@b29397-desktop> (raw)
In-Reply-To: <1591756349-17865-1-git-send-email-macpaul.lin@mediatek.com>
On 20-06-10 10:32:29, Macpaul Lin wrote:
> Introduce Built-In CDROM (BICR) support.
> This feature depends on USB_CONFIGFS_MASS_STORAGE option.
>
> 1. Some settings and new function is introduced for BICR.
> 2. Some work around for adapting Android settings is intorduced as well.
%s/intorduced/introduced
> --- a/drivers/usb/gadget/function/f_mass_storage.c
> +++ b/drivers/usb/gadget/function/f_mass_storage.c
> @@ -315,6 +315,9 @@ struct fsg_common {
> void *private_data;
>
> char inquiry_string[INQUIRY_STRING_LEN];
> +
> + /* For build-in CDROM */
> + u8 bicr;
> };
>
> struct fsg_dev {
> @@ -369,6 +372,10 @@ static void set_bulk_out_req_length(struct fsg_common *common,
> if (rem > 0)
> length += common->bulk_out_maxpacket - rem;
> bh->outreq->length = length;
> +
> + /* some USB 2.0 hardware requires this setting */
> + if (IS_ENABLED(USB_CONFIGFS_BICR))
> + bh->outreq->short_not_ok = 1;
> }
Why not use fsg_common.bicr instead of MACRO?
Peter
>
>
> @@ -527,7 +534,16 @@ static int fsg_setup(struct usb_function *f,
> w_length != 1)
> return -EDOM;
> VDBG(fsg, "get max LUN\n");
> - *(u8 *)req->buf = _fsg_common_get_max_lun(fsg->common);
> + if (IS_ENABLED(USB_CONFIGFS_BICR) && fsg->common->bicr) {
> + /*
> + * When Built-In CDROM is enabled,
> + * we share only one LUN.
> + */
> + *(u8 *)req->buf = 0;
> + } else {
> + *(u8 *)req->buf = _fsg_common_get_max_lun(fsg->common);
> + }
> + INFO(fsg, "get max LUN = %d\n", *(u8 *)req->buf);
>
> /* Respond with data/status */
> req->length = min((u16)1, w_length);
> @@ -1329,7 +1345,7 @@ static int do_start_stop(struct fsg_common *common)
> }
>
> /* Are we allowed to unload the media? */
> - if (curlun->prevent_medium_removal) {
> + if (!curlun->nofua && curlun->prevent_medium_removal) {
> LDBG(curlun, "unload attempt prevented\n");
> curlun->sense_data = SS_MEDIUM_REMOVAL_PREVENTED;
> return -EINVAL;
> @@ -2692,6 +2708,7 @@ int fsg_common_set_cdev(struct fsg_common *common,
> common->ep0 = cdev->gadget->ep0;
> common->ep0req = cdev->req;
> common->cdev = cdev;
> + common->bicr = 0;
>
> us = usb_gstrings_attach(cdev, fsg_strings_array,
> ARRAY_SIZE(fsg_strings));
> @@ -2895,6 +2912,33 @@ static void fsg_common_release(struct fsg_common *common)
> kfree(common);
> }
>
> +#ifdef USB_CONFIGFS_BICR
> +ssize_t fsg_bicr_show(struct fsg_common *common, char *buf)
> +{
> + return sprintf(buf, "%d\n", common->bicr);
> +}
> +
> +ssize_t fsg_bicr_store(struct fsg_common *common, const char *buf, size_t size)
> +{
> + int ret;
> +
> + ret = kstrtou8(buf, 10, &common->bicr);
> + if (ret)
> + return -EINVAL;
> +
> + /* Set Lun[0] is a CDROM when enable bicr.*/
> + if (!strcmp(buf, "1"))
> + common->luns[0]->cdrom = 1;
> + else {
> + common->luns[0]->cdrom = 0;
> + common->luns[0]->blkbits = 0;
> + common->luns[0]->blksize = 0;
> + common->luns[0]->num_sectors = 0;
> + }
> +
> + return size;
> +}
> +#endif
>
> /*-------------------------------------------------------------------------*/
>
> @@ -3463,6 +3507,7 @@ void fsg_config_from_params(struct fsg_config *cfg,
> lun->ro = !!params->ro[i];
> lun->cdrom = !!params->cdrom[i];
> lun->removable = !!params->removable[i];
> + lun->nofua = !!params->nofua[i];
> lun->filename =
> params->file_count > i && params->file[i][0]
> ? params->file[i]
> diff --git a/drivers/usb/gadget/function/f_mass_storage.h b/drivers/usb/gadget/function/f_mass_storage.h
> index 3b8c4ce2a40a..7097e2ea5cc9 100644
> --- a/drivers/usb/gadget/function/f_mass_storage.h
> +++ b/drivers/usb/gadget/function/f_mass_storage.h
> @@ -140,5 +140,8 @@ void fsg_common_set_inquiry_string(struct fsg_common *common, const char *vn,
> void fsg_config_from_params(struct fsg_config *cfg,
> const struct fsg_module_parameters *params,
> unsigned int fsg_num_buffers);
> -
> +#ifdef CONFIG_USB_CONFIGFS_BICR
> +ssize_t fsg_bicr_show(struct fsg_common *common, char *buf);
> +ssize_t fsg_bicr_store(struct fsg_common *common, const char *buf, size_t size);
> +#endif
> #endif /* USB_F_MASS_STORAGE_H */
> diff --git a/drivers/usb/gadget/function/storage_common.c b/drivers/usb/gadget/function/storage_common.c
> index f7e6c42558eb..8fe96eeddf35 100644
> --- a/drivers/usb/gadget/function/storage_common.c
> +++ b/drivers/usb/gadget/function/storage_common.c
> @@ -441,6 +441,29 @@ ssize_t fsg_store_file(struct fsg_lun *curlun, struct rw_semaphore *filesem,
> return -EBUSY; /* "Door is locked" */
> }
>
> + pr_notice("%s file=%s, count=%d, curlun->cdrom=%d\n",
> + __func__, buf, (int)count, curlun->cdrom);
> +
> + /*
> + * WORKAROUND for Android:
> + * VOLD would clean the file path after switching to bicr.
> + * So when the lun is being a CD-ROM a.k.a. BICR.
> + * Don't clean the file path to empty.
> + */
> + if (curlun->cdrom == 1 && count == 1)
> + return count;
> +
> + /*
> + * WORKAROUND: Should be closed the fsg lun for virtual cd-rom,
> + * when switch to other usb functions.
> + * Use the special keyword "off", because the init can
> + * not parse the char '\n' in rc file and write into the sysfs.
> + */
> + if (count == 3 &&
> + buf[0] == 'o' && buf[1] == 'f' && buf[2] == 'f' &&
> + fsg_lun_is_open(curlun))
> + ((char *) buf)[0] = 0;
> +
> /* Remove a trailing newline */
> if (count > 0 && buf[count-1] == '\n')
> ((char *) buf)[count-1] = 0; /* Ugh! */
> --
> 2.18.0
--
Thanks,
Peter Chen
_______________________________________________
Linux-mediatek mailing list
Linux-mediatek@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-mediatek
WARNING: multiple messages have this Message-ID (diff)
From: Peter Chen <peter.chen@nxp.com>
To: Macpaul Lin <macpaul.lin@mediatek.com>
Cc: Felipe Balbi <balbi@kernel.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Matthias Brugger <matthias.bgg@gmail.com>,
Alan Stern <stern@rowland.harvard.edu>,
Bart Van Assche <bvanassche@acm.org>,
Mediatek WSD Upstream <wsd_upstream@mediatek.com>,
Macpaul Lin <macpaul.lin@gmail.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"linux-usb@vger.kernel.org" <linux-usb@vger.kernel.org>,
"linux-mediatek@lists.infradead.org"
<linux-mediatek@lists.infradead.org>,
Justin Hsieh <justinhsieh@google.com>,
Hakieyin Hsieh <hakieyin@gmail.com>
Subject: Re: [PATCH] usb/gadget/function: introduce Built-in CDROM support
Date: Wed, 10 Jun 2020 04:44:22 +0000 [thread overview]
Message-ID: <20200610044446.GA8540@b29397-desktop> (raw)
In-Reply-To: <1591756349-17865-1-git-send-email-macpaul.lin@mediatek.com>
On 20-06-10 10:32:29, Macpaul Lin wrote:
> Introduce Built-In CDROM (BICR) support.
> This feature depends on USB_CONFIGFS_MASS_STORAGE option.
>
> 1. Some settings and new function is introduced for BICR.
> 2. Some work around for adapting Android settings is intorduced as well.
%s/intorduced/introduced
> --- a/drivers/usb/gadget/function/f_mass_storage.c
> +++ b/drivers/usb/gadget/function/f_mass_storage.c
> @@ -315,6 +315,9 @@ struct fsg_common {
> void *private_data;
>
> char inquiry_string[INQUIRY_STRING_LEN];
> +
> + /* For build-in CDROM */
> + u8 bicr;
> };
>
> struct fsg_dev {
> @@ -369,6 +372,10 @@ static void set_bulk_out_req_length(struct fsg_common *common,
> if (rem > 0)
> length += common->bulk_out_maxpacket - rem;
> bh->outreq->length = length;
> +
> + /* some USB 2.0 hardware requires this setting */
> + if (IS_ENABLED(USB_CONFIGFS_BICR))
> + bh->outreq->short_not_ok = 1;
> }
Why not use fsg_common.bicr instead of MACRO?
Peter
>
>
> @@ -527,7 +534,16 @@ static int fsg_setup(struct usb_function *f,
> w_length != 1)
> return -EDOM;
> VDBG(fsg, "get max LUN\n");
> - *(u8 *)req->buf = _fsg_common_get_max_lun(fsg->common);
> + if (IS_ENABLED(USB_CONFIGFS_BICR) && fsg->common->bicr) {
> + /*
> + * When Built-In CDROM is enabled,
> + * we share only one LUN.
> + */
> + *(u8 *)req->buf = 0;
> + } else {
> + *(u8 *)req->buf = _fsg_common_get_max_lun(fsg->common);
> + }
> + INFO(fsg, "get max LUN = %d\n", *(u8 *)req->buf);
>
> /* Respond with data/status */
> req->length = min((u16)1, w_length);
> @@ -1329,7 +1345,7 @@ static int do_start_stop(struct fsg_common *common)
> }
>
> /* Are we allowed to unload the media? */
> - if (curlun->prevent_medium_removal) {
> + if (!curlun->nofua && curlun->prevent_medium_removal) {
> LDBG(curlun, "unload attempt prevented\n");
> curlun->sense_data = SS_MEDIUM_REMOVAL_PREVENTED;
> return -EINVAL;
> @@ -2692,6 +2708,7 @@ int fsg_common_set_cdev(struct fsg_common *common,
> common->ep0 = cdev->gadget->ep0;
> common->ep0req = cdev->req;
> common->cdev = cdev;
> + common->bicr = 0;
>
> us = usb_gstrings_attach(cdev, fsg_strings_array,
> ARRAY_SIZE(fsg_strings));
> @@ -2895,6 +2912,33 @@ static void fsg_common_release(struct fsg_common *common)
> kfree(common);
> }
>
> +#ifdef USB_CONFIGFS_BICR
> +ssize_t fsg_bicr_show(struct fsg_common *common, char *buf)
> +{
> + return sprintf(buf, "%d\n", common->bicr);
> +}
> +
> +ssize_t fsg_bicr_store(struct fsg_common *common, const char *buf, size_t size)
> +{
> + int ret;
> +
> + ret = kstrtou8(buf, 10, &common->bicr);
> + if (ret)
> + return -EINVAL;
> +
> + /* Set Lun[0] is a CDROM when enable bicr.*/
> + if (!strcmp(buf, "1"))
> + common->luns[0]->cdrom = 1;
> + else {
> + common->luns[0]->cdrom = 0;
> + common->luns[0]->blkbits = 0;
> + common->luns[0]->blksize = 0;
> + common->luns[0]->num_sectors = 0;
> + }
> +
> + return size;
> +}
> +#endif
>
> /*-------------------------------------------------------------------------*/
>
> @@ -3463,6 +3507,7 @@ void fsg_config_from_params(struct fsg_config *cfg,
> lun->ro = !!params->ro[i];
> lun->cdrom = !!params->cdrom[i];
> lun->removable = !!params->removable[i];
> + lun->nofua = !!params->nofua[i];
> lun->filename =
> params->file_count > i && params->file[i][0]
> ? params->file[i]
> diff --git a/drivers/usb/gadget/function/f_mass_storage.h b/drivers/usb/gadget/function/f_mass_storage.h
> index 3b8c4ce2a40a..7097e2ea5cc9 100644
> --- a/drivers/usb/gadget/function/f_mass_storage.h
> +++ b/drivers/usb/gadget/function/f_mass_storage.h
> @@ -140,5 +140,8 @@ void fsg_common_set_inquiry_string(struct fsg_common *common, const char *vn,
> void fsg_config_from_params(struct fsg_config *cfg,
> const struct fsg_module_parameters *params,
> unsigned int fsg_num_buffers);
> -
> +#ifdef CONFIG_USB_CONFIGFS_BICR
> +ssize_t fsg_bicr_show(struct fsg_common *common, char *buf);
> +ssize_t fsg_bicr_store(struct fsg_common *common, const char *buf, size_t size);
> +#endif
> #endif /* USB_F_MASS_STORAGE_H */
> diff --git a/drivers/usb/gadget/function/storage_common.c b/drivers/usb/gadget/function/storage_common.c
> index f7e6c42558eb..8fe96eeddf35 100644
> --- a/drivers/usb/gadget/function/storage_common.c
> +++ b/drivers/usb/gadget/function/storage_common.c
> @@ -441,6 +441,29 @@ ssize_t fsg_store_file(struct fsg_lun *curlun, struct rw_semaphore *filesem,
> return -EBUSY; /* "Door is locked" */
> }
>
> + pr_notice("%s file=%s, count=%d, curlun->cdrom=%d\n",
> + __func__, buf, (int)count, curlun->cdrom);
> +
> + /*
> + * WORKAROUND for Android:
> + * VOLD would clean the file path after switching to bicr.
> + * So when the lun is being a CD-ROM a.k.a. BICR.
> + * Don't clean the file path to empty.
> + */
> + if (curlun->cdrom == 1 && count == 1)
> + return count;
> +
> + /*
> + * WORKAROUND: Should be closed the fsg lun for virtual cd-rom,
> + * when switch to other usb functions.
> + * Use the special keyword "off", because the init can
> + * not parse the char '\n' in rc file and write into the sysfs.
> + */
> + if (count == 3 &&
> + buf[0] == 'o' && buf[1] == 'f' && buf[2] == 'f' &&
> + fsg_lun_is_open(curlun))
> + ((char *) buf)[0] = 0;
> +
> /* Remove a trailing newline */
> if (count > 0 && buf[count-1] == '\n')
> ((char *) buf)[count-1] = 0; /* Ugh! */
> --
> 2.18.0
--
Thanks,
Peter Chen
WARNING: multiple messages have this Message-ID (diff)
From: Peter Chen <peter.chen@nxp.com>
To: Macpaul Lin <macpaul.lin@mediatek.com>
Cc: Felipe Balbi <balbi@kernel.org>,
Bart Van Assche <bvanassche@acm.org>,
Mediatek WSD Upstream <wsd_upstream@mediatek.com>,
Hakieyin Hsieh <hakieyin@gmail.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
"linux-usb@vger.kernel.org" <linux-usb@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Alan Stern <stern@rowland.harvard.edu>,
Matthias Brugger <matthias.bgg@gmail.com>,
"linux-mediatek@lists.infradead.org"
<linux-mediatek@lists.infradead.org>,
Macpaul Lin <macpaul.lin@gmail.com>,
Justin Hsieh <justinhsieh@google.com>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH] usb/gadget/function: introduce Built-in CDROM support
Date: Wed, 10 Jun 2020 04:44:22 +0000 [thread overview]
Message-ID: <20200610044446.GA8540@b29397-desktop> (raw)
In-Reply-To: <1591756349-17865-1-git-send-email-macpaul.lin@mediatek.com>
On 20-06-10 10:32:29, Macpaul Lin wrote:
> Introduce Built-In CDROM (BICR) support.
> This feature depends on USB_CONFIGFS_MASS_STORAGE option.
>
> 1. Some settings and new function is introduced for BICR.
> 2. Some work around for adapting Android settings is intorduced as well.
%s/intorduced/introduced
> --- a/drivers/usb/gadget/function/f_mass_storage.c
> +++ b/drivers/usb/gadget/function/f_mass_storage.c
> @@ -315,6 +315,9 @@ struct fsg_common {
> void *private_data;
>
> char inquiry_string[INQUIRY_STRING_LEN];
> +
> + /* For build-in CDROM */
> + u8 bicr;
> };
>
> struct fsg_dev {
> @@ -369,6 +372,10 @@ static void set_bulk_out_req_length(struct fsg_common *common,
> if (rem > 0)
> length += common->bulk_out_maxpacket - rem;
> bh->outreq->length = length;
> +
> + /* some USB 2.0 hardware requires this setting */
> + if (IS_ENABLED(USB_CONFIGFS_BICR))
> + bh->outreq->short_not_ok = 1;
> }
Why not use fsg_common.bicr instead of MACRO?
Peter
>
>
> @@ -527,7 +534,16 @@ static int fsg_setup(struct usb_function *f,
> w_length != 1)
> return -EDOM;
> VDBG(fsg, "get max LUN\n");
> - *(u8 *)req->buf = _fsg_common_get_max_lun(fsg->common);
> + if (IS_ENABLED(USB_CONFIGFS_BICR) && fsg->common->bicr) {
> + /*
> + * When Built-In CDROM is enabled,
> + * we share only one LUN.
> + */
> + *(u8 *)req->buf = 0;
> + } else {
> + *(u8 *)req->buf = _fsg_common_get_max_lun(fsg->common);
> + }
> + INFO(fsg, "get max LUN = %d\n", *(u8 *)req->buf);
>
> /* Respond with data/status */
> req->length = min((u16)1, w_length);
> @@ -1329,7 +1345,7 @@ static int do_start_stop(struct fsg_common *common)
> }
>
> /* Are we allowed to unload the media? */
> - if (curlun->prevent_medium_removal) {
> + if (!curlun->nofua && curlun->prevent_medium_removal) {
> LDBG(curlun, "unload attempt prevented\n");
> curlun->sense_data = SS_MEDIUM_REMOVAL_PREVENTED;
> return -EINVAL;
> @@ -2692,6 +2708,7 @@ int fsg_common_set_cdev(struct fsg_common *common,
> common->ep0 = cdev->gadget->ep0;
> common->ep0req = cdev->req;
> common->cdev = cdev;
> + common->bicr = 0;
>
> us = usb_gstrings_attach(cdev, fsg_strings_array,
> ARRAY_SIZE(fsg_strings));
> @@ -2895,6 +2912,33 @@ static void fsg_common_release(struct fsg_common *common)
> kfree(common);
> }
>
> +#ifdef USB_CONFIGFS_BICR
> +ssize_t fsg_bicr_show(struct fsg_common *common, char *buf)
> +{
> + return sprintf(buf, "%d\n", common->bicr);
> +}
> +
> +ssize_t fsg_bicr_store(struct fsg_common *common, const char *buf, size_t size)
> +{
> + int ret;
> +
> + ret = kstrtou8(buf, 10, &common->bicr);
> + if (ret)
> + return -EINVAL;
> +
> + /* Set Lun[0] is a CDROM when enable bicr.*/
> + if (!strcmp(buf, "1"))
> + common->luns[0]->cdrom = 1;
> + else {
> + common->luns[0]->cdrom = 0;
> + common->luns[0]->blkbits = 0;
> + common->luns[0]->blksize = 0;
> + common->luns[0]->num_sectors = 0;
> + }
> +
> + return size;
> +}
> +#endif
>
> /*-------------------------------------------------------------------------*/
>
> @@ -3463,6 +3507,7 @@ void fsg_config_from_params(struct fsg_config *cfg,
> lun->ro = !!params->ro[i];
> lun->cdrom = !!params->cdrom[i];
> lun->removable = !!params->removable[i];
> + lun->nofua = !!params->nofua[i];
> lun->filename =
> params->file_count > i && params->file[i][0]
> ? params->file[i]
> diff --git a/drivers/usb/gadget/function/f_mass_storage.h b/drivers/usb/gadget/function/f_mass_storage.h
> index 3b8c4ce2a40a..7097e2ea5cc9 100644
> --- a/drivers/usb/gadget/function/f_mass_storage.h
> +++ b/drivers/usb/gadget/function/f_mass_storage.h
> @@ -140,5 +140,8 @@ void fsg_common_set_inquiry_string(struct fsg_common *common, const char *vn,
> void fsg_config_from_params(struct fsg_config *cfg,
> const struct fsg_module_parameters *params,
> unsigned int fsg_num_buffers);
> -
> +#ifdef CONFIG_USB_CONFIGFS_BICR
> +ssize_t fsg_bicr_show(struct fsg_common *common, char *buf);
> +ssize_t fsg_bicr_store(struct fsg_common *common, const char *buf, size_t size);
> +#endif
> #endif /* USB_F_MASS_STORAGE_H */
> diff --git a/drivers/usb/gadget/function/storage_common.c b/drivers/usb/gadget/function/storage_common.c
> index f7e6c42558eb..8fe96eeddf35 100644
> --- a/drivers/usb/gadget/function/storage_common.c
> +++ b/drivers/usb/gadget/function/storage_common.c
> @@ -441,6 +441,29 @@ ssize_t fsg_store_file(struct fsg_lun *curlun, struct rw_semaphore *filesem,
> return -EBUSY; /* "Door is locked" */
> }
>
> + pr_notice("%s file=%s, count=%d, curlun->cdrom=%d\n",
> + __func__, buf, (int)count, curlun->cdrom);
> +
> + /*
> + * WORKAROUND for Android:
> + * VOLD would clean the file path after switching to bicr.
> + * So when the lun is being a CD-ROM a.k.a. BICR.
> + * Don't clean the file path to empty.
> + */
> + if (curlun->cdrom == 1 && count == 1)
> + return count;
> +
> + /*
> + * WORKAROUND: Should be closed the fsg lun for virtual cd-rom,
> + * when switch to other usb functions.
> + * Use the special keyword "off", because the init can
> + * not parse the char '\n' in rc file and write into the sysfs.
> + */
> + if (count == 3 &&
> + buf[0] == 'o' && buf[1] == 'f' && buf[2] == 'f' &&
> + fsg_lun_is_open(curlun))
> + ((char *) buf)[0] = 0;
> +
> /* Remove a trailing newline */
> if (count > 0 && buf[count-1] == '\n')
> ((char *) buf)[count-1] = 0; /* Ugh! */
> --
> 2.18.0
--
Thanks,
Peter Chen
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2020-06-10 4:44 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <EJ Hsu <ejh@nvidia.com>
[not found] ` <mchehab+samsung@kernel.org>
[not found] ` <benh@kernel.crashing.org>
2020-06-10 2:32 ` [PATCH] usb/gadget/function: introduce Built-in CDROM support Macpaul Lin
2020-06-10 2:32 ` Macpaul Lin
2020-06-10 2:32 ` Macpaul Lin
2020-06-10 4:44 ` Peter Chen [this message]
2020-06-10 4:44 ` Peter Chen
2020-06-10 4:44 ` Peter Chen
2020-06-10 6:15 ` [PATCH v2] " Macpaul Lin
2020-06-10 6:15 ` Macpaul Lin
2020-06-10 6:15 ` Macpaul Lin
2020-06-10 14:31 ` Alan Stern
2020-06-10 14:31 ` Alan Stern
2020-06-10 14:31 ` Alan Stern
2020-06-12 3:38 ` Macpaul Lin
2020-06-12 3:38 ` Macpaul Lin
2020-06-12 3:38 ` Macpaul Lin
2020-06-10 6:22 ` [PATCH] " Greg Kroah-Hartman
2020-06-10 6:22 ` Greg Kroah-Hartman
2020-06-10 6:22 ` Greg Kroah-Hartman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200610044446.GA8540@b29397-desktop \
--to=peter.chen@nxp.com \
--cc=balbi@kernel.org \
--cc=bvanassche@acm.org \
--cc=gregkh@linuxfoundation.org \
--cc=hakieyin@gmail.com \
--cc=justinhsieh@google.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=linux-usb@vger.kernel.org \
--cc=macpaul.lin@gmail.com \
--cc=macpaul.lin@mediatek.com \
--cc=matthias.bgg@gmail.com \
--cc=stern@rowland.harvard.edu \
--cc=wsd_upstream@mediatek.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.