Merge branch 'drm-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied...
[pandora-kernel.git] / arch / arm / mach-mmp / jasper.c
index cfd4d66..d77dd41 100644 (file)
 #include <linux/platform_device.h>
 #include <linux/io.h>
 #include <linux/gpio.h>
+#include <linux/regulator/machine.h>
+#include <linux/regulator/max8649.h>
+#include <linux/mfd/max8925.h>
 
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
 #include <mach/addr-map.h>
 #include <mach/mfp-mmp2.h>
 #include <mach/mmp2.h>
+#include <mach/irqs.h>
 
 #include "common.h"
 
@@ -58,6 +62,63 @@ static unsigned long jasper_pin_config[] __initdata = {
        GPIO149_ND_CLE,
        GPIO112_ND_RDY0,
        GPIO160_ND_RDY1,
+
+       /* PMIC */
+       PMIC_PMIC_INT | MFP_LPM_EDGE_FALL,
+};
+
+static struct regulator_consumer_supply max8649_supply[] = {
+       REGULATOR_SUPPLY("vcc_core", NULL),
+};
+
+static struct regulator_init_data max8649_init_data = {
+       .constraints    = {
+               .name           = "vcc_core range",
+               .min_uV         = 1150000,
+               .max_uV         = 1280000,
+               .always_on      = 1,
+               .boot_on        = 1,
+               .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE,
+       },
+       .num_consumer_supplies  = 1,
+       .consumer_supplies      = &max8649_supply[0],
+};
+
+static struct max8649_platform_data jasper_max8649_info = {
+       .mode           = 2,    /* VID1 = 1, VID0 = 0 */
+       .extclk         = 0,
+       .ramp_timing    = MAX8649_RAMP_32MV,
+       .regulator      = &max8649_init_data,
+};
+
+static struct max8925_backlight_pdata jasper_backlight_data = {
+       .dual_string    = 0,
+};
+
+static struct max8925_power_pdata jasper_power_data = {
+       .batt_detect            = 0,    /* can't detect battery by ID pin */
+       .topoff_threshold       = MAX8925_TOPOFF_THR_10PER,
+       .fast_charge            = MAX8925_FCHG_1000MA,
+};
+
+static struct max8925_platform_data jasper_max8925_info = {
+       .backlight              = &jasper_backlight_data,
+       .power                  = &jasper_power_data,
+       .irq_base               = IRQ_BOARD_START,
+};
+
+static struct i2c_board_info jasper_twsi1_info[] = {
+       [0] = {
+               .type           = "max8649",
+               .addr           = 0x60,
+               .platform_data  = &jasper_max8649_info,
+       },
+       [1] = {
+               .type           = "max8925",
+               .addr           = 0x3c,
+               .irq            = IRQ_MMP2_PMIC,
+               .platform_data  = &jasper_max8925_info,
+       },
 };
 
 static void __init jasper_init(void)
@@ -67,6 +128,9 @@ static void __init jasper_init(void)
        /* on-chip devices */
        mmp2_add_uart(1);
        mmp2_add_uart(3);
+       mmp2_add_twsi(1, NULL, ARRAY_AND_SIZE(jasper_twsi1_info));
+
+       regulator_has_full_constraints();
 }
 
 MACHINE_START(MARVELL_JASPER, "Jasper Development Platform")