From patchwork Mon Apr 8 19:52:39 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hans de Goede X-Patchwork-Id: 787094 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0F5A014600D for ; Mon, 8 Apr 2024 19:52:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712605980; cv=none; b=iDjuZOBc+WXm2XhZKLfi5MLV84BOyXci2VY0kmODER61UVkh7jmG3YjP6jhmB8RY/BhaJzPvNqxwtFD7dDhDhI0Cpfx7LNXrXCnqfv5NqVSIAg/jIbAzofZg5usUVK99clIoWEmNH75cewX/o8uClnrRtXuPr1FBrrzdrlAmH4U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712605980; c=relaxed/simple; bh=erJ5V4AEq9kOBuy+ykQ1O00z8l7mTBVCWc0yL6DBaS8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=eijPjAG8Ob+9NbgCmVHu7/Om9x8egUMeDAXL2IktdN33B/ngVvn9/7ugsmJFUq2gAoc4jPcl+rg3QnDCMyIwhvSad82/SCzsWAUGhDnzeLzi46sTUSxd7t9rcP7PdQHqE2gM7oJvcSP03GGg0jDJGym70xmiTwoKL/Fpf7PiQDw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=FiK2Boss; arc=none smtp.client-ip=170.10.133.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="FiK2Boss" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1712605978; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Bx2XDbPzp2AfqZX+T1+85Iiv5NmDhmS7mUqjJ8NOCFI=; b=FiK2BossozpriofMTxpOSKyTQTD3M7oCX/Q1hfuPclFkAqaPcnzQ0nZE/siVjT291zt+LS oXLefolIpZa0FZThgnQG4KSIEPetqwAqtwmd3A04zYZfQjanF0hYRiRwAubCBKu9aZ687+ 6yplAjZ7EStkdds8xuZpuAfOiS6xMpU= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-176-TADWv__bOaSMnondXG9ngA-1; Mon, 08 Apr 2024 15:52:51 -0400 X-MC-Unique: TADWv__bOaSMnondXG9ngA-1 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id D68B710499A1; Mon, 8 Apr 2024 19:52:50 +0000 (UTC) Received: from shalem.redhat.com (unknown [10.39.192.47]) by smtp.corp.redhat.com (Postfix) with ESMTP id 04C121C0666A; Mon, 8 Apr 2024 19:52:49 +0000 (UTC) From: Hans de Goede To: Adrian Hunter , Ulf Hansson , Andy Shevchenko , Mika Westerberg Cc: Hans de Goede , linux-mmc@vger.kernel.org Subject: [PATCH v2 1/6] mmc: core: Add mmc_gpiod_set_cd_config() function Date: Mon, 8 Apr 2024 21:52:39 +0200 Message-ID: <20240408195244.248280-2-hdegoede@redhat.com> In-Reply-To: <20240408195244.248280-1-hdegoede@redhat.com> References: <20240408195244.248280-1-hdegoede@redhat.com> Precedence: bulk X-Mailing-List: linux-mmc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.7 Some mmc host drivers may need to fixup a card-detection GPIO's config to e.g. enable the GPIO controllers builtin pull-up resistor on devices where the firmware description of the GPIO is broken (e.g. GpioInt with PullNone instead of PullUp in ACPI DSDT). Since this is the exception rather then the rule adding a config parameter to mmc_gpiod_request_cd() seems undesirable, so instead add a new mmc_gpiod_set_cd_config() function. This is simply a wrapper to call gpiod_set_config() on the card-detect GPIO acquired through mmc_gpiod_request_cd(). Reviewed-by: Andy Shevchenko Signed-off-by: Hans de Goede --- Changes in v2: - Group mmc_gpiod_set_cd_config() prototype in slot-gpio.h together with mmc_gpiod_set_cd_config() --- drivers/mmc/core/slot-gpio.c | 20 ++++++++++++++++++++ include/linux/mmc/slot-gpio.h | 1 + 2 files changed, 21 insertions(+) diff --git a/drivers/mmc/core/slot-gpio.c b/drivers/mmc/core/slot-gpio.c index 39f45c2b6de8..8791656e9e20 100644 --- a/drivers/mmc/core/slot-gpio.c +++ b/drivers/mmc/core/slot-gpio.c @@ -221,6 +221,26 @@ int mmc_gpiod_request_cd(struct mmc_host *host, const char *con_id, } EXPORT_SYMBOL(mmc_gpiod_request_cd); +/** + * mmc_gpiod_set_cd_config - set config for card-detection GPIO + * @host: mmc host + * @config: Generic pinconf config (from pinconf_to_config_packed()) + * + * This can be used by mmc host drivers to fixup a card-detection GPIO's config + * (e.g. set PIN_CONFIG_BIAS_PULL_UP) after acquiring the GPIO descriptor + * through mmc_gpiod_request_cd(). + * + * Returns: + * 0 on success, or a negative errno value on error. + */ +int mmc_gpiod_set_cd_config(struct mmc_host *host, unsigned long config) +{ + struct mmc_gpio *ctx = host->slot.handler_priv; + + return gpiod_set_config(ctx->cd_gpio, config); +} +EXPORT_SYMBOL(mmc_gpiod_set_cd_config); + bool mmc_can_gpio_cd(struct mmc_host *host) { struct mmc_gpio *ctx = host->slot.handler_priv; diff --git a/include/linux/mmc/slot-gpio.h b/include/linux/mmc/slot-gpio.h index 5d3d15e97868..66272fdce43d 100644 --- a/include/linux/mmc/slot-gpio.h +++ b/include/linux/mmc/slot-gpio.h @@ -21,6 +21,7 @@ int mmc_gpiod_request_cd(struct mmc_host *host, const char *con_id, unsigned int debounce); int mmc_gpiod_request_ro(struct mmc_host *host, const char *con_id, unsigned int idx, unsigned int debounce); +int mmc_gpiod_set_cd_config(struct mmc_host *host, unsigned long config); void mmc_gpio_set_cd_isr(struct mmc_host *host, irqreturn_t (*isr)(int irq, void *dev_id)); int mmc_gpio_set_cd_wake(struct mmc_host *host, bool on); From patchwork Mon Apr 8 19:52:40 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hans de Goede X-Patchwork-Id: 787809 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 463F814601D for ; Mon, 8 Apr 2024 19:52:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712605978; cv=none; b=NDGhxGGlxk6FfzIHScOQ8UfFHLk+v5zjo0EHWpxffhSJZjE5AbKX+yrAbS7WsPNRex9eYkZt7Fb6i+W3oVqz9pcCURBKtzVUFB5iLf/K07u9DiJy4z7HZBTqt3S7Ll3eEBHH8ncTdREBGsVS21CPcwry06NAxAeFd5/guYOpQlg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712605978; c=relaxed/simple; bh=PzuSmE4ihUCh4/8IT4mYAJf9RDsenQewIMSnt0ppd44=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=SnRVPnSWTc5E5UlvJJKBBjNIZEIGwqULIfM18WTpIAsqabZ0R2SLqig9G1ELAfJY/+e1/IgJY+IzDQjuXQ9LayprpC09hzRXSTUpV0AJg5q772HaZ9ZRgM3eQt1JEZxV0v7yXNAKViSivIYrVzdiolbPGoo56UUf6zKJCMnexJg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=GnioHYgv; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="GnioHYgv" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1712605976; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=/mg7eMhdcCavZTvEVLK3/VeybeebfTGDbTPzbmCHQow=; b=GnioHYgvcE1HjE7U7pb/2lhgVuFGgKMk4dK9RP7HNAhLHRR9YA0w0k2xec21gzQMG5pzkG WZ+SH3qJdAR+pYfizDS4BYbhGeZi81kyjPkROaR2dl1BKMZ0i+k8zpfInOC5WNMlE3GvqE 0o/w8xZPcnFEfv9D/BeOg9gN5/g47n8= Received: from mimecast-mx02.redhat.com (mx-ext.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-7-ZJBJWy0WM6W9OZFzlhiJ9g-1; Mon, 08 Apr 2024 15:52:52 -0400 X-MC-Unique: ZJBJWy0WM6W9OZFzlhiJ9g-1 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id E54003C23FC2; Mon, 8 Apr 2024 19:52:51 +0000 (UTC) Received: from shalem.redhat.com (unknown [10.39.192.47]) by smtp.corp.redhat.com (Postfix) with ESMTP id 135931C060A6; Mon, 8 Apr 2024 19:52:50 +0000 (UTC) From: Hans de Goede To: Adrian Hunter , Ulf Hansson , Andy Shevchenko , Mika Westerberg Cc: Hans de Goede , linux-mmc@vger.kernel.org Subject: [PATCH v2 2/6] mmc: sdhci-acpi: Sort DMI quirks alphabetically Date: Mon, 8 Apr 2024 21:52:40 +0200 Message-ID: <20240408195244.248280-3-hdegoede@redhat.com> In-Reply-To: <20240408195244.248280-1-hdegoede@redhat.com> References: <20240408195244.248280-1-hdegoede@redhat.com> Precedence: bulk X-Mailing-List: linux-mmc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.7 Sort the DMI quirks alphabetically. Reviewed-by: Andy Shevchenko Signed-off-by: Hans de Goede --- drivers/mmc/host/sdhci-acpi.c | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/drivers/mmc/host/sdhci-acpi.c b/drivers/mmc/host/sdhci-acpi.c index acf5fc3ad7e4..d2003d3be6ba 100644 --- a/drivers/mmc/host/sdhci-acpi.c +++ b/drivers/mmc/host/sdhci-acpi.c @@ -719,7 +719,20 @@ static const struct acpi_device_id sdhci_acpi_ids[] = { }; MODULE_DEVICE_TABLE(acpi, sdhci_acpi_ids); +/* Please keep this list sorted alphabetically */ static const struct dmi_system_id sdhci_acpi_quirks[] = { + { + /* + * The Acer Aspire Switch 10 (SW5-012) microSD slot always + * reports the card being write-protected even though microSD + * cards do not have a write-protect switch at all. + */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Acer"), + DMI_MATCH(DMI_PRODUCT_NAME, "Aspire SW5-012"), + }, + .driver_data = (void *)DMI_QUIRK_SD_NO_WRITE_PROTECT, + }, { /* * The Lenovo Miix 320-10ICR has a bug in the _PS0 method of @@ -734,18 +747,6 @@ static const struct dmi_system_id sdhci_acpi_quirks[] = { }, .driver_data = (void *)DMI_QUIRK_RESET_SD_SIGNAL_VOLT_ON_SUSP, }, - { - /* - * The Acer Aspire Switch 10 (SW5-012) microSD slot always - * reports the card being write-protected even though microSD - * cards do not have a write-protect switch at all. - */ - .matches = { - DMI_MATCH(DMI_SYS_VENDOR, "Acer"), - DMI_MATCH(DMI_PRODUCT_NAME, "Aspire SW5-012"), - }, - .driver_data = (void *)DMI_QUIRK_SD_NO_WRITE_PROTECT, - }, { /* * The Toshiba WT8-B's microSD slot always reports the card being From patchwork Mon Apr 8 19:52:41 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hans de Goede X-Patchwork-Id: 787093 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DF7C8146592 for ; Mon, 8 Apr 2024 19:52:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712605981; cv=none; b=BlwJzW+9CGFF2GYuv2yEx0g45B+QBnlMAt7RBkyq9HbOBRUb4I4Pu2V9XHi4lWrN7n0hfjWl9fZYwirQ7noUmTszHiLppY9HqCuXjy6CEGZVVO8qvPLzzUXl2PZwnW8l4HAIHBlbnBb6pHmPGqjRQ/2dJQAOpXeSSQcnkFh8dfo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712605981; c=relaxed/simple; bh=hny3GcJw+cOyC6bi3JxwpIxmCwZ+53tgY8yhvtqrX0Q=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=qIuK84324v15LJn3KgaDy0oeGmFwVkdiYhWtguMlCRBOk3qrJBsrXv1SNZjeqnEX6BzTgbscbXvsNMo752dkbk5vMTUB21RnR6Vepuvhk2fniM9dDdyPQDUjVNH9m4qr7AQPNRrekmwdRbCMM1/Q5HQRxAYYbz/5bP/o1sAQPHI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=GvVjsvCo; arc=none smtp.client-ip=170.10.133.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="GvVjsvCo" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1712605978; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Zz3RoyVxm3ohgGMY00h1dvUybE8QFAe+1sOh2Nw6T04=; b=GvVjsvCojK7Ti7svrrCW0lTNgebf8K5JYjV1nL+kiDpSU6CTG+aYXRCToZATPRYe2XRspz xoQD/jpuZwojn+32cXsQk+ZSP86kz1csA6dM25sch1m0mLQyPlIbxJnHgL2iAX7ot2Ynk9 zg/dgPfZMFoPW6uLoj/cLYWcB297ics= Received: from mimecast-mx02.redhat.com (mx-ext.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-392-SCO-oG6pMBaBFvv5ypORPg-1; Mon, 08 Apr 2024 15:52:53 -0400 X-MC-Unique: SCO-oG6pMBaBFvv5ypORPg-1 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id F2DD71C03168; Mon, 8 Apr 2024 19:52:52 +0000 (UTC) Received: from shalem.redhat.com (unknown [10.39.192.47]) by smtp.corp.redhat.com (Postfix) with ESMTP id 21D971C06668; Mon, 8 Apr 2024 19:52:52 +0000 (UTC) From: Hans de Goede To: Adrian Hunter , Ulf Hansson , Andy Shevchenko , Mika Westerberg Cc: Hans de Goede , linux-mmc@vger.kernel.org Subject: [PATCH v2 3/6] mmc: sdhci-acpi: Fix Lenovo Yoga Tablet 2 Pro 1380 sdcard slot not working Date: Mon, 8 Apr 2024 21:52:41 +0200 Message-ID: <20240408195244.248280-4-hdegoede@redhat.com> In-Reply-To: <20240408195244.248280-1-hdegoede@redhat.com> References: <20240408195244.248280-1-hdegoede@redhat.com> Precedence: bulk X-Mailing-List: linux-mmc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.7 The Lenovo Yoga Tablet 2 Pro 1380 sdcard slot has an active high cd pin and a broken wp pin which always reports the card being write-protected. Add a DMI quirk to address both issues. Reviewed-by: Andy Shevchenko Signed-off-by: Hans de Goede --- drivers/mmc/host/sdhci-acpi.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/drivers/mmc/host/sdhci-acpi.c b/drivers/mmc/host/sdhci-acpi.c index d2003d3be6ba..c0d77f589deb 100644 --- a/drivers/mmc/host/sdhci-acpi.c +++ b/drivers/mmc/host/sdhci-acpi.c @@ -80,6 +80,7 @@ struct sdhci_acpi_host { enum { DMI_QUIRK_RESET_SD_SIGNAL_VOLT_ON_SUSP = BIT(0), DMI_QUIRK_SD_NO_WRITE_PROTECT = BIT(1), + DMI_QUIRK_SD_CD_ACTIVE_HIGH = BIT(2), }; static inline void *sdhci_acpi_priv(struct sdhci_acpi_host *c) @@ -747,6 +748,26 @@ static const struct dmi_system_id sdhci_acpi_quirks[] = { }, .driver_data = (void *)DMI_QUIRK_RESET_SD_SIGNAL_VOLT_ON_SUSP, }, + { + /* + * Lenovo Yoga Tablet 2 Pro 1380F/L (13" Android version) this + * has broken WP reporting and an inverted CD signal. + * Note this has more or less the same BIOS as the Lenovo Yoga + * Tablet 2 830F/L or 1050F/L (8" and 10" Android), but unlike + * the 830 / 1050 models which share the same mainboard this + * model has a different mainboard and the inverted CD and + * broken WP are unique to this board. + */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Intel Corp."), + DMI_MATCH(DMI_PRODUCT_NAME, "VALLEYVIEW C0 PLATFORM"), + DMI_MATCH(DMI_BOARD_NAME, "BYT-T FFD8"), + /* Full match so as to NOT match the 830/1050 BIOS */ + DMI_MATCH(DMI_BIOS_VERSION, "BLADE_21.X64.0005.R00.1504101516"), + }, + .driver_data = (void *)(DMI_QUIRK_SD_NO_WRITE_PROTECT | + DMI_QUIRK_SD_CD_ACTIVE_HIGH), + }, { /* * The Toshiba WT8-B's microSD slot always reports the card being @@ -867,6 +888,9 @@ static int sdhci_acpi_probe(struct platform_device *pdev) if (sdhci_acpi_flag(c, SDHCI_ACPI_SD_CD)) { bool v = sdhci_acpi_flag(c, SDHCI_ACPI_SD_CD_OVERRIDE_LEVEL); + if (quirks & DMI_QUIRK_SD_CD_ACTIVE_HIGH) + host->mmc->caps2 |= MMC_CAP2_CD_ACTIVE_HIGH; + err = mmc_gpiod_request_cd(host->mmc, NULL, 0, v, 0); if (err) { if (err == -EPROBE_DEFER) From patchwork Mon Apr 8 19:52:42 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hans de Goede X-Patchwork-Id: 787807 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E662D14659B for ; Mon, 8 Apr 2024 19:53:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712605982; cv=none; b=dexwha+c7eQ9odUh/TYPuJEBFeISebf9fXu7EpacseyvBlhUJ2trcySNBIeXtFcJNndcFrK/vXGzIk8HpZ3Hg7Eyl1CkrQl8wXosw6Sii2SX04eE472kn2a2SpIv9zeiRLyHcAOjWdHKWEhdao2PCujXFUECG5eDqe7DiAYZGpk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712605982; c=relaxed/simple; bh=m2pF9eXb2yLWCEArLNbq/P0oVeSmtUhzHztUw+jOWW4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=JvJW3VSKjTd2qxdZGXuQ5udHHkt+woKCfV8vZiwa+65xqLIjt3BVQMnp8VPIgN/wEmZME3ucFtvs3Us/WG/Cgz6nmzlViY8XCsMBSWshqD0qS6RdNMNEoZh6lFU+cZN2azFnK6SFyZ+2oRSOLYOhasFamUfd/3LUGaRFnRUhQRA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=f5+dGaYx; arc=none smtp.client-ip=170.10.133.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="f5+dGaYx" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1712605979; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=GL6ujS5pqW+8AnZrF0DZBN7MP26gT/LvN8g1NN7Jixc=; b=f5+dGaYxg5z4nI4lf29EIRO1bgqesp5E7M5VIwMGNr74qsqzWilQQGaZZpe5loCCE0/8RL a+MRtwffaXG8tedz3BoVXMZyhT6e3YEEhoaX/yNwdk1SbO/2Ug8dR0wTVpdaOp8/tHXO+5 6i24ZVX4SUubDIRDfubUJ10v0ij7D2Y= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-456-B4Y59BRAN7-o8BvELYwQcA-1; Mon, 08 Apr 2024 15:52:54 -0400 X-MC-Unique: B4Y59BRAN7-o8BvELYwQcA-1 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 0E6ED80C76F; Mon, 8 Apr 2024 19:52:54 +0000 (UTC) Received: from shalem.redhat.com (unknown [10.39.192.47]) by smtp.corp.redhat.com (Postfix) with ESMTP id 2FAD41C0666B; Mon, 8 Apr 2024 19:52:53 +0000 (UTC) From: Hans de Goede To: Adrian Hunter , Ulf Hansson , Andy Shevchenko , Mika Westerberg Cc: Hans de Goede , linux-mmc@vger.kernel.org Subject: [PATCH v2 4/6] mmc: sdhci-acpi: Disable UHS/1.8V modes on Lenovo Yoga Tablet 2 series sdcard slot Date: Mon, 8 Apr 2024 21:52:42 +0200 Message-ID: <20240408195244.248280-5-hdegoede@redhat.com> In-Reply-To: <20240408195244.248280-1-hdegoede@redhat.com> References: <20240408195244.248280-1-hdegoede@redhat.com> Precedence: bulk X-Mailing-List: linux-mmc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.7 Unlike all other Bay Trail devices I have (quite a few) the BIOS on the Lenovo Yoga Tablet 2 830 / 1050 and Lenovo Yoga Tablet 2 Pro 1380 (8", 10" and 13") models sets the SDHCI_SUPPORT_DDR50 bit in the sdcard slots' SDHCI controller's Caps_1 register which causes Linux to try and use UHS SDR12 / SDR25 and DDR50 modes on UHS cards. These tablets do have 1.8V signalling implemented in the hw level through the Bay Trail SoC's SD3_1P8EN pin. But trying to use UHS modes leads to lots of errors like these: [ 225.272001] mmc2: Unexpected interrupt 0x04000000. [ 225.272024] mmc2: sdhci: ============ SDHCI REGISTER DUMP =========== [ 225.272034] mmc2: sdhci: Sys addr: 0x0712c400 | Version: 0x0000b502 [ 225.272044] mmc2: sdhci: Blk size: 0x00007200 | Blk cnt: 0x00000007 [ 225.272054] mmc2: sdhci: Argument: 0x00000000 | Trn mode: 0x00000023 [ 225.272064] mmc2: sdhci: Present: 0x01e20002 | Host ctl: 0x00000016 [ 225.272073] mmc2: sdhci: Power: 0x0000000f | Blk gap: 0x00000000 [ 225.272082] mmc2: sdhci: Wake-up: 0x00000000 | Clock: 0x00000107 [ 225.272092] mmc2: sdhci: Timeout: 0x0000000e | Int stat: 0x00000001 [ 225.272101] mmc2: sdhci: Int enab: 0x03ff000b | Sig enab: 0x03ff000b [ 225.272110] mmc2: sdhci: ACmd stat: 0x00000000 | Slot int: 0x00000001 [ 225.272119] mmc2: sdhci: Caps: 0x076864b2 | Caps_1: 0x00000004 [ 225.272129] mmc2: sdhci: Cmd: 0x00000c1b | Max curr: 0x00000000 [ 225.272138] mmc2: sdhci: Resp[0]: 0x00000c00 | Resp[1]: 0x00000000 [ 225.272147] mmc2: sdhci: Resp[2]: 0x00000000 | Resp[3]: 0x00000900 [ 225.272155] mmc2: sdhci: Host ctl2: 0x0000000c [ 225.272164] mmc2: sdhci: ADMA Err: 0x00000003 | ADMA Ptr: 0x0712c200 [ 225.272172] mmc2: sdhci: ============================================ Since SDHCI_QUIRK2_PRESET_VALUE_BROKEN is set in the quirks2 field of the sdhci_acpi_slot_int_emmc struct, I tried setting that in the quirks2 field of the sdhci_acpi_slot_int_sd struct too and that does makes things mostly work. But the above error still sometimes happen and regularly access to the card simply freezes for seconds, which are problems which do not happen with the non UHS SDR50 mode. Add a new DMI_QUIRK_SD_NO_1_8_V DMI quirk flag and set that for these tablets to disable sdcard slot UHS modes by setting SDHCI_QUIRK2_NO_1_8_V for the sdcard slot when this quirk is set. Reviewed-by: Andy Shevchenko Signed-off-by: Hans de Goede --- Note a possible alternative approach would be to simply always set SDHCI_QUIRK2_NO_1_8_V for the sdcard slot on all Bay Trail models but that seems like a bit of a big hammer for a problem only seen on these specific models and maybe there are Bay Trail models out there with working UHS modes for their sdcard slot. --- Changes in v2: - Clarify commit message --- drivers/mmc/host/sdhci-acpi.c | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/drivers/mmc/host/sdhci-acpi.c b/drivers/mmc/host/sdhci-acpi.c index c0d77f589deb..233af36d55a9 100644 --- a/drivers/mmc/host/sdhci-acpi.c +++ b/drivers/mmc/host/sdhci-acpi.c @@ -80,7 +80,8 @@ struct sdhci_acpi_host { enum { DMI_QUIRK_RESET_SD_SIGNAL_VOLT_ON_SUSP = BIT(0), DMI_QUIRK_SD_NO_WRITE_PROTECT = BIT(1), - DMI_QUIRK_SD_CD_ACTIVE_HIGH = BIT(2), + DMI_QUIRK_SD_NO_1_8_V = BIT(2), + DMI_QUIRK_SD_CD_ACTIVE_HIGH = BIT(3), }; static inline void *sdhci_acpi_priv(struct sdhci_acpi_host *c) @@ -751,12 +752,15 @@ static const struct dmi_system_id sdhci_acpi_quirks[] = { { /* * Lenovo Yoga Tablet 2 Pro 1380F/L (13" Android version) this - * has broken WP reporting and an inverted CD signal. + * has broken WP reporting, an inverted CD signal and claims + * to support UHS modes but they do not work. * Note this has more or less the same BIOS as the Lenovo Yoga * Tablet 2 830F/L or 1050F/L (8" and 10" Android), but unlike * the 830 / 1050 models which share the same mainboard this * model has a different mainboard and the inverted CD and * broken WP are unique to this board. + * This match for the 13" model MUST come before the 8" + 10" + * match since that one will also match the 13" model! */ .matches = { DMI_MATCH(DMI_SYS_VENDOR, "Intel Corp."), @@ -766,7 +770,23 @@ static const struct dmi_system_id sdhci_acpi_quirks[] = { DMI_MATCH(DMI_BIOS_VERSION, "BLADE_21.X64.0005.R00.1504101516"), }, .driver_data = (void *)(DMI_QUIRK_SD_NO_WRITE_PROTECT | - DMI_QUIRK_SD_CD_ACTIVE_HIGH), + DMI_QUIRK_SD_CD_ACTIVE_HIGH | + DMI_QUIRK_SD_NO_1_8_V), + }, + { + /* + * Lenovo Yoga Tablet 2 830F/L or 1050F/L (The 8" and 10" + * Lenovo Yoga Tablet 2 use the same mainboard) These claim + * to support UHS modes but they do not work. + */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Intel Corp."), + DMI_MATCH(DMI_PRODUCT_NAME, "VALLEYVIEW C0 PLATFORM"), + DMI_MATCH(DMI_BOARD_NAME, "BYT-T FFD8"), + /* Partial match on beginning of BIOS version */ + DMI_MATCH(DMI_BIOS_VERSION, "BLADE_21"), + }, + .driver_data = (void *)DMI_QUIRK_SD_NO_1_8_V, }, { /* @@ -904,6 +924,9 @@ static int sdhci_acpi_probe(struct platform_device *pdev) if (quirks & DMI_QUIRK_SD_NO_WRITE_PROTECT) host->mmc->caps2 |= MMC_CAP2_NO_WRITE_PROTECT; + + if (quirks & DMI_QUIRK_SD_NO_1_8_V) + host->quirks2 |= SDHCI_QUIRK2_NO_1_8_V; } err = sdhci_setup_host(host); From patchwork Mon Apr 8 19:52:43 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hans de Goede X-Patchwork-Id: 787092 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 51425146592 for ; Mon, 8 Apr 2024 19:53:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712605983; cv=none; b=Tc8CaE7KstaXfWZkDr6CcanfD8B+3oMr3VJRBPTehIaZsQoxv5Hmb/bXESEIZjIJ8nB4gCCrMKRJsZtT5qy/PLIjJ5d8Upf/atwXDW3vhnu7GuW/zU5/bYaVziLKo21An4A1NMY7wLeUJfIhdYRosAdTdDz8CyvZHtMcJ6HqefI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712605983; c=relaxed/simple; bh=OacNPQzbXIa/mn9dQGxo+36265tL/N+nmoM03VRBvs4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=huFJFkwcD46tJsRo0nFxjIem07hSH0Q7He+p1LQmxO7KcYSrs2wDnAi8pu4bW/B9xQyQDWIWsVBNtt2svDsMUThCu2puG3rvKkJYOnzxUrvSF3QZETYV62YMxrFJhhNHCCmYsHC+jHwUB6awkcp//WjQREWF3EPIB2FIh3l1EZU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=Bd9sbUSF; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="Bd9sbUSF" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1712605981; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=n+wvgzyYeENvi/VB7umYj+Lj+cu42xiFl7Q21VPLb9s=; b=Bd9sbUSF9jh2KvPzubL3HAoIxf9rrPULawPg92XIz6DJvPOYwYOpftmWrDerbKHruEW7DG ak8++B441jKe6ytfLHsIjqnjZSXiazueka6kR5gi2+tYTSLS1C1+TmVa5pvUrBtwbcGYNF wzIcktVIYpxjSyab94k05uiknA5eW/s= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-319-ykfFIG2vPVyAfQjtjY6seA-1; Mon, 08 Apr 2024 15:52:55 -0400 X-MC-Unique: ykfFIG2vPVyAfQjtjY6seA-1 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 6721E80D67F; Mon, 8 Apr 2024 19:52:55 +0000 (UTC) Received: from shalem.redhat.com (unknown [10.39.192.47]) by smtp.corp.redhat.com (Postfix) with ESMTP id 3E1321C06666; Mon, 8 Apr 2024 19:52:54 +0000 (UTC) From: Hans de Goede To: Adrian Hunter , Ulf Hansson , Andy Shevchenko , Mika Westerberg Cc: Hans de Goede , linux-mmc@vger.kernel.org Subject: [PATCH v2 5/6] mmc: sdhci-acpi: Disable write protect detection on Toshiba WT10-A Date: Mon, 8 Apr 2024 21:52:43 +0200 Message-ID: <20240408195244.248280-6-hdegoede@redhat.com> In-Reply-To: <20240408195244.248280-1-hdegoede@redhat.com> References: <20240408195244.248280-1-hdegoede@redhat.com> Precedence: bulk X-Mailing-List: linux-mmc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.7 On the Toshiba WT10-A the microSD slot always reports the card being write-protected, just like on the Toshiba WT8-B. Add a DMI quirk to work around this. Reviewed-by: Andy Shevchenko Signed-off-by: Hans de Goede --- drivers/mmc/host/sdhci-acpi.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/mmc/host/sdhci-acpi.c b/drivers/mmc/host/sdhci-acpi.c index 233af36d55a9..ff45114bf886 100644 --- a/drivers/mmc/host/sdhci-acpi.c +++ b/drivers/mmc/host/sdhci-acpi.c @@ -799,6 +799,17 @@ static const struct dmi_system_id sdhci_acpi_quirks[] = { }, .driver_data = (void *)DMI_QUIRK_SD_NO_WRITE_PROTECT, }, + { + /* + * The Toshiba WT10-A's microSD slot always reports the card being + * write-protected. + */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), + DMI_MATCH(DMI_PRODUCT_NAME, "TOSHIBA WT10-A"), + }, + .driver_data = (void *)DMI_QUIRK_SD_NO_WRITE_PROTECT, + }, {} /* Terminating entry */ }; From patchwork Mon Apr 8 19:52:44 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Hans de Goede X-Patchwork-Id: 787808 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C5A3B14601D for ; Mon, 8 Apr 2024 19:52:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712605981; cv=none; b=EEkPTSCHp/Sjukk/GZ0OWi212315GCsuDH418Q1VvrrNeYiBws/NYKth3gONbG/zIABR+gFsYES76BGeoRoDzW2jUvR37bOO+m9vb6GF6ZwH/k7he2UyAOIMwkIoDvq7JpNfj1NDKG9ezyFJtJL/YjckyFMUHKtBE9teSiHsp+Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712605981; c=relaxed/simple; bh=OiHD6xweYEobi6/iWfkWkxulkdi7AvkEiM4Y+0Pswls=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Z1FYP6HpBTJ1dyKkRNFuyHcmMm8wTo1k2ZGN79ZCXyk60RjaHyYZP3RHaMl2vmWKGWBm1QUkH8jZ+sPh9gkCSrmlTYHq9kFhkYbCl8BXWkicb3EcKAnqN7rlZfqkjWI2pJLViw9Lfze1oTY4iU+9kRQVXfdJdD2gXLfAUpXj1rA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=jFjV3Qw/; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="jFjV3Qw/" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1712605978; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=aLd8G/slPT0OCEh+iNBOZd/UwQFLxMGV8Rc3rYDBFpo=; b=jFjV3Qw/Kkfdzj8hcTBudhbVWBw/zdK8Jm2RQ0HVmG1EgqWBvN0fOxHFtDO/K5YYZkRQ0f 01uTkjVh4mMBj/aUiedsEZI/msfky4RGYNit8WmpyDyQQPG9yPTcy1MEheyNXxZO0A44JJ HpR2aRXGNjeIiFTXKAT4KxyVuEH7Sg0= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-531-2ej4vuNZPNG5r3vFJdq5EQ-1; Mon, 08 Apr 2024 15:52:57 -0400 X-MC-Unique: 2ej4vuNZPNG5r3vFJdq5EQ-1 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 92E3D1802A06; Mon, 8 Apr 2024 19:52:56 +0000 (UTC) Received: from shalem.redhat.com (unknown [10.39.192.47]) by smtp.corp.redhat.com (Postfix) with ESMTP id 9A2EE1C06667; Mon, 8 Apr 2024 19:52:55 +0000 (UTC) From: Hans de Goede To: Adrian Hunter , Ulf Hansson , Andy Shevchenko , Mika Westerberg Cc: Hans de Goede , linux-mmc@vger.kernel.org, =?utf-8?q?Nuno_S=C3=A1?= Subject: [PATCH v2 6/6] mmc: sdhci-acpi: Add quirk to enable pull-up on the card-detect GPIO on Asus T100TA Date: Mon, 8 Apr 2024 21:52:44 +0200 Message-ID: <20240408195244.248280-7-hdegoede@redhat.com> In-Reply-To: <20240408195244.248280-1-hdegoede@redhat.com> References: <20240408195244.248280-1-hdegoede@redhat.com> Precedence: bulk X-Mailing-List: linux-mmc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.7 The card-detect GPIO for the microSD slot on Asus T100TA / T100TAM models stopped working under Linux after commit 6fd03f024828 ("gpiolib: acpi: support bias pull disable"). The GPIO in question is connected to a mechanical switch in the slot which shorts the pin to GND when a card is inserted. The GPIO pin correctly gets configured with a 20K pull-up by the BIOS, but there is a bug in the DSDT where the GpioInt for the card-detect is configured with a PullNone setting: GpioInt (Edge, ActiveBoth, SharedAndWake, PullNone, 0x2710, "\\_SB.GPO0", 0x00, ResourceConsumer, , ) { // Pin list 0x0026 } Linux now actually honors the PullNone setting and disables the 20K pull-up configured by the BIOS. Add a new DMI_QUIRK_SD_CD_ENABLE_PULL_UP quirk which when set calls mmc_gpiod_set_cd_config() to re-enable the pull-up and set this for the Asus T100TA models to fix this. Fixes: 6fd03f024828 ("gpiolib: acpi: support bias pull disable") Reviewed-by: Andy Shevchenko Signed-off-by: Hans de Goede --- Cc: Nuno Sá --- Changes v2: - Add {} to else if (quirks & DMI_QUIRK_SD_CD_ENABLE_PULL_UP) branch --- drivers/mmc/host/sdhci-acpi.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/drivers/mmc/host/sdhci-acpi.c b/drivers/mmc/host/sdhci-acpi.c index ff45114bf886..b33ff7715587 100644 --- a/drivers/mmc/host/sdhci-acpi.c +++ b/drivers/mmc/host/sdhci-acpi.c @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -82,6 +83,7 @@ enum { DMI_QUIRK_SD_NO_WRITE_PROTECT = BIT(1), DMI_QUIRK_SD_NO_1_8_V = BIT(2), DMI_QUIRK_SD_CD_ACTIVE_HIGH = BIT(3), + DMI_QUIRK_SD_CD_ENABLE_PULL_UP = BIT(4), }; static inline void *sdhci_acpi_priv(struct sdhci_acpi_host *c) @@ -735,6 +737,14 @@ static const struct dmi_system_id sdhci_acpi_quirks[] = { }, .driver_data = (void *)DMI_QUIRK_SD_NO_WRITE_PROTECT, }, + { + /* Asus T100TA, needs pull-up for cd but DSDT GpioInt has NoPull set */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), + DMI_MATCH(DMI_PRODUCT_NAME, "T100TA"), + }, + .driver_data = (void *)DMI_QUIRK_SD_CD_ENABLE_PULL_UP, + }, { /* * The Lenovo Miix 320-10ICR has a bug in the _PS0 method of @@ -928,6 +938,9 @@ static int sdhci_acpi_probe(struct platform_device *pdev) goto err_free; dev_warn(dev, "failed to setup card detect gpio\n"); c->use_runtime_pm = false; + } else if (quirks & DMI_QUIRK_SD_CD_ENABLE_PULL_UP) { + mmc_gpiod_set_cd_config(host->mmc, + PIN_CONF_PACKED(PIN_CONFIG_BIAS_PULL_UP, 20000)); } if (quirks & DMI_QUIRK_RESET_SD_SIGNAL_VOLT_ON_SUSP)