summaryrefslogtreecommitdiff
path: root/arch/arm/mach-omap2/board-minnow-sensors.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-omap2/board-minnow-sensors.c')
-rw-r--r--arch/arm/mach-omap2/board-minnow-sensors.c90
1 files changed, 90 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/board-minnow-sensors.c b/arch/arm/mach-omap2/board-minnow-sensors.c
new file mode 100644
index 00000000000..512c4448f1d
--- /dev/null
+++ b/arch/arm/mach-omap2/board-minnow-sensors.c
@@ -0,0 +1,90 @@
+/*
+ * linux/arch/arm/mach-omap2/board-minnow-sensors.c
+ *
+ * Copyright (C) 2009 Google, Inc.
+ * Copyright (C) 2009-2012 Motorola, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ */
+
+#include <linux/delay.h>
+#include <linux/kernel.h>
+#include <linux/platform_device.h>
+
+#if defined(CONFIG_MFD_M4SENSORHUB) || defined(CONFIG_MFD_M4SENSORHUB_MODULE)
+#include <linux/m4sensorhub.h>
+#include <linux/m4sensorhub_gpio.h>
+#endif
+#include <linux/regulator/consumer.h>
+#include <linux/vib-gpio.h>
+
+#include <linux/gpio.h>
+
+#ifdef CONFIG_ARM_OF
+#include <mach/dt_path.h>
+#include <asm/prom.h>
+#endif
+
+static struct regulator *minnow_vibrator_regulator;
+static int minnow_vibrator_initialization(void)
+{
+ struct regulator *reg;
+ reg = regulator_get(NULL, "vvib");
+ if (IS_ERR(reg))
+ return PTR_ERR(reg);
+ minnow_vibrator_regulator = reg;
+ return 0;
+}
+
+static void minnow_vibrator_exit(void)
+{
+ regulator_put(minnow_vibrator_regulator);
+}
+
+static int minnow_vibrator_power_on(void)
+{
+ if (minnow_vibrator_regulator)
+ return regulator_enable(minnow_vibrator_regulator);
+ return 0;
+}
+
+static int minnow_vibrator_power_off(void)
+{
+ if (minnow_vibrator_regulator)
+ return regulator_disable(minnow_vibrator_regulator);
+ return 0;
+}
+
+static struct vib_gpio_platform_data minnow_vib_gpio_data = {
+ .gpio = -1,
+ .max_timeout = 15000,
+ .active_low = 0,
+ .initial_vibrate = 0,
+
+ .init = minnow_vibrator_initialization,
+ .exit = minnow_vibrator_exit,
+ .power_on = minnow_vibrator_power_on,
+ .power_off = minnow_vibrator_power_off,
+};
+
+static struct platform_device minnow_vib_gpio = {
+ .name = "vib-gpio",
+ .id = -1,
+ .dev = {
+ .platform_data = &minnow_vib_gpio_data,
+ },
+};
+
+
+
+/*
+ * Sensors
+ */
+
+void __init minnow_sensors_init(void)
+{
+ platform_device_register(&minnow_vib_gpio);
+}