Re: [PATCH 2/2] mmc: sdhci-s3c: Added set_power handler to platdata

Jaehoon Chung
2013-05-24T03:57:46Z

Hi Felipe,

I didn't understand this patch, why need to add set_power?
We can use to control the power with the fixed regulator.
Then we can also use the regulator framework.
And i know also control the module like wifi with rfkill.
In set_power, what is it controlled?

Best Regards,
Jaehoon Chung
On 05/23/2013 02:47 AM, Felipe F. Tonello wrote:
> From: "Felipe F. Tonello" <eu@felipetonello.com>
>
> This is useful to turn off peripherals that are related to the mmc host. One
> common case is when the wifi module is connected as an mmc card to the host.
>
> Signed-off-by: Felipe F. Tonello <eu@felipetonello.com>
> ---
> drivers/mmc/host/sdhci-s3c.c | 8 ++++++++
> include/linux/platform_data/mmc-sdhci-s3c.h | 1 +
> 2 files changed, 9 insertions(+)
>
> diff --git a/drivers/mmc/host/sdhci-s3c.c b/drivers/mmc/host/sdhci-s3c.c
> index c6f6246..f7e740c 100644
> --- a/drivers/mmc/host/sdhci-s3c.c
> +++ b/drivers/mmc/host/sdhci-s3c.c
> @@ -360,11 +360,19 @@ static int sdhci_s3c_platform_bus_width(struct sdhci_host *host, int width)
> return 0;
> }
>
> +static void sdhci_s3c_set_power(struct sdhci_host *host, bool power)
> +{
> + struct sdhci_s3c *ourhost = to_s3c(host);
> + if (ourhost->pdata->set_power)
> + ourhost->pdata->set_power(power);
> +}
> +
> static struct sdhci_ops sdhci_s3c_ops = {
> .get_max_clock = sdhci_s3c_get_max_clk,
> .set_clock = sdhci_s3c_set_clock,
> .get_min_clock = sdhci_s3c_get_min_clock,
> .platform_bus_width = sdhci_s3c_platform_bus_width,
> + .set_power = sdhci_s3c_set_power,
> };
>
> static void sdhci_s3c_notify_change(struct platform_device *dev, int state)
> diff --git a/include/linux/platform_data/mmc-sdhci-s3c.h b/include/linux/platform_data/mmc-sdhci-s3c.h
> index 249f023..55be925 100644
> --- a/include/linux/platform_data/mmc-sdhci-s3c.h
> +++ b/include/linux/platform_data/mmc-sdhci-s3c.h
> @@ -50,6 +50,7 @@ struct s3c_sdhci_platdata {
> int state));
>
> void (*cfg_gpio)(struct platform_device *dev, int width);
> + void (*set_power)(bool power);
> };
>
>
>