diff options
author | Shawn Guo <shawn.guo@linaro.org> | 2012-09-14 03:19:00 -0400 |
---|---|---|
committer | Shawn Guo <shawn.guo@linaro.org> | 2012-10-14 22:03:15 -0400 |
commit | 5bdfba29f18f0a36df8e28328315213ea47eb529 (patch) | |
tree | 6c35d12ded1ee1c2fafd8eaada320d926651d1a3 /arch/arm/mach-imx/devices | |
parent | 881994638c4033815dcdd26f43d209e83760d493 (diff) |
i2c: imx: remove cpu_is_xxx by using platform_device_id
This is some amount of work left/forgot from device tree conversion.
Instead of checking cpu_is_xxx to determine the controller type, the
driver should use platform_device_id, which should match the device
tree compatible string.
The patch changes the driver to use platform_device_id rather than
cpu_is_xxx to determine the controller type/version. It also updates
the platform code and device tree source accordingly.
As the result, mach/hardware.h inclusion gets removed from the driver.
Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
Acked-by: Sascha Hauer <s.hauer@pengutronix.de>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Cc: Wolfram Sang <w.sang@pengutronix.de>
Cc: linux-i2c@vger.kernel.org
Diffstat (limited to 'arch/arm/mach-imx/devices')
-rw-r--r-- | arch/arm/mach-imx/devices/devices-common.h | 1 | ||||
-rw-r--r-- | arch/arm/mach-imx/devices/platform-imx-i2c.c | 28 |
2 files changed, 16 insertions, 13 deletions
diff --git a/arch/arm/mach-imx/devices/devices-common.h b/arch/arm/mach-imx/devices/devices-common.h index eaf79d220c9a..86bf34cd4865 100644 --- a/arch/arm/mach-imx/devices/devices-common.h +++ b/arch/arm/mach-imx/devices/devices-common.h | |||
@@ -118,6 +118,7 @@ struct platform_device *__init imx_add_imx_fb( | |||
118 | 118 | ||
119 | #include <linux/platform_data/i2c-imx.h> | 119 | #include <linux/platform_data/i2c-imx.h> |
120 | struct imx_imx_i2c_data { | 120 | struct imx_imx_i2c_data { |
121 | const char *devid; | ||
121 | int id; | 122 | int id; |
122 | resource_size_t iobase; | 123 | resource_size_t iobase; |
123 | resource_size_t iosize; | 124 | resource_size_t iosize; |
diff --git a/arch/arm/mach-imx/devices/platform-imx-i2c.c b/arch/arm/mach-imx/devices/platform-imx-i2c.c index e0c7d6291bed..424ce246fe43 100644 --- a/arch/arm/mach-imx/devices/platform-imx-i2c.c +++ b/arch/arm/mach-imx/devices/platform-imx-i2c.c | |||
@@ -9,31 +9,32 @@ | |||
9 | #include <mach/hardware.h> | 9 | #include <mach/hardware.h> |
10 | #include "devices-common.h" | 10 | #include "devices-common.h" |
11 | 11 | ||
12 | #define imx_imx_i2c_data_entry_single(soc, _id, _hwid, _size) \ | 12 | #define imx_imx_i2c_data_entry_single(soc, _devid, _id, _hwid, _size) \ |
13 | { \ | 13 | { \ |
14 | .devid = _devid, \ | ||
14 | .id = _id, \ | 15 | .id = _id, \ |
15 | .iobase = soc ## _I2C ## _hwid ## _BASE_ADDR, \ | 16 | .iobase = soc ## _I2C ## _hwid ## _BASE_ADDR, \ |
16 | .iosize = _size, \ | 17 | .iosize = _size, \ |
17 | .irq = soc ## _INT_I2C ## _hwid, \ | 18 | .irq = soc ## _INT_I2C ## _hwid, \ |
18 | } | 19 | } |
19 | 20 | ||
20 | #define imx_imx_i2c_data_entry(soc, _id, _hwid, _size) \ | 21 | #define imx_imx_i2c_data_entry(soc, _devid, _id, _hwid, _size) \ |
21 | [_id] = imx_imx_i2c_data_entry_single(soc, _id, _hwid, _size) | 22 | [_id] = imx_imx_i2c_data_entry_single(soc, _devid, _id, _hwid, _size) |
22 | 23 | ||
23 | #ifdef CONFIG_SOC_IMX1 | 24 | #ifdef CONFIG_SOC_IMX1 |
24 | const struct imx_imx_i2c_data imx1_imx_i2c_data __initconst = | 25 | const struct imx_imx_i2c_data imx1_imx_i2c_data __initconst = |
25 | imx_imx_i2c_data_entry_single(MX1, 0, , SZ_4K); | 26 | imx_imx_i2c_data_entry_single(MX1, "imx1-i2c", 0, , SZ_4K); |
26 | #endif /* ifdef CONFIG_SOC_IMX1 */ | 27 | #endif /* ifdef CONFIG_SOC_IMX1 */ |
27 | 28 | ||
28 | #ifdef CONFIG_SOC_IMX21 | 29 | #ifdef CONFIG_SOC_IMX21 |
29 | const struct imx_imx_i2c_data imx21_imx_i2c_data __initconst = | 30 | const struct imx_imx_i2c_data imx21_imx_i2c_data __initconst = |
30 | imx_imx_i2c_data_entry_single(MX21, 0, , SZ_4K); | 31 | imx_imx_i2c_data_entry_single(MX21, "imx21-i2c", 0, , SZ_4K); |
31 | #endif /* ifdef CONFIG_SOC_IMX21 */ | 32 | #endif /* ifdef CONFIG_SOC_IMX21 */ |
32 | 33 | ||
33 | #ifdef CONFIG_SOC_IMX25 | 34 | #ifdef CONFIG_SOC_IMX25 |
34 | const struct imx_imx_i2c_data imx25_imx_i2c_data[] __initconst = { | 35 | const struct imx_imx_i2c_data imx25_imx_i2c_data[] __initconst = { |
35 | #define imx25_imx_i2c_data_entry(_id, _hwid) \ | 36 | #define imx25_imx_i2c_data_entry(_id, _hwid) \ |
36 | imx_imx_i2c_data_entry(MX25, _id, _hwid, SZ_16K) | 37 | imx_imx_i2c_data_entry(MX25, "imx21-i2c", _id, _hwid, SZ_16K) |
37 | imx25_imx_i2c_data_entry(0, 1), | 38 | imx25_imx_i2c_data_entry(0, 1), |
38 | imx25_imx_i2c_data_entry(1, 2), | 39 | imx25_imx_i2c_data_entry(1, 2), |
39 | imx25_imx_i2c_data_entry(2, 3), | 40 | imx25_imx_i2c_data_entry(2, 3), |
@@ -43,7 +44,7 @@ const struct imx_imx_i2c_data imx25_imx_i2c_data[] __initconst = { | |||
43 | #ifdef CONFIG_SOC_IMX27 | 44 | #ifdef CONFIG_SOC_IMX27 |
44 | const struct imx_imx_i2c_data imx27_imx_i2c_data[] __initconst = { | 45 | const struct imx_imx_i2c_data imx27_imx_i2c_data[] __initconst = { |
45 | #define imx27_imx_i2c_data_entry(_id, _hwid) \ | 46 | #define imx27_imx_i2c_data_entry(_id, _hwid) \ |
46 | imx_imx_i2c_data_entry(MX27, _id, _hwid, SZ_4K) | 47 | imx_imx_i2c_data_entry(MX27, "imx21-i2c", _id, _hwid, SZ_4K) |
47 | imx27_imx_i2c_data_entry(0, 1), | 48 | imx27_imx_i2c_data_entry(0, 1), |
48 | imx27_imx_i2c_data_entry(1, 2), | 49 | imx27_imx_i2c_data_entry(1, 2), |
49 | }; | 50 | }; |
@@ -52,7 +53,7 @@ const struct imx_imx_i2c_data imx27_imx_i2c_data[] __initconst = { | |||
52 | #ifdef CONFIG_SOC_IMX31 | 53 | #ifdef CONFIG_SOC_IMX31 |
53 | const struct imx_imx_i2c_data imx31_imx_i2c_data[] __initconst = { | 54 | const struct imx_imx_i2c_data imx31_imx_i2c_data[] __initconst = { |
54 | #define imx31_imx_i2c_data_entry(_id, _hwid) \ | 55 | #define imx31_imx_i2c_data_entry(_id, _hwid) \ |
55 | imx_imx_i2c_data_entry(MX31, _id, _hwid, SZ_4K) | 56 | imx_imx_i2c_data_entry(MX31, "imx21-i2c", _id, _hwid, SZ_4K) |
56 | imx31_imx_i2c_data_entry(0, 1), | 57 | imx31_imx_i2c_data_entry(0, 1), |
57 | imx31_imx_i2c_data_entry(1, 2), | 58 | imx31_imx_i2c_data_entry(1, 2), |
58 | imx31_imx_i2c_data_entry(2, 3), | 59 | imx31_imx_i2c_data_entry(2, 3), |
@@ -62,7 +63,7 @@ const struct imx_imx_i2c_data imx31_imx_i2c_data[] __initconst = { | |||
62 | #ifdef CONFIG_SOC_IMX35 | 63 | #ifdef CONFIG_SOC_IMX35 |
63 | const struct imx_imx_i2c_data imx35_imx_i2c_data[] __initconst = { | 64 | const struct imx_imx_i2c_data imx35_imx_i2c_data[] __initconst = { |
64 | #define imx35_imx_i2c_data_entry(_id, _hwid) \ | 65 | #define imx35_imx_i2c_data_entry(_id, _hwid) \ |
65 | imx_imx_i2c_data_entry(MX35, _id, _hwid, SZ_4K) | 66 | imx_imx_i2c_data_entry(MX35, "imx21-i2c", _id, _hwid, SZ_4K) |
66 | imx35_imx_i2c_data_entry(0, 1), | 67 | imx35_imx_i2c_data_entry(0, 1), |
67 | imx35_imx_i2c_data_entry(1, 2), | 68 | imx35_imx_i2c_data_entry(1, 2), |
68 | imx35_imx_i2c_data_entry(2, 3), | 69 | imx35_imx_i2c_data_entry(2, 3), |
@@ -72,7 +73,7 @@ const struct imx_imx_i2c_data imx35_imx_i2c_data[] __initconst = { | |||
72 | #ifdef CONFIG_SOC_IMX50 | 73 | #ifdef CONFIG_SOC_IMX50 |
73 | const struct imx_imx_i2c_data imx50_imx_i2c_data[] __initconst = { | 74 | const struct imx_imx_i2c_data imx50_imx_i2c_data[] __initconst = { |
74 | #define imx50_imx_i2c_data_entry(_id, _hwid) \ | 75 | #define imx50_imx_i2c_data_entry(_id, _hwid) \ |
75 | imx_imx_i2c_data_entry(MX50, _id, _hwid, SZ_4K) | 76 | imx_imx_i2c_data_entry(MX50, "imx21-i2c", _id, _hwid, SZ_4K) |
76 | imx50_imx_i2c_data_entry(0, 1), | 77 | imx50_imx_i2c_data_entry(0, 1), |
77 | imx50_imx_i2c_data_entry(1, 2), | 78 | imx50_imx_i2c_data_entry(1, 2), |
78 | imx50_imx_i2c_data_entry(2, 3), | 79 | imx50_imx_i2c_data_entry(2, 3), |
@@ -82,10 +83,11 @@ const struct imx_imx_i2c_data imx50_imx_i2c_data[] __initconst = { | |||
82 | #ifdef CONFIG_SOC_IMX51 | 83 | #ifdef CONFIG_SOC_IMX51 |
83 | const struct imx_imx_i2c_data imx51_imx_i2c_data[] __initconst = { | 84 | const struct imx_imx_i2c_data imx51_imx_i2c_data[] __initconst = { |
84 | #define imx51_imx_i2c_data_entry(_id, _hwid) \ | 85 | #define imx51_imx_i2c_data_entry(_id, _hwid) \ |
85 | imx_imx_i2c_data_entry(MX51, _id, _hwid, SZ_4K) | 86 | imx_imx_i2c_data_entry(MX51, "imx21-i2c", _id, _hwid, SZ_4K) |
86 | imx51_imx_i2c_data_entry(0, 1), | 87 | imx51_imx_i2c_data_entry(0, 1), |
87 | imx51_imx_i2c_data_entry(1, 2), | 88 | imx51_imx_i2c_data_entry(1, 2), |
88 | { | 89 | { |
90 | .devid = "imx21-i2c", | ||
89 | .id = 2, | 91 | .id = 2, |
90 | .iobase = MX51_HSI2C_DMA_BASE_ADDR, | 92 | .iobase = MX51_HSI2C_DMA_BASE_ADDR, |
91 | .iosize = SZ_16K, | 93 | .iosize = SZ_16K, |
@@ -97,7 +99,7 @@ const struct imx_imx_i2c_data imx51_imx_i2c_data[] __initconst = { | |||
97 | #ifdef CONFIG_SOC_IMX53 | 99 | #ifdef CONFIG_SOC_IMX53 |
98 | const struct imx_imx_i2c_data imx53_imx_i2c_data[] __initconst = { | 100 | const struct imx_imx_i2c_data imx53_imx_i2c_data[] __initconst = { |
99 | #define imx53_imx_i2c_data_entry(_id, _hwid) \ | 101 | #define imx53_imx_i2c_data_entry(_id, _hwid) \ |
100 | imx_imx_i2c_data_entry(MX53, _id, _hwid, SZ_4K) | 102 | imx_imx_i2c_data_entry(MX53, "imx21-i2c", _id, _hwid, SZ_4K) |
101 | imx53_imx_i2c_data_entry(0, 1), | 103 | imx53_imx_i2c_data_entry(0, 1), |
102 | imx53_imx_i2c_data_entry(1, 2), | 104 | imx53_imx_i2c_data_entry(1, 2), |
103 | imx53_imx_i2c_data_entry(2, 3), | 105 | imx53_imx_i2c_data_entry(2, 3), |
@@ -120,7 +122,7 @@ struct platform_device *__init imx_add_imx_i2c( | |||
120 | }, | 122 | }, |
121 | }; | 123 | }; |
122 | 124 | ||
123 | return imx_add_platform_device("imx-i2c", data->id, | 125 | return imx_add_platform_device(data->devid, data->id, |
124 | res, ARRAY_SIZE(res), | 126 | res, ARRAY_SIZE(res), |
125 | pdata, sizeof(*pdata)); | 127 | pdata, sizeof(*pdata)); |
126 | } | 128 | } |