| /* Copyright (c) 2011, Code Aurora Forum. All rights reserved. |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License version 2 and |
| * only version 2 as published by the Free Software Foundation. |
| * |
| * This program is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| * GNU General Public License for more details. |
| * |
| */ |
| |
| #include <linux/init.h> |
| #include <linux/ioport.h> |
| #include <linux/platform_device.h> |
| #include <linux/bootmem.h> |
| #include <asm/mach-types.h> |
| #include <asm/mach/mmc.h> |
| #include <mach/msm_bus_board.h> |
| #include <mach/board.h> |
| #include <mach/gpio.h> |
| #include <mach/gpiomux.h> |
| #include "devices.h" |
| #include "board-8064.h" |
| |
| |
| static struct pm8xxx_mpp_platform_data |
| apq8064_pm8921_mpp_pdata __devinitdata = { |
| .mpp_base = PM8921_MPP_PM_TO_SYS(1), |
| }; |
| |
| static struct pm8xxx_gpio_platform_data |
| apq8064_pm8921_gpio_pdata __devinitdata = { |
| .gpio_base = PM8921_GPIO_PM_TO_SYS(1), |
| }; |
| |
| static struct pm8xxx_irq_platform_data |
| apq8064_pm8921_irq_pdata __devinitdata = { |
| .irq_base = PM8921_IRQ_BASE, |
| .devirq = PM8921_USR_IRQ_N, |
| .irq_trigger_flag = IRQF_TRIGGER_HIGH, |
| .dev_id = 0, |
| }; |
| |
| static struct pm8921_platform_data |
| apq8064_pm8921_platform_data __devinitdata = { |
| .regulator_pdatas = msm8064_pm8921_regulator_pdata, |
| .irq_pdata = &apq8064_pm8921_irq_pdata, |
| .gpio_pdata = &apq8064_pm8921_gpio_pdata, |
| .mpp_pdata = &apq8064_pm8921_mpp_pdata, |
| }; |
| |
| static struct pm8xxx_irq_platform_data |
| apq8064_pm8821_irq_pdata __devinitdata = { |
| .irq_base = PM8821_IRQ_BASE, |
| .devirq = PM8821_USR_IRQ_N, |
| .irq_trigger_flag = IRQF_TRIGGER_HIGH, |
| .dev_id = 1, |
| }; |
| |
| static struct pm8xxx_mpp_platform_data |
| apq8064_pm8821_mpp_pdata __devinitdata = { |
| .mpp_base = PM8821_MPP_PM_TO_SYS(1), |
| }; |
| |
| static struct pm8821_platform_data |
| apq8064_pm8821_platform_data __devinitdata = { |
| .irq_pdata = &apq8064_pm8821_irq_pdata, |
| .mpp_pdata = &apq8064_pm8821_mpp_pdata, |
| }; |
| |
| static struct msm_ssbi_platform_data apq8064_ssbi_pm8921_pdata __devinitdata = { |
| .controller_type = MSM_SBI_CTRL_PMIC_ARBITER, |
| .slave = { |
| .name = "pm8921-core", |
| .platform_data = &apq8064_pm8921_platform_data, |
| }, |
| }; |
| |
| static struct msm_ssbi_platform_data apq8064_ssbi_pm8821_pdata __devinitdata = { |
| .controller_type = MSM_SBI_CTRL_PMIC_ARBITER, |
| .slave = { |
| .name = "pm8821-core", |
| .platform_data = &apq8064_pm8821_platform_data, |
| }, |
| }; |
| |
| void __init apq8064_init_pmic(void) |
| { |
| apq8064_device_ssbi_pmic1.dev.platform_data = |
| &apq8064_ssbi_pm8921_pdata; |
| apq8064_device_ssbi_pmic2.dev.platform_data = |
| &apq8064_ssbi_pm8821_pdata; |
| apq8064_pm8921_platform_data.num_regulators = |
| msm8064_pm8921_regulator_pdata_len; |
| |
| if (machine_is_apq8064_rumi3()) { |
| apq8064_pm8921_irq_pdata.devirq = 0; |
| apq8064_pm8821_irq_pdata.devirq = 0; |
| } |
| } |