Message ID | 20240407200453.40829-1-hdegoede@redhat.com |
---|---|
State | New |
Headers | show |
Series | [1/6] mmc: core: Add mmc_gpiod_set_cd_config() function | expand |
On Mon, Apr 8, 2024 at 6:27 PM Hans de Goede <hdegoede@redhat.com> wrote: > On 4/8/24 5:23 PM, Andy Shevchenko wrote: > > On Sun, Apr 07, 2024 at 10:04:48PM +0200, Hans de Goede wrote: > >> 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(). > > > > FWIW, > > Reviewed-by: Andy Shevchenko <andy@kernel.org> > > for just this patch or for the series ? You have no cover-letter, your choice :-) (yes, for the series, but really it's better to have a even small cover letter, `b4` can use it for good in a few ways, although dunno what MMC maintainers use) > > assuming you considered addressing nit-picks. > > Ack will do.
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..748ab7a88e78 100644 --- a/include/linux/mmc/slot-gpio.h +++ b/include/linux/mmc/slot-gpio.h @@ -19,6 +19,7 @@ void mmc_gpio_set_cd_irq(struct mmc_host *host, int irq); 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_set_cd_config(struct mmc_host *host, unsigned long config); int mmc_gpiod_request_ro(struct mmc_host *host, const char *con_id, unsigned int idx, unsigned int debounce); void mmc_gpio_set_cd_isr(struct mmc_host *host,
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(). Signed-off-by: Hans de Goede <hdegoede@redhat.com> --- drivers/mmc/core/slot-gpio.c | 20 ++++++++++++++++++++ include/linux/mmc/slot-gpio.h | 1 + 2 files changed, 21 insertions(+)