Thread (14 messages) read the whole thread 14 messages, 4 authors, 2013-03-14

Re: [PATCH 1/5] mmc: mxcmmc: add mpc512x SDHC support

From: Anatolij Gustschin <agust@denx.de>
Date: 2013-03-14 18:13:32
Also in: linux-mmc

On Thu, 14 Mar 2013 17:50:08 +0100
Arnd Bergmann [off-list ref] wrote:
On Thursday 14 March 2013 17:40:49 Anatolij Gustschin wrote:
quoted
+
+struct mxcmci_reg_ops mxcmci_reg_ops = {
+	.read_l = mpcmci_readl,
+	.write_l = mpcmci_writel,
+	.read_w = mpcmci_readw,
+	.write_w = mpcmci_writew,
+};
+#else
+struct mxcmci_reg_ops mxcmci_reg_ops;
+#endif
Should the struct be static?
yes, it should.
quoted
+static inline u32 mxcmci_readl(struct mxcmci_host *host, int reg)
+{
+	if (host->reg_ops->read_l)
+		return host->reg_ops->read_l(host, reg);
+	else
+		return readl(host->base + reg);
+}
This seems a bit strange. I would suggest you either use the ops structure
all the time and provide an imx variant, or you make it completely
compile-time selected.
I wanted to avoid additional levels of indirection and function calls
on i.MX. If something like

static inline u32 mxcmci_readl(struct mxcmci_host *host, int reg)
{
#if IS_ENABLED(CONFIG_PPC_MPC512x)
	return in_be32(host->base + reg);
#else
	return readl(host->base + reg); 
#endif
}

is acceptable, I'll use it.
quoted
@@ -1026,24 +1115,33 @@ static int mxcmci_probe(struct platform_device *pdev)
 	host->res = r;
 	host->irq = irq;
 
-	host->clk_ipg = devm_clk_get(&pdev->dev, "ipg");
-	if (IS_ERR(host->clk_ipg)) {
-		ret = PTR_ERR(host->clk_ipg);
-		goto out_iounmap;
-	}
+	if (!is_mpc512x_mmc(host)) {
+		host->clk_ipg = devm_clk_get(&pdev->dev, "ipg");
+		if (IS_ERR(host->clk_ipg)) {
+			ret = PTR_ERR(host->clk_ipg);
+			goto out_iounmap;
+		}
Does mpc512x have no clock management? I think it should still
work without modifications if CONFIG_HAVE_CLK is disabled.
In that case, devm_clk_get() will return NULL and we don't
error out here.
It does have some clock management (a platform clock driver) and
the platform selects CONFIG_HAVE_CLK. But we do not have "ipg"
and "per" clocks on that platform, but "sdhc_clk" instead.

Thanks,

Anatolij
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help