Linux MIPS Architecture development
 help / color / mirror / Atom feed
From: Rodolfo Giometti <giometti@linux.it>
To: linux-mips@linux-mips.org
Subject: [PATCH] 7/7 AU1100 MMC support
Date: Wed, 9 Aug 2006 23:12:43 +0200	[thread overview]
Message-ID: <20060809211243.GH13145@enneenne.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 371 bytes --]

Power Management support for AU1100 (PIO mode) added.

Signed-off-by: Rodolfo Giometti <giometti@linux.it>

-- 

GNU/Linux Solutions                  e-mail:    giometti@enneenne.com
Linux Device Driver                             giometti@gnudd.com
Embedded Systems                     		giometti@linux.it
UNIX programming                     phone:     +39 349 2432127

[-- Attachment #2: patch-mmc-pm-au1100 --]
[-- Type: text/plain, Size: 2962 bytes --]

diff --git a/drivers/mmc/au1xmmc.c b/drivers/mmc/au1xmmc.c
index 61acf6b..920486d 100644
--- a/drivers/mmc/au1xmmc.c
+++ b/drivers/mmc/au1xmmc.c
@@ -19,6 +19,10 @@
  *     Rodolfo Giometti <giometti@linux.it>
  *     Eurotech S.p.A. <info@eurotech.it>
 
+ *  Power Management Support for AU1100 in PIO mode by:
+ *     Rodolfo Giometti <giometti@linux.it>
+ *     Eurotech S.p.A. <info@eurotech.it>
+
  * 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.
@@ -1086,11 +1090,79 @@ #endif
 	return 0;
 }
 
+#ifdef CONFIG_PM
+static u32 sd_txport[2];
+static u32 sd_rxport[2];
+static u32 sd_config[2];
+static u32 sd_config2[2];
+static u32 sd_blksize[2];
+static u32 sd_status[2];
+static u32 sd_cmd[2];
+static u32 sd_cmdarg[2];
+static u32 sd_timeout[2];
+
+static int au1xmmc_suspend(struct platform_device *pdev, pm_message_t state)
+{
+	struct au1xmmc_host *host = platform_get_drvdata(pdev);
+	struct mmc_host *mmc = host->mmc;
+	int ret = 0;
+
+printk("GU au1xmmc_suspend %d\n", host->id);
+	if (mmc)
+		ret = mmc_suspend_host(mmc, state);
+
+	sd_txport[host->id]  = au_readl(HOST_TXPORT(host));
+	sd_rxport[host->id]  = au_readl(HOST_RXPORT(host));
+	sd_config[host->id]  = au_readl(HOST_CONFIG(host));
+	sd_config2[host->id] = au_readl(HOST_CONFIG2(host));
+	sd_blksize[host->id] = au_readl(HOST_BLKSIZE(host));
+	sd_status[host->id]  = au_readl(HOST_STATUS(host));
+	sd_cmd[host->id]     = au_readl(HOST_CMD(host));
+	sd_cmdarg[host->id]  = au_readl(HOST_CMDARG(host));
+	sd_timeout[host->id] = au_readl(HOST_TIMEOUT(host));
+
+	au_writel(0x0, HOST_ENABLE(host));
+
+printk("GU au1xmmc_suspend END\n");
+	return ret;
+}
+
+static int au1xmmc_resume(struct platform_device *pdev)
+{
+	struct au1xmmc_host *host = platform_get_drvdata(pdev);
+	struct mmc_host *mmc = host->mmc;
+	int ret = 0;
+
+	au1xmmc_reset_controller(host);
+
+	au_writel(sd_txport[host->id],  HOST_TXPORT(host));
+	au_writel(sd_rxport[host->id],  HOST_RXPORT(host));
+	au_writel(sd_config[host->id],  HOST_CONFIG(host));
+	au_writel(sd_config2[host->id], HOST_CONFIG2(host));
+	au_writel(sd_blksize[host->id], HOST_BLKSIZE(host));
+	au_writel(sd_status[host->id],  HOST_STATUS(host));
+	au_writel(sd_cmd[host->id],     HOST_CMD(host));
+	au_writel(sd_cmdarg[host->id],  HOST_CMDARG(host));
+	au_writel(sd_timeout[host->id], HOST_TIMEOUT(host));
+
+printk("GU au1xmmc_resume\n");
+	if (mmc)
+		ret = mmc_resume_host(mmc);
+
+printk("GU au1xmmc_resume END\n");
+	return ret;
+}
+
+#else
+#define au1xmmc_suspend  NULL
+#define au1xmmc_resume   NULL
+#endif
+
 static struct platform_driver au1xmmc_driver = {
 	.probe         = au1xmmc_probe,
 	.remove        = au1xmmc_remove,
-	.suspend       = NULL,
-	.resume        = NULL,
+	.suspend       = au1xmmc_suspend,
+	.resume        = au1xmmc_resume,
 	.driver        = {
 		.name  = DRIVER_NAME,
 	},

             reply	other threads:[~2006-08-09 21:11 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-08-09 21:12 Rodolfo Giometti [this message]
2006-08-10  8:40 ` [PATCH] 7/7 AU1100 MMC support Rodolfo Giometti

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=20060809211243.GH13145@enneenne.com \
    --to=giometti@linux.it \
    --cc=linux-mips@linux-mips.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