|
@@ -456,3 +456,112 @@ static struct regulator_init_data wm8350_ldo4_data = {
|
|
.always_on = 1,
|
|
.always_on = 1,
|
|
},
|
|
},
|
|
};
|
|
};
|
|
|
|
+
|
|
|
|
+static struct {
|
|
|
|
+ int regulator;
|
|
|
|
+ struct regulator_init_data *initdata;
|
|
|
|
+} wm1190_regulators[] = {
|
|
|
|
+ { WM8350_DCDC_1, &wm8350_dcdc1_data },
|
|
|
|
+ { WM8350_DCDC_3, &wm8350_dcdc3_data },
|
|
|
|
+ { WM8350_DCDC_4, &wm8350_dcdc4_data },
|
|
|
|
+ { WM8350_DCDC_6, &smdk6410_vddarm },
|
|
|
|
+ { WM8350_LDO_1, &smdk6410_vddalive },
|
|
|
|
+ { WM8350_LDO_2, &smdk6410_vddotg },
|
|
|
|
+ { WM8350_LDO_3, &smdk6410_vddlcd },
|
|
|
|
+ { WM8350_LDO_4, &wm8350_ldo4_data },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static int __init smdk6410_wm8350_init(struct wm8350 *wm8350)
|
|
|
|
+{
|
|
|
|
+ int i;
|
|
|
|
+
|
|
|
|
+ /* Configure the IRQ line */
|
|
|
|
+ s3c_gpio_setpull(S3C64XX_GPN(12), S3C_GPIO_PULL_UP);
|
|
|
|
+
|
|
|
|
+ /* Instantiate the regulators */
|
|
|
|
+ for (i = 0; i < ARRAY_SIZE(wm1190_regulators); i++)
|
|
|
|
+ wm8350_register_regulator(wm8350,
|
|
|
|
+ wm1190_regulators[i].regulator,
|
|
|
|
+ wm1190_regulators[i].initdata);
|
|
|
|
+
|
|
|
|
+ return 0;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static struct wm8350_platform_data __initdata smdk6410_wm8350_pdata = {
|
|
|
|
+ .init = smdk6410_wm8350_init,
|
|
|
|
+ .irq_high = 1,
|
|
|
|
+ .irq_base = IRQ_BOARD_START,
|
|
|
|
+};
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
+#ifdef CONFIG_SMDK6410_WM1192_EV1
|
|
|
|
+static struct gpio_led wm1192_pmic_leds[] = {
|
|
|
|
+ {
|
|
|
|
+ .name = "PMIC:red:power",
|
|
|
|
+ .gpio = GPIO_BOARD_START + 3,
|
|
|
|
+ .default_state = LEDS_GPIO_DEFSTATE_ON,
|
|
|
|
+ },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct gpio_led_platform_data wm1192_pmic_led = {
|
|
|
|
+ .num_leds = ARRAY_SIZE(wm1192_pmic_leds),
|
|
|
|
+ .leds = wm1192_pmic_leds,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct platform_device wm1192_pmic_led_dev = {
|
|
|
|
+ .name = "leds-gpio",
|
|
|
|
+ .id = -1,
|
|
|
|
+ .dev = {
|
|
|
|
+ .platform_data = &wm1192_pmic_led,
|
|
|
|
+ },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static int wm1192_pre_init(struct wm831x *wm831x)
|
|
|
|
+{
|
|
|
|
+ int ret;
|
|
|
|
+
|
|
|
|
+ /* Configure the IRQ line */
|
|
|
|
+ s3c_gpio_setpull(S3C64XX_GPN(12), S3C_GPIO_PULL_UP);
|
|
|
|
+
|
|
|
|
+ ret = platform_device_register(&wm1192_pmic_led_dev);
|
|
|
|
+ if (ret != 0)
|
|
|
|
+ dev_err(wm831x->dev, "Failed to add PMIC LED: %d\n", ret);
|
|
|
|
+
|
|
|
|
+ return 0;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static struct wm831x_backlight_pdata wm1192_backlight_pdata = {
|
|
|
|
+ .isink = 1,
|
|
|
|
+ .max_uA = 27554,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct regulator_init_data wm1192_dcdc3 = {
|
|
|
|
+ .constraints = {
|
|
|
|
+ .name = "PVDD_MEM+PVDD_GPS",
|
|
|
|
+ .always_on = 1,
|
|
|
|
+ },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct regulator_consumer_supply wm1192_ldo1_consumers[] = {
|
|
|
|
+ REGULATOR_SUPPLY("DVDD", "0-001b"), /* WM8580 */
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct regulator_init_data wm1192_ldo1 = {
|
|
|
|
+ .constraints = {
|
|
|
|
+ .name = "PVDD_LCD+PVDD_EXT",
|
|
|
|
+ .always_on = 1,
|
|
|
|
+ },
|
|
|
|
+ .consumer_supplies = wm1192_ldo1_consumers,
|
|
|
|
+ .num_consumer_supplies = ARRAY_SIZE(wm1192_ldo1_consumers),
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct wm831x_status_pdata wm1192_led7_pdata = {
|
|
|
|
+ .name = "LED7:green:",
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct wm831x_status_pdata wm1192_led8_pdata = {
|
|
|
|
+ .name = "LED8:green:",
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct wm831x_pdata smdk6410_wm1192_pdata = {
|
|
|
|
+ .pre_init = wm1192_pre_init,
|