]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
Revert "drivers/card_reader/rtsx_usb: Restore interrupt based detection"
authorChristian Heusel <christian@heusel.eu>
Mon, 24 Feb 2025 08:32:59 +0000 (09:32 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 27 Feb 2025 20:24:53 +0000 (12:24 -0800)
This reverts commit 235b630eda072d7e7b102ab346d6b8a2c028a772.

This commit was found responsible for issues with SD card recognition,
as users had to re-insert their cards in the readers and wait for a
while. As for some people the SD card was involved in the boot process
it also caused boot failures.

Cc: stable@vger.kernel.org
Link: https://bbs.archlinux.org/viewtopic.php?id=303321
Fixes: 235b630eda07 ("drivers/card_reader/rtsx_usb: Restore interrupt based detection")
Reported-by: qf <quintafeira@tutanota.com>
Closes: https://lore.kernel.org/all/1de87dfa-1e81-45b7-8dcb-ad86c21d5352@heusel.eu
Signed-off-by: Christian Heusel <christian@heusel.eu>
Link: https://lore.kernel.org/r/20250224-revert-sdcard-patch-v1-1-d1a457fbb796@heusel.eu
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/misc/cardreader/rtsx_usb.c

index e0174da5e9fc39ae96b70ce70d57a87dfaa2ebdb..77b0490a1b38d79134d48020bd49a9fa6f0df967 100644 (file)
@@ -286,7 +286,6 @@ static int rtsx_usb_get_status_with_bulk(struct rtsx_ucr *ucr, u16 *status)
 int rtsx_usb_get_card_status(struct rtsx_ucr *ucr, u16 *status)
 {
        int ret;
-       u8 interrupt_val = 0;
        u16 *buf;
 
        if (!status)
@@ -309,20 +308,6 @@ int rtsx_usb_get_card_status(struct rtsx_ucr *ucr, u16 *status)
                ret = rtsx_usb_get_status_with_bulk(ucr, status);
        }
 
-       rtsx_usb_read_register(ucr, CARD_INT_PEND, &interrupt_val);
-       /* Cross check presence with interrupts */
-       if (*status & XD_CD)
-               if (!(interrupt_val & XD_INT))
-                       *status &= ~XD_CD;
-
-       if (*status & SD_CD)
-               if (!(interrupt_val & SD_INT))
-                       *status &= ~SD_CD;
-
-       if (*status & MS_CD)
-               if (!(interrupt_val & MS_INT))
-                       *status &= ~MS_CD;
-
        /* usb_control_msg may return positive when success */
        if (ret < 0)
                return ret;