Commit | Line | Data |
---|---|---|
4490e3c6 KK |
1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | /* | |
3db3ae5e KK |
3 | * Copyright (c) 2011 Samsung Electronics Co., Ltd. |
4 | * http://www.samsung.com | |
5cc7fd88 BD |
5 | * |
6 | * Copyright 2008 Openmoko, Inc. | |
7 | * Copyright 2008 Simtec Electronics | |
8 | * http://armlinux.simtec.co.uk/ | |
9 | * Ben Dooks <ben@simtec.co.uk> | |
10 | * | |
11 | * S3C Platform - SDHCI (HSMMC) platform data definitions | |
4490e3c6 | 12 | */ |
5cc7fd88 BD |
13 | |
14 | #ifndef __PLAT_S3C_SDHCI_H | |
15 | #define __PLAT_S3C_SDHCI_H __FILE__ | |
16 | ||
cc014f3e | 17 | #include <linux/platform_data/mmc-sdhci-s3c.h> |
c6ff132d | 18 | #include "devs.h" |
8482c81c | 19 | |
5e8e0a10 BG |
20 | /* s3c_sdhci_set_platdata() - common helper for setting SDHCI platform data |
21 | * @pd: The default platform data for this device. | |
22 | * @set: Pointer to the platform data to fill in. | |
23 | */ | |
24 | extern void s3c_sdhci_set_platdata(struct s3c_sdhci_platdata *pd, | |
25 | struct s3c_sdhci_platdata *set); | |
26 | ||
5cc7fd88 BD |
27 | /** |
28 | * s3c_sdhci0_set_platdata - Set platform data for S3C SDHCI device. | |
29 | * @pd: Platform data to register to device. | |
30 | * | |
31 | * Register the given platform data for use withe S3C SDHCI device. | |
32 | * The call will copy the platform data, so the board definitions can | |
33 | * make the structure itself __initdata. | |
34 | */ | |
35 | extern void s3c_sdhci0_set_platdata(struct s3c_sdhci_platdata *pd); | |
a2205cd2 | 36 | extern void s3c_sdhci1_set_platdata(struct s3c_sdhci_platdata *pd); |
86cd4f5f | 37 | extern void s3c_sdhci2_set_platdata(struct s3c_sdhci_platdata *pd); |
b3c674bc | 38 | extern void s3c_sdhci3_set_platdata(struct s3c_sdhci_platdata *pd); |
5cc7fd88 BD |
39 | |
40 | /* Default platform data, exported so that per-cpu initialisation can | |
41 | * set the correct one when there are more than one cpu type selected. | |
42 | */ | |
43 | ||
a2205cd2 BD |
44 | extern struct s3c_sdhci_platdata s3c_hsmmc0_def_platdata; |
45 | extern struct s3c_sdhci_platdata s3c_hsmmc1_def_platdata; | |
86cd4f5f | 46 | extern struct s3c_sdhci_platdata s3c_hsmmc2_def_platdata; |
b3c674bc | 47 | extern struct s3c_sdhci_platdata s3c_hsmmc3_def_platdata; |
5cc7fd88 | 48 | |
25985edc | 49 | /* Helper function availability */ |
5cc7fd88 | 50 | |
4faf6867 BD |
51 | extern void s3c64xx_setup_sdhci0_cfg_gpio(struct platform_device *, int w); |
52 | extern void s3c64xx_setup_sdhci1_cfg_gpio(struct platform_device *, int w); | |
92b118f6 | 53 | extern void s3c64xx_setup_sdhci2_cfg_gpio(struct platform_device *, int w); |
4faf6867 | 54 | |
88eb7156 | 55 | /* S3C64XX SDHCI setup */ |
4faf6867 | 56 | |
2f6c2ac1 | 57 | #ifdef CONFIG_S3C64XX_SETUP_SDHCI |
4faf6867 BD |
58 | static inline void s3c6400_default_sdhci0(void) |
59 | { | |
88eb7156 | 60 | #ifdef CONFIG_S3C_DEV_HSMMC |
4faf6867 | 61 | s3c_hsmmc0_def_platdata.cfg_gpio = s3c64xx_setup_sdhci0_cfg_gpio; |
88eb7156 | 62 | #endif |
4faf6867 BD |
63 | } |
64 | ||
4faf6867 BD |
65 | static inline void s3c6400_default_sdhci1(void) |
66 | { | |
88eb7156 | 67 | #ifdef CONFIG_S3C_DEV_HSMMC1 |
4faf6867 | 68 | s3c_hsmmc1_def_platdata.cfg_gpio = s3c64xx_setup_sdhci1_cfg_gpio; |
88eb7156 | 69 | #endif |
4faf6867 | 70 | } |
4faf6867 | 71 | |
92b118f6 MC |
72 | static inline void s3c6400_default_sdhci2(void) |
73 | { | |
88eb7156 | 74 | #ifdef CONFIG_S3C_DEV_HSMMC2 |
92b118f6 | 75 | s3c_hsmmc2_def_platdata.cfg_gpio = s3c64xx_setup_sdhci2_cfg_gpio; |
88eb7156 | 76 | #endif |
92b118f6 | 77 | } |
4faf6867 | 78 | |
5cc7fd88 BD |
79 | static inline void s3c6410_default_sdhci0(void) |
80 | { | |
88eb7156 | 81 | #ifdef CONFIG_S3C_DEV_HSMMC |
4faf6867 | 82 | s3c_hsmmc0_def_platdata.cfg_gpio = s3c64xx_setup_sdhci0_cfg_gpio; |
88eb7156 | 83 | #endif |
5cc7fd88 | 84 | } |
a2205cd2 BD |
85 | |
86 | static inline void s3c6410_default_sdhci1(void) | |
87 | { | |
88eb7156 | 88 | #ifdef CONFIG_S3C_DEV_HSMMC1 |
4faf6867 | 89 | s3c_hsmmc1_def_platdata.cfg_gpio = s3c64xx_setup_sdhci1_cfg_gpio; |
88eb7156 | 90 | #endif |
a2205cd2 | 91 | } |
713e9ded | 92 | |
92b118f6 MC |
93 | static inline void s3c6410_default_sdhci2(void) |
94 | { | |
88eb7156 | 95 | #ifdef CONFIG_S3C_DEV_HSMMC2 |
92b118f6 | 96 | s3c_hsmmc2_def_platdata.cfg_gpio = s3c64xx_setup_sdhci2_cfg_gpio; |
88eb7156 | 97 | #endif |
92b118f6 | 98 | } |
92b118f6 | 99 | |
5cc7fd88 BD |
100 | #else |
101 | static inline void s3c6410_default_sdhci0(void) { } | |
a2205cd2 | 102 | static inline void s3c6410_default_sdhci1(void) { } |
6b34f498 | 103 | static inline void s3c6410_default_sdhci2(void) { } |
2f6c2ac1 BD |
104 | static inline void s3c6400_default_sdhci0(void) { } |
105 | static inline void s3c6400_default_sdhci1(void) { } | |
6b34f498 | 106 | static inline void s3c6400_default_sdhci2(void) { } |
2f6c2ac1 BD |
107 | |
108 | #endif /* CONFIG_S3C64XX_SETUP_SDHCI */ | |
5cc7fd88 | 109 | |
8482c81c TA |
110 | static inline void s3c_sdhci_setname(int id, char *name) |
111 | { | |
112 | switch (id) { | |
113 | #ifdef CONFIG_S3C_DEV_HSMMC | |
114 | case 0: | |
115 | s3c_device_hsmmc0.name = name; | |
116 | break; | |
117 | #endif | |
118 | #ifdef CONFIG_S3C_DEV_HSMMC1 | |
119 | case 1: | |
120 | s3c_device_hsmmc1.name = name; | |
121 | break; | |
122 | #endif | |
123 | #ifdef CONFIG_S3C_DEV_HSMMC2 | |
124 | case 2: | |
125 | s3c_device_hsmmc2.name = name; | |
126 | break; | |
127 | #endif | |
128 | #ifdef CONFIG_S3C_DEV_HSMMC3 | |
129 | case 3: | |
130 | s3c_device_hsmmc3.name = name; | |
131 | break; | |
132 | #endif | |
8d67ec86 SK |
133 | default: |
134 | break; | |
8482c81c TA |
135 | } |
136 | } | |
5cc7fd88 | 137 | #endif /* __PLAT_S3C_SDHCI_H */ |