Commit | Line | Data |
---|---|---|
124bf94a | 1 | /* |
61b8c7b5 | 2 | * Copyright (C) 2010 Pengutronix, Wolfram Sang <kernel@pengutronix.de> |
124bf94a UKK |
3 | * |
4 | * This program is free software; you can redistribute it and/or modify it under | |
5 | * the terms of the GNU General Public License version 2 as published by the | |
6 | * Free Software Foundation. | |
7 | */ | |
8 | ||
82906b13 | 9 | #include <linux/platform_data/mmc-esdhc-imx.h> |
50f2de61 SG |
10 | |
11 | #include "../hardware.h" | |
e0557c0d | 12 | #include "devices-common.h" |
124bf94a | 13 | |
57ed3314 | 14 | #define imx_sdhci_esdhc_imx_data_entry_single(soc, _devid, _id, hwid) \ |
124bf94a | 15 | { \ |
57ed3314 | 16 | .devid = _devid, \ |
124bf94a UKK |
17 | .id = _id, \ |
18 | .iobase = soc ## _ESDHC ## hwid ## _BASE_ADDR, \ | |
19 | .irq = soc ## _INT_ESDHC ## hwid, \ | |
20 | } | |
21 | ||
57ed3314 SG |
22 | #define imx_sdhci_esdhc_imx_data_entry(soc, devid, id, hwid) \ |
23 | [id] = imx_sdhci_esdhc_imx_data_entry_single(soc, devid, id, hwid) | |
124bf94a | 24 | |
124bf94a UKK |
25 | #ifdef CONFIG_SOC_IMX35 |
26 | const struct imx_sdhci_esdhc_imx_data | |
27 | imx35_sdhci_esdhc_imx_data[] __initconst = { | |
28 | #define imx35_sdhci_esdhc_imx_data_entry(_id, _hwid) \ | |
57ed3314 | 29 | imx_sdhci_esdhc_imx_data_entry(MX35, "sdhci-esdhc-imx35", _id, _hwid) |
124bf94a UKK |
30 | imx35_sdhci_esdhc_imx_data_entry(0, 1), |
31 | imx35_sdhci_esdhc_imx_data_entry(1, 2), | |
32 | imx35_sdhci_esdhc_imx_data_entry(2, 3), | |
33 | }; | |
34 | #endif /* ifdef CONFIG_SOC_IMX35 */ | |
35 | ||
913413c3 SG |
36 | static const struct esdhc_platform_data default_esdhc_pdata __initconst = { |
37 | .wp_type = ESDHC_WP_NONE, | |
38 | .cd_type = ESDHC_CD_NONE, | |
39 | }; | |
40 | ||
124bf94a UKK |
41 | struct platform_device *__init imx_add_sdhci_esdhc_imx( |
42 | const struct imx_sdhci_esdhc_imx_data *data, | |
43 | const struct esdhc_platform_data *pdata) | |
44 | { | |
45 | struct resource res[] = { | |
46 | { | |
47 | .start = data->iobase, | |
48 | .end = data->iobase + SZ_16K - 1, | |
49 | .flags = IORESOURCE_MEM, | |
50 | }, { | |
51 | .start = data->irq, | |
52 | .end = data->irq, | |
53 | .flags = IORESOURCE_IRQ, | |
54 | }, | |
55 | }; | |
56 | ||
913413c3 SG |
57 | /* |
58 | * If machine does not provide pdata, use the default one | |
59 | * which means no WP/CD support | |
60 | */ | |
61 | if (!pdata) | |
62 | pdata = &default_esdhc_pdata; | |
63 | ||
fc26fe9c AK |
64 | return imx_add_platform_device_dmamask(data->devid, data->id, res, |
65 | ARRAY_SIZE(res), pdata, sizeof(*pdata), | |
66 | DMA_BIT_MASK(32)); | |
124bf94a | 67 | } |