forked from Minki/linux
b0161caa72
When refactoring and breaking out the includes for the machine-specific GPIO configuration, two files were created in <linux/platform_data/gpio-samsung-s3c[24|64]xx.h>, but as that namespace shall be used for defining data exchanged between machines and drivers, using it for these broad macros and config settings is wrong. Move the headers back into the machine-local <mach/gpio-samsung.h> file and think about the next step. Reported-by: Arnd Bergmann <arnd@arndb.de> Cc: Tomasz Figa <tomasz.figa@gmail.com> Cc: Sylwester Nawrocki <sylvester.nawrocki@gmail.com> Cc: Ben Dooks <ben-linux@fluff.org> Cc: Kukjin Kim <kgene.kim@samsung.com> Cc: linux-samsung-soc@vger.kernel.org Acked-by: Mark Brown <broonie@linaro.org> Acked-by: Arnd Bergmann <arnd@arndb.de> Acked-by: Heiko Stuebner <heiko@sntech.de> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
59 lines
1.8 KiB
C
59 lines
1.8 KiB
C
/* linux/arch/arm/plat-s3c64xx/setup-sdhci-gpio.c
|
|
*
|
|
* Copyright 2008 Simtec Electronics
|
|
* Ben Dooks <ben@simtec.co.uk>
|
|
* http://armlinux.simtec.co.uk/
|
|
*
|
|
* S3C64XX - Helper functions for setting up SDHCI device(s) GPIO (HSMMC)
|
|
*
|
|
* 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 <plat/gpio-cfg.h>
|
|
#include <plat/sdhci.h>
|
|
#include <mach/gpio-samsung.h>
|
|
|
|
void s3c64xx_setup_sdhci0_cfg_gpio(struct platform_device *dev, int width)
|
|
{
|
|
struct s3c_sdhci_platdata *pdata = dev->dev.platform_data;
|
|
|
|
/* Set all the necessary GPG pins to special-function 2 */
|
|
s3c_gpio_cfgrange_nopull(S3C64XX_GPG(0), 2 + width, S3C_GPIO_SFN(2));
|
|
|
|
if (pdata->cd_type == S3C_SDHCI_CD_INTERNAL) {
|
|
s3c_gpio_setpull(S3C64XX_GPG(6), S3C_GPIO_PULL_UP);
|
|
s3c_gpio_cfgpin(S3C64XX_GPG(6), S3C_GPIO_SFN(2));
|
|
}
|
|
}
|
|
|
|
void s3c64xx_setup_sdhci1_cfg_gpio(struct platform_device *dev, int width)
|
|
{
|
|
struct s3c_sdhci_platdata *pdata = dev->dev.platform_data;
|
|
|
|
/* Set all the necessary GPH pins to special-function 2 */
|
|
s3c_gpio_cfgrange_nopull(S3C64XX_GPH(0), 2 + width, S3C_GPIO_SFN(2));
|
|
|
|
if (pdata->cd_type == S3C_SDHCI_CD_INTERNAL) {
|
|
s3c_gpio_setpull(S3C64XX_GPG(6), S3C_GPIO_PULL_UP);
|
|
s3c_gpio_cfgpin(S3C64XX_GPG(6), S3C_GPIO_SFN(3));
|
|
}
|
|
}
|
|
|
|
void s3c64xx_setup_sdhci2_cfg_gpio(struct platform_device *dev, int width)
|
|
{
|
|
/* Set all the necessary GPH pins to special-function 3 */
|
|
s3c_gpio_cfgrange_nopull(S3C64XX_GPH(6), width, S3C_GPIO_SFN(3));
|
|
|
|
/* Set all the necessary GPC pins to special-function 3 */
|
|
s3c_gpio_cfgrange_nopull(S3C64XX_GPC(4), 2, S3C_GPIO_SFN(3));
|
|
}
|