Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d005d943 authored by Lars-Peter Clausen's avatar Lars-Peter Clausen Committed by Chris Ball
Browse files

mmc: sdhci-pltfm: Add a common clk API implementation of get_timeout_clock



Quite a few drivers have a implementation of the get_timeout_clock
callback which simply returns the result of clk_get_rate on the device's
clock. This patch adds a common implementation of this to the sdhci-pltfm
module and replaces all custom implementations with the common one.

Signed-off-by: default avatarLars-Peter Clausen <lars@metafoo.de>
Tested-by: default avatarStephen Warren <swarren@wwwdotorg.org>
Acked-by: default avatarShawn Guo <shawn.guo@linaro.org>
Tested-by: default avatarKevin Liu <kliu5@marvell.com>
Signed-off-by: default avatarChris Ball <cjb@laptop.org>
parent 20b92a30
Loading
Loading
Loading
Loading
+5 −22
Original line number Original line Diff line number Diff line
@@ -51,7 +51,6 @@
#define BCM2835_SDHCI_WRITE_DELAY	(((2 * 1000000) / MIN_FREQ) + 1)
#define BCM2835_SDHCI_WRITE_DELAY	(((2 * 1000000) / MIN_FREQ) + 1)


struct bcm2835_sdhci {
struct bcm2835_sdhci {
	struct clk *clk;
	u32 shadow;
	u32 shadow;
};
};


@@ -120,27 +119,11 @@ static u8 bcm2835_sdhci_readb(struct sdhci_host *host, int reg)
	return byte;
	return byte;
}
}


static unsigned int bcm2835_sdhci_get_max_clock(struct sdhci_host *host)
{
	struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
	struct bcm2835_sdhci *bcm2835_host = pltfm_host->priv;

	return clk_get_rate(bcm2835_host->clk);
}

unsigned int bcm2835_sdhci_get_min_clock(struct sdhci_host *host)
unsigned int bcm2835_sdhci_get_min_clock(struct sdhci_host *host)
{
{
	return MIN_FREQ;
	return MIN_FREQ;
}
}


unsigned int bcm2835_sdhci_get_timeout_clock(struct sdhci_host *host)
{
	struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
	struct bcm2835_sdhci *bcm2835_host = pltfm_host->priv;

	return clk_get_rate(bcm2835_host->clk);
}

static struct sdhci_ops bcm2835_sdhci_ops = {
static struct sdhci_ops bcm2835_sdhci_ops = {
	.write_l = bcm2835_sdhci_writel,
	.write_l = bcm2835_sdhci_writel,
	.write_w = bcm2835_sdhci_writew,
	.write_w = bcm2835_sdhci_writew,
@@ -148,9 +131,9 @@ static struct sdhci_ops bcm2835_sdhci_ops = {
	.read_l = bcm2835_sdhci_readl,
	.read_l = bcm2835_sdhci_readl,
	.read_w = bcm2835_sdhci_readw,
	.read_w = bcm2835_sdhci_readw,
	.read_b = bcm2835_sdhci_readb,
	.read_b = bcm2835_sdhci_readb,
	.get_max_clock = bcm2835_sdhci_get_max_clock,
	.get_max_clock = sdhci_pltfm_clk_get_max_clock,
	.get_min_clock = bcm2835_sdhci_get_min_clock,
	.get_min_clock = bcm2835_sdhci_get_min_clock,
	.get_timeout_clock = bcm2835_sdhci_get_timeout_clock,
	.get_timeout_clock = sdhci_pltfm_clk_get_max_clock,
};
};


static struct sdhci_pltfm_data bcm2835_sdhci_pdata = {
static struct sdhci_pltfm_data bcm2835_sdhci_pdata = {
@@ -180,9 +163,9 @@ static int bcm2835_sdhci_probe(struct platform_device *pdev)
	pltfm_host = sdhci_priv(host);
	pltfm_host = sdhci_priv(host);
	pltfm_host->priv = bcm2835_host;
	pltfm_host->priv = bcm2835_host;


	bcm2835_host->clk = devm_clk_get(&pdev->dev, NULL);
	pltfm_host->clk = devm_clk_get(&pdev->dev, NULL);
	if (IS_ERR(bcm2835_host->clk)) {
	if (IS_ERR(pltfm_host->clk)) {
		ret = PTR_ERR(bcm2835_host->clk);
		ret = PTR_ERR(pltfm_host->clk);
		goto err;
		goto err;
	}
	}


+1 −8
Original line number Original line Diff line number Diff line
@@ -351,13 +351,6 @@ static void esdhc_writeb_le(struct sdhci_host *host, u8 val, int reg)
	}
	}
}
}


static unsigned int esdhc_pltfm_get_max_clock(struct sdhci_host *host)
{
	struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);

	return clk_get_rate(pltfm_host->clk);
}

static unsigned int esdhc_pltfm_get_min_clock(struct sdhci_host *host)
static unsigned int esdhc_pltfm_get_min_clock(struct sdhci_host *host)
{
{
	struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
	struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
@@ -413,7 +406,7 @@ static struct sdhci_ops sdhci_esdhc_ops = {
	.write_w = esdhc_writew_le,
	.write_w = esdhc_writew_le,
	.write_b = esdhc_writeb_le,
	.write_b = esdhc_writeb_le,
	.set_clock = esdhc_set_clock,
	.set_clock = esdhc_set_clock,
	.get_max_clock = esdhc_pltfm_get_max_clock,
	.get_max_clock = sdhci_pltfm_clk_get_max_clock,
	.get_min_clock = esdhc_pltfm_get_min_clock,
	.get_min_clock = esdhc_pltfm_get_min_clock,
	.get_ro = esdhc_pltfm_get_ro,
	.get_ro = esdhc_pltfm_get_ro,
	.platform_bus_width = esdhc_pltfm_bus_width,
	.platform_bus_width = esdhc_pltfm_bus_width,
+8 −0
Original line number Original line Diff line number Diff line
@@ -36,6 +36,14 @@
#endif
#endif
#include "sdhci-pltfm.h"
#include "sdhci-pltfm.h"


unsigned int sdhci_pltfm_clk_get_max_clock(struct sdhci_host *host)
{
	struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);

	return clk_get_rate(pltfm_host->clk);
}
EXPORT_SYMBOL_GPL(sdhci_pltfm_clk_get_max_clock);

static struct sdhci_ops sdhci_pltfm_ops = {
static struct sdhci_ops sdhci_pltfm_ops = {
};
};


+2 −0
Original line number Original line Diff line number Diff line
@@ -98,6 +98,8 @@ extern int sdhci_pltfm_register(struct platform_device *pdev,
				struct sdhci_pltfm_data *pdata);
				struct sdhci_pltfm_data *pdata);
extern int sdhci_pltfm_unregister(struct platform_device *pdev);
extern int sdhci_pltfm_unregister(struct platform_device *pdev);


extern unsigned int sdhci_pltfm_clk_get_max_clock(struct sdhci_host *host);

#ifdef CONFIG_PM
#ifdef CONFIG_PM
extern const struct dev_pm_ops sdhci_pltfm_pmops;
extern const struct dev_pm_ops sdhci_pltfm_pmops;
#define SDHCI_PLTFM_PMOPS (&sdhci_pltfm_pmops)
#define SDHCI_PLTFM_PMOPS (&sdhci_pltfm_pmops)
+1 −8
Original line number Original line Diff line number Diff line
@@ -111,15 +111,8 @@ static int pxav2_mmc_set_width(struct sdhci_host *host, int width)
	return 0;
	return 0;
}
}


static u32 pxav2_get_max_clock(struct sdhci_host *host)
{
	struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);

	return clk_get_rate(pltfm_host->clk);
}

static struct sdhci_ops pxav2_sdhci_ops = {
static struct sdhci_ops pxav2_sdhci_ops = {
	.get_max_clock = pxav2_get_max_clock,
	.get_max_clock = sdhci_pltfm_clk_get_max_clock,
	.platform_reset_exit = pxav2_set_private_registers,
	.platform_reset_exit = pxav2_set_private_registers,
	.platform_bus_width = pxav2_mmc_set_width,
	.platform_bus_width = pxav2_mmc_set_width,
};
};
Loading