Files
android_kernel_fxtec_sm6115/include/linux/mmc/slot-gpio.h
Subhash Jadavani 79c36b07f5 mmc: add hot plug support using extcon framework
We need to add the support for gpio based card insertion/removal event
detection support. But this is bit complicated as current platforms have
the combo card slot which can either take SD or UFS card at one time and
there is a single GPIO assigned for card detect event. This means we need
some module which takes the responsibility of controlling (configuration,
interrupt handling) this shared card detection GPIO and pass card detection
event to both MMC and UFS card drivers so they can probe to see what card
is inserted. Kernel already have the extcon-gpio module which can be used
a gpio control module and can pass the card detection event to both MMC &
UFS card drivers. So MMC driver registers the notification callback with
extcon driver and tries to detect/remove the SD card.

Change-Id: I860827272bfaa24116d9550a331657b99f53ec50
Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
Signed-off-by: Ram Prakash Gupta <rampraka@codeaurora.org>
2019-05-23 13:00:44 +05:30

42 lines
1.4 KiB
C

/*
* Generic GPIO card-detect helper header
*
* Copyright (C) 2011, Guennadi Liakhovetski <g.liakhovetski@gmx.de>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#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_request_ro(struct mmc_host *host, unsigned int gpio);
int mmc_gpio_get_cd(struct mmc_host *host);
int mmc_gpio_request_cd(struct mmc_host *host, unsigned int gpio,
unsigned int debounce);
int mmc_gpiod_request_cd(struct mmc_host *host, const char *con_id,
unsigned int idx, bool override_active_level,
unsigned int debounce, bool *gpio_invert);
int mmc_gpiod_request_ro(struct mmc_host *host, const char *con_id,
unsigned int idx, bool override_active_level,
unsigned int debounce, bool *gpio_invert);
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);
void mmc_register_extcon(struct mmc_host *host);
void mmc_unregister_extcon(struct mmc_host *host);
#endif