Merge tag 'timer' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
[deliverable/linux.git] / arch / arm / mach-nomadik / i2c-8815nhk.c
CommitLineData
63796b74
AR
1#include <linux/module.h>
2#include <linux/init.h>
3#include <linux/i2c.h>
4#include <linux/i2c-algo-bit.h>
5#include <linux/i2c-gpio.h>
63796b74 6#include <linux/platform_device.h>
0f332861 7#include <plat/gpio-nomadik.h>
661d414c 8#include <plat/pincfg.h>
63796b74
AR
9
10/*
11 * There are two busses in the 8815NHK.
12 * They could, in theory, be driven by the hardware component, but we
13 * use bit-bang through GPIO by now, to keep things simple
14 */
15
661d414c 16/* I2C0 connected to the STw4811 power management chip */
63796b74
AR
17static struct i2c_gpio_platform_data nhk8815_i2c_data0 = {
18 /* keep defaults for timeouts; pins are push-pull bidirectional */
19 .scl_pin = 62,
20 .sda_pin = 63,
21};
22
661d414c 23/* I2C1 connected to various sensors */
63796b74
AR
24static struct i2c_gpio_platform_data nhk8815_i2c_data1 = {
25 /* keep defaults for timeouts; pins are push-pull bidirectional */
26 .scl_pin = 53,
27 .sda_pin = 54,
28};
29
661d414c
LW
30/* I2C2 connected to the USB portions of the STw4811 only */
31static struct i2c_gpio_platform_data nhk8815_i2c_data2 = {
32 /* keep defaults for timeouts; pins are push-pull bidirectional */
33 .scl_pin = 73,
34 .sda_pin = 74,
35};
36
63796b74
AR
37static struct platform_device nhk8815_i2c_dev0 = {
38 .name = "i2c-gpio",
39 .id = 0,
40 .dev = {
41 .platform_data = &nhk8815_i2c_data0,
42 },
43};
661d414c 44
63796b74
AR
45static struct platform_device nhk8815_i2c_dev1 = {
46 .name = "i2c-gpio",
47 .id = 1,
48 .dev = {
49 .platform_data = &nhk8815_i2c_data1,
50 },
51};
52
661d414c
LW
53static struct platform_device nhk8815_i2c_dev2 = {
54 .name = "i2c-gpio",
55 .id = 2,
56 .dev = {
57 .platform_data = &nhk8815_i2c_data2,
58 },
59};
60
61static pin_cfg_t cpu8815_pins_i2c[] = {
62 PIN_CFG_INPUT(62, GPIO, PULLUP),
63 PIN_CFG_INPUT(63, GPIO, PULLUP),
64 PIN_CFG_INPUT(53, GPIO, PULLUP),
65 PIN_CFG_INPUT(54, GPIO, PULLUP),
66 PIN_CFG_INPUT(73, GPIO, PULLUP),
67 PIN_CFG_INPUT(74, GPIO, PULLUP),
68};
69
63796b74
AR
70static int __init nhk8815_i2c_init(void)
71{
661d414c 72 nmk_config_pins(cpu8815_pins_i2c, ARRAY_SIZE(cpu8815_pins_i2c));
63796b74 73 platform_device_register(&nhk8815_i2c_dev0);
63796b74 74 platform_device_register(&nhk8815_i2c_dev1);
661d414c 75 platform_device_register(&nhk8815_i2c_dev2);
63796b74
AR
76
77 return 0;
78}
79
80static void __exit nhk8815_i2c_exit(void)
81{
82 platform_device_unregister(&nhk8815_i2c_dev0);
83 platform_device_unregister(&nhk8815_i2c_dev1);
661d414c 84 platform_device_unregister(&nhk8815_i2c_dev2);
63796b74
AR
85 return;
86}
87
88module_init(nhk8815_i2c_init);
89module_exit(nhk8815_i2c_exit);
This page took 0.190991 seconds and 5 git commands to generate.