diff options
Diffstat (limited to 'drivers/mfd/db8500-prcmu.c')
-rw-r--r-- | drivers/mfd/db8500-prcmu.c | 35 |
1 files changed, 23 insertions, 12 deletions
diff --git a/drivers/mfd/db8500-prcmu.c b/drivers/mfd/db8500-prcmu.c index 5be32489714..671c8bc14bb 100644 --- a/drivers/mfd/db8500-prcmu.c +++ b/drivers/mfd/db8500-prcmu.c | |||
@@ -2720,6 +2720,7 @@ static struct regulator_consumer_supply db8500_vape_consumers[] = { | |||
2720 | REGULATOR_SUPPLY("v-i2c", "nmk-i2c.1"), | 2720 | REGULATOR_SUPPLY("v-i2c", "nmk-i2c.1"), |
2721 | REGULATOR_SUPPLY("v-i2c", "nmk-i2c.2"), | 2721 | REGULATOR_SUPPLY("v-i2c", "nmk-i2c.2"), |
2722 | REGULATOR_SUPPLY("v-i2c", "nmk-i2c.3"), | 2722 | REGULATOR_SUPPLY("v-i2c", "nmk-i2c.3"), |
2723 | REGULATOR_SUPPLY("v-i2c", "nmk-i2c.4"), | ||
2723 | /* "v-mmc" changed to "vcore" in the mainline kernel */ | 2724 | /* "v-mmc" changed to "vcore" in the mainline kernel */ |
2724 | REGULATOR_SUPPLY("vcore", "sdi0"), | 2725 | REGULATOR_SUPPLY("vcore", "sdi0"), |
2725 | REGULATOR_SUPPLY("vcore", "sdi1"), | 2726 | REGULATOR_SUPPLY("vcore", "sdi1"), |
@@ -2958,9 +2959,10 @@ static struct mfd_cell db8500_prcmu_devs[] = { | |||
2958 | * prcmu_fw_init - arch init call for the Linux PRCMU fw init logic | 2959 | * prcmu_fw_init - arch init call for the Linux PRCMU fw init logic |
2959 | * | 2960 | * |
2960 | */ | 2961 | */ |
2961 | static int __init db8500_prcmu_probe(struct platform_device *pdev) | 2962 | static int __devinit db8500_prcmu_probe(struct platform_device *pdev) |
2962 | { | 2963 | { |
2963 | int err = 0; | 2964 | struct device_node *np = pdev->dev.of_node; |
2965 | int irq = 0, err = 0; | ||
2964 | 2966 | ||
2965 | if (ux500_is_svp()) | 2967 | if (ux500_is_svp()) |
2966 | return -ENODEV; | 2968 | return -ENODEV; |
@@ -2970,8 +2972,14 @@ static int __init db8500_prcmu_probe(struct platform_device *pdev) | |||
2970 | /* Clean up the mailbox interrupts after pre-kernel code. */ | 2972 | /* Clean up the mailbox interrupts after pre-kernel code. */ |
2971 | writel(ALL_MBOX_BITS, PRCM_ARM_IT1_CLR); | 2973 | writel(ALL_MBOX_BITS, PRCM_ARM_IT1_CLR); |
2972 | 2974 | ||
2973 | err = request_threaded_irq(IRQ_DB8500_PRCMU1, prcmu_irq_handler, | 2975 | if (np) |
2974 | prcmu_irq_thread_fn, IRQF_NO_SUSPEND, "prcmu", NULL); | 2976 | irq = platform_get_irq(pdev, 0); |
2977 | |||
2978 | if (!np || irq <= 0) | ||
2979 | irq = IRQ_DB8500_PRCMU1; | ||
2980 | |||
2981 | err = request_threaded_irq(irq, prcmu_irq_handler, | ||
2982 | prcmu_irq_thread_fn, IRQF_NO_SUSPEND, "prcmu", NULL); | ||
2975 | if (err < 0) { | 2983 | if (err < 0) { |
2976 | pr_err("prcmu: Failed to allocate IRQ_DB8500_PRCMU1.\n"); | 2984 | pr_err("prcmu: Failed to allocate IRQ_DB8500_PRCMU1.\n"); |
2977 | err = -EBUSY; | 2985 | err = -EBUSY; |
@@ -2981,14 +2989,16 @@ static int __init db8500_prcmu_probe(struct platform_device *pdev) | |||
2981 | if (cpu_is_u8500v20_or_later()) | 2989 | if (cpu_is_u8500v20_or_later()) |
2982 | prcmu_config_esram0_deep_sleep(ESRAM0_DEEP_SLEEP_STATE_RET); | 2990 | prcmu_config_esram0_deep_sleep(ESRAM0_DEEP_SLEEP_STATE_RET); |
2983 | 2991 | ||
2984 | err = mfd_add_devices(&pdev->dev, 0, db8500_prcmu_devs, | 2992 | if (!np) { |
2985 | ARRAY_SIZE(db8500_prcmu_devs), NULL, | 2993 | err = mfd_add_devices(&pdev->dev, 0, db8500_prcmu_devs, |
2986 | 0); | 2994 | ARRAY_SIZE(db8500_prcmu_devs), NULL, 0); |
2995 | if (err) { | ||
2996 | pr_err("prcmu: Failed to add subdevices\n"); | ||
2997 | return err; | ||
2998 | } | ||
2999 | } | ||
2987 | 3000 | ||
2988 | if (err) | 3001 | pr_info("DB8500 PRCMU initialized\n"); |
2989 | pr_err("prcmu: Failed to add subdevices\n"); | ||
2990 | else | ||
2991 | pr_info("DB8500 PRCMU initialized\n"); | ||
2992 | 3002 | ||
2993 | no_irq_return: | 3003 | no_irq_return: |
2994 | return err; | 3004 | return err; |
@@ -2999,11 +3009,12 @@ static struct platform_driver db8500_prcmu_driver = { | |||
2999 | .name = "db8500-prcmu", | 3009 | .name = "db8500-prcmu", |
3000 | .owner = THIS_MODULE, | 3010 | .owner = THIS_MODULE, |
3001 | }, | 3011 | }, |
3012 | .probe = db8500_prcmu_probe, | ||
3002 | }; | 3013 | }; |
3003 | 3014 | ||
3004 | static int __init db8500_prcmu_init(void) | 3015 | static int __init db8500_prcmu_init(void) |
3005 | { | 3016 | { |
3006 | return platform_driver_probe(&db8500_prcmu_driver, db8500_prcmu_probe); | 3017 | return platform_driver_register(&db8500_prcmu_driver); |
3007 | } | 3018 | } |
3008 | 3019 | ||
3009 | arch_initcall(db8500_prcmu_init); | 3020 | arch_initcall(db8500_prcmu_init); |