83b588c2ae
commit 63a7cd660246aa36af263b85c33ecc6601bf04be upstream. 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 <andy@kernel.org> Signed-off-by: Hans de Goede <hdegoede@redhat.com> Acked-by: Adrian Hunter <adrian.hunter@intel.com> Cc: stable@vger.kernel.org Link: https://lore.kernel.org/r/20240410191639.526324-2-hdegoede@redhat.com Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
31 lines
1,016 B
C
Executable file
31 lines
1,016 B
C
Executable file
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* Generic GPIO card-detect helper header
|
|
*
|
|
* Copyright (C) 2011, Guennadi Liakhovetski <g.liakhovetski@gmx.de>
|
|
*/
|
|
|
|
#ifndef MMC_SLOT_GPIO_H
|
|
#define MMC_SLOT_GPIO_H
|
|
|
|
#include <linux/types.h>
|
|
#include <linux/irqreturn.h>
|
|
|
|
struct mmc_host;
|
|
|
|
int mmc_gpio_get_ro(struct mmc_host *host);
|
|
int mmc_gpio_get_cd(struct mmc_host *host);
|
|
int mmc_gpiod_request_cd(struct mmc_host *host, const char *con_id,
|
|
unsigned int idx, bool override_active_level,
|
|
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);
|
|
void mmc_gpiod_request_cd_irq(struct mmc_host *host);
|
|
bool mmc_can_gpio_cd(struct mmc_host *host);
|
|
bool mmc_can_gpio_ro(struct mmc_host *host);
|
|
|
|
#endif
|