-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ARM: S3C2416: Add platform helpers for setup SDHCI
Samsung S3C2416 has two SDHCI controllers compatible with other Samsung's SoCs (S3C64XX, S5PC100 etc...). Add required platform setup code that the devices can be used with sdhci-s3c driver. Signed-off-by: Yauhen Kharuzhy <yauhen.kharuzhy@promwad.com> [kgene.kim@samsung.com: change to __raw_{readl,writel} from {readl,writel}] [kgene.kim@samsung.com: build error fixes] Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
- Loading branch information
Yauhen Kharuzhy
authored and
Kukjin Kim
committed
Jan 6, 2011
1 parent
95d6791
commit c29cfa6
Showing
6 changed files
with
151 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
/* linux/arch/arm/plat-s3c2416/setup-sdhci-gpio.c | ||
* | ||
* Copyright 2010 Promwad Innovation Company | ||
* Yauhen Kharuzhy <yauhen.kharuzhy@promwad.com> | ||
* | ||
* S3C2416 - Helper functions for setting up SDHCI device(s) GPIO (HSMMC) | ||
* | ||
* Based on mach-s3c64xx/setup-sdhci-gpio.c | ||
* | ||
* 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. | ||
*/ | ||
|
||
#include <linux/kernel.h> | ||
#include <linux/types.h> | ||
#include <linux/interrupt.h> | ||
#include <linux/platform_device.h> | ||
#include <linux/io.h> | ||
#include <linux/gpio.h> | ||
|
||
#include <mach/regs-gpio.h> | ||
#include <plat/gpio-cfg.h> | ||
|
||
void s3c2416_setup_sdhci0_cfg_gpio(struct platform_device *dev, int width) | ||
{ | ||
s3c_gpio_cfgrange_nopull(S3C2410_GPE(5), 2 + width, S3C_GPIO_SFN(2)); | ||
} | ||
|
||
void s3c2416_setup_sdhci1_cfg_gpio(struct platform_device *dev, int width) | ||
{ | ||
s3c_gpio_cfgrange_nopull(S3C2410_GPL(0), width, S3C_GPIO_SFN(2)); | ||
s3c_gpio_cfgrange_nopull(S3C2410_GPL(8), 2, S3C_GPIO_SFN(2)); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
/* linux/arch/arm/mach-s3c2416/setup-sdhci.c | ||
* | ||
* Copyright 2010 Promwad Innovation Company | ||
* Yauhen Kharuzhy <yauhen.kharuzhy@promwad.com> | ||
* | ||
* S3C2416 - Helper functions for settign up SDHCI device(s) (HSMMC) | ||
* | ||
* Based on mach-s3c64xx/setup-sdhci.c | ||
* | ||
* 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. | ||
*/ | ||
|
||
#include <linux/kernel.h> | ||
#include <linux/types.h> | ||
#include <linux/interrupt.h> | ||
#include <linux/platform_device.h> | ||
#include <linux/io.h> | ||
|
||
#include <linux/mmc/card.h> | ||
#include <linux/mmc/host.h> | ||
|
||
#include <plat/regs-sdhci.h> | ||
#include <plat/sdhci.h> | ||
|
||
/* clock sources for the mmc bus clock, order as for the ctrl2[5..4] */ | ||
|
||
char *s3c2416_hsmmc_clksrcs[4] = { | ||
[0] = "hsmmc", | ||
[1] = "hsmmc", | ||
[2] = "hsmmc-if", | ||
/* [3] = "48m", - note not successfully used yet */ | ||
}; | ||
|
||
void s3c2416_setup_sdhci_cfg_card(struct platform_device *dev, | ||
void __iomem *r, | ||
struct mmc_ios *ios, | ||
struct mmc_card *card) | ||
{ | ||
u32 ctrl2, ctrl3; | ||
|
||
ctrl2 = __raw_readl(r + S3C_SDHCI_CONTROL2); | ||
ctrl2 &= S3C_SDHCI_CTRL2_SELBASECLK_MASK; | ||
ctrl2 |= (S3C64XX_SDHCI_CTRL2_ENSTAASYNCCLR | | ||
S3C64XX_SDHCI_CTRL2_ENCMDCNFMSK | | ||
S3C_SDHCI_CTRL2_ENFBCLKRX | | ||
S3C_SDHCI_CTRL2_DFCNT_NONE | | ||
S3C_SDHCI_CTRL2_ENCLKOUTHOLD); | ||
|
||
if (ios->clock < 25 * 1000000) | ||
ctrl3 = (S3C_SDHCI_CTRL3_FCSEL3 | | ||
S3C_SDHCI_CTRL3_FCSEL2 | | ||
S3C_SDHCI_CTRL3_FCSEL1 | | ||
S3C_SDHCI_CTRL3_FCSEL0); | ||
else | ||
ctrl3 = (S3C_SDHCI_CTRL3_FCSEL1 | S3C_SDHCI_CTRL3_FCSEL0); | ||
|
||
__raw_writel(ctrl2, r + S3C_SDHCI_CONTROL2); | ||
__raw_writel(ctrl3, r + S3C_SDHCI_CONTROL3); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters