aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLee Jones <lee.jones@linaro.org>2013-09-18 10:11:25 -0400
committerLinus Walleij <linus.walleij@linaro.org>2013-09-26 05:07:33 -0400
commitc316503b3ae4f30ae68735b2a89303f9653a7f42 (patch)
tree7d9edab3ca33cc63fd2a36ec31b1e78ee602abc6
parentc8bc7a8a13da97103ff94e1646678a2f8438e9b5 (diff)
ARM: ux500: Remove TC35892 Flexible IO Expander when booting ATAGs
It's time to remove all ATAG support from ux500 and rely solely on Device Tree booting. This patch is part of that endeavour. Signed-off-by: Lee Jones <lee.jones@linaro.org> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
-rw-r--r--arch/arm/mach-ux500/board-mop500-sdi.c12
-rw-r--r--arch/arm/mach-ux500/board-mop500-u8500uib.c64
-rw-r--r--arch/arm/mach-ux500/board-mop500.c35
-rw-r--r--arch/arm/mach-ux500/board-mop500.h1
4 files changed, 0 insertions, 112 deletions
diff --git a/arch/arm/mach-ux500/board-mop500-sdi.c b/arch/arm/mach-ux500/board-mop500-sdi.c
index b3e61a38e5c8..1ae5999c45db 100644
--- a/arch/arm/mach-ux500/board-mop500-sdi.c
+++ b/arch/arm/mach-ux500/board-mop500-sdi.c
@@ -71,12 +71,6 @@ static void sdi0_configure(struct device *parent)
71 db8500_add_sdi0(parent, &mop500_sdi0_data, U8500_SDI_V2_PERIPHID); 71 db8500_add_sdi0(parent, &mop500_sdi0_data, U8500_SDI_V2_PERIPHID);
72} 72}
73 73
74void mop500_sdi_tc35892_init(struct device *parent)
75{
76 mop500_sdi0_data.gpio_cd = GPIO_SDMMC_CD;
77 sdi0_configure(parent);
78}
79
80/* 74/*
81 * SDI1 (SDIO WLAN) 75 * SDI1 (SDIO WLAN)
82 */ 76 */
@@ -185,12 +179,6 @@ void __init mop500_sdi_init(struct device *parent)
185 db8500_add_sdi2(parent, &mop500_sdi2_data, U8500_SDI_V2_PERIPHID); 179 db8500_add_sdi2(parent, &mop500_sdi2_data, U8500_SDI_V2_PERIPHID);
186 /* On-board eMMC */ 180 /* On-board eMMC */
187 db8500_add_sdi4(parent, &mop500_sdi4_data, U8500_SDI_V2_PERIPHID); 181 db8500_add_sdi4(parent, &mop500_sdi4_data, U8500_SDI_V2_PERIPHID);
188
189 /*
190 * On boards with the TC35892 GPIO expander, sdi0 will finally
191 * be added when the TC35892 initializes and calls
192 * mop500_sdi_tc35892_init() above.
193 */
194} 182}
195 183
196void __init snowball_sdi_init(struct device *parent) 184void __init snowball_sdi_init(struct device *parent)
diff --git a/arch/arm/mach-ux500/board-mop500-u8500uib.c b/arch/arm/mach-ux500/board-mop500-u8500uib.c
index d397c19570af..6f6553e19c00 100644
--- a/arch/arm/mach-ux500/board-mop500-u8500uib.c
+++ b/arch/arm/mach-ux500/board-mop500-u8500uib.c
@@ -9,8 +9,6 @@
9#include <linux/init.h> 9#include <linux/init.h>
10#include <linux/i2c.h> 10#include <linux/i2c.h>
11#include <linux/interrupt.h> 11#include <linux/interrupt.h>
12#include <linux/mfd/tc3589x.h>
13#include <linux/input/matrix_keypad.h>
14 12
15#include "irqs.h" 13#include "irqs.h"
16 14
@@ -23,70 +21,8 @@ static struct i2c_board_info __initdata mop500_i2c3_devices_u8500[] = {
23 }, 21 },
24}; 22};
25 23
26/*
27 * TC35893
28 */
29static const unsigned int u8500_keymap[] = {
30 KEY(3, 1, KEY_END),
31 KEY(4, 1, KEY_POWER),
32 KEY(6, 4, KEY_VOLUMEDOWN),
33 KEY(4, 2, KEY_EMAIL),
34 KEY(3, 3, KEY_RIGHT),
35 KEY(2, 5, KEY_BACKSPACE),
36
37 KEY(6, 7, KEY_MENU),
38 KEY(5, 0, KEY_ENTER),
39 KEY(4, 3, KEY_0),
40 KEY(3, 4, KEY_DOT),
41 KEY(5, 2, KEY_UP),
42 KEY(3, 5, KEY_DOWN),
43
44 KEY(4, 5, KEY_SEND),
45 KEY(0, 5, KEY_BACK),
46 KEY(6, 2, KEY_VOLUMEUP),
47 KEY(1, 3, KEY_SPACE),
48 KEY(7, 6, KEY_LEFT),
49 KEY(5, 5, KEY_SEARCH),
50};
51
52static struct matrix_keymap_data u8500_keymap_data = {
53 .keymap = u8500_keymap,
54 .keymap_size = ARRAY_SIZE(u8500_keymap),
55};
56
57static struct tc3589x_keypad_platform_data tc35893_data = {
58 .krow = TC_KPD_ROWS,
59 .kcol = TC_KPD_COLUMNS,
60 .debounce_period = TC_KPD_DEBOUNCE_PERIOD,
61 .settle_time = TC_KPD_SETTLE_TIME,
62 .irqtype = IRQF_TRIGGER_FALLING,
63 .enable_wakeup = true,
64 .keymap_data = &u8500_keymap_data,
65 .no_autorepeat = true,
66};
67
68static struct tc3589x_platform_data tc3589x_keypad_data = {
69 .block = TC3589x_BLOCK_KEYPAD,
70 .keypad = &tc35893_data,
71 .irq_base = MOP500_EGPIO_IRQ_BASE,
72};
73
74static struct i2c_board_info __initdata mop500_i2c0_devices_u8500[] = {
75 {
76 I2C_BOARD_INFO("tc3589x", 0x44),
77 .platform_data = &tc3589x_keypad_data,
78 .irq = NOMADIK_GPIO_TO_IRQ(218),
79 .flags = I2C_CLIENT_WAKE,
80 },
81};
82
83
84void __init mop500_u8500uib_init(void) 24void __init mop500_u8500uib_init(void)
85{ 25{
86 mop500_uib_i2c_add(3, mop500_i2c3_devices_u8500, 26 mop500_uib_i2c_add(3, mop500_i2c3_devices_u8500,
87 ARRAY_SIZE(mop500_i2c3_devices_u8500)); 27 ARRAY_SIZE(mop500_i2c3_devices_u8500));
88
89 mop500_uib_i2c_add(0, mop500_i2c0_devices_u8500,
90 ARRAY_SIZE(mop500_i2c0_devices_u8500));
91
92} 28}
diff --git a/arch/arm/mach-ux500/board-mop500.c b/arch/arm/mach-ux500/board-mop500.c
index ca169f6a34c4..a8c22cd2f4b1 100644
--- a/arch/arm/mach-ux500/board-mop500.c
+++ b/arch/arm/mach-ux500/board-mop500.c
@@ -26,7 +26,6 @@
26#include <linux/regulator/ab8500.h> 26#include <linux/regulator/ab8500.h>
27#include <linux/regulator/fixed.h> 27#include <linux/regulator/fixed.h>
28#include <linux/regulator/driver.h> 28#include <linux/regulator/driver.h>
29#include <linux/mfd/tc3589x.h>
30#include <linux/mfd/tps6105x.h> 29#include <linux/mfd/tps6105x.h>
31#include <linux/mfd/abx500/ab8500-gpio.h> 30#include <linux/mfd/abx500/ab8500-gpio.h>
32#include <linux/platform_data/leds-lp55xx.h> 31#include <linux/platform_data/leds-lp55xx.h>
@@ -55,40 +54,6 @@ struct ab8500_platform_data ab8500_platdata = {
55 .regulator = &ab8500_regulator_plat_data, 54 .regulator = &ab8500_regulator_plat_data,
56}; 55};
57 56
58/*
59 * TC35892
60 */
61
62static void mop500_tc35892_init(struct tc3589x *tc3589x, unsigned int base)
63{
64 struct device *parent = NULL;
65#if 0
66 /* FIXME: Is the sdi actually part of tc3589x? */
67 parent = tc3589x->dev;
68#endif
69 mop500_sdi_tc35892_init(parent);
70}
71
72static struct tc3589x_gpio_platform_data mop500_tc35892_gpio_data = {
73 .gpio_base = MOP500_EGPIO(0),
74 .setup = mop500_tc35892_init,
75};
76
77static struct tc3589x_platform_data mop500_tc35892_data = {
78 .block = TC3589x_BLOCK_GPIO,
79 .gpio = &mop500_tc35892_gpio_data,
80 .irq_base = MOP500_EGPIO_IRQ_BASE,
81};
82
83/* I2C0 devices only available on the first HREF/MOP500 */
84static struct i2c_board_info __initdata mop500_i2c0_devices[] = {
85 {
86 I2C_BOARD_INFO("tc3589x", 0x42),
87 .irq = NOMADIK_GPIO_TO_IRQ(217),
88 .platform_data = &mop500_tc35892_data,
89 },
90};
91
92static struct i2c_board_info __initdata mop500_i2c2_devices[] = { 57static struct i2c_board_info __initdata mop500_i2c2_devices[] = {
93 { 58 {
94 /* Light sensor Rohm BH1780GLI */ 59 /* Light sensor Rohm BH1780GLI */
diff --git a/arch/arm/mach-ux500/board-mop500.h b/arch/arm/mach-ux500/board-mop500.h
index 3bd9b6e6250c..cfc553c9e50d 100644
--- a/arch/arm/mach-ux500/board-mop500.h
+++ b/arch/arm/mach-ux500/board-mop500.h
@@ -98,7 +98,6 @@ extern struct stedma40_platform_data dma40_plat_data;
98extern void mop500_sdi_init(struct device *parent); 98extern void mop500_sdi_init(struct device *parent);
99extern void snowball_sdi_init(struct device *parent); 99extern void snowball_sdi_init(struct device *parent);
100extern void hrefv60_sdi_init(struct device *parent); 100extern void hrefv60_sdi_init(struct device *parent);
101extern void mop500_sdi_tc35892_init(struct device *parent);
102void __init mop500_u8500uib_init(void); 101void __init mop500_u8500uib_init(void);
103void __init mop500_stuib_init(void); 102void __init mop500_stuib_init(void);
104void __init mop500_pinmaps_init(void); 103void __init mop500_pinmaps_init(void);