]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
mmc: vub300: Use devm_mmc_alloc_host() helper
authorBinbin Zhou <zhoubinbin@loongson.cn>
Tue, 3 Jun 2025 12:28:02 +0000 (20:28 +0800)
committerUlf Hansson <ulf.hansson@linaro.org>
Tue, 24 Jun 2025 10:43:23 +0000 (12:43 +0200)
Use new function devm_mmc_alloc_host() to simplify the code.

Reviewed-by: Huacai Chen <chenhuacai@loongson.cn>
Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
Link: https://lore.kernel.org/r/f023d2caa02fab405f089c5170b686529857fb70.1748933789.git.zhoubinbin@loongson.cn
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/host/vub300.c

index f498fe11ecdf195d9f11af00f3809ab84aea91e2..ff49d0770506f740511ab5ba2c140b2116e99925 100644 (file)
@@ -369,13 +369,11 @@ struct vub300_mmc_host {
 static void vub300_delete(struct kref *kref)
 {                              /* kref callback - softirq */
        struct vub300_mmc_host *vub300 = kref_to_vub300_mmc_host(kref);
-       struct mmc_host *mmc = vub300->mmc;
        usb_free_urb(vub300->command_out_urb);
        vub300->command_out_urb = NULL;
        usb_free_urb(vub300->command_res_urb);
        vub300->command_res_urb = NULL;
        usb_put_dev(vub300->udev);
-       mmc_free_host(mmc);
        /*
         * and hence also frees vub300
         * which is contained at the end of struct mmc
@@ -2114,7 +2112,7 @@ static int vub300_probe(struct usb_interface *interface,
                goto error1;
        }
        /* this also allocates memory for our VUB300 mmc host device */
-       mmc = mmc_alloc_host(sizeof(struct vub300_mmc_host), &udev->dev);
+       mmc = devm_mmc_alloc_host(&udev->dev, sizeof(*vub300));
        if (!mmc) {
                retval = -ENOMEM;
                dev_err(&udev->dev, "not enough memory for the mmc_host\n");
@@ -2271,7 +2269,7 @@ static int vub300_probe(struct usb_interface *interface,
                dev_err(&vub300->udev->dev,
                    "Could not find two sets of bulk-in/out endpoint pairs\n");
                retval = -EINVAL;
-               goto error5;
+               goto error4;
        }
        retval =
                usb_control_msg(vub300->udev, usb_rcvctrlpipe(vub300->udev, 0),
@@ -2280,14 +2278,14 @@ static int vub300_probe(struct usb_interface *interface,
                                0x0000, 0x0000, &vub300->hc_info,
                                sizeof(vub300->hc_info), 1000);
        if (retval < 0)
-               goto error5;
+               goto error4;
        retval =
                usb_control_msg(vub300->udev, usb_sndctrlpipe(vub300->udev, 0),
                                SET_ROM_WAIT_STATES,
                                USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
                                firmware_rom_wait_states, 0x0000, NULL, 0, 1000);
        if (retval < 0)
-               goto error5;
+               goto error4;
        dev_info(&vub300->udev->dev,
                 "operating_mode = %s %s %d MHz %s %d byte USB packets\n",
                 (mmc->caps & MMC_CAP_SDIO_IRQ) ? "IRQs" : "POLL",
@@ -2302,7 +2300,7 @@ static int vub300_probe(struct usb_interface *interface,
                                0x0000, 0x0000, &vub300->system_port_status,
                                sizeof(vub300->system_port_status), 1000);
        if (retval < 0) {
-               goto error5;
+               goto error4;
        } else if (sizeof(vub300->system_port_status) == retval) {
                vub300->card_present =
                        (0x0001 & vub300->system_port_status.port_flags) ? 1 : 0;
@@ -2310,7 +2308,7 @@ static int vub300_probe(struct usb_interface *interface,
                        (0x0010 & vub300->system_port_status.port_flags) ? 1 : 0;
        } else {
                retval = -EINVAL;
-               goto error5;
+               goto error4;
        }
        usb_set_intfdata(interface, vub300);
        INIT_DELAYED_WORK(&vub300->pollwork, vub300_pollwork_thread);
@@ -2340,8 +2338,6 @@ static int vub300_probe(struct usb_interface *interface,
        return 0;
 error6:
        timer_delete_sync(&vub300->inactivity_timer);
-error5:
-       mmc_free_host(mmc);
        /*
         * and hence also frees vub300
         * which is contained at the end of struct mmc