mail archive of the barebox mailing list
 help / color / mirror / Atom feed
From: Sascha Hauer <s.hauer@pengutronix.de>
To: barebox@lists.infradead.org
Subject: [PATCH 07/15] mci s3c: allocate host struct dynamically
Date: Thu,  9 Feb 2012 12:53:50 +0100	[thread overview]
Message-ID: <1328788438-19717-8-git-send-email-s.hauer@pengutronix.de> (raw)
In-Reply-To: <1328788438-19717-1-git-send-email-s.hauer@pengutronix.de>

Yes, it does make sense. First there will always be the next
hardware which has multiple controllers. Also, we shouldn't
give bad examples to others.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
---
 drivers/mci/s3c.c |   43 +++++++++++++++++--------------------------
 1 files changed, 17 insertions(+), 26 deletions(-)

diff --git a/drivers/mci/s3c.c b/drivers/mci/s3c.c
index a153b1c..44c682e 100644
--- a/drivers/mci/s3c.c
+++ b/drivers/mci/s3c.c
@@ -153,18 +153,13 @@
 #define SDIDATA 0x40
 
 struct s3c_mci_host {
+	struct mci_host	host;
 	void __iomem	*base;
 	int		bus_width:2; /* 0 = 1 bit, 1 = 4 bit, 2 = 8 bit */
 	unsigned	clock;	/* current clock in Hz */
 	unsigned	data_size;	/* data transfer in bytes */
 };
 
-/*
- * There is only one host MCI hardware instance available.
- * It makes no sense to dynamically allocate this data
- */
-static struct s3c_mci_host host_data;
-
 /**
  * Finish a request
  * @param hw_dev Host interface instance
@@ -743,20 +738,16 @@ static void s3c_info(struct device_d *hw_dev)
 }
 #endif
 
-/*
- * There is only one host MCI hardware instance available.
- * It makes no sense to dynamically allocate this data
- */
-static struct mci_host mci_pdata = {
-	.send_cmd = mci_request,
-	.set_ios = mci_set_ios,
-	.init = mci_reset,
-};
-
 static int s3c_mci_probe(struct device_d *hw_dev)
 {
+	struct s3c_mci_host *s3c_host;
 	struct s3c_mci_platform_data *pd = hw_dev->platform_data;
 
+	s3c_host = xzalloc(sizeof(*s3c_host));
+	s3c_host->host.send_cmd = mci_request;
+	s3c_host->host.set_ios = mci_set_ios;
+	s3c_host->host.init = mci_reset;
+
 	/* TODO replace by the global func: enable the SDI unit clock */
 	writel(readl(S3C_CLOCK_POWER_BASE + 0x0c) | 0x200,
 		S3C_CLOCK_POWER_BASE + 0x0c);
@@ -766,23 +757,23 @@ static int s3c_mci_probe(struct device_d *hw_dev)
 		return -EINVAL;
 	}
 
-	hw_dev->priv = &host_data;
-	host_data.base = dev_request_mem_region(hw_dev, 0);
-	mci_pdata.hw_dev = hw_dev;
+	hw_dev->priv = s3c_host;
+	s3c_host->base = dev_request_mem_region(hw_dev, 0);
+	s3c_host->host.hw_dev = hw_dev;
 
 	/* feed forward the platform specific values */
-	mci_pdata.voltages = pd->voltages;
-	mci_pdata.host_caps = pd->caps;
-	mci_pdata.f_min = pd->f_min == 0 ? s3c_get_pclk() / 256 : pd->f_min;
-	mci_pdata.f_max = pd->f_max == 0 ? s3c_get_pclk() / 2 : pd->f_max;
+	s3c_host->host.voltages = pd->voltages;
+	s3c_host->host.host_caps = pd->caps;
+	s3c_host->host.f_min = pd->f_min == 0 ? s3c_get_pclk() / 256 : pd->f_min;
+	s3c_host->host.f_max = pd->f_max == 0 ? s3c_get_pclk() / 2 : pd->f_max;
 
 	/*
 	 * Start the clock to let the engine and the card finishes its startup
 	 */
-	host_data.clock = s3c_setup_clock_speed(hw_dev, mci_pdata.f_min);
-	writel(SDICON_FIFORESET | SDICON_MMCCLOCK, host_data.base + SDICON);
+	s3c_host->clock = s3c_setup_clock_speed(hw_dev, pd->f_min);
+	writel(SDICON_FIFORESET | SDICON_MMCCLOCK, s3c_host->base + SDICON);
 
-	return mci_register(&mci_pdata);
+	return mci_register(&s3c_host->host);
 }
 
 static struct driver_d s3c_mci_driver = {
-- 
1.7.9


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

  parent reply	other threads:[~2012-02-09 11:54 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-02-09 11:53 [PATCH] mmc/sd patches Sascha Hauer
2012-02-09 11:53 ` [PATCH 01/15] mci: Add complete definitions for the card type Sascha Hauer
2012-02-09 11:53 ` [PATCH 02/15] mci: use card type definitions Sascha Hauer
2012-02-09 11:53 ` [PATCH 03/15] mci: fix high capacity detection Sascha Hauer
2012-02-09 11:53 ` [PATCH 04/15] mci mxs: do not use external define for internal use Sascha Hauer
2012-02-09 11:53 ` [PATCH 05/15] mci core: replace discrete ios values with struct ios Sascha Hauer
2012-02-09 11:53 ` [PATCH 06/15] mci s3c: Do not mess with struct mci_host Sascha Hauer
2012-02-09 11:53 ` Sascha Hauer [this message]
2012-02-09 11:53 ` [PATCH 08/15] mci s3c: pass around the right pointer Sascha Hauer
2012-02-09 11:53 ` [PATCH 09/15] mci: remove unused device argument from set_ios Sascha Hauer
2012-02-09 11:53 ` [PATCH 10/15] mci core: fix mixup of max write/read block len Sascha Hauer
2012-02-09 11:53 ` [PATCH 11/15] mci: Use struct mci for internal argument passing Sascha Hauer
2012-02-09 11:53 ` [PATCH 12/15] mci: replace pr_debug with dev_dbg Sascha Hauer
2012-02-09 11:53 ` [PATCH 13/15] mci: factor out mci/sd specific startup functions Sascha Hauer
2012-02-09 11:53 ` [PATCH 14/15] mci: cdev_find_free_index won't fail, no need to check Sascha Hauer
2012-02-09 11:53 ` [PATCH 15/15] mci: Be more verbose on what device is associated to which disk Sascha Hauer
2012-02-09 13:32   ` Sascha Hauer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1328788438-19717-8-git-send-email-s.hauer@pengutronix.de \
    --to=s.hauer@pengutronix.de \
    --cc=barebox@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox