[PATCH] usb: gadget: f_mass_storage: Stop ums on START-STOP UNIT SCSI command
Mattijs Korpershoek
mkorpershoek at baylibre.com
Tue Nov 7 10:02:53 CET 2023
Hi Marek,
Thank you for your patch.
On mar., nov. 07, 2023 at 01:09, Marek Vasut <marex at denx.de> wrote:
> Exit the UMS handler loop in case START-STOP UNIT SCSI command is
> received. This is sent e.g. by the util-linux eject(1) command and
> indicates to the device that it is supposed to spin down the media
> and enter low power state.
>
> This effectively adds support for exitting the 'ums' command from
> host using 'eject /dev/sdN' that is on par with 'dfu-util -e' .
>
> Signed-off-by: Marek Vasut <marex at denx.de>
Reviewed-by: Mattijs Korpershoek <mkorpershoek at baylibre.com>
> ---
> Cc: Lukasz Majewski <lukma at denx.de>
> Cc: Mattijs Korpershoek <mkorpershoek at baylibre.com>
> ---
> drivers/usb/gadget/f_mass_storage.c | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/drivers/usb/gadget/f_mass_storage.c b/drivers/usb/gadget/f_mass_storage.c
> index 1d17331cb03..c725aed3f62 100644
> --- a/drivers/usb/gadget/f_mass_storage.c
> +++ b/drivers/usb/gadget/f_mass_storage.c
> @@ -327,6 +327,7 @@ struct fsg_common {
> unsigned int short_packet_received:1;
> unsigned int bad_lun_okay:1;
> unsigned int running:1;
> + unsigned int eject:1;
>
> int thread_wakeup_needed;
> struct completion thread_notifier;
> @@ -669,6 +670,10 @@ static int sleep_thread(struct fsg_common *common)
> }
>
> if (k == 10) {
> + /* Handle START-STOP UNIT */
> + if (common->eject)
> + return -EPIPE;
> +
> /* Handle CTRL+C */
> if (ctrlc())
> return -EPIPE;
> @@ -1325,6 +1330,8 @@ static int do_start_stop(struct fsg_common *common)
> return -EINVAL;
> }
>
> + common->eject = 1;
> +
> return 0;
> }
>
> --
> 2.42.0
More information about the U-Boot
mailing list