]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/commitdiff
ARM: OMAP: Add menelaus chip info for N800
authorTrilok Soni <soni.trilok@gmail.com>
Sat, 26 May 2007 13:51:34 +0000 (19:21 +0530)
committerTony Lindgren <tony@atomide.com>
Wed, 13 Jun 2007 13:25:38 +0000 (06:25 -0700)
- Move board-n800-pm.c code to board-n800.c
- Add platform data information specific to n800

Signed-off-by: Trilok Soni <soni.trilok@gmail.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
arch/arm/mach-omap2/Makefile
arch/arm/mach-omap2/board-n800-pm.c [deleted file]
arch/arm/mach-omap2/board-n800.c
include/asm-arm/arch-omap/menelaus.h

index 177008e56db3d37dfda8cb5cbe6f4ae25eff37be..9c1309c4b0a18c1ad77ae91caad9a5e2191b2b2e 100644 (file)
@@ -28,7 +28,7 @@ obj-$(CONFIG_MACH_OMAP_APOLLON)               += board-apollon.o \
 obj-$(CONFIG_MACH_NOKIA_N800)          += board-n800.o board-n800-flash.o \
                                           board-n800-mmc.o board-n800-bt.o \
                                           board-n800-audio.o board-n800-usb.o \
-                                          board-n800-dsp.o board-n800-pm.o
+                                          board-n800-dsp.o
 
 # TUSB 6010 chips
 obj-$(CONFIG_MACH_OMAP2_TUSB6010)      += usb-tusb6010.o
diff --git a/arch/arm/mach-omap2/board-n800-pm.c b/arch/arm/mach-omap2/board-n800-pm.c
deleted file mode 100644 (file)
index 33f3e4d..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Nokia N800 PM code
- *
- * Copyright (C) 2006 Nokia Corporation
- * Author: Amit Kucheria <amit.kucheria@nokia.com>
- *
- * 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/kernel.h>
-#include <linux/module.h>
-#include <asm/arch/menelaus.h>
-
-#ifdef CONFIG_MENELAUS
-
-static int n800_auto_sleep_regulators(void)
-{
-       u32 val;
-       int ret;
-
-       val = EN_VPLL_SLEEP | EN_VMMC_SLEEP    \
-               | EN_VAUX_SLEEP | EN_VIO_SLEEP \
-               | EN_VMEM_SLEEP | EN_DC3_SLEEP \
-               | EN_VC_SLEEP | EN_DC2_SLEEP;
-
-       ret = menelaus_set_regulator_sleep(1, val);
-       if (ret < 0) {
-               printk(KERN_ERR "Could not set regulators to sleep on "
-                       "menelaus: %u\n", ret);
-               return ret;
-       }
-       return 0;
-}
-
-static int n800_auto_voltage_scale(void)
-{
-       int ret;
-
-       ret = menelaus_set_vcore_hw(1400, 1050);
-       if (ret < 0) {
-               printk(KERN_ERR "Could not set VCORE voltage on "
-                       "menelaus: %u\n", ret);
-               return ret;
-       }
-       return 0;
-}
-
-static int n800_menelaus_init(struct device *dev)
-{
-       int ret;
-
-       ret = n800_auto_voltage_scale();
-       if (ret < 0)
-               return ret;
-       ret = n800_auto_sleep_regulators();
-       if (ret < 0)
-               return ret;
-       return 0;
-}
-
-static struct menelaus_platform_data n800_menelaus_platform_data = {
-       .late_init = n800_menelaus_init,
-};
-
-void __init n800_pm_init(void)
-{
-       menelaus_set_platform_data(&n800_menelaus_platform_data);
-}
-
-#else
-
-void __init n800_pm_init(void)
-{
-}
-
-#endif
-
index b4c150de753231a34f862ced5bbc771e7731abfb..a050b4767887a707fa881e7589519b60fb2811e3 100644 (file)
@@ -22,6 +22,7 @@
 #include <linux/delay.h>
 #include <linux/interrupt.h>
 #include <linux/irq.h>
+#include <linux/i2c.h>
 #include <asm/hardware.h>
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
@@ -474,9 +475,74 @@ static struct platform_device *n800_devices[] __initdata = {
 #endif
 };
 
+#ifdef CONFIG_MENELAUS
+static int n800_auto_sleep_regulators(void)
+{
+       u32 val;
+       int ret;
+
+       val = EN_VPLL_SLEEP | EN_VMMC_SLEEP    \
+               | EN_VAUX_SLEEP | EN_VIO_SLEEP \
+               | EN_VMEM_SLEEP | EN_DC3_SLEEP \
+               | EN_VC_SLEEP | EN_DC2_SLEEP;
+
+       ret = menelaus_set_regulator_sleep(1, val);
+       if (ret < 0) {
+               printk(KERN_ERR "Could not set regulators to sleep on "
+                       "menelaus: %u\n", ret);
+               return ret;
+       }
+       return 0;
+}
+
+static int n800_auto_voltage_scale(void)
+{
+       int ret;
+
+       ret = menelaus_set_vcore_hw(1400, 1050);
+       if (ret < 0) {
+               printk(KERN_ERR "Could not set VCORE voltage on "
+                       "menelaus: %u\n", ret);
+               return ret;
+       }
+       return 0;
+}
+
+static int n800_menelaus_init(struct device *dev)
+{
+       int ret;
+
+       ret = n800_auto_voltage_scale();
+       if (ret < 0)
+               return ret;
+       ret = n800_auto_sleep_regulators();
+       if (ret < 0)
+               return ret;
+       return 0;
+}
+
+static struct menelaus_platform_data n800_menelaus_platform_data = {
+       .late_init = n800_menelaus_init,
+};
+#endif
+
+static struct i2c_board_info __initdata n800_i2c_board_info[] = {
+#ifdef CONFIG_MENELAUS
+       {
+               I2C_BOARD_INFO("menelaus", 0x72),
+               .irq = INT_24XX_SYS_NIRQ,
+               .platform_data = &n800_menelaus_platform_data,
+       },
+#endif
+};
+
 static void __init nokia_n800_init(void)
 {
        platform_add_devices(n800_devices, ARRAY_SIZE(n800_devices));
+
+       i2c_register_board_info(1, n800_i2c_board_info,
+                       ARRAY_SIZE(n800_i2c_board_info));
+
        n800_flash_init();
        n800_mmc_init();
        n800_bt_init();
@@ -493,7 +559,6 @@ static void __init nokia_n800_init(void)
        tsc2301_dev_init();
        omap_register_gpio_switches(n800_gpio_switches,
                                    ARRAY_SIZE(n800_gpio_switches));
-       n800_pm_init();
 }
 
 static void __init nokia_n800_map_io(void)
index 0c401c4eb7f2c015d8e09aa8b62dff0c4a5bdf9b..69ed7ee40179e4bf83ef0649c7072af6d93fae22 100644 (file)
@@ -13,9 +13,6 @@ struct menelaus_platform_data {
        int (* late_init)(struct device *dev);
 };
 
-/* Call only at init time. */
-extern void menelaus_set_platform_data(struct menelaus_platform_data *pdata);
-
 extern int menelaus_register_mmc_callback(void (*callback)(void *data, u8 card_mask),
                                          void *data);
 extern void menelaus_unregister_mmc_callback(void);