0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 #ifndef __PLAT_S3C_SDHCI_H
0015 #define __PLAT_S3C_SDHCI_H __FILE__
0016
0017 #include <linux/platform_data/mmc-sdhci-s3c.h>
0018 #include "devs.h"
0019
0020
0021
0022
0023
0024 extern void s3c_sdhci_set_platdata(struct s3c_sdhci_platdata *pd,
0025 struct s3c_sdhci_platdata *set);
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035 extern void s3c_sdhci0_set_platdata(struct s3c_sdhci_platdata *pd);
0036 extern void s3c_sdhci1_set_platdata(struct s3c_sdhci_platdata *pd);
0037 extern void s3c_sdhci2_set_platdata(struct s3c_sdhci_platdata *pd);
0038 extern void s3c_sdhci3_set_platdata(struct s3c_sdhci_platdata *pd);
0039
0040
0041
0042
0043
0044 extern struct s3c_sdhci_platdata s3c_hsmmc0_def_platdata;
0045 extern struct s3c_sdhci_platdata s3c_hsmmc1_def_platdata;
0046 extern struct s3c_sdhci_platdata s3c_hsmmc2_def_platdata;
0047 extern struct s3c_sdhci_platdata s3c_hsmmc3_def_platdata;
0048
0049
0050
0051 extern void s3c2416_setup_sdhci0_cfg_gpio(struct platform_device *, int w);
0052 extern void s3c2416_setup_sdhci1_cfg_gpio(struct platform_device *, int w);
0053 extern void s3c64xx_setup_sdhci0_cfg_gpio(struct platform_device *, int w);
0054 extern void s3c64xx_setup_sdhci1_cfg_gpio(struct platform_device *, int w);
0055 extern void s3c64xx_setup_sdhci2_cfg_gpio(struct platform_device *, int w);
0056
0057
0058
0059 #ifdef CONFIG_S3C2416_SETUP_SDHCI
0060 static inline void s3c2416_default_sdhci0(void)
0061 {
0062 #ifdef CONFIG_S3C_DEV_HSMMC
0063 s3c_hsmmc0_def_platdata.cfg_gpio = s3c2416_setup_sdhci0_cfg_gpio;
0064 #endif
0065 }
0066
0067 static inline void s3c2416_default_sdhci1(void)
0068 {
0069 #ifdef CONFIG_S3C_DEV_HSMMC1
0070 s3c_hsmmc1_def_platdata.cfg_gpio = s3c2416_setup_sdhci1_cfg_gpio;
0071 #endif
0072 }
0073
0074 #else
0075 static inline void s3c2416_default_sdhci0(void) { }
0076 static inline void s3c2416_default_sdhci1(void) { }
0077
0078 #endif
0079
0080
0081
0082 #ifdef CONFIG_S3C64XX_SETUP_SDHCI
0083 static inline void s3c6400_default_sdhci0(void)
0084 {
0085 #ifdef CONFIG_S3C_DEV_HSMMC
0086 s3c_hsmmc0_def_platdata.cfg_gpio = s3c64xx_setup_sdhci0_cfg_gpio;
0087 #endif
0088 }
0089
0090 static inline void s3c6400_default_sdhci1(void)
0091 {
0092 #ifdef CONFIG_S3C_DEV_HSMMC1
0093 s3c_hsmmc1_def_platdata.cfg_gpio = s3c64xx_setup_sdhci1_cfg_gpio;
0094 #endif
0095 }
0096
0097 static inline void s3c6400_default_sdhci2(void)
0098 {
0099 #ifdef CONFIG_S3C_DEV_HSMMC2
0100 s3c_hsmmc2_def_platdata.cfg_gpio = s3c64xx_setup_sdhci2_cfg_gpio;
0101 #endif
0102 }
0103
0104 static inline void s3c6410_default_sdhci0(void)
0105 {
0106 #ifdef CONFIG_S3C_DEV_HSMMC
0107 s3c_hsmmc0_def_platdata.cfg_gpio = s3c64xx_setup_sdhci0_cfg_gpio;
0108 #endif
0109 }
0110
0111 static inline void s3c6410_default_sdhci1(void)
0112 {
0113 #ifdef CONFIG_S3C_DEV_HSMMC1
0114 s3c_hsmmc1_def_platdata.cfg_gpio = s3c64xx_setup_sdhci1_cfg_gpio;
0115 #endif
0116 }
0117
0118 static inline void s3c6410_default_sdhci2(void)
0119 {
0120 #ifdef CONFIG_S3C_DEV_HSMMC2
0121 s3c_hsmmc2_def_platdata.cfg_gpio = s3c64xx_setup_sdhci2_cfg_gpio;
0122 #endif
0123 }
0124
0125 #else
0126 static inline void s3c6410_default_sdhci0(void) { }
0127 static inline void s3c6410_default_sdhci1(void) { }
0128 static inline void s3c6410_default_sdhci2(void) { }
0129 static inline void s3c6400_default_sdhci0(void) { }
0130 static inline void s3c6400_default_sdhci1(void) { }
0131 static inline void s3c6400_default_sdhci2(void) { }
0132
0133 #endif
0134
0135 static inline void s3c_sdhci_setname(int id, char *name)
0136 {
0137 switch (id) {
0138 #ifdef CONFIG_S3C_DEV_HSMMC
0139 case 0:
0140 s3c_device_hsmmc0.name = name;
0141 break;
0142 #endif
0143 #ifdef CONFIG_S3C_DEV_HSMMC1
0144 case 1:
0145 s3c_device_hsmmc1.name = name;
0146 break;
0147 #endif
0148 #ifdef CONFIG_S3C_DEV_HSMMC2
0149 case 2:
0150 s3c_device_hsmmc2.name = name;
0151 break;
0152 #endif
0153 #ifdef CONFIG_S3C_DEV_HSMMC3
0154 case 3:
0155 s3c_device_hsmmc3.name = name;
0156 break;
0157 #endif
0158 default:
0159 break;
0160 }
0161 }
0162 #endif