Linux Audio

Check our new training course

Loading...
Note: File does not exist in v6.13.7.
 1/*
 2 * Copyright (C) ST-Ericsson SA 2010
 3 *
 4 * Board data for the U8500 UIB, also known as the New UIB
 5 * License terms: GNU General Public License (GPL), version 2
 6 */
 7
 8#include <linux/kernel.h>
 9#include <linux/init.h>
10#include <linux/i2c.h>
11#include <linux/gpio.h>
12#include <linux/interrupt.h>
13#include <linux/mfd/tc3589x.h>
14#include <linux/input/matrix_keypad.h>
15
16#include <mach/gpio.h>
17#include <mach/irqs.h>
18
19#include "board-mop500.h"
20
21/* Dummy data that can be overridden by staging driver */
22struct i2c_board_info __initdata __weak mop500_i2c3_devices_u8500[] = {
23};
24
25/*
26 * TC35893
27 */
28static const unsigned int u8500_keymap[] = {
29	KEY(3, 1, KEY_END),
30	KEY(4, 1, KEY_POWER),
31	KEY(6, 4, KEY_VOLUMEDOWN),
32	KEY(4, 2, KEY_EMAIL),
33	KEY(3, 3, KEY_RIGHT),
34	KEY(2, 5, KEY_BACKSPACE),
35
36	KEY(6, 7, KEY_MENU),
37	KEY(5, 0, KEY_ENTER),
38	KEY(4, 3, KEY_0),
39	KEY(3, 4, KEY_DOT),
40	KEY(5, 2, KEY_UP),
41	KEY(3, 5, KEY_DOWN),
42
43	KEY(4, 5, KEY_SEND),
44	KEY(0, 5, KEY_BACK),
45	KEY(6, 2, KEY_VOLUMEUP),
46	KEY(1, 3, KEY_SPACE),
47	KEY(7, 6, KEY_LEFT),
48	KEY(5, 5, KEY_SEARCH),
49};
50
51static struct matrix_keymap_data u8500_keymap_data = {
52	.keymap		= u8500_keymap,
53	.keymap_size    = ARRAY_SIZE(u8500_keymap),
54};
55
56static struct tc3589x_keypad_platform_data tc35893_data = {
57	.krow = TC_KPD_ROWS,
58	.kcol = TC_KPD_COLUMNS,
59	.debounce_period = TC_KPD_DEBOUNCE_PERIOD,
60	.settle_time = TC_KPD_SETTLE_TIME,
61	.irqtype = IRQF_TRIGGER_FALLING,
62	.enable_wakeup = true,
63	.keymap_data    = &u8500_keymap_data,
64	.no_autorepeat  = true,
65};
66
67static struct tc3589x_platform_data tc3589x_keypad_data = {
68	.block = TC3589x_BLOCK_KEYPAD,
69	.keypad = &tc35893_data,
70	.irq_base = MOP500_EGPIO_IRQ_BASE,
71};
72
73static struct i2c_board_info __initdata mop500_i2c0_devices_u8500[] = {
74	{
75		I2C_BOARD_INFO("tc3589x", 0x44),
76		.platform_data = &tc3589x_keypad_data,
77		.irq = NOMADIK_GPIO_TO_IRQ(218),
78		.flags = I2C_CLIENT_WAKE,
79	},
80};
81
82
83void __init mop500_u8500uib_init(void)
84{
85	mop500_uib_i2c_add(3, mop500_i2c3_devices_u8500,
86			ARRAY_SIZE(mop500_i2c3_devices_u8500));
87
88	mop500_uib_i2c_add(0, mop500_i2c0_devices_u8500,
89			ARRAY_SIZE(mop500_i2c0_devices_u8500));
90
91}