From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 99AF4C43381 for ; Mon, 4 Mar 2019 08:35:20 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 6000220836 for ; Mon, 4 Mar 2019 08:35:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1551688520; bh=yL2Q3l60xl5BmYnVHu0yFtTvrT0nM5oidQ0ewOEKIgA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=SPdWtUZC1KI5qoOuWXbLbRuu4QWbAQxHRhSl20n1XFZoORUUIVJhWUwh4c4xvL3eu /iY6REU93SDwQPcCeR4jgWLEPXr0bRM4DdXrXXwrW1hJZ6DC6YzofFUZdi32Ekd7GB VdssIfqLiVjFpOYacTNaR8g7fV/VgrHOlRBamRRA= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728101AbfCDIfT (ORCPT ); Mon, 4 Mar 2019 03:35:19 -0500 Received: from mail.kernel.org ([198.145.29.99]:42980 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728420AbfCDIfO (ORCPT ); Mon, 4 Mar 2019 03:35:14 -0500 Received: from localhost (5356596B.cm-6-7b.dynamic.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 313A820823; Mon, 4 Mar 2019 08:35:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1551688513; bh=yL2Q3l60xl5BmYnVHu0yFtTvrT0nM5oidQ0ewOEKIgA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=QmhG10sX31I4c7/e1bGuwSEarWnlLGIDH7x0qeF+oosgTZ7PwcI6OVLVFeyMjZZKU u4zujAvtnCcxjdkQh1IhpRtg5TXIoxN6RyiFDdW58/8byVAmFoMyuEeVUFCuZQjzya VtjNBLynZawQmtftz4z7lIkNjuEMjWfdt77T7Ujs= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, =?UTF-8?q?Jonathan=20Neusch=C3=A4fer?= , Linus Walleij , Ulf Hansson Subject: [PATCH 4.20 68/88] mmc: spi: Fix card detection during probe Date: Mon, 4 Mar 2019 09:22:51 +0100 Message-Id: <20190304081633.282031167@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190304081630.610632175@linuxfoundation.org> References: <20190304081630.610632175@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review X-Patchwork-Hint: ignore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.20-stable review patch. If anyone has any objections, please let me know. ------------------ From: Jonathan Neuschäfer commit c9bd505dbd9d3dc80c496f88eafe70affdcf1ba6 upstream. When using the mmc_spi driver with a card-detect pin, I noticed that the card was not detected immediately after probe, but only after it was unplugged and plugged back in (and the CD IRQ fired). The call tree looks something like this: mmc_spi_probe mmc_add_host mmc_start_host _mmc_detect_change mmc_schedule_delayed_work(&host->detect, 0) mmc_rescan host->bus_ops->detect(host) mmc_detect _mmc_detect_card_removed host->ops->get_cd(host) mmc_gpio_get_cd -> -ENOSYS (ctx->cd_gpio not set) mmc_gpiod_request_cd ctx->cd_gpio = desc To fix this issue, call mmc_detect_change after the card-detect GPIO/IRQ is registered. Signed-off-by: Jonathan Neuschäfer Reviewed-by: Linus Walleij Cc: stable@vger.kernel.org Signed-off-by: Ulf Hansson Signed-off-by: Greg Kroah-Hartman --- drivers/mmc/host/mmc_spi.c | 1 + 1 file changed, 1 insertion(+) --- a/drivers/mmc/host/mmc_spi.c +++ b/drivers/mmc/host/mmc_spi.c @@ -1447,6 +1447,7 @@ static int mmc_spi_probe(struct spi_devi mmc->caps &= ~MMC_CAP_NEEDS_POLL; mmc_gpiod_request_cd_irq(mmc); } + mmc_detect_change(mmc, 0); if (host->pdata && host->pdata->flags & MMC_SPI_USE_RO_GPIO) { has_ro = true;