setup-sdhci-gpio-s3c64xx.c (1639B)
1// SPDX-License-Identifier: GPL-2.0 2// 3// Copyright 2008 Simtec Electronics 4// Ben Dooks <ben@simtec.co.uk> 5// http://armlinux.simtec.co.uk/ 6// 7// S3C64XX - Helper functions for setting up SDHCI device(s) GPIO (HSMMC) 8 9#include <linux/kernel.h> 10#include <linux/types.h> 11#include <linux/interrupt.h> 12#include <linux/platform_device.h> 13#include <linux/io.h> 14#include <linux/gpio.h> 15 16#include "gpio-cfg.h" 17#include "sdhci.h" 18#include "gpio-samsung.h" 19 20void s3c64xx_setup_sdhci0_cfg_gpio(struct platform_device *dev, int width) 21{ 22 struct s3c_sdhci_platdata *pdata = dev->dev.platform_data; 23 24 /* Set all the necessary GPG pins to special-function 2 */ 25 s3c_gpio_cfgrange_nopull(S3C64XX_GPG(0), 2 + width, S3C_GPIO_SFN(2)); 26 27 if (pdata->cd_type == S3C_SDHCI_CD_INTERNAL) { 28 s3c_gpio_setpull(S3C64XX_GPG(6), S3C_GPIO_PULL_UP); 29 s3c_gpio_cfgpin(S3C64XX_GPG(6), S3C_GPIO_SFN(2)); 30 } 31} 32 33void s3c64xx_setup_sdhci1_cfg_gpio(struct platform_device *dev, int width) 34{ 35 struct s3c_sdhci_platdata *pdata = dev->dev.platform_data; 36 37 /* Set all the necessary GPH pins to special-function 2 */ 38 s3c_gpio_cfgrange_nopull(S3C64XX_GPH(0), 2 + width, S3C_GPIO_SFN(2)); 39 40 if (pdata->cd_type == S3C_SDHCI_CD_INTERNAL) { 41 s3c_gpio_setpull(S3C64XX_GPG(6), S3C_GPIO_PULL_UP); 42 s3c_gpio_cfgpin(S3C64XX_GPG(6), S3C_GPIO_SFN(3)); 43 } 44} 45 46void s3c64xx_setup_sdhci2_cfg_gpio(struct platform_device *dev, int width) 47{ 48 /* Set all the necessary GPH pins to special-function 3 */ 49 s3c_gpio_cfgrange_nopull(S3C64XX_GPH(6), width, S3C_GPIO_SFN(3)); 50 51 /* Set all the necessary GPC pins to special-function 3 */ 52 s3c_gpio_cfgrange_nopull(S3C64XX_GPC(4), 2, S3C_GPIO_SFN(3)); 53}